[Rt-commit] rt branch, 4.6-theme/assets-pages, created. rt-4.4.4-186-gd39652083

Craig Kaiser craig at bestpractical.com
Tue Apr 16 15:49:56 EDT 2019


The branch, 4.6-theme/assets-pages has been created
        at  d396520831f093cfeff5d2fb7b00f71be7cc948a (commit)

- Log -----------------------------------------------------------------
commit 4dfa4fb64e7183fe4256fb565665b02421a65cda
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 0286cb40c2c267e66fb38d0bd9628ead62650a2c
Author: Craig Kaiser <craig at bestpractical.com>
Date:   Tue Apr 16 09:12:16 2019 -0400

    Update CSS for asset display components for elevator theme

diff --git a/share/html/Asset/Display.html b/share/html/Asset/Display.html
index dfd5fdd47..579b43b92 100644
--- a/share/html/Asset/Display.html
+++ b/share/html/Asset/Display.html
@@ -53,17 +53,27 @@
 <& /Elements/ListActions, actions => \@results &>
 
 <span class="catalog <% CSSClass($asset->CatalogObj->Name) %>">
-<& Elements/ShowSummary, AssetObj => $asset &>
+  <div class="boxcontainer col-md-12">
+    <div class="col-md-12 form-row">
+      <div class="col-md-12">
+        <& Elements/ShowSummary, AssetObj => $asset &>
+      </div>
+    </div>
 
 % $m->callback(CallbackName => 'AfterShowSummary', ARGSRef => \%ARGS, Asset => $asset);
 
-<& /Elements/ShowHistory,
-    Object => $asset,
-    ShowDisplayModes => 0,
-    DisplayPath => 'History.html',
-    &>
+  <div class="col-md-12 form-row">
+    <div class="col-md-12">
+      <& /Elements/ShowHistory,
+        Object => $asset,
+        ShowDisplayModes => 0,
+        DisplayPath => 'History.html',
+      &>
+    </div>
+  </div>
 
 % $m->callback(CallbackName => 'AfterShowHistory', ARGSRef => \%ARGS, Asset => $asset);
+  </div>
 </span>
 
 <%args>
diff --git a/share/html/Asset/Elements/ShowBasics b/share/html/Asset/Elements/ShowBasics
index 2fcd0bfb0..355dbdb1d 100644
--- a/share/html/Asset/Elements/ShowBasics
+++ b/share/html/Asset/Elements/ShowBasics
@@ -45,26 +45,49 @@
 %# 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 &>
-% $m->callback(%ARGS, CallbackName => "AfterFields");
-</table>
+<div class="boxcontainer">
+  <div class="col-md-12">
+    <span class="col-md-3 asset-catalog label">
+      <&|/l&>Catalog</&>:
+    </span>
+    <span class="col-md-9 value">
+      <& ShowCatalog, Asset => $AssetObj &>
+    </span>
+  </div>
+
+  <div class="col-md-12">
+    <span class="col-md-4 asset-name label">
+      <&|/l&>Name</&>:
+    </span>
+    <span class="col-md-9 value">
+      <% $AssetObj->Name || '' %>
+    </span>
+  </div>
+
+  <div class="col-md-12">
+    <span class="col-md-3 asset-description label">
+      <&|/l&>Description</&>:
+    </span>
+    <span class="col-md-9 value">
+      <% $AssetObj->Description || '' %>
+    </span>
+  </div>
+
+  <div class="col-md-12">
+    <span class="col-md-3 asset-status label">
+      <&|/l&>Status</&>:
+    </span>
+    <span class="col-md-9 value">
+      <% $AssetObj->Status || '' %>
+    </span>
+  </div>
+
+  <div class="col-md-12">
+    <div class="col-md-12">
+      <& /Elements/ShowCustomFields, Object => $AssetObj, Grouping => 'Basics' &>
+    </div>
+  </div>
+</div>
 <%args>
 $AssetObj
 </%args>
diff --git a/share/html/Asset/Elements/ShowDates b/share/html/Asset/Elements/ShowDates
index 4a76df150..4e7e3c848 100644
--- a/share/html/Asset/Elements/ShowDates
+++ b/share/html/Asset/Elements/ShowDates
@@ -45,28 +45,30 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<table>
-  <tr>
-    <td class="label"><&|/l&>Created</&>:</td>
-    <td>
+<div class="boxcontainer col-md-12">
+  <div class="col-md-12 form-row">
+    <div class="col-md-3 label"><&|/l&>Created</&>:</div>
+    <div class="col-md-9 value">
       <&|/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]</&>
+    </div>
+  </div>
+  <div class="col-md-12 form-row">
+    <div class="col-md-3 label"><&|/l&>Last Updated</&>:</div>
+    <div class="col-md-9 value">
       <&|/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]</&>
+    </div>
+  </div>
+  <div class="col-md-12 form-row">
+    <& /Elements/ShowCustomFields, Object => $AssetObj, Grouping => 'Dates' &>
+  </div>
 % $m->callback(%ARGS, CallbackName => "AfterFields");
