[Rt-commit] rt branch, 5.0/reverse-transaction-history, created. rt-5.0.0alpha1-98-g1a7ca57fea

Jim Brandt jbrandt at bestpractical.com
Thu Apr 9 17:08:52 EDT 2020


The branch, 5.0/reverse-transaction-history has been created
        at  1a7ca57feaefbd7a8d3148e9a920a8ef57a0fede (commit)

- Log -----------------------------------------------------------------
commit 67ee644ce566d6ff61c4cb3dc03b31fbd5c96c23
Author: michel <michel at bestpractical.com>
Date:   Fri Mar 13 22:03:00 2020 +0100

    Make "Select one value" custom fields default to "Dropdown".

diff --git a/lib/RT/CustomField.pm b/lib/RT/CustomField.pm
index 9c91e1cb92..b8bfbaa480 100644
--- a/lib/RT/CustomField.pm
+++ b/lib/RT/CustomField.pm
@@ -84,8 +84,8 @@ our %FieldTypes = (
                 'Select box',              # loc
                 'List',                    # loc
             ],
-            single => [ 'Select box',              # loc
-                        'Dropdown',                # loc
+            single => [ 'Dropdown',                # loc
+                        'Select box',              # loc
                         'List',                    # loc
                       ]
         },

commit ef0b83a14d766bd13d29878d32d0a4118c0c85a3
Author: michel <michel at bestpractical.com>
Date:   Fri Mar 20 19:41:10 2020 +0100

    Bug fix: use the right CurrentUserCanSetOwner return value.
    
    CurrentUserCanSetOwner returns ($ok, $msg), not a boolean.

