From 90edd8a914fd484e649fb0aa051dce7927bd6881 Mon Sep 17 00:00:00 2001 From: mark Date: Thu, 17 Feb 2011 03:47:50 +0000 Subject: TimeWorked-like custom fields, RT#11168 --- rt/share/html/Admin/CustomFields/Modify.html | 11 ++++ .../html/Admin/Elements/EditCustomFieldUILocation | 66 ++++++++++++++++++++++ rt/share/html/Elements/EditCustomFieldTimeValue | 16 ++++++ rt/share/html/Elements/ShowCustomFieldTimeValue | 4 ++ rt/share/html/Ticket/Display.html | 2 +- .../Ticket/Elements/EditTransactionCustomFields | 12 +++- rt/share/html/Ticket/Update.html | 20 +++++-- 7 files changed, 122 insertions(+), 9 deletions(-) create mode 100644 rt/share/html/Admin/Elements/EditCustomFieldUILocation create mode 100644 rt/share/html/Elements/EditCustomFieldTimeValue create mode 100644 rt/share/html/Elements/ShowCustomFieldTimeValue (limited to 'rt/share/html') diff --git a/rt/share/html/Admin/CustomFields/Modify.html b/rt/share/html/Admin/CustomFields/Modify.html index f53e4d7bb..5ef32127b 100644 --- a/rt/share/html/Admin/CustomFields/Modify.html +++ b/rt/share/html/Admin/CustomFields/Modify.html @@ -82,6 +82,14 @@ Default => $CustomFieldObj->LookupType, &> +% if ( $CustomFieldObj->Id +% and $CustomFieldObj->LookupType =~ /RT::Transaction/ ) { +<&|/l&>Display with +<& /Admin/Elements/EditCustomFieldUILocation, + CustomField => $CustomFieldObj &> + +% } + <&|/l&>Validation <& /Widgets/ComboBox, Name => 'Pattern', @@ -191,6 +199,8 @@ if ( $ARGS{'Update'} && $id ne 'new' ) { $CustomFieldObj->SetBasedOn( $BasedOn ); + $CustomFieldObj->SetUILocation( $UILocation ); + my $paramtag = "CustomField-". $CustomFieldObj->Id ."-Value"; # Delete any fields that want to be deleted foreach my $key ( keys %ARGS ) { @@ -267,4 +277,5 @@ $ValuesClass => 'RT::CustomFieldValues' $LinkValueTo => undef $IncludeContentForValue => undef $BasedOn => undef +$UILocation => undef diff --git a/rt/share/html/Admin/Elements/EditCustomFieldUILocation b/rt/share/html/Admin/Elements/EditCustomFieldUILocation new file mode 100644 index 000000000..9cffafabb --- /dev/null +++ b/rt/share/html/Admin/Elements/EditCustomFieldUILocation @@ -0,0 +1,66 @@ +%# BEGIN BPS TAGGED BLOCK {{{ +%# +%# COPYRIGHT: +%# +%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC +%# +%# +%# (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 }}} +
+ +
+ +<%INIT> +my @sources; +my @tags = ( '', 'TimeWorked' ); +my %description = ( + '' => 'Custom fields', + 'TimeWorked' => 'Time Worked', +); + +<%ARGS> +$CustomField => undef + diff --git a/rt/share/html/Elements/EditCustomFieldTimeValue b/rt/share/html/Elements/EditCustomFieldTimeValue new file mode 100644 index 000000000..064554594 --- /dev/null +++ b/rt/share/html/Elements/EditCustomFieldTimeValue @@ -0,0 +1,16 @@ +% my $name = $NamePrefix . $CustomField->Id . '-Value'; +% if ($Multiple) { +% $RT::Logger->error("TimeValue Multiple custom field not supported"); +% return; +% } +<& /Elements/EditTimeValue, + Name => $name, + Default => $Default, + InUnits => $ARGS{"$name-TimeUnits"} || 'minutes', +&> +<%ARGS> +$CustomField => undef +$NamePrefix => undef +$Default => undef +$Multiple => undef + diff --git a/rt/share/html/Elements/ShowCustomFieldTimeValue b/rt/share/html/Elements/ShowCustomFieldTimeValue new file mode 100644 index 000000000..16d26df60 --- /dev/null +++ b/rt/share/html/Elements/ShowCustomFieldTimeValue @@ -0,0 +1,4 @@ +<%$Object->Content|n%> min +<%ARGS> +$Object + diff --git a/rt/share/html/Ticket/Display.html b/rt/share/html/Ticket/Display.html index bc5294136..6fd8b85e6 100755 --- a/rt/share/html/Ticket/Display.html +++ b/rt/share/html/Ticket/Display.html @@ -155,7 +155,7 @@ if ($ARGS{'id'} eq 'new') { push @Actions, ProcessTicketBasics( ARGSRef => \%ARGS, TicketObj => $TicketObj ); push @Actions, ProcessTicketLinks( ARGSRef => \%ARGS, TicketObj => $TicketObj ); push @Actions, ProcessTicketDates( ARGSRef => \%ARGS, TicketObj => $TicketObj ); - push @Actions, ProcessObjectCustomFieldUpdates(ARGSRef => \%ARGS, TicketObj => $TicketObj ); + push @Actions, ProcessTicketCustomFieldUpdates(ARGSRef => \%ARGS, TicketObj => $TicketObj ); # XXX: we shouldn't block actions here if user has no right to see the ticket, # but we should allow him to see actions he has done diff --git a/rt/share/html/Ticket/Elements/EditTransactionCustomFields b/rt/share/html/Ticket/Elements/EditTransactionCustomFields index e2f42b2c5..630f67817 100644 --- a/rt/share/html/Ticket/Elements/EditTransactionCustomFields +++ b/rt/share/html/Ticket/Elements/EditTransactionCustomFields @@ -49,18 +49,23 @@ % if ($CustomFields->Count) { % while (my $CF = $CustomFields->Next()) { % next unless $CF->CurrentUserHasRight('ModifyCustomField'); +% next unless $CF->UILocation eq $UILocation; -<% loc($CF->Name) %>: + +<% loc($CF->Name) %>: + <& /Elements/EditCustomField, CustomField => $CF, NamePrefix => $NamePrefix &> +% if ( $CF->Type ne 'TimeValue' ) { <% $CF->FriendlyType %> -% if (my $msg = $m->notes('InvalidField-' . $CF->Id)) { +% } +% if (my $msg = $m->notes('InvalidField-' . $CF->Id)) {
<% $msg %> -% } +% } % } @@ -83,5 +88,6 @@ $m->callback( CallbackName => 'MassageTransactionCustomFields', CustomFields => $NamePrefix => "Object-RT::Transaction--CustomField-" $TicketObj => undef $QueueObj => undef +$UILocation => '' diff --git a/rt/share/html/Ticket/Update.html b/rt/share/html/Ticket/Update.html index 50c6f9327..62db0d1c3 100755 --- a/rt/share/html/Ticket/Update.html +++ b/rt/share/html/Ticket/Update.html @@ -65,8 +65,8 @@ % $m->callback(CallbackName => 'AfterTableOpens', ARGSRef => \%ARGS, Ticket => $TicketObj); - - + + % my $skip; % $m->callback( %ARGS, CallbackName => 'BeforeUpdateType', skip => \$skip ); % if (!$skip) { @@ -131,7 +141,7 @@ % } % $m->callback( %ARGS, CallbackName => 'AfterGnuPG' ); -
<&|/l&>Status: +
<&|/l&>Status: <& /Elements/SelectStatus, Name=>"Status", DefaultLabel => loc("[_1] (Unchanged)", loc($TicketObj->Status)), Default => $ARGS{'Status'} || ($TicketObj->Status eq $DefaultStatus ? undef : $DefaultStatus)&> <&|/l&>Owner: <& /Elements/SelectOwner, @@ -76,13 +76,23 @@ DefaultLabel => loc("[_1] (Unchanged)", $m->scomp('/Elements/ShowUser', User => $TicketObj->OwnerObj)), Default => $ARGS{'Owner'} &> -<&|/l&>Worked: -<& /Elements/EditTimeValue, + + + + + +<& /Ticket/Elements/EditTransactionCustomFields, + %ARGS, + TicketObj => $TicketObj, + UILocation => 'TimeWorked', +&> +
<&|/l&>Worked:<& /Elements/EditTimeValue, Name => 'UpdateTimeWorked', Default => $ARGS{UpdateTimeWorked}||'', InUnits => $ARGS{'UpdateTimeWorked-TimeUnits'}||'minutes', &>
<&|/l&>Message: +
<&|/l&>Message: % $m->callback( %ARGS, CallbackName => 'BeforeMessageBox' ); % if (exists $ARGS{UpdateContent}) { % # preserve QuoteTransaction so we can use it to set up sane references/in/reply to -- cgit v1.2.1