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

Craig Kaiser craig at bestpractical.com
Wed Apr 17 10:17:24 EDT 2019


The branch 4.6-theme/assets-pages was deleted and repushed:
       was d396520831f093cfeff5d2fb7b00f71be7cc948a
       now 8cbbb510ad7c102329172b69abc8179788334c40

  1: 7f13f0055 =   1: 7f13f0055 Allow for multiple base themes by avoiding showing any to the user
  2: 0ce97154b =   2: 0ce97154b Add unaltered copies of base and rudder themes to make responsive
  3: 565e91062 =   3: 565e91062 rudder-responsive imports base-responsive rather than base
  4: c151cf258 =   4: c151cf258 Make boxcontainer padding rules less demanding
  5: 45e22b27c =   5: 45e22b27c Make RT at a glance two-column layout responsive
  6: 66a41a296 =   6: 66a41a296 Improve whitespace around content for rudder-responsive
  7: f0df65c03 =   7: f0df65c03 Generalize the two-column layout markup
  8: 4a2814fdb =   8: 4a2814fdb Add a grid system
  9: b7008bcd8 =   9: b7008bcd8 Make ticket display ShowSummary responsive
 10: 2a14260d4 =  10: 2a14260d4 Make search field really narrow on narrow screens
 11: 050d2b466 =  11: 050d2b466 Make the "new ticket in" and queue selector responsive
 12: 7293efce0 =  12: 7293efce0 Narrow gap between new ticket and search fields on narrow screens
 13: 26d3640d3 =  13: 26d3640d3 Display more of the title when the page is narrow
 14: 743fca5fe =  14: 743fca5fe On narrow screens pop up a modal for selecting ticket queue
 15: fc435d351 =  15: fc435d351 Hide "RT for example.com" on narrow screens
 16: c12f7a2fd =  16: c12f7a2fd Eliminate history display's margin-left on narrow screens
 17: 031767c67 =  17: 031767c67 On very narrow screens, zero out body padding
 18: a70a12eb8 =  18: a70a12eb8 Get rid of horizontal padding on ticket history on narrow screens
 19: ed77add0f =  19: ed77add0f Collapse padding at a wider (700px) viewport
 20: bf6072713 =  20: bf6072713 Prevent reminders from breaking layout with its long text field
 21: 3bf0b2783 =  21: 3bf0b2783 Convert Links table to have .fields/.field using table CSS
 22: ef390831d =  22: ef390831d Improve styling of links for small screens
 23: 9e0e238dc =  23: 9e0e238dc Don't wrap labels
 24: abde98f8c =  24: abde98f8c Limit the breakdown of fields tables to just "wide" ones
 25: a036b7218 =  25: a036b7218 Convert basics, dates, and people groupings away from tables
 26: 18410558f =  26: 18410558f Add margin-left to <li>s within a wide fields table that breaks
 27: abe679392 =  27: abe679392 Make padding on field names more consistent
 28: 4535278a7 =  28: 4535278a7 Convert new reminder form from table to fields
 29: 902013336 =  29: 902013336 Improve rendering of ticket update page
 30: b83145a17 =  30: b83145a17 Add messagedetails to jumbo page titlebox
 31: b30e4e3be =  31: b30e4e3be Improve display of reminders table and form
 32: a3debdb88 =  32: a3debdb88 Avoid breaking layout with new reminder subject
 33: a4ec31340 =  33: a4ec31340 Remove minimum height from titleboxes
 34: 9e2e9f847 =  34: 9e2e9f847 Restore original titlebox padding rule but only for fields
 35: f048c2714 =  35: f048c2714 Remove spurious <br> tag
 36: 14bd5afdb =  36: 14bd5afdb Switch ticket update from tables to fields
 37: b6076f108 =  37: b6076f108 Linearize ticket update form on narrow widths
 38: 9847f9464 =  38: 9847f9464 Make update form take up 100% of the titlebox
 39: 3f12ac4ab =  39: 3f12ac4ab Fix reply cc/bcc/subject fields to be 100% width
 40: 7d903afc9 =  40: 7d903afc9 Rename .crypto to .empty to better explain what it's for
 41: 0b1e7df31 =  41: 0b1e7df31 Make ticket create responsive
 42: 21b722a26 =  42: 21b722a26 First pass at responsive for SelfService/Create
 43: a5c7652c3 =  43: a5c7652c3 First pass at responsive for SelfService/Update
 44: 8b58c4a15 =  44: 8b58c4a15 Remove AsTable from Edit CFs
 45: 921d72c94 =  45: 921d72c94 Remove these pre-responsive CF edit styles
 46: f5bcb7577 =  46: f5bcb7577 Wrap selfservice update form in a titlebox
 47: 94e44ea62 =  47: 94e44ea62 Wrap selfservice create form in a titlebox
 48: efe3f52d3 =  48: efe3f52d3 Convert selfservice display to responsive
 49: fc80f17b7 =  49: fc80f17b7 Switch ShowCustomFields from table to fields
 50: d26da2aa1 =  50: d26da2aa1 Fix transaction actions overlapping description
 51: 726ff3ed2 =  51: 726ff3ed2 Switch QuickCreate from table to fields
 52: 1dac409ae =  52: 1dac409ae Improve whitespace around fields
 53: f99594d6b =  53: f99594d6b Improve padding and spacing on forms
 54: 9b94580d3 =  54: 9b94580d3 Have searches use the full width of the viewport
 55: df8c440d3 =  55: df8c440d3 Make login box more responsive
 56: 6c19bf649 =  56: 6c19bf649 Add missing type="text" for login username input
 57: ff38918b6 =  57: ff38918b6 Improve form rendering for Mobile Safari
 58: bc548a5bb =  58: bc548a5bb Separate existing reminders from create form with hr only if there are reminders
 59: 3d16535fd =  59: 3d16535fd Remove unnecessary margin-top on collection tables
 60: a6e560500 =  60: a6e560500 Fix save button on ticket reminders to not use inline style
 61: 33e559e98 =  61: 33e559e98 Fix error result background color for rudder
 62: 6366d835d =  62: 6366d835d Make QueueList take up the full width
 63: 753b2e278 =  63: 753b2e278 Give rudder the responsive viewport meta tag
 64: 96258f3a2 =  64: 96258f3a2 Turn off autocapitalize on usernames
 65: b738946b7 =  65: b738946b7 Don't let users select the "drop files here" dropzone text
 66: ed9896623 =  66: ed9896623 Improve error transaction colors
 67: fc2c7dd24 =  67: fc2c7dd24 Replace ShowAttachments's <font size="-2"> with CSS
 68: 0ed134c2a =  68: 0ed134c2a Word-break very (perhaps maliciously) long attachment names
 69: 329257c04 =  69: 329257c04 Limit the width of quickcreate since it looks silly when very very wide
 70: 7e8fc73fa =  70: 7e8fc73fa Use full width for MyReminders table
 71: 5acf57a6e =  71: 5acf57a6e Fix Modify Basics to be div.fields rather than table
 72: 13b9aa7be =  72: 13b9aa7be Add missing type="text" to more input fields
 73: 37a3c8190 =  73: 37a3c8190 Avoid menulist-button styling for multi-row select boxes
 74: 76ebbf037 =  74: 76ebbf037 Middle valign fields
 75: abd46fe43 =  75: abd46fe43 Convert EditPeople from nested tables to responsive
 76: 6b1ed3291 =  76: 6b1ed3291 Load the correct version of msie.css
 77: 55f62d910 =  77: 55f62d910 Add a BeforeNav stylesheet plugin
 78: 713ae954b =  78: 713ae954b Make menus overflow into a "More" item on narrow viewports
 79: 0817597f0 =  79: 0817597f0 Remove hyperlink behavior from top-level More menu items
 80: 51ff61b95 =  80: 51ff61b95 Add type attribute to many input fields that were missing it
 81: 9920a2bae =  81: 9920a2bae Fix css rule for one-time cc etc becoming email fields
 82: 639ec0a0a =  82: 639ec0a0a Switch new ticket create popup to a list of links rather than a select
 83: 263260d84 =  83: 263260d84 Fix a regression on legacy themes with CF edit panels
 84: e7a24762e =  84: e7a24762e Override 400px width of jquery modals
 85: d05db9319 =  85: d05db9319 Fix quick create on narrow screens
 86: 1ce3e7535 =  86: 1ce3e7535 Fix width regression with quickcreate requestor field
 87: 0bdd6b928 =  87: 0bdd6b928 Switch AddLinks from tables to fields
 88: de71b019f =  88: de71b019f Improve rendering of date editing form
 89: 7e88d621b =  89: 7e88d621b Improve padding to be more consistent
 90: 15dd4d5e1 =  90: 15dd4d5e1 Make modify links use fluid two-column layout
 91: 4bb74ee24 =  91: 4bb74ee24 Improve edit links to use fields instead of a table
 92: 71adf4d59 =  92: 71adf4d59 Convert merge from table to fields
 93: 8bed2a517 =  93: 8bed2a517 Use the same nomenclature "Message" not "Content" for jumbo
 94: 821af7169 =  94: 821af7169 Switch Jumbo reply panel from table to fields
 95: 451b94ebf =  95: 451b94ebf Jumbo: Wrap both basic fields and custom fields in a single fields table
 96: 8e0edb097 =  96: 8e0edb097 Make message form on Jumbo more consistent
 97: 3410d1f86 =  97: 3410d1f86 Make simple search form more responsive
 98: ac878afd0 =  98: ac878afd0 Fix rudder-responsive getting bottom border radius
 99: ee6fd153c =  99: ee6fd153c Remove margin-right from titleboxes in rudder-responsive
