[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