[Rt-commit] rt branch, 4.6-theme/ticket-pages, repushed

Craig Kaiser craig at bestpractical.com
Wed May 8 19:38:23 EDT 2019


The branch 4.6-theme/ticket-pages was deleted and repushed:
       was 7a2d8741253585b35a248f778b9f331128d4a6dd
       now b51534875b71e48940be08f441bcc76759cb1862

  1: 7f13f0055 =   1: 7f13f0055 Allow for multiple base themes by avoiding showing any to the user
  2: 0ce97154b =   2: 0ce97154b Add unaltered copies of base and rudder themes to make responsive
  3: 565e91062 =   3: 565e91062 rudder-responsive imports base-responsive rather than base
  4: c151cf258 =   4: c151cf258 Make boxcontainer padding rules less demanding
  5: 45e22b27c =   5: 45e22b27c Make RT at a glance two-column layout responsive
  6: 66a41a296 =   6: 66a41a296 Improve whitespace around content for rudder-responsive
  7: f0df65c03 =   7: f0df65c03 Generalize the two-column layout markup
  8: 4a2814fdb =   8: 4a2814fdb Add a grid system
  9: b7008bcd8 =   9: b7008bcd8 Make ticket display ShowSummary responsive
 10: 2a14260d4 =  10: 2a14260d4 Make search field really narrow on narrow screens
 11: 050d2b466 =  11: 050d2b466 Make the "new ticket in" and queue selector responsive
 12: 7293efce0 =  12: 7293efce0 Narrow gap between new ticket and search fields on narrow screens
 13: 26d3640d3 =  13: 26d3640d3 Display more of the title when the page is narrow
 14: 743fca5fe =  14: 743fca5fe On narrow screens pop up a modal for selecting ticket queue
 15: fc435d351 =  15: fc435d351 Hide "RT for example.com" on narrow screens
 16: c12f7a2fd =  16: c12f7a2fd Eliminate history display's margin-left on narrow screens
 17: 031767c67 =  17: 031767c67 On very narrow screens, zero out body padding
 18: a70a12eb8 =  18: a70a12eb8 Get rid of horizontal padding on ticket history on narrow screens
 19: ed77add0f =  19: ed77add0f Collapse padding at a wider (700px) viewport
 20: bf6072713 =  20: bf6072713 Prevent reminders from breaking layout with its long text field
 21: 3bf0b2783 =  21: 3bf0b2783 Convert Links table to have .fields/.field using table CSS
 22: ef390831d =  22: ef390831d Improve styling of links for small screens
 23: 9e0e238dc =  23: 9e0e238dc Don't wrap labels
 24: abde98f8c =  24: abde98f8c Limit the breakdown of fields tables to just "wide" ones
 25: a036b7218 =  25: a036b7218 Convert basics, dates, and people groupings away from tables
 26: 18410558f =  26: 18410558f Add margin-left to <li>s within a wide fields table that breaks
 27: abe679392 =  27: abe679392 Make padding on field names more consistent
 28: 4535278a7 =  28: 4535278a7 Convert new reminder form from table to fields
 29: 902013336 =  29: 902013336 Improve rendering of ticket update page
 30: b83145a17 =  30: b83145a17 Add messagedetails to jumbo page titlebox
 31: b30e4e3be =  31: b30e4e3be Improve display of reminders table and form
 32: a3debdb88 =  32: a3debdb88 Avoid breaking layout with new reminder subject
 33: a4ec31340 =  33: a4ec31340 Remove minimum height from titleboxes
 34: 9e2e9f847 =  34: 9e2e9f847 Restore original titlebox padding rule but only for fields
 35: f048c2714 =  35: f048c2714 Remove spurious <br> tag
 36: 14bd5afdb =  36: 14bd5afdb Switch ticket update from tables to fields
 37: b6076f108 =  37: b6076f108 Linearize ticket update form on narrow widths
 38: 9847f9464 =  38: 9847f9464 Make update form take up 100% of the titlebox
 39: 3f12ac4ab =  39: 3f12ac4ab Fix reply cc/bcc/subject fields to be 100% width
 40: 7d903afc9 =  40: 7d903afc9 Rename .crypto to .empty to better explain what it's for
 41: 0b1e7df31 =  41: 0b1e7df31 Make ticket create responsive
 42: 21b722a26 =  42: 21b722a26 First pass at responsive for SelfService/Create
 43: a5c7652c3 =  43: a5c7652c3 First pass at responsive for SelfService/Update
 44: 8b58c4a15 =  44: 8b58c4a15 Remove AsTable from Edit CFs
 45: 921d72c94 =  45: 921d72c94 Remove these pre-responsive CF edit styles
 46: f5bcb7577 =  46: f5bcb7577 Wrap selfservice update form in a titlebox
 47: 94e44ea62 =  47: 94e44ea62 Wrap selfservice create form in a titlebox
 48: efe3f52d3 =  48: efe3f52d3 Convert selfservice display to responsive
 49: fc80f17b7 =  49: fc80f17b7 Switch ShowCustomFields from table to fields
 50: d26da2aa1 =  50: d26da2aa1 Fix transaction actions overlapping description
 51: 726ff3ed2 =  51: 726ff3ed2 Switch QuickCreate from table to fields
 52: 1dac409ae =  52: 1dac409ae Improve whitespace around fields
 53: f99594d6b =  53: f99594d6b Improve padding and spacing on forms
 54: 9b94580d3 =  54: 9b94580d3 Have searches use the full width of the viewport
 55: df8c440d3 =  55: df8c440d3 Make login box more responsive
 56: 6c19bf649 =  56: 6c19bf649 Add missing type="text" for login username input
 57: ff38918b6 =  57: ff38918b6 Improve form rendering for Mobile Safari
 58: bc548a5bb =  58: bc548a5bb Separate existing reminders from create form with hr only if there are reminders
 59: 3d16535fd =  59: 3d16535fd Remove unnecessary margin-top on collection tables
 60: a6e560500 =  60: a6e560500 Fix save button on ticket reminders to not use inline style
 61: 33e559e98 =  61: 33e559e98 Fix error result background color for rudder
 62: 6366d835d =  62: 6366d835d Make QueueList take up the full width
 63: 753b2e278 =  63: 753b2e278 Give rudder the responsive viewport meta tag
 64: 96258f3a2 =  64: 96258f3a2 Turn off autocapitalize on usernames
 65: b738946b7 =  65: b738946b7 Don't let users select the "drop files here" dropzone text
 66: ed9896623 =  66: ed9896623 Improve error transaction colors
 67: fc2c7dd24 =  67: fc2c7dd24 Replace ShowAttachments's <font size="-2"> with CSS
 68: 0ed134c2a =  68: 0ed134c2a Word-break very (perhaps maliciously) long attachment names
 69: 329257c04 =  69: 329257c04 Limit the width of quickcreate since it looks silly when very very wide
 70: 7e8fc73fa =  70: 7e8fc73fa Use full width for MyReminders table
 71: 5acf57a6e =  71: 5acf57a6e Fix Modify Basics to be div.fields rather than table
 72: 13b9aa7be =  72: 13b9aa7be Add missing type="text" to more input fields
 73: 37a3c8190 =  73: 37a3c8190 Avoid menulist-button styling for multi-row select boxes
 74: 76ebbf037 =  74: 76ebbf037 Middle valign fields
 75: abd46fe43 =  75: abd46fe43 Convert EditPeople from nested tables to responsive
 76: 6b1ed3291 =  76: 6b1ed3291 Load the correct version of msie.css
 77: 55f62d910 =  77: 55f62d910 Add a BeforeNav stylesheet plugin
 78: 713ae954b =  78: 713ae954b Make menus overflow into a "More" item on narrow viewports
 79: 0817597f0 =  79: 0817597f0 Remove hyperlink behavior from top-level More menu items
 80: 51ff61b95 =  80: 51ff61b95 Add type attribute to many input fields that were missing it
 81: 9920a2bae =  81: 9920a2bae Fix css rule for one-time cc etc becoming email fields
 82: 639ec0a0a =  82: 639ec0a0a Switch new ticket create popup to a list of links rather than a select
 83: 263260d84 =  83: 263260d84 Fix a regression on legacy themes with CF edit panels
 84: e7a24762e =  84: e7a24762e Override 400px width of jquery modals
 85: d05db9319 =  85: d05db9319 Fix quick create on narrow screens
 86: 1ce3e7535 =  86: 1ce3e7535 Fix width regression with quickcreate requestor field
 87: 0bdd6b928 =  87: 0bdd6b928 Switch AddLinks from tables to fields
 88: de71b019f =  88: de71b019f Improve rendering of date editing form
 89: 7e88d621b =  89: 7e88d621b Improve padding to be more consistent
 90: 15dd4d5e1 =  90: 15dd4d5e1 Make modify links use fluid two-column layout
 91: 4bb74ee24 =  91: 4bb74ee24 Improve edit links to use fields instead of a table
 92: 71adf4d59 =  92: 71adf4d59 Convert merge from table to fields
 93: 8bed2a517 =  93: 8bed2a517 Use the same nomenclature "Message" not "Content" for jumbo
 94: 821af7169 =  94: 821af7169 Switch Jumbo reply panel from table to fields
 95: 451b94ebf =  95: 451b94ebf Jumbo: Wrap both basic fields and custom fields in a single fields table
 96: 8e0edb097 =  96: 8e0edb097 Make message form on Jumbo more consistent
 97: 3410d1f86 =  97: 3410d1f86 Make simple search form more responsive
 98: ac878afd0 =  98: ac878afd0 Fix rudder-responsive getting bottom border radius
 99: ee6fd153c =  99: ee6fd153c Remove margin-right from titleboxes in rudder-responsive
