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

Craig Kaiser craig at bestpractical.com
Mon Apr 22 15:03:22 EDT 2019


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

  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: c3c6f8be1 ! 128: f10b1b7b1 Update asset display components for elevator theme
    @@ -1,6 +1,6 @@
     Author: Craig Kaiser <craig at bestpractical.com>
     
    -    Update CSS for asset display components for elevator theme
    +    Update asset display components for elevator theme
     
     diff --git a/share/html/Asset/Display.html b/share/html/Asset/Display.html
     --- a/share/html/Asset/Display.html
    @@ -10,39 +10,20 @@
      
      <span class="catalog <% CSSClass($asset->CatalogObj->Name) %>">
     -<& 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>
    ++  <& Elements/ShowSummary, AssetObj => $asset &>
      
      % $m->callback(CallbackName => 'AfterShowSummary', ARGSRef => \%ARGS, Asset => $asset);
      
     -<& /Elements/ShowHistory,
    --    Object => $asset,
    --    ShowDisplayModes => 0,
    --    DisplayPath => 'History.html',
    ++  <& /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>
    ++  &>
      
      % $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
     --- a/share/html/Asset/Elements/ShowBasics
    @@ -71,52 +52,44 @@
     -  <& /Elements/ShowCustomFields, Object => $AssetObj, Grouping => 'Basics', Table => 0 &>
     -% $m->callback(%ARGS, CallbackName => "AfterFields");
     -</table>
    -+<div class="col-md-12">
    -+  <div class="form-row">
    -+    <div class="col-md-3 asset-catalog label">
    -+      <&|/l&>Catalog</&>:
    -+    </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">
    -+  <div class="form-row">
    -+    <div class="col-md-4 asset-name label">
    -+      <&|/l&>Name</&>:
    -+    </div>
    -+    <div class="col-md-9 value">
    -+      <span class="current-value form-control"><% $AssetObj->Name || '' %></span>
    -+    </div>
    -+  </div>
    -+</div>
    -+
    -+<div class="col-md-12">
    -+  <div class="form-row">
    -+    <div class="col-md-3 asset-description label">
    -+      <&|/l&>Description</&>:
    -+    </div>
    -+    <div class="col-md-9 value">
    -+      <span class="current-value form-control"><% $AssetObj->Description || '' %></span>
    -+    </div>
    -+  </div>
    -+</div>
    -+
    -+<div class="col-md-12">
    -+  <div class="form-row">
    -+    <div class="col-md-3 asset-status label">
    -+      <&|/l&>Status</&>:
    -+    </div>
    -+    <div class="col-md-9 value">
    -+      <span class="current-value form-control"><% $AssetObj->Status || '' %></span>
    -+    </div>
    -+  </div>
    -+</div>
    -+
    -+<div class="col-md-12">
    -+  <div class="form-row">
    ++<div class="form-row">
    ++  <div class="col-md-3 asset-catalog label">
    ++    <&|/l&>Catalog</&>:
    ++  </div>
    ++  <div class="col-md-9 value">
    ++    <& ShowCatalog, Asset => $AssetObj &>
    ++  </div>
    ++</div>
    ++
    ++<div class="form-row">
    ++  <div class="col-md-3 asset-name label">
    ++    <&|/l&>Name</&>:
    ++  </div>
    ++  <div class="col-md-9 value">
    ++    <span class="current-value form-control"><% $AssetObj->Name || '' %></span>
    ++  </div>
    ++</div>
    ++
    ++<div class="form-row">
    ++  <div class="col-md-3 asset-description label">
    ++    <&|/l&>Description</&>:
    ++  </div>
    ++  <div class="col-md-9 value">
    ++    <span class="current-value form-control"><% $AssetObj->Description || '' %></span>
    ++  </div>
    ++</div>
    ++
    ++<div class="form-row">
    ++  <div class="col-md-3 asset-status label">
    ++    <&|/l&>Status</&>:
    ++  </div>
    ++  <div class="col-md-9 value">
    ++    <span class="current-value form-control"><% $AssetObj->Status || '' %></span>
    ++  </div>
    ++</div>
    ++
    ++<div class="form-row">
    ++  <div class="col-md-12">
     +    <& /Elements/ShowCustomFields, Object => $AssetObj, Grouping => 'Basics' &>
     +  </div>
     +</div>
    @@ -149,56 +122,50 @@
     -    <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]</&>
    ++<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]</&>
     -    </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]</&>
    ++      </span>
    ++    </div>
    ++  </div>
    ++
    ++  <div class="form-row">
    ++    <div class="col-md-3 label">
    ++      <&|/l&>Last Updated</&>:
    ++    </div>
    ++    <div class="col-md-9 value">
    ++      <span class="current-value form-control">
    ++        <&|/l_unsafe,
    +           $m->interp->apply_escapes($AssetObj->LastUpdatedAsString, 'h'),
    +           $m->scomp('/Elements/ShowUser', User => $AssetObj->LastUpdatedByObj)
    +         &>[_1] by [_2]</&>
     -    </td>
     -  </tr>
     -  <& /Elements/ShowCustomFields, Object => $AssetObj, Grouping => 'Dates', Table => 0 &>
    -+<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>
    ++      </span>
    ++    </div>
    ++  </div>
    ++
    ++  <div class="form-row">
    ++    <& /Elements/ShowCustomFields, Object => $AssetObj, Grouping => 'Dates' &>
    ++  </div>
    ++</div>
      % $m->callback(%ARGS, CallbackName => "AfterFields");
     -</table>
    -+</div>
      <%args>
      $AssetObj
      </%args>
    @@ -214,9 +181,10 @@
     +<div class="col-md-12">
      % for my $role ($AssetObj->Roles) {
     -<tr><td class="label"><% loc($role) %>:
    -+  <div class="col-md-12">
    -+    <div class="form-row">
    -+      <div class="col-md-3 label"><% loc($role) %>:</div>
    ++  <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;
    @@ -226,36 +194,34 @@
     -<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>
    ++  </div>
      % } else {
     -</td></tr><tr><td class="user-accordion">
     -    <& ShowRoleMembers, Group => $AssetObj->RoleGroup($role) &>
     -    <& ShowRoleMembers, Group => $CatalogObj->RoleGroup($role), Skip => $AssetObj->RoleGroup($role), Note => loc("(via this asset's catalog)") &>
     -  </td></tr>
    -+    <div class="user-accordion">
    ++    <div class="user-accordion col-md-9">
     +      <& ShowRoleMembers, Group => $AssetObj->RoleGroup($role) &>
     +      <& ShowRoleMembers, Group => $CatalogObj->RoleGroup($role), Skip => $AssetObj->RoleGroup($role), Note => loc("(via this asset's catalog)") &>
     +    </div>
    ++  </div>
      % }
    -+    </div>
    -+  </div>
      % }
     -<& /Elements/ShowCustomFields, Object => $AssetObj, Grouping => 'People', Table => 0 &>
    --
    + 
     -</table>
    -+  <div class="col-md-12">
    -+    <div class="form-row">
    -+     <& /Elements/ShowCustomFields, Object => $AssetObj, Grouping => 'People', Table => 0 &>
    -+    </div>
    ++  <div class="form-row">
    ++    <& /Elements/ShowCustomFields, Object => $AssetObj, Grouping => 'People', Table => 0 &>
     +  </div>
     +</div>
      % $m->callback( %ARGS, CallbackName => 'AfterPeople' );
