diff --git a/modules/backend/assets/css/october.css b/modules/backend/assets/css/october.css index 6aafece55..238b77d4e 100644 --- a/modules/backend/assets/css/october.css +++ b/modules/backend/assets/css/october.css @@ -578,6 +578,12 @@ } .control-simplelist { font-size: 13px; + padding: 20px 20px 2px 20px; + margin-bottom: 25px; + background: #ffffff; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; } .control-simplelist ul { padding-left: 15px; @@ -596,6 +602,18 @@ list-style-type: none; padding-left: 0; } +.control-simplelist.with-checkboxes li { + margin-top: -5px; +} +.control-simplelist.with-checkboxes li:first-child { + margin-top: 0; +} +.control-simplelist.with-checkboxes li:last-child div.custom-checkbox { + margin-bottom: 0; +} +.control-simplelist.with-checkboxes li:last-child div.custom-checkbox label { + margin-bottom: 5px; +} .control-simplelist.is-sortable li.placeholder { position: relative; } @@ -2837,6 +2855,9 @@ body { .layout > .layout-row > .layout-cell.width-120 { width: 120px; } +.layout > .layout-row > .layout-cell.width-140 { + width: 140px; +} .layout > .layout-row > .layout-cell.width-200 { width: 200px; } @@ -2882,6 +2903,9 @@ body { .layout > .layout-row > .layout-cell.width-120 { width: 120px; } +.layout > .layout-row > .layout-cell.width-140 { + width: 140px; +} .layout > .layout-row > .layout-cell.width-200 { width: 200px; } @@ -2935,6 +2959,9 @@ body { .layout > .layout-cell.width-120 { width: 120px; } +.layout > .layout-cell.width-140 { + width: 140px; +} .layout > .layout-cell.width-200 { width: 200px; } @@ -3516,7 +3543,6 @@ body.mainmenu-open .mainmenu-collapsed ul { position: absolute; height: 100%; width: 100%; - padding: 10px 0; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; @@ -3528,17 +3554,38 @@ body.mainmenu-open .mainmenu-collapsed ul { height: 100%; overflow: hidden; } +#layout-sidenav ul:after { + content: ''; + position: absolute; + top: 0; + right: 0; + width: 10px; + height: 100%; + -webkit-box-shadow: inset -5px 0 3px rgba(0, 0, 0, 0.1); + box-shadow: inset -5px 0 3px rgba(0, 0, 0, 0.1); +} #layout-sidenav ul li { display: block; text-align: center; position: relative; } #layout-sidenav ul li a { - padding: 13px; + padding: 20px 13px; display: block; - font-size: 12px; + font-size: 15px; color: rgba(255, 255, 255, 0.35); font-weight: normal; + position: relative; +} +#layout-sidenav ul li a:after { + content: ''; + position: absolute; + top: 0; + right: 0; + width: 10px; + height: 100%; + -webkit-box-shadow: inset -5px 0 3px rgba(0, 0, 0, 0.1); + box-shadow: inset -5px 0 3px rgba(0, 0, 0, 0.1); } #layout-sidenav ul li a:hover { text-decoration: none; @@ -3555,6 +3602,7 @@ body.mainmenu-open .mainmenu-collapsed ul { } #layout-sidenav ul li.active a, #layout-sidenav ul li a:hover { + background: #1f99dc; color: #ffffff; } #layout-sidenav ul li.active a i, @@ -3589,45 +3637,6 @@ body.mainmenu-open .mainmenu-collapsed ul { -ms-transform: scale(0, ); transform: scale(0, ); } -#layout-sidenav .scroll-marker { - position: absolute; - left: 0; - width: 100%; - height: 10px; - display: none; -} -#layout-sidenav .scroll-marker:after { - font-family: FontAwesome; - font-weight: normal; - font-style: normal; - text-decoration: inherit; - -webkit-font-smoothing: antialiased; - *margin-right: .3em; - content: "\f141"; - display: block; - position: absolute; - left: 50%; - margin-left: -3px; - top: 0; - height: 9px; - font-size: 10px; - color: rgba(255, 255, 255, 0.35); -} -#layout-sidenav .scroll-marker.before { - top: 0; -} -#layout-sidenav .scroll-marker.after { - bottom: 3px; -} -#layout-sidenav .scroll-marker.after:after { - top: 2px; -} -#layout-sidenav.scroll-before .scroll-marker.before { - display: block; -} -#layout-sidenav.scroll-after .scroll-marker.after { - display: block; -} #layout-sidenav.layout-sidenav ul.drag li:not(.active) a:hover, .touch #layout-sidenav.layout-sidenav li:not(.active) a:hover { color: rgba(255, 255, 255, 0.35) !important; diff --git a/modules/backend/assets/less/controls/simplelist.less b/modules/backend/assets/less/controls/simplelist.less index 989179b7f..ff90ad983 100644 --- a/modules/backend/assets/less/controls/simplelist.less +++ b/modules/backend/assets/less/controls/simplelist.less @@ -48,8 +48,11 @@ // .control-simplelist { - font-size: 13px; + padding: 20px 20px 2px 20px; + margin-bottom: @padding-standard; + background: @color-form-checkboxlist-background; + .border-radius(@border-radius-base); ul { padding-left: 15px; } @@ -71,7 +74,25 @@ } } - &.with-checkboxes {} + &.with-checkboxes { + li { + margin-top: -5px; + + &:first-child { + margin-top: 0; + } + + &:last-child { + div.custom-checkbox { + margin-bottom: 0; + + label { + margin-bottom: 5px; + } + } + } + } + } &.is-sortable { diff --git a/modules/backend/assets/less/core/variables.less b/modules/backend/assets/less/core/variables.less index 563056828..469755446 100644 --- a/modules/backend/assets/less/core/variables.less +++ b/modules/backend/assets/less/core/variables.less @@ -31,6 +31,7 @@ @color-sidebarnav-bg: #31495F; @color-sidebarnav-active-text: #ffffff; +@color-sidebarnav-active-bg: #1f99dc; @color-sidebarnav-active-icon: #ffffff; @color-sidebarnav-inactive-text: rgba(255,255,255,.35); @color-sidebarnav-inactive-icon: rgba(255,255,255,.35); diff --git a/modules/backend/assets/less/layout/layout.less b/modules/backend/assets/less/layout/layout.less index 08df8e380..365ed27cb 100644 --- a/modules/backend/assets/less/layout/layout.less +++ b/modules/backend/assets/less/layout/layout.less @@ -74,6 +74,7 @@ body { &.width-100 { width: 100px; } &.width-120 { width: 120px; } + &.width-140 { width: 140px; } &.width-200 { width: 200px; } &.width-300 { width: 300px; } diff --git a/modules/backend/assets/less/layout/sidenav.less b/modules/backend/assets/less/layout/sidenav.less index d4168a3c5..6b5100f1b 100644 --- a/modules/backend/assets/less/layout/sidenav.less +++ b/modules/backend/assets/less/layout/sidenav.less @@ -3,18 +3,21 @@ // -------------------------------------------------- #layout-sidenav { - .virtualFullHeight() { - content: ' '; + .sidenav-shadow-element() { + content: ''; position: absolute; height: 100%; top: 0; + right: 0; + width: 10px; + height: 100%; + .box-shadow(inset -5px 0 3px rgba(0,0,0,0.1)); } background-color: @color-sidebarnav-bg; position: absolute; height: 100%; width: 100%; - padding: 10px 0; .box-sizing(border-box); @@ -25,17 +28,26 @@ height: 100%; overflow: hidden; + &:after { + .sidenav-shadow-element(); + } + li { display: block; text-align: center; position: relative; a { - padding: 13px; + padding: 20px 13px; display: block; - font-size: 12px; + font-size: 15px; color: @color-sidebarnav-inactive-text; font-weight: normal; + position: relative; + + &:after { + .sidenav-shadow-element(); + } &:hover { text-decoration: none; @@ -55,6 +67,8 @@ } &.active a, a:hover { + background: @color-sidebarnav-active-bg; + color: @color-sidebarnav-active-text; i { color: @color-sidebarnav-active-icon; } } @@ -81,8 +95,6 @@ } } } - - .vertical-scroll-marker(@color-sidebarnav-inactive-icon); } #layout-sidenav.layout-sidenav ul.drag li:not(.active) a:hover, diff --git a/modules/backend/formwidgets/PermissionEditor.php b/modules/backend/formwidgets/PermissionEditor.php index a024dce7b..a7bc8c805 100644 --- a/modules/backend/formwidgets/PermissionEditor.php +++ b/modules/backend/formwidgets/PermissionEditor.php @@ -38,7 +38,7 @@ class PermissionEditor extends FormWidgetBase */ public function prepareVars() { - $this->vars['mode'] = $this->getControlMode(); + $this->vars['checkboxMode'] = $this->getControlMode() === 'checkbox'; $this->vars['permissions'] = BackendAuth::listTabbedPermissions(); $this->vars['baseFieldName'] = $this->formField->getName(); @@ -70,6 +70,7 @@ class PermissionEditor extends FormWidgetBase protected function loadAssets() { $this->addCss('css/permissioneditor.css', 'core'); + $this->addJs('js/permissioneditor.js', 'core'); } protected function getControlMode() diff --git a/modules/backend/formwidgets/permissioneditor/assets/css/permissioneditor.css b/modules/backend/formwidgets/permissioneditor/assets/css/permissioneditor.css index af3049327..3ac87d150 100644 --- a/modules/backend/formwidgets/permissioneditor/assets/css/permissioneditor.css +++ b/modules/backend/formwidgets/permissioneditor/assets/css/permissioneditor.css @@ -1,5 +1,6 @@ .permissioneditor { position: relative; + margin: 0 -25px; } .permissioneditor.control-disabled .permissions-overlay { position: absolute; @@ -34,12 +35,17 @@ padding: 10px 4px; vertical-align: top; border-bottom: 1px solid #ecf0f1; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } .permissioneditor table td.permission-value { text-align: center; } .permissioneditor table td.permission-name { font-size: 14px; + cursor: pointer; color: #555555; } .permissioneditor table td p.comment { @@ -49,13 +55,19 @@ .permissioneditor table td p.comment:empty { display: none; } +.permissioneditor table tr:hover td { + background: #4da7e8; +} +.permissioneditor table tr:hover td.permission-name { + color: #ffffff!important; +} .permissioneditor table th:first-child, .permissioneditor table td:first-child { - padding-left: 0; + padding-left: 25px; } .permissioneditor table th:last-child, .permissioneditor table td:last-child { - padding-right: 0; + padding-right: 5px; } .permissioneditor table .custom-radio, .permissioneditor table .custom-checkbox { @@ -72,7 +84,7 @@ .permissioneditor table .custom-checkbox label { padding: 0 0 0 14px; margin: 0; - top: 2px; + top: 0; } .permissioneditor table .custom-radio label span, .permissioneditor table .custom-checkbox label span { @@ -89,7 +101,9 @@ .permissioneditor table tr:first-child th { padding-top: 0; } +.permissioneditor table tr.disabled td.permission-name { + color: #AAA; +} .permissioneditor table tr.last-section-row td { border-bottom: none; - padding-bottom: 0; } diff --git a/modules/backend/formwidgets/permissioneditor/assets/js/permissioneditor.js b/modules/backend/formwidgets/permissioneditor/assets/js/permissioneditor.js new file mode 100644 index 000000000..d5716b369 --- /dev/null +++ b/modules/backend/formwidgets/permissioneditor/assets/js/permissioneditor.js @@ -0,0 +1,73 @@ ++function ($) { "use strict"; + + var Base = $.oc.foundation.base, + BaseProto = Base.prototype + + var PermissionEditor = function() { + Base.call(this) + + this.init() + } + + PermissionEditor.prototype = Object.create(BaseProto) + PermissionEditor.prototype.constructor = PermissionEditor + + PermissionEditor.prototype.init = function() { + $(document).on('click', '.permissioneditor table td.permission-name', this.proxy(this.onPermissionNameClick)) + $(document).on('click', '.permissioneditor table tr.mode-checkbox input[type=checkbox]', this.proxy(this.onPermissionCheckboxClick)) + $(document).on('click', '.permissioneditor table tr.mode-radio input[type=radio]', this.proxy(this.onPermissionRadioClick)) + } + + // EVENT HANDLERS + // ============================ + + PermissionEditor.prototype.onPermissionNameClick = function(ev) { + var $row = $(ev.target).closest('tr'), + $checkbox = $row.find('input[type=checkbox]') + + if ($checkbox.length) { + $checkbox.trigger('click') + } + else { + var $radios = $row.find('input[type=radio]') + + if ($radios.length != 3) { + return + } + + var nextIndex = 0 + for (var i=2; i>=0; i--) { + if ($radios.get(i).checked) { + nextIndex = i+1; + break + } + } + + if (nextIndex > 2) { + nextIndex = 0 + } + + $($radios.get(nextIndex)).trigger('click') + } + } + + PermissionEditor.prototype.onPermissionCheckboxClick = function(ev) { + var $row = $(ev.target).closest('tr') + + $row.toggleClass('disabled', !ev.target.checked) + } + + PermissionEditor.prototype.onPermissionRadioClick = function(ev) { + var $row = $(ev.target).closest('tr') + + $row.toggleClass('disabled', ev.target.value == -1) + } + + // INITIALIZATION + // ============================ + + $(document).ready(function(){ + new PermissionEditor() + }) + +}(window.jQuery); \ No newline at end of file diff --git a/modules/backend/formwidgets/permissioneditor/assets/less/permissioneditor.less b/modules/backend/formwidgets/permissioneditor/assets/less/permissioneditor.less index 1b1eb264e..7bd661a21 100644 --- a/modules/backend/formwidgets/permissioneditor/assets/less/permissioneditor.less +++ b/modules/backend/formwidgets/permissioneditor/assets/less/permissioneditor.less @@ -7,6 +7,8 @@ .permissioneditor { position: relative; + margin: 0 -(@padding-standard); + &.control-disabled { .permissions-overlay { position: absolute; @@ -40,14 +42,13 @@ font-size: 15px; text-align: center; } - - } td { padding: 10px 4px; vertical-align: top; border-bottom: 1px solid @color-permissioneditor-permission-border; + .user-select(none); &.permission-value{ text-align: center; @@ -55,6 +56,7 @@ &.permission-name { font-size: 14px; + cursor: pointer; color: @color-help-block-text; } @@ -68,13 +70,23 @@ } } + tr:hover { + td { + background: @color-list-hover-bg; + + &.permission-name { + color: #ffffff!important; + } + } + } + th, td { &:first-child { - padding-left: 0; + padding-left: @padding-standard; } &:last-child { - padding-right: 0; + padding-right: 5px; } } @@ -90,7 +102,7 @@ label { padding: 0 0 0 14px; margin: 0; - top: 2px; + top: 0; span { text-indent: -10000em; @@ -111,10 +123,15 @@ padding-top: 0; } + tr.disabled { + td.permission-name { + color: #AAA; + } + } + tr.last-section-row { td { border-bottom: none; - padding-bottom: 0; } } } diff --git a/modules/backend/formwidgets/permissioneditor/partials/_permissioneditor.htm b/modules/backend/formwidgets/permissioneditor/partials/_permissioneditor.htm index 5f33d3bcb..cd28edaf7 100644 --- a/modules/backend/formwidgets/permissioneditor/partials/_permissioneditor.htm +++ b/modules/backend/formwidgets/permissioneditor/partials/_permissioneditor.htm @@ -8,10 +8,12 @@
= e(trans($permission->comment)) ?>
= e(trans('backend::lang.list.setup_help')) ?>
+= e(trans('backend::lang.list.setup_help')) ?>
+
= e(trans('backend::lang.list.records_per_page_help')) ?>