-</table>
+</div>
 <%args>
 $AssetObj
 </%args>
diff --git a/share/html/Asset/Elements/ShowPeople b/share/html/Asset/Elements/ShowPeople
index 1fc9ef6a3..6c5fd6f0a 100644
--- a/share/html/Asset/Elements/ShowPeople
+++ b/share/html/Asset/Elements/ShowPeople
@@ -51,26 +51,34 @@ $AssetObj
 <%init>
 my $CatalogObj = $AssetObj->CatalogObj;
 </%init>
-<table>
+<div class="boxcontainer col-md-12">
 % for my $role ($AssetObj->Roles) {
-<tr><td class="label"><% loc($role) %>:
+  <div class="col-md-12 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 &>
+    </div>
+%      if ( $user->id == RT->Nobody->id ) {
+    </div>
+%         next;
+%      }
+    <div class="col-md-9 value">
+      <& ShowRoleMembers, Group => $AssetObj->RoleGroup($role), Title => 0 &>
+    </div>
 % } else {
-</td></tr><tr><td class="user-accordion">
+  <div 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>
 % }
+  </div>
 % }
-<& /Elements/ShowCustomFields, Object => $AssetObj, Grouping => 'People', Table => 0 &>
-
-</table>
+  <div class="col-md-12">
+    <& /Elements/ShowCustomFields, Object => $AssetObj, Grouping => 'People', Table => 0 &>
+  </div>
+</div>
 % $m->callback( %ARGS, CallbackName => 'AfterPeople' );
diff --git a/share/html/Asset/Elements/ShowSummary b/share/html/Asset/Elements/ShowSummary
index d81d3f3dc..b59fc9c00 100644
--- a/share/html/Asset/Elements/ShowSummary
+++ b/share/html/Asset/Elements/ShowSummary
@@ -67,17 +67,33 @@ for my $section (@sections) {
         . "/Asset/$page?id="
         . $AssetObj->id;
 }
+my $count = 0;
 </%init>
-<div class="asset-metadata">
+<div class="boxcontainer asset-metadata col-md-12">
+  <div class="col-md-12 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 &>
-</&>
+%    if ( $count == 3 ) {
+    </div><div class="col-md-12 form-row">
+%         $count = 0;
+%     }
+      <div class="col-md-4">
+        <div class="col-md-12">
+          <&| /Widgets/TitleBox, title => loc($section), title_href => $can_edit ? $link{$section} : "", title_class => "inverse", class => "asset-\L$section" &>
+            <& "Show$section", AssetObj => $AssetObj &>
+          </&>
+        </div>
+      </div>
+%     $count = $count + 1;
 % }
-
-<& /Elements/ShowCustomFieldCustomGroupings,
-     Object => $AssetObj,
-     title_href => $can_edit ? RT->Config->Get("WebPath") . "/Asset/ModifyCFs.html" : "",
-     TitleBoxARGS => { title_class => "inverse" },
- &>
+%    if ( $count == 3 ) {
+    </div><div class="col-md-12 form-row">
+%     }
+    <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>
diff --git a/share/html/Asset/History.html b/share/html/Asset/History.html
index 535af7e67..7ca7fd00f 100644
--- a/share/html/Asset/History.html
+++ b/share/html/Asset/History.html
@@ -49,11 +49,13 @@
 <& /Elements/Tabs &>
 
 <span class="catalog <% CSSClass($asset->CatalogObj->Name) %>">
-<& /Elements/ShowHistory,
-    Object => $asset,
-    ShowDisplayModes => 0,
-    DisplayPath => 'History.html',
+  <div class="boxcontainer asset-metadata col-md-12">
+    <& /Elements/ShowHistory,
+      Object => $asset,
+      ShowDisplayModes => 0,
+      DisplayPath => 'History.html',
     &>
+  </div>
 </span>
 
 <%args>

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

    Update asset create components for elevator theme

diff --git a/share/html/Asset/Create.html b/share/html/Asset/Create.html
index 39ae7e6c8..169ba1aa6 100644
--- a/share/html/Asset/Create.html
+++ b/share/html/Asset/Create.html
@@ -56,53 +56,59 @@
 
 <& /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 id="Asset-Create-basics" class="boxcontainer asset-metadata col-md-12">
