[Rt-commit] rtir branch, 5.0/allow-inline-edit-on-ticket-display, repushed
Craig Kaiser
craig at bestpractical.com
Wed Nov 18 15:03:21 EST 2020
The branch 5.0/allow-inline-edit-on-ticket-display was deleted and repushed:
was 1b4715541eb156eb3549c61fa396808a7e4f8ab7
now fdbb42b131107f1505bae256aeec2aee576b953d
1: 1717af7a < -: ------- Add inline edit to 'The Basics' section
2: 6605b6fe ! 1: b848b38f Add inline edit to basics portlet on RTIR Display.html
@@ -1,12 +1,227 @@
Author: craig kaiser <craig at bestpractical.com>
- Add inline edit for custom field groupings on ticket display
+ Add inline edit to basics portlet on RTIR Display.html
diff --git a/html/RTIR/Display.html b/html/RTIR/Display.html
--- a/html/RTIR/Display.html
+++ b/html/RTIR/Display.html
@@
+ <div class="boxcontainer col-md-6">
+ % $m->callback( %ARGS, Ticket => $Ticket, CallbackName => 'LeftColumnStart' );
+
++<%PERL>
++ my $modify_url = RT->Config->Get('WebPath')."/RTIR/Display.html?id=".$Ticket->Id;
++ my $modify_inline
++ = '<a class="inline-edit-toggle edit" href="%s">'
++ . qq{<span class="fas fa-pencil-alt icon-bordered fa-2x" alt="$edit_label" data-toggle="tooltip" data-placement="top" data-original-title="$edit_label"></span>}
++ . '</a>'
++ . '<a class="inline-edit-toggle cancel hidden" href="#">'
++ . qq{<span class="fas fa-times icon-bordered fa-2x" alt="$cancel_label" data-toggle="tooltip" data-placement="top" data-original-title="$cancel_label"></span>}
++ . '</a>';
++ my $modify_basics = sprintf( $modify_inline, $m->interp->apply_escapes( $modify_url, 'h' ) );
++ my $modify_behavior = $inline_edit_behavior{Basics} || $inline_edit_behavior{_default} || 'link';
++</%PERL>
++
+ <&| /Widgets/TitleBox,
+- title => loc("The Basics"),
++ title => loc("The Basics"),
+ title_href => RT::IR->HREFTo("Edit.html?id=".$Ticket->Id),
+- class => 'ticket-info-basics',
++ class => 'ticket-info-basics',
++ data => { 'inline-edit-behavior' => 1 },
++ (($can_modify || $can_modify_cf) && $modify_behavior =~ /^(link|click)$/ ? (titleright_raw => $modify_basics) : ()),
++ class => (join " ", ($modify_behavior eq 'always' ? 'editing' : ())),
++ data => { 'inline-edit-behavior' => $modify_behavior },
+ &>
+- <div>
++% unless ($modify_behavior eq 'always') {
++ <div class="inline-edit-display">
+ % if (my $constituency = RT::IR->ConstituencyFor($Ticket)) {
+- <div class="form-row">
+- <div class="label col-3">
+- <% loc("Constituency") %>:
+- </div>
+- <div class="value col-9">
+- <span class="current-value"><% $constituency %></span>
+- </div>
++ <div class="form-row">
++ <div class="label col-3">
++ <% loc("Constituency") %>:
++ </div>
++ <div class="value col-9">
++ <span class="current-value"><% $constituency %></span>
+ </div>
++ </div>
% }
+- <div class="form-row">
+- <div class="label col-3">
+- <% loc("Status") %>:
+- </div>
+- <div class="value col-9">
+- <span class="current-value"><% $Ticket->Status %></span>
+- </div>
++ <div class="form-row">
++ <div class="label col-3">
++ <% loc("Status") %>:
+ </div>
++ <div class="value col-9">
++ <span class="current-value"><% $Ticket->Status %></span>
++ </div>
++ </div>
+ % if ( !$Ticket->QueueObj->SLADisabled ) {
+- <div class="form-row">
+- <div class="label col-3">
+- <&|/l&>SLA</&>:
+- </div>
+- <div class="value col-9">
+- <span class="current-value"><% loc($Ticket->SLA) %></span>
+- </div>
++ <div class="form-row">
++ <div class="label col-3">
++ <&|/l&>SLA</&>:
+ </div>
++ <div class="value col-9">
++ <span class="current-value"><% loc($Ticket->SLA) %></span>
++ </div>
++ </div>
+ % }
+- <div class="form-row">
+- <div class="label col-3">
+- <% loc("Incident") %>:
+- </div>
+- <div class="value col-9">
+- <& /RTIR/Elements/ShowIncidents, Ticket => $Ticket &>
+- </div>
++ <div class="form-row">
++ <div class="label col-3">
++ <% loc("Incident") %>:
+ </div>
+- <div class="form-row">
+- <div class="label col-3">
+- <&|/l&>Time Worked</&>:
+- </div>
+- <div class="value col-9">
+- <span class="current-value"><%loc('[_1] min', $TimeWorked)%></span>
+- </div>
++ <div class="value col-9">
++ <& /RTIR/Elements/ShowIncidents, Ticket => $Ticket, InlineEdit => 0 &>
++ </div>
++ </div>
++ <div class="form-row">
++ <div class="label col-3">
++ <&|/l&>Time Worked</&>:
++ </div>
++ <div class="value col-9">
++ <span class="current-value"><%loc('[_1] min', $TimeWorked)%></span>
++ </div>
++ </div>
++
++ <& /Elements/ShowCustomFields, Grouping => 'Basics', Object => $Ticket, Table => 0 &>
++ </div>
++% }
++% if ($modify_behavior ne 'hide') {
++ <form class="inline-edit" action="<%RT->Config->Get('WebPath')%>/RTIR/Display.html" method="post" enctype="multipart/form-data">
++ <input type="hidden" class="hidden" name="id" value="<% $Ticket->id %>" />
++
++ <div class="form-row">
++ <div class="label col-3">
++ <&|/l&>Subject</&>:
+ </div>
++ <div class="value col-9">
++ <input class="form-control" type="text" name="Subject" value="<% $ARGS{'Subject'} || $Ticket->Subject %>" />
++ </div>
++ </div>
+
+- <& /Elements/ShowCustomFields, Grouping => 'Basics', Object => $Ticket, Table => 0 &>
++ <div class="form-row">
++ <div class="label col-3">
++ <% loc("Status") %>:
++ </div>
++ <div class="value col-9">
++% unless ( RT::IR->IsCountermeasureQueue($Ticket->QueueObj) ) {
++ <span class="current-value form-control"><% loc($Ticket->Status) %></span>
++% }
++% else {
++ <& /Ticket/Elements/SelectStatus,
++ Name => 'Status',
++ Object => $Ticket->QueueObj,
++ DefaultValue => 0,
++ Default => $ARGS{'Status'} || $Ticket->Status,
++ &>
++% }
++ </div>
++ </div>
+
++ <div class="form-row">
++ <div class="label col-3">
++ <&|/l&>Owner</&>:
++ </div>
++ <div class="value col-9">
++ <& /Elements/SelectOwner,
++ Name => 'Owner',
++ Default => $ARGS{'Owner'} || $Ticket->Owner,
++ TicketObj => $Ticket,
++ QueueObj => $Ticket->QueueObj,
++ &>
++ </div>
+ </div>
+
++ <div class="form-row">
++ <div class="label col-3">
++ <&|/l&>Queue</&>:
++ </div>
++ <div class="value col-9">
++ <& /RTIR/Elements/SelectRTIRQueue,
++ Name => 'Queue',
++ Default => $ARGS{'Queue'} || $Ticket->Queue,
++ TicketObj => $Ticket, Lifecycle => $Ticket->QueueObj->Lifecycle,
++ LimitToConstituency => ($m->{'RTIR_ConstituencyFilter'} || RT::IR->StrictConstituencyLinking) ? 1 : 0,
++ Constituency => RT::IR->ConstituencyFor($Ticket)
++ &>
++ </div>
++ </div>
++
++% if ( !$Ticket->QueueObj->SLADisabled ) {
++ <div class="form-row">
++ <div class="label col-3">
++ <&|/l&>SLA</&>:
++ </div>
++ <div class="value col-9">
++ <& /Elements/SelectSLA, Default => $Ticket->SLA, TicketObj => $Ticket &>
++ </div>
++ </div>
++% }
++ <div class="form-row">
++ <div class="label col-3">
++ <% loc("Incident") %>:
++ </div>
++ <div class="value col-9">
++ <& /RTIR/Elements/ShowIncidents, Ticket => $Ticket, InlineEdit => 0 &>
++ </div>
++ </div>
++ <div class="form-row">
++ <div class="label col-3">
++ <&|/l&>Time Worked</&>:
++ </div>
++ <div class="value col-9">
++ <& /Elements/EditTimeValue,
++ Name => 'TimeWorked',
++ Default => $ARGS{'TimeWorked'} || $Ticket->TimeWorked || '',
++ Ticket => $Ticket
++ &>
++ </div>
++ </div>
++
++ <& /Elements/EditCustomFields, Grouping => 'Basics', Object => $Ticket, Table => 0 &>
++
++ <div class="form-row">
++ <div class="col-12 text-right">
++ <input type="submit" class="button btn btn-primary" value="<&|/l&>Save</&>" />
++ </div>
++ </div>
++
++ </form>
++% }
</&>
-<& /Elements/ShowCustomFieldCustomGroupings,
@@ -19,14 +234,107 @@
<& /RTIR/Elements/ShowArticles, Ticket => $Ticket &>
@@
+ <div class="boxcontainer col-md-6">
+ % $m->callback( %ARGS, Ticket => $Ticket, CallbackName => 'RightColumnStart' );
+
++<%PERL>
++ my $people_url = RT->Config->Get('WebPath')."/Ticket/ModifyPeople.html?id=".$Ticket->Id;
++ my $people_inline = sprintf( $modify_inline, $m->interp->apply_escapes( $people_url, 'h' ) );
++ my $people_behavior = $inline_edit_behavior{People} || $inline_edit_behavior{_default} || 'link';
++</%PERL>
++
+ <&| /Widgets/TitleBox,
+- title => loc('People'),
+- title_href => RT::IR->HREFTo("Edit.html?id=". $Ticket->Id),
+- class => 'ticket-info-people',
++ title => loc('People'),
++ title_href => RT->Config->Get('WebPath')."/RTIR/Edit.html?id=".$Ticket->Id,
++ class => (join " ", 'ticket-info-people', ($people_behavior eq 'always' ? 'editing' : ())),
++ (($can_modify || $can_modify_people) && $people_behavior =~ /^(link|click)$/ ? (titleright_raw => $people_inline) : ()),
++ data => { 'inline-edit-behavior' => $people_behavior },
+ &>
++
++% unless ($people_behavior eq 'always') {
++ <div class="inline-edit-display">
+ <& /RTIR/Elements/ShowPeople, Ticket => $Ticket &>
++ </div>
++% }
++% if ($people_behavior ne 'hide') {
++ <form class="inline-edit" action="<%RT->Config->Get('WebPath')%>/RTIR/Display.html" method="post" enctype="multipart/form-data">
++ <input type="hidden" class="hidden" name="id" value="<% $Ticket->id %>" />
++ <& /RTIR/Elements/EditPeople, Ticket => $Ticket &>
++ <div class="form-row">
++ <div class="col-12 text-right">
++ <input type="submit" class="button btn btn-primary" value="<&|/l&>Save</&>" />
++ </div>
++ </div>
++ </form>
++% }
+ </&>
+- <&| /Widgets/TitleBox, title => loc("Dates"),
+- title_href => RT::IR->HREFTo("Edit.html?id=". $Ticket->Id),
++
++<%PERL>
++ my $dates_url = RT->Config->Get('WebPath')."/Ticket/ModifyDates.html?id=".$Ticket->Id;
++ my $dates_inline = sprintf( $modify_inline, $m->interp->apply_escapes( $dates_url, 'h' ) );
++ my $dates_behavior = $inline_edit_behavior{Dates} || $inline_edit_behavior{_default} || 'link';
++</%PERL>
++
++ <&| /Widgets/TitleBox,
++ title => loc("Dates"),
++ ($can_modify ? (title_href => $dates_url) : ()),
+ class => 'ticket-info-dates',
++ ($can_modify && $dates_behavior =~ /^(link|click)$/ ? (titleright_raw => $dates_inline) : ()),
++ data => { 'inline-edit-behavior' => $dates_behavior },
+ &>
+- <& /RTIR/Elements/ShowDates, Ticket => $Ticket &>
++% unless ($modify_behavior eq 'always') {
++ <div class="inline-edit-display">
++ <& /RTIR/Elements/ShowDates, Ticket => $Ticket &>
++ </div>
++% }
++% if ($modify_behavior ne 'hide') {
++ <form class="inline-edit" action="<%RT->Config->Get('WebPath')%>/RTIR/Display.html" method="post" enctype="multipart/form-data">
++ <input type="hidden" class="hidden" name="id" value="<% $Ticket->id %>" />
++ <& /Ticket/Elements/EditDates, TicketObj => $Ticket &>
++ <div class="form-row">
++ <div class="col-12 text-right">
++ <input type="submit" class="button btn btn-primary" value="<&|/l&>Save</&>" />
++ </div>
++ </div>
++ </form>
++% }
+ </&>
+ % $m->callback( %ARGS, Ticket => $Ticket, CallbackName => 'BeforeRequestor' );
+ <br />
+@@
+ $QueueObj->Load($Queue) || Abort(loc("Queue could not be loaded."));
+ }
+
++my $edit_label = $m->interp->apply_escapes( loc("Edit"), 'h' );
++my $cancel_label = $m->interp->apply_escapes( loc("Cancel"), 'h' );
++
++my %inline_edit_behavior;
++if (RT->Config->Get('InlineEditPanelBehavior')) {
++ %inline_edit_behavior = %{ RT->Config->Get('InlineEditPanelBehavior')->{'RT::Ticket'} || {} };
++}
++
++my $can_modify = $Ticket->CurrentUserHasRight( 'ModifyTicket' );
++my $can_modify_cf = $Ticket->CurrentUserHasRight( 'ModifyCustomField' );
++my $can_modify_people = $Ticket->CurrentUserHasRight( 'Watch' ) || $Ticket->CurrentUserHasRight( 'WatchAsAdminCc' );
++
+ my $Type = RT::IR::TicketType( Lifecycle => $QueueObj->Lifecycle );
+ # If it's not an RTIR ticket type, just show the regular
+ # RT ticket display page
+@@
+ push @results, ProcessUpdateMessage( TicketObj => $Ticket, ARGSRef => \%ARGS, Actions => \@results );
push @results, ProcessTicketBasics( TicketObj => $Ticket, ARGSRef => \%ARGS );
-
+ push @results, ProcessObjectCustomFieldUpdates( ARGSRef => \%ARGS, Object => $Ticket );
-+
++ push @results, ProcessTicketWatchers(ARGSRef => \%ARGS, TicketObj => $Ticket );
+
my $strict_acl = RT->Config->Set( StrictLinkACL => 0 );
push @results, ProcessTicketLinks( TicketObj => $Ticket, ARGSRef => \%ARGS );
- RT->Config->Set( StrictLinkACL => $strict_acl );
diff --git a/html/RTIR/Elements/ShowCustomFieldCustomGroupings b/html/RTIR/Elements/ShowCustomFieldCustomGroupings
new file mode 100644
3: 88a45696 < -: ------- Add inline edit for peoples portlet
4: 1b471554 < -: ------- Add inline edit for dates portlet
-: ------- > 2: fdbb42b1 Add inline edit to incident Display.html page
More information about the rt-commit
mailing list