[Rt-commit] rt branch, 4.6-theme/tools-pages, created. rt-4.4.4-197-ge09906a23

Craig Kaiser craig at bestpractical.com
Wed May 15 13:04:55 EDT 2019


The branch, 4.6-theme/tools-pages has been created
        at  e09906a237fc794eb9cbf7a670c93b805042279f (commit)

- Log -----------------------------------------------------------------
commit da7e3b2916e36ca11c816d3c2cb3c7ab22b3f48f
Author: Blaine Motsinger <blaine at bestpractical.com>
Date:   Mon Apr 22 12:19:56 2019 -0500

    Migrate Admin/Scrips/index to elevator themes

diff --git a/share/html/Admin/Scrips/index.html b/share/html/Admin/Scrips/index.html
index 39cfb097a..3bd5515db 100644
--- a/share/html/Admin/Scrips/index.html
+++ b/share/html/Admin/Scrips/index.html
@@ -51,9 +51,22 @@
 <h1><%$caption%></h1>
 
 <form method="post" action="<% RT->Config->Get('WebPath') %>/Admin/Scrips/index.html">
-<input type="checkbox" class="checkbox" id="FindDisabledScrips" name="FindDisabledScrips" value="1" <% $FindDisabledScrips ? 'checked="checked"': '' |n%> />
-<label for="FindDisabledScrips"><&|/l&>Include disabled scrips in listing.</&></label>
-<div align="right"><input type="submit" class="button" value="<&|/l&>Go!</&>" /></div>
+  <div class="form-row">
+    <div class="col-md-12">
+      <div class="custom-control custom-checkbox">
+        <input type="checkbox" class="custom-control-input checkbox" id="FindDisabledScrips" name="FindDisabledScrips" value="1" <% $FindDisabledScrips ? 'checked="checked"': '' |n%> />
+        <label class="custom-control-label" for="FindDisabledScrips"><&|/l&>Include disabled scrips in listing.</&></label>
+      </div>
+    </div>
+  </div>
+
+  <div class="form-row">
+    <div class="col-md-12">
+      <div align="right">
+        <input type="submit" class="form-control btn btn-primary" value="<&|/l&>Go!</&>" />
+      </div>
+    </div>
+  </div>
 </form>
 
 <& /Elements/CollectionList,

commit c50e62ced4f7dba40b66195b578c2ac5cbdab3e6
Author: Blaine Motsinger <blaine at bestpractical.com>
Date:   Mon Apr 22 13:07:39 2019 -0500

    Migrate Admin/Scrips/Create to elevator themes

diff --git a/share/html/Admin/Elements/SelectScripAction b/share/html/Admin/Elements/SelectScripAction
index 92902f279..c7c3b12b2 100644
--- a/share/html/Admin/Elements/SelectScripAction
+++ b/share/html/Admin/Elements/SelectScripAction
@@ -45,7 +45,7 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<select name="<%$Name%>">
+<select name="<%$Name%>" class="form-control selectpicker">
 <option value="" 
 <% ! defined $Default && qq[ selected="selected"] |n %>
 >-</option>
diff --git a/share/html/Admin/Elements/SelectScripCondition b/share/html/Admin/Elements/SelectScripCondition
index 7e59ffb88..6a8f2e413 100644
--- a/share/html/Admin/Elements/SelectScripCondition
+++ b/share/html/Admin/Elements/SelectScripCondition
@@ -45,7 +45,7 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<select name="<%$Name%>">
+<select name="<%$Name%>" class="form-control selectpicker">
 <option value="" 
 <% ! defined $Default && qq[ selected="selected"] %>
 >-</option>
diff --git a/share/html/Admin/Elements/SelectStage b/share/html/Admin/Elements/SelectStage
index dc5715740..10ffd97ab 100644
--- a/share/html/Admin/Elements/SelectStage
+++ b/share/html/Admin/Elements/SelectStage
@@ -45,7 +45,7 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<select name="<%$Name%>">
+<select name="<%$Name%>" class="form-control selectpicker">
 % foreach my $value (@stages) {
 <option value="<%$value%>"
 <% ($value eq $Default) && qq[ selected="selected"] |n %>
diff --git a/share/html/Admin/Scrips/Create.html b/share/html/Admin/Scrips/Create.html
index 6aca459e1..bc83f3bd1 100644
--- a/share/html/Admin/Scrips/Create.html
+++ b/share/html/Admin/Scrips/Create.html
@@ -54,33 +54,46 @@
 <input type="hidden" class="hidden" name="Global" value="<% $Global || q{} %>" />
 
 <&| /Widgets/TitleBox, title => loc('Basics') &>
-<table>
 
 <& Elements/EditBasics, %ARGS, Scrip => $scrip, Queue => $queue_obj &>
 
-<tr><td class="label"><&|/l&>Stage</&>:</td><td class="value">\
-<& /Admin/Elements/SelectStage, Default => $ARGS{"Stage"} &></td></tr>
+  <div class="form-row">
+    <div class="col-md-3 label">
+      <&|/l&>Stage</&>:
+    </div>
+    <div class="col-md-9 value">
+      <& /Admin/Elements/SelectStage, Default => $ARGS{"Stage"} &>
+    </div>
+  </div>
 
-<tr><td class="label"> </td><td>
 <input type="hidden" class="hidden" name="SetEnabled" value="1" />
-<input type="checkbox" class="checkbox" name="Enabled" value="1" <% $ARGS{'Enabled'}? 'checked="checked"': '' |n%> />
-<label for="Enabled"><&|/l&>Enabled (Unchecking this box disables this scrip)</&></label>
-</td></tr>
 
-</table>
+  <div class="form-row">
+    <div class="col-md-3 label">
+    </div>
+    <div class="col-md-9 value">
+      <div class="custom-control custom-checkbox">
+        <input type="checkbox" class="custom-control-input checkbox" name="Enabled" id="Enabled" value="1" <% $ARGS{'Enabled'}? 'checked="checked"': '' |n%> />
+        <label class="custom-control-label" for="Enabled"><&|/l&>Enabled (Unchecking this box disables this scrip)</&></label>
+      </div>
+    </div>
+  </div>
+
 </&>
 
-<& /Elements/Submit,
-    Label => loc('Create'),
-    Name => 'Create',
-&>
+  <div class="form-row">
+    <div class="col-md-12">
+      <& /Elements/Submit, Label => loc('Create'), Name => 'Create' &>
+    </div>
+  </div>
 
 % if ($session{CurrentUser}->HasRight(Object => $RT::System, Right => 'ExecuteCode')) {
 <& Elements/EditCustomCode, %ARGS, Scrip => $scrip &>
-<& /Elements/Submit,
-    Label => loc('Create'),
-    Name => 'Create',
-&>
+  <div class="form-row">
+    <div class="col-md-12">
+      <& /Elements/Submit, Label => loc('Create'), Name => 'Create' &>
+    </div>
+  </div>
 % }
 
 </form>
diff --git a/share/html/Admin/Scrips/Elements/EditBasics b/share/html/Admin/Scrips/Elements/EditBasics
index 09c4862be..b5a3f8e85 100644
--- a/share/html/Admin/Scrips/Elements/EditBasics
+++ b/share/html/Admin/Scrips/Elements/EditBasics
@@ -45,26 +45,41 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<tr><td class="label"><&|/l&>Description</&>:</td><td class="value">\
-<input type="text" name="Description" \
-    size="60" \
-    value="<% $ARGS{"Description"} || $Scrip->Description || '' %>" />
-</td></tr>
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Description</&>:
+  </div>
+  <div class="col-md-9 value">
+    <input type="text" class="form-control" name="Description" size="60" value="<% $ARGS{"Description"} || $Scrip->Description || '' %>" />
+  </div>
+</div>
 
-<tr><td class="label"><&|/l&>Condition</&>:</td><td class="value">\
-<& /Admin/Elements/SelectScripCondition,
-    Default => $ARGS{"ScripCondition"} || $Scrip->ConditionObj->Id,
-&></td></tr>
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Condition</&>:
+  </div>
+  <div class="col-md-9 value">
+    <& /Admin/Elements/SelectScripCondition, Default => $ARGS{"ScripCondition"} || $Scrip->ConditionObj->Id, &>
+  </div>
+</div>
 
-<tr><td class="label"><&|/l&>Action</&>:</td><td class="value">\
-<& /Admin/Elements/SelectScripAction,
-    Default => $ARGS{"ScripAction"} || $Scrip->ActionObj->Id,
-&></td></tr>
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Action</&>:
+  </div>
+  <div class="col-md-9 value">
+    <& /Admin/Elements/SelectScripAction, Default => $ARGS{"ScripAction"} || $Scrip->ActionObj->Id, &>
+  </div>
+</div>
 
-<tr><td class="label"><&|/l&>Template</&>:</td><td class="value">\
-<& SelectTemplate,
-    Default => $ARGS{"Template"}, Scrip => $Scrip, Queue => $Queue,
-&></td></tr>
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Template</&>:
+  </div>
+  <div class="col-md-9 value">
+    <& SelectTemplate, Default => $ARGS{"Template"}, Scrip => $Scrip, Queue => $Queue &>
+  </div>
+</div>
 
 <%ARGS>
 $Scrip
diff --git a/share/html/Admin/Scrips/Elements/EditCustomCode b/share/html/Admin/Scrips/Elements/EditCustomCode
index 6c8b72017..2c63589f7 100644
--- a/share/html/Admin/Scrips/Elements/EditCustomCode
+++ b/share/html/Admin/Scrips/Elements/EditCustomCode
@@ -47,21 +47,26 @@
 %# END BPS TAGGED BLOCK }}}
 <&| /Widgets/TitleBox, title => loc('User Defined conditions and results') &>
 
-<table>
-<tr><td colspan="2" class="comment">
-<i><&|/l&>(Use these fields when you choose 'User Defined' for a condition or action)</&></i>
-</td></tr>
+<div class="form-row">
+  <div class="col-md-12 comment">
+    <i><&|/l&>(Use these fields when you choose 'User Defined' for a condition or action)</&></i>
+  </div>
+</div>
 
 % while ( my ($method, $desc) = splice @list, 0, 2 ) {
-<tr><td class="labeltop"><% $desc %>:</td><td class="value">
+<div class="form-row">
+  <div class="col-md-3 label labeltop">
+    <% $desc %>:
+  </div>
+  <div class="col-md-9 value">
 % my $code = $ARGS{ $method } || $Scrip->$method() || '';
 % my $lines = @{[ $code =~ /\n/gs ]} + 3;
 % $lines = $min_lines if $lines < $min_lines;
-<textarea cols="80" rows="<% $lines %>" name="<% $method %>"><% $code %></textarea>
-</td></tr>
+    <textarea cols="80" class="form-control" rows="<% $lines %>" name="<% $method %>"><% $code %></textarea>
+  </div>
+</div>
 % }
 
-</table>
 </&>
 <%ARGS>
 $Scrip
diff --git a/share/html/Admin/Scrips/Elements/SelectTemplate b/share/html/Admin/Scrips/Elements/SelectTemplate
index b8880b380..10d4562a0 100644
--- a/share/html/Admin/Scrips/Elements/SelectTemplate
+++ b/share/html/Admin/Scrips/Elements/SelectTemplate
@@ -45,7 +45,7 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<select name="<% $Name %>">
+<select name="<% $Name %>" class="form-control selectpicker">
 <option value=""><% $current || '-' %></option>
 % foreach my $name ( @list ) {
 <option value="<% $name %>" \

commit 93a29710626818952b1835ca037c5603448814ce
Author: Blaine Motsinger <blaine at bestpractical.com>
Date:   Mon Apr 22 13:11:20 2019 -0500

    Migrate Admin/Scrips/Modify to elevator themes

diff --git a/share/html/Admin/Scrips/Modify.html b/share/html/Admin/Scrips/Modify.html
index 6ff6d83b6..d498ff8fc 100644
--- a/share/html/Admin/Scrips/Modify.html
+++ b/share/html/Admin/Scrips/Modify.html
@@ -54,13 +54,16 @@
 <input type="hidden" class="hidden" name="From" value="<% $From || q{} %>" />
 
 <&| /Widgets/TitleBox, title => loc('Basics') &>
-<table>
 
 <& Elements/EditBasics, %ARGS, Scrip => $scrip &>
 
 % if ( not $disabled ) {
-<tr><td class="label"><a href="Objects.html?id=<% $id %>"><&|/l&>Applies to</&></a>:</td>
-<td class="value">\
+  <div class="form-row">
+    <div class="col-md-3 label">
+      <a href="Objects.html?id=<% $id %>"><&|/l&>Applies to</&></a>:
+    </div>
+    <div class="col-md-9 value">
+      <span class="current-value form-control">
 % if ( $scrip->IsGlobal ) {
 <a href="<% RT->Config->Get('WebPath') %>/Admin/Global/Scrips.html"><% loc('Global') %></a>
 % } else {
@@ -74,23 +77,39 @@
 % }
 % $m->out(', ...') if $found == 10;
 % }
-<td></tr>
+      </span>
+    </div>
+  </div>
 % }
 
-<tr><td class="label"> </td><td>
 <input type="hidden" class="hidden" name="SetEnabled" value="1" />
-<input type="checkbox" class="checkbox" name="Enabled" id="Enabled" value="1" <% $EnabledChecked |n%> />
-<label for="Enabled"><&|/l&>Enabled (Unchecking this box disables this scrip)</&></label>
-</td></tr>
 
-</table>
+  <div class="form-row">
+    <div class="col-md-3 label">
+    </div>
+    <div class="col-md-9 value">
+      <div class="custom-control custom-checkbox">
+        <input type="checkbox" class="checkbox custom-control-input" name="Enabled" id="Enabled" value="1" <% $EnabledChecked |n%> />
+        <label class="custom-control-label" for="Enabled"><&|/l&>Enabled (Unchecking this box disables this scrip)</&></label>
+      </div>
+    </div>
+  </div>
+
 </&>
 
-<& /Elements/Submit, Label => loc('Save Changes'), Name => 'Update', Reset => 1 &>
+  <div class="form-row">
+    <div class="col-md-12">
+      <& /Elements/Submit, Label => loc('Save Changes'), Name => 'Update', Reset => 1 &>
+    </div>
+  </div>
 
 % if ($session{CurrentUser}->HasRight(Object => $RT::System, Right => 'ExecuteCode')) {
 <& Elements/EditCustomCode, %ARGS, Scrip => $scrip &>
-<& /Elements/Submit, Label => loc('Save Changes'), Name => 'Update', Reset => 1 &>
+  <div class="form-row">
+    <div class="col-md-12">
+      <& /Elements/Submit, Label => loc('Save Changes'), Name => 'Update', Reset => 1 &>
+    </div>
+  </div>
 % }
 
 </form>

commit c04d7f29de7e3c9e697f1dbd8699825c5afa66a1
Author: Blaine Motsinger <blaine at bestpractical.com>
Date:   Mon Apr 22 13:16:41 2019 -0500

    Migrate Admin/Scrips/Objects to elevator themes
    
    This commit is a partial migration to the new theme, minus the
    CollectionList element sections.

diff --git a/share/html/Admin/Elements/SelectStageForAdded b/share/html/Admin/Elements/SelectStageForAdded
index 752f97c65..f6d068818 100644
--- a/share/html/Admin/Elements/SelectStageForAdded
+++ b/share/html/Admin/Elements/SelectStageForAdded
@@ -47,8 +47,10 @@
 %# END BPS TAGGED BLOCK }}}
 <div style="text-align:right">
 <% $Label %>
+<div class="d-inline-block">
 <& SelectStage, %ARGS &>
 </div>
+</div>
 <%args>
 $Label => loc('Select scrip stage for newly added queues:')
 </%args>
diff --git a/share/html/Admin/Scrips/Objects.html b/share/html/Admin/Scrips/Objects.html
index 0acf21a31..0729615d3 100644
--- a/share/html/Admin/Scrips/Objects.html
+++ b/share/html/Admin/Scrips/Objects.html
@@ -55,10 +55,14 @@
 
 % if ( $global ) {
 <h2><&|/l&>Applies to all objects</&></h2>
-<label>
-<input type="checkbox" name="RemoveScrip-<% $id %>" value="0" />
-<&|/l&>check this box to remove this scrip from all objects and be able to choose specific objects.</&>
-</label>
+  <div class="form-row">
+    <div class="col-md-12">
+      <div class="custom-control custom-checkbox">
+        <input type="checkbox" class="custom-control-input checkbox" name="RemoveScrip-<% $id %>" id="RemoveScrip-<% $id %>-0" value="0" />
+        <label class="custom-control-label" for="RemoveScrip-<% $id %>-0"><&|/l&>check this box to remove this scrip from all objects and be able to choose specific objects.</&></label>
+      </div>
+    </div>
+  </div>
 
 <& /Admin/Elements/SelectStageForAdded,
     Default => $Stage || $global->Stage,
@@ -67,10 +71,14 @@
 % } else {
 <h2><&|/l&>Apply globally</&></h2>
 
-<label>
-<input type="checkbox" name="AddScrip-<% $id %>" value="0" />
-<&|/l&>check this box to apply this scrip to all objects.</&>
-</label>
+  <div class="form-row">
+    <div class="col-md-12">
+      <div class="custom-control custom-checkbox">
+        <input type="checkbox" class="custom-control-input checkbox" name="AddScrip-<% $id %>" id="AddScrip-<% $id %>-0" value="0" />
+        <label class="custom-control-label" for="AddScrip-<% $id %>-0"><&|/l&>check this box to apply this scrip to all objects.</&></label>
+      </div>
+    </div>
+  </div>
 
 <h2><&|/l&>Selected objects</&></h2>
 <& /Elements/CollectionList,
@@ -108,12 +116,18 @@
 <& /Admin/Elements/SelectStageForAdded, Default => $Stage &>
 <div style="text-align:right">
 <% loc('You can change template if needed') %>:
-<& Elements/SelectTemplate, Scrip => $scrip, Default => $Template &>
+<div class="d-inline-block">
+  <& Elements/SelectTemplate, Scrip => $scrip, Default => $Template &>
+</div>
 </div>
 
 % }
 
-<& /Elements/Submit, Name => 'Update' &>
+  <div class="form-row">
+    <div class="col-md-12">
+      <& /Elements/Submit, Name => 'Update' &>
+    </div>
+  </div>
 </form>
 
 <%ARGS>

commit 2e06e46a2e8ca341efb00585ec4eb2873afc59d6
Author: Craig Kaiser <craig at bestpractical.com>
Date:   Tue Apr 16 09:10:51 2019 -0400

    Update asset CSS and JS files for elevator theme

diff --git a/share/static/css/base-responsive/assets.css b/share/static/css/base-responsive/assets.css
index 1bc0b0ca6..38e00be61 100644
--- a/share/static/css/base-responsive/assets.css
+++ b/share/static/css/base-responsive/assets.css
@@ -9,251 +9,3 @@
     left: inherit;
     padding: 0;
 }