+  <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 class="col-md-12 form-row">
+        <div class="col-md-6">
+          <div class="col-md-12">
+            <&| /Widgets/TitleBox, title => loc("Basics"), class => "asset-basics", title_class => "inverse" &>
+              <& Elements/EditBasics, %ARGS, AssetObj => $asset, CatalogObj => $catalog &>
+            </&>
+          </div>
+
+          <div class="col-md-12">
+            <&| /Widgets/TitleBox, title => loc("People"), class => "asset-people", title_class => "inverse" &>
+                <& Elements/EditPeople, %ARGS, AssetObj => $asset &>
+            </&>
+          </div>
+          <div id="Asset-Create-details" class="col-md-12">
+            <a name="details"></a>
+            <& /Elements/EditCustomFieldCustomGroupings,
+              Object => $asset,
+              TitleBoxARGS => { title_class => "inverse" },
+              KeepValue => 1,
+              CustomFieldGenerator => sub { $catalog->AssetCustomFields },
+              ForCreation => 1,
+            &>
+          </div>
+        </div>
+
+        <div class="col-md-6">
+          <div class="col-md-12">
+            <&| /Widgets/TitleBox, title => loc("Links"), class => "asset-links", title_class => "inverse" &>
+              <& /Elements/AddLinks,
+                Object          => $asset,
+                CustomFields    => $catalog->AssetCustomFields
+              &>
+            </&>
+          </div>
+        </div>
+      </div>
+
+      <div class="col-md-12 form-row">
+        <div class="col-md-12">
+          <& /Elements/Submit, Label => loc('Create asset') &>
+        </div>
+      </div>
+    </form>
+  </span>
 </div>
 
-  <& /Elements/Submit, Label => loc('Create asset') &>
-</form>
-</span>
-
 <%args>
 $id => ""
 $Catalog => undef
diff --git a/share/html/Asset/CreateInCatalog.html b/share/html/Asset/CreateInCatalog.html
index af0131843..aaff4b10d 100644
--- a/share/html/Asset/CreateInCatalog.html
+++ b/share/html/Asset/CreateInCatalog.html
@@ -48,4 +48,8 @@
 <& /Elements/Header,
     Title => loc("Create new asset") &>
 <& /Elements/Tabs &>
+<div class="form-row">
+  <div class="col-md-12">
 <& /Asset/Elements/CreateInCatalog &>
+  </div>
+</div>
\ No newline at end of file
diff --git a/share/html/Asset/Elements/CreateInCatalog b/share/html/Asset/Elements/CreateInCatalog
index 6ac611008..757d02f87 100644
--- a/share/html/Asset/Elements/CreateInCatalog
+++ b/share/html/Asset/Elements/CreateInCatalog
@@ -45,9 +45,17 @@
 %# those contributions and any derivatives thereof.
 %#
 %# 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.") &>
-</form>
+<div class="modal-body">
+  <form action="<% RT->Config->Get("WebPath") %>/Asset/Create.html" id="AssetCreateInCatalog">
+    <div class="form-group">
+      <div class="col-md-12">
+        <&|/l_unsafe,
+          $m->scomp("/Asset/Elements/SelectCatalog"),
+          &>Create a new asset in the catalog: [_1]</&>
+      </div>
+      <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>
+</div>
diff --git a/share/html/Asset/Elements/CreateLinkedTicket b/share/html/Asset/Elements/CreateLinkedTicket
index 193a2df1b..0f0ba7385 100644
--- a/share/html/Asset/Elements/CreateLinkedTicket
+++ b/share/html/Asset/Elements/CreateLinkedTicket
@@ -76,32 +76,45 @@ foreach my $asset (@asset_objs){
 
 </%init>
 <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">
+  <div class="col-md-12">
+    <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-group">
+      <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-group">
+      <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%>" />
 % } else {
+    <div class="form-group">
 %     my $first = 1;
 %     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>
+        <input class="" type="radio" name="Requestors" value="<% $addr %>" <% $first ? 'checked="checked"' : '' |n%>/>
+        <&|/l, loc($role), $addr &>Use asset [_1] as ticket Requestor: [_2]</&>
 %         $first = 0;
 %     }
+    </div>
 % }
-  <& /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>
+  </div>
 </form>
diff --git a/share/html/Asset/Elements/EditCatalogPeople b/share/html/Asset/Elements/EditCatalogPeople
index 4438c5b24..627f47174 100644
--- a/share/html/Asset/Elements/EditCatalogPeople
+++ b/share/html/Asset/Elements/EditCatalogPeople
@@ -50,10 +50,14 @@ $Object
 </%args>
 <%init>
 </%init>
+<div class="col-md-12">
 % 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">
+    <h5><% loc($role) %></h5>
+    <& EditRoleMembers, Group => $Object->RoleGroup($role) &>
+  </div>
 % }
-<em><&|/l&>(Check box to delete)</&></em>
+  <div class="form-row col-md-12">
+    <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..6a56a9147 100644
--- a/share/html/Asset/Elements/EditDates
+++ b/share/html/Asset/Elements/EditDates
@@ -45,28 +45,28 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<table>
-  <tr>
-    <td class="label"><&|/l&>Created</&>:</td>
-    <td>
-      <&|/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>
-      <&|/l_unsafe,
-          $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 &>
+<div class="col-md-12">
+  <div class="row col-md-12">
+    <&|/l&>Created</&>:</td>
+    <&|/l_unsafe,
+      $m->interp->apply_escapes($AssetObj->CreatedAsString, 'h'),
+      $m->scomp('/Elements/ShowUser', User => $AssetObj->CreatorObj)
+      &>[_1] by [_2]</&>
+  </div>
+  <div class="row col-md-12">
+    <&|/l&>Last Updated</&>:
+    <&|/l_unsafe,
+      $m->interp->apply_escapes($AssetObj->LastUpdatedAsString, 'h'),
+      $m->scomp('/Elements/ShowUser', User => $AssetObj->LastUpdatedByObj)
+      &>[_1] by [_2]</&>
+  </div>
+  <div class="row">
+    <div class="col-md-12">
+      <& /Elements/EditCustomFields, Object => $AssetObj, Grouping => 'Dates' &>
+    </div>
+  </div>
 % $m->callback(%ARGS, CallbackName => "AfterFields");