100: 19e92fb58 = 100: 19e92fb58 Improve design of more about requestors panel
101: 0795549da = 101: 0795549da Make user prefs page responsive to small screens
102: 3142b6f1e = 102: 3142b6f1e Remove 20em width from ticket subject on basics
103: d2c34c901 = 103: d2c34c901 Wrap forward message in a titlebox
104: e93736f6e = 104: e93736f6e Switch forward from table to fields
105: 865306bb5 = 105: 865306bb5 Fix "more about requestors" overlap
106: a91ad6b41 = 106: a91ad6b41 Update tests for the responsive HTML change
107: 309321394 = 107: 309321394 Fix Nav tweaking for installer mode
108: 5d80cac56 = 108: 5d80cac56 Initial elevator theme, copied from rudder-responsive
109: 9e2710667 = 109: 9e2710667 Add popper.js 1.14.6 dependency
110: d5361e4f8 = 110: d5361e4f8 Add bootstrap 4.2.1 dependency
111: ce6db31de = 111: ce6db31de Add missing "field" css class for Started field
112: 18b4c17ed = 112: 18b4c17ed Get rid of strikethrough in menu
113: 2c1913cea = 113: 2c1913cea Fix h1 position to make it vertically centered
114: 16a290165 = 114: 16a290165 Fix results position to make it vertically centered
115: fa1eddb07 = 115: fa1eddb07 Drop the incomplete rudder-responsive theme
116: 30c74df65 = 116: 30c74df65 Update copyright to 2019 for new added theme related files
117: 8202a7ed6 = 117: 8202a7ed6 Initial elevator-dark theme
118: 6e8c418d2 = 118: 6e8c418d2 Add bootstrap-select 1.13.7 dependency
119: 65a2b8e72 = 119: 65a2b8e72 Switch to bootstrap styled table
120: d3c438a8c = 120: d3c438a8c Switch to bootstrap card for titleboxes
121: 19983ce0c = 121: 19983ce0c Add %ThemeJSFiles config to serve different js for different themes
122: c20ba1ee1 = 122: c20ba1ee1 Migrate search builder for elevator themes
123: c381b52d6 = 123: c381b52d6 Migrate homepage to elevator themes
124: 2b95d7c55 = 124: 2b95d7c55 Add bootstrap-combobox 1.2.0 dependency
125: 16785047a = 125: 16785047a Migrate cf edit components to elevator themes
126: 3434d9955 = 126: 3434d9955 Migrate ticket modify pages to elevator themes
127: 4dfa4fb64 = 127: 4dfa4fb64 Update asset CSS and JS files for elevator theme
128: 0286cb40c ! 128: c3c6f8be1 Update CSS for asset display components for elevator theme
    @@ -10,10 +10,12 @@
      
      <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 class="col-md-12">
    ++    <div class="col-md-12">
    ++      <div class="form-row">
    ++        <div class="col-md-12">
    ++          <& Elements/ShowSummary, AssetObj => $asset &>
    ++        </div>
     +      </div>
     +    </div>
      
    @@ -24,13 +26,15 @@
     -    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 class="col-md-12">
    ++    <div class="form-row">
    ++      <div class="col-md-12">
    ++        <& /Elements/ShowHistory,
    ++          Object => $asset,
    ++          ShowDisplayModes => 0,
    ++          DisplayPath => 'History.html',
    ++        &>
    ++      </div>
     +    </div>
     +  </div>
      
    @@ -67,52 +71,71 @@
     -  <& /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">
    ++<div class="col-md-12">
    ++  <div class="form-row">
    ++    <div class="col-md-3 asset-catalog label">
     +      <&|/l&>Catalog</&>:
    -+    </span>
    -+    <span class="col-md-9 value">
    -+      <& ShowCatalog, Asset => $AssetObj &>
    -+    </span>
    -+  </div>
    ++    </div>
    ++    <div class="col-md-9 value">
    ++      <span class="current-value form-control"><& ShowCatalog, Asset => $AssetObj &></span>
    ++    </div>
    ++  </div>
    ++</div>
     +
    -+  <div class="col-md-12">
    -+    <span class="col-md-4 asset-name label">
    ++<div class="col-md-12">
    ++  <div class="form-row">
    ++    <div class="col-md-4 asset-name label">
     +      <&|/l&>Name</&>:
    -+    </span>
    -+    <span class="col-md-9 value">
    -+      <% $AssetObj->Name || '' %>
    -+    </span>
    -+  </div>
    ++    </div>
    ++    <div class="col-md-9 value">
    ++      <span class="current-value form-control"><% $AssetObj->Name || '' %></span>
    ++    </div>
    ++  </div>
    ++</div>
     +
    -+  <div class="col-md-12">
    -+    <span class="col-md-3 asset-description label">
    ++<div class="col-md-12">
    ++  <div class="form-row">
    ++    <div class="col-md-3 asset-description label">
     +      <&|/l&>Description</&>:
    -+    </span>
    -+    <span class="col-md-9 value">
    -+      <% $AssetObj->Description || '' %>
    -+    </span>
    -+  </div>
    ++    </div>
    ++    <div class="col-md-9 value">
    ++      <span class="current-value form-control"><% $AssetObj->Description || '' %></span>
    ++    </div>
    ++  </div>
    ++</div>
     +
    -+  <div class="col-md-12">
    -+    <span class="col-md-3 asset-status label">
    ++<div class="col-md-12">
    ++  <div class="form-row">
    ++    <div class="col-md-3 asset-status label">
     +      <&|/l&>Status</&>:
    -+    </span>
    -+    <span class="col-md-9 value">
    -+      <% $AssetObj->Status || '' %>
    -+    </span>
    -+  </div>
    ++    </div>
    ++    <div class="col-md-9 value">
    ++      <span class="current-value form-control"><% $AssetObj->Status || '' %></span>
    ++    </div>
    ++  </div>
    ++</div>
     +
    -+  <div class="col-md-12">
    -+    <div class="col-md-12">
    -+      <& /Elements/ShowCustomFields, Object => $AssetObj, Grouping => 'Basics' &>
    -+    </div>
    ++<div class="col-md-12">
    ++  <div class="form-row">
    ++    <& /Elements/ShowCustomFields, Object => $AssetObj, Grouping => 'Basics' &>
     +  </div>
     +</div>
      <%args>
      $AssetObj
      </%args>
    +
    +diff --git a/share/html/Asset/Elements/ShowCatalog b/share/html/Asset/Elements/ShowCatalog
    +--- a/share/html/Asset/Elements/ShowCatalog
    ++++ b/share/html/Asset/Elements/ShowCatalog
    +@@
    + %# 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
     --- a/share/html/Asset/Elements/ShowDates
    @@ -125,11 +148,7 @@
     -  <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,
    +-      <&|/l_unsafe,
     -          $m->interp->apply_escapes($AssetObj->CreatedAsString, 'h'),
     -          $m->scomp('/Elements/ShowUser', User => $AssetObj->CreatorObj)
     -        &>[_1] by [_2]</&>
    @@ -138,28 +157,44 @@
     -  <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,
    +-      <&|/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 class="col-md-12">
    ++  <div class="col-md-12">
    ++    <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]</&>
    ++        </span>
    ++      </div>
    ++    </div>
    ++  </div>
    ++  <div class="col-md-12">
    ++    <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]</&>
    ++        </span>
    ++      </div>
    ++    </div>
    ++  </div>
    ++  <div class="col-md-12">
    ++    <div class="form-row">
    ++      <& /Elements/ShowCustomFields, Object => $AssetObj, Grouping => 'Dates' &>
    ++    </div>
     +  </div>
      % $m->callback(%ARGS, CallbackName => "AfterFields");
     -</table>
    @@ -176,11 +211,12 @@
      my $CatalogObj = $AssetObj->CatalogObj;
      </%init>
     -<table>
    -+<div class="boxcontainer col-md-12">
    ++<div class="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>
    ++  <div class="col-md-12">
    ++    <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;
    @@ -190,31 +226,36 @@
     -<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>
    ++      <div class="col-md-9 value">
    ++        <& /Elements/ShowUser, User => $user, Link => 1 &>
    ++      </div>
     +%      if ( $user->id == RT->Nobody->id ) {
    -+    </div>
    ++      </div></div>
     +%         next;
     +%      }
    -+    <div class="col-md-9 value">
    -+      <& ShowRoleMembers, Group => $AssetObj->RoleGroup($role), Title => 0 &>
    -+    </div>
    ++      <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)") &>
    +-    <& 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 class="user-accordion">
    ++      <& ShowRoleMembers, Group => $AssetObj->RoleGroup($role) &>
    ++      <& ShowRoleMembers, Group => $CatalogObj->RoleGroup($role), Skip => $AssetObj->RoleGroup($role), Note => loc("(via this asset's catalog)") &>
    ++    </div>
      % }
    ++    </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 class="form-row">
    ++     <& /Elements/ShowCustomFields, Object => $AssetObj, Grouping => 'People', Table => 0 &>
    ++    </div>
     +  </div>
     +</div>
      % $m->callback( %ARGS, CallbackName => 'AfterPeople' );
    @@ -223,30 +264,21 @@
     --- a/share/html/Asset/Elements/ShowSummary
     +++ b/share/html/Asset/Elements/ShowSummary
     @@
    -         . "/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">
    ++<div class="asset-metadata col-md-12">
    ++  <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 &>
     -</&>
    -+%    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;
    ++        <&| /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,
    @@ -254,15 +286,12 @@
     -     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 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>
    @@ -278,7 +307,7 @@
     -    Object => $asset,
     -    ShowDisplayModes => 0,
     -    DisplayPath => 'History.html',
    -+  <div class="boxcontainer asset-metadata col-md-12">
    ++  <div class="asset-metadata col-md-12">
     +    <& /Elements/ShowHistory,
     +      Object => $asset,
     +      ShowDisplayModes => 0,