-
-.ticket-assets .add-asset {
-    padding: 2em 0 0 0;
-    text-align: right;
-}
-
-body#comp-Asset-Search .collection-as-table td {
-    white-space: nowrap;
-}
-
-/* Colors */
-
-.asset-basics   .titlebox .titlebox-title .left,
-.asset-info-cfs .titlebox .titlebox-title .left { background-color: #b32    }
-.asset-people   .titlebox .titlebox-title .left { background-color: #48c    }
-.asset-dates    .titlebox .titlebox-title .left { background-color: #633063 }
-.asset-links    .titlebox .titlebox-title .left { background-color: #316531 }
-.ticket-assets  .titlebox .titlebox-title .left { background-color: #316531 }
-
-/* People display */
-
-#comp-Asset-Display .asset-people table {
-    width: 100%;
-}
-
-#comp-Asset-Display .asset-people td.label {
-    text-align: left;
-}
-
-#comp-Asset-Display .asset-people h3 {
-    margin: 0;
-    padding: 0;
-    line-height: 1.3;
-    font-size: 100%;
-}
-
-#comp-Asset-Display .asset-people .details {
-    padding: 0;
-}
-
-/* People editing */
-
-.asset-people .edit ul.role-members {
-    margin-top: 0;
-    padding-left: 0;
-    list-style: none;
-}
-
-.asset-people .edit td {
-    vertical-align: top;
-}
-
-.asset-people .edit .note {
-    font-size: 0.9em;
-}
-
-.asset-people .edit h3 {
-    margin-top: 0;
-    margin-bottom: 0;
-}
-
-.asset-people .edit .role h3 {
-    margin-bottom: 0.5em;
-}
-
-.asset-people .edit .role,
-.asset-people .edit .add-group,
-.asset-people .edit .add-user {
-    margin-bottom: 1em;
-}
-
-/* Asset summary */
-
-.ticket-assets form {
-    display: inherit;
-}
-
-.ticket-assets .related-tickets {
-    margin-top: 1em;
-}
-
-.ticket-assets .related-tickets .label a {
-    font-weight: bold;
-    color: black;
-}
-
-.asset-metadata>div {
-    vertical-align: top;
-    min-width: 30%;
-    max-width: 30%;
-    padding-right: 1.5em;
-    display: inline-block;
-}
-
-.asset-metadata {
-    padding-top: 2em; /* nav overflows this :( */
-}
-
- at media (max-width: 800px) {
-    .asset-metadata>div {
-        min-width: 45%;
-        width: 45%;
-    }
-}
-
-/* on a little screen, let's just use a single column */
- at media (max-width: 600px) {
-    .asset-metadata {
-        padding-top: 6em;
-        /* nav overflows this: < */
-    }
-
-    .asset-metadata>div {
-        min-width: 100%;
-        width: 100%;
-    }
-
-    #Asset-Create-basics>table,
-    #Asset-Create-basics>table>tbody>tr,
-    #Asset-Create-basics>table>tbody>tr>td {
-        display: block;
-    }
-}
-
-/* On a reasonable-width screen, make better use of whitespace */
- at media (min-width: 601px) {
-    .asset-info-cfs .edit-custom-fields {
-        width: 100%;
-    }
-
-    .asset-info-cfs .edit-custom-fields tr td,
-    #ModifyAsset .asset-basics tr td {
-        display: inline-block;
-    }
-
-    .asset-info-cfs .edit-custom-fields tr,
-    #ModifyAsset .asset-basics tr {
-        display: inline-block;
-        width: 49%;
-    }
-
-    .asset-info-cfs .edit-custom-fields tr td.cflabel,
-    #ModifyAsset .asset-basics tr td.label,
-    #ModifyAsset .asset-basics tr td.cflabel {
-        width: 8em;
-    }
-
-    /* Asset creation */
-    #Asset-Create-basics>table {
-        width: 100%;
-        align: left;
-    }
-
-    #Asset-Create-basics>table>tbody>tr>td {
-        padding-right: 2em;
-    }
-
-    #Asset-Create-basics>table>tbody>tr {
-        vertical-align: top;
-    }
-}
-
-/* basic cleanups for the search UI's elements */
-.asset-search-grouping input.datepicker {
-    width: 7em;
-}
-
-.asset-search-grouping td * {
-    max-width: 11em;
-}
-
-.asset-search-grouping td.label.not {
-    min-width: 3em;
-    width: auto;
-    padding-left: 1em;
-}
-
-/* On a wide screen, use two columns for search/bulk criteria */
- at media (min-width:1150px) {
-    .asset-bulk-grouping.asset-bulk-cfs,
-    .asset-search-grouping.asset-search-cfs {
-        display: inline-block;
-        width: 45%;
-        padding-right: 1em;
-        vertical-align: top;
-    }
-
-    .titlebox.asset-bulk-grouping.asset-bulk-cfs,
-    .titlebox.asset-search-grouping.asset-search-cfs {
-        display: block;
-        width: auto;
-        padding: inherit;
-    }
-
-    .asset-bulk-people tr.full-width,
-    .asset-search-people tr.ful-width,
-    .asset-bulk-basics tr.full-width,
-    .asset-search-basics tr.full-width {
-        width: 100%;
-    }
-
-    .asset-bulk-people table.core-fields tr,
-    .asset-search-people tr,
-    .asset-bulk-basics table.core-fields tr,
-    .asset-search-basics tr {
-        width: 49%;
-        display: inline-block;
-        white-space: nowrap;
-    }
-
-    .asset-bulk-people table.core-fields tr>td,
-    .asset-search-people tr>td,
-    .asset-bulk-basics table.core-fields tr>td,
-    .asset-search-basics tr>td {
-        display: inline-block;
-        width: 10em;
-    }
-}
-
-#assets-accordion ul.toplevel {
-    position: absolute;
-    top: 0;
-    right: 20px;
-    width: auto;
-    font-size: .9em;
-    z-index: 1;
-}
-
-#assets-accordion li.has-children {
-    background: transparent;
-}
-
-#assets-accordion li.has-children ul {
-    min-width: 12em;
-}
-
-#assets-accordion a {
-    border: none;
-    color: #000;
-}
-
-#assets-accordion a.sf-with-ul {
-    padding-top: .3em;
-}
-
-#assets-accordion .sf-sub-indicator {
-    top: .2em;
-}
diff --git a/share/static/js/assets.js b/share/static/js/assets.js
index 8d5aaa008..8691be134 100644
--- a/share/static/js/assets.js
+++ b/share/static/js/assets.js
@@ -4,6 +4,10 @@ jQuery(function() {
             .append(html).appendTo("body")
             .bind('modal:close', function(ev,modal) { modal.elm.remove(); })
             .modal();
+
+            // We need to refresh the select picker plugin on AJAX calls
+            // since the plugin only runs on page load.
+            jQuery('.selectpicker').selectpicker('refresh');
     };
 
     var assets = jQuery("#assets-accordion");

commit b1e98a5e2e720aad6e35b753268ea46ba8437873
Author: Craig Kaiser <craig at bestpractical.com>
Date:   Tue Apr 16 09:12:16 2019 -0400

    Update asset display components for elevator theme

diff --git a/share/html/Asset/Display.html b/share/html/Asset/Display.html
index dfd5fdd47..24275c747 100644
--- a/share/html/Asset/Display.html
+++ b/share/html/Asset/Display.html
@@ -61,7 +61,7 @@
     Object => $asset,
     ShowDisplayModes => 0,
     DisplayPath => 'History.html',
-    &>
+&>
 
 % $m->callback(CallbackName => 'AfterShowHistory', ARGSRef => \%ARGS, Asset => $asset);
 </span>
diff --git a/share/html/Asset/Elements/ShowBasics b/share/html/Asset/Elements/ShowBasics
index 2fcd0bfb0..771382f07 100644
--- a/share/html/Asset/Elements/ShowBasics
+++ b/share/html/Asset/Elements/ShowBasics
@@ -45,26 +45,44 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<table>
-  <tr class="asset-catalog">
-    <td class="label"><&|/l&>Catalog</&>:</td>
-    <td><& ShowCatalog, Asset => $AssetObj &></td>
-  </tr>
-  <tr class="asset-name">
-    <td class="label"><&|/l&>Name</&>:</td>
-    <td><% $AssetObj->Name || '' %></td>
-  </tr>
-  <tr class="asset-description">
-    <td class="label"><&|/l&>Description</&>:</td>
-    <td><% $AssetObj->Description || '' %></td>
-  </tr>
-  <tr class="asset-status">
-    <td class="label"><&|/l&>Status</&>:</td>
-    <td class="value"><% loc($AssetObj->Status) %></td>
-  </tr>
-  <& /Elements/ShowCustomFields, Object => $AssetObj, Grouping => 'Basics', Table => 0 &>
+<div class="form-row">
+  <div class="col-md-3 asset-catalog label">
+    <&|/l&>Catalog</&>:
+  </div>
+  <div class="col-md-9 value">
+    <& ShowCatalog, Asset => $AssetObj &>
+  </div>
+</div>
+
+<div class="form-row">
+  <div class="col-md-3 asset-name label">
+    <&|/l&>Name</&>:
+  </div>
+  <div class="col-md-9 value">
+    <span class="current-value form-control"><% $AssetObj->Name || '' %></span>
+  </div>
+</div>
+
+<div class="form-row">
+  <div class="col-md-3 asset-description label">
+    <&|/l&>Description</&>:
+  </div>
+  <div class="col-md-9 value">
+    <span class="current-value form-control"><% $AssetObj->Description || '' %></span>
+  </div>
+</div>
+
+<div class="form-row">
+  <div class="col-md-3 asset-status label">
+    <&|/l&>Status</&>:
+  </div>
+  <div class="col-md-9 value">
+    <span class="current-value form-control"><% $AssetObj->Status || '' %></span>
+  </div>
+</div>
+
+<& /Elements/ShowCustomFields, Object => $AssetObj, Grouping => 'Basics' &>
 % $m->callback(%ARGS, CallbackName => "AfterFields");
-</table>
 <%args>
 $AssetObj
 </%args>
diff --git a/share/html/Asset/Elements/ShowCatalog b/share/html/Asset/Elements/ShowCatalog
index 6504af0dc..b68564b53 100644
--- a/share/html/Asset/Elements/ShowCatalog
+++ b/share/html/Asset/Elements/ShowCatalog
@@ -45,7 +45,7 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<% $value %>
+<span class="current-value form-control"><% $value %></span>
 <%ARGS>
 $Asset   => undef
 $Catalog => undef
diff --git a/share/html/Asset/Elements/ShowDates b/share/html/Asset/Elements/ShowDates
index 4a76df150..7d4454cec 100644
--- a/share/html/Asset/Elements/ShowDates
+++ b/share/html/Asset/Elements/ShowDates
@@ -45,28 +45,38 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<table>
-  <tr>
-    <td class="label"><&|/l&>Created</&>:</td>
-    <td>
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Created</&>:
+  </div>
+  <div class="col-md-9 value">
+    <span class="current-value form-control">
       <&|/l_unsafe,
-          $m->interp->apply_escapes($AssetObj->CreatedAsString, 'h'),
-          $m->scomp('/Elements/ShowUser', User => $AssetObj->CreatorObj)
-        &>[_1] by [_2]</&>
-    </td>
-  </tr>
-  <tr>
-    <td class="label"><&|/l&>Last Updated</&>:</td>
-    <td>
+        $m->interp->apply_escapes($AssetObj->CreatedAsString, 'h'),
+        $m->scomp('/Elements/ShowUser', User => $AssetObj->CreatorObj)
+      &>[_1] by [_2]</&>
+    </span>
+  </div>
+</div>
+
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Last Updated</&>:
+  </div>
+  <div class="col-md-9 value">
+    <span class="current-value form-control">
       <&|/l_unsafe,
-          $m->interp->apply_escapes($AssetObj->LastUpdatedAsString, 'h'),
-          $m->scomp('/Elements/ShowUser', User => $AssetObj->LastUpdatedByObj)
-        &>[_1] by [_2]</&>
-    </td>
-  </tr>
-  <& /Elements/ShowCustomFields, Object => $AssetObj, Grouping => 'Dates', Table => 0 &>
+        $m->interp->apply_escapes($AssetObj->LastUpdatedAsString, 'h'),
+        $m->scomp('/Elements/ShowUser', User => $AssetObj->LastUpdatedByObj)
+      &>[_1] by [_2]</&>
+    </span>
+  </div>
+</div>
+
+<div class="form-row">
+  <& /Elements/ShowCustomFields, Object => $AssetObj, Grouping => 'Dates' &>
+</div>
 % $m->callback(%ARGS, CallbackName => "AfterFields");
-</table>
 <%args>
 $AssetObj
 </%args>
diff --git a/share/html/Asset/Elements/ShowPeople b/share/html/Asset/Elements/ShowPeople
index 1fc9ef6a3..87dc92c3f 100644
--- a/share/html/Asset/Elements/ShowPeople
+++ b/share/html/Asset/Elements/ShowPeople
@@ -51,26 +51,31 @@ $AssetObj
 <%init>
 my $CatalogObj = $AssetObj->CatalogObj;
 </%init>
-<table>
 % for my $role ($AssetObj->Roles) {
-<tr><td class="label"><% loc($role) %>:
+  <div class="form-row">
+    <div class="col-md-3 label">
+      <% loc($role) %>:
+    </div>
 % if ($AssetObj->Role($role)->{Single}) {
 %      my $users = $AssetObj->RoleGroup($role)->UserMembersObj(Recursively => 0);
 %      $users->FindAllRows;
 %      my $user = $users->Next;
-<& /Elements/ShowUser, User => $user, Link => 1 &></td></tr>
-%      next if $user->id == RT->Nobody->id;
-<tr><td>
-<& ShowRoleMembers, Group => $AssetObj->RoleGroup($role), Title => 0 &>
-</div></td></tr>
+    <div class="col-md-9 value">
+      <& /Elements/ShowUser, User => $user, Link => 1 &>
+%     if ( $user->id == RT->Nobody->id ) {
+%         next;
+%     }
+      <& ShowRoleMembers, Group => $AssetObj->RoleGroup($role), Title => 0 &>
+    </div>
+  </div>
 % } else {
-</td></tr><tr><td class="user-accordion">
-    <& ShowRoleMembers, Group => $AssetObj->RoleGroup($role) &>
-    <& ShowRoleMembers, Group => $CatalogObj->RoleGroup($role), Skip => $AssetObj->RoleGroup($role), Note => loc("(via this asset's catalog)") &>
-  </td></tr>
+    <div class="user-accordion col-md-9">
+      <& ShowRoleMembers, Group => $AssetObj->RoleGroup($role) &>
+      <& ShowRoleMembers, Group => $CatalogObj->RoleGroup($role), Skip => $AssetObj->RoleGroup($role), Note => loc("(via this asset's catalog)") &>
+    </div>
+  </div>
 % }
 % }
-<& /Elements/ShowCustomFields, Object => $AssetObj, Grouping => 'People', Table => 0 &>
 
-</table>
+<& /Elements/ShowCustomFields, Object => $AssetObj, Grouping => 'People', Table => 0 &>
 % $m->callback( %ARGS, CallbackName => 'AfterPeople' );
diff --git a/share/html/Asset/Elements/ShowSummary b/share/html/Asset/Elements/ShowSummary
index d81d3f3dc..12d85d859 100644
--- a/share/html/Asset/Elements/ShowSummary
+++ b/share/html/Asset/Elements/ShowSummary
@@ -69,15 +69,20 @@ for my $section (@sections) {
 }
 </%init>
 <div class="asset-metadata">
+  <div class="form-row">
 % for my $section (@sections) {
-<&| /Widgets/TitleBox, title => loc($section), title_href => $can_edit ? $link{$section} : "", title_class => "inverse", class => "asset-\L$section" &>
-    <& "Show$section", AssetObj => $AssetObj &>
-</&>
+      <div class="col-md-4">
+        <&| /Widgets/TitleBox, title => loc($section), title_href => $can_edit ? $link{$section} : "", title_class => "inverse", class => "asset-\L$section" &>
+          <& "Show$section", AssetObj => $AssetObj &>
+        </&>
+      </div>
 % }
-
-<& /Elements/ShowCustomFieldCustomGroupings,
-     Object => $AssetObj,
-     title_href => $can_edit ? RT->Config->Get("WebPath") . "/Asset/ModifyCFs.html" : "",
-     TitleBoxARGS => { title_class => "inverse" },
- &>
+      <div class="col-md-4">
+        <& /Elements/ShowCustomFieldCustomGroupings,
+          Object => $AssetObj,
+          title_href => $can_edit ? RT->Config->Get("WebPath") . "/Asset/ModifyCFs.html" : "",
+          TitleBoxARGS => { title_class => "inverse" },
+        &>
+    </div>
+  </div>
 </div>

commit a15d588c486f4638c17a756832296272c004278c
Author: Craig Kaiser <craig at bestpractical.com>
Date:   Tue Apr 16 09:16:00 2019 -0400

    Update asset create/modify components for elevator theme

diff --git a/share/html/Asset/Create.html b/share/html/Asset/Create.html
index 39ae7e6c8..ac9cb16b8 100644
--- a/share/html/Asset/Create.html
+++ b/share/html/Asset/Create.html
@@ -57,50 +57,54 @@
 <& /Elements/ListActions, actions => \@results &>
 
 <span class="catalog <% CSSClass($catalog->Name) %>">
-<form method="post" enctype="multipart/form-data" id="CreateAsset" action="Create.html">
-  <input type="hidden" name="id" value="new">
-  <input type="hidden" name="Catalog" value="<% $catalog->id %>">
-
-<a name="basics"></a>
-<div id="Asset-Create-basics" class="asset-metadata">
-    <table>
-        <tbody>
-        <tr>
-            <td>
-  <&| /Widgets/TitleBox, title => loc("Basics"), class => "asset-basics", title_class => "inverse" &>
-    <& Elements/EditBasics, %ARGS, AssetObj => $asset, CatalogObj => $catalog &>
-  </&>
-
-  <&| /Widgets/TitleBox, title => loc("People"), class => "asset-people", title_class => "inverse" &>
-    <& Elements/EditPeople, %ARGS, AssetObj => $asset &>
-  </&>
-  </td><td>
-  <&| /Widgets/TitleBox, title => loc("Links"), class => "asset-links", title_class => "inverse" &>
-    <& /Elements/AddLinks,
-        Object          => $asset,
-        CustomFields    => $catalog->AssetCustomFields &>
-  </&>
-  </td>
-
-  </tr>
-  </tbody>
-  </table>
-</div>
-
-<div id="Asset-Create-details">
-<a name="details"></a>
-
-  <& /Elements/EditCustomFieldCustomGroupings,
-        Object => $asset,
-        TitleBoxARGS => { title_class => "inverse" },
-        KeepValue => 1,
-        CustomFieldGenerator => sub { $catalog->AssetCustomFields },
-        ForCreation => 1,
-  &>
-</div>
-
-  <& /Elements/Submit, Label => loc('Create asset') &>
-</form>
+  <form method="post" enctype="multipart/form-data" id="CreateAsset" action="Create.html">
+    <input type="hidden" name="id" value="new">
+    <input type="hidden" name="Catalog" value="<% $catalog->id %>">
+
+    <div id="Asset-Create-basics" class="asset-metadata form-row">
+      <a name="basics"></a>
+      <div class="col-md-6">
+        <&| /Widgets/TitleBox, title => loc("Basics"), class => "asset-basics", title_class => "inverse" &>
+          <& Elements/EditBasics, %ARGS, AssetObj => $asset, CatalogObj => $catalog &>
+        </&>
+      </div>
+
+      <div class="col-md-6">
+        <&| /Widgets/TitleBox, title => loc("People"), class => "asset-people", title_class => "inverse" &>
+            <& Elements/EditPeople, %ARGS, AssetObj => $asset &>
+        </&>
+      </div>
+    </div>
+
+    <div id="Asset-Create-details" class="form-row">
+      <a name="details"></a>
+      <div class="col-md-6">
+        <& /Elements/EditCustomFieldCustomGroupings,
+          Object => $asset,
+          TitleBoxARGS => { title_class => "inverse" },
+          KeepValue => 1,
+          CustomFieldGenerator => sub { $catalog->AssetCustomFields },
+          ForCreation => 1,
+        &>
+      </div>
+
+      <div class="col-md-6">
+        <&| /Widgets/TitleBox, title => loc("Links"), class => "asset-links", title_class => "inverse" &>
+          <& /Elements/AddLinks,
+            Object          => $asset,
+            CustomFields    => $catalog->AssetCustomFields
+          &>
+        </&>
+      </div>
+    </div>
+
+    <div class="form-row">
+      <div class="col-md-12">
+        <& /Elements/Submit, Label => loc('Create asset') &>
+      </div>
+    </div>
+
+  </form>
 </span>
 
 <%args>
diff --git a/share/html/Asset/Elements/AddCatalogPeople b/share/html/Asset/Elements/AddCatalogPeople
index 0d65328a6..af3fa0544 100644
--- a/share/html/Asset/Elements/AddCatalogPeople
+++ b/share/html/Asset/Elements/AddCatalogPeople
@@ -49,19 +49,35 @@
 $Object
 </%args>
 <div class="add-user">
-<h3><&|/l&>Add a person</&></h3>
-<& SelectRoleType, Object => $Object, Name => "AddUserRoleMember-Role" &>
-<input type="text" name="AddUserRoleMember"
-       data-autocomplete="Users"
-       data-autocomplete-return="Name"
-       placeholder="<% loc("Find a user...") %>">
+  <h3><&|/l&>Add a person</&></h3>
+  <div class="form-row">
+    <div class="col-md-3">
+      <& SelectRoleType, Object => $Object, Name => "AddUserRoleMember-Role" &>
+    </div>
+    <div class="col-md-9">
+      <input type="text" name="AddUserRoleMember"
+        data-autocomplete="Users"
+        data-autocomplete-return="Name"
+        placeholder="<% loc("Find a user...") %>"
+        class="form-control"
+      >
+    </div>
+  </div>
 </div>
 
 <div class="add-group">
-<h3><&|/l&>Add a group</&></h3>
-<& SelectRoleType, Object => $Object, Name => "AddGroupRoleMember-Role" &>
-<input type="text" name="AddGroupRoleMember"
-       data-autocomplete="Groups"
-       data-autocomplete-return="Name"
-       placeholder="<% loc("Find a group...") %>">
+  <h3><&|/l&>Add a group</&></h3>
+  <div class="form-row">
+    <div class="col-md-3">
+      <& SelectRoleType, Object => $Object, Name => "AddGroupRoleMember-Role" &>
+    </div>
+    <div class="col-md-9">
+      <input type="text" name="AddGroupRoleMember"
+        data-autocomplete="Groups"
+        data-autocomplete-return="Name"
+        placeholder="<% loc("Find a group...") %>"
+        class="form-control"
+      >
+    </div>
+  </div>
 </div>
diff --git a/share/html/Asset/Elements/CreateInCatalog b/share/html/Asset/Elements/CreateInCatalog
index 6ac611008..dc3a1269e 100644
--- a/share/html/Asset/Elements/CreateInCatalog
+++ b/share/html/Asset/Elements/CreateInCatalog
@@ -46,8 +46,17 @@
 %#
 %# END BPS TAGGED BLOCK }}}
 <form action="<% RT->Config->Get("WebPath") %>/Asset/Create.html" id="AssetCreateInCatalog">
-  <&|/l_unsafe,
-    $m->scomp("/Asset/Elements/SelectCatalog"),
-    &>Create a new asset in the catalog [_1].</&>
-  <& /Elements/Submit, Label => loc("Go"), Caption => loc("This will take you to a partially prefilled asset creation form.") &>
+  <div class="form-row">
+    <div class="col-md-12 text-center">
+      <&|/l&>Create a new asset in the catalog</&>:
+      <div class="d-inline-block">
+        <& /Asset/Elements/SelectCatalog &>
+      </div>
+    </div>
+  </div>
+  <div class="form-row">
+    <div class="col-md-12">
+      <& /Elements/Submit, Label => loc("Go"), Caption => loc("This will take you to a partially prefilled asset creation form.") &>
+    </div>
+  </div>
 </form>
diff --git a/share/html/Asset/Elements/CreateLinkedTicket b/share/html/Asset/Elements/CreateLinkedTicket
index 193a2df1b..cf7d0d781 100644
--- a/share/html/Asset/Elements/CreateLinkedTicket
+++ b/share/html/Asset/Elements/CreateLinkedTicket
@@ -78,15 +78,24 @@ foreach my $asset (@asset_objs){
 <form action="<% RT->Config->Get("WebPath") %><% $session{CurrentUser}->Privileged ? "/Ticket" : "/SelfService" %>/Create.html" id="AssetCreateLinkedTicket">
   <input name="new-RefersTo" value="<% $refers_to %>" type="hidden">
   <input name="Subject" value="<% $asset_objs[0]->Name %>" type="hidden">
+
 % if ( @asset_objs == 1 ){
-  <&|/l_unsafe,
-    $m->scomp("/Elements/SelectNewTicketQueue"),
-    @description &>Create a new ticket in the [_1] queue about asset #[_2]: [_3].</&>
+  <div class="form-row">
+    <div class="col-md-12">
+      <&|/l_unsafe,
+        $m->scomp("/Elements/SelectNewTicketQueue"),
+        @description &>Create a new ticket in the [_1] queue about asset #[_2]: [_3].</&>
+    </div>
+  </div>
 % }
 % else {
-<&|/l_unsafe,
-    $m->scomp("/Elements/SelectNewTicketQueue"),
-    &>Create a new ticket in the [_1] queue about multiple assets.</&>
+  <div class="form-row">
+    <div class="col-md-12">
+      <&|/l_unsafe,
+        $m->scomp("/Elements/SelectNewTicketQueue"),
+        &>Create a new ticket in the [_1] queue about multiple assets.</&>
+    </div>
+  </div>
 % }
 % if ($Requestors) {
     <input type="hidden" name="Requestors" value="<% $Requestors%>" />
@@ -95,13 +104,20 @@ foreach my $asset (@asset_objs){
 %     for my $role ($asset_objs[0]->Roles) {
 %         my $addr = join ', ', keys %{$role_addresses{$role}};
 %         next unless defined $addr and length $addr;
-  <br>
-  <label>
-    <input type="radio" name="Requestors" value="<% $addr %>" <% $first ? 'checked="checked"' : '' |n%>/>
-    <&|/l, loc($role), $addr &>Use asset [_1] as ticket Requestor: [_2]</&>
-  </label>
+  <div class="form-row">
+    <div class="col-md-12">
+      <div class="custom-control custom-radio">
+        <input class="custom-control-input" id="radio-<%$role%>" type="radio" name="Requestors" value="<% $addr %>" <% $first ? 'checked="checked"' : '' |n%>/>
+        <label class="custom-control-label" for="radio-<%$role%>"><&|/l, loc($role), $addr &>Use asset [_1] as ticket Requestor: [_2]</&></label>
+      </div>
+    </div>
+  </div>
 %         $first = 0;
 %     }
 % }
-  <& /Elements/Submit, Label => loc("Go"), Caption => loc("This will take you to a partially prefilled ticket creation form.") &>
+  <div class="form-row">
+    <div class="col-md-12">
+      <& /Elements/Submit, Label => loc("Go"), Caption => loc("This will take you to a partially filled ticket creation form.") &>
+    </div>
+  </div>
 </form>
diff --git a/share/html/Asset/Elements/EditBasics b/share/html/Asset/Elements/EditBasics
index c971d6706..798d98261 100644
--- a/share/html/Asset/Elements/EditBasics
+++ b/share/html/Asset/Elements/EditBasics
@@ -45,27 +45,45 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<table>
 % if ($AssetObj->id) {
-  <tr class="asset-catalog">
-    <td class="label"><label for="Catalog"><&|/l&>Catalog</&>:</label></td>
-    <td><& /Asset/Elements/SelectCatalog, Default => $current{Catalog} &></td>
-  </tr>
+  <div class="form-row asset-catalog">
+    <div class="label col-md-3">
+      <&|/l&>Catalog</&>:
+    </div>
+    <div class="value col-md-9">
+      <& /Asset/Elements/SelectCatalog, Default => $current{Catalog} &>
+    </div>
+  </div>
 % }
-  <tr class="asset-name">
-    <td class="label"><label for="Name"><&|/l&>Name</&>:</label></td>
-    <td><input type="text" name="Name" value="<% $current{Name} %>" size="40"></td>
-  </tr>
-  <tr class="asset-description">
-    <td class="label"><label for="Description"><&|/l&>Description</&>:</label></td>
-    <td><input type="text" name="Description" value="<% $current{Description} %>" size="40"></td>
-  </tr>
-  <tr class="asset-status">
-    <td class="label"><label for="Status"><&|/l&>Status</&>:</label></td>
-    <td><& /Asset/Elements/SelectStatus, Name => 'Status', AssetObj => $AssetObj, CatalogObj => $CatalogObj &></td>
-  </tr>
+  <div class="form-row asset-name">
+    <div class="label col-md-3">
+      <&|/l&>Name</&>:
+    </div>
+    <div class="value col-md-9">
+      <input class="form-control" type="text" name="Name" value="<% $current{Name} %>" size="40">
+    </div>
+  </div>
+
+  <div class="form-row asset-description">
+    <div class="label col-md-3">
+      <&|/l&>Description</&>:
+    </div>
+    <div class="value col-md-9">
+      <input class="form-control" type="text" name="Description" value="<% $current{Description} %>" size="40">
+    </div>
+  </div>
+
+  <div class="form-row asset-status">
+    <div class="label col-md-3">
+      <&|/l&>Status</&>:
+    </div>
+    <div class="value col-md-9">
+      <& /Asset/Elements/SelectStatus, Name => 'Status', AssetObj => $AssetObj, CatalogObj => $CatalogObj &>
+    </div>
+  </div>
+
 % if ( $AssetObj->id ) {
-  <& /Elements/EditCustomFields, Object => $AssetObj, Grouping => 'Basics', InTable => 1 &>
+  <& /Elements/EditCustomFields, Object => $AssetObj, Grouping => 'Basics', InTable => 0 &>
 % } elsif ( my @cf_names = grep { defined } @{RT->Config->Get('AssetBasicCustomFieldsOnCreate') || []} ) {
 %   my $cfs = $CatalogObj->AssetCustomFields;
 %   for my $name ( @cf_names ) {
@@ -74,7 +92,6 @@
   <& /Elements/EditCustomFields, Object => $AssetObj, CustomFields => $cfs, InTable => 1, KeepValue => 1 &>
 % }
 % $m->callback(%ARGS, CallbackName => "AfterFields");
-</table>
 <%args>
 $AssetObj
 $CatalogObj => undef
diff --git a/share/html/Asset/Elements/EditCatalogPeople b/share/html/Asset/Elements/EditCatalogPeople
index 4438c5b24..ed29e9e82 100644
--- a/share/html/Asset/Elements/EditCatalogPeople
+++ b/share/html/Asset/Elements/EditCatalogPeople
@@ -51,9 +51,14 @@ $Object
 <%init>
 </%init>
 % for my $role ($Object->Roles( ACLOnly => 0 )) {
-<div class="role-<% CSSClass($role) %> role">
-  <h3><% loc($role) %></h3>
-  <& EditRoleMembers, Group => $Object->RoleGroup($role) &>
-</div>
+  <div class="role-<% CSSClass($role) %> role">
+    <h3><% loc($role) %></h3>
+    <& EditRoleMembers, Group => $Object->RoleGroup($role) &>
+  </div>
 % }
-<em><&|/l&>(Check box to delete)</&></em>
+
+<div class="col-md-12">
+  <div class="form-row">
+    <em><&|/l&>(Check box to delete)</&></em>
+  </div>
+</div>
diff --git a/share/html/Asset/Elements/EditDates b/share/html/Asset/Elements/EditDates
index 2c4bedefd..4765592ac 100644
--- a/share/html/Asset/Elements/EditDates
+++ b/share/html/Asset/Elements/EditDates
@@ -45,28 +45,36 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<table>
-  <tr>
-    <td class="label"><&|/l&>Created</&>:</td>
-    <td>
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Created</&>:
+  </div>
+  <div class="col-md-9 value">
+    <span class="current-value form-control">
       <&|/l_unsafe,
-          $m->interp->apply_escapes($AssetObj->CreatedAsString, 'h'),
-          $m->scomp('/Elements/ShowUser', User => $AssetObj->CreatorObj)
+        $m->interp->apply_escapes($AssetObj->CreatedAsString, 'h'),
+        $m->scomp('/Elements/ShowUser', User => $AssetObj->CreatorObj)
         &>[_1] by [_2]</&>
-    </td>
-  </tr>
-  <tr>
-    <td class="label"><&|/l&>Last Updated</&>:</td>
-    <td>
+    </span>
+  </div>
+</div>
+
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Last Updated</&>:
+  </div>
+  <div class="col-md-9 value">
+    <span class="current-value form-control">
       <&|/l_unsafe,
-          $m->interp->apply_escapes($AssetObj->LastUpdatedAsString, 'h'),
-          $m->scomp('/Elements/ShowUser', User => $AssetObj->LastUpdatedByObj)
+        $m->interp->apply_escapes($AssetObj->LastUpdatedAsString, 'h'),
+        $m->scomp('/Elements/ShowUser', User => $AssetObj->LastUpdatedByObj)
         &>[_1] by [_2]</&>
-    </td>
-  </tr>
-  <& /Elements/EditCustomFields, Object => $AssetObj, Grouping => 'Dates', InTable => 1 &>
+    </span>
+  </div>
+</div>
+
+<& /Elements/EditCustomFields, Object => $AssetObj, Grouping => 'Dates' &>
 % $m->callback(%ARGS, CallbackName => "AfterFields");
-</table>
 <%args>
 $AssetObj
 </%args>
diff --git a/share/html/Asset/Elements/EditPeople b/share/html/Asset/Elements/EditPeople
index 06c16b497..2f9149f57 100644
--- a/share/html/Asset/Elements/EditPeople
+++ b/share/html/Asset/Elements/EditPeople
@@ -45,20 +45,15 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<table border="0" cellpadding="0" cellspacing="0">
 % for my $role ( $AssetObj->Roles ) {
-<tr class="asset-people-<% CSSClass($role) %>">
-<td class="label">
-<% loc($role) %>:
-</td>
-<td class="value" colspan="5">
-<& /Elements/EmailInput, Name => $role, Size => undef, Default => $ARGS{$role}, Autocomplete => 1 &>
-</td>
-</tr>
+<div class="asset-people-<% CSSClass($role) %> form-row">
+  <div class="label col-md-3"><% loc($role) %>:</div>
+  <div class="value col-md-9">
+    <& /Elements/EmailInput, Name => $role, Size => undef, Default => $ARGS{$role}, Autocomplete => 1 &>
+  </div>
+</div>
 % }
 
-</table>
-
 <%args>
 $AssetObj
 </%args>
diff --git a/share/html/Asset/Elements/EditRoleMembers b/share/html/Asset/Elements/EditRoleMembers
index dcbb5fa8f..3b5f0b818 100644
--- a/share/html/Asset/Elements/EditRoleMembers
+++ b/share/html/Asset/Elements/EditRoleMembers
@@ -52,28 +52,30 @@ $Recursively => 0
 <%init>
 my $field_name = "RemoveRoleMember-" . $Group->Name;
 </%init>
-<ul class="role-members">
+<ul class="role-members list-group list-group-compact">
 % my $Users = $Group->UserMembersObj( Recursively => $Recursively );
 % if ($Group->SingleMemberRoleGroup) {
-<input type="text" value="<% $Users->First->Name %>" name="SetRoleMember-<% $Group->Name %>" id="SetRoleMember-<% $Group->Name %>" data-autocomplete="Users" data-autocomplete-return="Name" /><br />
+  <li class="list-group-item">
+    <input class="form-control selectpicker" type="text" value="<% $Users->First->Name %>" name="SetRoleMember-<% $Group->Name %>" id="SetRoleMember-<% $Group->Name %>" data-autocomplete="Users" data-autocomplete-return="Name" />
+  </li>
 % } else {
 % while ( my $user = $Users->Next ) {
-<li>
-  <label>
-    <input type="checkbox" name="<% $field_name %>" value="<% $user->PrincipalId %>">
-    <& /Elements/ShowUser, User => $user &>
-  </label>
-</li>
+  <li class="list-group-item">
+    <div class="custom-control custom-checkbox">
+      <input class="checkbox custom-control-input" type="checkbox" id="checkbox-<%$field_name%>-<% $user->PrincipalId %>" name="<% $field_name %>" value="<% $user->PrincipalId %>">
+      <label class="custom-control-label" for="checkbox-<%$field_name%>-<% $user->PrincipalId %>"><& /Elements/ShowUser, User => $user &></label>
+    </div>
+  </li>
 % }
 % my $Groups = $Group->GroupMembersObj( Recursively => $Recursively );
 % $Groups->LimitToUserDefinedGroups;
 % while (my $group = $Groups->Next) {
-<li>
-  <label>
-    <input type="checkbox" name="<% $field_name %>" value="<% $group->PrincipalId %>">
-    <&|/l&>Group</&>: <% $group->Name %>
-  </label>
-</li>
+  <li class="list-group-item">
+    <div class="custom-control custom-checkbox">
+      <input class="checkbox custom-control-input" id="checkbox-<%$field_name%>-<% $group->PrincipalId %>" type="checkbox" name="<% $field_name %>" value="<% $group->PrincipalId %>">
+      <label class="custom-control-label" for="checkbox-<%$field_name%>-<% $group->PrincipalId %>"><&|/l&>Group</&>: <% $group->Name %></label>
+    </div>
+  </li>
 % }
 % }
 </ul>
diff --git a/share/html/Asset/Elements/SelectRoleType b/share/html/Asset/Elements/SelectRoleType
index 6abbc2d79..7f51901b7 100644
--- a/share/html/Asset/Elements/SelectRoleType
+++ b/share/html/Asset/Elements/SelectRoleType
@@ -50,7 +50,7 @@ $Object
 $Name
 $AllowNull  => 0
 </%args>
-<select name="<% $Name %>">
+<select name="<% $Name %>" class="selectpicker form-control">
 % if ($AllowNull) {
   <option value=""></option>
 % }
diff --git a/share/html/Asset/Helpers/CreateInCatalog b/share/html/Asset/Helpers/CreateInCatalog
index 46e7072d5..b986e4712 100644
--- a/share/html/Asset/Helpers/CreateInCatalog
+++ b/share/html/Asset/Helpers/CreateInCatalog
@@ -45,5 +45,11 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<& /Asset/Elements/CreateInCatalog &>
+<div class="modal-dialog modal-dialog-centered" role="document">
+  <div class="modal-content">
+    <div class="modal-body">
+        <& /Asset/Elements/CreateInCatalog &>
+    </div>
+  </div>
+</div>
 % $m->abort;
diff --git a/share/html/Asset/Helpers/CreateLinkedTicket b/share/html/Asset/Helpers/CreateLinkedTicket
index 76631d606..9b3429884 100644
--- a/share/html/Asset/Helpers/CreateLinkedTicket
+++ b/share/html/Asset/Helpers/CreateLinkedTicket
@@ -60,5 +60,11 @@ elsif ( $Asset ){
 }
 
 </%init>
-<& /Asset/Elements/CreateLinkedTicket, AssetObj => \@asset_objs, Requestors => $Requestors &>
+<div class="modal-dialog modal-dialog-centered" role="document">
+  <div class="modal-content">
+    <div class="modal-body">
+      <& /Asset/Elements/CreateLinkedTicket, AssetObj => \@asset_objs, Requestors => $Requestors &>
+    </div>
+  </div>
+</div>
 % $m->abort;
diff --git a/share/html/Asset/Modify.html b/share/html/Asset/Modify.html
index e047b0ab5..c0f1eabe1 100644
--- a/share/html/Asset/Modify.html
+++ b/share/html/Asset/Modify.html
@@ -55,15 +55,25 @@
   <input type="hidden" name="id" value="<% $asset->id %>">
   <input type="hidden" name="DisplayAfter" value="<% $DisplayAfter ? 1 : 0 %>">
 
-  <&| /Widgets/TitleBox, title => loc("Basics"), class => "asset-basics", title_class => "inverse" &>
-    <& Elements/EditBasics, %ARGS, AssetObj => $asset &>
-  </&>
+  <div class="asset-metadata form-row">
+    <div class="col-md-6">
+      <&| /Widgets/TitleBox, title => loc("Basics"), class => "asset-basics", title_class => "inverse" &>
+          <& Elements/EditBasics, %ARGS, AssetObj => $asset &>
+      </&>
+    </div>
 
-  <&| /Widgets/TitleBox, title => loc("Custom Fields"), class => "asset-info-cfs", title_class => "inverse" &>
-    <& /Elements/EditCustomFields, Object => $asset, Grouping => '' &>
-  </&>
+    <div class="col-md-6">
+      <&| /Widgets/TitleBox, title => loc("Custom Fields"), class => "asset-info-cfs", title_class => "inverse" &>
+          <& /Elements/EditCustomFields, Object => $asset, Grouping => '' &>
+      </&>
+    </div>
+  </div>
 
-  <& /Elements/Submit, Label => loc('Save asset'), Name => "Update" &>
+  <div class="form-row">
+    <div class="col-md-12">
+      <& /Elements/Submit, Label => loc('Save asset'), Name => "Update" &>
+    </div>
+  </div>
 </form>
 </span>
 
diff --git a/share/html/Asset/ModifyCFs.html b/share/html/Asset/ModifyCFs.html
index 999cb150f..1a19d890b 100644
--- a/share/html/Asset/ModifyCFs.html
+++ b/share/html/Asset/ModifyCFs.html
@@ -52,14 +52,17 @@
 
 <span class="catalog <% CSSClass($asset->CatalogObj->Name) %>">
 <form method="post" enctype="multipart/form-data" id="ModifyAssetCFs" action="ModifyCFs.html">
-  <input type="hidden" name="id" value="<% $asset->id %>">
-  <input type="hidden" name="Grouping" value="<% $Grouping %>">
+<input type="hidden" name="id" value="<% $asset->id %>">
+<input type="hidden" name="Grouping" value="<% $Grouping %>">
 
   <&| /Widgets/TitleBox, title => $Grouping ? loc($Grouping) : loc("Custom Fields"), class => "asset-info-cfs ".($Grouping ? CSSClass("asset-info-cfs-\L$Grouping") : ""), title_class => "inverse" &>
     <& /Elements/EditCustomFields, Object => $asset, Grouping => $Grouping &>
   </&>
-
-  <& /Elements/Submit, Label => loc('Save asset'), Name => "Update" &>
+  <div class="form-row">
+    <div class="col-md-12">
+      <& /Elements/Submit, Label => loc('Save asset'), Name => "Update" &>
+    </div>
+  </div>
 </form>
 </span>
 
diff --git a/share/html/Asset/ModifyDates.html b/share/html/Asset/ModifyDates.html
index 663eaa570..a390b8fb4 100644
--- a/share/html/Asset/ModifyDates.html
+++ b/share/html/Asset/ModifyDates.html
@@ -52,13 +52,16 @@
 
 <span class="catalog <% CSSClass($asset->CatalogObj->Name) %>">
 <form method="post" enctype="multipart/form-data" id="ModifyAssetDates" action="ModifyDates.html">
-  <input type="hidden" name="id" value="<% $asset->id %>">
+<input type="hidden" name="id" value="<% $asset->id %>">
 
   <&| /Widgets/TitleBox, title => loc("Dates"), class => "asset-dates", title_class => "inverse" &>
     <& Elements/EditDates, %ARGS, AssetObj => $asset &>
   </&>
-
-  <& /Elements/Submit, Label => loc('Save asset'), Name => "Update" &>
+  <div class="form-row">
+    <div class="col-md-12">
+      <& /Elements/Submit, Label => loc('Save asset'), Name => "Update" &>
+    </div>
+  </div>
 </form>
 </span>
 
diff --git a/share/html/Asset/ModifyLinks.html b/share/html/Asset/ModifyLinks.html
index 610a697c4..580fa6d3d 100644
--- a/share/html/Asset/ModifyLinks.html
+++ b/share/html/Asset/ModifyLinks.html
@@ -57,8 +57,11 @@
   <&| /Widgets/TitleBox, title => loc("Links"), class => "asset-links", title_class => "inverse" &>
     <& /Elements/EditLinks, %ARGS, Object => $asset, Merge => 0 &>
   </&>
-
-  <& /Elements/Submit, Label => loc('Save asset'), Name => "Update" &>
+  <div class="form-row">
+    <div class="col-md-12">
+      <& /Elements/Submit, Label => loc('Save asset'), Name => "Update" &>
+    </div>
+  </div>
 </form>
 </span>
 
diff --git a/share/html/Asset/ModifyPeople.html b/share/html/Asset/ModifyPeople.html
index 5cd0384ce..2e4672b88 100644
--- a/share/html/Asset/ModifyPeople.html
+++ b/share/html/Asset/ModifyPeople.html
@@ -57,18 +57,26 @@
   <input type="hidden" name="id" value="<% $asset->id %>">
 
   <&| /Widgets/TitleBox, title => loc("People"), class => "asset-people", title_class => "inverse" &>
-    <table width="100%" class="edit">
-      <tr>
-        <td width="30%"><& /Asset/Elements/EditCatalogPeople, %ARGS, Object => $asset &></td>
-        <td width="30%"><& /Asset/Elements/AddCatalogPeople, Object => $asset &></td>
-        <td>
-          <& /Elements/EditCustomFields, Object => $asset, Grouping => 'People' &>
-        </td>
-      </tr>
-    </table>
+    <div class="form-row">
+      <div class="col-md-4">
+        <& /Asset/Elements/EditCatalogPeople, %ARGS, Object => $asset &>
+      </div>
+
+      <div class="col-md-4">
+        <& /Asset/Elements/AddCatalogPeople, Object => $asset &>
+      </div>
+
+      <div class="col-md-4">
+         <& /Elements/EditCustomFields, Object => $asset, Grouping => 'People' &>
+      </div>
+    </div>
   </&>
 
-  <& /Elements/Submit, Label => loc('Save'), Name => "Update" &>
+  <div class="form-row">
+    <div class="col-md-12">
+      <& /Elements/Submit, Label => loc('Save'), Name => "Update" &>
+    </div>
+  </div>
 </form>
 </span>
 

commit da1ac2b9a9739b60445437ee47525787fd410e39
Author: Craig Kaiser <craig at bestpractical.com>
Date:   Tue Apr 16 11:07:08 2019 -0400

    Update asset search components for elevator theme

diff --git a/share/html/Asset/Elements/AssetSearchBasics b/share/html/Asset/Elements/AssetSearchBasics
index 43f4010fd..05b163f75 100644
--- a/share/html/Asset/Elements/AssetSearchBasics
+++ b/share/html/Asset/Elements/AssetSearchBasics
@@ -46,25 +46,59 @@
 %#
 %# END BPS TAGGED BLOCK }}}
 <&| /Widgets/TitleBox, title => loc('Basics'), class=>'asset-search-grouping asset-search-basics' &>
-<table>
-<tr class="asset-catalog"><td class="label"><label for="Catalog"><&|/l&>Catalog</&></label></td>
-    <td class="value" colspan="3">
-<& /Asset/Elements/SelectCatalog, Name => 'Catalog', CheckRight => "ShowCatalog",
-       Default => $ARGS{'Catalog'}, OnChange => "jQuery('#AssetSearch').submit()" &>
-</td></tr>
-<tr class="asset-status"><td class="label"><label for="Status"><&|/l&>Status</&></label></td>
-    <td class="value" colspan="3">
-<& /Asset/Elements/SelectStatus, Name => 'Status', Catalogs => { $CatalogObj->id => 1 }, DefaultValue => 1,
-       Default => ($ARGS{'Status'} || '') &>
-</td></tr>
-<tr class="asset-name"><td class="label"><label for="Name"><&|/l&>Name</&></label></td>
-    <td class="value"><input type="text" id="Name" name="Name" value="<% $ARGS{Name} || ''%>" /></td>
-    <td class="label not"><label for="!Name"><&|/l&>not</&></td>
-    <td class="value"><input type="text" id="!Name" name="!Name" value="<% $ARGS{"!Name"} || ''%>" /></td></tr>
-<tr class="asset-description"><td class="label"><label for="Description"><&|/l&>Description</&></label></td>
-    <td class="value"><input type="text" id="Description" name="Description" value="<% $ARGS{Description} || ''%>" /></td>
-    <td class="label not"><label for="!Description"><&|/l&>not</&></td>
-    <td class="value"><input type="text" id="!Description" name="!Description" value="<% $ARGS{"!Description"} || ''%>" /></td></tr>
+  <div class="form-row">
+    <div class="col-md-6">
+      <div class="form-row">
+        <div class="label col-md-3"><&|/l&>Catalog</&></div>
+        <div class="value col-md-9">
+          <& /Asset/Elements/SelectCatalog, Name => 'Catalog', CheckRight => "ShowCatalog",
+            Default => $ARGS{'Catalog'}, OnChange => "jQuery('#AssetSearch').submit()"
+          &>
+        </div>
+      </div>
+    </div>
+
+    <div class="col-md-6">
+      <div class="form-row">
+        <div class="label col-md-3"><&|/l&>Status</&></div>
+        <div class="value col-md-9">
+          <& /Asset/Elements/SelectStatus, Name => 'Status', Catalogs => { $CatalogObj->id => 1 }, DefaultValue => 1,
+            Default => ($ARGS{'Status'} || '')
+          &>
+        </div>
+      </div>
+    </div>
+  </div>
+
+  <div class="form-row">
+    <div class="col-md-6">
+      <div class="form-row">
+        <div class="label col-md-2"><&|/l&>Name</&></div>
+        <div class="value col-md-4">
+          <input class="form-control" type="text" id="Name" name="Name" value="<% $ARGS{Name} || ''%>" />
+        </div>
+        <div class="label col-md-2"><&|/l&>not</&></div>
+        <div class="value col-md-4">
+          <input class="form-control" type="text" id="!Name" name="!Name" value="<% $ARGS{"!Name"} || ''%>" />
+        </div>
+      </div>
+    </div>
+
+    <div class="col-md-6">
+      <div class="form-row">
+        <div class="label col-md-2"><&|/l&>Description</&></div>
+        <div class="value col-md-4">
+          <input class="form-control" type="text" id="Description" name="Description" value="<% $ARGS{Description} || ''%>" />
+        </div>
+        <div class="label col-md-2"><&|/l&>not</&></div>
+        <div class="value col-md-4">
+          <input class="form-control" type="text" id="!Description" name="!Description" value="<% $ARGS{"!Description"} || ''%>" />
+        </div>
+      </div>
+  </div>
+
+  <div class="form-row">
+    <div class="col-md-12">
 % my $CFs = RT::CustomFields->new( $session{CurrentUser} );
 % $CFs->LimitToCatalog( $CatalogObj->Id );
 % $CFs->LimitToObjectId(0); # LimitToGlobal but no LookupType restriction
@@ -73,14 +107,23 @@
 % my $name = "CF.{" . $cf->Name . "}";
 % my $value  = ref($ARGS{$name}) ? $ARGS{$name}[0] : $ARGS{$name} || '';
 % my $negval = ref($ARGS{"!$name"}) ? $ARGS{"!$name"}[0] : $ARGS{"!$name"} || '';
-<tr>
-  <td class="label"><label for="<% $name %>"><% $cf->Name %></label></td>
-  <td class="value"><& /Elements/SelectCustomFieldValue, CustomField => $cf, Name => $name, Default => $value &></td>
-  <td class="label not"><label for="!<% $name %>"><&|/l&>not</&></label></td>
-  <td class="value"><& /Elements/SelectCustomFieldValue, CustomField => $cf, Name => "!$name", Default => $negval &></td>
-</tr>
+      <div class="form-row">
+        <div class="label col-md-2">
+          <% $cf->Name %>
+        </div>
+        <div class="value col-md-4">
+          <& /Elements/SelectCustomFieldValue, CustomField => $cf, Name => $name, Default => $value &>
+        </div>
+        <div class="label col-md-2">
+          <&|/l&>not</&>
+        </div>
+        <div class="value col-md-4">
+          <& /Elements/SelectCustomFieldValue, CustomField => $cf, Name => "!$name", Default => $negval &>
+        </div>
+      </div>
 % }
-</table>
+    </div>
+  </div>
 </&>
 <%args>
 $CatalogObj => undef
diff --git a/share/html/Asset/Elements/AssetSearchCFs b/share/html/Asset/Elements/AssetSearchCFs
index 38be3be67..f51a2db69 100644
--- a/share/html/Asset/Elements/AssetSearchCFs
+++ b/share/html/Asset/Elements/AssetSearchCFs
@@ -51,20 +51,26 @@
 % $CFs->LimitToObjectId(0); # LimitToGlobal but no LookupType restriction
 % $CFs->LimitToGrouping( "RT::Asset" => $Grouping );
 % if ( $CFs->Count > 0 ){
-<table>
 %   while (my $cf = $CFs->Next) {
 %     $$has_assets_cfs = 1 if $has_assets_cfs;
 %     my $name = "CF.{" . $cf->Name . "}";
 %     my $value  = ref($ARGS{$name}) ? $ARGS{$name}[0] : $ARGS{$name} || '';
 %     my $negval = ref($ARGS{"!$name"}) ? $ARGS{"!$name"}[0] : $ARGS{"!$name"} || '';
-<tr>
-  <td class="label"><label for="<% $name %>"><% $cf->Name %></label></td>
-  <td class="value"><& /Elements/SelectCustomFieldValue, CustomField => $cf, Name => $name, Default => $value &></td>
-  <td class="label not"><label for="!<% $name %>"><&|/l&>not</&></label></td>
-  <td class="value"><& /Elements/SelectCustomFieldValue, CustomField => $cf, Name => "!$name", Default => $negval &></td>
-</tr>
+  <div class="form-row">
+    <div class="label col-md-2">
+      <% $cf->Name %>
+    </div>
+    <div class="value col-md-4">
+      <& /Elements/SelectCustomFieldValue, CustomField => $cf, Name => $name, Default => $value &>
+    </div>
+    <div class="label col-md-2">
+      <&|/l&>not</&>
+    </div>
+    <div class="value col-md-4">
+      <& /Elements/SelectCustomFieldValue, CustomField => $cf, Name => "!$name", Default => $negval &>
+    </div>
 %   }
-</table>
+  </div>
 % }
 </&>
 <%args>
diff --git a/share/html/Asset/Elements/AssetSearchPeople b/share/html/Asset/Elements/AssetSearchPeople
index 6355f8aef..b152ea7f9 100644
--- a/share/html/Asset/Elements/AssetSearchPeople
+++ b/share/html/Asset/Elements/AssetSearchPeople
@@ -46,20 +46,25 @@
 %#
 %# END BPS TAGGED BLOCK }}}
 <&| /Widgets/TitleBox, class => "asset-search-people", title => loc('People') &>
-<table>
 % for my $role (RT::Asset->Roles) {
-<tr class="asset-role-<% CSSClass($role) %>">
-  <td class="label"><label for="Role.<% $role %>"><% loc($role) %></td>
-  <td class="value">
-      <input type="text" id="Role.<% $role %>" name="Role.<% $role %>"
-             data-autocomplete="Users" value="<% $ARGS{"Role.$role"} || '' %>" />
-  </td>
-  <td class="label not"><label for="!Role.<% $role %>"><&|/l&>not</&></td>
-  <td class="value">
-      <input type="text" id="!Role.<% $role %>" name="!Role.<% $role %>"
-             data-autocomplete="Users" value="<% $ARGS{"!Role.$role"} || '' %>" />
-  </td>
-</tr>
+  <div class="asset-role-<% CSSClass($role) %> form-row">
+    <div class="label col-md-2">
+      <% loc($role) %>
+    </div>
+    <div class="value col-md-4">
+      <input class="form-control" type="text" id="Role.<% $role %>" name="Role.<% $role %>"
+        data-autocomplete="Users" value="<% $ARGS{"Role.$role"} || '' %>"
+      />
+    </div>
+    <div class="label col-md-2">
+      <&|/l&>not</&>
+    </div>
+    <div class="value col-md-4">
+      <input class="form-control" type="text" id="!Role.<% $role %>" name="!Role.<% $role %>"
+        data-autocomplete="Users" value="<% $ARGS{"!Role.$role"} || '' %>"
+      />
+    </div>
+  </div>
 % }
 % my $CFs = RT::CustomFields->new( $session{CurrentUser} );
 % $CFs->LimitToCatalog( $CatalogObj->Id );
@@ -69,14 +74,21 @@
 % my $name = "CF.{" . $cf->Name . "}";
 % my $value  = ref($ARGS{$name}) ? $ARGS{$name}[0] : $ARGS{$name} || '';
 % my $negval = ref($ARGS{"!$name"}) ? $ARGS{"!$name"}[0] : $ARGS{"!$name"} || '';
-<tr>
-  <td class="label"><label for="<% $name %>"><% $cf->Name %></label></td>
-  <td class="value"><& /Elements/SelectCustomFieldValue, CustomField => $cf, Name => $name, Default => $value &></td>
-  <td class="label not"><label for="!<% $name %>"><&|/l&>not</&></label></td>
-  <td class="value"><& /Elements/SelectCustomFieldValue, CustomField => $cf, Name => "!$name", Default => $negval &></td>
-</tr>
+  <div class="form-row">
+    <div class="label col-md-2">
+      <% $cf->Name %>
+    </div>
+    <div class="value col-md-4">
+      <& /Elements/SelectCustomFieldValue, CustomField => $cf, Name => $name, Default => $value &>
+    </div>
+    <div class="label col-md-2">
+      <&|/l&>not</&>
+    </div>
+    <div class="value col-md-4">
+      <& /Elements/SelectCustomFieldValue, CustomField => $cf, Name => "!$name", Default => $negval &>
+    </div>
+  </div>
 % }
-</table>
 </&>
 <%args>
 $CatalogObj => undef
diff --git a/share/html/Asset/Elements/Search b/share/html/Asset/Elements/Search
index 801e792e9..1a84e1891 100644
--- a/share/html/Asset/Elements/Search
+++ b/share/html/Asset/Elements/Search
@@ -46,7 +46,7 @@
 %#
 %# END BPS TAGGED BLOCK }}}
 <form action="<% RT->Config->Get('WebPath') %>/Asset/Search/" class="asset-search">
-  <input name="q" accesskey="0" class="field" value="<% $value %>" placeholder="<&|/l&>Search Assets</&>..." type="search" results=5 autosave="search-assets" />
+  <input name="q" accesskey="0" class="field form-control" value="<% $value %>" placeholder="<&|/l&>Search Assets</&>..." type="search" results=5 autosave="search-assets" />
 </form>
 <%init>
 my $value = defined $DECODED_ARGS->{q} ? $DECODED_ARGS->{q} : '';
diff --git a/share/html/Asset/Search/Bulk.html b/share/html/Asset/Search/Bulk.html
index a5bedc124..59d4e3ee6 100644
--- a/share/html/Asset/Search/Bulk.html
+++ b/share/html/Asset/Search/Bulk.html
@@ -66,111 +66,167 @@
 <em><&|/l&>No assets matching search criteria found.</&></em>
 % }
 
-<& /Elements/Submit,
-    Name => 'Update',
-    Label => loc('Update'),
-    CheckboxNameRegex => '/^UpdateAsset(All)?$/',
-    CheckAll => 1, ClearAll => 1,
-&>
-<div class="submit">
-  <div class="buttons">
-  <span class="caption"></span>
-  <input type="submit" id="bulk-update-create-linked-ticket" name="CreateLinkedTicket"  value="Create Linked Ticket" class="button" alt="Create a ticket with checked assets linked" />
+  <div class="form-row">
+    <div class="col-md-12">
+      <& /Elements/Submit,
+        Name => 'Update',
+        Label => loc('Update'),
+        CheckboxNameRegex => '/^UpdateAsset(All)?$/',
+        CheckAll => 1, ClearAll => 1,
+      &>
+    </div>
   </div>
-</div>
-
-<&| /Widgets/TitleBox, title => loc("Basics"), class => "asset-basics asset-bulk-basics", title_class => "inverse" &>
-<table class="core-fields">
-  <tr class="asset-catalog">
-    <td class="label"><label for="UpdateCatalog"><&|/l&>Catalog</&></label></td>
-    <td><& /Asset/Elements/SelectCatalog, Name => 'UpdateCatalog', Default => $catalog_obj->id, UpdateSession => 0, &></td>
-  </tr>
-  <tr class="asset-name">
-    <td class="label"><label for="UpdateName"><&|/l&>Name</&></label></td>
-    <td><input type="text" name="UpdateName" value="<% $ARGS{'Name'}||'' %>" size="40"></td>
-  </tr>
-  <tr class="asset-description">
-    <td class="label"><label for="UpdateDescription"><&|/l&>Description</&></label></td>
-    <td><input type="text" name="UpdateDescription" value="<% $ARGS{'Description'}||'' %>" size="40"></td>
-  </tr>
-  <tr class="asset-status">
-    <td class="label"><label for="UpdateStatus"><&|/l&>Status</&></label></td>
-    <td><& /Asset/Elements/SelectStatus, Name => 'UpdateStatus', DefaultValue => 1, CatalogObj => $catalog_obj &></td>
-  </tr>
-</table>
+  <div class="submit">
+    <div class="form-row">
+      <div class="buttons col-md-12">
+        <span class="caption"></span>
+          <input type="submit" id="bulk-update-create-linked-ticket" name="CreateLinkedTicket"  value="Create Linked Ticket" class="button" alt="Create a ticket with checked assets linked" />
+        </div>
+      </div>
+    </div>
+
+    <div class="form-row">
+      <div class="col-md-12">
+        <&| /Widgets/TitleBox, title => loc("Basics"), class => "asset-basics asset-bulk-basics", title_class => "inverse" &>
+          <div class="form-row">
+            <div class="col-md-6">
+              <div class="form-row">
+                <div class="label col-md-3">
+                  <&|/l&>Catalog</&>
+                </div>
+                <div class="col-md-9 value">
+                  <& /Asset/Elements/SelectCatalog, Name => 'UpdateCatalog', Default => $catalog_obj->id, UpdateSession => 0, &>
+                </div>
+              </div>
+            </div>
+
+            <div class="col-md-6">
+              <div class="form-row">
+                <div class="col-md-3 label"><&|/l&>Name</&></div>
+                <div class="col-md-9 value">
+                  <input class="form-control" type="text" name="UpdateName" value="<% $ARGS{'Name'}||'' %>" size="40">
+                </div>
+              </div>
+            </div>
+          </div>
+
+          <div class="form-row">
+            <div class="col-md-6 asset-catalog">
+              <div class="form-row">
+                <div class="label col-md-3"><&|/l&>Description</&></div>
+                <div class="col-md-9 value">
+                  <input class="form-control" type="text" name="UpdateDescription" value="<% $ARGS{'Description'}||'' %>" size="40">
+                </div>
+              </div>
+            </div>
+
+            <div class="col-md-6 asset-status">
+              <div class="form-row">
+                <div class="label col-md-3"><&|/l&>Status</&></div>
+                <div class="col-md-9 value">
+                  <& /Asset/Elements/SelectStatus, Name => 'UpdateStatus', DefaultValue => 1, CatalogObj => $catalog_obj &>
+                </div>
+              </div>
+            </div>
+          </div>
 %   my $cfs = $catalog_obj->AssetCustomFields;
 %   $cfs->LimitToGrouping( 'RT::Asset' => 'Basics');
 %   if ( $cfs->Count ) {
-<& /Elements/BulkCustomFields, CustomFields => $cfs, &>
+        <& /Elements/BulkCustomFields, CustomFields => $cfs, &>
 %   }
-</&>
+      </&>
+    </div>
+  </div>
 
-<&| /Widgets/TitleBox, title => loc("People"), class => "asset-people asset-bulk-people", title_class => "inverse" &>
-<table class="core-fields">
+<div class="core-fields">
+  <&| /Widgets/TitleBox, title => loc("People"), class => "asset-people asset-bulk-people", title_class => "inverse" &>
 % for my $rname ( $asset->Roles( ACLOnly => 0 ) ) {
 % my $role = $asset->Role( $rname );
 % if ( $role->{'Single'} ) {
 % my $input = "SetRoleMember-$rname";
-<tr class="full-width">
-<td class="label"><label for="<% $input %>"><% loc($rname) %></label></td>
-<td><input type="text" value="<% $ARGS{ $input } || '' %>" name="<% $input %>" id="<% $input %>" data-autocomplete="Users" data-autocomplete-return="Name" /></td>
-</tr>
+    <div class="form-row">
+      <div class="col-md-6">
+        <div class="form-row">
+          <div class="label col-md-3">
+            <% loc($rname) %>
+          </div>
+          <div class="col-md-9 value">
+            <input class="form-control" type="text" value="<% $ARGS{ $input } || '' %>" name="<% $input %>" id="<% $input %>" data-autocomplete="Users" data-autocomplete-return="Name" />
+          </div>
+        </div>
+      </div>
+    </div>
 % } else {
-<tr>
 % my $input = "AddRoleMember-$rname";
-<td class="label"><label for="<% $input %>"><% loc("Add [_1]", loc($rname)) %></label></td>
-<td><input type="text" value="<% $ARGS{ $input } || '' %>" name="<% $input %>" id="<% $input %>" data-autocomplete="Users" data-autocomplete-return="Name" /></td>
-</tr>
+    <div class="form-row">
+      <div class="col-md-6">
+        <div class="form-row">
+          <div class="label col-md-3"><% loc("Add [_1]", loc($rname)) %></div>
+          <div class="col-md-9 value">
+            <input class="form-control" type="text" value="<% $ARGS{ $input } || '' %>" name="<% $input %>" id="<% $input %>" data-autocomplete="Users" data-autocomplete-return="Name" />
+          </div>
+        </div>
+      </div>
 
-<tr>
 % $input = "RemoveRoleMember-$rname";
-<td class="label"><label for="<% $input %>"><% loc("Remove [_1]", loc($rname)) %></label></td>
-<td>
-  <input type="text" value="<% $ARGS{ $input } || '' %>" name="<% $input %>" id="<% $input %>" data-autocomplete="Users" data-autocomplete-return="Name" />
-  <label>
-    <input type="checkbox" name="RemoveAllRoleMembers-<% $rname %>" value="1"/>
-    <em><&|/l&>(Check to delete all values)</&></em>
-  </label>
-</td>
-</tr>
+      <div class="col-md-6">
+        <div class="form-row">
+          <div class="label col-md-3"><% loc("Remove [_1]", loc($rname)) %></div>
+          <div class="col-md-9 value">
+            <input class="form-control" type="text" value="<% $ARGS{ $input } || '' %>" name="<% $input %>" id="<% $input %>" data-autocomplete="Users" data-autocomplete-return="Name" />
+
+            <div class="custom-control custom-checkbox">
+              <input class="custom-control-input" type="checkbox" id="RemoveAllRoleMembers-<% $rname %>" name="RemoveAllRoleMembers-<% $rname %>" value="1"/>
+              <label class="custom-control-label" for="RemoveAllRoleMembers-<% $rname %>"><em><&|/l&>(Check to delete all values)</&></em></label>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
 % }
 % }
 %   my $cfs = $catalog_obj->AssetCustomFields;
 %   $cfs->LimitToGrouping( 'RT::Asset' => 'People');
 %   if ( $cfs->Count ) {
-<& /Elements/BulkCustomFields, CustomFields => $cfs, &>
+    <& /Elements/BulkCustomFields, CustomFields => $cfs, &>
 %   }
-</table>
-</&>
+      </&>
+    </div>
+  </div>
 
 %   my $cfs = $catalog_obj->AssetCustomFields;
 %   $cfs->LimitToGrouping( 'RT::Asset' => 'Dates');
 %   if ( $cfs->Count ) {
-<&| /Widgets/TitleBox, title => loc("Dates"), class => "asset-dates asset-bulk-dates", title_class => "inverse" &>
-<& /Elements/BulkCustomFields, CustomFields => $cfs, &>
-</&>
+
+    <&| /Widgets/TitleBox, title => loc("Dates"), class => "asset-dates asset-bulk-dates", title_class => "inverse" &>
+      <& /Elements/BulkCustomFields, CustomFields => $cfs, &>
+    </&>
 %   }
 
 % for my $group ( RT::CustomField->CustomGroupings( 'RT::Asset' ), '' ) {
 %   my $cfs = $catalog_obj->AssetCustomFields;
 %   $cfs->LimitToGrouping( 'RT::Asset' => $group);
 %   if ( $cfs->Count ) {
-<&| /Widgets/TitleBox, class=>'asset-bulk-grouping asset-info-cfs asset-bulk-cfs', title => loc('Edit [_1]', ($group? loc($group) : loc('Custom Fields')) ), title_class => "inverse" &>
-<& /Elements/BulkCustomFields, CustomFields => $cfs, &>
-</&>
+    <&| /Widgets/TitleBox, class=>'asset-bulk-grouping asset-info-cfs asset-bulk-cfs', title => loc('Edit [_1]', ($group? loc($group) : loc('Custom Fields')) ), title_class => "inverse" &>
+      <& /Elements/BulkCustomFields, CustomFields => $cfs, &>
+    </&>
 %   }
 % }
 
-<&|/Widgets/TitleBox, title => loc('Edit Links'), class => "asset-links asset-bulk-links", title_class => "inverse" &>
-<& /Elements/BulkLinks, Collection => $assets, %ARGS &>
+  <&|/Widgets/TitleBox, title => loc('Edit Links'), class => "asset-links asset-bulk-links", title_class => "inverse" &>
+    <& /Elements/BulkLinks, Collection => $assets, %ARGS &>
 %   my $cfs = $catalog_obj->AssetCustomFields;
 %   $cfs->LimitToGrouping( 'RT::Asset' => 'Links');
 %   if ( $cfs->Count ) {
-<& /Elements/BulkCustomFields, CustomFields => $cfs, &>
+      <& /Elements/BulkCustomFields, CustomFields => $cfs, &>
 %   }
-</&>
+  </&>
 
-<& /Elements/Submit, Label => loc('Update'), Name => 'Update' &>
+  <div class="form-row">
+    <div class="col-md-12">
+      <& /Elements/Submit, Label => loc('Update'), Name => 'Update' &>
+    </div>
+  </div>
 </form>
 
 <%INIT>
diff --git a/share/html/Asset/Search/index.html b/share/html/Asset/Search/index.html
index c5d0342d7..7bde75e91 100644
--- a/share/html/Asset/Search/index.html
+++ b/share/html/Asset/Search/index.html
@@ -78,7 +78,12 @@ $m->callback( CallbackName => 'Initial', Assets => $assets, ARGSRef => \%ARGS);
 <&| /Widgets/TitleBox, title => loc("Search Assets") &>
 <& /Asset/Elements/AssetSearchBasics, %ARGS, CatalogObj => $catalog_obj &>
 <& /Asset/Elements/AssetSearchPeople, %ARGS, CatalogObj => $catalog_obj &>
-<& /Elements/Submit, Label => loc('Search'), Name => 'SearchAssets' &>
+
+  <div class="form-row">
+    <div class="col-md-12">
+      <& /Elements/Submit, Label => loc('Search'), Name => 'SearchAssets' &>
+    </div>
+  </div>
 
 % my $has_assets_cfs = 0;
 % foreach my $group ( 'Dates', 'Links', RT::CustomField->CustomGroupings( "RT::Asset" ), '' ) {
@@ -87,7 +92,11 @@ $m->callback( CallbackName => 'Initial', Assets => $assets, ARGSRef => \%ARGS);
 % }
 
 % if ( $has_assets_cfs ) {
-<& /Elements/Submit, Label => loc('Search'), Name => 'SearchAssets' &>
+  <div class="form-row">
+    <div class="col-md-12">
+      <& /Elements/Submit, Label => loc('Search'), Name => 'SearchAssets' &>
+    </div>
+  </div>
 % }
 
 </&>

commit 9a2761468574567f3d644a007dcb424350de2f08
Author: Blaine Motsinger <blaine at bestpractical.com>
Date:   Tue Apr 23 13:03:43 2019 -0500

    Migrate Admin/Actions/Display to elevator themes

diff --git a/share/html/Admin/Actions/Display.html b/share/html/Admin/Actions/Display.html
index 2c308c175..897956244 100644
--- a/share/html/Admin/Actions/Display.html
+++ b/share/html/Admin/Actions/Display.html
@@ -49,13 +49,16 @@
 <& /Elements/Tabs &>
 
 <&| /Widgets/TitleBox, title => loc('Basics') &>
-<table>
 <& Elements/ShowBasics, %ARGS, Action => $action, &>
-</table>
 </&>
+
 <form>
 <input type="hidden" class="hidden" name="id" value="<% $id %>" />
-<& /Elements/Submit, Label => loc('Copy Action'), Name => 'Copy' &>
+  <div class="form-row">
+    <div class="col-md-12">
+      <& /Elements/Submit, Label => loc('Copy Action'), Name => 'Copy' &>
+    </div>
+  </div>
 </form>
 
 <%ARGS>
diff --git a/share/html/Admin/Actions/Elements/ShowBasics b/share/html/Admin/Actions/Elements/ShowBasics
index 88d2c52bf..ac1358aca 100644
--- a/share/html/Admin/Actions/Elements/ShowBasics
+++ b/share/html/Admin/Actions/Elements/ShowBasics
@@ -45,33 +45,41 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<tr>
-  <td class="label"><&|/l&>Name</&>:</td>
-  <td class="value">
-    <% $ARGS{"Name"} || $Action->Name || '' %>
-  </td>
-</tr>
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Name</&>:
+  </div>
+  <div class="col-md-9 value">
+    <span class="current-value form-control"><% $ARGS{"Name"} || $Action->Name || '' %></span>
+  </div>
+</div>
 
-<tr>
-  <td class="label"><&|/l&>Description</&>:</td>
-  <td class="value">
-    <% $ARGS{"Description"} || $Action->Description || '' %>
-  </td>
-</tr>
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Description</&>:
+  </div>
+  <div class="col-md-9 value">
+    <span class="current-value form-control"><% $ARGS{"Description"} || $Action->Description || '' %></span>
+  </div>
+</div>
 
-<tr>
-  <td class="label"><&|/l&>Action Module</&>:</td>
-  <td class="value">
-    <% $ARGS{"ExecModule"} || $Action->ExecModule || ''%>
-  </td>
-</tr>
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Action Module</&>:
+  </div>
+  <div class="col-md-9 value">
+    <span class="current-value form-control"><% $ARGS{"ExecModule"} || $Action->ExecModule || ''%></span>
+  </div>
+</div>
 
-<tr>
-  <td class="label"><&|/l&>Parameters to Pass</&>:</td>
-  <td class="value">
-    <% $ARGS{"Argument"} || $Action->Argument || '' %>
-  </td>
-</tr>
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Parameters to Pass</&>:
+  </div>
+  <div class="col-md-9 value">
+    <span class="current-value form-control"><% $ARGS{"Argument"} || $Action->Argument || '' %></span>
+  </div>
+</div>
 
 <%ARGS>
 $Action

commit 2497491ae4577a379fb9b17bde52b07d6c79d3ef
Author: Blaine Motsinger <blaine at bestpractical.com>
Date:   Tue Apr 23 16:59:50 2019 -0500

    Migrate Admin/Actions/Create to elevator themes

diff --git a/share/html/Admin/Actions/Create.html b/share/html/Admin/Actions/Create.html
index 227dfd779..a13a91fcd 100644
--- a/share/html/Admin/Actions/Create.html
+++ b/share/html/Admin/Actions/Create.html
@@ -52,15 +52,14 @@
 <form method="post" action="Create.html" id="CreateAction" name="CreateAction">
 
 <&| /Widgets/TitleBox, title => loc('Basics') &>
-<table>
 <& Elements/EditBasics, %ARGS, Action => $action, &>
-</table>
 </&>
 
-<& /Elements/Submit,
-    Label => loc('Create'),
-    Name => 'Create',
-&>
+  <div class="form-row">
+    <div class="col-md-12">
+      <& /Elements/Submit, Label => loc('Create'), Name => 'Create' &>
+    </div>
+  </div>
 
 </form>
 <%ARGS>
diff --git a/share/html/Admin/Actions/Elements/EditBasics b/share/html/Admin/Actions/Elements/EditBasics
index af0988a24..c852b881b 100644
--- a/share/html/Admin/Actions/Elements/EditBasics
+++ b/share/html/Admin/Actions/Elements/EditBasics
@@ -45,33 +45,41 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<tr>
-  <td class="label"><&|/l&>Name</&>:</td>
-  <td class="value">
-    <input name="Name" size="60" value="<% $ARGS{"Name"} || $Action->Name || '' %>" />
-  </td>
-</tr>
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Name</&>:
+  </div>
+  <div class="col-md-9 value">
+    <input type="text" class="form-control" name="Name" size="60" value="<% $ARGS{"Name"} || $Action->Name || '' %>" />
+  </div>
+</div>
 
-<tr>
-  <td class="label"><&|/l&>Description</&>:</td>
-  <td class="value">
-    <input name="Description" size="60" value="<% $ARGS{"Description"} || $Action->Description || '' %>" />
-  </td>
-</tr>
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Description</&>:
+  </div>
+  <div class="col-md-9 value">
+    <input type="text" class="form-control" name="Description" size="60" value="<% $ARGS{"Description"} || $Action->Description || '' %>" />
+  </div>
+</div>
 
-<tr>
-  <td class="label"><&|/l&>Action Module</&>:</td>
-  <td class="value">
-    <input name="ExecModule" size="60" value="<% $ARGS{"ExecModule"} || $Action->ExecModule || ''%>" />
-  </td>
-</tr>
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Action Module</&>:
+  </div>
+  <div class="col-md-9 value">
+    <input type="text" class="form-control" name="ExecModule" size="60" value="<% $ARGS{"ExecModule"} || $Action->ExecModule || ''%>" />
+  </div>
+</div>
 
-<tr>
-  <td class="label"><&|/l&>Parameters to Pass</&>:</td>
-  <td class="value">
-    <input name="Argument" size="60" value="<% $ARGS{"Argument"} || $Action->Argument || '' %>"/>
-  </td>
-</tr>
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Parameters to Pass</&>:
+  </div>
+  <div class="col-md-9 value">
+    <input type="text" class="form-control" name="Argument" size="60" value="<% $ARGS{"Argument"} || $Action->Argument || '' %>"/>
+  </div>
+</div>
 
 <%ARGS>
 $Action

commit 1db296470b2f9874d4af9b607597792d287f7822
Author: Blaine Motsinger <blaine at bestpractical.com>
Date:   Tue Apr 23 17:09:14 2019 -0500

    Migrate Admin/Actions/Modify to elevator themes

diff --git a/share/html/Admin/Actions/Modify.html b/share/html/Admin/Actions/Modify.html
index a08560cdc..00c64f5d1 100644
--- a/share/html/Admin/Actions/Modify.html
+++ b/share/html/Admin/Actions/Modify.html
@@ -53,14 +53,20 @@
 <input type="hidden" class="hidden" name="id" value="<% $id %>" />
 
 <&| /Widgets/TitleBox, title => loc('Basics') &>
-<table>
 <& Elements/EditBasics, %ARGS, Action => $action, &>
-</table>
 </&>
-<& /Elements/Submit, Label => loc('Copy Action'), Name => 'Copy' &>
 
-<& /Elements/Submit, Label => loc('Save Changes'), Name => 'Update', Reset => 1 &>
+  <div class="form-row">
+    <div class="col-md-12">
+      <& /Elements/Submit, Label => loc('Copy Action'), Name => 'Copy' &>
+    </div>
+  </div>
 
+  <div class="form-row">
+    <div class="col-md-12">
+      <& /Elements/Submit, Label => loc('Save Changes'), Name => 'Update', Reset => 1 &>
+    </div>
+  </div>
 
 </form>
 <%ARGS>

commit 4124d1ade68423dcf402e96f5dd9b38a18e42fc6
Author: Blaine Motsinger <blaine at bestpractical.com>
Date:   Wed Apr 24 15:30:19 2019 -0500

    Migrate Admin/Conditions/Create to elevator themes

diff --git a/share/html/Admin/Conditions/Create.html b/share/html/Admin/Conditions/Create.html
index 6ccc07e0c..75a235432 100644
--- a/share/html/Admin/Conditions/Create.html
+++ b/share/html/Admin/Conditions/Create.html
@@ -52,15 +52,16 @@
 <form method="post" action="Create.html" id="CreateCondition" name="CreateCondition">
 
 <&| /Widgets/TitleBox, title => loc('Basics') &>
-<table>
+
 <& Elements/EditBasics, %ARGS, Condition => $condition, &>
-</table>
+
 </&>
 
-<& /Elements/Submit,
-    Label => loc('Create'),
-    Name => 'Create',
-&>
+  <div class="form-row">
+    <div class="col-md-12">
+      <& /Elements/Submit, Label => loc('Create'), Name => 'Create' &>
+    </div>
+  </div>
 
 </form>
 <%ARGS>
diff --git a/share/html/Admin/Conditions/Elements/EditBasics b/share/html/Admin/Conditions/Elements/EditBasics
index 11300a465..a7b6f2d02 100644
--- a/share/html/Admin/Conditions/Elements/EditBasics
+++ b/share/html/Admin/Conditions/Elements/EditBasics
@@ -45,40 +45,50 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<tr>
-  <td class="label"><&|/l&>Name</&>:</td>
-  <td class="value">
-    <input name="Name" size="60" value="<% $ARGS{"Name"} || $Condition->Name || '' %>" />
-  </td>
-</tr>
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Name</&>:
+  </div>
+  <div class="col-md-9 value">
+    <input type="text" class="form-control" name="Name" size="60" value="<% $ARGS{"Name"} || $Condition->Name || '' %>" />
+  </div>
+</div>
 
-<tr>
-  <td class="label"><&|/l&>Description</&>:</td>
-  <td class="value">
-    <input name="Description" size="60" value="<% $ARGS{"Description"} || $Condition->Description || '' %>" />
-  </td>
-</tr>
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Description</&>:
+  </div>
+  <div class="col-md-9 value">
+    <input type="text" class="form-control" name="Description" size="60" value="<% $ARGS{"Description"} || $Condition->Description || '' %>" />
+  </div>
+</div>
 
-<tr>
-  <td class="label"><&|/l&>Condition Module</&>:</td>
-  <td class="value">
-    <input name="ExecModule" size="60" value="<% $ARGS{"ExecModule"} || $Condition->ExecModule || ''%>" />
-  </td>
-</tr>
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Condition Module</&>:
+  </div>
+  <div class="col-md-9 value">
+    <input type="text" class="form-control" name="ExecModule" size="60" value="<% $ARGS{"ExecModule"} || $Condition->ExecModule || ''%>" />
+  </div>
+</div>
 
-<tr>
-  <td class="label"><&|/l&>Parameters to Pass</&>:</td>
-  <td class="value">
-    <input name="Argument" size="60" value="<% $ARGS{"Argument"} || $Condition->Argument || '' %>"/>
-  </td>
-</tr>
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Parameters to Pass</&>:
+  </div>
+  <div class="col-md-9 value">
+    <input type="text" class="form-control" name="Argument" size="60" value="<% $ARGS{"Argument"} || $Condition->Argument || '' %>"/>
+  </div>
+</div>
 
-<tr>
-  <td class="label"><&|/l&>Applicable Transaction Types</&>:</td>
-  <td class="value">
-    <input name="ApplicableTransTypes" size="60" value="<% $ARGS{"ApplicableTransTypes"} || $Condition->ApplicableTransTypes || '' %>" />
-  </td>
-</tr>
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Applicable Transaction Types</&>:
+  </div>
+  <div class="col-md-9 value">
+    <input type="text" class="form-control" name="ApplicableTransTypes" size="60" value="<% $ARGS{"ApplicableTransTypes"} || $Condition->ApplicableTransTypes || '' %>" />
+  </div>
+</div>
 
 <%ARGS>
 $Condition

commit 9956cdec4cd6ff3bee68c5ea0696be6db2240923
Author: Blaine Motsinger <blaine at bestpractical.com>
Date:   Wed Apr 24 15:42:53 2019 -0500

    Migrate Admin/Conditions/Modify to elevator themes

diff --git a/share/html/Admin/Conditions/Modify.html b/share/html/Admin/Conditions/Modify.html
index 181e0f615..7dabee7b4 100644
--- a/share/html/Admin/Conditions/Modify.html
+++ b/share/html/Admin/Conditions/Modify.html
@@ -53,13 +53,21 @@
 <input type="hidden" class="hidden" name="id" value="<% $id %>" />
 
 <&| /Widgets/TitleBox, title => loc('Basics') &>
-<table>
+
 <& Elements/EditBasics, %ARGS, Condition => $condition, &>
-</table>
+
 </&>
-<& /Elements/Submit, Label => loc('Copy Condition'), Name => 'Copy' &>
+  <div class="form-row">
+    <div class="col-md-12">
+      <& /Elements/Submit, Label => loc('Copy Condition'), Name => 'Copy' &>
+    </div>
+  </div>
 
-<& /Elements/Submit, Label => loc('Save Changes'), Name => 'Update', Reset => 1 &>
+  <div class="form-row">
+    <div class="col-md-12">
+      <& /Elements/Submit, Label => loc('Save Changes'), Name => 'Update', Reset => 1 &>
+    </div>
+  </div>
 
 </form>
 <%ARGS>

commit 10517b02a51c5d3ad6a797da30aaf0060dfca4ee
Author: Blaine Motsinger <blaine at bestpractical.com>
Date:   Wed Apr 24 15:58:56 2019 -0500

    Migrate Admin/Conditions/Display to elevator themes

diff --git a/share/html/Admin/Conditions/Display.html b/share/html/Admin/Conditions/Display.html
index 81696d9b5..37959c48e 100644
--- a/share/html/Admin/Conditions/Display.html
+++ b/share/html/Admin/Conditions/Display.html
@@ -49,13 +49,17 @@
 <& /Elements/Tabs &>
 
 <&| /Widgets/TitleBox, title => loc('Basics') &>
-<table>
+
 <& Elements/ShowBasics, %ARGS, Condition => $condition, &>
-</table>
+
 </&>
 <form>
 <input type="hidden" class="hidden" name="id" value="<% $id %>" />
-<& /Elements/Submit, Label => loc('Copy Condition'), Name => 'Copy' &>
+  <div class="form-row">
+    <div class="col-md-12">
+      <& /Elements/Submit, Label => loc('Copy Condition'), Name => 'Copy' &>
+    </div>
+  </div>
 </form>
 <%ARGS>
 $id     => undef
diff --git a/share/html/Admin/Conditions/Elements/ShowBasics b/share/html/Admin/Conditions/Elements/ShowBasics
index 0949f3964..dbd33b1e6 100644
--- a/share/html/Admin/Conditions/Elements/ShowBasics
+++ b/share/html/Admin/Conditions/Elements/ShowBasics
@@ -45,40 +45,50 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<tr>
-  <td class="label"><&|/l&>Name</&>:</td>
-  <td class="value">
-    <% $ARGS{"Name"} || $Condition->Name || '' %>
-  </td>
-</tr>
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Name</&>:
+  </div>
+  <div class="col-md-9 value">
+    <span class="current-value form-control"><% $ARGS{"Name"} || $Condition->Name || '' %></span>
+  </div>
+</div>
 
-<tr>
-  <td class="label"><&|/l&>Description</&>:</td>
-  <td class="value">
-    <% $ARGS{"Description"} || $Condition->Description || '' %>
-  </td>
-</tr>
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Description</&>:
+  </div>
+  <div class="col-md-9 value">
+    <span class="current-value form-control"><% $ARGS{"Description"} || $Condition->Description || '' %></span>
+  </div>
+</div>
 
-<tr>
-  <td class="label"><&|/l&>Condition Module</&>:</td>
-  <td class="value">
-    <% $ARGS{"ExecModule"} || $Condition->ExecModule || ''%>
-  </td>
-</tr>
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Condition Module</&>:
+  </div>
+  <div class="col-md-9 value">
+    <span class="current-value form-control"><% $ARGS{"ExecModule"} || $Condition->ExecModule || ''%></span>
+  </div>
+</div>
 
-<tr>
-  <td class="label"><&|/l&>Parameters to Pass</&>:</td>
-  <td class="value">
-    <% $ARGS{"Argument"} || $Condition->Argument || '' %>
-  </td>
-</tr>
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Parameters to Pass</&>:
+  </div>
+  <div class="col-md-9 value">
+    <span class="current-value form-control"><% $ARGS{"Argument"} || $Condition->Argument || '' %></span>
+  </div>
+</div>
 
-<tr>
-  <td class="label"><&|/l&>Applicable Transaction Types</&>:</td>
-  <td class="value">
-    <% $ARGS{"ApplicableTransTypes"} || $Condition->ApplicableTransTypes || '' %>
-  </td>
-</tr>
+<div class="form-row">
+  <div class="col-md-3 label">
+    <&|/l&>Applicable Transaction Types</&>:
+  </div>
+  <div class="col-md-9 value">
+    <span class="current-value form-control"><% $ARGS{"ApplicableTransTypes"} || $Condition->ApplicableTransTypes || '' %></span>
+  </div>
+</div>
 
 <%ARGS>
 $Condition

commit e09906a237fc794eb9cbf7a670c93b805042279f
Author: Craig Kaiser <craig at bestpractical.com>
Date:   Wed May 1 15:18:13 2019 -0400

    Migrate tools pages for new theme

diff --git a/share/html/Approvals/Elements/PendingMyApproval b/share/html/Approvals/Elements/PendingMyApproval
index 185136c85..3f2d6eb0c 100644
--- a/share/html/Approvals/Elements/PendingMyApproval
+++ b/share/html/Approvals/Elements/PendingMyApproval
@@ -55,24 +55,49 @@
 % }
 
 <&| /Widgets/TitleBox, title => loc("Search for approvals") &>