-</table>
+</div>
 <%args>
 $AssetObj
 </%args>
diff --git a/share/html/Asset/Elements/EditPeople b/share/html/Asset/Elements/EditPeople
index 06c16b497..77333070d 100644
--- a/share/html/Asset/Elements/EditPeople
+++ b/share/html/Asset/Elements/EditPeople
@@ -45,19 +45,16 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<table border="0" cellpadding="0" cellspacing="0">
+<div class="boxcontainer col-md-12">
 % 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) %>">
+    <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>
+</div>
 
 <%args>
 $AssetObj
diff --git a/share/html/Asset/Elements/EditRoleMembers b/share/html/Asset/Elements/EditRoleMembers
index dcbb5fa8f..54fc4d043 100644
--- a/share/html/Asset/Elements/EditRoleMembers
+++ b/share/html/Asset/Elements/EditRoleMembers
@@ -52,28 +52,24 @@ $Recursively => 0
 <%init>
 my $field_name = "RemoveRoleMember-" . $Group->Name;
 </%init>
-<ul class="role-members">
+<div class="role-members">
 % 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 />
+  <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" /><br />
 % } else {
 % while ( my $user = $Users->Next ) {
-<li>
-  <label>
+  <div class="col-md-12">
     <input type="checkbox" name="<% $field_name %>" value="<% $user->PrincipalId %>">
     <& /Elements/ShowUser, User => $user &>
-  </label>
-</li>
+  </div>
 % }
 % my $Groups = $Group->GroupMembersObj( Recursively => $Recursively );
 % $Groups->LimitToUserDefinedGroups;
 % while (my $group = $Groups->Next) {
-<li>
-  <label>
+  <div class="col-md-12">
     <input type="checkbox" name="<% $field_name %>" value="<% $group->PrincipalId %>">
     <&|/l&>Group</&>: <% $group->Name %>
-  </label>
-</li>
+  </div>
 % }
 % }
-</ul>
+</div>
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..f1c5aa707 100644
--- a/share/html/Asset/Helpers/CreateInCatalog
+++ b/share/html/Asset/Helpers/CreateInCatalog
@@ -45,5 +45,9 @@
 %# 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">
+    <& /Asset/Elements/CreateInCatalog &>
+  </div>
+</div>
 % $m->abort;
diff --git a/share/html/Asset/Helpers/CreateLinkedTicket b/share/html/Asset/Helpers/CreateLinkedTicket
index 76631d606..b8f77555b 100644
--- a/share/html/Asset/Helpers/CreateLinkedTicket
+++ b/share/html/Asset/Helpers/CreateLinkedTicket
@@ -60,5 +60,9 @@ elsif ( $Asset ){
 }
 
 </%init>
-<& /Asset/Elements/CreateLinkedTicket, AssetObj => \@asset_objs, Requestors => $Requestors &>
+<div class="modal-dialog modal-dialog-centered" role="document">
+  <div class="modal-content">
+    <& /Asset/Elements/CreateLinkedTicket, AssetObj => \@asset_objs, Requestors => $Requestors &>
+  </div>
+</div>
 % $m->abort;

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

    Update asset modify components for elevator theme

diff --git a/share/html/Asset/Elements/AddCatalogPeople b/share/html/Asset/Elements/AddCatalogPeople
index 0d65328a6..5341ba0b9 100644
--- a/share/html/Asset/Elements/AddCatalogPeople
+++ b/share/html/Asset/Elements/AddCatalogPeople
@@ -48,20 +48,34 @@
 <%args>
 $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...") %>">
+<div class="add-user form-row">
+  <div class="col-md-4 label">
+    <h5><&|/l&>Add a person</&></h5>
+  </div>
+  <div class="col-md-4 value">
+    <& SelectRoleType, Object => $Object, Name => "AddUserRoleMember-Role" &>
+  </div>
+  <div class="col-md-4 value">
+    <input type="text" name="AddUserRoleMember"
+      data-autocomplete="Users"
+      data-autocomplete-return="Name"
+      placeholder="<% loc("Find a user...") %>"
+    >
+  </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...") %>">
+<div class="add-group form-row">
+  <div class="col-md-4 label">
+    <h5><&|/l&>Add a group</&></h5>
+  </div>
+  <div class="col-md-4 value">
+    <& SelectRoleType, Object => $Object, Name => "AddGroupRoleMember-Role" &>
+  </div>
+  <div class="col-md-4 value">
+    <input type="text" name="AddGroupRoleMember"
+      data-autocomplete="Groups"
+      data-autocomplete-return="Name"
+      placeholder="<% loc("Find a group...") %>"
+    >
+  </div>
 </div>