129: eccb5a4d1 ! 129: 005988ada Update asset create components for elevator theme
    @@ -6,10 +6,9 @@
     --- a/share/html/Asset/Create.html
     +++ b/share/html/Asset/Create.html
     @@
    - 
      <& /Elements/ListActions, actions => \@results &>
      
    --<span class="catalog <% CSSClass($catalog->Name) %>">
    + <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 %>">
    @@ -50,79 +49,61 @@
     -        CustomFieldGenerator => sub { $catalog->AssetCustomFields },
     -        ForCreation => 1,
     -  &>
    -+<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">
    -+        <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-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-4">
    -+            <a name="details"></a>
    -+            <& /Elements/EditCustomFieldCustomGroupings,
    -+              Object => $asset,
    -+              TitleBoxARGS => { title_class => "inverse" },
    -+              KeepValue => 1,
    -+              CustomFieldGenerator => sub { $catalog->AssetCustomFields },
    -+              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-12">
    -+          <div class="form-row">
    -+            <& /Elements/Submit, Label => loc('Create asset') &>
    -+          </div>
    -+        </div>
    -+      </div>
    -+    </form>
    -+  </span>
    - </div>
    - 
    +-</div>
    +-
     -  <& /Elements/Submit, Label => loc('Create asset') &>
     -</form>
    --</span>
    --
    ++  <form method="post" enctype="multipart/form-data" id="CreateAsset" action="Create.html">
    ++    <input type="hidden" name="id" value="new">
    ++    <input type="hidden" name="Catalog" value="<% $catalog->id %>">
    ++
    ++    <div id="Asset-Create-basics" class="asset-metadata form-row">
    ++      <a name="basics"></a>
    ++      <div class="col-md-6">
    ++        <&| /Widgets/TitleBox, title => loc("Basics"), class => "asset-basics", title_class => "inverse" &>
    ++          <& Elements/EditBasics, %ARGS, AssetObj => $asset, CatalogObj => $catalog &>
    ++        </&>
    ++      </div>
    ++
    ++      <div class="col-md-6">
    ++        <&| /Widgets/TitleBox, title => loc("People"), class => "asset-people", title_class => "inverse" &>
    ++            <& Elements/EditPeople, %ARGS, AssetObj => $asset &>
    ++        </&>
    ++      </div>
    ++    </div>
    ++
    ++    <div id="Asset-Create-details" class="form-row">
    ++      <a name="details"></a>
    ++      <div class="col-md-6">
    ++        <& /Elements/EditCustomFieldCustomGroupings,
    ++          Object => $asset,
    ++          TitleBoxARGS => { title_class => "inverse" },
    ++          KeepValue => 1,
    ++          CustomFieldGenerator => sub { $catalog->AssetCustomFields },
    ++          ForCreation => 1,
    ++        &>
    ++      </div>
    ++
    ++      <div class="col-md-6">
    ++        <&| /Widgets/TitleBox, title => loc("Links"), class => "asset-links", title_class => "inverse" &>
    ++          <& /Elements/AddLinks,
    ++            Object          => $asset,
    ++            CustomFields    => $catalog->AssetCustomFields
    ++          &>
    ++        </&>
    ++      </div>
    ++    </div>
    ++
    ++    <div class="col-md-12">
    ++      <div class="form-row">
    ++        <& /Elements/Submit, Label => loc('Create asset') &>
    ++      </div>
    ++    </div>
    ++
    ++  </form>
    + </span>
    + 
      <%args>
    - $id => ""
    - $Catalog => undef
    -
    -diff --git a/share/html/Asset/CreateInCatalog.html b/share/html/Asset/CreateInCatalog.html
    ---- a/share/html/Asset/CreateInCatalog.html
    -+++ b/share/html/Asset/CreateInCatalog.html
    -@@
    - <& /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
     --- a/share/html/Asset/Elements/CreateInCatalog
    @@ -139,12 +120,12 @@
     -</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="form-row">
    ++      <&|/l_unsafe,
    ++        $m->scomp("/Asset/Elements/SelectCatalog"),
    ++        &>Create a new asset in the catalog: [_1]</&>
    ++    </div>
    ++    <div class="form-row">
     +      <div class="col-md-12">
     +        <& /Elements/Submit, Label => loc("Go"), Caption => loc("This will take you to a partially prefilled asset creation form.") &>
     +      </div>
    @@ -156,24 +137,19 @@
     --- 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">
    --  <input name="new-RefersTo" value="<% $refers_to %>" type="hidden">
    --  <input name="Subject" value="<% $asset_objs[0]->Name %>" type="hidden">
    +   <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-row">
    -+      <div class="col-md-12">
    -+        <&|/l_unsafe,
    -+          $m->scomp("/Elements/SelectNewTicketQueue"),
    -+          @description &>Create a new ticket in the [_1] queue about asset #[_2]: [_3].</&>
    -+      </div>
    ++      <&|/l_unsafe,
    ++        $m->scomp("/Elements/SelectNewTicketQueue"),
    ++        @description &>Create a new ticket in the [_1] queue about asset #[_2]: [_3].</&>
     +    </div>
      % }
      % else {
    @@ -181,11 +157,9 @@
     -    $m->scomp("/Elements/SelectNewTicketQueue"),
     -    &>Create a new ticket in the [_1] queue about multiple assets.</&>
     +    <div class="form-row">
    -+      <div class="col-md-12">
    -+        <&|/l_unsafe,
    -+          $m->scomp("/Elements/SelectNewTicketQueue"),
    -+          &>Create a new ticket in the [_1] queue about multiple assets.</&>
    -+      </div>
    ++      <&|/l_unsafe,
    ++        $m->scomp("/Elements/SelectNewTicketQueue"),
    ++        &>Create a new ticket in the [_1] queue about multiple assets.</&>
     +    </div>
      % }
      % if ($Requestors) {
    @@ -202,9 +176,9 @@
     -    <&|/l, loc($role), $addr &>Use asset [_1] as ticket Requestor: [_2]</&>
     -  </label>
     +        <div class="custom-control custom-radio">
    -+          <input class="custom-control-input" type="radio" name="Requestors" value="<% $addr %>" <% $first ? 'checked="checked"' : '' |n%>/>
    ++          <input class="custom-control-input" id="radio-<%$role%>" type="radio" name="Requestors" value="<% $addr %>" <% $first ? 'checked="checked"' : '' |n%>/>
    ++          <label class="custom-control-label" for="radio-<%$role%>"><&|/l, loc($role), $addr &>Use asset [_1] as ticket Requestor: [_2]</&></label>
     +        </div>
    -+        <&|/l, loc($role), $addr &>Use asset [_1] as ticket Requestor: [_2]</&>
      %         $first = 0;
      %     }
     +    </div>
    @@ -215,6 +189,7 @@
     +        <& /Elements/Submit, Label => loc("Go"), Caption => loc("This will take you to a partially filled ticket creation form.") &>
     +      </div>
     +    </div>
    ++
     +  </div>
      </form>
     
    @@ -232,7 +207,7 @@
     -  <& EditRoleMembers, Group => $Object->RoleGroup($role) &>
     -</div>
     +  <div class="role-<% CSSClass($role) %> role">
    -+    <h5><% loc($role) %></h5>
    ++    <h3><% loc($role) %></h3>
     +    <& EditRoleMembers, Group => $Object->RoleGroup($role) &>
     +  </div>
      % }
