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

Craig Kaiser craig at bestpractical.com
Fri May 10 11:51:39 EDT 2019


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

  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: b51534875 ! 142: 7a038a2dd Migrate ticket pages to elevator theme
    @@ -1,6 +1,142 @@
     Author: Craig Kaiser <craig at bestpractical.com>
     
         Migrate ticket pages to elevator theme
    +
    +diff --git a/share/html/Helpers/PreviewScrips b/share/html/Helpers/PreviewScrips
    +--- a/share/html/Helpers/PreviewScrips
    ++++ b/share/html/Helpers/PreviewScrips
    +@@
    + %          my $action = $s->ActionObj->Action;
    + %          scalar(map { $action->$_ } qw(To Cc Bcc))
    + %        } @scrips ) {
    +-<input type="checkbox" class="checkbox" id="TxnSendMailToAll" name="TxnSendMailToAll" <% $ARGS{TxnSendMailToAll} ? 'checked="checked"' : ''  %> value="1">
    +-<label for="TxnSendMailToAll"><b><% loc('All recipients') %></b></label><br />
    ++<div class="custom-control custom-checkbox">
    ++  <input type="checkbox" id="TxnSendMailToAll" name="TxnSendMailToAll" <% $ARGS{TxnSendMailToAll} ? 'checked="checked"' : ''  %> value="1" class="custom-control-input">
    ++  <label class="custom-control-label" for="TxnSendMailToAll"><b><% loc('All recipients') %></b></label><br />
    ++</div>
    + %   }
    + %     for my $scrip (@scrips) {
    +           <b><% $scrip->Description || loc('Scrip #[_1]',$scrip->id) %></b><br />
    +@@
    + %             my $action = $scrip->ActionObj->Action;
    + %             my @addresses =  $action->$type();
    + %             next unless @addresses;
    +-              <ul>
    ++              <ul class="list-group-compact">
    + %             for my $addr (@addresses) {
    +-                  <li>
    ++                  <li class="list-group-item">
    + %                 my $checked = $submitted{$addr->address} ? not $squelched{$addr->address} : $squelched_config;
    + %                 $m->callback(CallbackName => 'BeforeAddress', Ticket => $TicketObj, Address => $addr, Type => $type, Checked => \$checked);
    + %                 $recips{$addr->address}++;
    +-                  <b><%loc($type)%></b>:
    ++                    <div class="form-row">
    ++                      <div class="col-md-auto">
    ++                        <b><%loc($type)%></b>:
    ++                      </div>
    ++                      <div class="col-md-auto">
    + %                 my $show_checkbox = 1;
    + %                 if ( grep {$_ eq $addr->address} @{$action->{NoSquelch}{$type}} ) {
    + %                     $show_checkbox = 0;
    + %                 }
    +-
    ++                        <div class="custom-control custom-checkbox">
    + %                 if ( $show_checkbox ) {
    +-                      <input type="checkbox" class="checkbox" name="TxnSendMailTo" <% $checked ? 'checked="checked"' : '' |n%> value="<%$addr->address%>" id="TxnSendMailTo-<% $addr->address %>-<% $recips{$addr->address} %>" />
    ++                          <input type="checkbox" class="custom-control-input" name="TxnSendMailTo" <% $checked ? 'checked="checked"' : '' |n%> value="<%$addr->address%>" id="TxnSendMailTo-<% $addr->address %>-<% $recips{$addr->address} %>" />
    + %                 }
    +-                  <label for="TxnSendMailTo-<% $addr->address %>-<% $recips{$addr->address} %>"><& /Elements/ShowUser, Address => $addr &></label>
    ++                          <label <% $show_checkbox ? 'class="custom-control-label"' : '' |n%> for="TxnSendMailTo-<% $addr->address %>-<% $recips{$addr->address} %>"><& /Elements/ShowUser, Address => $addr &></label>
    + %                 $m->callback(CallbackName => 'AfterAddress', Ticket => $TicketObj, Address => $addr, Type => $type);
    + %                 unless ( $show_checkbox ) {
    + %                     if ( $type eq 'Cc' ) {
    +@@
    +                           (<&|/l&>explicit one-time Bcc</&>)
    + %                     }
    + %                 }
    ++                        </div>
    ++                      </div>
    ++                    </div>
    +                   </li>
    + %             }
    +               </ul>
    + %         }
    + %         if (RT->Config->Get('PreviewScripMessages')) {
    +-              <textarea cols="80" rows="5"><% Encode::decode( "UTF-8", $scrip->ActionObj->Action->TemplateObj->MIMEObj->as_string )%></textarea>
    ++              <textarea class="form-control" cols="80" rows="5"><% Encode::decode( "UTF-8", $scrip->ActionObj->Action->TemplateObj->MIMEObj->as_string )%></textarea>
    + %         }
    +           <br />
    + %     }
    +
    +diff --git a/share/html/Helpers/ShowSimplifiedRecipients b/share/html/Helpers/ShowSimplifiedRecipients
    +--- a/share/html/Helpers/ShowSimplifiedRecipients
    ++++ b/share/html/Helpers/ShowSimplifiedRecipients
    +@@
    + my %submitted;
    + $submitted{$_} = 1 for split /,/, $ARGS{TxnRecipients};
    + </%init>
    +-<table>
    + %   if ( scalar(map { keys %{$headers{$_}} } qw(To Cc Bcc)) ) {
    +-<tr>
    +-<td> </td>
    +-<td>
    +-<input type="checkbox" class="checkbox" id="TxnSendMailToAll-Simplified" name="TxnSendMailToAll" value="1">
    +-<label for="TxnSendMailToAll-Simplified"><b><% loc('All recipients') %></b></label>
    +-</td>
    +-</tr>
    ++
    ++<div class="custom-control custom-checkbox">
    ++  <input class="custom-control-input" type="checkbox" id="TxnSendMailToAll-Simplified" name="TxnSendMailToAll" value="1">
    ++  <label class="custom-control-label" for="TxnSendMailToAll-Simplified"><b><% loc('All recipients') %></b></label>
    ++</div>
    + % }
    + % for my $type (qw(To Cc Bcc)) {
    + %     next unless keys %{$headers{$type}} or keys %{$no_squelch{$type}};
    +-<tr>
    +-<td valign="top"><% $type %>:</td>
    +-<td valign="top">
    ++<ul class="list-group-compact">
    ++  <li class="list-group-item">
    ++    <div class="form-row">
    ++      <div class="col-md-auto">
    ++        <% $type %>:
    ++      </div>
    ++      <div class="col-md-auto">
    + %     for my $addr (sort {$a->address cmp $b->address} values %{$headers{$type}}) {
    + %         my $checked = $submitted{$addr->address} ? not $squelched{$addr->address} : $squelched_config;
    + %         $m->callback(CallbackName => 'BeforeAddress', Ticket => $TicketObj, Address => $addr, Type => $type, Checked => \$checked);
    + %         $recips{$addr->address}++;
    +-<input type="checkbox" class="checkbox" name="TxnSendMailTo" <% $checked ? 'checked="checked"' : '' |n%> value="<%$addr->address%>" id="TxnSendMailTo-<% $addr->address %>-<% $recips{$addr->address} %>" />
    +-<label for="TxnSendMailTo-<% $addr->address %>-<% $recips{$addr->address} %>"><& /Elements/ShowUser, Address => $addr &></label>
    ++        <div class="custom-control custom-checkbox">
    ++          <input type="checkbox" name="TxnSendMailTo" <% $checked ? 'checked="checked"' : '' |n%> value="<%$addr->address%>" id="TxnSendMailTo-<% $addr->address %>-<% $recips{$addr->address} %>" class="custom-control-input" />
    ++          <label class="custom-control-label" for="TxnSendMailTo-<% $addr->address %>-<% $recips{$addr->address} %>"><& /Elements/ShowUser, Address => $addr &></label>
    ++        </div>
    + %         $m->callback(CallbackName => 'AfterAddress', Ticket => $TicketObj, Address => $addr, Type => $type);
    +-<br />
    + %     }
    + %     for my $addr (sort {$a->address cmp $b->address} values %{$no_squelch{$type}}) {
    ++<div class="col-md-auto">
    + <label><& /Elements/ShowUser, Address => $addr &></label>
    + %         if ( $type eq 'Cc' ) {
    + (<&|/l&>explicit one-time Cc</&>)
    + %         } else {
    + (<&|/l&>explicit one-time Bcc</&>)
    + %         }
    +-<br />
    ++</div>
    + %     }
    +-</td></tr>
    ++      </div>
    ++    </li>
    ++  </ul>
    + % }
    + % $m->callback( CallbackName => 'AfterRecipients', TicketObj => $TicketObj );
    +-</table>
    + <p>
    + <&|/l, RT->Config->Get('WebPath')."/Ticket/ModifyPeople.html?id=".$TicketObj->Id,
    + &>Uncheck boxes to disable notifications to the listed recipients <b>for this transaction only</b>; persistent squelching is managed on the <a href="[_1]">People page</a>.</&>
     
     diff --git a/share/html/Ticket/Create.html b/share/html/Ticket/Create.html
     --- a/share/html/Ticket/Create.html
    @@ -23,9 +159,12 @@
      </script>
              <div class="hidden old-attach">
     -            <input name="Attach" type="file" /><input type="submit" class="button" name="AddMoreAttach" value="<&|/l&>Add More Files</&>" />
    +-            <input type="hidden" class="hidden" name="UpdateAttach" value="1" />
     +          <div class="custom-file">
    -+            <input class="custom-file-input" name="Attach" type="file" /><input type="submit" class="button" name="AddMoreAttach" value="<&|/l&>Add More Files</&>" />
    -             <input type="hidden" class="hidden" name="UpdateAttach" value="1" />
    ++            <input type="file" id="AddMoreAttach" name="AddMoreAttach" class="custom-file-input" />
    ++            <label class="custom-file-label" for="AddMoreAttach">
    ++              <&|/l&>Add More Files</&>
    ++            </label>
     +          </div>
              </div>
          </span>
    @@ -71,25 +210,16 @@
      % $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 &>
    - %   } 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>
      % }
     -</table>
    -+
      % if ( $editable ) {
    --<i><&|/l&>(Check box to complete)</&></i>
    -+  <i><&|/l&>(Check box to complete)</&></i>
    - % }
    - <hr>
    - % } else {
    + <i><&|/l&>(Check box to complete)</&></i>
    + % }
     @@
      % }
      
    @@ -115,13 +245,6 @@
        <div class="field">
          <span class="label"><&|/l&>Owner</&>:</span>
     @@
    -   </div>
    - </div>
    - </%method>
    -+
    - <%method EditEntry>
    - <%args>
    - $Reminder
      $Ticket
      $Index
      </%args>
    @@ -166,7 +289,7 @@
     +        <div class="label col-md-3">
     +          <&|/l&>Subject</&>:
     +        </div>
    -+        <div class="entry col-md-9">
    ++        <div class="value 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"
    @@ -178,13 +301,13 @@
     +        <div class="label col-md-3">
     +          <&|/l&>Owner</&>:
     +        </div>
    -+        <div class="entry col-md-9">
    ++        <div class="value col-md-9">
     +          <& /Elements/SelectOwner, Name => 'Reminder-Owner-'.$Reminder->id, QueueObj => $Ticket->QueueObj, Default => $Reminder->Owner, DefaultValue => 0  &>
     +        </div>
     +        <div class="label col-md-3">
     +          <&|/l&>Due</&>:
     +        </div>
    -+        <div class="entry col-md-9">
    ++        <div class="value col-md-9">
      % if ( $Reminder->CurrentUserHasRight('ModifyTicket') ) {
     -<& /Elements/SelectDate, Name => 'Reminder-Due-'.$Reminder->id &>
     -% }
    @@ -192,12 +315,14 @@
     -</td>
     -</tr>
     +          <div class="form-row">
    -+            <& /Elements/SelectDate, Name => 'Reminder-Due-'.$Reminder->id &>
    ++            <div class="col-auto">
    ++              <& /Elements/SelectDate, Name => 'Reminder-Due-'.$Reminder->id &>
    ++            </div>
    ++            <div class="col-auto">
    ++              <span class="current-value form-control">(<% $Reminder->DueObj->AsString %>)</span>
    ++            </div>
     +          </div>
     +% }
    -+          <div class="form-row">
    -+            (<% $Reminder->DueObj->AsString %>)
    -+          </div>
     +        </div>
     +      </div>
     +    </div>
    @@ -272,262 +397,63 @@
      
      <span class="filename"><%$key%></span>
     -<ul <% $Selectable ? 'class="selectable"' : '' |n %> >
    -+<ul class="list-group" <% $Selectable ? 'class="selectable"' : '' |n %> >
    ++<ul class="list-group-compact" <% $Selectable ? 'class="selectable"' : '' |n %> >
      % foreach my $rev (@{$documents{$key}}) {
      % if ($rev->ContentLength) {
     -<li>
     +<li class="list-group-item">
      
    ++  <div class="custom-control custom-checkbox">
      % if ($Selectable) {
    -     <label>
    +-    <label>
     -    <input type="checkbox" class="checkbox" name="AttachExisting" value="<% $rev->Id %>" \
     -             <% $is_checked{$rev->Id} ? 'checked' : '' %> />
    -+    <div class="custom-control custom-checkbox">
    -+      <input type="checkbox" class="custom-control-input" name="AttachExisting" value="<% $rev->Id %>" \
    ++      <input type="checkbox" class="custom-control-input" id="AttachExisting-<% $rev->Id %>" name="AttachExisting" value="<% $rev->Id %>" \
     +        <% $is_checked{$rev->Id} ? 'checked' : '' %>
     +      />
    -+      <div class="custom-control-label"></div>
    -+    </div>
    - % }
    - 
    + % }
    + 
    ++<label <% $Selectable ? 'class="custom-control-label"' : '' |n%> for="AttachExisting-<% $rev->Id %>">
      <span class="revision">
    + % if (my $url = RT->System->ExternalStorageURLFor($rev)) {
    + <a href="<%$url%>">
    +@@
    + <% $desc |n%>
    + </a>
    + </span>
    +-
    +-% if ($Selectable) {
    +     </label>
    +-% }
    +-
    ++  </div>
    + </li>
    + % }
    + % }
     
     diff --git a/share/html/Ticket/Elements/ShowBasics b/share/html/Ticket/Elements/ShowBasics
     --- a/share/html/Ticket/Elements/ShowBasics
     +++ b/share/html/Ticket/Elements/ShowBasics
     @@
    - % $m->callback( %ARGS, CallbackName => 'AfterTimeEstimated', TicketObj => $Ticket );
    - % if ($Ticket->TimeWorked) {
    -   <div class="time worked sum field">
    --    <span class="label"><&|/l&>Worked</&>:</span>
    --    <span class="value"><& ShowTime, minutes => $Ticket->TimeWorked &></span>
    -+    <span class="label col-md-3">
    -+      <&|/l&>Worked</&>:
    -+    </span>
    -+    <span class="value col-md-9">
    -+      <& ShowTime, minutes => $Ticket->TimeWorked &>
    -+    </span>
    -   </div>
    - % }
    - % if ( keys %$time_worked ) {
      <div class="time worked by-user field">
    --  <span class="label"><&|/l&>Users</&>:</span>
    --  <span>
    +   <span class="label"><&|/l&>Users</&>:</span>
    +   <span>
     -    <table>
    -+  <span class="label col-md-3">
    -+    <&|/l&>Users</&>:
    -+  </span>
      %   for my $user ( keys %$time_worked ) {
     -      <tr>
     -        <td class="value"><% $user %>:</td>
     -        <td class="value"><& /Ticket/Elements/ShowTime, minutes => $time_worked->{$user} &></td>
     -      </tr>
    -+  <div class="form-row">
    -+    <span class="value col-md-9">
    -+      <% $user %>: <& /Ticket/Elements/ShowTime, minutes => $time_worked->{$user} &>
    -+    </span>
    -+  </div>
    ++    <div class="form-row">
    ++      <div class="value"><% $user %>:</div>
    ++      <div class="value"><& /Ticket/Elements/ShowTime, minutes => $time_worked->{$user} &></div>
    ++    </div>
      %   }
     -    </table>
    --  </span>
    ++    </div>
    +   </span>
      </div>
      % }
    - % $m->callback( %ARGS, CallbackName => 'AfterTimeWorked', TicketObj => $Ticket );
    -
    -diff --git a/share/html/Ticket/Elements/ShowRequestor b/share/html/Ticket/Elements/ShowRequestor
    ---- a/share/html/Ticket/Elements/ShowRequestor
    -+++ b/share/html/Ticket/Elements/ShowRequestor
    -@@
    - <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="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.
    -@@
    - <& 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>
    - % }
    - 
    - % $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 class="list-group">
    - % my $index = 1;
    - % for my $status ( @$status_order ) {
    --    <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">\
    - % } 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++ %>">\
    - % }
    - <% $status_link_text->{$status} %></a>
    --    </li>
    -+        </li>
    - % }
    --  </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 &>
    - % } 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>
    - % }
    --</div>
    -+      </div>
    - % }
    - 
    - % my $grouplimit = RT->Config->Get('MoreAboutRequestorGroupsLimit');
    - % if ( $ShowGroups and defined $grouplimit ) {
    --<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>]
    - % }
    --  </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>
    - %# end of requestors loop
    - 
    - % $m->callback( %ARGS, CallbackName => 'AfterRequestors' );
    - 
    --</div>
    - </&>
    - <%INIT>
    - my $show_privileged = RT->Config->Get('ShowMoreAboutPrivilegedUsers');
    -
    -diff --git a/share/html/Ticket/Elements/ShowSummary b/share/html/Ticket/Elements/ShowSummary
    ---- a/share/html/Ticket/Elements/ShowSummary
    -+++ b/share/html/Ticket/Elements/ShowSummary
    -@@
    - %# those contributions and any derivatives thereof.
    - %#
    - %# END BPS TAGGED BLOCK }}}
    --<div class="row ticket-summary">
    --  <div class="boxcontainer col-md-6">
    -+<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',
    --    &><& /Ticket/Elements/ShowBasics, Ticket => $Ticket &></&>
    -+      &><& /Ticket/Elements/ShowBasics, Ticket => $Ticket &>
    -+    </&>
    - % $m->callback( %ARGS, CallbackName => 'AfterBasics' );
    -     <& /Elements/ShowCustomFieldCustomGroupings,
    --        Object       => $Ticket,
    --        title_href   => ($can_modify || $can_modify_cf) ? RT->Config->Get('WebPath')."/Ticket/Modify.html" : "",
    --        &>
    --
    -+      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',
    -+      (($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') &>
    -@@
    -     <& /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"),
    --        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">
    --            <& /Ticket/Elements/Reminders, Ticket => $Ticket, ShowCompleted => 0 &>
    --        </form>
    -+      <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"),
    --        ($can_modify ? (title_href => RT->Config->Get('WebPath')."/Ticket/ModifyDates.html?id=".$Ticket->Id) : ()),
    --        class => 'ticket-info-dates',
    -+      ($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 &>
    -+    <& /Ticket/Elements/ShowAssets, Ticket => $Ticket &>
    - % $m->callback( %ARGS, CallbackName => 'LinksExtra', extra => \@extra );
    -     <&| /Widgets/TitleBox, title => loc('Links'),
    --        ($can_modify ? (title_href => RT->Config->Get('WebPath')."/Ticket/ModifyLinks.html?id=".$Ticket->Id) : ()),
    --        class => 'ticket-info-links',
    --        @extra,
    -+      ($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>
     
     diff --git a/share/html/Ticket/Elements/ShowUpdateStatus b/share/html/Ticket/Elements/ShowUpdateStatus
     --- a/share/html/Ticket/Elements/ShowUpdateStatus
    @@ -554,70 +480,6 @@
      <%ARGS>
      $Ticket
     
    -diff --git a/share/html/Ticket/Elements/UpdateCc b/share/html/Ticket/Elements/UpdateCc
    ---- a/share/html/Ticket/Elements/UpdateCc
    -+++ b/share/html/Ticket/Elements/UpdateCc
    -@@
    -         <div class="OneTimeCcs hidden">
    - %   }
    - <i class="label">(<&|/l&>check to add</&>)</i>
    --<input type="checkbox" class="checkbox" id="AllSuggestedCc" name="AllSuggestedCc" value="1" onclick="setCheckbox(this, /^UpdateCc-/, null, true)">
    --<label for="AllSuggestedCc"><% loc('All recipients') %></label>
    -+<div class="custom-control custom-checkbox">
    -+  <input type="checkbox" class="custom-control-input" id="AllSuggestedCc" name="AllSuggestedCc" value="1" onclick="setCheckbox(this, /^UpdateCc-/, null, true)">
    -+  <label class="custom-control-label" for="AllSuggestedCc"><% loc('All recipients') %></label>
    -+</div>
    - %}
    - %foreach my $addr ( @one_time_Ccs ) {
    - <span class="ticket-update-suggested-cc">
    --<input
    -+<div class="custom-control custom-checkbox">
    -+  <input
    -     id="UpdateCc-<%$addr%>"
    -     name="UpdateCc-<%$addr%>"
    --    class="onetime onetimecc"
    -+    class="onetime onetimecc custom-control-input"
    -     type="checkbox"
    - % my $clean_addr = $txn_addresses{$addr}->format;
    -     onClick="checkboxToInput('UpdateCc', <% "UpdateCc-$addr" |n,j%>, <%$clean_addr|n,j%> );"
    -     <% $ARGS{'UpdateCc-'.$addr} ? 'checked="checked"' : ''%> >
    --      <label for="UpdateCc-<%$addr%>"><& /Elements/ShowUser, Address => $txn_addresses{$addr}&></label>
    -+      <label class="custom-control-label" for="UpdateCc-<%$addr%>"><& /Elements/ShowUser, Address => $txn_addresses{$addr}&></label>
    -+</div>
    - </span>
    - %}
    - %if (@one_time_Ccs && $hide_cc_suggestions) {
    -@@
    -         <div class="OneTimeCcs hidden">
    - %   }
    - <i class="label">(<&|/l&>check to add</&>)</i>
    --<input type="checkbox" class="checkbox" id="AllSuggestedBcc" name="AllSuggestedBcc" value="1" onclick="setCheckbox(this, /^UpdateBcc-/, null, true)">
    --<label for="AllSuggestedBcc"><% loc('All recipients') %></label>
    -+<div class="custom-control custom-checkbox">
    -+  <input type="checkbox" class="custom-control-input" id="AllSuggestedBcc" name="AllSuggestedBcc" value="1" onclick="setCheckbox(this, /^UpdateBcc-/, null, true)">
    -+  <label class="custom-control-label" for="AllSuggestedBcc"><% loc('All recipients') %></label>
    -+</div>
    - %}
    - %foreach my $addr ( @one_time_Ccs ) {
    - <span class="ticket-update-suggested-cc">
    --<input
    -+<div class="custom-control custom-checkbox">
    -+  <input
    -     id="UpdateBcc-<%$addr%>"
    -     name="UpdateBcc-<%$addr%>"
    --    class="onetime onetimebcc"
    -+    class="onetime onetimebcc custom-control-input"
    -     type="checkbox"
    - % my $clean_addr = $txn_addresses{$addr}->format;
    -     onClick="checkboxToInput('UpdateBcc', <% "UpdateBcc-$addr" |n,j%>, <%$clean_addr|n,j%> );"
    -     <% $ARGS{'UpdateBcc-'.$addr} ? 'checked="checked"' : ''%> >
    --      <label for="UpdateBcc-<%$addr%>"><& /Elements/ShowUser, Address => $txn_addresses{$addr}&></label>
    -+      <label class="custom-control-label" for="UpdateBcc-<%$addr%>"><& /Elements/ShowUser, Address => $txn_addresses{$addr}&></label>
    -+</div>
    - </span>
    - %}
    - %if (@one_time_Ccs && $hide_cc_suggestions) {
    -
     diff --git a/share/html/Ticket/Forward.html b/share/html/Ticket/Forward.html
     --- a/share/html/Ticket/Forward.html
     +++ b/share/html/Ticket/Forward.html
    @@ -645,7 +507,7 @@
     +    <div class="col-md-3 label">
     +      <% loc('Direction') %>
     +    </div>
    -+    <div class="col-md-9">
    ++    <div class="col-md-9 value">
     +      <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>
    @@ -697,17 +559,21 @@
     +      <% loc('Show as well') %>:
     +    </div>
     +    <div class="col-md-9">
    ++      <div class="form-row">
      % 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 class="col-md-auto">
    ++          <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>
    + % }
    +-<br />
     +      </div>
    - % }
    --<br />
     +    </div>
     +  </div>
      
    @@ -794,9 +660,11 @@
      % $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 class="col-md-auto">
    ++          <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>
     +        </div>
      % }
     -</td></tr>
    @@ -885,6 +753,26 @@
      % $m->callback( %ARGS, CallbackName => 'AfterSubject' );
      </span></div>
      
    +
    +diff --git a/share/static/css/base-responsive/ticket-form.css b/share/static/css/base-responsive/ticket-form.css
    +--- a/share/static/css/base-responsive/ticket-form.css
    ++++ b/share/static/css/base-responsive/ticket-form.css
    +@@
    +     float: right;
    + }
    + 
    +-#recipients label {
    +-    padding-left: 2em;
    +-}
    +-
    +-#recipients input.checkbox {
    +-    position: absolute;
    +-    margin-left: 0.5em;
    +-}
    +-
    + .refreshing {
    +     opacity: 0.3;
    + }
     
     diff --git a/t/web/reminders.t b/t/web/reminders.t
     --- a/t/web/reminders.t



More information about the rt-commit mailing list