diff --git a/lib/RT/Interface/Web/MenuBuilder.pm b/lib/RT/Interface/Web/MenuBuilder.pm
index 8852112603..b99063629d 100644
--- a/lib/RT/Interface/Web/MenuBuilder.pm
+++ b/lib/RT/Interface/Web/MenuBuilder.pm
@@ -319,7 +319,8 @@ sub BuildMainNav {
                 my $actions = $page->child( actions => title => loc('Actions'), sort_order  => 95 );
 
                 my %can = %{ $obj->CurrentUser->PrincipalObj->HasRights( Object => $obj ) };
-                $can{'_ModifyOwner'} = $obj->CurrentUserCanSetOwner();
+                # since CurrentUserCanSetOwner returns ($ok, $msg), the parens ensure that $can{} gets $ok
+                ( $can{'_ModifyOwner'} ) = $obj->CurrentUserCanSetOwner();
                 my $can = sub {
                     unless ($_[0] eq 'ExecuteCode') {
                         return $can{$_[0]} || $can{'SuperUser'};
diff --git a/share/html/Ticket/Elements/ShowSummary b/share/html/Ticket/Elements/ShowSummary
index 0c5ffdab9b..f8638caa5d 100644
--- a/share/html/Ticket/Elements/ShowSummary
+++ b/share/html/Ticket/Elements/ShowSummary
@@ -226,7 +226,7 @@ $InlineEdit => 0
 <%INIT>
 my $can_modify = $Ticket->CurrentUserHasRight('ModifyTicket');
 my $can_modify_cf = $Ticket->CurrentUserHasRight('ModifyCustomField');
-my $can_modify_owner = $Ticket->CurrentUserCanSetOwner();
+my ($can_modify_owner) = $Ticket->CurrentUserCanSetOwner();
 my $can_modify_people = $Ticket->CurrentUserHasRight('Watch')
                      || $Ticket->CurrentUserHasRight('WatchAsAdminCc');
 

commit 0d14950bf40634a168980c4bfd6fd97d8bf73996
Author: michel <michel at bestpractical.com>
Date:   Fri Mar 20 20:14:41 2020 +0100

    Hide the pencil icon if the user doesn't have the rights.
    
    On the ticket display page, only display the pencil icon if the
    user can modify data in the portlet.

diff --git a/share/html/Ticket/Elements/ShowSummary b/share/html/Ticket/Elements/ShowSummary
index f8638caa5d..2b4d0f958c 100644
--- a/share/html/Ticket/Elements/ShowSummary
+++ b/share/html/Ticket/Elements/ShowSummary
@@ -64,7 +64,7 @@ my $modify_behavior = $InlineEdit ? ($inline_edit_behavior{Basics} || $inline_ed
 
     <&| /Widgets/TitleBox, title => loc('The Basics'),
         (($can_modify || $can_modify_cf) ? (title_href => $modify_url) : ()),
-        ($modify_behavior =~ /^(link|click)$/ ? (titleright_raw => $modify_basics) : ()),
+        (($can_modify || $can_modify_cf) && $modify_behavior =~ /^(link|click)$/ ? (titleright_raw => $modify_basics) : ()),
         class => (join " ", 'ticket-info-basics', ($modify_behavior eq 'always' ? 'editing' : ())),
         data => { 'inline-edit-behavior' => $modify_behavior },
     &>
@@ -90,7 +90,7 @@ my $modify_behavior = $InlineEdit ? ($inline_edit_behavior{Basics} || $inline_ed
     <& /Elements/ShowCustomFieldCustomGroupings,
         Object       => $Ticket,
         title_href   => ($can_modify || $can_modify_cf) ? RT->Config->Get('WebPath')."/Ticket/Modify.html" : "",
-        InlineEdit   => $InlineEdit,
+        InlineEdit   => ($can_modify || $can_modify_cf) ? $InlineEdit : 0,
         &>
 
 <%PERL>
@@ -101,7 +101,7 @@ my $people_behavior = $InlineEdit ? ($inline_edit_behavior{People} || $inline_ed
     <&| /Widgets/TitleBox, title => loc('People'),
         (($can_modify || $can_modify_owner || $can_modify_people) ? (title_href => RT->Config->Get('WebPath')."/Ticket/ModifyPeople.html?id=".$Ticket->Id) : ()),
         class => (join " ", 'ticket-info-people', ($people_behavior eq 'always' ? 'editing' : ())),
-        ($people_behavior =~ /^(link|click)$/ ? (titleright_raw => $people_inline) : ()),
+        (($can_modify || $can_modify_owner || $can_modify_people) && $people_behavior =~ /^(link|click)$/ ? (titleright_raw => $people_inline) : ()),
         data => { 'inline-edit-behavior' => $people_behavior },
     &>
 %       unless ($people_behavior eq 'always') {
@@ -150,7 +150,7 @@ my $dates_behavior = $InlineEdit ? ($inline_edit_behavior{Dates} || $inline_edit
     <&| /Widgets/TitleBox, title => loc("Dates"),
         ($can_modify ? (title_href => $dates_url) : ()),
         class => (join " ", 'ticket-info-dates', ($dates_behavior eq 'always' ? 'editing' : ())),
-        ($dates_behavior =~ /^(link|click)$/ ? (titleright_raw => $dates_inline) : ()),
+        ($can_modify && $dates_behavior =~ /^(link|click)$/ ? (titleright_raw => $dates_inline) : ()),
         data => { 'inline-edit-behavior' => $dates_behavior },
     &>
 %       unless ($dates_behavior eq 'always') {
@@ -180,7 +180,7 @@ my $alt = loc('Graph ticket links');
 my $links_graph = '<a href="' . RT->Config->Get('WebPath') . '/Ticket/Graphs/index.html?id=' . $Ticket->id . '"><span class="fas fa-project-diagram icon-bordered fa-2x" alt="' . $alt . '" data-toggle="tooltip" data-placement="top" data-original-title="' . $alt . '"></span></a>';
 
 my $links_titleright = join ' ',
-    ($links_behavior =~ /^(link|click)$/ ? ($links_inline) : ()),
+    ($can_modify && $links_behavior =~ /^(link|click)$/ ? ($links_inline) : ()),
     (RT->Config->Get('DisableGraphViz') ? () : $links_graph);
 my @extra;
 push @extra, (titleright_raw => $links_titleright) if $links_titleright;

commit 006991497733d6177449e6f5a209815f84cd51da
Merge: 19cdc5650c 0d14950bf4
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Thu Apr 9 01:41:35 2020 +0800

    Merge branch '5.0/hide-pencil-button-if-no-rights' into 5.0-trunk


commit 381f2e33b73ce11d29175709615a45b9af9fdfe1
Author: michel <michel at bestpractical.com>
Date:   Thu Feb 13 17:06:29 2020 +0100

    Denser layout for CreateTicket portlet on user summary page
    
    Thus in normal size screens, we could have the label, dropdown and
    submit button in the same row, just like RT 4.

diff --git a/share/html/User/Elements/Portlets/CreateTicket b/share/html/User/Elements/Portlets/CreateTicket
index c26481aa01..4a63810d2e 100644
--- a/share/html/User/Elements/Portlets/CreateTicket
+++ b/share/html/User/Elements/Portlets/CreateTicket
@@ -47,10 +47,18 @@
 %# END BPS TAGGED BLOCK }}}
 <&| /Widgets/TitleBox, title => loc('Quick ticket creation'), class => "user create-ticket" &>
 <form action="<%RT->Config->Get('WebPath')%>/Ticket/Create.html">
-<&|/l&>Create a ticket with this user as the Requestor in Queue: </&>
 <input type="hidden" name="Requestors" value="<%$User->EmailAddress%>">
-<& /Elements/SelectNewTicketQueue &>
-<input type="submit" name="CreateTicket" value="<&|/l&>Create</&>" class="button btn btn-primary form-control">
+  <div class="form-row">
+    <div class="col-auto label">
+      <&|/l&>Create a ticket with this user as the Requestor in Queue</&>:
+    </div>
+    <div class="col-auto">
+      <& /Elements/SelectNewTicketQueue &>
+    </div>
+    <div class="col-auto">
+      <input type="submit" name="CreateTicket" value="<&|/l&>Create</&>" class="button btn btn-primary form-control">
+    </div>
+  </div>
 </form>
 </&>
 <%ARGS>

commit 252620e6946daefb3e733084a42751421c6ea353
Merge: 0069914977 381f2e33b7
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Thu Apr 9 02:30:22 2020 +0800

    Merge branch '4.6/line-up-quick-ticket-form' into 5.0-trunk


commit 7584ff8a8ea3d223e7bea46a468ecdd477ee5466
Author: michel <michel at bestpractical.com>
Date:   Fri Mar 13 20:27:09 2020 +0100

    Add the queue name to the ticket update page.
    
    The queue name is on the first line of the Ticket and Transaction portlet.

diff --git a/share/html/Ticket/Update.html b/share/html/Ticket/Update.html
index 645394ab46..100c7cb9fc 100644
--- a/share/html/Ticket/Update.html
+++ b/share/html/Ticket/Update.html
@@ -72,6 +72,14 @@
 % if (!$skip) {
 <input type="hidden" class="hidden" name="id" value="<%$TicketObj->Id%>" />
 % }
+
+% if ( $TicketObj->CurrentUserHasRight('SeeQueue') ) {
+<div class="form-row">
+  <div class="label col-md-3"><&|/l&>Queue</&>:</div>
+  <div class="value col-md-9"><span class="current-value form-control"><% $TicketObj->QueueObj->Name %></span></div>
+</div>
+% }
+
 <div class="form-row"><div class="label col-md-3"><&|/l&>Update Type</&>:</div>
 <div class="value col-md-9"><select class="form-control selectpicker" name="UpdateType" id="UpdateType">
 % if ($CanComment) {

commit 29ef749d4726a9feda231443233523e81670f356
Merge: 252620e694 7584ff8a8e
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Thu Apr 9 04:35:59 2020 +0800

    Merge branch '5.0/display-queue-on-ticket-update-page' into 5.0-trunk


commit b5e8c097730313ef703a5b8c4e0f086703d44d07
Author: michel <michel at bestpractical.com>
Date:   Fri Mar 13 22:05:48 2020 +0100

    Update tests for the change of default render type of select custom fields

diff --git a/t/api/cf_render_type.t b/t/api/cf_render_type.t
index ac090495ef..b9681d006e 100644
--- a/t/api/cf_render_type.t
+++ b/t/api/cf_render_type.t
@@ -15,10 +15,10 @@ diag "single select";
 );
 ok( $id, $msg );
 
-is( $cf->RenderType, 'Select box', 'default render type is Select box' );
-( $ret, $msg ) = $cf->SetRenderType('Dropdown');
-ok( $ret, 'changed to Dropdown' );
-is( $cf->RenderType, 'Dropdown', 'render type is indeed updated' );
+is( $cf->RenderType, 'Dropdown', 'default render type is Dropdown' );
+( $ret, $msg ) = $cf->SetRenderType('Select box');
+ok( $ret, 'changed to Select box' );
+is( $cf->RenderType, 'Select box', 'render type is indeed updated' );
 
 ( $ret, $msg ) = $cf->SetRenderType('List');
 ok( $ret, 'changed to List' );

commit 2db4df336e793eb4351f0ebe267603bb9e8c0374
Merge: 29ef749d47 b5e8c09773
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Thu Apr 9 04:52:53 2020 +0800

    Merge branch '5.0/select-one-cf-defaults-to-dropdown' into 5.0-trunk


commit b9af312342fdc86c277897c9f7668e7141e9c6cb
Author: Blaine Motsinger <blaine at bestpractical.com>
Date:   Fri Mar 13 19:04:34 2020 -0500

    Fix keyboard shortcut highlight and scroll
    
    The keyboard shortcut highlight border-left syntax was missing the
    "solid" definition so was not being displayed when selected.
    
    Additionally, the function to scroll the selected element into view
    was breaking on the last row of a ticket collection, since
    obj.next().height() was undefined, it caused currentItemSize to be NaN.

diff --git a/share/static/css/elevator-light/keyboard-shortcuts.css b/share/static/css/elevator-light/keyboard-shortcuts.css
index aa16e55fa1..2b8fee2c5f 100644
--- a/share/static/css/elevator-light/keyboard-shortcuts.css
+++ b/share/static/css/elevator-light/keyboard-shortcuts.css
@@ -25,6 +25,5 @@
 }
 
 .ticket-list .selected-row tr {
-    border-left-color: #3858a3;
-    border-left-width: 3px;
+    border-left: 3px solid #3858a3;
 }
diff --git a/share/static/js/util.js b/share/static/js/util.js
index 6ee838aa63..fdf6a1941e 100644
--- a/share/static/js/util.js
+++ b/share/static/js/util.js
@@ -935,7 +935,7 @@ function scrollToJQueryObject(obj) {
     var viewportHeight = jQuery(window).height(),
         currentScrollPosition = jQuery(window).scrollTop(),
         currentItemPosition = obj.offset().top,
-        currentItemSize = obj.height() + obj.next().height();
+        currentItemSize = obj.height() + ( obj.next().height() ? obj.next().height() : 0 );
 
     if (currentScrollPosition + viewportHeight < currentItemPosition + currentItemSize) {
         jQuery('html, body').scrollTop(currentItemPosition - viewportHeight + currentItemSize);

commit 7595dd6b3ec07626ac1ae6b9e6cb3ab8a4de0a0e
Author: Blaine Motsinger <blaine at bestpractical.com>
Date:   Mon Mar 16 12:37:23 2020 -0500

    Change keyboard shortcut color to grey background
    
    Previously the keyboard shortcut highlight added a left border
    which made the row shift to the right when selected.  This commit
    switches from a left border to a background color change to make
    the row no longer shift.

diff --git a/share/static/css/elevator-light/keyboard-shortcuts.css b/share/static/css/elevator-light/keyboard-shortcuts.css
index 2b8fee2c5f..f81b9fef44 100644
--- a/share/static/css/elevator-light/keyboard-shortcuts.css
+++ b/share/static/css/elevator-light/keyboard-shortcuts.css
@@ -25,5 +25,5 @@
 }
 
 .ticket-list .selected-row tr {
-    border-left: 3px solid #3858a3;
+    background-color: rgba(156, 156, 156, 0.35);
 }

commit 07f207984ba101627ca6b25792a0cc4b2221bd18
Merge: 2db4df336e 7595dd6b3e
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Thu Apr 9 20:31:07 2020 +0800

    Merge branch '5.0/fix-keyboard-shortcuts' into 5.0-trunk


commit d12942f0a1266a14743d7a55a88d23ec57ad7027
Author: michel <michel at bestpractical.com>
Date:   Tue Mar 17 18:54:34 2020 +0100

    Display custom role hints as tooltips
    
    This makes it consistent with hints for other fields.

diff --git a/share/html/Elements/SingleUserRoleInput b/share/html/Elements/SingleUserRoleInput
index fdb8fff735..d628b2f6ca 100644
--- a/share/html/Elements/SingleUserRoleInput
+++ b/share/html/Elements/SingleUserRoleInput
@@ -49,7 +49,6 @@
     Name => $role->GroupType,
     Size => $Size,
     ($ShowPlaceholder ? (Placeholder => loc(RT->Nobody->Name)) : ()),
-    ($ShowEntryHint ? (EntryHint => $role->EntryHint) : ()),
     Default => $Default,
     Autocomplete => 1,
     AutocompleteReturn => "Name",
@@ -73,6 +72,5 @@ $Size => undef
 $Default => undef
 $User => undef
 $Ticket => undef
-$ShowEntryHint => 1
 $ShowPlaceholder => 1
 </%ARGS>
diff --git a/share/html/Ticket/Elements/EditBasics b/share/html/Ticket/Elements/EditBasics
index 5578474ac9..16040d6e34 100644
--- a/share/html/Ticket/Elements/EditBasics
+++ b/share/html/Ticket/Elements/EditBasics
@@ -150,6 +150,7 @@ unless ($ExcludeCustomRoles) {
     while (my $role = $roles->Next) {
         push @role_fields, {
             name => $role->Name,
+            hint => $role->EntryHint,
             comp => '/Elements/SingleUserRoleInput',
             args => {
                 role    => $role,
@@ -185,7 +186,11 @@ for my $field (@fields) {
 % for my $field (@fields) {
 %# Prefer input name as css class, e.g. "FinalPriority" instead of "Final_Priority"
   <div class="form-row <% CSSClass( $field->{args}{Name} || $field->{'name'} ) %>">
-    <div class="label col-md-3"><% loc($field->{'name'}) %>:</div>
+    <div class="label col-md-3"><% loc($field->{'name'}) %>:
+%   if ( my $hint = $field->{hint} ) {
+      <span class="far fa-question-circle icon-helper" data-toggle="tooltip" data-placement="top" data-original-title="<% $hint %>"></span>
+%   }
+    </div>
     <div class="value col-md-9"><% $field->{'html'} |n %></div>
   </div>
 % }
diff --git a/share/html/Ticket/Elements/EditPeople b/share/html/Ticket/Elements/EditPeople
index 7899187d4e..40971b4cc1 100644
--- a/share/html/Ticket/Elements/EditPeople
+++ b/share/html/Ticket/Elements/EditPeople
@@ -88,7 +88,11 @@
 % $m->callback( CustomRoles => $single_roles, SingleRoles => 1, Ticket => $Ticket, %ARGS, CallbackName => 'ModifyCustomRoles' );
 % while (my $role = $single_roles->Next) {
 <div class="form-row">
-  <div class="col-md-3 label"><% $role->Name %>:</div>
+  <div class="col-md-3 label"><% $role->Name %>:
+% if ( my $hint = $role->EntryHint ) {
+    <span class="far fa-question-circle icon-helper" data-toggle="tooltip" data-placement="top" data-original-title="<% $hint %>"></span>
+% }
+  </div>
   <div class="col-md-6 value"><& /Elements/SingleUserRoleInput, role => $role, Ticket => $Ticket &></div>
 </div>
 
@@ -139,7 +143,11 @@
   <div class="col-md-3 label">
     <div class="custom-control custom-checkbox">
       <input type="checkbox" id="delete-<% $role->id %>-checkbox" class="checkbox custom-control-input" onclick="setCheckbox(this, /^Ticket-DeleteWatcher-Type-RT::CustomRole-<% $role->Id %>-/)">
-      <label class="custom-control-label" for="delete-<% $role->id %>-checkbox"><% $role->Name %>:</label>
+      <label class="custom-control-label" for="delete-<% $role->id %>-checkbox"><% $role->Name %>:
+%     if ( my $hint = $role->EntryHint ) {
+        <span class="far fa-question-circle icon-helper" data-toggle="tooltip" data-placement="top" data-original-title="<% $hint %>"></span>
+%     }
+      </label>
     </div>
   </div>
   <div class="col-md-6 value"><& EditWatchers, TicketObj => $Ticket, Watchers => $group &></div>
diff --git a/share/html/Ticket/Elements/EditPeopleInline b/share/html/Ticket/Elements/EditPeopleInline
index 620a018708..52983377a1 100644
--- a/share/html/Ticket/Elements/EditPeopleInline
+++ b/share/html/Ticket/Elements/EditPeopleInline
@@ -57,7 +57,10 @@
 % $single_roles->LimitToSingleValue;
 % while (my $role = $single_roles->Next) {
 <tr>
-  <td class="label"><% $role->Name %>:</td>
+  <td class="label"><% $role->Name %>:
+% if ( my $hint = $role->EntryHint ) {
+    <span class="far fa-question-circle icon-helper" data-toggle="tooltip" data-placement="top" data-original-title="<% $hint %>"></span>
+% }
   <td class="value"><& /Elements/SingleUserRoleInput, role => $role, Ticket => $Ticket &></td>
 </tr>
 
@@ -90,7 +93,11 @@
 % my $group = $Ticket->RoleGroup($role->GroupType);
 % if ($group->Id && $group->MembersObj->Count) {
 <tr>
-  <td class="label"><% $role->Name %>:</td>
+  <td class="label"><% $role->Name %>:
+% if ( my $hint = $role->EntryHint ) {
+    <span class="far fa-question-circle icon-helper" data-toggle="tooltip" data-placement="top" data-original-title="<% $hint %>"></span>
+% }
+  </td>
   <td class="value"><& EditWatchers, TicketObj => $Ticket, Watchers => $group &></td>
 </tr>
 % }

commit c0d50734a65d59ae3879166b84ecde5159db8f43
Merge: 07f207984b d12942f0a1
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Thu Apr 9 21:27:46 2020 +0800

    Merge branch '5.0/display-custom-role-hint' into 5.0-trunk


commit 9867e327f844bc51e7fca2a2f2926817d9a8966e
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Thu Apr 9 22:14:58 2020 +0800

    Migrate EditPeopleInline to new elevator themes

diff --git a/share/html/Ticket/Elements/EditPeopleInline b/share/html/Ticket/Elements/EditPeopleInline
index 52983377a1..1866dbe816 100644
--- a/share/html/Ticket/Elements/EditPeopleInline
+++ b/share/html/Ticket/Elements/EditPeopleInline
@@ -45,46 +45,51 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<i><&|/l&>Current watchers</&>:</i>
-<table width="100%">
-<tr>
-  <td class="label"><&|/l&>Owner</&>:</td>
-  <td class="value"><& /Elements/SelectOwner, Name => 'Owner', QueueObj => $Ticket->QueueObj, TicketObj => $Ticket, Default => $Ticket->OwnerObj->Id, DefaultValue => 0&></td>
-</tr>
+<div class="form-row">
+  <div class="col-md-12">
+    <i><&|/l&>Current watchers</&>:</i>
+  </div>
+</div>
+
+<div class="form-row">
+  <div class="col-md-3 label"><&|/l&>Owner</&>:</div>
+  <div class="col-md-6 value"><& /Elements/SelectOwner, Name => 'Owner', QueueObj => $Ticket->QueueObj, TicketObj => $Ticket, Default => $Ticket->OwnerObj->Id, DefaultValue => 0&></div>
+</div>
 
 % my @role_fields;
 % my $single_roles = $Ticket->QueueObj->CustomRoles;
 % $single_roles->LimitToSingleValue;
 % while (my $role = $single_roles->Next) {
-<tr>
-  <td class="label"><% $role->Name %>:
+<div class="form-row">
+  <div class="col-md-3 label"><% $role->Name %>:
 % if ( my $hint = $role->EntryHint ) {
     <span class="far fa-question-circle icon-helper" data-toggle="tooltip" data-placement="top" data-original-title="<% $hint %>"></span>
 % }
-  <td class="value"><& /Elements/SingleUserRoleInput, role => $role, Ticket => $Ticket &></td>
-</tr>
+  </div>
+  <div class="col-md-6 value"><& /Elements/SingleUserRoleInput, role => $role, Ticket => $Ticket &></div>
+</div>
 
 % }
 
 % if ($Ticket->Requestors->MembersObj->Count) {
-<tr>
-  <td class="label"><&|/l&>Requestors</&>:</td>
-  <td class="value"><& EditWatchers, TicketObj => $Ticket, Watchers => $Ticket->Requestors &></td>
-</tr>
+<div class="form-row">
+  <div class="col-md-3 label"><&|/l&>Requestors</&>:</div>
+  <div class="col-md-6 value"><& EditWatchers, TicketObj => $Ticket, Watchers => $Ticket->Requestors &></div>
+</div>
 % }
 
 % if ($Ticket->Cc->MembersObj->Count) {
-<tr>
-  <td class="label"><&|/l&>Cc</&>:</td>
-  <td class="value"><& EditWatchers, TicketObj => $Ticket, Watchers => $Ticket->Cc &></td>
-</tr>
+<div class="form-row">
+  <div class="col-md-3 label"><&|/l&>Cc</&>:</div>
+  <div class="col-md-6 value"><& EditWatchers, TicketObj => $Ticket, Watchers => $Ticket->Cc &></div>
+</div>
 % }
 
 % if ($Ticket->AdminCc->MembersObj->Count) {
-<tr>
-  <td class="label"><&|/l&>AdminCc</&>:</td>
-  <td class="value"><& EditWatchers, TicketObj => $Ticket, Watchers => $Ticket->AdminCc &></td>
-</tr>
+<div class="form-row">
+  <div class="col-md-3 label"><&|/l&>Admin Cc</&>:</div>
+  <div class="col-md-6 value"><& EditWatchers, TicketObj => $Ticket, Watchers => $Ticket->AdminCc &></div>
+</div>
 % }
 
 % my $multi_roles = $Ticket->QueueObj->CustomRoles;
@@ -92,28 +97,27 @@
 % while (my $role = $multi_roles->Next) {
 % my $group = $Ticket->RoleGroup($role->GroupType);
 % if ($group->Id && $group->MembersObj->Count) {
-<tr>
-  <td class="label"><% $role->Name %>:
+<div class="form-row">
+  <div class="col-md-3 label"><% $role->Name %>:
 % if ( my $hint = $role->EntryHint ) {
     <span class="far fa-question-circle icon-helper" data-toggle="tooltip" data-placement="top" data-original-title="<% $hint %>"></span>
 % }
-  </td>
-  <td class="value"><& EditWatchers, TicketObj => $Ticket, Watchers => $group &></td>
-</tr>
+  </div>
+  <div class="col-md-6 value"><& EditWatchers, TicketObj => $Ticket, Watchers => $group &></div>
+</div>
 % }
 % }
 
-<tr>
-  <td colspan="2">
+<div class="form-row">
+  <div class="col-md-12">
     <i><&|/l&>Add new watchers</&>:</i>
-    <& AddWatchers, Ticket => $Ticket, ShowLabel => 0 &>
-  </td>
-</tr>
+  </div>
+</div>
+
+<& AddWatchers, Ticket => $Ticket, ShowLabel => 0 &>
 
 <& /Elements/EditCustomFields, Object => $Ticket, Grouping => 'People', InTable => 1 &>
-</table>
 
 <%ARGS>
 $Ticket => undef
 </%ARGS>
-

commit 82cd02978c4223859ac60176be6892379255d9e2
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Thu Apr 9 22:21:32 2020 +0800

    Add checkboxes before multiple-role labels like modify people page
    
    This is an easier way to clear role members.

diff --git a/share/html/Ticket/Elements/EditPeopleInline b/share/html/Ticket/Elements/EditPeopleInline
index 1866dbe816..3fc46967ec 100644
--- a/share/html/Ticket/Elements/EditPeopleInline
+++ b/share/html/Ticket/Elements/EditPeopleInline
@@ -73,21 +73,36 @@
 
 % if ($Ticket->Requestors->MembersObj->Count) {
 <div class="form-row">
-  <div class="col-md-3 label"><&|/l&>Requestors</&>:</div>
+  <div class="col-md-3 label">
+    <div class="custom-control custom-checkbox">
+      <input type="checkbox" id="delete-requestors-checkbox" class="checkbox custom-control-input" onclick="setCheckbox(this, /^Ticket-DeleteWatcher-Type-Requestor-/)">
+      <label class="custom-control-label" for="delete-requestors-checkbox"><&|/l&>Requestors</&>:</label>
+    </div>
+  </div>
   <div class="col-md-6 value"><& EditWatchers, TicketObj => $Ticket, Watchers => $Ticket->Requestors &></div>
 </div>
 % }
 
 % if ($Ticket->Cc->MembersObj->Count) {
 <div class="form-row">
-  <div class="col-md-3 label"><&|/l&>Cc</&>:</div>
+  <div class="col-md-3 label">
+    <div class="custom-control custom-checkbox">
+      <input type="checkbox" id="delete-cc-checkbox" class="checkbox custom-control-input" onclick="setCheckbox(this, /^Ticket-DeleteWatcher-Type-Cc-/)">
+      <label class="custom-control-label" for="delete-cc-checkbox"><&|/l&>Cc</&>:</label>
+    </div>
+  </div>
   <div class="col-md-6 value"><& EditWatchers, TicketObj => $Ticket, Watchers => $Ticket->Cc &></div>
 </div>
 % }
 
 % if ($Ticket->AdminCc->MembersObj->Count) {
 <div class="form-row">
-  <div class="col-md-3 label"><&|/l&>Admin Cc</&>:</div>
+  <div class="col-md-3 label">
+    <div class="custom-control custom-checkbox">
+      <input type="checkbox" id="delete-admincc-checkbox" class="checkbox custom-control-input" onclick="setCheckbox(this, /^Ticket-DeleteWatcher-Type-AdminCc-/)">
+      <label class="custom-control-label" for="delete-admincc-checkbox"><&|/l&>Admin Cc</&>:</label>
+    </div>
+  </div>
   <div class="col-md-6 value"><& EditWatchers, TicketObj => $Ticket, Watchers => $Ticket->AdminCc &></div>
 </div>
 % }
@@ -98,10 +113,15 @@
 % my $group = $Ticket->RoleGroup($role->GroupType);
 % if ($group->Id && $group->MembersObj->Count) {
 <div class="form-row">
-  <div class="col-md-3 label"><% $role->Name %>:
-% if ( my $hint = $role->EntryHint ) {
-    <span class="far fa-question-circle icon-helper" data-toggle="tooltip" data-placement="top" data-original-title="<% $hint %>"></span>
-% }
+  <div class="col-md-3 label">
+    <div class="custom-control custom-checkbox">
+      <input type="checkbox" id="delete-<% $role->id %>-checkbox" class="checkbox custom-control-input" onclick="setCheckbox(this, /^Ticket-DeleteWatcher-Type-RT::CustomRole-<% $role->Id %>-/)">
+      <label class="custom-control-label" for="delete-<% $role->id %>-checkbox"><% $role->Name %>:
+%     if ( my $hint = $role->EntryHint ) {
+        <span class="far fa-question-circle icon-helper" data-toggle="tooltip" data-placement="top" data-original-title="<% $hint %>"></span>
+%     }
+      </label>
+    </div>
   </div>
   <div class="col-md-6 value"><& EditWatchers, TicketObj => $Ticket, Watchers => $group &></div>
 </div>

commit 2aedfd7638bc2c576a3a6cb342be2fa3568674c7
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Thu Apr 9 22:23:58 2020 +0800

    Respect custom role visibility and callbacks on modify people page

diff --git a/share/html/Ticket/Elements/EditPeopleInline b/share/html/Ticket/Elements/EditPeopleInline
index 3fc46967ec..2ab73a6671 100644
--- a/share/html/Ticket/Elements/EditPeopleInline
+++ b/share/html/Ticket/Elements/EditPeopleInline
@@ -59,6 +59,11 @@
 % my @role_fields;
 % my $single_roles = $Ticket->QueueObj->CustomRoles;
 % $single_roles->LimitToSingleValue;
+
+% my @hidden = $Ticket->QueueObj->HiddenCustomRoleIDsForURL('/Ticket/ModifyPeople.html');
+% $single_roles->Limit(FIELD => 'id', OPERATOR => 'NOT IN', VALUE => \@hidden) if @hidden;
+% $m->callback( CustomRoles => $single_roles, SingleRoles => 1, Ticket => $Ticket, %ARGS, CallbackName => 'ModifyCustomRoles', CallbackPage => '/Ticket/ModifyPeople.html' );
+
 % while (my $role = $single_roles->Next) {
 <div class="form-row">
   <div class="col-md-3 label"><% $role->Name %>:
@@ -109,6 +114,9 @@
 
 % my $multi_roles = $Ticket->QueueObj->CustomRoles;
 % $multi_roles->LimitToMultipleValue;
+% $multi_roles->Limit(FIELD => 'id', OPERATOR => 'NOT IN', VALUE => \@hidden) if @hidden;
+% $m->callback( CustomRoles => $multi_roles, SingleRoles => 0, Ticket => $Ticket, %ARGS, CallbackName => 'ModifyCustomRoles', CallbackPage => '/Ticket/ModifyPeople.html' );
+
 % while (my $role = $multi_roles->Next) {
 % my $group = $Ticket->RoleGroup($role->GroupType);
 % if ($group->Id && $group->MembersObj->Count) {

commit 4b0457b1dbb2a8a6e0a465c1f1e874dd544c4ee0
Author: Aaron Trevena <aaron at aarontrevena.co.uk>
Date:   Tue Nov 26 20:20:49 2019 +0000

    Add Create Ticket link to Home menu
    
    On most pages, the Create Ticket button is available in the title bar.
    However, when working on Assets or Articles, the Create button changes
    to Asset or Article leaving no obvious way to create a ticket.
    
    Add a Create Ticket link that is available anywhere in RT. Assets
    and Articles have their own menus with a similar Create link. Use
    the Home menu since RT doesn't have a stand-alone Ticket menu.

diff --git a/lib/RT/Interface/Web/MenuBuilder.pm b/lib/RT/Interface/Web/MenuBuilder.pm
index 5ce829c461..608064687a 100644
--- a/lib/RT/Interface/Web/MenuBuilder.pm
+++ b/lib/RT/Interface/Web/MenuBuilder.pm
@@ -92,6 +92,9 @@ sub BuildMainNav {
     }
 
     my $home = $top->child( home => title => loc('Homepage'), path => '/' );
+    $home->child( create_ticket => title => loc("Create Ticket"),
+                  path => "/Ticket/Create.html" );
+
     unless ($HTML::Mason::Commands::session{'dashboards_in_menu'}) {
         my $dashboards_in_menu = $current_user->UserObj->Preferences(
             'DashboardsInMenu',

commit 039eed17c11235b5680fa19d404e3a536070bc23
Merge: c0d50734a6 4b0457b1db
Author: Jim Brandt <jbrandt at bestpractical.com>
Date:   Thu Apr 9 13:47:36 2020 -0400

    Merge branch '5.0/create-ticket-link-in-menu' into 5.0-trunk


commit 1a7ca57feaefbd7a8d3148e9a920a8ef57a0fede
Merge: 039eed17c1 2aedfd7638
Author: Jim Brandt <jbrandt at bestpractical.com>
Date:   Thu Apr 9 15:03:30 2020 -0400

    Merge branch '5.0/edit-people-inline-theme' into 5.0-trunk


-----------------------------------------------------------------------


More information about the rt-commit mailing list