130: 388c355a8 ! 130: 73a8cb168 Update asset modify components for elevator theme
    @@ -57,21 +57,6 @@
     +  </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
     +++ b/share/html/Asset/Elements/EditBasics
    @@ -80,22 +65,17 @@
      %#
      %# END BPS TAGGED BLOCK }}}
     -<table>
    -+<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="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 class="form-row asset-catalog">
    ++    <div class="label col-md-3">
    ++      <&|/l&>Catalog</&>:
    ++    </div>
    ++    <div class="value col-md-9">
    ++      <& /Asset/Elements/SelectCatalog, Default => $current{Catalog} &>
     +    </div>
     +  </div>
      % }
    @@ -111,36 +91,37 @@
     -    <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 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>
    ++  <div class="form-row asset-name">
    ++    <div class="label col-md-3">
    ++      <&|/l&>Name</&>:
    ++    </div>
    ++    <div class="value col-md-9">
    ++      <input class="form-control" type="text" name="Name" value="<% $current{Name} %>" size="40">
    ++    </div>
    ++  </div>
    ++
    ++  <div class="form-row asset-description">
    ++    <div class="label col-md-3">
    ++      <&|/l&>Description</&>:
    ++    </div>
    ++    <div class="value col-md-9">
    ++      <input class="form-control" type="text" name="Description" value="<% $current{Description} %>" size="40">
    ++    </div>
    ++  </div>
    ++
    ++  <div class="form-row asset-status">
    ++    <div class="label col-md-3">
    ++      <&|/l&>Status</&>:
    ++    </div>
    ++    <div class="value col-md-9">
    ++      <& /Asset/Elements/SelectStatus, Name => 'Status', AssetObj => $AssetObj, CatalogObj => $CatalogObj &>
    ++    </div>
    ++  </div>
    ++
      % if ( $AssetObj->id ) {
     -  <& /Elements/EditCustomFields, Object => $AssetObj, Grouping => 'Basics', InTable => 1 &>
    -+  <div class="col-md-12">
    -+    <div class="form-row">
    -+      <& /Elements/EditCustomFields, Object => $AssetObj, Grouping => 'Basics', InTable => 1 &>
    -+    </div>
    ++  <div class="form-row">
    ++    <& /Elements/EditCustomFields, Object => $AssetObj, Grouping => 'Basics', InTable => 0 &>
     +  </div>
      % } elsif ( my @cf_names = grep { defined } @{RT->Config->Get('AssetBasicCustomFieldsOnCreate') || []} ) {
      %   my $cfs = $CatalogObj->AssetCustomFields;
    @@ -148,15 +129,12 @@
      %       $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 class="form-row">
    ++    <& /Elements/EditCustomFields, Object => $AssetObj, CustomFields => $cfs, InTable => 1, KeepValue => 1 &>
     +  </div>
      % }
      % $m->callback(%ARGS, CallbackName => "AfterFields");
     -</table>
    -+</div>
      <%args>
      $AssetObj
      $CatalogObj => undef
    @@ -165,15 +143,21 @@
     --- a/share/html/Asset/Elements/EditCatalogPeople
     +++ b/share/html/Asset/Elements/EditCatalogPeople
     @@
    + </%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="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 class="col-md-12">
    ++  <div class="form-row">
    +     <em><&|/l&>(Check box to delete)</&></em>
        </div>
      </div>
     
    @@ -181,29 +165,54 @@
     --- a/share/html/Asset/Elements/EditDates
     +++ b/share/html/Asset/Elements/EditDates
     @@
    -       $m->scomp('/Elements/ShowUser', User => $AssetObj->CreatorObj)
    -       &>[_1] by [_2]</&>
    -   </div>
    + %# those contributions and any derivatives thereof.
    + %#
    + %# END BPS TAGGED BLOCK }}}
    +-<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 class="form-row">
    ++  <&|/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="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 class="form-row">
     +  <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>
    ++    <& /Elements/EditCustomFields, Object => $AssetObj, Grouping => 'Dates' &>
    +   </div>
    +-% $m->callback(%ARGS, CallbackName => "AfterFields");
    + </div>
    ++% $m->callback(%ARGS, CallbackName => "AfterFields");
    + <%args>
    + $AssetObj
    + </%args>
     
     diff --git a/share/html/Asset/Elements/EditPeople b/share/html/Asset/Elements/EditPeople
     --- a/share/html/Asset/Elements/EditPeople
    @@ -213,23 +222,44 @@
      %#
      %# 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>
    +-  <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 class="asset-people-<% CSSClass($role) %> form-row">
    ++  <div class="label col-md-3"><% loc($role) %>:</div>
    ++  <div class="value col-md-9">
    ++    <& /Elements/EmailInput, Name => $role, Size => undef, Default => $ARGS{$role}, Autocomplete => 1 &>
    +   </div>
    +-% }
    + </div>
    ++% }
    + 
    + <%args>
    + $AssetObj
     
     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
     @@
    + <%init>
    + my $field_name = "RemoveRoleMember-" . $Group->Name;
    + </%init>
    +-<div class="role-members">
    ++<ul class="role-members">
    + % my $Users = $Group->UserMembersObj( Recursively => $Recursively );
    + % if ($Group->SingleMemberRoleGroup) {
        <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 &>
    +-    <& /Elements/ShowUser, User => $user &>
    ++  <div class="custom-control custom-checkbox">
    ++    <input class="checkbox custom-control-input" type="checkbox" id="checkbox-<%$field_name%>" name="<% $field_name %>" value="<% $user->PrincipalId %>">
    ++    <label class="custom-control-label" for="checkbox-<%$field_name%>"><& /Elements/ShowUser, User => $user &></label>
        </div>
      % }
      % my $Groups = $Group->GroupMembersObj( Recursively => $Recursively );
    @@ -237,42 +267,25 @@
      % 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>
    - % }
    +-    <&|/l&>Group</&>: <% $group->Name %>
    ++  <div class="custom-control custom-checkbox">
    ++    <input class="checkbox custom-control-input" id="checkbox-<%$field_name%>" type="checkbox" name="<% $field_name %>" value="<% $group->PrincipalId %>">
    ++    <label class="custom-control-label" for="checkbox-<%$field_name%>"><&|/l&>Group</&>: <% $group->Name %></label>
    +   </div>
    + % }
    + % }
    +-</div>
    ++</ul>
     
     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>
    +     ObjectType     => "Catalog",
    +     CacheNeedsUpdate => RT::Catalog->CacheNeedsUpdate,
    +     Default        => $Default,
    +-    &>
    ++&>
      <%args>
      $ShowAll => 0
      $Default => undef
    @@ -287,31 +300,27 @@
     -  <&| /Widgets/TitleBox, title => loc("Basics"), class => "asset-basics", title_class => "inverse" &>
     -    <& Elements/EditBasics, %ARGS, AssetObj => $asset &>
     -  </&>
    --
    ++  <div class="asset-metadata form-row">
    ++    <div class="col-md-6">
    ++      <&| /Widgets/TitleBox, title => loc("Basics"), class => "asset-basics", title_class => "inverse" &>
    ++          <& Elements/EditBasics, %ARGS, AssetObj => $asset &>
    ++      </&>
    ++    </div>
    + 
     -  <&| /Widgets/TitleBox, title => loc("Custom Fields"), class => "asset-info-cfs", title_class => "inverse" &>
     -    <& /Elements/EditCustomFields, Object => $asset, Grouping => '' &>
     -  </&>
    --
    ++    <div class="col-md-6">
    ++      <&| /Widgets/TitleBox, title => loc("Custom Fields"), class => "asset-info-cfs", title_class => "inverse" &>
    ++          <& /Elements/EditCustomFields, Object => $asset, Grouping => '' &>
    ++      </&>
    ++    </div>
    ++  </div>
    + 
     -  <& /Elements/Submit, Label => loc('Save asset'), Name => "Update" &>
    -+  <div class="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="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 => '' &>
    -+        </&>
    -+      </div>
    -+    </div>
    -+    <div class="form-row">
    -+      <div class="col-md-12">
    -+        <& /Elements/Submit, Label => loc('Save asset'), Name => "Update" &>
    -+      </div>
    ++  <div class="form-row">
    ++    <div class="col-md-12">
    ++      <& /Elements/Submit, Label => loc('Save asset'), Name => "Update" &>
     +    </div>
     +  </div>
      </form>
    @@ -436,7 +445,10 @@
      <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 %>">
    --
    ++  <form method="post" enctype="multipart/form-data" id="ModifyAssetPeople" action="ModifyPeople.html">
    ++    <input type="hidden" name="id" value="<% $asset->id %>">
    ++    <div class="col-md-12">
    + 
     -  <&| /Widgets/TitleBox, title => loc("People"), class => "asset-people", title_class => "inverse" &>
     -    <table width="100%" class="edit">
     -      <tr>
    @@ -448,30 +460,34 @@
     -      </tr>
     -    </table>
     -  </&>
    --
    ++      <div class="form-row">
    ++        <div class="col-md-12">
    ++          <&| /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>
    + 
     -  <& /Elements/Submit, Label => loc('Save'), Name => "Update" &>
     -</form>
    -+    <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/AddCatalogPeople, Object => $asset &>
    ++              </div>
    ++
     +            <div class="col-md-4">
    -+              <& /Asset/Elements/EditCatalogPeople, %ARGS, Object => $asset &>
    -+            </div>
    -+            <div class="col-md-4">
    -+              <& /Asset/Elements/AddCatalogPeople, Object => $asset &>
    ++              <& /Elements/EditCustomFields, Object => $asset, Grouping => 'People' &>
     +            </div>
     +          </div>
    -+          <div class="col-md-4">
    -+            <& /Elements/EditCustomFields, Object => $asset, Grouping => 'People' &>
    -+          </div>
     +        </&>
     +      </div>
    ++    </div>
    ++
    ++    <div class="form-row">
     +      <div class="col-md-12">
     +        <& /Elements/Submit, Label => loc('Save'), Name => "Update" &>
     +      </div>
    -+    </form>
    ++    </div>
    ++  </form>
      </span>
      
      <%init>
