[Rt-commit] rt branch, 4.6-theme/search-pages, created. rt-4.4.4-266-g6b80116a4

Craig Kaiser craig at bestpractical.com
Thu May 30 13:03:01 EDT 2019


The branch, 4.6-theme/search-pages has been created
        at  6b80116a4671adeeaeac9251298865b09f97c0de (commit)

- Log -----------------------------------------------------------------
commit 6b80116a4671adeeaeac9251298865b09f97c0de
Author: Craig Kaiser <craig at bestpractical.com>
Date:   Wed May 29 11:48:07 2019 -0400

    Migrate search pages to elevator theme

diff --git a/share/html/Elements/BulkCustomFields b/share/html/Elements/BulkCustomFields
index 4f1f1ccf8..0d9ad881a 100644
--- a/share/html/Elements/BulkCustomFields
+++ b/share/html/Elements/BulkCustomFields
@@ -45,18 +45,30 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<table class="bulk-edit-custom-fields">
+<div class="bulk-edit-custom-fields">
 
-<tr>
-<th><&|/l&>Name</&></th>
-<th><&|/l&>Add values</&></th>
-<th><&|/l&>Delete values</&></th>
-</tr>
+  <div class="form-row">
+    <div class="col-md-4 label text-left">
+      <&|/l&>Name</&>
+    </div>
+    <div class="col-md-4 label text-left">
+      <&|/l&>Add values</&>
+    </div>
+    <div class="col-md-4 label text-left">
+      <&|/l&>Delete values</&>
+    </div>
+  </div>
 % my $i = 0;
 % while (my $cf = $CustomFields->Next) {
-<tr class="<% ++$i%2 ? 'oddline': 'evenline' %>">
-<td class="label"><% $cf->Name %><br />
-<em>(<% $cf->EntryHint // '' %>)</em></td>
+  <div class="form-row <% ++$i%2 ? 'oddline': 'evenline' %>">
+    <div class="col-md-4 label text-left">
+      <div class="form-row">
+        <% $cf->Name %>
+      </div>
+      <div class="form-row">
+        <em>(<% $cf->EntryHint // '' %>)</em>
+      </div>
+    </div>
 % my $rows = 5;
 % my $cf_id = $cf->id;
 % my @add = (NamePrefix => 'Bulk-Add-CustomField-', CustomField => $cf, Rows => $rows,
@@ -66,41 +78,64 @@
 %   MaxValues => 0, Rows => $rows, Multiple => 1, Cols => 25,
 %   Default => $ARGS{"Bulk-Delete-CustomField-$cf_id-Values"} || $ARGS{"Bulk-Delete-CustomField-$cf_id-Value"}, );
 % if ($cf->Type eq 'Select') {
-<td><& /Elements/EditCustomFieldSelect, @add &></td>
-<td><& /Elements/EditCustomFieldSelect, @del &><br />
+    <div class="col-md-4 value">
+      <& /Elements/EditCustomFieldSelect, @add &>
+    </div>
+    <div class="col-md-4 value">
+      <& /Elements/EditCustomFieldSelect, @del &>
 % } elsif ($cf->Type eq 'Combobox') {
-<td><& /Elements/EditCustomFieldCombobox, @add &></td>
-<td><& /Elements/EditCustomFieldCombobox, @del &><br />
+    <div class="col-md-4 value">
+      <& /Elements/EditCustomFieldCombobox, @add &>
+    </div>
+    <div class="col-md-4 value">
+      <& /Elements/EditCustomFieldCombobox, @del &>
 % } elsif ($cf->Type eq 'Freeform') {
-<td><& /Elements/EditCustomFieldFreeform, @add &></td>
-<td><& /Elements/EditCustomFieldFreeform, @del &><br />
+    <div class="col-md-4 value">
+      <& /Elements/EditCustomFieldFreeform, @add &>
+    </div>
+    <div class="col-md-4 value">
+      <& /Elements/EditCustomFieldFreeform, @del &>
 % } elsif ($cf->Type eq 'Text') {
-<td><& /Elements/EditCustomFieldText, @add &></td>
-<td>
+    <div class="col-md-4 value">
+      <& /Elements/EditCustomFieldText, @add &>
 % } elsif ($cf->Type eq 'Wikitext') {
-<td><& /Elements/EditCustomFieldWikitext, @add &></td>
-<td>
+    <div class="col-md-4 value">
+      <& /Elements/EditCustomFieldWikitext, @add &>
 % } elsif ($cf->Type eq 'Date') {
-<td><& /Elements/EditCustomFieldDate, @add &></td>
-<td><& /Elements/EditCustomFieldDate, @del &><br />
+    <div class="col-md-4 value">
+      <& /Elements/EditCustomFieldDate, @add &>
+    </div>
+    <div class="col-md-4 value">
+      <& /Elements/EditCustomFieldDate, @del &>
 % } elsif ($cf->Type eq 'DateTime') {
 % # Pass datemanip format to prevent another tz date conversion
-<td><& /Elements/EditCustomFieldDateTime, @add, Default => undef, Format => 'datemanip' &></td>
-<td><& /Elements/EditCustomFieldDateTime, @del, Default => undef, Format => 'datemanip' &><br />
+    <div class="col-md-4 value">
+      <& /Elements/EditCustomFieldDateTime, @add, Default => undef, Format => 'datemanip' &>
+    </div>
+    <div class="col-md-4 value">
+      <& /Elements/EditCustomFieldDateTime, @del, Default => undef, Format => 'datemanip' &>
 % } elsif ($cf->Type eq 'Autocomplete') {
-<td><& /Elements/EditCustomFieldAutocomplete, @add &></td>
-<td><& /Elements/EditCustomFieldAutocomplete, @del &><br />
+    <div class="col-md-4 value">
+      <& /Elements/EditCustomFieldAutocomplete, @add &>
+    </div>
+    <div class="col-md-4 value">
+      <& /Elements/EditCustomFieldAutocomplete, @del &>
 % } else {
-    <td colspan="2"><em><&|/l&>(Unsupported custom field type)</&></em></td>
+    <div class="col-md-4 value">
+      <em><&|/l&>(Unsupported custom field type)</&></em>
+    </div>
+  </div>
 %   $RT::Logger->info("Unknown CustomField type: " . $cf->Type);
 %   next
 % }
-  <label><input type="checkbox" name="Bulk-Delete-CustomField-<% $cf_id %>-AllValues" value="1">
-    <em><&|/l&>(Check to delete all values)</&></em></label>
-</td>
-</tr>
+      <div class="custom-control custom-checkbox">
+        <input type="checkbox" class="custom-control-input" id="Bulk-Delete-CustomField-<% $cf_id %>-AllValues" name="Bulk-Delete-CustomField-<% $cf_id %>-AllValues" value="1">
+        <label class="custom-control-label" for="Bulk-Delete-CustomField-<% $cf_id %>-AllValues"><em><&|/l&>(Check to delete all values)</&></em></label>
+      </div>
+    </div>
+  </div>
 % }
-</table>
+</div>
 <%ARGS>
 $CustomFields
 </%ARGS>
diff --git a/share/html/Elements/BulkLinks b/share/html/Elements/BulkLinks
index 59ad104c4..5ae43eaa9 100644
--- a/share/html/Elements/BulkLinks
+++ b/share/html/Elements/BulkLinks
@@ -45,104 +45,151 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<table width="100%">
-  <tr>
-    <td valign="top" width="50%">
-      <h3><&|/l&>Current Links</&></h3>
-<table>
-  <tr>
-    <td class="labeltop"><&|/l&>Depends on</&>:</td>
-    <td class="value">
+<div class="form-row">
+  <div class="col-md-6">
+<h3><&|/l&>Current Links</&></h3>
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Depends on</&>:
+  </div>
+  <div class="col-md-9 value">
+    <div class="form-row">
 % if ( $hash{DependsOn} ) {
 % for my $link ( values %{$hash{DependsOn}} ) {
       <& EditLink, Link => $link, Mode => 'Target' &>
 % } }
-    </td>
-  </tr>
-  <tr>
-    <td class="labeltop"><&|/l&>Depended on by</&>:</td>
-    <td class="value">
+    </div>
+  </div>
+</div>
+
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Depended on by</&>:
+  </div>
+  <div class="col-md-9 value">
 % if ( $hash{DependedOnBy} ) {
 % for my $link ( values %{$hash{DependedOnBy}} ) {
       <& EditLink, Link => $link, Mode => 'Base' &>
 % } }
-    </td>
-  </tr>
-  <tr>
-    <td class="labeltop"><&|/l&>Parents</&>:</td>
-    <td class="value">
+  </div>
+</div>
+
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Parents</&>:
+  </div>
+  <div class="col-md-9 value">
 % if ( $hash{MemberOf} ) {
 % for my $link ( values %{$hash{MemberOf}} ) {
       <& EditLink, Link => $link, Mode => 'Target' &>
 % } }
-    </td>
-  </tr>
-  <tr>
-    <td class="labeltop"><&|/l&>Children</&>:</td>
-    <td class="value">
+  </div>
+</div>
+
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Children</&>:
+  </div>
+  <div class="col-md-9 value">
 % if ( $hash{Members} ) {
 % for my $link ( values %{$hash{Members}} ) {
       <& EditLink, Link => $link, Mode => 'Base' &>
 % } }
-    </td>
-  </tr>
-  <tr>
-    <td class="labeltop"><&|/l&>Refers to</&>:</td>
-    <td class="value">
+  </div>
+</div>
+
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Refers to</&>:
+  </div>
+  <div class="col-md-9 value">
 % if ( $hash{RefersTo} ) {
 % for my $link ( values %{$hash{RefersTo}} ) {
       <& EditLink, Link => $link, Mode => 'Target' &>
 % } }
-    </td>
-  </tr>
-  <tr>
-    <td class="labeltop"><&|/l&>Referred to by</&>:</td>
-    <td class="value">
+  </div>
+</div>
+
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Referred to by</&>:
+  </div>
+  <div class="col-md-9 value">
 % if ( $hash{ReferredToBy} ) {
 % for my $link ( values %{$hash{ReferredToBy}} ) {
       <& EditLink, Link => $link, Mode => 'Base' &>
 % } }
-    </td>
-  </tr>
-  <tr>
-    <td></td>
-    <td><i><&|/l&>(Check box to delete)</&></i></td>
-  </tr>
-</table>
-</td>
-<td valign="top">
+  </div>
+</div>
+
+<div class="form-row">
+  <div class="col-md-3"></div>
+  <div class="col-md-9">
+    <i><&|/l&>(Check box to delete)</&></i>
+  </div>
+</div>
+</div>
+
+<div class="col-md-6">
 <h3><&|/l&>New Links</&></h3>
-<em><&|/l&>Enter tickets or URIs to link to. Separate multiple entries with spaces.</&>
-</em><br />
-<table>
-  <tr>
-    <td class="label"><&|/l&>Depends on</&>:</td>
-    <td class="entry"><input type="text" name="<% $record_type %>-DependsOn" data-autocomplete="Tickets" data-autocomplete-multiple="1" value="<% $ARGS{ $record_type .'-DependsOn' } || '' %>" /></td>
-  </tr>
-  <tr>
-    <td class="label"><&|/l&>Depended on by</&>:</td>
-    <td class="entry"><input type="text" name="DependsOn-<% $record_type %>" data-autocomplete="Tickets" data-autocomplete-multiple="1" value="<% $ARGS{ 'DependsOn-'. $record_type } || '' %>" /></td>
-  </tr>
-  <tr>
-    <td class="label"><&|/l&>Parents</&>:</td>
-    <td class="entry"><input type="text" name="<% $record_type %>-MemberOf" data-autocomplete="Tickets" data-autocomplete-multiple="1" value="<% $ARGS{ $record_type .'-MemberOf'} || '' %>" /></td>
-  </tr>
-  <tr>
-    <td class="label"><&|/l&>Children</&>:</td>
-    <td class="entry"> <input type="text" name="MemberOf-<% $record_type %>" data-autocomplete="Tickets" data-autocomplete-multiple="1" value="<% $ARGS{ 'MemberOf-'. $record_type } || '' %>" /></td>
-  </tr>
-  <tr>
-    <td class="label"><&|/l&>Refers to</&>:</td>
-    <td class="entry"><input type="text" name="<% $record_type %>-RefersTo" data-autocomplete="Tickets" data-autocomplete-multiple="1" value="<% $ARGS{ $record_type .'-RefersTo'} || '' %>" /></td>
-  </tr>
-  <tr>
-    <td class="label"><&|/l&>Referred to by</&>:</td>
-    <td class="entry"> <input type="text" name="RefersTo-<% $record_type %>" data-autocomplete="Tickets" data-autocomplete-multiple="1" value="<% $ARGS{ 'RefersTo-'. $record_type } || '' %>" /></td>
-  </tr>
-</table>
-</td>
-</tr>
-</table>
+<em><&|/l&>Enter tickets or URIs to link to. Separate multiple entries with spaces.</&></em>
+
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Depends on</&>:
+  </div>
+  <div class="col-md-9 value">
+    <input class="form-control" type="text" name="<% $record_type %>-DependsOn" data-autocomplete="Tickets" data-autocomplete-multiple="1" value="<% $ARGS{ $record_type .'-DependsOn' } || '' %>" />
+  </div>
+</div>
+
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Depended on by</&>:
+  </div>
+  <div class="col-md-9 value">
+    <input class="form-control" type="text" name="DependsOn-<% $record_type %>" data-autocomplete="Tickets" data-autocomplete-multiple="1" value="<% $ARGS{ 'DependsOn-'. $record_type } || '' %>" />
+  </div>
+</div>
+
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Parents</&>:
+  </div>
+  <div class="col-md-9 value">
+    <input class="form-control" type="text" name="<% $record_type %>-MemberOf" data-autocomplete="Tickets" data-autocomplete-multiple="1" value="<% $ARGS{ $record_type .'-MemberOf'} || '' %>" />
+  </div>
+</div>
+
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Children</&>:
+  </div>
+  <div class="col-md-9 value">
+    <input class="form-control" type="text" name="MemberOf-<% $record_type %>" data-autocomplete="Tickets" data-autocomplete-multiple="1" value="<% $ARGS{ 'MemberOf-'. $record_type } || '' %>" />
+  </div>
+</div>
+
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Refers to</&>:
+  </div>
+  <div class="col-md-9 value">
+    <input class="form-control" type="text" name="<% $record_type %>-RefersTo" data-autocomplete="Tickets" data-autocomplete-multiple="1" value="<% $ARGS{ $record_type .'-RefersTo'} || '' %>" />
+  </div>
+</div>
+
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Referred to by</&>:
+  </div>
+  <div class="col-md-9 value">
+    <input class="form-control" type="text" name="RefersTo-<% $record_type %>" data-autocomplete="Tickets" data-autocomplete-multiple="1" value="<% $ARGS{ 'RefersTo-'. $record_type } || '' %>" />
+  </div>
+</div>
+</div>
+
+</div>
 
 <%ARGS>
 $Collection
diff --git a/share/html/Search/Bulk.html b/share/html/Search/Bulk.html
index 1e6649358..c277b7da4 100644
--- a/share/html/Search/Bulk.html
+++ b/share/html/Search/Bulk.html
@@ -71,124 +71,266 @@
 
 <hr />
 
-<& /Elements/Submit, Label => loc('Update'), CheckboxNameRegex => '/^UpdateTicket(All)?$/', CheckAll => 1, ClearAll => 1 &>
-<br />
+<div class="form-row">
+  <div class="col-md-12">
+    <& /Elements/Submit, Label => loc('Update'), CheckboxNameRegex => '/^UpdateTicket(All)?$/', CheckAll => 1, ClearAll => 1 &>
+  </div>
+</div>
+
 <&|/Widgets/TitleBox, title => $title &>
-<table>
-<tr>
-<td valign="top">
-<table>
-<tr><td class="label"> <&|/l&>Make Owner</&>: </td>
-<td class="value"> <& /Elements/SelectOwner, Name => "Owner", Default => $ARGS{Owner} || '' &>
-<label>(<input type="checkbox" class="checkbox" name="ForceOwnerChange"
-<% $ARGS{ForceOwnerChange} ? 'checked="checked"' : '' %> /> <&|/l&>Force change</&>)</label></td></tr>
-<tr><td class="label"> <&|/l&>Add Requestor</&>: </td>
-<td class="value"> <& /Elements/EmailInput, Name => "AddRequestor", Size=> 20, Default => $ARGS{AddRequestor} &> </td></tr>
-<tr><td class="label"> <&|/l&>Remove Requestor</&>: </td>
-<td class="value"> <& /Elements/EmailInput, Name => "DeleteRequestor", Size=> 20, Default => $ARGS{DeleteRequestor} &> </td></tr>
-<tr><td class="label"> <&|/l&>Add Cc</&>: </td>
-<td class="value"> <& /Elements/EmailInput, Name => "AddCc", Size=> 20, Default => $ARGS{AddCc} &> </td></tr>
-<tr><td class="label"> <&|/l&>Remove Cc</&>: </td>
-<td class="value"> <& /Elements/EmailInput, Name => "DeleteCc", Size=> 20, Default => $ARGS{DeleteCc} &> </td></tr>
-<tr><td class="label"> <&|/l&>Add AdminCc</&>: </td>
-<td class="value"> <& /Elements/EmailInput, Name => "AddAdminCc", Size=> 20, Default => $ARGS{AddAdminCc} &> </td></tr>
-<tr><td class="label"> <&|/l&>Remove AdminCc</&>: </td>
-<td class="value"> <& /Elements/EmailInput, Name => "DeleteAdminCc", Size=> 20, Default => $ARGS{DeleteAdminCc} &> </td></tr>
+  <div class="form-row">
+    <div class="col-md-3 label">
+      <&|/l&>Make Owner</&>:
+    </div>
+    <div class="col-md-9 value">
+      <& /Elements/SelectOwner, Name => "Owner", Default => $ARGS{Owner} || '' &>
+    </div>
+  </div>
+
+  <div class="form-row">
+    <div class="col-md-3 label"></div>
+    <div class="custom-control custom-checkbox col-md-9 value">
+      <input type="checkbox" id="ForceOwnerChange" class="checkbox custom-control-input" name="ForceOwnerChange"
+        <% $ARGS{ForceOwnerChange} ? 'checked="checked"' : '' %>
+      />
+      <label for="ForceOwnerChange" class="custom-control-label">(<&|/l&>Force change</&>)</label>
+    </div>
+  </div>
+
+  <div class="form-row">
+    <div class="col-md-3 label">
+      <&|/l&>Add Requestor</&>:
+    </div>
+    <div class="col-md-9 value">
+      <& /Elements/EmailInput, Name => "AddRequestor", Size=> 20, Default => $ARGS{AddRequestor} &>
+    </div>
+  </div>
+
+  <div class="form-row">
+    <div class="col-md-3 label">
+      <&|/l&>Remove Requestor</&>:
+    </div>
+    <div class="col-md-9 value">
+      <& /Elements/EmailInput, Name => "DeleteRequestor", Size=> 20, Default => $ARGS{DeleteRequestor} &>
+    </div>
+  </div>
+
+  <div class="form-row">
+    <div class="col-md-3 label">
+      <&|/l&>Add Cc</&>:
+    </div>
+    <div class="col-md-9 value">
+      <& /Elements/EmailInput, Name => "AddCc", Size=> 20, Default => $ARGS{AddCc} &>
+    </div>
+  </div>
+
+  <div class="form-row">
+    <div class="col-md-3 label">
+      <&|/l&>Remove Cc</&>:
+    </div>
+    <div class="col-md-9 value">
+      <& /Elements/EmailInput, Name => "DeleteCc", Size=> 20, Default => $ARGS{DeleteCc} &>
+    </div>
+  </div>
+
+  <div class="form-row">
+    <div class="col-md-3 label">
+      <&|/l&>Add AdminCc</&>:
+    </div>
+    <div class="col-md-9 value">
+      <& /Elements/EmailInput, Name => "AddAdminCc", Size=> 20, Default => $ARGS{AddAdminCc} &>
+    </div>
+  </div>
+
+  <div class="form-row">
+    <div class="col-md-3 label">
+      <&|/l&>Remove AdminCc</&>:
+    </div>
+    <div class="col-md-9 value">
+      <& /Elements/EmailInput, Name => "DeleteAdminCc", Size=> 20, Default => $ARGS{DeleteAdminCc} &>
+    </div>
+  </div>
 
 % my $single_roles = RT::CustomRoles->new($session{CurrentUser});
 % $single_roles->LimitToSingleValue;
 % $single_roles->LimitToObjectId($_) for keys %$seen_queues;
 % while (my $role = $single_roles->Next) {
-<tr>
-<td class="label"> <&|/l, $role->Name &>Make [_1]</&>: </td>
-<td class="value"><& /Elements/SingleUserRoleInput, role => $role, ShowPlaceholder => 0, ShowEntryHint => 0, Size => 20, Default => $ARGS{"RT::CustomRole-" . $role->Id} &></td>
-</tr>
+  <div class="form-row">
+    <div class="col-md-3 label">
+      <&|/l, $role->Name &>Make [_1]</&>:
+    </div>
+    <div class="col-md-9 value">
+      <& /Elements/SingleUserRoleInput, role => $role, ShowPlaceholder => 0, ShowEntryHint => 0, Size => 20, Default => $ARGS{"RT::CustomRole-" . $role->Id} &>
+    </div>
+  </div>
 % }
 
 % my $multi_roles = RT::CustomRoles->new($session{CurrentUser});
 % $multi_roles->LimitToMultipleValue;
 % $multi_roles->LimitToObjectId($_) for keys %$seen_queues;
 % while (my $role = $multi_roles->Next) {
-<tr>
-<td class="label"> <&|/l, $role->Name &>Add [_1]</&>: </td>
-<td class="value"> <& /Elements/EmailInput, Name => "AddRT::CustomRole-" . $role->Id, Size=> 20, Default => $ARGS{"AddRT::CustomRole-" . $role->Id} &> </td>
-</tr>
-<tr>
-<td class="label"> <&|/l, $role->Name &>Remove [_1]</&>: </td>
-<td class="value"> <& /Elements/EmailInput, Name => "DeleteRT::CustomRole-" . $role->Id, Size=> 20, Default => $ARGS{"DeleteRT::CustomRole-" . $role->Id} &> </td>
-</tr>
+  <div class="form-row">
+    <div class="col-md-3 label">
+      <&|/l, $role->Name &>Add [_1]</&>:
+    </div>
+    <div class="col-md-9 value">
+      <& /Elements/EmailInput, Name => "AddRT::CustomRole-" . $role->Id, Size=> 20, Default => $ARGS{"AddRT::CustomRole-" . $role->Id} &>
+    </div>
+  </div>
+
+  <div class="form-row">
+    <div class="col-md-3 label">
+      <&|/l, $role->Name &>Remove [_1]</&>:
+    </div>
+    <div class="col-md-9 value">
+      <& /Elements/EmailInput, Name => "DeleteRT::CustomRole-" . $role->Id, Size=> 20, Default => $ARGS{"DeleteRT::CustomRole-" . $role->Id} &>
+    </div>
+  </div>
 % }
 
-</table>
-</td>
-<td valign="top">
-<table>
-<tr><td class="label"> <&|/l&>Make subject</&>: </td>
-<td class="value"> <input type="text" name="Subject" size="20" value="<% $ARGS{Subject} || '' %>"/> </td></tr>
-<tr><td class="label"> <&|/l&>Make priority</&>: </td>
-<td class="value"> <& /Elements/SelectPriority, Name => "Priority", Default => $ARGS{Priority} &> </td></tr>
-<tr><td class="label"> <&|/l&>Make queue</&>: </td>
-<td class="value"> <& /Elements/SelectQueue, Name => "Queue", Default => $ARGS{Queue} &> </td></tr>
-<tr><td class="label"> <&|/l&>Make Status</&>: </td>
-<td class="value"> <& /Ticket/Elements/SelectStatus, Name => "Status", Default => $ARGS{Status}, Queues => $seen_queues &> </td></tr>
+
+  <div class="form-row">
+    <div class="col-md-3 label">
+      <&|/l&>Make subject</&>:
+    </div>
+    <div class="col-md-9 value">
+      <input class="form-control" type="text" name="Subject" size="20" value="<% $ARGS{Subject} || '' %>"/>
+    </div>
+  </div>
+
+  <div class="form-row">
+    <div class="col-md-3 label">
+      <&|/l&>Make priority</&>:
+    </div>
+    <div class="col-md-9 value">
+      <& /Elements/SelectPriority, Name => "Priority", Default => $ARGS{Priority} &>
+    </div>
+  </div>
+
+  <div class="form-row">
+    <div class="col-md-3 label">
+      <&|/l&>Make queue</&>:
+    </div>
+    <div class="col-md-9 value">
+      <& /Elements/SelectQueue, Name => "Queue", Default => $ARGS{Queue} &>
+    </div>
+  </div>
+
+  <div class="form-row">
+    <div class="col-md-3 label">
+      <&|/l&>Make Status</&>:
+    </div>
+    <div class="col-md-9 value">
+      <& /Ticket/Elements/SelectStatus, Name => "Status", Default => $ARGS{Status}, Queues => $seen_queues &>
+    </div>
+  </div>
+
 % if ($hasSLA) {
-<tr><td class="label"> <&|/l&>Make SLA</&>: </td>
-<td class="value"> <& /Elements/SelectSLA, Name => "SLA", Default => $ARGS{SLA} &> </td></tr>
+  <div class="form-row">
+    <div class="col-md-3 label">
+      <&|/l&>Make SLA</&>:
+    </div>
+    <div class="col-md-9 value">
+      <& /Elements/SelectSLA, Name => "SLA", Default => $ARGS{SLA} &>
+    </div>
+  </div>
 % }
-<tr><td class="label"> <&|/l&>Make date Starts</&>: </td>
-<td class="value"> <& /Elements/SelectDate, Name => "Starts_Date", Default => $ARGS{Starts_Date} || '' &> </td></tr>
-<tr><td class="label"> <&|/l&>Make date Started</&>: </td>
-<td class="value"> <& /Elements/SelectDate, Name => "Started_Date", Default => $ARGS{Started_Date} || '' &> </td></tr>
-<tr><td class="label"> <&|/l&>Make date Told</&>: </td>
-<td class="value"> <& /Elements/SelectDate, Name => "Told_Date", Default => $ARGS{Told_Date} || '' &> </td></tr>
-<tr><td class="label"> <&|/l&>Make date Due</&>: </td>
-<td class="value"> <& /Elements/SelectDate, Name => "Due_Date", Default => $ARGS{Due_Date} || '' &> </td></tr>
-</table>
-
-</td>
-</tr>
-</table>
+
+  <div class="form-row">
+    <div class="col-md-3 label">
+      <&|/l&>Make date Starts</&>:
+    </div>
+    <div class="col-md-9 value">
+      <& /Elements/SelectDate, Name => "Starts_Date", Default => $ARGS{Starts_Date} || '' &>
+    </div>
+  </div>
+
+  <div class="form-row">
+    <div class="col-md-3 label">
+      <&|/l&>Make date Started</&>:
+    </div>
+    <div class="col-md-9 value">
+      <& /Elements/SelectDate, Name => "Started_Date", Default => $ARGS{Started_Date} || '' &>
+    </div>
+  </div>
+
+  <div class="form-row">
+    <div class="col-md-3 label">
+      <&|/l&>Make date Told</&>:
+    </div>
+    <div class="col-md-9 value">
+      <& /Elements/SelectDate, Name => "Told_Date", Default => $ARGS{Told_Date} || '' &>
+    </div>
+  </div>
+
+  <div class="form-row">
+    <div class="col-md-3 label">
+      <&|/l&>Make date Due</&>:
+    </div>
+    <div class="col-md-9 value">
+      <& /Elements/SelectDate, Name => "Due_Date", Default => $ARGS{Due_Date} || '' &>
+    </div>
+  </div>
 </&>
 <&| /Widgets/TitleBox, title => loc('Add comments or replies to selected tickets') &>
-<table>
-<tr><td align="right"><&|/l&>Update Type</&>:</td>
-<td><select name="UpdateType" id="UpdateType">
-  <option value="private" <% $ARGS{UpdateType} && $ARGS{UpdateType} eq 'private' ? 'selected="selected"' : '' %> ><&|/l&>Comments (Not sent to requestors)</&></option>
-<option value="response" <% $ARGS{UpdateType} && $ARGS{UpdateType} eq 'response' ? 'selected="selected"' : '' %>><&|/l&>Reply to requestors</&></option>
-</select> 
-</td></tr>
-<tr>
-    <td align="right"><&|/l&>Subject</&>:</td>
-    <td>
-        <input type="text" name="UpdateSubject" size="60" value="<% $ARGS{UpdateSubject} || "" %>" />
+  <div class="form-row">
+    <div class="col-md-3 label">
+      <&|/l&>Update Type</&>:
+    </div>
+    <div class="col-md-9 value">
+      <select class="form-control selectpicker" name="UpdateType" id="UpdateType">
+          <option value="private" <% $ARGS{UpdateType} && $ARGS{UpdateType} eq 'private' ? 'selected="selected"' : '' %> ><&|/l&>Comments (Not sent to requestors)</&></option>
+        <option value="response" <% $ARGS{UpdateType} && $ARGS{UpdateType} eq 'response' ? 'selected="selected"' : '' %>><&|/l&>Reply to requestors</&></option>
+      </select> 
+    </div>
+  </div>
+
+  <div class="form-row">
+    <div class="col-md-3 label">
+      <&|/l&>Subject</&>:
+    </div>
+    <div class="col-md-9 value">
+      <input class="form-control" type="text" name="UpdateSubject" size="60" value="<% $ARGS{UpdateSubject} || "" %>" />
+    </div>
+  </div>
 % $m->callback( %ARGS, CallbackName => 'AfterUpdateSubject' );
-    </td>
-</tr>
+
 % $m->callback( CallbackName => 'BeforeTransactionCustomFields', CustomFields => $TxnCFs );
 % while (my $CF = $TxnCFs->Next()) {
-<tr>
-<td align="right"><% $CF->Name %>:</td>
-<td><& /Elements/EditCustomField,
-    CustomField => $CF,
-    Object => RT::Transaction->new( $session{'CurrentUser'} ),
-    &><em><% $CF->EntryHint // '' %></em></td>
-</td></tr>
+  <div class="form-row">
+    <div class="col-md-3 label">
+      <% $CF->Name %>:
+    </div>
+    <div class="col-md-9 value">
+      <& /Elements/EditCustomField,
+        CustomField => $CF,
+        Object => RT::Transaction->new( $session{'CurrentUser'} ),
+      &><em><% $CF->EntryHint // '' %></em>
+    </div>
+  </div>
 % } # end if while
 
- <tr><td class="labeltop"><&|/l&>Message</&>:</td>
- <td class="messagebox-container action-<% $ARGS{UpdateType} || 'private' %>">
-% $m->callback( %ARGS, CallbackName => 'BeforeMessageBox' );
+  <div class="form-row">
+    <div class="col-md-3 label">
+      <&|/l&>Message</&>:
+    </div>
+    <div class="col-md-9 value messagebox-container action-<% $ARGS{UpdateType} || 'private' %>">
 %# Currently, bulk update always starts with Comment not Reply selected, so we check this unconditionally
 % my $IncludeSignature = RT->Config->Get('MessageBoxIncludeSignatureOnComment');
-<& /Elements/MessageBox, Name => "UpdateContent", 
-    $ARGS{UpdateContent} ? ( Default => $ARGS{UpdateContent}, IncludeSignature => 0 ) :
-                        ( IncludeSignature => $IncludeSignature ),
-        &>
- </td></tr>
-
-<& /Ticket/Elements/AddAttachments, %ARGS &>
+      <& /Elements/MessageBox, Name => "UpdateContent", 
+          $ARGS{UpdateContent} ? ( Default => $ARGS{UpdateContent}, IncludeSignature => 0 ) :
+            ( IncludeSignature => $IncludeSignature ),
+      &>
+    </div>
+  </div>
+% $m->callback( %ARGS, CallbackName => 'BeforeMessageBox' );
 
- </table>
+  <div class="form-row">
+    <div class="col-md-3 label"></div>
+    <div class="col-md-9">
+      <& /Ticket/Elements/AddAttachments, %ARGS &>
+    </div>
+  </div>
 
 </&>
 
@@ -206,7 +348,6 @@ $cfs->SetContextObject( values %$seen_queues ) if keys %$seen_queues == 1;
 % }
 
 <&|/Widgets/TitleBox, title => loc('Edit Links'), color => "#336633"&>
-<em><&|/l&>Enter tickets or URIs to link tickets to. Separate multiple entries with spaces.</&></em><br />
 <& /Elements/BulkLinks, Collection => $Tickets, $ARGS{'AddMoreAttach'} ? %ARGS : () &>
 </&>
 
@@ -214,7 +355,11 @@ $cfs->SetContextObject( values %$seen_queues ) if keys %$seen_queues == 1;
 <& /Ticket/Elements/EditMerge, Tickets => $Tickets, %ARGS &>
 </&>
 
-<& /Elements/Submit, Label => loc('Update') &>
+<div class="form-row">
+  <div class="col-md-12">
+    <& /Elements/Submit, Label => loc('Update') &>
+  </div>
+</div>
 
 
 </form>
diff --git a/share/html/Search/Chart.html b/share/html/Search/Chart.html
index efa0ca455..581220a00 100644
--- a/share/html/Search/Chart.html
+++ b/share/html/Search/Chart.html
@@ -133,67 +133,90 @@ $m->callback( ARGSRef => \%ARGS, QueryArgsRef => \%query );
 <div class="chart-meta">
 <div class="chart-type">
 
+<div class="form-row">
+  <div class="col-md-6">
+
 <form method="get" action="<% RT->Config->Get('WebPath') %>/Search/Chart.html">
 <input type="hidden" class="hidden" name="Query" value="<% $query{Query} %>" />
 <input type="hidden" class="hidden" name="SavedChartSearchId" value="<% $saved_search->{SearchId} || 'new' %>" />
 
-<&| /Widgets/TitleBox, title => loc('Group by'), class => "chart-group-by" &>
-<fieldset><legend><% loc('Group tickets by') %></legend>
-<& Elements/SelectGroupBy,
-    Name => 'GroupBy',
-    Query => $query{Query},
-    Default => $query{'GroupBy'}[0],
-    &>
-</fieldset>
-<fieldset><legend><% loc('and then') %></legend>
-<& Elements/SelectGroupBy,
-    Name => 'GroupBy',
-    Query => $query{Query},
-    Default => $query{'GroupBy'}[1] // q{},
-    ShowEmpty => 1,
-    &>
-</fieldset>
-<fieldset><legend><% loc('and then') %></legend>
-<& Elements/SelectGroupBy,
-    Name => 'GroupBy',
-    Query => $query{Query},
-    Default => $query{'GroupBy'}[2] // q{},
-    ShowEmpty => 1,
-    &>
-</fieldset>
-</&>
-
-<&| /Widgets/TitleBox, title => loc("Calculate"), class => "chart-calculate" &>
-
-<fieldset><legend><% loc('Calculate values of') %></legend>
-<& Elements/SelectChartFunction, Default => $query{'ChartFunction'}[0] &>
-</fieldset>
-<fieldset><legend><% loc('and then') %></legend>
-<& Elements/SelectChartFunction, Default => $query{'ChartFunction'}[1] // q{}, ShowEmpty => 1 &>
-</fieldset>
-<fieldset><legend><% loc('and then') %></legend>
-<& Elements/SelectChartFunction, Default => $query{'ChartFunction'}[2] // q{}, ShowEmpty => 1 &>
-</fieldset>
-
-</&>
-
-<&| /Widgets/TitleBox, title => loc('Picture'), class => "chart-picture" &>
-<input name="ChartStyle" type="hidden" value="<% $query{ChartStyle} %>" />
-<label><% loc('Style') %>: <& Elements/SelectChartType, Default => $query{ChartStyle} =~ /^(pie|bar|table)\b/ ? $1 : undef &></label>
-<span class="width">
-<label><% loc("Width") %>: <input type="text" name="Width" value="<% $query{'Width'} || q{} %>"> <% loc("px") %></label>
-</span>
-<span class="height">
-  &#x00d7;
-  <label><% loc("Height") %>: <input type="text" name="Height" value="<% $query{'Height'} || q{} %>"> <% loc("px") %></label>
-</span>
-<div class="include-table">
-    <input type="checkbox" name="ChartStyleIncludeTable" <% $query{ChartStyle} =~ /\btable\b/ ? 'checked="checked"' : '' |n %>> <% loc('Include data table') %>
-</div>
-<div class="include-sql">
-    <input type="checkbox" name="ChartStyleIncludeSQL" <% $query{ChartStyle} =~ /\bsql\b/ ? 'checked="checked"' : '' |n %>> <% loc('Include TicketSQL query') %>
-</div>
-</&>
+    <&| /Widgets/TitleBox, title => loc('Group by'), class => "chart-group-by" &>
+      <fieldset><legend><% loc('Group tickets by') %></legend>
+        <& Elements/SelectGroupBy,
+          Name => 'GroupBy',
+          Query => $query{Query},
+          Default => $query{'GroupBy'}[0],
+        &>
+        </fieldset>
+        <fieldset><legend><% loc('and then') %></legend>
+        <& Elements/SelectGroupBy,
+          Name => 'GroupBy',
+          Query => $query{Query},
+          Default => $query{'GroupBy'}[1] // q{},
+          ShowEmpty => 1,
+        &>
+      </fieldset>
+      <fieldset><legend><% loc('and then') %></legend>
+        <& Elements/SelectGroupBy,
+          Name => 'GroupBy',
+          Query => $query{Query},
+          Default => $query{'GroupBy'}[2] // q{},
+          ShowEmpty => 1,
+        &>
+      </fieldset>
+    </&>
+
+    <&| /Widgets/TitleBox, title => loc("Calculate"), class => "chart-calculate" &>
+      <fieldset><legend><% loc('Calculate values of') %></legend>
+        <& Elements/SelectChartFunction, Default => $query{'ChartFunction'}[0] &>
+      </fieldset>
+      <fieldset><legend><% loc('and then') %></legend>
+        <& Elements/SelectChartFunction, Default => $query{'ChartFunction'}[1] // q{}, ShowEmpty => 1 &>
+      </fieldset>
+      <fieldset><legend><% loc('and then') %></legend>
+        <& Elements/SelectChartFunction, Default => $query{'ChartFunction'}[2] // q{}, ShowEmpty => 1 &>
+      </fieldset>
+    </&>
+
+    <&| /Widgets/TitleBox, title => loc('Picture'), class => "chart-picture" &>
+      <input name="ChartStyle" type="hidden" value="<% $query{ChartStyle} %>" />
+      <div class="form-row">
+        <div class="col-md-auto label">
+          <label><% loc('Style') %>:</label>
+        </div>
+        <div class="col-md-auto value">
+          <& Elements/SelectChartType, Default => $query{ChartStyle} =~ /^(pie|bar|table)\b/ ? $1 : undef &>
+        </div>
+        <div class="col-md-auto label">
+          <label><% loc("Width") %>:</label>
+        </div>
+        <div class="col-md-auto value">
+          <input class="form-control" type="text" name="Width" value="<% $query{'Width'} || q{} %>">
+        </div>
+        <div class="col-md-auto label">
+          <% loc("px") %>
+        </div>
+        <div class="col-md-auto label">
+          &#x00d7;
+          <label><% loc("Height") %>:</label>
+        </div>
+        <div class="col-md-auto value">
+          <input class="form-control" type="text" name="Height" value="<% $query{'Height'} || q{} %>">
+        </div>
+        <div class="col-md-auto label">
+          <% loc("px") %>
+        </div>
+      </div>
+      <div class="include-table custom-control custom-checkbox">
+        <input type="checkbox" id="ChartStyleIncludeTable" name="ChartStyleIncludeTable" class="custom-control-input" <% $query{ChartStyle} =~ /\btable\b/ ? 'checked="checked"' : '' |n %>>
+        <label class="custom-control-label" for="ChartStyleIncludeTable"><&|/l&>Include data table</&></label>
+      </div>
+      <div class="include-sql custom-control custom-checkbox">
+        <input type="checkbox" id="ChartStyleIncludeSQL" name="ChartStyleIncludeSQL" class="custom-control-input" <% $query{ChartStyle} =~ /\bsql\b/ ? 'checked="checked"' : '' |n %>>
+        <label class="custom-control-label" for="ChartStyleIncludeSQL"></label><&|/l&>Include TicketSQL query</&></label>
+      </div>
+    </&>
+
 <script type="text/javascript">
 var updateChartStyle = function() {
     var val = jQuery(".chart-picture [name=ChartType]").val();
@@ -217,11 +240,20 @@ jQuery(".chart-picture [name=ChartStyleIncludeTable]").change( updateChartStyle
 jQuery(".chart-picture [name=ChartStyleIncludeSQL]").change( updateChartStyle );
 </script>
 
-<& /Elements/Submit, Label => loc('Update Chart'), Name => 'Update' &>
-</form>
+    <div class="form-row">
+      <div class="col-md-12">
+        <& /Elements/Submit, Label => loc('Update Chart'), Name => 'Update' &>
+      </div>
+    </div>
+    </form>
+  </div>
 
+  <div class="col-md-6">
+    <div class="saved-search">
+      <& /Widgets/SavedSearch:show, %ARGS, Action => 'Chart.html', self => $saved_search, Title => loc('Saved charts') &>
+    </div>
+  </div>
 </div>
-<div class="saved-search">
-    <& /Widgets/SavedSearch:show, %ARGS, Action => 'Chart.html', self => $saved_search, Title => loc('Saved charts') &>
+
 </div>
 </div>
diff --git a/share/html/Search/Elements/Chart b/share/html/Search/Elements/>
similarity index 96%
copy from share/html/Search/Elements/Chart
copy to share/html/Search/Elements/>
index a421c061d..fc562c3d8 100644
--- a/share/html/Search/Elements/Chart
+++ b/share/html/Search/Elements/>
@@ -66,7 +66,8 @@ $report->SortEntries;
 
 my $query_string = $m->comp('/Elements/QueryString', %ARGS, GroupBy => \@GroupBy );
 </%init>
-<div class="chart-wrapper">
+<div class="chart-wrapper form-row">
+<div class="col-md-auto">
 % if ( ($ChartStyle || '') =~ /\b(pie|bar)\b/ ) {
 <span class="chart image <% $1 %>">
 % if (RT->Config->Get('DisableGD')) {
@@ -79,14 +80,17 @@ my $query_string = $m->comp('/Elements/QueryString', %ARGS, GroupBy => \@GroupBy
 % }
 </span>
 % }
-
+</div>
+<div class="col-md-auto">
 % if ( ($ChartStyle || '') =~ /\btable\b/ ) {
 <& ChartTable, %ARGS, Table => { $report->FormatTable( %columns ) } &>
 % }
 
 % $m->callback( CallbackName => 'AfterChartTable', ARGSRef => \%ARGS );
-
+</div>
+<div class="form-row"?
 % if ( ($ChartStyle || '') =~ /\bsql\b/ ) {
 <div class="query"><span class="label"><% loc('Query') %>:</span><span class="value"><% $Query %></span></div>
 % }
 </div>
+</div>
diff --git a/share/html/Search/Elements/Chart b/share/html/Search/Elements/Chart
index a421c061d..6b998a82c 100644
--- a/share/html/Search/Elements/Chart
+++ b/share/html/Search/Elements/Chart
@@ -66,7 +66,8 @@ $report->SortEntries;
 
 my $query_string = $m->comp('/Elements/QueryString', %ARGS, GroupBy => \@GroupBy );
 </%init>
-<div class="chart-wrapper">
+<div class="chart-wrapper form-row">
+<div class="col-md-auto">
 % if ( ($ChartStyle || '') =~ /\b(pie|bar)\b/ ) {
 <span class="chart image <% $1 %>">
 % if (RT->Config->Get('DisableGD')) {
@@ -79,14 +80,19 @@ my $query_string = $m->comp('/Elements/QueryString', %ARGS, GroupBy => \@GroupBy
 % }
 </span>
 % }
-
+</div>
+<div class="col-md-auto">
 % if ( ($ChartStyle || '') =~ /\btable\b/ ) {
 <& ChartTable, %ARGS, Table => { $report->FormatTable( %columns ) } &>
 % }
 
 % $m->callback( CallbackName => 'AfterChartTable', ARGSRef => \%ARGS );
-
+</div>
+</div>
+<div class="form-row justify-content-center">
+<div class="col-md-auto">
 % if ( ($ChartStyle || '') =~ /\bsql\b/ ) {
 <div class="query"><span class="label"><% loc('Query') %>:</span><span class="value"><% $Query %></span></div>
 % }
 </div>
+</div>
diff --git a/share/html/Search/Elements/ChartTable b/share/html/Search/Elements/ChartTable
index 10470a916..51b446c3a 100644
--- a/share/html/Search/Elements/ChartTable
+++ b/share/html/Search/Elements/ChartTable
@@ -62,7 +62,7 @@ my $interp = $m->interp;
 my $eh  = sub { $interp->apply_escapes( @_, 'h' ) };
 my $eu  = sub { $interp->apply_escapes( @_, 'u' ) };
 
-$m->out('<table class="collection-as-table chart">'. "\n");
+$m->out('<table class="table table-bordered collection-as-table chart">'. "\n");
 foreach my $section (qw(thead tbody tfoot)) {
     next unless $Table{ $section } && @{ $Table{ $section } };
 
diff --git a/share/html/Search/Elements/SelectChartType b/share/html/Search/Elements/SelectChartType
index 7c359b7bb..19e24c349 100644
--- a/share/html/Search/Elements/SelectChartType
+++ b/share/html/Search/Elements/SelectChartType
@@ -49,7 +49,7 @@
 $Name => 'ChartType'
 $Default => 'bar'
 </%args>
-<select id="<%$Name%>" name="<%$Name%>">
+<select id="<%$Name%>" name="<%$Name%>" class='form-control selectpicker'>
 % foreach my $option ('bar', 'pie', 'table') {
 % # 'bar' # loc
 % # 'pie' # loc
diff --git a/share/html/Search/Elements/SelectGroup b/share/html/Search/Elements/SelectGroup
index b5b1a6ae8..305667657 100644
--- a/share/html/Search/Elements/SelectGroup
+++ b/share/html/Search/Elements/SelectGroup
@@ -45,7 +45,7 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<select id="<%$Name%>" name="<%$Name%>">
+<select id="<%$Name%>" name="<%$Name%>" class="form-control selectpicker">
 % if ($AllowNull) {
 <option value="">-</option>
 % }
diff --git a/share/html/Search/Simple.html b/share/html/Search/Simple.html
index e036351ef..676265d87 100644
--- a/share/html/Search/Simple.html
+++ b/share/html/Search/Simple.html
@@ -54,9 +54,13 @@
 <div id="SimpleSearchForm">
 <form action="Simple.html" method="get">
 
-<div align="center">
-<input type="text" name="q" />
-<input type="submit" class="button" value="<&|/l&>Search</&>" />
+<div class="form-row justify-content-center">
+  <div class="col-md-4">
+    <input class="form-control" type="text" name="q" />
+  </div>
+  <div class="col-md-auto">
+    <input type="submit" class="button btn btn-primary" value="<&|/l&>Search</&>" />
+  </div>
 </div>
 
 % my @strong = qw(<strong> </strong>);

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


More information about the rt-commit mailing list