diff options
| author | Ivan Kohler <ivan@freeside.biz> | 2012-04-24 11:35:56 -0700 |
|---|---|---|
| committer | Ivan Kohler <ivan@freeside.biz> | 2012-04-24 11:35:56 -0700 |
| commit | 6587f6ba7d047ddc1686c080090afe7d53365bd4 (patch) | |
| tree | ec77342668e8865aca669c9b4736e84e3077b523 /rt/share/html/Admin/Elements | |
| parent | 47153aae5c2fc00316654e7277fccd45f72ff611 (diff) | |
first pass RT4 merge, RT#13852
Diffstat (limited to 'rt/share/html/Admin/Elements')
| -rw-r--r-- | rt/share/html/Admin/Elements/EditQueueWatcherGroup | 56 | ||||
| -rw-r--r-- | rt/share/html/Admin/Elements/EditRights | 175 | ||||
| -rw-r--r-- | rt/share/html/Admin/Elements/EditRightsCategoryTabs | 129 | ||||
| -rw-r--r-- | rt/share/html/Admin/Elements/Portal | 52 | ||||
| -rw-r--r-- | rt/share/html/Admin/Elements/SelectCustomFieldRenderType | 70 |
5 files changed, 482 insertions, 0 deletions
diff --git a/rt/share/html/Admin/Elements/EditQueueWatcherGroup b/rt/share/html/Admin/Elements/EditQueueWatcherGroup new file mode 100644 index 000000000..8bc1de29a --- /dev/null +++ b/rt/share/html/Admin/Elements/EditQueueWatcherGroup @@ -0,0 +1,56 @@ +%# BEGIN BPS TAGGED BLOCK {{{ +%# +%# COPYRIGHT: +%# +%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC +%# <sales@bestpractical.com> +%# +%# (Except where explicitly superseded by other copyright notices) +%# +%# +%# LICENSE: +%# +%# This work is made available to you under the terms of Version 2 of +%# the GNU General Public License. A copy of that license should have +%# been provided with this software, but in any event can be snarfed +%# from www.gnu.org. +%# +%# This work is distributed in the hope that it will be useful, but +%# WITHOUT ANY WARRANTY; without even the implied warranty of +%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +%# General Public License for more details. +%# +%# You should have received a copy of the GNU General Public License +%# along with this program; if not, write to the Free Software +%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +%# 02110-1301 or visit their web page on the internet at +%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. +%# +%# +%# CONTRIBUTION SUBMISSION POLICY: +%# +%# (The following paragraph is not intended to limit the rights granted +%# to you to modify and distribute this software under the terms of +%# the GNU General Public License and is only of importance to you if +%# you choose to contribute your changes and enhancements to the +%# community by submitting them to Best Practical Solutions, LLC.) +%# +%# By intentionally submitting any modifications, corrections or +%# derivatives to this work, or any other work intended for use with +%# Request Tracker, to Best Practical Solutions, LLC, you confirm that +%# you are the copyright holder for those contributions and you grant +%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, +%# royalty-free, perpetual, license to use, copy, create derivative +%# works based on those contributions, and sublicense and distribute +%# those contributions and any derivatives thereof. +%# +%# END BPS TAGGED BLOCK }}} +<%ARGS> +$Label +$QueueObj +$Watchers +</%ARGS> +<span><% $Label %>:</span> + +<& /Admin/Elements/EditQueueWatchers, QueueObj => $QueueObj, Watchers => $Watchers &> + diff --git a/rt/share/html/Admin/Elements/EditRights b/rt/share/html/Admin/Elements/EditRights new file mode 100644 index 000000000..e5b9908b5 --- /dev/null +++ b/rt/share/html/Admin/Elements/EditRights @@ -0,0 +1,175 @@ +%# BEGIN BPS TAGGED BLOCK {{{ +%# +%# COPYRIGHT: +%# +%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC +%# <sales@bestpractical.com> +%# +%# (Except where explicitly superseded by other copyright notices) +%# +%# +%# LICENSE: +%# +%# This work is made available to you under the terms of Version 2 of +%# the GNU General Public License. A copy of that license should have +%# been provided with this software, but in any event can be snarfed +%# from www.gnu.org. +%# +%# This work is distributed in the hope that it will be useful, but +%# WITHOUT ANY WARRANTY; without even the implied warranty of +%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +%# General Public License for more details. +%# +%# You should have received a copy of the GNU General Public License +%# along with this program; if not, write to the Free Software +%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +%# 02110-1301 or visit their web page on the internet at +%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. +%# +%# +%# CONTRIBUTION SUBMISSION POLICY: +%# +%# (The following paragraph is not intended to limit the rights granted +%# to you to modify and distribute this software under the terms of +%# the GNU General Public License and is only of importance to you if +%# you choose to contribute your changes and enhancements to the +%# community by submitting them to Best Practical Solutions, LLC.) +%# +%# By intentionally submitting any modifications, corrections or +%# derivatives to this work, or any other work intended for use with +%# Request Tracker, to Best Practical Solutions, LLC, you confirm that +%# you are the copyright holder for those contributions and you grant +%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, +%# royalty-free, perpetual, license to use, copy, create derivative +%# works based on those contributions, and sublicense and distribute +%# those contributions and any derivatives thereof. +%# +%# END BPS TAGGED BLOCK }}} +<%args> +$Context +$Principals +$AddPrincipal => undef +</%args> +<%init> +use Scalar::Util qw(blessed); + +# Let callbacks get at principals and context before we do anything with them +$m->callback( Principals => $Principals, Context => $Context ); + +# Try to detect if we want to include an add user/group box +unless ( $AddPrincipal ) { + my $last = $Principals->[-1]; + if ( $last->[0] =~ /Groups/i ) { + $AddPrincipal = 'group'; # loc + } + elsif ( $last->[0] =~ /Users/i ) { + $AddPrincipal = 'user'; # loc + } +} +</%init> +%# Principals is an array of arrays, where the inner arrays are like: +%# [ 'Category name' => $CollectionObj => 'DisplayColumn' => 1 ] +%# The last value is a boolen determining if the value of DisplayColumn +%# should be loc()-ed before display. + +<script type="text/javascript"> + jQuery(function() { + jQuery(".rights-editor").tabs({ + select: function(ev, ui) { + window.location.hash = ui.tab.hash; + } + }); + jQuery(".rights-editor .category-tabs").tabs(); + }); +</script> + +<div class="rights-editor clearfix"> + <ul> +<%perl> +for my $category (@$Principals) { + my ($name, $collection, $col, $loc) = @$category; +</%perl> +<li class="category"><% loc($name) %></li> +<%perl> + while ( my $obj = $collection->Next ) { + my $display = ref $col eq 'CODE' ? $col->($obj) : $obj->$col; + my $id = "acl-$name-" . $obj->PrincipalId; + $id =~ s/[^a-zA-Z0-9\-]/_/g; +</%perl> +<li><a href="#<% $id %>"><% $loc ? loc($display) : $display %></a></li> +<%perl> + } +} +</%perl> +% if ( $AddPrincipal ) { + <li class="category"><&|/l, loc($AddPrincipal) &>Add [_1]</&></li> + <li class="addprincipal"> + <a href="#acl-AddPrincipal"> + <input type="text" value="" + name="AddPrincipalForRights-<% lc $AddPrincipal %>" + id="AddPrincipalForRights-<% lc $AddPrincipal %>" /> + <script type="text/javascript"> + jQuery(function() { + jQuery("#AddPrincipalForRights-<% lc $AddPrincipal %>").keyup(function(){ + toggle_addprincipal_validity(this, true); + }); + +% if (lc $AddPrincipal eq 'group') { + jQuery("#AddPrincipalForRights-<% lc $AddPrincipal %>").autocomplete({ + source: "<% RT->Config->Get('WebPath')%>/Helpers/Autocomplete/Groups", + select: addprincipal_onselect, + change: addprincipal_onchange + }); +% } + }); + </script> +% my $type = lc $AddPrincipal eq 'user' ? loc('username') : loc($AddPrincipal); + <span class="warning"><&|/l, $type &>Invalid [_1]</&></span> + </a> + </li> +% } + </ul> + +<%perl> +# Now generate our rights panels for each principal +for my $category (@$Principals) { + my ($name, $collection, $col, $loc) = @$category; + while ( my $obj = $collection->Next ) { + my $display = ref $col eq 'CODE' ? $col->($obj) : $obj->$col; + my $id = "acl-$name-" . $obj->PrincipalId; + $id =~ s/[^a-zA-Z0-9\-]/_/g; +</%perl> + + <div id="<% $id %>"> + <h3> + <% $loc ? loc($display) : $display %> +<%perl> +if ($obj->isa('RT::Group') and $obj->Domain eq 'UserDefined') { + my $subgroups = $obj->GroupMembersObj( Recursively => 1 ); + $subgroups->LimitToUserDefinedGroups; + $subgroups->Limit( FIELD => 'Name', OPERATOR => '!=', VALUE => $obj->Name ); + + if ( $subgroups->Count ) { + my $inc = join ", ", map $_->Name, @{$subgroups->ItemsArrayRef}; +</%perl> + <span class="subgroups"><&|/l, $inc &>includes [_1]</&></span>\ +<%perl> + } +} +</%perl> + </h3> + <& EditRightsCategoryTabs, Context => $Context, Principal => $obj, id => $id &> + </div> +<%perl> + } +} + +if ( $AddPrincipal ) { +</%perl> + <div id="acl-AddPrincipal"> + <h3><&|/l, loc($AddPrincipal) &>Add rights for this [_1]</&></h3> + <& EditRightsCategoryTabs, Context => $Context, id => 'acl-AddPrincipal' &> + </div> +% } + +</div> diff --git a/rt/share/html/Admin/Elements/EditRightsCategoryTabs b/rt/share/html/Admin/Elements/EditRightsCategoryTabs new file mode 100644 index 000000000..786cafdd8 --- /dev/null +++ b/rt/share/html/Admin/Elements/EditRightsCategoryTabs @@ -0,0 +1,129 @@ +%# BEGIN BPS TAGGED BLOCK {{{ +%# +%# COPYRIGHT: +%# +%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC +%# <sales@bestpractical.com> +%# +%# (Except where explicitly superseded by other copyright notices) +%# +%# +%# LICENSE: +%# +%# This work is made available to you under the terms of Version 2 of +%# the GNU General Public License. A copy of that license should have +%# been provided with this software, but in any event can be snarfed +%# from www.gnu.org. +%# +%# This work is distributed in the hope that it will be useful, but +%# WITHOUT ANY WARRANTY; without even the implied warranty of +%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +%# General Public License for more details. +%# +%# You should have received a copy of the GNU General Public License +%# along with this program; if not, write to the Free Software +%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +%# 02110-1301 or visit their web page on the internet at +%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. +%# +%# +%# CONTRIBUTION SUBMISSION POLICY: +%# +%# (The following paragraph is not intended to limit the rights granted +%# to you to modify and distribute this software under the terms of +%# the GNU General Public License and is only of importance to you if +%# you choose to contribute your changes and enhancements to the +%# community by submitting them to Best Practical Solutions, LLC.) +%# +%# By intentionally submitting any modifications, corrections or +%# derivatives to this work, or any other work intended for use with +%# Request Tracker, to Best Practical Solutions, LLC, you confirm that +%# you are the copyright holder for those contributions and you grant +%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, +%# royalty-free, perpetual, license to use, copy, create derivative +%# works based on those contributions, and sublicense and distribute +%# those contributions and any derivatives thereof. +%# +%# END BPS TAGGED BLOCK }}} +<%args> +$Context +$Principal => undef +$id +$acldesc => '' +</%args> +<%init> +# XXX OPTIMIZATION: Moving the calls to AvailableRights and RightCategories up +# one component to avoid calling them for every principal would be a win, but +# it's cleaner to do it here. The values can really be computed once per +# $Context. + +# Find all our available rights... +my (%available_rights, %categories); +if ( blessed($Context) and $Context->can('AvailableRights') ) { + %available_rights = %{$Context->AvailableRights}; +} else { + %available_rights = ( loc('System Error') => loc("No rights found") ); +} + +# ...and their categories +if ( blessed($Context) and $Context->can('RightCategories') ) { + my %right_categories = %{$Context->RightCategories}; + + for my $right (keys %available_rights) { + push @{$categories{$right_categories{$right}}}, $right; + } +} + +# Find all the current rights for this principal +my %current_rights; +if ($Principal) { + my $acls = RT::ACL->new($session{'CurrentUser'}); + $acls->LimitToObject( $Context ); + $acls->LimitToPrincipal( Id => $Principal->PrincipalId ); + + while ( my $ace = $acls->Next ) { + my $right = $ace->RightName; + $current_rights{$right} = 1; + } +} + +my %category_desc = ( + 'General' => loc('General rights'), + 'Staff' => loc('Rights for Staff'), + 'Admin' => loc('Rights for Administrators'), + 'Status' => loc('Status changes'), +); + +my %catsort = ( General => 1, Staff => 2, Admin => 3, Status => 4 ); + +$acldesc ||= join '-', ($Principal ? $Principal->PrincipalId : 'addprincipal'), + ref($Context), $Context->Id; +</%init> + <div class="category-tabs"> + <ul> +% for my $category (sort { $catsort{$a} <=> $catsort{$b} } keys %categories) { + <li><a href="#<% "$id-$category" %>"><% $category_desc{$category} || loc('Miscellaneous') %></a></li> +% } + </ul> +% for my $category (sort { $catsort{$a} <=> $catsort{$b} } keys %categories) { + <div id="<% "$id-$category" %>"> + <ul class="rights-list"> +% for my $right (sort { $available_rights{$a} cmp $available_rights{$b} } @{$categories{$category}}) { + <li> + <input type="checkbox" class="checkbox" + name="SetRights-<% $acldesc %>" + id="SetRights-<% $acldesc %>-<% $right %>" + value="<% $right %>" + <% $current_rights{$right} ? 'checked' : '' %> /> + <label for="SetRights-<% $acldesc %>-<% $right %>" title="<% loc($right) %>"> + <% loc($available_rights{$right}) %> + <span class="separator">—</span> + <span class="rightname"><% loc($right) %></span> + </label> + </li> +% } + </ul> + </div> +% } + </div> + <input type="hidden" name="CheckACL" value="<% $acldesc %>" /> diff --git a/rt/share/html/Admin/Elements/Portal b/rt/share/html/Admin/Elements/Portal new file mode 100644 index 000000000..d5e75c598 --- /dev/null +++ b/rt/share/html/Admin/Elements/Portal @@ -0,0 +1,52 @@ +%# BEGIN BPS TAGGED BLOCK {{{ +%# +%# COPYRIGHT: +%# +%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC +%# <sales@bestpractical.com> +%# +%# (Except where explicitly superseded by other copyright notices) +%# +%# +%# LICENSE: +%# +%# This work is made available to you under the terms of Version 2 of +%# the GNU General Public License. A copy of that license should have +%# been provided with this software, but in any event can be snarfed +%# from www.gnu.org. +%# +%# This work is distributed in the hope that it will be useful, but +%# WITHOUT ANY WARRANTY; without even the implied warranty of +%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +%# General Public License for more details. +%# +%# You should have received a copy of the GNU General Public License +%# along with this program; if not, write to the Free Software +%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +%# 02110-1301 or visit their web page on the internet at +%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. +%# +%# +%# CONTRIBUTION SUBMISSION POLICY: +%# +%# (The following paragraph is not intended to limit the rights granted +%# to you to modify and distribute this software under the terms of +%# the GNU General Public License and is only of importance to you if +%# you choose to contribute your changes and enhancements to the +%# community by submitting them to Best Practical Solutions, LLC.) +%# +%# By intentionally submitting any modifications, corrections or +%# derivatives to this work, or any other work intended for use with +%# Request Tracker, to Best Practical Solutions, LLC, you confirm that +%# you are the copyright holder for those contributions and you grant +%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, +%# royalty-free, perpetual, license to use, copy, create derivative +%# works based on those contributions, and sublicense and distribute +%# those contributions and any derivatives thereof. +%# +%# END BPS TAGGED BLOCK }}} +<div id="rt-portal"> +<&| /Widgets/TitleBox, title => 'RT Portal' &> +<iframe src="http://bestpractical.com/rt/integration/news?utm_source=rt&utm_medium=iframe&utm_campaign=<%$RT::VERSION%>"></iframe> +</&> +</div> diff --git a/rt/share/html/Admin/Elements/SelectCustomFieldRenderType b/rt/share/html/Admin/Elements/SelectCustomFieldRenderType new file mode 100644 index 000000000..5034c4dfb --- /dev/null +++ b/rt/share/html/Admin/Elements/SelectCustomFieldRenderType @@ -0,0 +1,70 @@ +%# BEGIN BPS TAGGED BLOCK {{{ +%# +%# COPYRIGHT: +%# +%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC +%# <sales@bestpractical.com> +%# +%# (Except where explicitly superseded by other copyright notices) +%# +%# +%# LICENSE: +%# +%# This work is made available to you under the terms of Version 2 of +%# the GNU General Public License. A copy of that license should have +%# been provided with this software, but in any event can be snarfed +%# from www.gnu.org. +%# +%# This work is distributed in the hope that it will be useful, but +%# WITHOUT ANY WARRANTY; without even the implied warranty of +%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +%# General Public License for more details. +%# +%# You should have received a copy of the GNU General Public License +%# along with this program; if not, write to the Free Software +%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +%# 02110-1301 or visit their web page on the internet at +%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. +%# +%# +%# CONTRIBUTION SUBMISSION POLICY: +%# +%# (The following paragraph is not intended to limit the rights granted +%# to you to modify and distribute this software under the terms of +%# the GNU General Public License and is only of importance to you if +%# you choose to contribute your changes and enhancements to the +%# community by submitting them to Best Practical Solutions, LLC.) +%# +%# By intentionally submitting any modifications, corrections or +%# derivatives to this work, or any other work intended for use with +%# Request Tracker, to Best Practical Solutions, LLC, you confirm that +%# you are the copyright holder for those contributions and you grant +%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, +%# royalty-free, perpetual, license to use, copy, create derivative +%# works based on those contributions, and sublicense and distribute +%# those contributions and any derivatives thereof. +%# +%# END BPS TAGGED BLOCK }}} +<select name="<%$Name%>"> +%for my $option (@types) { +<option value="<%$option%>"<%$option eq $Default && qq[ selected="selected"] |n%>><% $option %></option> +%} +</select> +<%INIT> +my $cf = RT::CustomField->new($session{'CurrentUser'}); +$Default ||= $cf->DefaultRenderType($TypeComposite); + +my @types = $cf->RenderTypes($TypeComposite); + +# XXX: We currently don't support cascaded select CFs when +# rendering as a list, so don't offer it for now. +if ( $BasedOn ) { + @types = grep { not /List/ } @types; +} +</%INIT> +<%ARGS> +$Default => undef +$TypeComposite => 'Select-0' +$Name => 'RenderType' +$BasedOn => 0 +</%ARGS> |