131: 8cbbb510a ! 131: f61ee2084 Update asset search components for elevator theme
    @@ -31,19 +31,18 @@
     -    <td class="value"><input type="text" id="!Description" name="!Description" value="<% $ARGS{"!Description"} || ''%>" /></td></tr>
     +<div class="col-md-12">
     +  <&| /Widgets/TitleBox, title => loc('Basics'), class=>'asset-search-grouping asset-search-basics' &>
    -+    <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="form-row">
    ++      <div class="col-md-6">
    ++        <div class="form-row">
    ++          <div class="label col-md-3"><&|/l&>Catalog</&></div>
    ++          <div class="value col-md-9">
    ++            <& /Asset/Elements/SelectCatalog, Name => 'Catalog', CheckRight => "ShowCatalog",
    ++              Default => $ARGS{'Catalog'}, OnChange => "jQuery('#AssetSearch').submit()"
    ++            &>
    ++          </div>
    ++        </div>
    ++      </div>
    ++
     +      <div class="col-md-6">
     +        <div class="form-row">
     +          <div class="label col-md-3"><&|/l&>Status</&></div>
    @@ -55,21 +54,21 @@
     +        </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="form-row">
    ++      <div class="col-md-6">
    ++        <div class="form-row">
    ++          <div class="label col-md-2"><&|/l&>Name</&></div>
    ++          <div class="value col-md-4">
    ++            <input class="form-control" type="text" id="Name" name="Name" value="<% $ARGS{Name} || ''%>" />
    ++          </div>
    ++          <div class="label col-md-2"><&|/l&>not</&></div>
    ++          <div class="value col-md-4">
    ++            <input class="form-control" type="text" id="!Name" name="!Name" value="<% $ARGS{"!Name"} || ''%>" />
    ++          </div>
    ++        </div>
    ++      </div>
    ++
     +      <div class="col-md-6">
     +        <div class="form-row">
     +          <div class="label col-md-2"><&|/l&>Description</&></div>
    @@ -81,8 +80,10 @@
     +            <input class="form-control" type="text" id="!Description" name="!Description" value="<% $ARGS{"!Description"} || ''%>" />
     +          </div>
     +        </div>
    -+       </div>
    -+     </div>
    ++    </div>
    ++
    ++    <div class="form-row">
    ++      <div class="col-md-12">
      % my $CFs = RT::CustomFields->new( $session{CurrentUser} );
      % $CFs->LimitToCatalog( $CatalogObj->Id );
      % $CFs->LimitToObjectId(0); # LimitToGlobal but no LookupType restriction
    @@ -96,21 +97,25 @@
     -  <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">
    -+      <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>
    ++        <div class="form-row">
    ++          <div class="label col-md-2">
    ++            <% $cf->Name %>
    ++          </div>
    ++          <div class="value col-md-4">
    ++            <& /Elements/SelectCustomFieldValue, CustomField => $cf, Name => $name, Default => $value &>
    ++          </div>
    ++          <div class="label col-md-2">
    ++            <&|/l&>not</&>
    ++          </div>
    ++          <div class="value col-md-4">
    ++            <& /Elements/SelectCustomFieldValue, CustomField => $cf, Name => "!$name", Default => $negval &>
    ++          </div>
    ++        </div>
      % }
     -</table>
     -</&>
    ++      </div>
    ++    </div>
     +  </&>
     +</div>
      <%args>
    @@ -144,19 +149,21 @@
     -  <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">
    -+      <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 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>
      % }
     -</&>
    @@ -190,24 +197,22 @@
     -             data-autocomplete="Users" value="<% $ARGS{"!Role.$role"} || '' %>" />
     -  </td>
     -</tr>
    -+    <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 class="asset-role-<% CSSClass($role) %> form-row">
    ++      <div class="label col-md-2">
    ++        <% loc($role) %>
    ++      </div>
    ++      <div class="value col-md-4">
    ++        <input class="form-control" type="text" id="Role.<% $role %>" name="Role.<% $role %>"
    ++          data-autocomplete="Users" value="<% $ARGS{"Role.$role"} || '' %>"
    ++        />
    ++      </div>
    ++      <div class="label col-md-2">
    ++        <&|/l&>not</&>
    ++      </div>
    ++      <div class="value col-md-4">
    ++        <input class="form-control" type="text" id="!Role.<% $role %>" name="!Role.<% $role %>"
    ++          data-autocomplete="Users" value="<% $ARGS{"!Role.$role"} || '' %>"
    ++        />
     +      </div>
     +    </div>
      % }
    @@ -224,17 +229,19 @@
     -  <td class="value"><& /Elements/SelectCustomFieldValue, CustomField => $cf, Name => "!$name", Default => $negval &></td>
     -</tr>
     +    <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>
    ++      <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>
     -</&>
    @@ -243,6 +250,19 @@
      <%args>
      $CatalogObj => undef
      </%args>
    +
    +diff --git a/share/html/Asset/Elements/Search b/share/html/Asset/Elements/Search
    +--- a/share/html/Asset/Elements/Search
    ++++ b/share/html/Asset/Elements/Search
    +@@
    + %#
    + %# END BPS TAGGED BLOCK }}}
    + <form action="<% RT->Config->Get('WebPath') %>/Asset/Search/" class="asset-search">
    +-  <input name="q" accesskey="0" class="field" value="<% $value %>" placeholder="<&|/l&>Search Assets</&>..." type="search" results=5 autosave="search-assets" />
    ++  <input name="q" accesskey="0" class="field form-control" value="<% $value %>" placeholder="<&|/l&>Search Assets</&>..." type="search" results=5 autosave="search-assets" />
    + </form>
    + <%init>
    + my $value = defined $DECODED_ARGS->{q} ? $DECODED_ARGS->{q} : '';
     
     diff --git a/share/html/Asset/Search/Bulk.html b/share/html/Asset/Search/Bulk.html
     --- a/share/html/Asset/Search/Bulk.html
    @@ -543,19 +563,24 @@
      <em><&|/l&>No assets matching search criteria found.</&></em>
      %   }
      % }
    --<span class="catalog <% CSSClass( $catalog_obj->Name ) %>">
    ++</div>
    + <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="col-md-12">
    -+  <span class="catalog <% CSSClass( $catalog_obj->Name ) %>">
    -+    <form action="<% RT->Config->Get('WebPath') %>/Asset/Search/index.html" id="AssetSearch">
    ++  <form action="<% RT->Config->Get('WebPath') %>/Asset/Search/index.html" id="AssetSearch">
    ++    <div class="col-md-12">
     +      <&| /Widgets/TitleBox, title => loc("Search Assets") &>
    -+      <& /Asset/Elements/AssetSearchBasics, %ARGS, CatalogObj => $catalog_obj &>
    -+      <& /Asset/Elements/AssetSearchPeople, %ARGS, CatalogObj => $catalog_obj &>
    ++        <div class="form-row">
    ++          <& /Asset/Elements/AssetSearchBasics, %ARGS, CatalogObj => $catalog_obj &>
    ++        </div></div>
    ++
    ++        <div class="form-row">
    ++          <& /Asset/Elements/AssetSearchPeople, %ARGS, CatalogObj => $catalog_obj &>
    ++        </div>
    ++
     +        <div class="form-row">
     +          <div class="col-md-12">
     +            <& /Elements/Submit, Label => loc('Search'), Name => 'SearchAssets' &>
    @@ -564,25 +589,35 @@
      
      % my $has_assets_cfs = 0;
      % foreach my $group ( 'Dates', 'Links', RT::CustomField->CustomGroupings( "RT::Asset" ), '' ) {
    -@@
    +-    <& /Asset/Elements/AssetSearchCFs, %ARGS, Grouping => $group,
    +-       CatalogObj => $catalog_obj, has_assets_cfs => \$has_assets_cfs &>
    ++        <div class="form-row">
    ++          <& /Asset/Elements/AssetSearchCFs, %ARGS, Grouping => $group,
    ++            CatalogObj => $catalog_obj, has_assets_cfs => \$has_assets_cfs
    ++          &>
    ++        </div>
      % }
      
      % 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>
    - % }
    - 
    - </&>
    ++        <div class="form-row">
    ++          <div class="col-md-12">
    ++            <& /Elements/Submit, Label => loc('Search'), Name => 'SearchAssets' &>
    ++          </div>
    ++        </div>
    + % }
    +-
    +-</&>
    +-
    ++      </&>
    ++    </div>
    + <script>
    + jQuery(function() {
    +     var all_inputs = jQuery("#AssetSearch input, #AssetSearch select");
     @@
          });
      });
      </script>
     -</form>
    --</span>
    -+   </form>
    -+  </span>
    -+</div>
    ++  </form>
    + </span>



More information about the rt-commit mailing list