100: 19e92fb58 = 100: 19e92fb58 Improve design of more about requestors panel
101: 0795549da = 101: 0795549da Make user prefs page responsive to small screens
102: 3142b6f1e = 102: 3142b6f1e Remove 20em width from ticket subject on basics
103: d2c34c901 = 103: d2c34c901 Wrap forward message in a titlebox
104: e93736f6e = 104: e93736f6e Switch forward from table to fields
105: 865306bb5 = 105: 865306bb5 Fix "more about requestors" overlap
106: a91ad6b41 = 106: a91ad6b41 Update tests for the responsive HTML change
107: 309321394 = 107: 309321394 Fix Nav tweaking for installer mode
108: 5d80cac56 = 108: 5d80cac56 Initial elevator theme, copied from rudder-responsive
109: 9e2710667 = 109: 9e2710667 Add popper.js 1.14.6 dependency
110: d5361e4f8 = 110: d5361e4f8 Add bootstrap 4.2.1 dependency
111: ce6db31de = 111: ce6db31de Add missing "field" css class for Started field
112: 18b4c17ed = 112: 18b4c17ed Get rid of strikethrough in menu
113: 2c1913cea = 113: 2c1913cea Fix h1 position to make it vertically centered
114: 16a290165 = 114: 16a290165 Fix results position to make it vertically centered
115: fa1eddb07 = 115: fa1eddb07 Drop the incomplete rudder-responsive theme
116: 30c74df65 = 116: 30c74df65 Update copyright to 2019 for new added theme related files
117: 8202a7ed6 = 117: 8202a7ed6 Initial elevator-dark theme
118: 6e8c418d2 = 118: 6e8c418d2 Add bootstrap-select 1.13.7 dependency
119: 65a2b8e72 = 119: 65a2b8e72 Switch to bootstrap styled table
120: d3c438a8c = 120: d3c438a8c Switch to bootstrap card for titleboxes
121: 19983ce0c = 121: 19983ce0c Add %ThemeJSFiles config to serve different js for different themes
122: c20ba1ee1 = 122: c20ba1ee1 Migrate search builder for elevator themes
123: c381b52d6 = 123: c381b52d6 Migrate homepage to elevator themes
124: 2b95d7c55 = 124: 2b95d7c55 Add bootstrap-combobox 1.2.0 dependency
125: 16785047a = 125: 16785047a Migrate cf edit components to elevator themes
126: 3434d9955 = 126: 3434d9955 Migrate ticket modify pages to elevator themes
127: 3287cf808 = 127: 3287cf808 Migrate Reports pages to elevator themes
128: 5cca4857d = 128: 5cca4857d Migrate Admin/Scrips/index to elevator themes
129: d38e146cd = 129: d38e146cd Migrate Admin/Scrips/Create to elevator themes
130: ef2c1e2f4 = 130: ef2c1e2f4 Migrate Admin/Scrips/Modify to elevator themes
131: 71c8971a2 = 131: 71c8971a2 Migrate Admin/Scrips/Objects to elevator themes
132: b487bd5e5 = 132: b487bd5e5 Migrate Admin/Actions/Display to elevator themes
133: f1112cfd9 = 133: f1112cfd9 Update asset CSS and JS files for elevator theme
134: 96287645d = 134: 96287645d Update asset display components for elevator theme
135: 9317af1b2 = 135: 9317af1b2 Update asset create/modify components for elevator theme
136: edb9d71e1 = 136: edb9d71e1 Update asset search components for elevator theme
137: 1983b0460 = 137: 1983b0460 Migrate Admin/Actions/Create to elevator themes
138: 93ba4a292 = 138: 93ba4a292 Migrate Admin/Actions/Modify to elevator themes
139: be2c9fbaa = 139: be2c9fbaa Migrate Admin/Conditions/Create to elevator themes
140: 440891534 = 140: 440891534 Migrate Admin/Conditions/Modify to elevator themes
141: c9d4607cb = 141: c9d4607cb Migrate Admin/Conditions/Display to elevator themes
142: 7a2d87412 ! 142: b51534875 Migrate ticket pages to elevator theme
    @@ -35,87 +35,72 @@
     --- a/share/html/Ticket/Elements/Reminders
     +++ b/share/html/Ticket/Elements/Reminders
     @@
    - <input type="hidden" class="hidden" name="id" value="<% $Ticket->id %>" />
      <input type="hidden" class="hidden" name="update-reminders" value="1" />
      % my $editable = 0;
    -+<div class="col-md-12">
      % if ($has_reminders) {
     -<table border="0" cellpadding="1" cellspacing="0" class="collection-as-table"<% $Edit ? ' style="width: auto;"' : '' |n %>>
     -<tr>
    -+  <div class="form-row">
    ++<div class="form-row">
      % if ( $Edit ) {
     -<th class="collection-as-table" colspan="5"><&|/l&>Reminders</&></th>
    -+      <div class="col-md-12">
    -+        <&|/l&>Reminders</&>
    -+      </div>
    ++  <&|/l&>Reminders</&>
      % } else {
     -<th class="collection-as-table"></th>
     -<th class="collection-as-table"><&|/l&>Reminder</&></th>
     -<th class="collection-as-table"><&|/l&>Due</&></th>
     -<th class="collection-as-table"><&|/l&>Owner</&></th>
    -+    <div class="col-md-4">
    -+      <&|/l&>Reminder</&>
    -+    </div>
    -+    <div class="col-md-4">
    -+      <&|/l&>Due</&>
    -+    </div>
    -+    <div class="col-md-4">
    -+      <&|/l&>Owner</&>
    -+    </div>
    ++  <div class="col-md-4">
    ++    <&|/l&>Reminder</&>
    ++  </div>
    ++  <div class="col-md-4">
    ++    <&|/l&>Due</&>
    ++  </div>
    ++  <div class="col-md-4">
    ++    <&|/l&>Owner</&>
    ++  </div>
      % }
     -</tr>
    -+  </div>
    ++</div>
      % my $i = 0;
      % while ( my $reminder = $reminder_collection->Next ) {
    -+  <div class="form-row">
    ++<div class="form-row">
      % $i++;
      % if ( $reminder->Status eq $resolve_status && !$ShowCompleted ) {
     -<tr class="hidden"><td><input type="hidden" class="hidden" name="Complete-Reminder-<% $reminder->id %>" value="1" /></td></tr>
    -+    <input type="hidden" class="hidden" name="Complete-Reminder-<% $reminder->id %>" value="1" />
    ++  <input type="hidden" class="hidden" name="Complete-Reminder-<% $reminder->id %>" value="1" />
      % $i++;
      % }
      % else {
      %   $editable = 1 if !$editable && $reminder->CurrentUserHasRight( 'ModifyTicket' );
      %   if ($Edit) {
     -<& SELF:EditEntry, Reminder => $reminder, Ticket => $Ticket, Index => $i &>
    -+    <& SELF:EditEntry, Reminder => $reminder, Ticket => $Ticket, Index => $i &>
    ++  <& SELF:EditEntry, Reminder => $reminder, Ticket => $Ticket, Index => $i &>
      %   } else {
     -<& SELF:ShowEntry, Reminder => $reminder, Ticket => $Ticket, Index => $i &>
    -+    <& SELF:ShowEntry, Reminder => $reminder, Ticket => $Ticket, Index => $i &>
    ++  <& SELF:ShowEntry, Reminder => $reminder, Ticket => $Ticket, Index => $i &>
      %   }
      % }
    -+  </div>
    ++</div>
      % }
     -</table>
     +
      % if ( $editable ) {
     -<i><&|/l&>(Check box to complete)</&></i>
    -+  <div class="form-row">
    -+    <i><&|/l&>(Check box to complete)</&></i>
    -+  </div>
    ++  <i><&|/l&>(Check box to complete)</&></i>
      % }
      <hr>
      % } else {
     @@
      % }
      
    - % if (lc $Ticket->Status ne "deleted" and $Ticket->QueueObj->CurrentUserHasRight('CreateTicket') and $Ticket->CurrentUserHasRight('ModifyTicket') ) {
    --<& SELF:NewReminder, Ticket => $Ticket &>
    -+  <div class="form-row">
    -+    <& SELF:NewReminder, Ticket => $Ticket &>
    -+  </div>
    - % $editable = 1;
    - % }
    - 
      % if ( $editable && $ShowSave ) {
     -<div class="save"><input type="submit" class="button" value="<&|/l&>Save</&>" /></div>
    -+  <div class="form-row">
    -+    <div class="col-md-12">
    -+      <div class="save"><input type="submit" class="button form-control btn btn-primary" value="<&|/l&>Save</&>" /></div>
    -+    </div>
    -+  </div>
    - % }
    -+</div>
    ++<div class="form-row">
    ++  <div class="col-md-12">
    ++    <div class="save"><input type="submit" class="button form-control btn btn-primary" value="<&|/l&>Save</&>" /></div>
    ++  </div>
    ++</div>
    + % }
     +
      <%method NewReminder>
      <%args>
    @@ -151,7 +136,7 @@
     +  <div class="col-md-6 <% $Index%2 ? 'oddline' : 'evenline' %>" id="reminder-<% $Reminder->id %>">
      % unless ( $Reminder->CurrentUserHasRight('ModifyTicket') ) {
     -disabled="disabled" 
    -+      <input class="custom-control-input" name="Complete-Reminder-<% $Reminder->id %>" type="hidden" 
    ++      <input class="custom-control-input" name="Complete-Reminder-<% $Reminder->id %>" type="hidden"
     +        value=<% $Reminder->Status eq $Reminder->LifecycleObj->ReminderStatusOnResolve ? 1 : 0 %>
     +      />
      % }
    @@ -161,17 +146,6 @@
     -<input type="text" class="reminder-subject" name="Reminder-Subject-<% $Reminder->id %>" value="<% $Reminder->Subject %>"
     +      <div class="custom-control custom-checkbox">
     +        <input class="custom-control-input" type="checkbox" value="1" name="Complete-Reminder-<% $Reminder->id %>" <% $Reminder->Status eq $Reminder->LifecycleObj->ReminderStatusOnResolve ? 'checked="checked"' : '' |n %>
    -+% unless ( $Reminder->CurrentUserHasRight('ModifyTicket') ) {
    -+          disabled="disabled" 
    -+% }
    -+        />
    -+      </div>
    -+      <div class="form-row">
    -+        <div class="label col-md-3">
    -+          <&|/l&>Subject</&>:
    -+        </div>
    -+        <div class="entry col-md-9">
    -+          <input type="text" class="reminder-subject form-control" name="Reminder-Subject-<% $Reminder->id %>" value="<% $Reminder->Subject %>"
      % unless ( $Reminder->CurrentUserHasRight('ModifyTicket') ) {
     -readonly="readonly" 
     -% }
    @@ -184,7 +158,18 @@
     -<td class="entry"><& /Elements/SelectOwner, Name => 'Reminder-Owner-'.$Reminder->id, QueueObj => $Ticket->QueueObj, Default => $Reminder->Owner, DefaultValue => 0  &></td>
     -<td class="label"><&|/l&>Due</&>:</td>
     -<td class="entry">
    -+            readonly="readonly" 
    ++          disabled="disabled"
    ++% }
    ++        />
    ++      </div>
    ++      <div class="form-row">
    ++        <div class="label col-md-3">
    ++          <&|/l&>Subject</&>:
    ++        </div>
    ++        <div class="entry col-md-9">
    ++          <input type="text" class="reminder-subject form-control" name="Reminder-Subject-<% $Reminder->id %>" value="<% $Reminder->Subject %>"
    ++% unless ( $Reminder->CurrentUserHasRight('ModifyTicket') ) {
    ++            readonly="readonly"
     +% }
     +          />
     +        </div>
    @@ -231,25 +216,31 @@
      % unless ( $Reminder->CurrentUserHasRight('ModifyTicket') ) {
     -<input name="Complete-Reminder-<% $Reminder->id %>" type="hidden" 
     -value=<% $Reminder->Status eq $Reminder->LifecycleObj->ReminderStatusOnResolve ? 1 : 0 %> />
    -+    <input class="custom-control-input" name="Complete-Reminder-<% $Reminder->id %>" type="hidden" 
    -+      value=<% $Reminder->Status eq $Reminder->LifecycleObj->ReminderStatusOnResolve ? 1 : 0 %> />
    - % }
    +-% }
     -<input type="checkbox" value="1" id="Complete-Reminder-<% $Reminder->id %>" name="Complete-Reminder-<% $Reminder->id %>" <% $Reminder->Status eq $Reminder->LifecycleObj->ReminderStatusOnResolve ? 'checked="checked"' : '' |n %>
    -+    <div class="custom-control custom-checkbox col-md-4">
    -+      <input class="custom-control-input" type="checkbox" value="1" id="Complete-Reminder-<% $Reminder->id %>" name="Complete-Reminder-<% $Reminder->id %>" <% $Reminder->Status eq $Reminder->LifecycleObj->ReminderStatusOnResolve ? 'checked="checked"' : '' |n %>
    ++    <div class="col-md-4">
    ++      <input name="Complete-Reminder-<% $Reminder->id %>" type="hidden"
    ++        value=<% $Reminder->Status eq $Reminder->LifecycleObj->ReminderStatusOnResolve ? 1 : 0 %>
    ++      />
    ++    </div>
    ++% }
    ++    <div class="col-md-4">
    ++      <div class="custom-control custom-checkbox">
    ++        <input class="custom-control-input" type="checkbox" value="1" id="Complete-Reminder-<% $Reminder->id %>" name="Complete-Reminder-<% $Reminder->id %>" <% $Reminder->Status eq $Reminder->LifecycleObj->ReminderStatusOnResolve ? 'checked="checked"' : '' |n %>
      % unless ( $Reminder->CurrentUserHasRight('ModifyTicket') ) {
     -disabled="disabled" 
    --% }
    ++          disabled="disabled"
    + % }
     -/></td>
     -<td class="collection-as-table"><label for="Complete-Reminder-<% $Reminder->id %>"><% $Reminder->Subject %></label></td>
     -<td class="collection-as-table"><% $overdue ? '<span class="overdue">' : '' |n %><% $dueobj->AgeAsString || loc('Not set') %><% $overdue ? '</span>' : '' |n %></td>
     -<td class="collection-as-table"><& /Elements/ShowUser, User => $Reminder->OwnerObj &></td>
     -</tr>
    -+        disabled="disabled"
    -+% }
    -+      />
    -+      <label class="custom-control-label" for="Complete-Reminder-<% $Reminder->id %>"><% $Reminder->Subject %></label>
    -+    </div>
    ++        />
    ++        <label class="custom-control-label" for="Complete-Reminder-<% $Reminder->id %>"><% $Reminder->Subject %></label>
    ++      </div>
    ++    </div>
    ++
     +    <div class="col-md-4">
     +      <% $overdue ? '<span class="overdue">' : '' |n %><% $dueobj->AgeAsString || loc('Not set') %><% $overdue ? '</span>' : '' |n %>
     +    </div>
    @@ -277,22 +268,6 @@
     --- a/share/html/Ticket/Elements/ShowAttachments
     +++ b/share/html/Ticket/Elements/ShowAttachments
     @@
    - %#
    - %# END BPS TAGGED BLOCK }}}
    - <&| /Widgets/TitleBox, title => loc('Attachments'), 
    --        title_class=> 'inverse',  
    --        class => 'ticket-info-attachments',
    --        color => "#336699",
    --        hide_chrome => $HideTitleBox &>
    -+  title_class=> 'inverse',  
    -+  class => 'ticket-info-attachments',
    -+  color => "#336699",
    -+  hide_chrome => $HideTitleBox
    -+&>
    - 
    - % $m->callback( %ARGS, CallbackName => 'BeforeList', TicketObj => $Ticket, Attachments => $Attachments, Documents => \%documents, IsChecked => \%is_checked, ShowMore => \$show_more );
    - 
    -@@
      % foreach my $key (sort { lc($a) cmp lc($b) } keys %documents) {
      
      <span class="filename"><%$key%></span>
    @@ -301,7 +276,7 @@
      % foreach my $rev (@{$documents{$key}}) {
      % if ($rev->ContentLength) {
     -<li>
    -+<li class="list-item">
    ++<li class="list-group-item">
      
      % if ($Selectable) {
          <label>
    @@ -316,14 +291,6 @@
      % }
      
      <span class="revision">
    -@@
    - 
    - </div>
    - </&>
    --
    - <%INIT>
    - 
    - # If we haven't been passed in an Attachments object (through the precaching mechanism)
     
     diff --git a/share/html/Ticket/Elements/ShowBasics b/share/html/Ticket/Elements/ShowBasics
     --- a/share/html/Ticket/Elements/ShowBasics
    @@ -371,92 +338,78 @@
     --- a/share/html/Ticket/Elements/ShowRequestor
     +++ b/share/html/Ticket/Elements/ShowRequestor
     @@
    - % }
    - 
    - <&| /Widgets/TitleBox,
    --    title_raw => loc("More about the requestors"),
    --    class => 'ticket-info-requestor fullwidth'
    -+  title_raw => loc("More about the requestors"),
    -+  class => 'ticket-info-requestor fullwidth'
    - &>
    --
    --<div id="requestor-accordion" class="user-accordion">
    -+  <div id="requestor-accordion" class="user-accordion">
    + <div id="requestor-accordion" class="user-accordion">
      
      % while ( my $requestor = $people->Next ) {
     -<h3><a href="#"><& /Elements/ShowUser, User => $requestor, Link => 0 &></a>
     -    <a class="user-summary" href="<%RT->Config->Get('WebPath')%>/User/Summary.html?id=<%$requestor->Id%>">User Summary</a></h3>
    --  <div class="details">
    -+    <div class="form-row">
    -+      <div class="col-md-12">
    -+        <div class="form-row">
    -+          <h3><a href="#"><& /Elements/ShowUser, User => $requestor, Link => 0 &></a>
    -+          <a class="user-summar" href="<%RT->Config->Get('WebPath')%>/User/Summary.html?id=<%$requestor->Id%>">User Summary</a></h3>
    -+        </div>
    -+        <div class="details">
    ++  <div class="form-row">
    ++    <h3><a href="#"><& /Elements/ShowUser, User => $requestor, Link => 0 &></a>
    ++    <a class="user-summar" href="<%RT->Config->Get('WebPath')%>/User/Summary.html?id=<%$requestor->Id%>">User Summary</a></h3>
    ++  </div>
    +   <div class="details">
      
      %# Additional information about this user.  Empty by default.
    - % $m->callback( requestor => $requestor, %ARGS, CallbackName => 'AboutThisUser' );
    --<& ShowRequestorExtraInfo, Requestor => $requestor &>
    -+          <& ShowRequestorExtraInfo, Requestor => $requestor &>
    +@@
    + <& ShowRequestorExtraInfo, Requestor => $requestor &>
      
      % if ( $ShowComments ) {
     -<div class="comments-about-user">
     -  <span class="label"><&|/l&>Comments about this user</&>:</span>
     -  <span class="value"><% ($requestor->Comments || loc("No comment entered about this user")) %></span>
     -</div>
    -+          <div class="form-row">
    -+            <div class="comments-about-user">
    -+              <span class="label"><&|/l&>Comments about this user</&>:</span>
    -+              <span class="value"><% ($requestor->Comments || loc("No comment entered about this user")) %></span>
    -+            </div>
    -+          </div>
    - % }
    --
    ++    <div class="form-row">
    ++      <div class="comments-about-user">
    ++        <span class="label"><&|/l&>Comments about this user</&>:</span>
    ++        <span class="value"><% ($requestor->Comments || loc("No comment entered about this user")) %></span>
    ++      </div>
    ++    </div>
    + % }
    + 
      % $m->callback( requestor => $requestor, %ARGS, CallbackName => 'AfterComments' );
      
      % if ( $ShowTickets ) {
     -<div class="more-about-requestor-tickets ui-tabs" id="more-about-requestor-tickets-<%$requestor->Id%>">
     -  <ul>
    -+          <div class="more-about-requestor-tickets ui-tabs" id="more-about-requestor-tickets-<%$requestor->Id%>">
    -+            <ul>
    ++    <div class="more-about-requestor-tickets ui-tabs" id="more-about-requestor-tickets-<%$requestor->Id%>">
    ++      <ul class="list-group">
      % my $index = 1;
      % for my $status ( @$status_order ) {
     -    <li>
    -+              <li>
    ++        <li class="list-group-item">
      % if ( $status eq $DefaultTicketsTab ) {
     -      <a href="#requestor-<%$requestor->Id%>-ticket-tab-default">\
    -+                <a href="#requestor-<%$requestor->Id%>-ticket-tab-default">\
    ++          <a href="#requestor-<%$requestor->Id%>-ticket-tab-default">\
      % } else {
      %     my $url = RT->Config->Get('WebPath').'/Helpers/Toggle/ShowRequestor?'.
      %     $m->comp('/Elements/QueryString', Requestor => $requestor->Id , Status => $status);
     -      <a href="<% $url | n %>" title="requestor-<%$requestor->Id%>-ticket-tab-<% $index++ %>">\
    -+                <a href="<% $url | n %>" title="requestor-<%$requestor->Id%>-ticket-tab-<% $index++ %>">\
    ++          <a href="<% $url | n %>" title="requestor-<%$requestor->Id%>-ticket-tab-<% $index++ %>">\
      % }
      <% $status_link_text->{$status} %></a>
     -    </li>
    -+              </li>
    ++        </li>
      % }
     -  </ul>
    -+            </ul>
    ++      </ul>
      % $index = 1;
      % for my $status (@$status_order) {
      % if ( $status eq $DefaultTicketsTab ) {
     -  <div id="requestor-<%$requestor->Id%>-ticket-tab-default">
     -    <& $TicketTemplate, Requestor => $requestor &>
    -+            <div id="requestor-<%$requestor->Id%>-ticket-tab-default">
    -+              <& $TicketTemplate, Requestor => $requestor &>
    ++      <div id="requestor-<%$requestor->Id%>-ticket-tab-default">
    ++        <& $TicketTemplate, Requestor => $requestor &>
      % } else {
     -  <div id="requestor-<%$requestor->Id%>-ticket-tab-<% $index++ %>" class="hidden">
     -    <span class="label"><&|/l&>Loading...</&></span>
    -+                <div id="requestor-<%$requestor->Id%>-ticket-tab-<% $index++ %>" class="hidden">
    -+                  <span class="label"><&|/l&>Loading...</&></span>
    -+                </div>
    ++        <div id="requestor-<%$requestor->Id%>-ticket-tab-<% $index++ %>" class="hidden">
    ++          <span class="label"><&|/l&>Loading...</&></span>
    ++        </div>
      % }
     -  </div>
      % }
     -</div>
    -+            </div>
    ++      </div>
      % }
      
      % my $grouplimit = RT->Config->Get('MoreAboutRequestorGroupsLimit');
    @@ -464,28 +417,28 @@
     -<div class="more-about-user-groups">
     -  <span class="label">
     -    <&|/l&>Groups this user belongs to</&>
    -+            <div class="more-about-user-groups">
    -+              <span class="label">
    -+                <&|/l&>Groups this user belongs to</&>
    ++      <div class="more-about-user-groups">
    ++        <span class="label">
    ++          <&|/l&>Groups this user belongs to</&>
          
      % if ( $session{CurrentUser}->HasRight( Right => 'AdminUsers', Object => $RT::System ) &&
      %      $session{CurrentUser}->HasRight( Right => 'ShowConfigTab', Object =>$RT::System ) ) {
    -   [<a href=<% RT->Config->Get('WebPath') . '/Admin/Users/Memberships.html?id=' . $requestor->id %> ><&|/l&>Edit</&></a>]
    +-  [<a href=<% RT->Config->Get('WebPath') . '/Admin/Users/Memberships.html?id=' . $requestor->id %> ><&|/l&>Edit</&></a>]
    ++          [<a href=<% RT->Config->Get('WebPath') . '/Admin/Users/Memberships.html?id=' . $requestor->id %> ><&|/l&>Edit</&></a>]
      % }
     -  </span>
     -  <span class="value"><& /Elements/ShowMemberships, UserObj => $requestor, Limit => $grouplimit &></span>
     -</div>
    -+            </span>
    -+            <span class="value"><& /Elements/ShowMemberships, UserObj => $requestor, Limit => $grouplimit &></span>
    -+          </div>
    ++        </span>
    ++        <span class="value"><& /Elements/ShowMemberships, UserObj => $requestor, Limit => $grouplimit &></span>
    ++      </div>
      % }
      
      %# end of individual requestor details <div>
    -+        </div>
    -+      </div>
    -+    </div>
    -   </div>
    - % }
    +-  </div>
    ++    </div>
    + % }
    ++</div>
      %# end of requestors loop
      
      % $m->callback( %ARGS, CallbackName => 'AfterRequestors' );
    @@ -507,133 +460,82 @@
     +<div class="form-row ticket-summary">
     +  <div class="col-md-6">
      % $m->callback( %ARGS, CallbackName => 'LeftColumnTop' );
    --    <&| /Widgets/TitleBox, title => loc('The Basics'),
    --        (($can_modify || $can_modify_cf) ? (title_href => RT->Config->Get('WebPath')."/Ticket/Modify.html?id=".$Ticket->Id) : ()),
    --        class => 'ticket-info-basics',
    +     <&| /Widgets/TitleBox, title => loc('The Basics'),
    +         (($can_modify || $can_modify_cf) ? (title_href => RT->Config->Get('WebPath')."/Ticket/Modify.html?id=".$Ticket->Id) : ()),
    +         class => 'ticket-info-basics',
     -    &><& /Ticket/Elements/ShowBasics, Ticket => $Ticket &></&>
    -+    <div class="form-row">
    -+      <div class="col-md-12">
    -+        <&| /Widgets/TitleBox, title => loc('The Basics'),
    -+            (($can_modify || $can_modify_cf) ? (title_href => RT->Config->Get('WebPath')."/Ticket/Modify.html?id=".$Ticket->Id) : ()),
    -+            class => 'ticket-info-basics',
    -+          &><& /Ticket/Elements/ShowBasics, Ticket => $Ticket &>
    -+        </&>
    ++      &><& /Ticket/Elements/ShowBasics, Ticket => $Ticket &>
    ++    </&>
      % $m->callback( %ARGS, CallbackName => 'AfterBasics' );
    --    <& /Elements/ShowCustomFieldCustomGroupings,
    +     <& /Elements/ShowCustomFieldCustomGroupings,
     -        Object       => $Ticket,
     -        title_href   => ($can_modify || $can_modify_cf) ? RT->Config->Get('WebPath')."/Ticket/Modify.html" : "",
    -+      </div>
    -+    </div>
    -+    <div class="form-row">
    -+      <div class="col-md-12">
    -+        <& /Elements/ShowCustomFieldCustomGroupings,
    -+          Object       => $Ticket,
    -+          title_href   => ($can_modify || $can_modify_cf) ? RT->Config->Get('WebPath')."/Ticket/Modify.html" : "",
    -         &>
    +-        &>
     -
    --    <&| /Widgets/TitleBox, title => loc('People'),
    ++      Object       => $Ticket,
    ++      title_href   => ($can_modify || $can_modify_cf) ? RT->Config->Get('WebPath')."/Ticket/Modify.html" : "",
    ++    &>
    +     <&| /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 => 'ticket-info-people',
    --    &><& /Ticket/Elements/ShowPeople, Ticket => $Ticket &></&>
    -+      </div>
    -+    </div>
    -+    <div class="form-row">
    -+      <div class="col-md-12">
    -+        <&| /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 => 'ticket-info-people',
    -+        &><& /Ticket/Elements/ShowPeople, Ticket => $Ticket &></&>
    ++      (($can_modify || $can_modify_owner || $can_modify_people) ? (title_href => RT->Config->Get('WebPath')."/Ticket/ModifyPeople.html?id=".$Ticket->Id) : ()),
    ++      class => 'ticket-info-people',
    +     &><& /Ticket/Elements/ShowPeople, Ticket => $Ticket &></&>
      % $m->callback( %ARGS, CallbackName => 'AfterPeople' );
    --    <& /Ticket/Elements/ShowAttachments, Ticket => $Ticket, Attachments => $Attachments, Count => RT->Config->Get('AttachmentListCount') &>
    -+      </div>
    -+    </div>
    -+    <div class="form-row">
    -+      <div class="col-md-12">
    -+        <& /Ticket/Elements/ShowAttachments, Ticket => $Ticket, Attachments => $Attachments, Count => RT->Config->Get('AttachmentListCount') &>
    - % $m->callback( %ARGS, CallbackName => 'AfterAttachments' );
    --    <& /Ticket/Elements/ShowRequestor, Ticket => $Ticket &>
    -+      </div>
    -+    </div>
    -+    <div class="form-row">
    -+      <div class="col-md-12">
    -+        <& /Ticket/Elements/ShowRequestor, Ticket => $Ticket &>
    -+      </div>
    -+    </div>
    +     <& /Ticket/Elements/ShowAttachments, Ticket => $Ticket, Attachments => $Attachments, Count => RT->Config->Get('AttachmentListCount') &>
    +@@
    +     <& /Ticket/Elements/ShowRequestor, Ticket => $Ticket &>
      % $m->callback( %ARGS, CallbackName => 'LeftColumn' );
        </div>
     -  <div class="boxcontainer col-md-6">
     +  <div class="col-md-6">
      % $m->callback( %ARGS, CallbackName => 'RightColumnTop' );
      % if ( RT->Config->Get('EnableReminders') ) {
    --    <&|/Widgets/TitleBox, title => loc("Reminders"),
    +     <&|/Widgets/TitleBox, title => loc("Reminders"),
     -        title_href => RT->Config->Get('WebPath')."/Ticket/Reminders.html?id=".$Ticket->Id,
     -        class => 'ticket-info-reminders fullwidth',
    --    &>
    ++      title_href => RT->Config->Get('WebPath')."/Ticket/Reminders.html?id=".$Ticket->Id,
    ++      class => 'ticket-info-reminders fullwidth',
    +     &>
     -        <form action="<%RT->Config->Get('WebPath')%>/Ticket/Display.html" name="UpdateReminders" id="UpdateReminders" method="post">
    -+    <div class="form-row">
    -+      <div class="col-md-12">
    -+        <&|/Widgets/TitleBox, title => loc("Reminders"),
    -+          title_href => RT->Config->Get('WebPath')."/Ticket/Reminders.html?id=".$Ticket->Id,
    -+          class => 'ticket-info-reminders fullwidth',
    -+        &>
    -+          <form action="<%RT->Config->Get('WebPath')%>/Ticket/Display.html" name="UpdateReminders" id="UpdateReminders" method="post">
    -             <& /Ticket/Elements/Reminders, Ticket => $Ticket, ShowCompleted => 0 &>
    +-            <& /Ticket/Elements/Reminders, Ticket => $Ticket, ShowCompleted => 0 &>
     -        </form>
    --    </&>
    -+          </form>
    -+        </&>
    -+      </div>
    -+    </div>
    ++      <form action="<%RT->Config->Get('WebPath')%>/Ticket/Display.html" name="UpdateReminders" id="UpdateReminders" method="post">
    ++        <& /Ticket/Elements/Reminders, Ticket => $Ticket, ShowCompleted => 0 &>
    ++      </form>
    +     </&>
      % }
      % $m->callback( %ARGS, CallbackName => 'AfterReminders' );
    --    <&| /Widgets/TitleBox, title => loc("Dates"),
    +     <&| /Widgets/TitleBox, title => loc("Dates"),
     -        ($can_modify ? (title_href => RT->Config->Get('WebPath')."/Ticket/ModifyDates.html?id=".$Ticket->Id) : ()),
     -        class => 'ticket-info-dates',
    --    &><& /Ticket/Elements/ShowDates, Ticket => $Ticket &></&>
    -+    <div class="form-row">
    -+      <div class="col-md-12">
    -+        <&| /Widgets/TitleBox, title => loc("Dates"),
    -+          ($can_modify ? (title_href => RT->Config->Get('WebPath')."/Ticket/ModifyDates.html?id=".$Ticket->Id) : ()),
    -+          class => 'ticket-info-dates',
    -+        &><& /Ticket/Elements/ShowDates, Ticket => $Ticket &></&>
    -+      </div>
    -+    </div>
    ++      ($can_modify ? (title_href => RT->Config->Get('WebPath')."/Ticket/ModifyDates.html?id=".$Ticket->Id) : ()),
    ++      class => 'ticket-info-dates',
    +     &><& /Ticket/Elements/ShowDates, Ticket => $Ticket &></&>
      % $m->callback( %ARGS, CallbackName => 'AfterDates' );
      % my (@extra);
      % push @extra, titleright_raw => '<a href="'. RT->Config->Get('WebPath'). '/Ticket/Graphs/index.html?id='.$Ticket->id.'">'.loc('Graph').'</a>' unless RT->Config->Get('DisableGraphViz');
     -<& /Ticket/Elements/ShowAssets, Ticket => $Ticket &>
    -+    <div class="form-row">
    -+      <div class="col-md-12">
    -+        <& /Ticket/Elements/ShowAssets, Ticket => $Ticket &>
    -+      </div>
    -+    </div>
    ++    <& /Ticket/Elements/ShowAssets, Ticket => $Ticket &>
      % $m->callback( %ARGS, CallbackName => 'LinksExtra', extra => \@extra );
    --    <&| /Widgets/TitleBox, title => loc('Links'),
    +     <&| /Widgets/TitleBox, title => loc('Links'),
     -        ($can_modify ? (title_href => RT->Config->Get('WebPath')."/Ticket/ModifyLinks.html?id=".$Ticket->Id) : ()),
     -        class => 'ticket-info-links',
     -        @extra,
    --    &><& /Elements/ShowLinks, Object => $Ticket &></&>
    -+    <div class="form-row">
    -+      <div class="col-md-12">
    -+        <&| /Widgets/TitleBox, title => loc('Links'),
    -+          ($can_modify ? (title_href => RT->Config->Get('WebPath')."/Ticket/ModifyLinks.html?id=".$Ticket->Id) : ()),
    -+          class => 'ticket-info-links',
    -+          @extra,
    -+        &><& /Elements/ShowLinks, Object => $Ticket &></&>
    -+      </div>
    -+    </div>
    ++      ($can_modify ? (title_href => RT->Config->Get('WebPath')."/Ticket/ModifyLinks.html?id=".$Ticket->Id) : ()),
    ++      class => 'ticket-info-links',
    ++      @extra,
    +     &><& /Elements/ShowLinks, Object => $Ticket &></&>
      % $m->callback( %ARGS, CallbackName => 'RightColumn' );
        </div>
    - </div>
     
     diff --git a/share/html/Ticket/Elements/ShowUpdateStatus b/share/html/Ticket/Elements/ShowUpdateStatus
     --- a/share/html/Ticket/Elements/ShowUpdateStatus
     +++ b/share/html/Ticket/Elements/ShowUpdateStatus
     @@
    - %# those contributions and any derivatives thereof.
      %#
      %# END BPS TAGGED BLOCK }}}
    --<div class="unread-messages">
    + <div class="unread-messages">
     -<&| /Widgets/TitleBox, title => loc('New messages'), title_href => "#txn-". $txn->id &>
     -<&|/l&>There are unread messages on this ticket.</&>
     -<&|/l, 
    @@ -641,7 +543,6 @@
     - RT->Config->Get('WebPath') ."/$DisplayPath/Display.html?id=". $Ticket->id ."&MarkAsSeen=1&Anchor=txn-" . $txn->id
     - &>You can <a href="[_1]">jump to the first unread message</a> or <a href="[_2]">jump to the first unread message and mark all messages as seen</a>.</&>
     -</&>
    -+<div class="unread-messages col-md-12">
     +  <&| /Widgets/TitleBox, title => loc('New messages'), title_href => "#txn-". $txn->id &>
     +    <&|/l&>There are unread messages on this ticket.</&>
     +    <&|/l,
    @@ -734,67 +635,94 @@
     --- a/share/html/Ticket/Graphs/Elements/EditGraphProperties
     +++ b/share/html/Ticket/Graphs/Elements/EditGraphProperties
     @@
    - %# those contributions and any derivatives thereof.
    - %#
      %# END BPS TAGGED BLOCK }}}
    --<&| /Widgets/TitleBox, title => loc('Graph Properties') &>
    -+<div class="col-md-12">
    -+  <&| /Widgets/TitleBox, title => loc('Graph Properties') &>
    + <&| /Widgets/TitleBox, title => loc('Graph Properties') &>
      
     -<% loc('Direction') %> <select name="Direction">
     -<option value="TB" <% ($Direction||'TB') eq 'TB'? 'selected="selected"': '' |n %>><% loc('top to bottom') %></option>
     -<option value="LR" <% ($Direction||'TB') eq 'LR'? 'selected="selected"': '' |n %>><% loc('left to right') %></option>
    -+  <% loc('Direction') %> <select class="form-control selectpicker" name="Direction">
    -+    <option value="TB" <% ($Direction||'TB') eq 'TB'? 'selected="selected"': '' |n %>><% loc('top to bottom') %></option>
    -+    <option value="LR" <% ($Direction||'TB') eq 'LR'? 'selected="selected"': '' |n %>><% loc('left to right') %></option>
    ++  <div class="form-row">
    ++    <div class="col-md-3 label">
    ++      <% loc('Direction') %>
    ++    </div>
    ++    <div class="col-md-9">
    ++      <select class="form-control selectpicker" name="Direction">
    ++        <option value="TB" <% ($Direction||'TB') eq 'TB'? 'selected="selected"': '' |n %>><% loc('top to bottom') %></option>
    ++        <option value="LR" <% ($Direction||'TB') eq 'LR'? 'selected="selected"': '' |n %>><% loc('left to right') %></option>
      %# XXX: not supported by GraphViz perl module
      %#<option value="BT" <% ($Direction||'TB') eq 'BT'? 'selected="selected"': '' |n %>><% loc('bottom to top') %></option>
      %#<option value="RL" <% ($Direction||'TB') eq 'RL'? 'selected="selected"': '' |n %>><% loc('right to left') %></option>
     -</select><br />
    -+  </select><br />
    - 
    - <% loc('Main type of links') %> <select name="LeadingLink">
    +-
    +-<% loc('Main type of links') %> <select name="LeadingLink">
    ++      </select>
    ++    </div>
    ++  </div>
    ++  <div class="form-row">
    ++    <div class="col-md-3 label">
    ++      <% loc('Main type of links') %>
    ++    </div>
    ++    <div class="col-md-9">
    ++      <select class="form-control selectpicker" name="LeadingLink">
      % foreach ( @link_types ) {
     -<option value="<% $_ %>" <% ($LeadingLink||'Members') eq $_? 'selected="selected"': '' |n %>><% loc($_) %></option>
    -+    <option value="<% $_ %>" <% ($LeadingLink||'Members') eq $_? 'selected="selected"': '' |n %>><% loc($_) %></option>
    ++       <option value="<% $_ %>" <% ($LeadingLink||'Members') eq $_? 'selected="selected"': '' |n %>><% loc($_) %></option>
      % }
     -</select>
    -+  </select>
    ++      </select>
    ++    </div>
    ++  </div>
      
     -<% loc('maximum depth') %> <select name="MaxDepth">
     -<option value="0"><% loc('Unlimit') %></option>
    -+  <% loc('maximum depth') %> <select class="form-control selectpicker" name="MaxDepth">
    -+    <option value="0"><% loc('Unlimit') %></option>
    ++  <div class="form-row">
    ++    <div class="col-md-3 label">
    ++      <% loc('maximum depth') %>
    ++    </div>
    ++    <div class="col-md-9">
    ++      <select class="form-control selectpicker" name="MaxDepth">
    ++        <option value="0"><% loc('Unlimit') %></option>
      % foreach ( 1..6 ) {
     -<option value="<% $_ %>" <% ($MaxDepth||0) == $_? 'selected="selected"': '' %>><% $_ %></option>
    -+    <option value="<% $_ %>" <% ($MaxDepth||0) == $_? 'selected="selected"': '' %>><% $_ %></option>
    ++        <option value="<% $_ %>" <% ($MaxDepth||0) == $_? 'selected="selected"': '' %>><% $_ %></option>
      % }
     -</select><br />
    -+  </select><br />
    ++      </select>
    ++    </div>
    ++  </div>
      
     -<% loc('Show as well') %>:
    -+  <% loc('Show as well') %>:
    ++  <div class="form-row">
    ++    <div class="col-md-3 label">
    ++      <% loc('Show as well') %>:
    ++    </div>
    ++    <div class="col-md-9">
      % foreach my $type ( @link_types ) {
      % my $checked = '';
      % $checked = 'checked="checked"' if grep $type eq $_, @ShowLinks;
     -<input type="checkbox" id="ShowLinks" name="ShowLinks" value="<% $type %>" <% $checked |n %> />
     -<label for="ShowLinks"><% loc($type) %></label>
    -+  <div class="custom-control custom-checkbox">
    -+    <input class="custom-control-input" type="checkbox" id="ShowLinks" name="ShowLinks" value="<% $type %>" <% $checked |n %> />
    -+    <label class="custom-control-label" for="ShowLinks"><% loc($type) %></label>
    -+  </div>
    ++      <div class="custom-control custom-checkbox">
    ++        <input class="custom-control-input" type="checkbox" id="ShowLinks" name="ShowLinks" value="<% $type %>" <% $checked |n %> />
    ++        <label class="custom-control-label" for="ShowLinks"><% loc($type) %></label>
    ++      </div>
      % }
     -<br />
    -+  <br />
    ++    </div>
    ++  </div>
      
      % my @properties = RT::Graph::Tickets->TicketProperties( $session{'CurrentUser'} );
      
     -<% loc('Fill boxes with color using') %>:
     -<select name="FillUsing">
     -<option value=""><% loc('nothing') %></option>
    -+  <% loc('Fill boxes with color using') %>:
    -+  <select name="FillUsing" class="form-control selectpicker">
    -+    <option value=""><% loc('nothing') %></option>
    ++  <div class="form-row">
    ++    <div class="col-md-3 label">
    ++      <% loc('Fill boxes with color using') %>:
    ++    </div>
    ++    <div class="col-md-9">
    ++      <select name="FillUsing" class="form-control selectpicker">
    ++        <option value=""><% loc('nothing') %></option>
      <%PERL>
      my @tmp = @properties;
      while ( my ($group, $list) = (splice @tmp, 0, 2) ) {
    @@ -803,10 +731,12 @@
              $selected = 'selected="selected"' if $prop eq ($FillUsing||'');
      </%PERL>
     -<option value="<% $prop %>" <% $selected |n %>><% loc($prop) %></option>
    -+    <option value="<% $prop %>" <% $selected |n %>><% loc($prop) %></option>
    ++        <option value="<% $prop %>" <% $selected |n %>><% loc($prop) %></option>
      % } }
     -</select><br />
    -+  </select><br />
    ++      </select>
    ++    </div>
    ++  </div>
      
      % if ( RT::Link->can('Description' ) ) {
      % my $checked = '';
    @@ -814,11 +744,14 @@
     -<label for="ShowLinkDescriptions"><% loc('Show link descriptions') %>:</label>
     -<input type="checkbox" id="ShowLinkDescriptions" name="ShowLinkDescriptions" value="1" <% $checked |n %> />
     -<br />
    -+  <div class="custom-control custom-checkbox">
    -+    <label class="custom-control-input" for="ShowLinkDescriptions"><% loc('Show link descriptions') %>:</label>
    -+    <input class="custom-control-label" type="checkbox" id="ShowLinkDescriptions" name="ShowLinkDescriptions" value="1" <% $checked |n %> />
    -+  </div>
    -+  <br />
    ++  <div class="form-row">
    ++    <div class="col-md-3 label">
    ++      <div class="custom-control custom-checkbox">
    ++        <label class="custom-control-input" for="ShowLinkDescriptions"><% loc('Show link descriptions') %>:</label>
    ++        <input class="custom-control-label" type="checkbox" id="ShowLinkDescriptions" name="ShowLinkDescriptions" value="1" <% $checked |n %> />
    ++      </div>
    ++    </div>
    ++  </div>
      % }
      
      <%PERL>
    @@ -833,37 +766,70 @@
     +    </div>
     +  </div>
      
    --</&>
    -+  </&>
    -+</div>
    - 
    - <%ARGS>
    - $id => undef
    + </&>
    + 
    +@@
    + my $class = '';
    + $class = 'class="hidden"' if $Level != 1 && !@Default;
    + </%INIT>
    +-<% loc('Show Tickets Properties on [_1] level', $Level) %>
    +-(<small><a href="#" onclick="hideshow(<% $id |n,j%>); return false;"><% loc('open/close') %></a></small>):
    +-<table id="<% $id %>" <% $class |n %>>
    ++<div class="col-md-3 label">
    ++  <% loc('Show Tickets Properties on [_1] level', $Level) %>
    ++  (<small><a href="#" onclick="hideshow(<% $id |n,j%>); return false;"><% loc('open/close') %></a></small>):
    ++</div>
    ++
    ++<div id="<% $id %>" <% $class |n %>>
    + % while ( my ($group, $list) = (splice @Available, 0, 2) ) {
    +-<tr><td><% loc($group) %>:</td><td>
    ++  <div class="form-row">
    ++    <div class="col-md-3 label">
    ++      <% loc($group) %>:
    ++    </div>
    ++    <div class="col-md-9">
    ++      <div class="form-row">
    + % foreach my $prop ( @$list ) {
    + % my $checked = '';
    + % $checked = 'checked="checked"' if grep $_ eq $prop, @Default;
    +-<input type="checkbox" class="checkbox" id="Level-<% $Level %>-Properties" name="Level-<% $Level %>-Properties" value="<% $prop %>" <% $checked |n %> />
    +-<label for="Level-<% $Level %>-Properties"><% loc($prop) %></label>
    ++        <div class="custom-control custom-checkbox">
    ++          <input type="checkbox" class="custom-control-input" id="Level-<% $prop %>-Properties" name="Level-<% $Level %>-Properties" value="<% $prop %>" <% $checked |n %> />
    ++          <label class="custom-control-label" for="Level-<% $prop %>-Properties"><% loc($prop) %></label>
    ++        </div>
    + % }
    +-</td></tr>
    ++      </div>
    ++    </div>
    ++  </div>
    + % }
    +-</table>
    +-<br />
    ++</div>
    + </%METHOD>
     
     diff --git a/share/html/Ticket/Graphs/Elements/ShowLegends b/share/html/Ticket/Graphs/Elements/ShowLegends
     --- a/share/html/Ticket/Graphs/Elements/ShowLegends
     +++ b/share/html/Ticket/Graphs/Elements/ShowLegends
     @@
    - %# those contributions and any derivatives thereof.
      %#
      %# END BPS TAGGED BLOCK }}}
    --<&| /Widgets/TitleBox, title => loc('Legends'), hideable => $hideable &>
    + <&| /Widgets/TitleBox, title => loc('Legends'), hideable => $hideable &>
     -<table>
    -+<div class="col-md-12">
    -+  <&| /Widgets/TitleBox, title => loc('Legends'), hideable => $hideable &>
    - 
    +-
     -<tr style="height: 2.8em;"><td><% loc('Status') %>:</td><td>
    -+    <div class="form-row">
    -+      <% loc('Status') %>:
    -+    </div>
    -+    <div class="form-row">
    ++  <div class="form-row">
    ++    <% loc('Status') %>:
    ++  </div>
    ++  <div class="form-row">
      % foreach my $status ( sort keys %RT::Graph::Tickets::ticket_status_style ) {
      % my $style = $RT::Graph::Tickets::ticket_status_style{ $status };
     -<span style="color: <% $style->{'fontcolor'} %>; padding: 0.6em; border: 1px solid black;"><% loc($status) %></span>
     +    <span style="color: <% $style->{'fontcolor'} %>; padding: 0.6em; border: 1px solid black;"><% loc($status) %></span>
      % }
     -</td></tr>
    -+    </div>
    ++  </div>
      
      % if ( $FillUsing ) {
     -<tr style="height: 2.8em;"><td><% loc($FillUsing) %>:</td><td>
    @@ -881,12 +847,9 @@
      % }
     -
     -</table>
    --</&>
    -+  </&>
    -+</div>
    + </&>
      
      <%ARGS>
    - $FillUsing => ''
     
     diff --git a/share/html/Ticket/ModifyAll.html b/share/html/Ticket/ModifyAll.html
     --- a/share/html/Ticket/ModifyAll.html



More information about the rt-commit mailing list