diff --git a/share/html/Asset/Elements/EditBasics b/share/html/Asset/Elements/EditBasics
index c971d6706..42564ee05 100644
--- a/share/html/Asset/Elements/EditBasics
+++ b/share/html/Asset/Elements/EditBasics
@@ -45,25 +45,35 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<table>
+<div class="boxcontainer col-md-12">
 % 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="col-md-12 form-row">
+    <div class="col-md-6 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>
+  </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="col-md-6 form-row asset-name">
+    <div class="label col-md-3"><&|/l&>Name</&>:</div>
+    <div class="value col-md-9">
+      <input type="text" name="Name" value="<% $current{Name} %>" size="40">
+    </div>
+  </div>
+  <div class="col-md-6 form-row asset-description">
+    <div class="label col-md-3"><&|/l&>Description</&>:</div>
+    <div class="value col-md-9">
+      <input type="text" name="Description" value="<% $current{Description} %>" size="40">
+    </div>
+  </div>
+  <div class="col-md-6 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 &>
 % } elsif ( my @cf_names = grep { defined } @{RT->Config->Get('AssetBasicCustomFieldsOnCreate') || []} ) {
@@ -74,7 +84,7 @@
   <& /Elements/EditCustomFields, Object => $AssetObj, CustomFields => $cfs, InTable => 1, KeepValue => 1 &>
 % }
 % $m->callback(%ARGS, CallbackName => "AfterFields");
-</table>
+</div>
 <%args>
 $AssetObj
 $CatalogObj => undef
diff --git a/share/html/Asset/Modify.html b/share/html/Asset/Modify.html
index e047b0ab5..be291cd37 100644
--- a/share/html/Asset/Modify.html
+++ b/share/html/Asset/Modify.html
@@ -55,15 +55,27 @@
   <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 &>
-  </&>
-
-  <&| /Widgets/TitleBox, title => loc("Custom Fields"), class => "asset-info-cfs", title_class => "inverse" &>
-    <& /Elements/EditCustomFields, Object => $asset, Grouping => '' &>
-  </&>
-
-  <& /Elements/Submit, Label => loc('Save asset'), Name => "Update" &>
+  <div class="boxcontainer asset-metadata col-md-12">
+    <div class="row">
+      <div class="col-md-12">
+        <&| /Widgets/TitleBox, title => loc("Basics"), class => "asset-basics", title_class => "inverse" &>
+            <& Elements/EditBasics, %ARGS, AssetObj => $asset &>
+        </&>
+      </div>
+    </div>
+    <div class="row">
+      <div class="col-md-12">
+        <&| /Widgets/TitleBox, title => loc("Custom Fields"), class => "asset-info-cfs", title_class => "inverse" &>
+            <& /Elements/EditCustomFields, Object => $asset, Grouping => '' &>
+        </&>
+      </div>
+    </div>
+    <div class="form-row">
+      <div class="col-md-12">
+        <& /Elements/Submit, Label => loc('Save asset'), Name => "Update" &>
+      </div>
+    </div>
+  </div>
 </form>
 </span>
 
diff --git a/share/html/Asset/ModifyCFs.html b/share/html/Asset/ModifyCFs.html
index 999cb150f..0abe744f8 100644
--- a/share/html/Asset/ModifyCFs.html
+++ b/share/html/Asset/ModifyCFs.html
@@ -52,15 +52,23 @@
 
 <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 %>">
+  <div class="boxcontainer col-md-12">
+    <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" &>
-</form>
+    <div class="form-row">
+      <div class="col-md-12">
+        <&| /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 &>
+        </&>
+      </div>
+    </div>
+    <div class="form-row">
+      <div class="col-md-12">
+        <& /Elements/Submit, Label => loc('Save asset'), Name => "Update" &>
+      </div>
+    </div>
+  </form>
 </span>
 
 <%args>
diff --git a/share/html/Asset/ModifyDates.html b/share/html/Asset/ModifyDates.html
index 663eaa570..ca94c9921 100644
--- a/share/html/Asset/ModifyDates.html
+++ b/share/html/Asset/ModifyDates.html
@@ -51,15 +51,23 @@
 <& /Elements/ListActions, actions => \@results &>
 
 <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 %>">
+  <div class="boxcontainer col-md-12">
+    <form method="post" enctype="multipart/form-data" id="ModifyAssetDates" action="ModifyDates.html">
+    <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" &>
-</form>
+    <div class="col-md-12">
+      <&| /Widgets/TitleBox, title => loc("Dates"), class => "asset-dates", title_class => "inverse" &>
+        <div class="col-md-12">
+          <& Elements/EditDates, %ARGS, AssetObj => $asset &>
+          </&>
+        </div>
+      <div class="form-row">
+        <div class="col-md-12">
+          <& /Elements/Submit, Label => loc('Save asset'), Name => "Update" &>
+        </div>
+      </div>
+    </div>
+  </form>
 </span>
 
 <%init>
