[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">
- ×
- <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">
+ ×
+ <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