diff options
author | Ivan Kohler <ivan@freeside.biz> | 2013-06-04 00:21:24 -0700 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2013-06-04 00:21:24 -0700 |
commit | 679854b8bbc65d112071111bbd7f34a6a481fb30 (patch) | |
tree | dda0862fdf7853f4f61e4cf155c8bbc93768c994 /rt/share/html/m/ticket | |
parent | 9b328d940af56b9924a342192ebb0790478fa705 (diff) |
RT 4.0.13
Diffstat (limited to 'rt/share/html/m/ticket')
-rw-r--r-- | rt/share/html/m/ticket/autohandler | 47 | ||||
-rw-r--r-- | rt/share/html/m/ticket/create | 104 | ||||
-rw-r--r-- | rt/share/html/m/ticket/history | 49 | ||||
-rw-r--r-- | rt/share/html/m/ticket/reply | 134 | ||||
-rw-r--r-- | rt/share/html/m/ticket/select_create_queue | 47 | ||||
-rw-r--r-- | rt/share/html/m/ticket/show | 88 |
6 files changed, 365 insertions, 104 deletions
diff --git a/rt/share/html/m/ticket/autohandler b/rt/share/html/m/ticket/autohandler index ac24959a1..30cdc0621 100644 --- a/rt/share/html/m/ticket/autohandler +++ b/rt/share/html/m/ticket/autohandler @@ -1,3 +1,50 @@ +%# BEGIN BPS TAGGED BLOCK {{{ +%# +%# COPYRIGHT: +%# +%# This software is Copyright (c) 1996-2013 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 }}} <%init> # Redirect to the approvals view if we're trying to get an approvals ticket MaybeRedirectToApproval( diff --git a/rt/share/html/m/ticket/create b/rt/share/html/m/ticket/create index 052a1a55f..9fd04e436 100644 --- a/rt/share/html/m/ticket/create +++ b/rt/share/html/m/ticket/create @@ -1,3 +1,50 @@ +%# BEGIN BPS TAGGED BLOCK {{{ +%# +%# COPYRIGHT: +%# +%# This software is Copyright (c) 1996-2013 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> $QuoteTransaction => undef $CloneTicket => undef @@ -93,7 +140,7 @@ my @results; my $title = loc("Create a ticket"); -my $QueueObj = new RT::Queue($session{'CurrentUser'}); +my $QueueObj = RT::Queue->new($session{'CurrentUser'}); $QueueObj->Load($Queue) || Abort(loc("Queue could not be loaded.")); $m->callback( QueueObj => $QueueObj, title => \$title, results => \@results, ARGSRef => \%ARGS ); @@ -108,33 +155,7 @@ my $ValidCFs = $m->comp( ARGSRef => \%ARGS ); -# {{{ deal with deleting uploaded attachments -foreach my $key (keys %ARGS) { - if ($key =~ m/^DeleteAttach-(.+)$/) { - delete $session{'Attachments'}{$1}; - } - $session{'Attachments'} = { %{$session{'Attachments'} || {}} }; -} -# }}} - -# {{{ store the uploaded attachment in session -if ($ARGS{'Attach'}) { # attachment? - my $attachment = MakeMIMEEntity( - AttachmentFieldName => 'Attach' - ); - - my $file_path = Encode::decode_utf8("$ARGS{'Attach'}"); - $session{'Attachments'} = { - %{$session{'Attachments'} || {}}, - $file_path => $attachment, - }; -} -# }}} - -# delete temporary storage entry to make WebUI clean -unless (keys %{$session{'Attachments'}} and $ARGS{'id'} eq 'new') { - delete $session{'Attachments'}; -} +ProcessAttachments(ARGSRef => \%ARGS); my $checks_failure = 0; @@ -208,7 +229,7 @@ if ((!exists $ARGS{'AddMoreAttach'}) and (defined($ARGS{'id'}) and $ARGS{'id'} e <%perl> $showrows->( - loc("Subject") => '<input name="Subject" size="30" maxsize="200" value="'.$escape->($ARGS{Subject} || '').'" />'); + loc("Subject") => '<input type="text" name="Subject" size="30" maxsize="200" value="'.$escape->($ARGS{Subject} || '').'" />'); </%perl> <span class="content-label label"><%loc("Describe the issue below")%></span> <& /Elements/MessageBox, exists $ARGS{Content} ? (Default => $ARGS{Content}, IncludeSignature => 0 ) : ( QuoteTransaction => $QuoteTransaction ), Height => 5 &> @@ -234,9 +255,9 @@ $showrows->( $m->scomp( "/Elements/SelectStatus", Name => "Status", - Default => $ARGS{Status} || 'new', + QueueObj => $QueueObj, + Default => $ARGS{Status} || $QueueObj->Lifecycle->DefaultOnCreate, DefaultValue => 0, - SkipDeleted => 1 ), loc("Owner") => @@ -245,7 +266,7 @@ $showrows->( "/Elements/SelectOwner", Name => "Owner", QueueObj => $QueueObj, - Default => $ARGS{Owner} || $RT::Nobody->Id, + Default => $ARGS{Owner} || RT->Nobody->Id, DefaultValue => 0 ), @@ -268,7 +289,7 @@ $showrows->( loc("Admin Cc") => $m->scomp( "/Elements/EmailInput", Name => 'AdminCc', Size => '40', Default => $ARGS{AdminCc} ) - . '<span class="comment" colspan="2"><i><font size="-2">' + . '<span class="comment"><i><font size="-2">' . loc( "(Sends a carbon-copy of this update to a comma-delimited list of administrative email addresses. These people <strong>will</strong> receive future updates.)" ) @@ -277,13 +298,11 @@ $showrows->( ); +</%perl> -$m->scomp("/Ticket/Elements/EditCustomFields", %ARGS, QueueObj => $QueueObj ); - - -$m->scomp("/Ticket/Elements/EditTransactionCustomFields", %ARGS, QueueObj => $QueueObj ); +<& /Ticket/Elements/EditCustomFields, %ARGS, QueueObj => $QueueObj &> +<& /Ticket/Elements/EditTransactionCustomFields, %ARGS, QueueObj => $QueueObj &> -</%perl> % if (exists $session{'Attachments'}) { <%loc("Attached file") %> @@ -300,15 +319,16 @@ $m->scomp("/Ticket/Elements/EditTransactionCustomFields", %ARGS, QueueObj => $Qu $showrows->( loc("Attach file") => - '<div class="value" colspan="5"> -<input type="file" name="Attach" /> -<input type="submit" class="button" name="AddMoreAttach" value="' . loc("Add More Files") . '" />' + '<input type="file" name="Attach" /> +<input type="submit" class="button" name="AddMoreAttach" value="' . loc("Add More Files") . '" /> +<input type="hidden" class="hidden" name="UpdateAttach" value="1" /> +' ); </%perl> % if ( $gnupg_widget ) { -%$m->scomp("/Elements/GnuPG/SignEncryptWidget", self => $gnupg_widget, QueueObj => $QueueObj ) +<& /Elements/GnuPG/SignEncryptWidget, self => $gnupg_widget, QueueObj => $QueueObj &> % } diff --git a/rt/share/html/m/ticket/history b/rt/share/html/m/ticket/history index a49945d77..dcc25692b 100644 --- a/rt/share/html/m/ticket/history +++ b/rt/share/html/m/ticket/history @@ -1,3 +1,50 @@ +%# BEGIN BPS TAGGED BLOCK {{{ +%# +%# COPYRIGHT: +%# +%# This software is Copyright (c) 1996-2013 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> $id => undef </%args> @@ -6,7 +53,7 @@ my $t = RT::Ticket->new($session{CurrentUser}); $t->Load($id); my $history = $t->Transactions()->ItemsArrayRef; </%init> -<&| /m/_elements/wrapper, title => $t->Subject &> +<&| /m/_elements/wrapper, title => loc("#[_1]: [_2]", $t->Id, $t->Subject || '') &> <div class="history"> <& /m/_elements/ticket_menu, ticket => $t &> <&|/Widgets/TitleBox &> diff --git a/rt/share/html/m/ticket/reply b/rt/share/html/m/ticket/reply index ea2a6cad4..d3b0f6f0d 100644 --- a/rt/share/html/m/ticket/reply +++ b/rt/share/html/m/ticket/reply @@ -1,3 +1,50 @@ +%# BEGIN BPS TAGGED BLOCK {{{ +%# +%# COPYRIGHT: +%# +%# This software is Copyright (c) 1996-2013 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 }}} <&|/m/_elements/wrapper, title => loc('Update ticket #[_1]', $t->id) &> <& /m/_elements/ticket_menu, ticket => $t &> <& /Elements/ListActions, actions => \@results &> @@ -8,9 +55,13 @@ <input type="hidden" class="hidden" name="DefaultStatus" value="<% $DefaultStatus ||''%>" /> <input type="hidden" class="hidden" name="Action" value="<% $ARGS{Action}||'' %>" /> +% if ($gnupg_widget) { +<& /Elements/GnuPG/SignEncryptWidget:ShowIssues, self => $gnupg_widget &> +% } + <div class="entry"><span class="label"><&|/l&>Status</&>:</span> <div class="value"> -<& /Elements/SelectStatus, Name=>"Status", DefaultLabel => loc("[_1] (Unchanged)", loc($t->Status)), Default => $ARGS{'Status'} || ($t->Status eq $DefaultStatus ? undef : $DefaultStatus)&> +<& /Elements/SelectStatus, Name=>"Status", TicketObj => $t, DefaultLabel => loc("[_1] (Unchanged)", loc($t->Status)), Default => $ARGS{'Status'} || ($t->Status eq $DefaultStatus ? undef : $DefaultStatus)&> </div></div> <div class="entry"><span class="label"><&|/l&>Owner</&>:</span> @@ -19,7 +70,7 @@ Name => "Owner", TicketObj => $t, QueueObj => $t->QueueObj, - DefaultLabel => loc("[_1] (Unchanged)", $t->OwnerObj->Name), + DefaultLabel => loc("[_1] (Unchanged)", $m->scomp('/Elements/ShowUser', User => $t->OwnerObj)), Default => $ARGS{'Owner'} &> </div></div> @@ -30,6 +81,7 @@ InUnits => $ARGS{'UpdateTimeWorked-TimeUnits'}||'minutes', &> </span></div> +% $m->callback( %ARGS, CallbackName => 'AfterWorked', Ticket => $t ); <input type="hidden" class="hidden" name="id" value="<%$t->Id%>" /><br /> <div class="entry"><span class="label"><&|/l&>Update Type</&>:</span> <div class="value"><select name="UpdateType"> @@ -41,7 +93,7 @@ % } </select> </div></div> -<div class="entry"><span class="label"><&|/l&>Subject</&>:</span><div class="value"> <input name="UpdateSubject" size="60" value="<% $ARGS{UpdateSubject} || $t->Subject()%>" /> +<div class="entry"><span class="label"><&|/l&>Subject</&>:</span><div class="value"> <input type="text" name="UpdateSubject" size="60" value="<% $ARGS{UpdateSubject} || $t->Subject()%>" /> % $m->callback( %ARGS, CallbackName => 'AfterSubject' ); </div></div> @@ -62,6 +114,32 @@ <& /Elements/MessageBox, Name=>"UpdateContent", IncludeSignature => $IncludeSignature, %ARGS &> % } </div></div> + +% if (exists $session{'Attachments'}) { + +<%loc("Attached file") %> + +<%loc("Check box to delete")%><br /> +% foreach my $attach_name (keys %{$session{'Attachments'}}) { +<input type="checkbox" class="checkbox" name="DeleteAttach-<%$attach_name%>" value="1" /><%$attach_name%><br /> +% } # end of foreach + + +% } # end of if + +<div class="entry"> +<span class="label"><&|/l&>Attach file</&>:</span> +<div class="value"> +<input type="file" name="Attach" /> +<input type="submit" class="button" name="AddMoreAttach" value="<% loc("Add More Files") %>" /> +<input type="hidden" class="hidden" name="UpdateAttach" value="1" /> +</div> +</div> + +% if ( $gnupg_widget ) { +<& /Elements/GnuPG/SignEncryptWidget, self => $gnupg_widget, QueueObj => $t->QueueObj &> +% } + <& /Elements/Submit, Label => loc('Update Ticket'), Name => 'SubmitTicket' &> </form> </&> @@ -113,35 +191,7 @@ $CanRespond = 1 if ( $t->CurrentUserHasRight('ReplyToTicket') or $CanComment = 1 if ( $t->CurrentUserHasRight('CommentOnTicket') or $t->CurrentUserHasRight('ModifyTicket') ); - -# {{{ deal with deleting uploaded attachments -foreach my $key (keys %ARGS) { - if ($key =~ m/^DeleteAttach-(.+)$/) { - delete $session{'Attachments'}{$1}; - } - $session{'Attachments'} = { %{$session{'Attachments'} || {}} }; -} -# }}} - -# {{{ store the uploaded attachment in session -if ($ARGS{'Attach'}) { # attachment? - my $attachment = MakeMIMEEntity( - AttachmentFieldName => 'Attach' - ); - - my $file_path = Encode::decode_utf8("$ARGS{'Attach'}"); - $session{'Attachments'} = { - %{$session{'Attachments'} || {}}, - $file_path => $attachment, - }; -} -# }}} - -# delete temporary storage entry to make WebUI clean -unless (keys %{$session{'Attachments'}} and $ARGS{'UpdateAttach'}) { - delete $session{'Attachments'}; -} -# }}} +ProcessAttachments(ARGSRef => \%ARGS); # check email addresses for RT's { @@ -159,13 +209,29 @@ unless (keys %{$session{'Attachments'}} and $ARGS{'UpdateAttach'}) { } } -if ( !$checks_failure && exists $ARGS{SubmitTicket} ) { +my $gnupg_widget = $m->comp('/Elements/GnuPG/SignEncryptWidget:new', Arguments => \%ARGS ); +$m->comp( '/Elements/GnuPG/SignEncryptWidget:Process', + self => $gnupg_widget, + TicketObj => $t, +); + +my $skip_update = 0; +$m->callback( CallbackName => 'BeforeUpdate', ARGSRef => \%ARGS, skip_update => \$skip_update, + checks_failure => $checks_failure, results => \@results, TicketObj => $t ); + +if ( !$checks_failure && !$skip_update && exists $ARGS{SubmitTicket} ) { + my $status = $m->comp('/Elements/GnuPG/SignEncryptWidget:Check', + self => $gnupg_widget, + TicketObj => $t, + ); + $checks_failure = 1 unless $status; + $m->callback( Ticket => $t, ARGSRef => \%ARGS, CallbackName => 'BeforeDisplay' ); return $m->comp('/m/ticket/show', TicketObj => $t, %ARGS); } </%INIT> <%ARGS> $id => undef -$Action => 'reply' +$Action => 'Respond' $DefaultStatus => undef </%ARGS> diff --git a/rt/share/html/m/ticket/select_create_queue b/rt/share/html/m/ticket/select_create_queue index 88cf2033b..e9bc3b2ce 100644 --- a/rt/share/html/m/ticket/select_create_queue +++ b/rt/share/html/m/ticket/select_create_queue @@ -1,3 +1,50 @@ +%# BEGIN BPS TAGGED BLOCK {{{ +%# +%# COPYRIGHT: +%# +%# This software is Copyright (c) 1996-2013 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 }}} <%init> my $queues = RT::Queues->new($session{'CurrentUser'}); $queues->UnLimit(); diff --git a/rt/share/html/m/ticket/show b/rt/share/html/m/ticket/show index 4190bd349..ead23a75e 100644 --- a/rt/share/html/m/ticket/show +++ b/rt/share/html/m/ticket/show @@ -1,3 +1,50 @@ +%# BEGIN BPS TAGGED BLOCK {{{ +%# +%# COPYRIGHT: +%# +%# This software is Copyright (c) 1996-2013 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> $id => undef </%args> @@ -12,7 +59,7 @@ unless ($id) { if ($ARGS{'id'} eq 'new') { # {{{ Create a new ticket - my $Queue = new RT::Queue( $session{'CurrentUser'} ); + my $Queue = RT::Queue->new( $session{'CurrentUser'} ); $Queue->Load($ARGS{'Queue'}); unless ( $Queue->id ) { Abort('Queue not found'); @@ -29,7 +76,6 @@ if ($ARGS{'id'} eq 'new') { unless ( $Ticket->CurrentUserHasRight('ShowTicket') ) { Abort("No permission to view newly created ticket #".$Ticket->id."."); } - # }}} } else { $Ticket ||= LoadTicket($ARGS{'id'}); @@ -37,7 +83,7 @@ if ($ARGS{'id'} eq 'new') { TicketObj => $Ticket, ActionsRef => \@Actions, ARGSRef => \%ARGS ); if ( defined $ARGS{'Action'} ) { - if ($ARGS{'Action'} =~ /^(Steal|Kill|Take|SetTold)$/) { + if ($ARGS{'Action'} =~ /^(Steal|Delete|Take|SetTold)$/) { my $action = $1; my ($res, $msg) = $Ticket->$action(); push(@Actions, $msg); @@ -64,11 +110,14 @@ if ($ARGS{'id'} eq 'new') { push @Actions, ProcessTicketLinks( ARGSRef => \%ARGS, TicketObj => $Ticket ); push @Actions, ProcessTicketDates( ARGSRef => \%ARGS, TicketObj => $Ticket ); push @Actions, ProcessObjectCustomFieldUpdates(ARGSRef => \%ARGS, TicketObj => $Ticket ); + push @Actions, ProcessTicketReminders( ARGSRef => \%ARGS, TicketObj => $Ticket ); - # 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 unless ($Ticket->CurrentUserHasRight('ShowTicket')) { - Abort("No permission to view ticket"); + if (@Actions) { + Abort("A change was applied successfully, but you no longer have permissions to view the ticket", Actions => \@Actions); + } else { + Abort("No permission to view ticket"); + } } if ( $ARGS{'MarkAsSeen'} ) { $Ticket->SetAttribute( @@ -111,12 +160,6 @@ while ( my $attach = $Attachments->Next() ) { unshift( @{ $documents{ $attach->Filename } }, $attach ); } -my $Customers = $Ticket->Customers; -my @customers; -while ( my $customer = $Customers->Next() ) { - push @customers, $customer; -} - my $CustomFields = $Ticket->CustomFields; $m->callback( CallbackName => 'MassageCustomFields', @@ -161,7 +204,7 @@ my $print_value = sub { }; </%init> -<&| /m/_elements/wrapper, title => $Ticket->Subject &> +<&| /m/_elements/wrapper, title => loc("#[_1]: [_2]", $Ticket->Id, $Ticket->Subject || '') &> <div id="ticket-show"> <& /m/_elements/ticket_menu, ticket => $Ticket &> @@ -204,6 +247,10 @@ my $print_value = sub { <div class="label queue"><&|/l&>Queue</&>:</div> <div class="value queue"><& /Ticket/Elements/ShowQueue, QueueObj => $Ticket->QueueObj &></div> </div> + <div class="entry"> + <div class="label bookmark"><&|/l&>Bookmark</&>:</div> + <div class="value bookmark"><& /Ticket/Elements/Bookmark, id => $Ticket->id &></div> + </div> </&> % if ($Ticket->CustomFields->First) { @@ -297,7 +344,7 @@ if ($size) { </%PERL> <li><font size="-2"> -<a href="<%RT->Config->Get('WebPath')%>/Ticket/Attachment/<%$rev->TransactionId%>/<%$rev->Id%>/<%$rev->Filename | u%>"> +<a href="<%RT->Config->Get('WebPath')%>/Ticket/Attachment/<%$rev->TransactionId%>/<%$rev->Id%>/<%$rev->Filename | un%>"> <&|/l, $rev->CreatedAsString, $size, $rev->CreatorObj->Name &>[_1] ([_2]) by [_3]</&> </a> </font></li> @@ -323,19 +370,6 @@ if ($size) { </&> % } -% if ( @customers ) { - <&| /Widgets/TitleBox, title => loc("Customers"), - class => 'ticket-info-customers', - &> -% foreach my $customer ( @customers ) { -% my $resolver = $customer->TargetURI->Resolver or next; -<div class="entry"><a href="<% $resolver->HREF %>"><% $resolver->AsString |n%></A> -</div> -% } #foreach - </&> -% } # if @customers - - <&| /Widgets/TitleBox, title => loc("Dates"), class => 'ticket-info-dates', &> |