diff --git a/share/html/Asset/ModifyLinks.html b/share/html/Asset/ModifyLinks.html
index 610a697c4..28f96ce0d 100644
--- a/share/html/Asset/ModifyLinks.html
+++ b/share/html/Asset/ModifyLinks.html
@@ -51,15 +51,24 @@
 <& /Elements/ListActions, actions => \@results &>
 
 <span class="catalog <% CSSClass($asset->CatalogObj->Name) %>">
-<form method="post" enctype="multipart/form-data" id="ModifyAssetLinks" action="ModifyLinks.html">
-  <input type="hidden" name="id" value="<% $asset->id %>">
+  <div class="boxcontainer asset-metadata col-md-12">
+    <form method="post" enctype="multipart/form-data" id="ModifyAssetLinks" action="ModifyLinks.html">
+      <input type="hidden" name="id" value="<% $asset->id %>">
 
-  <&| /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" &>
-</form>
+      <div class="row">
+        <div class="col-md-12">
+          <&| /Widgets/TitleBox, title => loc("Links"), class => "asset-links", title_class => "inverse" &>
+            <& /Elements/EditLinks, %ARGS, Object => $asset, Merge => 0 &>
+          </&>
+        </div>
+      </div>
+      <div class="form-row">
+        <div class="col-md-12">
+          <& /Elements/Submit, Label => loc('Save asset'), Name => "Update" &>
+        </div>
+      </div>
+    </form>
+  </div>
 </span>
 
 <%init>
diff --git a/share/html/Asset/ModifyPeople.html b/share/html/Asset/ModifyPeople.html
index 5cd0384ce..5f2325900 100644
--- a/share/html/Asset/ModifyPeople.html
+++ b/share/html/Asset/ModifyPeople.html
@@ -53,23 +53,29 @@
 <& /Elements/ListActions, actions => \@results &>
 
 <span class="catalog <% CSSClass($asset->CatalogObj->Name) %>">
-<form method="post" enctype="multipart/form-data" id="ModifyAssetPeople" action="ModifyPeople.html">
-  <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>
-  </&>
-
-  <& /Elements/Submit, Label => loc('Save'), Name => "Update" &>
-</form>
+  <div class="boxcontainer">
+    <div class="col-md-12">
+      <form method="post" enctype="multipart/form-data" id="ModifyAssetPeople" action="ModifyPeople.html">
+        <input type="hidden" name="id" value="<% $asset->id %>">
+        <&| /Widgets/TitleBox, title => loc("People"), class => "asset-people", title_class => "inverse" &>
+          <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>
+          <div class="col-md-4">
+            <& /Elements/EditCustomFields, Object => $asset, Grouping => 'People' &>
+          </div>
+        </&>
+      </div>
+      <div class="col-md-12">
+        <& /Elements/Submit, Label => loc('Save'), Name => "Update" &>
+      </div>
+    </form>
+  </div>
 </span>
 
 <%init>

commit d396520831f093cfeff5d2fb7b00f71be7cc948a
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..e3c177f2c 100644
--- a/share/html/Asset/Elements/AssetSearchBasics
+++ b/share/html/Asset/Elements/AssetSearchBasics
@@ -45,26 +45,48 @@
 %# those contributions and any derivatives thereof.
 %#
 %# 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="boxcontainer col-md-12">
+  <&| /Widgets/TitleBox, title => loc('Basics'), class=>'asset-search-grouping asset-search-basics' &>
+    <div class="col-md-12 form-row">
+      <div class="col-md-6 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 class="col-md-6 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 class="col-md-12 form-row">
+      <div class="col-md-6 form-row">
+        <div class="label col-md-2"><&|/l&>Name</&></div>
+        <div class="value col-md-4">
+          <input 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 type="text" id="!Name" name="!Name" value="<% $ARGS{"!Name"} || ''%>" />
+        </div>
+      </div>
+      <div class="col-md-6 form-row">
+        <div class="label col-md-2"><&|/l&>Description</&></div>
+        <div class="value col-md-4">
+          <input 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 type="text" id="!Description" name="!Description" value="<% $ARGS{"!Description"} || ''%>" />
+         </div>
+       </div>
+     </div>
 % my $CFs = RT::CustomFields->new( $session{CurrentUser} );
 % $CFs->LimitToCatalog( $CatalogObj->Id );
 % $CFs->LimitToObjectId(0); # LimitToGlobal but no LookupType restriction
@@ -73,15 +95,19 @@
 % 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="col-md-12 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>
 <%args>
 $CatalogObj => undef
 </%args>