-<input type="checkbox" class="checkbox" value="1" id="ShowPending" name="ShowPending"
+
+  <div class="form-row">
+    <div class="custom-control custom-checkbox">
+      <input class="custom-control-input" type="checkbox" value="1" id="ShowPending" name="ShowPending"
         <%((!$ARGS{'ShowRejected'} && !$ARGS{'ShowResolved'}) ||
          $ARGS{'ShowPending'})
         && qq[checked="checked"] |n%> />
-<label for="ShowPending"><&|/l&>Show pending requests</&></label><br />
+<label class="custom-control-label" for="ShowPending"><&|/l&>Show pending requests</&></label>
+    </div>
+  </div>
 
-<input type="checkbox" class="checkbox" value="1" id="ShowResolved" name="ShowResolved" <% defined($ARGS{'ShowResolved'}) && $ARGS{'ShowResolved'} && qq[checked="checked"] |n%> />
-<label for="ShowResolved"><&|/l&>Show approved requests</&></label><br />
+  <div class="form-row">
+    <div class="custom-control custom-checkbox">
+      <input type="checkbox" class="custom-control-input" value="1" id="ShowResolved" name="ShowResolved" <% defined($ARGS{'ShowResolved'}) && $ARGS{'ShowResolved'} && qq[checked="checked"] |n%> />
+      <label class="custom-control-label" for="ShowResolved"><&|/l&>Show approved requests</&></label><br />
+    </div>
+  </div>
 