129: f1f942029 ! 129: eccb5a4d1 Update asset create components for elevator theme
    @@ -50,27 +50,29 @@
     -        CustomFieldGenerator => sub { $catalog->AssetCustomFields },
     -        ForCreation => 1,
     -  &>
    -+<div id="Asset-Create-basics" class="boxcontainer asset-metadata col-md-12">
    ++<div id="Asset-Create-basics" class="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">
    ++      <div class="col-md-12">
    ++        <div class="form-row">
    ++
    ++          <div class="col-md-4">
     +            <&| /Widgets/TitleBox, title => loc("Basics"), class => "asset-basics", title_class => "inverse" &>
     +              <& Elements/EditBasics, %ARGS, AssetObj => $asset, CatalogObj => $catalog &>
     +            </&>
     +          </div>
     +
    -+          <div class="col-md-12">
    ++          <div class="col-md-4">
     +            <&| /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">
    ++
    ++          <div id="Asset-Create-details" class="col-md-4">
     +            <a name="details"></a>
     +            <& /Elements/EditCustomFieldCustomGroupings,
     +              Object => $asset,
    @@ -80,23 +82,20 @@
     +              ForCreation => 1,
     +            &>
     +          </div>
    ++
    ++        <div class="col-md-4">
    ++          <&| /Widgets/TitleBox, title => loc("Links"), class => "asset-links", title_class => "inverse" &>
    ++            <& /Elements/AddLinks,
    ++              Object          => $asset,
    ++              CustomFields    => $catalog->AssetCustomFields
    ++            &>
    ++          </&>
     +        </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 class="col-md-12">
    ++          <div class="form-row">
    ++            <& /Elements/Submit, Label => loc('Create asset') &>
     +          </div>
    -+        </div>
    -+      </div>
    -+
    -+      <div class="col-md-12 form-row">
    -+        <div class="col-md-12">
    -+          <& /Elements/Submit, Label => loc('Create asset') &>
     +        </div>
     +      </div>
     +    </form>
    @@ -169,7 +168,7 @@
     -  <&|/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="form-row">
     +      <div class="col-md-12">
     +        <&|/l_unsafe,
     +          $m->scomp("/Elements/SelectNewTicketQueue"),
    @@ -181,7 +180,7 @@
     -<&|/l_unsafe,
     -    $m->scomp("/Elements/SelectNewTicketQueue"),
     -    &>Create a new ticket in the [_1] queue about multiple assets.</&>
    -+    <div class="form-group">
    ++    <div class="form-row">
     +      <div class="col-md-12">
     +        <&|/l_unsafe,
     +          $m->scomp("/Elements/SelectNewTicketQueue"),
    @@ -192,7 +191,7 @@
      % if ($Requestors) {
          <input type="hidden" name="Requestors" value="<% $Requestors%>" />
      % } else {
    -+    <div class="form-group">
    ++    <div class="form-row">
      %     my $first = 1;
      %     for my $role ($asset_objs[0]->Roles) {
      %         my $addr = join ', ', keys %{$role_addresses{$role}};
    @@ -202,7 +201,9 @@
     -    <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%>/>
    ++        <div class="custom-control custom-radio">
    ++          <input class="custom-control-input" type="radio" name="Requestors" value="<% $addr %>" <% $first ? 'checked="checked"' : '' |n%>/>
    ++        </div>
     +        <&|/l, loc($role), $addr &>Use asset [_1] as ticket Requestor: [_2]</&>
      %         $first = 0;
      %     }
130: 369b78f4c ! 130: 388c355a8 Update asset modify components for elevator theme
    @@ -28,6 +28,7 @@
     +      data-autocomplete="Users"
     +      data-autocomplete-return="Name"
     +      placeholder="<% loc("Find a user...") %>"
    ++      class="form-control"
     +    >
     +  </div>
      </div>
    @@ -51,9 +52,25 @@
     +      data-autocomplete="Groups"
     +      data-autocomplete-return="Name"
     +      placeholder="<% loc("Find a group...") %>"
    ++      class="form-control"
     +    >
     +  </div>
      </div>
    +
    +diff --git a/share/html/Asset/Elements/CreateLinkedTicket b/share/html/Asset/Elements/CreateLinkedTicket
    +--- a/share/html/Asset/Elements/CreateLinkedTicket
    ++++ b/share/html/Asset/Elements/CreateLinkedTicket
    +@@
    + </%init>
    + <form action="<% RT->Config->Get("WebPath") %><% $session{CurrentUser}->Privileged ? "/Ticket" : "/SelfService" %>/Create.html" id="AssetCreateLinkedTicket">
    +   <div class="col-md-12">
    +-    <input name="new-RefersTo" value="<% $refers_to %>" type="hidden">
    +-    <input name="Subject" value="<% $asset_objs[0]->Name %>" type="hidden">
    ++    <input class="form-control" name="new-RefersTo" value="<% $refers_to %>" type="hidden">
    ++    <input class="form-control" name="Subject" value="<% $asset_objs[0]->Name %>" type="hidden">
    + % if ( @asset_objs == 1 ){
    +     <div class="form-row">
    +       <div class="col-md-12">
     
     diff --git a/share/html/Asset/Elements/EditBasics b/share/html/Asset/Elements/EditBasics
     --- a/share/html/Asset/Elements/EditBasics
    @@ -63,17 +80,21 @@
      %#
      %# END BPS TAGGED BLOCK }}}
     -<table>
    -+<div class="boxcontainer col-md-12">
    ++<div class="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 class="form-row">
    ++    <div class="col-md-12">
    ++      <div class="form-row">
    ++        <div class="col-md-6 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>
     +    </div>
     +  </div>
    @@ -90,29 +111,48 @@
     -    <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 class="col-md-6 asset-name">
    ++    <div class="form-row">
    ++      <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>
    ++  <div class="col-md-6 asset-description">
    ++    <div class="form-row">
    ++      <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>
    ++  <div class="col-md-6 asset-status">
    ++    <div class="form-row">
    ++      <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>
     +  </div>
      % if ( $AssetObj->id ) {
    -   <& /Elements/EditCustomFields, Object => $AssetObj, Grouping => 'Basics', InTable => 1 &>
    +-  <& /Elements/EditCustomFields, Object => $AssetObj, Grouping => 'Basics', InTable => 1 &>
    ++  <div class="col-md-12">
    ++    <div class="form-row">
    ++      <& /Elements/EditCustomFields, Object => $AssetObj, Grouping => 'Basics', InTable => 1 &>
    ++    </div>
    ++  </div>
      % } elsif ( my @cf_names = grep { defined } @{RT->Config->Get('AssetBasicCustomFieldsOnCreate') || []} ) {
    -@@
    -   <& /Elements/EditCustomFields, Object => $AssetObj, CustomFields => $cfs, InTable => 1, KeepValue => 1 &>
    + %   my $cfs = $CatalogObj->AssetCustomFields;
    + %   for my $name ( @cf_names ) {
    + %       $cfs->Limit( FIELD => 'Name', VALUE => $name, CASESENSITIVE => 0 );
    + %   }
    +-  <& /Elements/EditCustomFields, Object => $AssetObj, CustomFields => $cfs, InTable => 1, KeepValue => 1 &>
    ++  <div class="col-md-12">
    ++    <div class="form-row">
    ++      <& /Elements/EditCustomFields, Object => $AssetObj, CustomFields => $cfs, InTable => 1, KeepValue => 1 &>
    ++    </div>
    ++  </div>
      % }
      % $m->callback(%ARGS, CallbackName => "AfterFields");
     -</table>
    @@ -121,6 +161,122 @@
      $AssetObj
      $CatalogObj => undef
     
    +diff --git a/share/html/Asset/Elements/EditCatalogPeople b/share/html/Asset/Elements/EditCatalogPeople
    +--- a/share/html/Asset/Elements/EditCatalogPeople
    ++++ b/share/html/Asset/Elements/EditCatalogPeople
    +@@
    +     <& EditRoleMembers, Group => $Object->RoleGroup($role) &>
    +   </div>
    + % }
    +-  <div class="form-row col-md-12">
    +-    <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>
    + </div>
    +
    +diff --git a/share/html/Asset/Elements/EditDates b/share/html/Asset/Elements/EditDates
    +--- a/share/html/Asset/Elements/EditDates
    ++++ b/share/html/Asset/Elements/EditDates
    +@@
    +       $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 class="col-md-12">
    ++    <div class="form-row">
    ++      <&|/l&>Last Updated</&>:
    ++      <&|/l_unsafe,
    ++        $m->interp->apply_escapes($AssetObj->LastUpdatedAsString, 'h'),
    ++        $m->scomp('/Elements/ShowUser', User => $AssetObj->LastUpdatedByObj)
    ++        &>[_1] by [_2]</&>
    ++    </div>
    +   </div>
    +-  <div class="row">
    ++  <div class="form-row">
    +     <div class="col-md-12">
    +       <& /Elements/EditCustomFields, Object => $AssetObj, Grouping => 'Dates' &>
    +     </div>
    +
    +diff --git a/share/html/Asset/Elements/EditPeople b/share/html/Asset/Elements/EditPeople
    +--- a/share/html/Asset/Elements/EditPeople
    ++++ b/share/html/Asset/Elements/EditPeople
    +@@
    + %# those contributions and any derivatives thereof.
    + %#
    + %# END BPS TAGGED BLOCK }}}
    +-<div class="boxcontainer col-md-12">
    ++<div class="col-md-12">
    + % for my $role ( $AssetObj->Roles ) {
    +   <div class="asset-people-<% CSSClass($role) %>">
    +     <div class="label col-md-3"><% loc($role) %>:</div>
    +
    +diff --git a/share/html/Asset/Elements/EditRoleMembers b/share/html/Asset/Elements/EditRoleMembers
    +--- a/share/html/Asset/Elements/EditRoleMembers
    ++++ b/share/html/Asset/Elements/EditRoleMembers
    +@@
    +   <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 ) {
    +-  <div class="col-md-12">
    +-    <input type="checkbox" name="<% $field_name %>" value="<% $user->PrincipalId %>">
    ++  <div class="col-md-12 custom-control custom-checkbox">
    ++    <input class="custom-control-input" type="checkbox" name="<% $field_name %>" value="<% $user->PrincipalId %>">
    +     <& /Elements/ShowUser, User => $user &>
    +   </div>
    + % }
    + % my $Groups = $Group->GroupMembersObj( Recursively => $Recursively );
    + % $Groups->LimitToUserDefinedGroups;
    + % while (my $group = $Groups->Next) {
    +-  <div class="col-md-12">
    +-    <input type="checkbox" name="<% $field_name %>" value="<% $group->PrincipalId %>">
    ++  <div class="col-md-12 custom-control custom-checkbox">
    ++    <input class="custom-control-input" type="checkbox" name="<% $field_name %>" value="<% $group->PrincipalId %>">
    +     <&|/l&>Group</&>: <% $group->Name %>
    +   </div>
    + % }
    +
    +diff --git a/share/html/Asset/Elements/SelectCatalog b/share/html/Asset/Elements/SelectCatalog
    +--- a/share/html/Asset/Elements/SelectCatalog
    ++++ b/share/html/Asset/Elements/SelectCatalog
    +@@
    + %# those contributions and any derivatives thereof.
    + %#
    + %# END BPS TAGGED BLOCK }}}
    +-<& /Elements/SelectObject,
    +-    Name           => "Catalog",
    +-    ShowAll        => $ShowAll,
    +-    ShowNullOption => $ShowNullOption,
    +-    CheckRight     => "CreateAsset",
    +-    %ARGS,
    +-    ObjectType     => "Catalog",
    +-    CacheNeedsUpdate => RT::Catalog->CacheNeedsUpdate,
    +-    Default        => $Default,
    ++<div class="col-md-12">
    ++  <div class="form-row">
    ++    <& /Elements/SelectObject,
    ++        Name           => "Catalog",
    ++        ShowAll        => $ShowAll,
    ++        ShowNullOption => $ShowNullOption,
    ++        CheckRight     => "CreateAsset",
    ++        %ARGS,
    ++        ObjectType     => "Catalog",
    ++        CacheNeedsUpdate => RT::Catalog->CacheNeedsUpdate,
    ++        Default        => $Default,
    +     &>
    ++  </div>
    ++</div>
    + <%args>
    + $ShowAll => 0
    + $Default => undef
    +
     diff --git a/share/html/Asset/Modify.html b/share/html/Asset/Modify.html
     --- a/share/html/Asset/Modify.html
     +++ b/share/html/Asset/Modify.html
    @@ -137,15 +293,15 @@
     -  </&>
     -
     -  <& /Elements/Submit, Label => loc('Save asset'), Name => "Update" &>
    -+  <div class="boxcontainer asset-metadata col-md-12">
    -+    <div class="row">
    ++  <div class="asset-metadata col-md-12">
    ++    <div class="form-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="form-row">
     +      <div class="col-md-12">
     +        <&| /Widgets/TitleBox, title => loc("Custom Fields"), class => "asset-info-cfs", title_class => "inverse" &>
     +            <& /Elements/EditCustomFields, Object => $asset, Grouping => '' &>
    @@ -171,7 +327,7 @@
      <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">
    ++  <div class="col-md-12">
     +    <input type="hidden" name="id" value="<% $asset->id %>">
     +    <input type="hidden" name="Grouping" value="<% $Grouping %>">
      
    @@ -207,7 +363,7 @@
      <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">
    ++  <div class="col-md-12">
     +    <form method="post" enctype="multipart/form-data" id="ModifyAssetDates" action="ModifyDates.html">
     +    <input type="hidden" name="id" value="<% $asset->id %>">
      
    @@ -243,7 +399,7 @@
      <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">
    ++  <div class="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 %>">
      
    @@ -295,7 +451,6 @@
     -
     -  <& /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 %>">
    @@ -317,7 +472,6 @@
     +        <& /Elements/Submit, Label => loc('Save'), Name => "Update" &>
     +      </div>
     +    </form>
    -+  </div>
      </span>
      
      <%init>
131: d39652083 ! 131: 8cbbb510a Update asset search components for elevator theme
    @@ -29,46 +29,58 @@
     -    <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">
    ++<div class="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 class="col-md-12">
    ++      <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>
    ++      <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="col-md-12">
    ++      <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>
    ++      <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>
      % my $CFs = RT::CustomFields->new( $session{CurrentUser} );
    @@ -84,14 +96,16 @@
     -  <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 class="col-md-12">
    ++      <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>
     +    </div>
      % }
    @@ -111,7 +125,7 @@
      %#
      %# 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">
    ++<div class="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 );
    @@ -130,17 +144,19 @@
     -  <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 class="col-md-12">
    ++      <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>
     +    </div>
      % }
     -</&>
    @@ -159,7 +175,7 @@
      %# END BPS TAGGED BLOCK }}}
     -<&| /Widgets/TitleBox, class => "asset-search-people", title => loc('People') &>
     -<table>
    -+<div class="boxcontainer col-md-12">
    ++<div class="col-md-12">
     +  <&| /Widgets/TitleBox, class => "asset-search-people", title => loc('People') &>
      % for my $role (RT::Asset->Roles) {
     -<tr class="asset-role-<% CSSClass($role) %>">
    @@ -174,19 +190,23 @@
     -             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 class="form-row">
    ++      <div class="col-md-12">
    ++        <div class="asset-role-<% CSSClass($role) %> col-md-6">
    ++          <div class="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>
     +        </div>
     +      </div>
     +    </div>
    @@ -203,15 +223,17 @@
     -  <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 class="form-row">
    ++      <div class="col-md-12">
    ++        <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>
     +  </div>
      % }
     -</table>
    @@ -265,23 +287,44 @@
     +    </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 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>
     +
    -+  <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>
    ++  <div class="col-md-12">
    ++    <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="col-md-12">
    ++            <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>
    ++          </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 type="text" name="UpdateName" value="<% $ARGS{'Name'}||'' %>" size="40">
    ++              </div>
    ++            </div>
    ++          </div>
    ++        </div>
    ++      </div>
    ++    </div>
      
     -<&| /Widgets/TitleBox, title => loc("Basics"), class => "asset-basics asset-bulk-basics", title_class => "inverse" &>
     -<table class="core-fields">
    @@ -302,25 +345,23 @@
     -    <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 class="col-md-12">
    ++          <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 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>
     +        </div>
    @@ -328,8 +369,10 @@
      %   $cfs->LimitToGrouping( 'RT::Asset' => 'Basics');
      %   if ( $cfs->Count ) {
     -<& /Elements/BulkCustomFields, CustomFields => $cfs, &>
    -+        <div class="col-md-12 form-row">
    -+          <& /Elements/BulkCustomFields, CustomFields => $cfs, &>
    ++        <div class="col-md-12">
    ++          <div class="form-row">
    ++            <& /Elements/BulkCustomFields, CustomFields => $cfs, &>
    ++          </div>
     +        </div>
      %   }
     -</&>
    @@ -339,9 +382,10 @@
      
     -<&| /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" &>
    ++  <div class="col-md-12">
    ++    <div class="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'} ) {
    @@ -350,27 +394,32 @@
     -<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>
    ++        <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 type="text" value="<% $ARGS{ $input } || '' %>" name="<% $input %>" id="<% $input %>" data-autocomplete="Users" data-autocomplete-return="Name" />
    ++            </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="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>
    ++        <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 type="text" value="<% $ARGS{ $input } || '' %>" name="<% $input %>" id="<% $input %>" data-autocomplete="Users" data-autocomplete-return="Name" />
    ++            </div>
    ++          </div>
    ++        </div>
      
     -<tr>
    -+      <div class="col-md-6 form-row">
    ++        <div class="col-md-6">
    ++          <div class="form-row">
      % $input = "RemoveRoleMember-$rname";
     -<td class="label"><label for="<% $input %>"><% loc("Remove [_1]", loc($rname)) %></label></td>
     -<td>
    @@ -381,27 +430,30 @@
     -  </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>
    ++            <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>
    ++        </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>
    ++        <div class="col-md-12">
    ++          <div class="form-row">
    ++            <& /Elements/BulkCustomFields, CustomFields => $cfs, &>
    ++          </div>
    ++        </div>
      %   }
     -</table>
     -</&>
    -+      </&>
    -+    </div>
    ++        </&>
    ++      </div>
      
      %   my $cfs = $catalog_obj->AssetCustomFields;
      %   $cfs->LimitToGrouping( 'RT::Asset' => 'Dates');
    @@ -410,13 +462,15 @@
     -<& /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>
    ++      <div class="col-md-12">
    ++        <div class="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>
    ++      </div>
      %   }
      
      % for my $group ( RT::CustomField->CustomGroupings( 'RT::Asset' ), '' ) {
    @@ -426,41 +480,48 @@
     -<&| /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>
    ++      <div class="col-md-12">
    ++        <div class="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>
    ++      </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 &>
    ++      <div class="col-md-12">
    ++        <div class="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/BulkCustomFields, CustomFields => $cfs, &>
    + %   }
    +-</&>
    ++              </&>
    ++          </div>
    ++        </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 class="col-md-12">
    ++        <div class="form-row">
    ++          <div class="col-md-12">
    ++            <& /Elements/Submit, Label => loc('Update'), Name => 'Update' &>
    ++          </div>
    ++        </div>
    ++      </div>
    ++    </form>
    ++  </div>
     +</div>
      
      <%INIT>
    @@ -474,7 +535,7 @@
      <& /Elements/Header, Title => $title &>
      <& /Elements/Tabs &>
     -
    -+<div class="boxcontainer col-md-12">
    ++<div class="col-md-12">
      % if ( $ARGS{'SearchAssets'} or $ARGS{q} ){
      <& /Elements/CollectionList,
          %search,
    @@ -489,7 +550,7 @@
     -<& /Asset/Elements/AssetSearchPeople, %ARGS, CatalogObj => $catalog_obj &>
     -<& /Elements/Submit, Label => loc('Search'), Name => 'SearchAssets' &>
     +</div>
    -+<div class="boxcontainer col-md-12">
    ++<div class="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") &>



More information about the rt-commit mailing list