diff --git a/share/html/Asset/Elements/AssetSearchCFs b/share/html/Asset/Elements/AssetSearchCFs
index 38be3be67..1cfc94802 100644
--- a/share/html/Asset/Elements/AssetSearchCFs
+++ b/share/html/Asset/Elements/AssetSearchCFs
@@ -45,28 +45,32 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<&| /Widgets/TitleBox, title => $Grouping ? loc($Grouping) : loc('Custom Fields'), hide_empty => 1, class=>'asset-search-grouping asset-search-cfs'  &>
+<div class="boxcontainer col-md-12">
+  <&| /Widgets/TitleBox, title => $Grouping ? loc($Grouping) : loc('Custom Fields'), hide_empty => 1, class=>'asset-search-grouping asset-search-cfs'  &>
 % my $CFs = RT::CustomFields->new( $session{CurrentUser} );
 % $CFs->LimitToCatalog( $CatalogObj->Id );
 % $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="col-md-12 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>
 % }
-</&>
+  </&>
+</div>
 <%args>
 $Grouping
 $CatalogObj => undef
diff --git a/share/html/Asset/Elements/AssetSearchPeople b/share/html/Asset/Elements/AssetSearchPeople
index 6355f8aef..9061200a9 100644
--- a/share/html/Asset/Elements/AssetSearchPeople
+++ b/share/html/Asset/Elements/AssetSearchPeople
@@ -45,21 +45,25 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<&| /Widgets/TitleBox, class => "asset-search-people", title => loc('People') &>
-<table>
+<div class="boxcontainer col-md-12">
+  <&| /Widgets/TitleBox, class => "asset-search-people", title => loc('People') &>
 % 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="col-md-12 form-row">
+      <div class="asset-role-<% CSSClass($role) %> col-md-6 form-row">
+        <div class="label col-md-2"><% loc($role) %></div>
+        <div class="value col-md-4">
+          <input 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 type="text" id="!Role.<% $role %>" name="!Role.<% $role %>"
+            data-autocomplete="Users" value="<% $ARGS{"!Role.$role"} || '' %>"
+          />
+        </div>
+      </div>
+    </div>
 % }
 % my $CFs = RT::CustomFields->new( $session{CurrentUser} );
 % $CFs->LimitToCatalog( $CatalogObj->Id );
@@ -69,15 +73,19 @@
 % 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="col-md-12 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>
 <%args>
 $CatalogObj => undef
 </%args>
diff --git a/share/html/Asset/Search/Bulk.html b/share/html/Asset/Search/Bulk.html
index a5bedc124..8dbb44451 100644
--- a/share/html/Asset/Search/Bulk.html
+++ b/share/html/Asset/Search/Bulk.html
@@ -52,10 +52,12 @@
 
 <& /Elements/ListActions, actions => \@results &>
 
-<form method="post" action="<% RT->Config->Get('WebPath') %>/Asset/Search/Bulk.html" enctype="multipart/form-data" name="BulkUpdate" id="BulkUpdate">
+<div class="boxcontainer col-md-12">
+  <form method="post" action="<% RT->Config->Get('WebPath') %>/Asset/Search/Bulk.html" enctype="multipart/form-data" name="BulkUpdate" id="BulkUpdate">
 % foreach my $var ( @{$search{'PassArguments'}} )  {
-<input type="hidden" class="hidden" name="<% $var %>" value="<% $ARGS{$var} || '' %>" />
+    <input type="hidden" class="hidden" name="<% $var %>" value="<% $ARGS{$var} || '' %>" />
 % }
+
 <& /Elements/CollectionList,
     %search,
     Collection      => $assets,
@@ -66,112 +68,157 @@
 <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>
+  <div class="submit 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 class="col-md-12 form-row">
+    <div class="col-md-12">
+      <&| /Widgets/TitleBox, title => loc("Basics"), class => "asset-basics asset-bulk-basics", title_class => "inverse" &>
+        <div class="col-md-12 form-row">
+          <div class="col-md-6 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>
 
-<&| /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="col-md-6 form-row">
+            <div class="col-md-3 label"><&|/l&>Name</&></div>
+            <div class="col-md-9 value">
+              <input type="text" name="UpdateName" value="<% $ARGS{'Name'}||'' %>" size="40">
+            </div>
+          </div>
+        </div>
+
+        <div class="col-md-12 form-row">
+          <div class="col-md-6 asset-catalog form-row">
+            <div class="label col-md-3"><&|/l&>Description</&></div>
+            <div class="col-md-9 value">
+              <input type="text" name="UpdateDescription" value="<% $ARGS{'Description'}||'' %>" size="40">
+            </div>
+          </div>
+          <div class="col-md-6 asset-status 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>
 %   my $cfs = $catalog_obj->AssetCustomFields;
 %   $cfs->LimitToGrouping( 'RT::Asset' => 'Basics');
 %   if ( $cfs->Count ) {
-<& /Elements/BulkCustomFields, CustomFields => $cfs, &>
+        <div class="col-md-12 form-row">
+          <& /Elements/BulkCustomFields, CustomFields => $cfs, &>
+        </div>
 %   }
-</&>
+      </&>
+    </div>
+  </div>
 