-<input type="checkbox" class="checkbox" value="1" id="ShowRejected" name="ShowRejected" <% defined($ARGS{'ShowRejected'}) && $ARGS{'ShowRejected'} && qq[checked="checked"] |n%> />
-<label for="ShowRejected"><&|/l&>Show denied requests</&></label><br />
+  <div class="form-row">
+    <div class="custom-control custom-checkbox">
+      <input type="checkbox" class="custom-control-input" value="1" id="ShowRejected" name="ShowRejected" <% defined($ARGS{'ShowRejected'}) && $ARGS{'ShowRejected'} && qq[checked="checked"] |n%> />
+      <label class="custom-control-label" for="ShowRejected"><&|/l&>Show denied requests</&></label><br />
+    </div>
+  </div>
 
-<input type="checkbox" class="checkbox" value="1" id="ShowDependent" name="ShowDependent" <% defined($ARGS{'ShowDependent'}) && $ARGS{'ShowDependent'} && qq[checked="checked"] |n%> />
-<label for="ShowDependent"><&|/l&>Show requests awaiting other approvals</&></label><br />
+  <div class="form-row">
+    <div class="custom-control custom-checkbox">
+      <input type="checkbox" class="custom-control-input" value="1" id="ShowDependent" name="ShowDependent" <% defined($ARGS{'ShowDependent'}) && $ARGS{'ShowDependent'} && qq[checked="checked"] |n%> />
+      <label class="custom-control-label" for="ShowDependent"><&|/l&>Show requests awaiting other approvals</&></label><br />
+    </div>
+  </div>
 
