diff options
Diffstat (limited to 'rt/share/html/Admin/CustomFields')
-rw-r--r-- | rt/share/html/Admin/CustomFields/GroupRights.html | 58 | ||||
-rw-r--r-- | rt/share/html/Admin/CustomFields/Modify.html | 115 | ||||
-rw-r--r-- | rt/share/html/Admin/CustomFields/Objects.html | 13 | ||||
-rw-r--r-- | rt/share/html/Admin/CustomFields/UserRights.html | 54 | ||||
-rw-r--r-- | rt/share/html/Admin/CustomFields/index.html | 11 |
5 files changed, 121 insertions, 130 deletions
diff --git a/rt/share/html/Admin/CustomFields/GroupRights.html b/rt/share/html/Admin/CustomFields/GroupRights.html index 2c516d0b2..31c09afc0 100644 --- a/rt/share/html/Admin/CustomFields/GroupRights.html +++ b/rt/share/html/Admin/CustomFields/GroupRights.html @@ -2,7 +2,7 @@ %# %# COPYRIGHT: %# -%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC +%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC %# <sales@bestpractical.com> %# %# (Except where explicitly superseded by other copyright notices) @@ -46,54 +46,16 @@ %# %# END BPS TAGGED BLOCK }}} <& /Admin/Elements/Header, Title => $title &> -<& /Admin/Elements/CustomFieldTabs, - id => $id, - current_tab => "Admin/CustomFields/GroupRights.html?id=".$id, - Title => $title -&> +<& /Elements/Tabs &> <& /Elements/ListActions, actions => \@results &> - <form method="post" action="GroupRights.html"> + <form method="post" action="GroupRights.html" id="ModifyGroupRights" name="ModifyGroupRights"> <input type="hidden" class="hidden" name="id" value="<% $CustomFieldObj->id %>" /> - - -<h1><&|/l&>System groups</&></h1> -<table> -% my $Groups = RT::Groups->new($session{'CurrentUser'}); -% $Groups->LimitToSystemInternalGroups(); -% while (my $Group = $Groups->Next()) { - <tr align="right"> - <td valign="top"> - <% loc($Group->Type) %> - </td> - <td> - <& /Admin/Elements/SelectRights, PrincipalId => $Group->PrincipalId, - Object => $CustomFieldObj &> - </td> - </tr> -% } -</table> -<h1><&|/l&>User defined groups</&></h1> -<table> -% $Groups = RT::Groups->new($session{'CurrentUser'}); -% $Groups->LimitToUserDefinedGroups(); -% while (my $Group = $Groups->Next()) { - <tr align="right"> - <td valign="top"> - <% $Group->Name %> - </td> - <td> - <& /Admin/Elements/SelectRights, PrincipalId => $Group->PrincipalId, - Object => $CustomFieldObj &> - </td> - </tr> -% } -</table> - - <& /Elements/Submit, Caption => loc("Be sure to save your changes"), Reset => 1 &> - + + <& /Admin/Elements/EditRights, Context => $CustomFieldObj, Principals => \@principals &> + <& /Elements/Submit, Label => loc('Save Changes') &> </form> - + <%INIT> if (!defined $id) { @@ -103,10 +65,12 @@ if (!defined $id) { my $CustomFieldObj = RT::CustomField->new($session{'CurrentUser'}); $CustomFieldObj->Load($id) || $m->comp("/Elements/Error", Why => loc("Couldn't load CustomField [_1]",$id)); -my @results = ProcessACLChanges( \%ARGS ); +my @results = ProcessACLs( \%ARGS ); my $title = loc('Modify group rights for custom field [_1]', $CustomFieldObj->Name); - + +# Principal collections +my @principals = GetPrincipalsMap($CustomFieldObj, qw(System Groups)); </%INIT> <%ARGS> diff --git a/rt/share/html/Admin/CustomFields/Modify.html b/rt/share/html/Admin/CustomFields/Modify.html index 249fdb1b4..20c3e9c4e 100644 --- a/rt/share/html/Admin/CustomFields/Modify.html +++ b/rt/share/html/Admin/CustomFields/Modify.html @@ -2,7 +2,7 @@ %# %# COPYRIGHT: %# -%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC +%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC %# <sales@bestpractical.com> %# %# (Except where explicitly superseded by other copyright notices) @@ -46,23 +46,20 @@ %# %# END BPS TAGGED BLOCK }}} <& /Admin/Elements/Header, Title => $title &> -<& /Admin/Elements/CustomFieldTabs, - id => $CustomFieldObj->Id , - current_tab => $current_tab, - Title => $title &> +<& /Elements/Tabs &> <& /Elements/ListActions, actions => \@results &> -<form method="post" action="Modify.html" name="ModifyCustomField"> +<form method="post" action="Modify.html" name="ModifyCustomField" id="ModifyCustomField"> <input type="hidden" class="hidden" name="id" value="<% $id %>" /> <table> <tr><td class="label"><&|/l&>Name</&></td> -<td><input name="Name" value="<% $CustomFieldObj->Name || '' %>" size="20" /></td></tr> +<td><input name="Name" value="<% $CustomFieldObj->Name || $Name || '' %>" size="20" /></td></tr> <tr><td class="label"><&|/l&>Description</&></td> -<td><input name="Description" value="<% $CustomFieldObj->Description || '' %>" size="80" /></td></tr> +<td><input name="Description" value="<% $CustomFieldObj->Description || $Description || '' %>" size="80" /></td></tr> <tr><td class="label"><&|/l&>Type</&></td> <td><& /Admin/Elements/SelectCustomFieldType, @@ -70,6 +67,19 @@ Default => $CustomFieldObj->TypeComposite, &> </td></tr> +% if ( $CustomFieldObj->Id and $CustomFieldObj->HasRenderTypes ) { +<tr> + <td class="label"><&|/l&>Render Type</&></td> + <td> + <& /Admin/Elements/SelectCustomFieldRenderType, + Name => "RenderType", + TypeComposite => $CustomFieldObj->TypeComposite, + Default => $CustomFieldObj->RenderType, + BasedOn => $CustomFieldObj->BasedOnObj->id, &> + </td> +</tr> +% } + % if ( $CustomFieldObj->Id and $CustomFieldObj->IsSelectionType and RT->Config->Get('CustomFieldValuesSources') and ( scalar(@{RT->Config->Get('CustomFieldValuesSources')}) > 0 ) ) { <tr><td class="label"><&|/l&>Field values source:</&></td><td> <& /Admin/Elements/EditCustomFieldValuesSource, CustomField => $CustomFieldObj &> @@ -79,7 +89,7 @@ <tr><td class="label"><&|/l&>Applies to</&></td> <td><& /Admin/Elements/SelectCustomFieldLookupType, Name => "LookupType", - Default => $CustomFieldObj->LookupType, &> + Default => $CustomFieldObj->LookupType || $LookupType, &> </td></tr> % if ( $CustomFieldObj->Id @@ -90,42 +100,44 @@ </td></tr> % } -<tr><td class="label"><&|/l&>Validation</&></td> +<tr class="edit_validation"><td class="label"><&|/l&>Validation</&></td> <td><& /Widgets/ComboBox, Name => 'Pattern', - Default => $CustomFieldObj->Pattern, + Default => $CustomFieldObj->Pattern || $Pattern, Size => 20, Values => \@CFvalidations, &></td></tr> <tr><td class="label"><&|/l&>Link values to</&></td><td> -<input size="60" name="LinkValueTo" value="<% $CustomFieldObj->LinkValueTo || '' %>" /> +<input size="60" name="LinkValueTo" value="<% $CustomFieldObj->LinkValueTo || $LinkValueTo || '' %>" /> <div class="hints"> <&|/l&>RT can make this custom field's values into hyperlinks to another service.</&> <&|/l&>Fill in this field with a URL.</&> -<&|/l&>RT will replace <tt>__id__</tt> and <tt>__CustomField__</tt> with the record id and custom field value, respectively</&> +<&|/l, '<tt>__id__</tt>', '<tt>__CustomField__</tt>' &>RT will replace [_1] and [_2] with the record's id and the custom field's value, respectively.</&> </div></td></tr> <tr><td class="label"><&|/l&>Include page</&></td><td> -<input size="60" name="IncludeContentForValue" value="<% $CustomFieldObj->IncludeContentForValue || '' %>" /> +<input size="60" name="IncludeContentForValue" value="<% $CustomFieldObj->IncludeContentForValue || $IncludeContentForValue || '' %>" /> <div class="hints"> <&|/l&>RT can include content from another web service when showing this custom field.</&> <&|/l&>Fill in this field with a URL.</&> -<&|/l&>RT will replace <tt>__id__</tt> and <tt>__CustomField__</tt> with the record id and custom field value, respectively</&> +<&|/l, '<tt>__id__</tt>', '<tt>__CustomField__</tt>' &>RT will replace [_1] and [_2] with the record's id and the custom field's value, respectively.</&> <i><&|/l&>Some browsers may only load content from the same domain as your RT server.</&></i> </div></td></tr> % if ( $CustomFieldObj->Id && $CustomFieldObj->IsSelectionType && !$CustomFieldObj->IsExternalValues ) { -<tr><td class="label"><&|/l&>Categories are based on</&></td><td> +<tr class="categoriesbasedon"><td class="label"><&|/l&>Categories are based on</&></td><td> <& /Admin/Elements/SelectCustomField, Name => "BasedOn", LookupType => $CustomFieldObj->LookupType, - Default => $CustomFieldObj->BasedOnObj, + Default => $CustomFieldObj->BasedOnObj || $BasedOn, Not => $CustomFieldObj->id, &> </td></tr> % } +% $m->callback(CallbackName => 'BeforeEnabled', CustomField => $CustomFieldObj, CFvalidations => \@CFvalidations); + <tr><td class="label"> </td><td> <input type="checkbox" class="checkbox" name="Required" value="1" <% $RequiredChecked |n%> /> <&|/l&>Required for ticket resolution</&> @@ -137,6 +149,8 @@ <&|/l&>Enabled (Unchecking this box disables this custom field)</&> </td></tr> +% $m->callback(CallbackName => 'EndOfTable', CustomField => $CustomFieldObj, CFvalidations => \@CFvalidations); + </table> % if ( $CustomFieldObj->Id && $CustomFieldObj->IsSelectionType && !$CustomFieldObj->IsExternalValues ) { @@ -151,15 +165,15 @@ </form> <%INIT> -my ($title, @results, $Disabled); +my ($title, @results); my $CustomFieldObj = RT::CustomField->new( $session{'CurrentUser'} ); -my $current_tab = 'Admin/CustomFields/Modify.html'; + +$m->callback(CallbackName => 'Initial', Pattern => \$Pattern, ARGSRef => \%ARGS); unless ( $id ) { $title = loc("Create a CustomField"); $id = 'new'; - $current_tab .= '?Create=1'; } else { if ( $id eq 'new' ) { @@ -172,20 +186,27 @@ else { LinkValueTo => $LinkValueTo, IncludeContentForValue => $IncludeContentForValue, BasedOn => $BasedOn, + Disabled => !$Enabled, ); - $m->comp( "/Elements/Error", Why => loc( "Could not create CustomField", $msg ) ) unless $val; - push @results, $msg; - $title = loc( 'Created CustomField [_1]', $CustomFieldObj->Name ); + if (!$val) { + push @results, loc("Could not create CustomField: [_1]", $msg); + $title = loc( 'Create a CustomField'); + } + else { + push @results, loc("Object created"); + $title = loc( 'Created CustomField [_1]', $CustomFieldObj->Name ); + } } else { - $CustomFieldObj->Load( $id ) || $m->comp("/Elements/Error", Why => loc('No CustomField') ); + push @results, loc('No CustomField') + unless $CustomFieldObj->Load( $id ); + $title = loc( 'Editing CustomField [_1]', $CustomFieldObj->Name ); } - $current_tab .= "?id=$id"; } if ( $ARGS{'Update'} && $id ne 'new' ) { #we're asking about enabled on the web page but really care about disabled. - $ARGS{'Disabled'} = $Disabled = $Enabled? 0 : 1; + $ARGS{'Disabled'} = $Enabled? 0 : 1; $ARGS{'Required'} ||= 0; @@ -197,7 +218,32 @@ if ( $ARGS{'Update'} && $id ne 'new' ) { ); $CustomFieldObj->SetValuesClass( $ValuesClass ); - $CustomFieldObj->SetBasedOn( $BasedOn ); + # Set the render type if we have it, but unset it if the new type doesn't + # support render types + if ( $CustomFieldObj->HasRenderTypes($TypeComposite) ) { + my $original = $CustomFieldObj->RenderType; + + if ( defined $RenderType and $RenderType ne $original ) { + # It's changed! Let's update it. + my ($good, $msg) = $CustomFieldObj->SetRenderType( $RenderType ); + + if ( $good ) { + $msg = loc("[_1] changed from '[_2]' to '[_3]'", + loc("Render Type"), $original, $RenderType ); + } + + push @results, $msg; + } + } + else { + # Delete it if we no longer support render types + $CustomFieldObj->SetRenderType( undef ); + } + + if (($CustomFieldObj->BasedOn||'') ne ($BasedOn||'')) { + my ($good, $msg) = $CustomFieldObj->SetBasedOn( $BasedOn ); + push @results, $msg; + } $CustomFieldObj->SetUILocation( $UILocation ); @@ -227,10 +273,12 @@ if ( $ARGS{'Update'} && $id ne 'new' ) { $ARGS{$param} =~ s/^\s+//; $ARGS{$param} =~ s/\s+$//; next if ($value->$attr()||'') eq ($ARGS{$param}||''); + my $mutator = "Set$attr"; my ($id, $msg) = $value->$mutator( $ARGS{$param} ); push (@results, $msg); } + $m->callback(CallbackName => 'AfterUpdateCustomFieldValue', CustomFieldObj => $CustomFieldObj, CustomFieldValueObj => $value, ARGSRef => \%ARGS ); } # Add any new values @@ -242,11 +290,23 @@ if ( $ARGS{'Update'} && $id ne 'new' ) { $_ => $ARGS{ $paramtag ."-new-$_" } } qw/ Name Description SortOrder Category/ ); push (@results, $msg); + + my $cfv = RT::CustomFieldValue->new( $session{CurrentUser} ); + $cfv->Load($id); + $m->callback(CallbackName => 'AfterCreateCustomFieldValue', +CustomFieldObj => $CustomFieldObj, CustomFieldValueObj => $cfv, ARGSRef => \%ARGS ); } } $id = $CustomFieldObj->id if $CustomFieldObj->id; +# This code does automatic redirection if any updates happen. +MaybeRedirectForResults( + Actions => \@results, + Arguments => { id => $id }, +) if $CustomFieldObj->id; + + my $EnabledChecked = qq[checked="checked"]; $EnabledChecked = '' if $CustomFieldObj->Disabled; @@ -274,6 +334,7 @@ $Name => undef $SetEnabled => undef $Enabled => 0 $ValuesClass => 'RT::CustomFieldValues' +$RenderType => undef $LinkValueTo => undef $IncludeContentForValue => undef $BasedOn => undef diff --git a/rt/share/html/Admin/CustomFields/Objects.html b/rt/share/html/Admin/CustomFields/Objects.html index 8fb00a812..91dc5dcfb 100644 --- a/rt/share/html/Admin/CustomFields/Objects.html +++ b/rt/share/html/Admin/CustomFields/Objects.html @@ -2,7 +2,7 @@ %# %# COPYRIGHT: %# -%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC +%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC %# <sales@bestpractical.com> %# %# (Except where explicitly superseded by other copyright notices) @@ -46,11 +46,7 @@ %# %# END BPS TAGGED BLOCK }}} <& /Admin/Elements/Header, Title => $title &> -<& /Admin/Elements/CustomFieldTabs, - id => $id, - current_tab => "Admin/CustomFields/Objects.html?id=".$id, - Title => $title - &> +<& /Elements/Tabs &> <& /Elements/ListActions, actions => \@results &> @@ -67,6 +63,7 @@ <input type="checkbox" name="AddCustomField-<% $CF->id %>" value="0" /> <&|/l&>check this box to apply this Custom Field to all objects.</&> +% unless ( $CF->ApplyGlobally ) { <h2><&|/l&>Selected objects</&></h2> <& /Elements/CollectionList, OrderBy => 'id', @@ -102,12 +99,14 @@ % } +% } + <& /Elements/Submit, Name => 'UpdateObjs' &> </form> <%INIT> my $CF = RT::CustomField->new($session{'CurrentUser'}); -$CF->Load($id) or Abort(loc("Could not load CustomField [_1]"), $id); +$CF->Load($id) or Abort(loc("Could not load CustomField [_1]", $id)); my $class = $CF->RecordClassFromLookupType; Abort(loc("Something wrong. Contact system administrator")) diff --git a/rt/share/html/Admin/CustomFields/UserRights.html b/rt/share/html/Admin/CustomFields/UserRights.html index f581588a8..608d5dc40 100644 --- a/rt/share/html/Admin/CustomFields/UserRights.html +++ b/rt/share/html/Admin/CustomFields/UserRights.html @@ -2,7 +2,7 @@ %# %# COPYRIGHT: %# -%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC +%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC %# <sales@bestpractical.com> %# %# (Except where explicitly superseded by other copyright notices) @@ -46,43 +46,17 @@ %# %# END BPS TAGGED BLOCK }}} <& /Admin/Elements/Header, Title => $title &> -<& /Admin/Elements/CustomFieldTabs, id => $id, -current_tab => "Admin/CustomFields/UserRights.html?id=".$id, -Title => $title, &> +<& /Elements/Tabs &> <& /Elements/ListActions, actions => \@results &> - <form method="post" action="UserRights.html"> + <form method="post" action="UserRights.html" name="ModifyUserRights" id="ModifyUserRights"> <input type="hidden" class="hidden" name="id" value="<% $CustomFieldObj->id %>" /> - - -<table> - -% while (my $Member = $Users->Next()) { -% my $UserObj = $Member->MemberObj->Object(); -% my $group = RT::Group->new($session{'CurrentUser'}); -% $group->LoadACLEquivalenceGroup($Member->MemberObj); - <tr align="right"> - <td valign="top"><& /Elements/ShowUser, User => $UserObj &></td> - <td> - <& /Admin/Elements/SelectRights, PrincipalId=> $group->PrincipalId, - Object => $CustomFieldObj &> - </td> - </tr> -% } - </table> - - <& /Elements/Submit, Caption => loc("Be sure to save your changes"), Reset => 1 &> - + <& /Admin/Elements/EditRights, Context => $CustomFieldObj, Principals => \@principals &> + <& /Elements/Submit, Label => loc('Save Changes') &> </form> - <%INIT> - -#Update the acls. -my @results = ProcessACLChanges( \%ARGS ); - -# {{{ Deal with setting up the display of current rights. - - +# Update the acls. +my @results = ProcessACLs( \%ARGS ); if (!defined $id) { $m->comp("/Elements/Error", Why => loc("No Class defined")); @@ -91,20 +65,12 @@ if (!defined $id) { my $CustomFieldObj = RT::CustomField->new($session{'CurrentUser'}); $CustomFieldObj->Load($id) || $m->comp("/Elements/Error", Why => loc("Couldn't load Class [_1]",$id)); -# Find out which users we want to display ACL selects for -my $Privileged = RT::Group->new($session{'CurrentUser'}); -$Privileged->LoadSystemInternalGroup('Privileged'); -my $Users = $Privileged->MembersObj(); - my $title = loc('Modify user rights for custom field [_1]', $CustomFieldObj->Name); - -# }}} - + +# Principal collections +my @principals = GetPrincipalsMap($CustomFieldObj, qw(Users)); </%INIT> <%ARGS> $id => undef -$UserString => undef -$UserOp => undef -$UserField => undef </%ARGS> diff --git a/rt/share/html/Admin/CustomFields/index.html b/rt/share/html/Admin/CustomFields/index.html index 2835b1292..b8bc447d2 100644 --- a/rt/share/html/Admin/CustomFields/index.html +++ b/rt/share/html/Admin/CustomFields/index.html @@ -2,7 +2,7 @@ %# %# COPYRIGHT: %# -%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC +%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC %# <sales@bestpractical.com> %# %# (Except where explicitly superseded by other copyright notices) @@ -46,10 +46,7 @@ %# %# END BPS TAGGED BLOCK }}} <& /Admin/Elements/Header, Title => $title &> -<& /Admin/Elements/CustomFieldTabs, - current_tab => 'Admin/CustomFields/', - Title => $title, -&> +<& /Elements/Tabs &> % my $tmp = RT::CustomField->new( $session{'CurrentUser'} ); % if ( $Type ) { @@ -84,6 +81,8 @@ <&|/l&>Include disabled custom fields in listing.</&> <br /> +% $m->callback(CallbackName => 'BeforeSubmit'); + <input type="submit" value="<% loc('Go!') %>" /> </form> @@ -107,6 +106,8 @@ $CustomFields->UnLimit; $CustomFields->FindAllRows if $ShowDisabled; $CustomFields->LimitToLookupType( $Type ) if $Type; +$m->callback(CallbackName => 'MassageCustomFields', CustomFields => $CustomFields); + $Format ||= RT->Config->Get('AdminSearchResultFormat')->{'CustomFields'}; </%INIT> |