-<&| /Widgets/TitleBox, title => loc("People"), class => "asset-people asset-bulk-people", title_class => "inverse" &>
-<table class="core-fields">
+  <div class="col-md-12 form-row">
+    <div class="col-md-12 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="col-md-6 form-row">
+        <div class="label col-md-3"><% loc($rname) %></div>
+        <div class="col-md-9 value">
+          <input type="text" value="<% $ARGS{ $input } || '' %>" name="<% $input %>" id="<% $input %>" data-autocomplete="Users" data-autocomplete-return="Name" />
+        </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="col-md-6 form-row">
+        <div class="label col-md-3"><% loc("Add [_1]", loc($rname)) %></div>
+        <div class="col-md-9 value">
+          <input type="text" value="<% $ARGS{ $input } || '' %>" name="<% $input %>" id="<% $input %>" data-autocomplete="Users" data-autocomplete-return="Name" />
+        </div>
+      </div>
 
-<tr>
+      <div class="col-md-6 form-row">
 % $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="label col-md-3"><% loc("Remove [_1]", loc($rname)) %></div>
+        <div class="col-md-9 value">
+          <input type="text" value="<% $ARGS{ $input } || '' %>" name="<% $input %>" id="<% $input %>" data-autocomplete="Users" data-autocomplete-return="Name" />
+          <input type="checkbox" name="RemoveAllRoleMembers-<% $rname %>" value="1"/>
+          <em><&|/l&>(Check to delete all values)</&></em>
+        </div>
+      </div>
 % }
 % }
 %   my $cfs = $catalog_obj->AssetCustomFields;
 %   $cfs->LimitToGrouping( 'RT::Asset' => 'People');
 %   if ( $cfs->Count ) {
-<& /Elements/BulkCustomFields, CustomFields => $cfs, &>
+      <div class="col-md-12 form-row">
+       <& /Elements/BulkCustomFields, CustomFields => $cfs, &>
+      </div>
 %   }
-</table>
-</&>
+      </&>
+    </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, &>
-</&>
+
+    <div class="col-md-12 form-row">
+      <div class="col-md-12">
+        <&| /Widgets/TitleBox, title => loc("Dates"), class => "asset-dates asset-bulk-dates", title_class => "inverse" &>
+          <& /Elements/BulkCustomFields, CustomFields => $cfs, &>
+        </&>
+      </div>
+    </div>
 %   }
 
 % 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, &>
-</&>
+    <div class="col-md-12 form-row">
+      <div class="col-md-12">
+        <&| /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, &>
+        </&>
+      </div>
+    </div>
 %   }
 % }
 
-<&|/Widgets/TitleBox, title => loc('Edit Links'), class => "asset-links asset-bulk-links", title_class => "inverse" &>
-<& /Elements/BulkLinks, Collection => $assets, %ARGS &>
+    <div class="col-md-12 form-row">
+      <div class="col-md-12">
+        <&|/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, &>
 %   }
-</&>
+          </&>
+      </div>
+    </div>
 
-<& /Elements/Submit, Label => loc('Update'), Name => 'Update' &>
-</form>
+    <div class="col-md-12 form-row">
+      <div class="col-md-12">
+        <& /Elements/Submit, Label => loc('Update'), Name => 'Update' &>
+      </div>
+    </div>
+  </form>
+</div>
 
 <%INIT>
 my @results;
diff --git a/share/html/Asset/Search/index.html b/share/html/Asset/Search/index.html
index c5d0342d7..aa31b9325 100644
--- a/share/html/Asset/Search/index.html
+++ b/share/html/Asset/Search/index.html
@@ -62,7 +62,7 @@ $m->callback( CallbackName => 'Initial', Assets => $assets, ARGSRef => \%ARGS);
 </%init>
 <& /Elements/Header, Title => $title &>
 <& /Elements/Tabs &>
-
+<div class="boxcontainer col-md-12">
 % if ( $ARGS{'SearchAssets'} or $ARGS{q} ){
 <& /Elements/CollectionList,
     %search,
@@ -73,12 +73,18 @@ $m->callback( CallbackName => 'Initial', Assets => $assets, ARGSRef => \%ARGS);
 <em><&|/l&>No assets matching search criteria found.</&></em>
 %   }
 % }
-<span class="catalog <% CSSClass( $catalog_obj->Name ) %>">
-<form action="<% RT->Config->Get('WebPath') %>/Asset/Search/index.html" id="AssetSearch">
-<&| /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>
+<div class="boxcontainer col-md-12">
+  <span class="catalog <% CSSClass( $catalog_obj->Name ) %>">
+    <form action="<% RT->Config->Get('WebPath') %>/Asset/Search/index.html" id="AssetSearch">
+      <&| /Widgets/TitleBox, title => loc("Search Assets") &>
+      <& /Asset/Elements/AssetSearchBasics, %ARGS, CatalogObj => $catalog_obj &>
+      <& /Asset/Elements/AssetSearchPeople, %ARGS, CatalogObj => $catalog_obj &>
+        <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 +93,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>
 % }
 
 </&>
@@ -110,5 +120,6 @@ jQuery(function() {
     });
 });
 </script>
-</form>
-</span>
+   </form>
+  </span>
+</div>

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


More information about the rt-commit mailing list