-<&|/l_unsafe, qq{<input type='text' size='15' class="datepicker" value='}.($created_before->IsSet &&$created_before->ISO(Timezone => 'user'))."' name='CreatedBefore' id='CreatedBefore' autocomplete='off' />"&>Only show approvals for requests created before [_1]</&><br />
+  <div class="form-inline">
+    <div class="col-md-auto">
+      <&|/l_unsafe, qq{<input type='text' size='15' class="form-control datepicker" value='}.($created_before->IsSet &&$created_before->ISO(Timezone => 'user'))."' name='CreatedBefore' id='CreatedBefore' autocomplete='off' />"&>Only show approvals for requests created before [_1]</&>
+    </div>
+  </div>
 
-<&|/l_unsafe, qq{<input type='text' size='15' class="datepicker" value='}.( $created_after->IsSet && $created_after->ISO(Timezone => 'user'))."' name='CreatedAfter' id='CreatedAfter' autocomplete='off' />"&>Only show approvals for requests created after [_1]</&>
+  <div class="form-inline">
+    <div class="col-md-auto">
+      <&|/l_unsafe, qq{<input type='text' size='15' class="form-control datepicker" value='}.( $created_after->IsSet && $created_after->ISO(Timezone => 'user'))."' name='CreatedAfter' id='CreatedAfter' autocomplete='off' />"&>Only show approvals for requests created after [_1]</&>
+    </div>
+  </div>
 </&>
 
 <%init>
diff --git a/share/html/Approvals/Elements/ShowDependency b/share/html/Approvals/Elements/ShowDependency
index b9746fa79..31f9ff424 100644
--- a/share/html/Approvals/Elements/ShowDependency
+++ b/share/html/Approvals/Elements/ShowDependency
@@ -49,9 +49,8 @@
 % if ($approving->Count) {
 <h3><&|/l&>Tickets which depend on this approval:</&></h3>
 
-<table width="100%">
-<tr>
-<td width="25" bgcolor="#999999"> </td><td>
+<div class="form-row">
+  <div width="25" bgcolor="#999999"> </div>
 <%PERL>
 my %show;
 while (my $link = $approving->Next()) {
@@ -98,9 +97,7 @@ foreach my $id (sort keys %show) {
 $m->print($refer);
 
 </%PERL>
-</td>
-</tr>
-</table>
+</div>
 
 % }
 <%ARGS>
diff --git a/share/html/Tools/MyDay.html b/share/html/Tools/MyDay.html
index d1c56e582..effe51a86 100644
--- a/share/html/Tools/MyDay.html
+++ b/share/html/Tools/MyDay.html
@@ -52,24 +52,53 @@
 
 <h2><&|/l, $session{'CurrentUser'}->Name &>Active tickets for [_1]</&></h2>
 <form method="post" action="MyDay.html">
-<table width="100%" cellpadding="0" cellspacing="0" class="myday">
+<div class="myday">
 % while ( my $Ticket = $Tickets->Next()) {
 % $i++;
-% my $class =  $i % 2  ? 'class="evenline"' : 'class="oddline"';
-<tr <%$class|n%>><td colspan="2"><h2><a
-href="<%RT->Config->Get('WebPath')%>/Ticket/Display.html?id=<%$Ticket->Id%>"><%$Ticket->Id%>:
-<%$Ticket->Subject%></a></h2></td></tr>
-<tr <%$class|n%>><td><span class="label"><&|/l&>Worked</&>:</span><input type="text" size="3" name="UpdateTimeWorked-<%$Ticket->Id%>" /> <&|/l&>minutes</&>
-</td>
-<td rowspan="2"><span class="label"><&|/l&>Comments</&>:<br /></span><textarea name="UpdateContent-<%$Ticket->Id%>" rows="5"
-cols="60"></textarea></td></tr>
-<tr <%$class|n%>>
-<td><span class="label"><&|/l&>Status</&>:</span> <& /Ticket/Elements/SelectStatus, Name=> 'UpdateStatus-'.$Ticket->Id, TicketObj => $Ticket &></td>
-                  </tr>
+% my $class =  $i % 2  ? 'class="evenline form-row"' : 'class="oddline form-row"';
+  <div <%$class|n%>>
+    <h2><a
+      href="<%RT->Config->Get('WebPath')%>/Ticket/Display.html?id=<%$Ticket->Id%>"><%$Ticket->Id%>:
+      <%$Ticket->Subject%></a>
+    </h2>
+  </div>
 
+  <div <%$class|n%>>
+    <span class="col-md-auto label">
+      <&|/l&>Worked</&>:
+    </span>
+    <span class="col-md-2 form-inline value">
+      <input class="form-control" type="text" size="3" name="UpdateTimeWorked-<%$Ticket->Id%>" />
+      <&|/l&>minutes</&>
+    </span>
+  </div>
+
+  <div class="form-row">
+    <span class="label col-md-auto">
+      <&|/l&>Status</&>:
+    </span>
+    <div class="form-row">
+      <div class="col-md-auto value">
+        <& /Ticket/Elements/SelectStatus, Name=> 'UpdateStatus-'.$Ticket->Id, TicketObj => $Ticket &>
+      </div>
+    </div>
+
+    <span class="label col-md-auto">
+      <&|/l&>Comments</&>:
+    </span>
+    <div class="col-md-auto value">
+      <textarea class="form-control" name="UpdateContent-<%$Ticket->Id%>" rows="5"
+        cols="60">
+      </textarea>
+    </div>
+  </div>
 % }
-</table>
-<& /Elements/Submit, Label => loc('Record all updates') ,  Reset => 1, ResetLabel => loc('Clear')&>
+  <div class="form-row">
+    <div class="col-md-12">
+      <& /Elements/Submit, Label => loc('Record all updates') ,  Reset => 1, ResetLabel => loc('Clear')&>
+    </div>
+  </div>
+</div>
 </form>
 </html>
 <%INIT>

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


More information about the rt-commit mailing list