From fe08236f2103b2b05ac27f18309de3e69010809b Mon Sep 17 00:00:00 2001 From: Mateusz Uzdowski Date: Thu, 22 Nov 2012 10:01:02 +1300 Subject: [PATCH] API Add action tabsets as a interface idiom. Introduces the concept of action tabsets - usage of TabSet and Tabs in between the action buttons to allow richer set of capabilities that can be offered to the user. Goes along with c8d0cdec99c95dbed3b58ebcc098cc9d22c58206 that implements a change to the CMS actions. --- admin/css/screen.css | 227 +++++++--- admin/images/btn-icon-s37c6548b54.png | Bin 21728 -> 0 bytes admin/images/btn-icon-s97372285ea.png | Bin 0 -> 22288 bytes admin/images/btn-icon/disk.png | Bin 0 -> 620 bytes admin/images/link_arrows.png | Bin 0 -> 342 bytes admin/images/sprites-32x32-se93fc83bf9.png | Bin 18954 -> 0 bytes admin/images/sprites-32x32-sf6890c994e.png | Bin 0 -> 19229 bytes .../sprites-32x32/arrow_down_darker.png | Bin 0 -> 155 bytes .../sprites-32x32/arrow_down_lighter.png | Bin 0 -> 155 bytes .../images/sprites-32x32/arrow_up_darker.png | Bin 0 -> 156 bytes .../images/sprites-32x32/arrow_up_lighter.png | Bin 0 -> 153 bytes admin/javascript/LeftAndMain.Content.js | 3 +- admin/javascript/LeftAndMain.EditForm.js | 12 +- admin/javascript/LeftAndMain.js | 24 +- admin/javascript/ssui.core.js | 10 +- admin/scss/_actionTabs.scss | 428 ++++++++++++++++++ admin/scss/_forms.scss | 51 ++- admin/scss/_menu.scss | 38 -- admin/scss/_mixins.scss | 72 +++ admin/scss/_style.scss | 23 +- admin/scss/_uitheme.scss | 6 +- admin/scss/_uitheme.scss.orig | 116 ----- admin/scss/screen.scss | 1 + css/AssetUploadField.css | 3 + css/GridField.css | 5 +- css/UploadField.css | 5 +- docs/en/howto/extend-cms-interface.md | 54 ++- javascript/TabSet.js | 114 +++++ scss/GridField.scss | 12 +- scss/UploadField.scss | 2 +- 30 files changed, 926 insertions(+), 280 deletions(-) delete mode 100644 admin/images/btn-icon-s37c6548b54.png create mode 100644 admin/images/btn-icon-s97372285ea.png create mode 100755 admin/images/btn-icon/disk.png create mode 100644 admin/images/link_arrows.png delete mode 100644 admin/images/sprites-32x32-se93fc83bf9.png create mode 100644 admin/images/sprites-32x32-sf6890c994e.png create mode 100644 admin/images/sprites-32x32/arrow_down_darker.png create mode 100644 admin/images/sprites-32x32/arrow_down_lighter.png create mode 100644 admin/images/sprites-32x32/arrow_up_darker.png create mode 100644 admin/images/sprites-32x32/arrow_up_lighter.png create mode 100644 admin/scss/_actionTabs.scss delete mode 100644 admin/scss/_uitheme.scss.orig diff --git a/admin/css/screen.css b/admin/css/screen.css index d9f0f04d2..c992891ee 100644 --- a/admin/css/screen.css +++ b/admin/css/screen.css @@ -32,9 +32,12 @@ If more variables exist in the future, consider creating a variables file.*/ /** ----------------------------------------------- Grid Units (px) We have a vertical rhythm that the grid is based off both x (=horizontal) and y (=vertical). All internal padding and margins are scaled to this and accounting for paragraphs ------------------------------------------------ */ /** ----------------------------------------------- Application Logo (CMS Logo) Must be 24px x 24px ------------------------------------------------ */ /** ----------------------------- Custom mixins ------------------------------ */ +/*Mixin used to generate slightly smaller text and forms +Used in side panels and action tabs +*/ /** ----------------------------- Sprite images ----------------------------- */ /** Helper SCSS file for generating sprites for the interface. */ -.btn-icon-sprite, .ui-state-default .btn-icon-accept, .ui-widget-content .btn-icon-accept, .ui-state-default .btn-icon-accept_disabled, .ui-widget-content .btn-icon-accept_disabled, .ui-state-default .btn-icon-add, .ui-widget-content .btn-icon-add, .ui-state-default .btn-icon-addMedia, .ui-widget-content .btn-icon-addMedia, .ui-state-default .btn-icon-add_disabled, .ui-widget-content .btn-icon-add_disabled, .ui-state-default .btn-icon-addpage, .ui-widget-content .btn-icon-addpage, .ui-state-default .btn-icon-addpage_disabled, .ui-widget-content .btn-icon-addpage_disabled, .ui-state-default .btn-icon-arrow-circle-135-left, .ui-widget-content .btn-icon-arrow-circle-135-left, .ui-state-default .btn-icon-arrow-circle-double, .ui-widget-content .btn-icon-arrow-circle-double, .ui-state-default .btn-icon-back, .ui-widget-content .btn-icon-back, .ui-state-default .btn-icon-back_disabled, .ui-widget-content .btn-icon-back_disabled, .ui-state-default .btn-icon-chain--arrow, .ui-widget-content .btn-icon-chain--arrow, .ui-state-default .btn-icon-chain--exclamation, .ui-widget-content .btn-icon-chain--exclamation, .ui-state-default .btn-icon-chain--minus, .ui-widget-content .btn-icon-chain--minus, .ui-state-default .btn-icon-chain--pencil, .ui-widget-content .btn-icon-chain--pencil, .ui-state-default .btn-icon-chain--plus, .ui-widget-content .btn-icon-chain--plus, .ui-state-default .btn-icon-chain-small, .ui-widget-content .btn-icon-chain-small, .ui-state-default .btn-icon-chain-unchain, .ui-widget-content .btn-icon-chain-unchain, .ui-state-default .btn-icon-chain, .ui-widget-content .btn-icon-chain, .ui-state-default .btn-icon-cross-circle, .ui-widget-content .btn-icon-cross-circle, .ui-state-default .btn-icon-cross-circle_disabled, .ui-widget-content .btn-icon-cross-circle_disabled, .ui-state-default .btn-icon-cross, .ui-widget-content .btn-icon-cross, .ui-state-default .btn-icon-decline, .ui-widget-content .btn-icon-decline, .ui-state-default .btn-icon-decline_disabled, .ui-widget-content .btn-icon-decline_disabled, .ui-state-default .btn-icon-delete, .ui-widget-content .btn-icon-delete, .ui-state-default .btn-icon-deleteLight, .ui-widget-content .btn-icon-deleteLight, .ui-state-default .btn-icon-document--pencil, .ui-widget-content .btn-icon-document--pencil, .ui-state-default .btn-icon-download-csv, .ui-widget-content .btn-icon-download-csv, .ui-state-default .btn-icon-drive-upload, .ui-widget-content .btn-icon-drive-upload, .ui-state-default .btn-icon-drive-upload_disabled, .ui-widget-content .btn-icon-drive-upload_disabled, .ui-state-default .btn-icon-grid_print, .ui-widget-content .btn-icon-grid_print, .ui-state-default .btn-icon-magnifier, .ui-widget-content .btn-icon-magnifier, .ui-state-default .btn-icon-minus-circle, .ui-widget-content .btn-icon-minus-circle, .ui-state-default .btn-icon-minus-circle_disabled, .ui-widget-content .btn-icon-minus-circle_disabled, .ui-state-default .btn-icon-navigation, .ui-widget-content .btn-icon-navigation, .ui-state-default .btn-icon-navigation_disabled, .ui-widget-content .btn-icon-navigation_disabled, .ui-state-default .btn-icon-network-cloud, .ui-widget-content .btn-icon-network-cloud, .ui-state-default .btn-icon-network-cloud_disabled, .ui-widget-content .btn-icon-network-cloud_disabled, .ui-state-default .btn-icon-pencil, .ui-widget-content .btn-icon-pencil, .ui-state-default .btn-icon-pencil_disabled, .ui-widget-content .btn-icon-pencil_disabled, .ui-state-default .btn-icon-plug-disconnect-prohibition, .ui-widget-content .btn-icon-plug-disconnect-prohibition, .ui-state-default .btn-icon-plug-disconnect-prohibition_disabled, .ui-widget-content .btn-icon-plug-disconnect-prohibition_disabled, .ui-state-default .btn-icon-preview, .ui-widget-content .btn-icon-preview, .ui-state-default .btn-icon-preview_disabled, .ui-widget-content .btn-icon-preview_disabled, .ui-state-default .btn-icon-settings, .ui-widget-content .btn-icon-settings, .ui-state-default .btn-icon-settings_disabled, .ui-widget-content .btn-icon-settings_disabled, .ui-state-default .btn-icon-unpublish, .ui-widget-content .btn-icon-unpublish, .ui-state-default .btn-icon-unpublish_disabled, .ui-widget-content .btn-icon-unpublish_disabled { background: url('../images/btn-icon-s37c6548b54.png') no-repeat; } +.btn-icon-sprite, .ui-state-default .btn-icon-accept, .ui-widget-content .btn-icon-accept, .ui-state-default .btn-icon-accept_disabled, .ui-widget-content .btn-icon-accept_disabled, .ui-state-default .btn-icon-add, .ui-widget-content .btn-icon-add, .ui-state-default .btn-icon-addMedia, .ui-widget-content .btn-icon-addMedia, .ui-state-default .btn-icon-add_disabled, .ui-widget-content .btn-icon-add_disabled, .ui-state-default .btn-icon-addpage, .ui-widget-content .btn-icon-addpage, .ui-state-default .btn-icon-addpage_disabled, .ui-widget-content .btn-icon-addpage_disabled, .ui-state-default .btn-icon-arrow-circle-135-left, .ui-widget-content .btn-icon-arrow-circle-135-left, .ui-state-default .btn-icon-arrow-circle-double, .ui-widget-content .btn-icon-arrow-circle-double, .ui-state-default .btn-icon-back, .ui-widget-content .btn-icon-back, .ui-state-default .btn-icon-back_disabled, .ui-widget-content .btn-icon-back_disabled, .ui-state-default .btn-icon-chain--arrow, .ui-widget-content .btn-icon-chain--arrow, .ui-state-default .btn-icon-chain--exclamation, .ui-widget-content .btn-icon-chain--exclamation, .ui-state-default .btn-icon-chain--minus, .ui-widget-content .btn-icon-chain--minus, .ui-state-default .btn-icon-chain--pencil, .ui-widget-content .btn-icon-chain--pencil, .ui-state-default .btn-icon-chain--plus, .ui-widget-content .btn-icon-chain--plus, .ui-state-default .btn-icon-chain-small, .ui-widget-content .btn-icon-chain-small, .ui-state-default .btn-icon-chain-unchain, .ui-widget-content .btn-icon-chain-unchain, .ui-state-default .btn-icon-chain, .ui-widget-content .btn-icon-chain, .ui-state-default .btn-icon-cross-circle, .ui-widget-content .btn-icon-cross-circle, .ui-state-default .btn-icon-cross-circle_disabled, .ui-widget-content .btn-icon-cross-circle_disabled, .ui-state-default .btn-icon-cross, .ui-widget-content .btn-icon-cross, .ui-state-default .btn-icon-decline, .ui-widget-content .btn-icon-decline, .ui-state-default .btn-icon-decline_disabled, .ui-widget-content .btn-icon-decline_disabled, .ui-state-default .btn-icon-delete, .ui-widget-content .btn-icon-delete, .ui-state-default .btn-icon-deleteLight, .ui-widget-content .btn-icon-deleteLight, .ui-state-default .btn-icon-disk, .ui-widget-content .btn-icon-disk, .ui-state-default .btn-icon-document--pencil, .ui-widget-content .btn-icon-document--pencil, .ui-state-default .btn-icon-download-csv, .ui-widget-content .btn-icon-download-csv, .ui-state-default .btn-icon-drive-upload, .ui-widget-content .btn-icon-drive-upload, .ui-state-default .btn-icon-drive-upload_disabled, .ui-widget-content .btn-icon-drive-upload_disabled, .ui-state-default .btn-icon-grid_print, .ui-widget-content .btn-icon-grid_print, .ui-state-default .btn-icon-magnifier, .ui-widget-content .btn-icon-magnifier, .ui-state-default .btn-icon-minus-circle, .ui-widget-content .btn-icon-minus-circle, .ui-state-default .btn-icon-minus-circle_disabled, .ui-widget-content .btn-icon-minus-circle_disabled, .ui-state-default .btn-icon-navigation, .ui-widget-content .btn-icon-navigation, .ui-state-default .btn-icon-navigation_disabled, .ui-widget-content .btn-icon-navigation_disabled, .ui-state-default .btn-icon-network-cloud, .ui-widget-content .btn-icon-network-cloud, .ui-state-default .btn-icon-network-cloud_disabled, .ui-widget-content .btn-icon-network-cloud_disabled, .ui-state-default .btn-icon-pencil, .ui-widget-content .btn-icon-pencil, .ui-state-default .btn-icon-pencil_disabled, .ui-widget-content .btn-icon-pencil_disabled, .ui-state-default .btn-icon-plug-disconnect-prohibition, .ui-widget-content .btn-icon-plug-disconnect-prohibition, .ui-state-default .btn-icon-plug-disconnect-prohibition_disabled, .ui-widget-content .btn-icon-plug-disconnect-prohibition_disabled, .ui-state-default .btn-icon-preview, .ui-widget-content .btn-icon-preview, .ui-state-default .btn-icon-preview_disabled, .ui-widget-content .btn-icon-preview_disabled, .ui-state-default .btn-icon-settings, .ui-widget-content .btn-icon-settings, .ui-state-default .btn-icon-settings_disabled, .ui-widget-content .btn-icon-settings_disabled, .ui-state-default .btn-icon-unpublish, .ui-widget-content .btn-icon-unpublish, .ui-state-default .btn-icon-unpublish_disabled, .ui-widget-content .btn-icon-unpublish_disabled { background: url('../images/btn-icon-s97372285ea.png') no-repeat; } .ui-state-default .btn-icon-accept, .ui-widget-content .btn-icon-accept { background-position: 0 -96px; } .ui-state-default .btn-icon-accept_disabled, .ui-widget-content .btn-icon-accept_disabled { background-position: 0 -80px; } @@ -47,14 +50,14 @@ If more variables exist in the future, consider creating a variables file.*/ .ui-state-default .btn-icon-arrow-circle-double, .ui-widget-content .btn-icon-arrow-circle-double { background-position: 0 -324px; } .ui-state-default .btn-icon-back, .ui-widget-content .btn-icon-back { background-position: 0 -356px; } .ui-state-default .btn-icon-back_disabled, .ui-widget-content .btn-icon-back_disabled { background-position: 0 -16px; } -.ui-state-default .btn-icon-chain--arrow, .ui-widget-content .btn-icon-chain--arrow { background-position: 0 -708px; } +.ui-state-default .btn-icon-chain--arrow, .ui-widget-content .btn-icon-chain--arrow { background-position: 0 -724px; } .ui-state-default .btn-icon-chain--exclamation, .ui-widget-content .btn-icon-chain--exclamation { background-position: 0 -500px; } -.ui-state-default .btn-icon-chain--minus, .ui-widget-content .btn-icon-chain--minus { background-position: 0 -724px; } +.ui-state-default .btn-icon-chain--minus, .ui-widget-content .btn-icon-chain--minus { background-position: 0 -740px; } .ui-state-default .btn-icon-chain--pencil, .ui-widget-content .btn-icon-chain--pencil { background-position: 0 -660px; } -.ui-state-default .btn-icon-chain--plus, .ui-widget-content .btn-icon-chain--plus { background-position: 0 -692px; } -.ui-state-default .btn-icon-chain-small, .ui-widget-content .btn-icon-chain-small { background-position: 0 -756px; } +.ui-state-default .btn-icon-chain--plus, .ui-widget-content .btn-icon-chain--plus { background-position: 0 -708px; } +.ui-state-default .btn-icon-chain-small, .ui-widget-content .btn-icon-chain-small { background-position: 0 -772px; } .ui-state-default .btn-icon-chain-unchain, .ui-widget-content .btn-icon-chain-unchain { background-position: 0 -468px; } -.ui-state-default .btn-icon-chain, .ui-widget-content .btn-icon-chain { background-position: 0 -740px; } +.ui-state-default .btn-icon-chain, .ui-widget-content .btn-icon-chain { background-position: 0 -756px; } .ui-state-default .btn-icon-cross-circle, .ui-widget-content .btn-icon-cross-circle { background-position: 0 -436px; } .ui-state-default .btn-icon-cross-circle_disabled, .ui-widget-content .btn-icon-cross-circle_disabled { background-position: 0 -548px; } .ui-state-default .btn-icon-cross, .ui-widget-content .btn-icon-cross { background-position: 0 -276px; } @@ -62,6 +65,7 @@ If more variables exist in the future, consider creating a variables file.*/ .ui-state-default .btn-icon-decline_disabled, .ui-widget-content .btn-icon-decline_disabled { background-position: 0 -192px; } .ui-state-default .btn-icon-delete, .ui-widget-content .btn-icon-delete { background-position: 0 -452px; } .ui-state-default .btn-icon-deleteLight, .ui-widget-content .btn-icon-deleteLight { background-position: 0 -291px; } +.ui-state-default .btn-icon-disk, .ui-widget-content .btn-icon-disk { background-position: 0 -676px; } .ui-state-default .btn-icon-document--pencil, .ui-widget-content .btn-icon-document--pencil { background-position: 0 -532px; } .ui-state-default .btn-icon-download-csv, .ui-widget-content .btn-icon-download-csv { background-position: 0 -48px; } .ui-state-default .btn-icon-drive-upload, .ui-widget-content .btn-icon-drive-upload { background-position: 0 -404px; } @@ -73,7 +77,7 @@ If more variables exist in the future, consider creating a variables file.*/ .ui-state-default .btn-icon-navigation, .ui-widget-content .btn-icon-navigation { background-position: 0 -372px; } .ui-state-default .btn-icon-navigation_disabled, .ui-widget-content .btn-icon-navigation_disabled { background-position: 0 -420px; } .ui-state-default .btn-icon-network-cloud, .ui-widget-content .btn-icon-network-cloud { background-position: 0 -596px; } -.ui-state-default .btn-icon-network-cloud_disabled, .ui-widget-content .btn-icon-network-cloud_disabled { background-position: 0 -676px; } +.ui-state-default .btn-icon-network-cloud_disabled, .ui-widget-content .btn-icon-network-cloud_disabled { background-position: 0 -692px; } .ui-state-default .btn-icon-pencil, .ui-widget-content .btn-icon-pencil { background-position: 0 -228px; } .ui-state-default .btn-icon-pencil_disabled, .ui-widget-content .btn-icon-pencil_disabled { background-position: 0 -580px; } .ui-state-default .btn-icon-plug-disconnect-prohibition, .ui-widget-content .btn-icon-plug-disconnect-prohibition { background-position: 0 -244px; } @@ -125,8 +129,8 @@ body, html { font-size: 12px; line-height: 16px; font-family: Arial, sans-serif; .ui-widget-header .ui-dialog-title { padding: 6px 0; text-shadow: #ced7dc 1px 1px 0; } .ui-widget-header a.ui-dialog-titlebar-close { position: absolute; top: -8px; right: -15px; width: 30px; height: 30px; z-index: 100000; } .ui-widget-header a.ui-state-hover { border-color: transparent; background: transparent; } -.ui-widget-header a.ui-state-hover .ui-icon-closethick { background: url('../images/sprites-32x32-se93fc83bf9.png') 0 -216px no-repeat; } -.ui-widget-header .ui-icon-closethick { background: url('../images/sprites-32x32-se93fc83bf9.png') 0 -318px no-repeat; width: 30px; height: 30px; } +.ui-widget-header a.ui-state-hover .ui-icon-closethick { background: url('../images/sprites-32x32-sf6890c994e.png') 0 -216px no-repeat; } +.ui-widget-header .ui-icon-closethick { background: url('../images/sprites-32x32-sf6890c994e.png') 0 -318px no-repeat; width: 30px; height: 30px; } .ui-state-hover { cursor: pointer; } @@ -192,21 +196,27 @@ form.small .field input.text, form.small .field textarea, form.small .field sele .field.remove-splitter { border-bottom: none; box-shadow: none; } /** ---------------------------------------------------- Buttons ---------------------------------------------------- */ +.cms .button-no-style button, .cms .south .Actions .rise-up.ss-ui-action-tabset .ui-tabs-panel button { background: none; border: none; display: block; margin: 0; outline: none; color: #0073c1; font-weight: normal; width: 210px; /* same as width of surrounding panel */ text-align: left; -webkit-border-radius: 0; -moz-border-radius: 0; -ms-border-radius: 0; -o-border-radius: 0; border-radius: 0; text-shadow: none; margin-left: -10px; } +.cms .button-no-style button.ss-ui-action-destructive, .cms .south .Actions .rise-up.ss-ui-action-tabset .ui-tabs-panel button.ss-ui-action-destructive { color: #c22730; } +.cms .button-no-style button span, .cms .south .Actions .rise-up.ss-ui-action-tabset .ui-tabs-panel button span { padding-left: 0; padding-right: 0; } +.cms .button-no-style button:hover, .cms .south .Actions .rise-up.ss-ui-action-tabset .ui-tabs-panel button:hover, .cms .button-no-style button:focus, .cms .south .Actions .rise-up.ss-ui-action-tabset .ui-tabs-panel button:focus, .cms .button-no-style button:active, .cms .south .Actions .rise-up.ss-ui-action-tabset .ui-tabs-panel button:active { outline: none; background: none; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; border: none; } .cms .Actions > *, .cms .cms-actions-row > * { display: block; float: left; margin-right: 8px; } .cms .Actions > *:last-child, .cms .cms-actions-row > *:last-child { margin-right: 0; } -.cms .Actions { min-height: 30px; overflow: visible; padding: 8px 12px; } +.cms .Actions { min-height: 30px; overflow: auto; padding: 8px 12px; } .cms .south .Actions, .cms .ui-tabs-panel .Actions, .cms .ui-tabs-panel iframe .Actions { padding: 0; } .cms input.loading, .cms button.loading, .cms input.ui-state-default.loading, .cms .ui-widget-content input.ui-state-default.loading, .cms .ui-widget-header input.ui-state-default.loading { color: #525252; border-color: #d5d3d3; cursor: default; } .cms input.loading .ui-icon, .cms button.loading .ui-icon, .cms input.ui-state-default.loading .ui-icon, .cms .ui-widget-content input.ui-state-default.loading .ui-icon, .cms .ui-widget-header input.ui-state-default.loading .ui-icon { background: transparent url(../../images/network-save.gif) no-repeat 0 0; } .cms input.loading.ss-ui-action-constructive .ui-icon, .cms button.loading.ss-ui-action-constructive .ui-icon { background: transparent url(../../images/network-save-constructive.gif) no-repeat 0 0; } -.cms .ss-ui-button { margin-top: 0px; font-weight: bold; text-decoration: none; line-height: 16px; color: #393939; border: 1px solid #c0c0c2; border-bottom: 1px solid #a6a6a9; cursor: pointer; background-color: #e6e6e6; white-space: nowrap; background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2Q5ZDlkOSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #d9d9d9)); background: -webkit-linear-gradient(#ffffff, #d9d9d9); background: -moz-linear-gradient(#ffffff, #d9d9d9); background: -o-linear-gradient(#ffffff, #d9d9d9); background: linear-gradient(#ffffff, #d9d9d9); text-shadow: white 0 1px 1px; /* constructive */ /* destructive */ } +.cms .ss-ui-button { font-size: 12px; margin-top: 0px; padding: 5px 10px; font-weight: bold; text-decoration: none; line-height: 16px; color: #393939; border: 1px solid #c0c0c2; border-bottom: 1px solid #a6a6a9; cursor: pointer; background-color: #e6e6e6; white-space: nowrap; background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2Q5ZDlkOSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #d9d9d9)); background: -webkit-linear-gradient(#ffffff, #d9d9d9); background: -moz-linear-gradient(#ffffff, #d9d9d9); background: -o-linear-gradient(#ffffff, #d9d9d9); background: linear-gradient(#ffffff, #d9d9d9); text-shadow: white 0 1px 1px; /* constructive */ /* destructive */ } +.cms .ss-ui-button .ui-icon, .cms .ss-ui-button .ui-button-text { display: inline-block; line-height: 16px; padding: 0; } +.cms .ss-ui-button .ui-icon { width: 16px; padding: 0 2px; position: relative; left: -2px; margin-top: 0; top: 0; height: 16px; float: left; } .cms .ss-ui-button.ui-state-hover, .cms .ss-ui-button:hover { text-decoration: none; background-color: white; background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2U2ZTZlNiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #e6e6e6)); background: -webkit-linear-gradient(#ffffff, #e6e6e6); background: -moz-linear-gradient(#ffffff, #e6e6e6); background: -o-linear-gradient(#ffffff, #e6e6e6); background: linear-gradient(#ffffff, #e6e6e6); -webkit-box-shadow: 0 0 5px #b3b3b3; -moz-box-shadow: 0 0 5px #b3b3b3; box-shadow: 0 0 5px #b3b3b3; } .cms .ss-ui-button:active, .cms .ss-ui-button:focus, .cms .ss-ui-button.ui-state-active, .cms .ss-ui-button.ui-state-focus { border: 1px solid #b3b3b3; background-color: white; background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2U2ZTZlNiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #e6e6e6)); background: -webkit-linear-gradient(#ffffff, #e6e6e6); background: -moz-linear-gradient(#ffffff, #e6e6e6); background: -o-linear-gradient(#ffffff, #e6e6e6); background: linear-gradient(#ffffff, #e6e6e6); -webkit-box-shadow: 0 0 5px #b3b3b3 inset; -moz-box-shadow: 0 0 5px #b3b3b3 inset; box-shadow: 0 0 5px #b3b3b3 inset; } .cms .ss-ui-button.ss-ui-action-constructive { text-shadow: none; font-weight: bold; color: white; border-color: #1f9433; border-bottom-color: #166a24; background-color: #1f9433; background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzkzYmU0MiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzFmOTQzMyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #93be42), color-stop(100%, #1f9433)); background: -webkit-linear-gradient(#93be42, #1f9433); background: -moz-linear-gradient(#93be42, #1f9433); background: -o-linear-gradient(#93be42, #1f9433); background: linear-gradient(#93be42, #1f9433); text-shadow: #1c872f 0 -1px -1px; } .cms .ss-ui-button.ss-ui-action-constructive.ui-state-hover, .cms .ss-ui-button.ss-ui-action-constructive:hover { border-color: #166a24; background-color: #1f9433; background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2E0Y2EzYSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzIzYTkzYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #a4ca3a), color-stop(100%, #23a93a)); background: -webkit-linear-gradient(#a4ca3a, #23a93a); background: -moz-linear-gradient(#a4ca3a, #23a93a); background: -o-linear-gradient(#a4ca3a, #23a93a); background: linear-gradient(#a4ca3a, #23a93a); } .cms .ss-ui-button.ss-ui-action-constructive:active, .cms .ss-ui-button.ss-ui-action-constructive:focus, .cms .ss-ui-button.ss-ui-action-constructive.ui-state-active, .cms .ss-ui-button.ss-ui-action-constructive.ui-state-focus { background-color: #1d8c30; -webkit-box-shadow: inset 0 1px 3px #17181a, 0 1px 0 rgba(255, 255, 255, 0.6); -moz-box-shadow: inset 0 1px 3px #17181a, 0 1px 0 rgba(255, 255, 255, 0.6); box-shadow: inset 0 1px 3px #17181a, 0 1px 0 rgba(255, 255, 255, 0.6); } .cms .ss-ui-button.ss-ui-action-destructive { color: red; background-color: #e6e6e6; } -.cms .ss-ui-button.ss-ui-button-small .ui-button-text { padding: 2px 2px; font-size: 10px; } +.cms .ss-ui-button.ss-ui-button-small .ui-button-text { font-size: 10px; } .cms .ss-ui-button.ui-state-highlight { background-color: #e6e6e6; border: 1px solid #708284; } .cms .ss-ui-button.ss-ui-action-minor { background: none; border: 0; color: #393939; text-decoration: underline; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .cms .ss-ui-button.ss-ui-action-minor:hover { text-decoration: none; color: #1f1f1f; } @@ -338,9 +348,7 @@ body.cms { overflow: hidden; } .cms strong { font-weight: bold; } /** -------------------------------------------- Helpers -------------------------------------------- */ -.cms-helper-hide-actions .Actions { display: none; } - -.hide { display: none; } +.hide, .cms-helper-hide-actions .Actions { display: none; } /** -------------------------------------------- Panels Styles -------------------------------------------- */ .cms-container { height: 100%; /*background: $tab-panel-texture-background;*/ background: #eceff1; } @@ -388,6 +396,7 @@ body.cms { overflow: hidden; } .ui-tabs .ui-tabs-nav li.cms-tabset-icon.gallery.ui-state-active a { background: url('../images/sprites-64x64-s88957ee578.png') 0 -54px no-repeat; } .ui-tabs .ui-tabs-nav li.cms-tabset-icon.edit.ui-state-active a { background: url('../images/sprites-64x64-s88957ee578.png') 0 -404px no-repeat; } .ui-tabs .ui-tabs-nav li.cms-tabset-icon.search.ui-state-active a { background: url('../images/sprites-64x64-s88957ee578.png') 0 -104px no-repeat; } +.ui-tabs .cms-edit-form, .ui-tabs .cms-content-fields { /*not sure if .cms-content-fields effects other areas*/ } .ui-tabs .cms-edit-form .cms-panel-padded, .ui-tabs .cms-content-fields .cms-panel-padded { /* Has padded area inside it */ padding: 0; margin: 0; } .ui-tabs .cms-edit-form .ui-tabs-panel, .ui-tabs .cms-edit-form .ss-gridfield, .ui-tabs .cms-content-fields .ui-tabs-panel, .ui-tabs .cms-content-fields .ss-gridfield { margin: 12px; padding: 0 0 12px; } .ui-tabs .cms-edit-form .ui-tabs-panel .ss-gridfield, .ui-tabs .cms-edit-form .ss-gridfield .ss-gridfield, .ui-tabs .cms-content-fields .ui-tabs-panel .ss-gridfield, .ui-tabs .cms-content-fields .ss-gridfield .ss-gridfield { /* Files area & inside second level tabs */ padding: 0; /* should be zero ideally */ margin: 0 0 12px; } @@ -466,7 +475,7 @@ p.message { margin-bottom: 12px; } #PageType ul li .description { font-style: italic; } /** -------------------------------------------- Content toolbar -------------------------------------------- */ -.cms-content-toolbar { min-height: 29px; display: block; margin: 0 0 15px 0; border-bottom: 1px solid #d0d3d5; -webkit-box-shadow: 0 1px 0 rgba(248, 248, 248, 0.9); -moz-box-shadow: 0 1px 0 rgba(248, 248, 248, 0.9); -o-box-shadow: 0 1px 0 rgba(248, 248, 248, 0.9); box-shadow: 0 1px 0 rgba(248, 248, 248, 0.9); *zoom: 1; /* smaller treedropdown */ } +.cms-content-toolbar { min-height: 29px; display: block; margin: 0 0 15px 0; padding-bottom: 9px; border-bottom: 1px solid #d0d3d5; -webkit-box-shadow: 0 1px 0 rgba(248, 248, 248, 0.9); -moz-box-shadow: 0 1px 0 rgba(248, 248, 248, 0.9); -o-box-shadow: 0 1px 0 rgba(248, 248, 248, 0.9); box-shadow: 0 1px 0 rgba(248, 248, 248, 0.9); *zoom: 1; /* smaller treedropdown */ } .cms-content-toolbar:after { content: "\0020"; display: block; height: 0; clear: both; overflow: hidden; visibility: hidden; } .cms-content-toolbar .cms-tree-view-modes { float: right; padding-top: 5px; } .cms-content-toolbar .cms-tree-view-modes * { display: inline-block; } @@ -649,7 +658,7 @@ body.cms-dialog { overflow: auto; background: url("../images/textures/bg_cms_mai /** -------------------------------------------- Step labels -------------------------------------------- */ .step-label > * { display: inline-block; vertical-align: top; } .step-label .flyout { height: 18px; font-size: 14px; font-weight: bold; -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; background-color: #667980; padding: 4px 3px 4px 6px; text-align: center; text-shadow: none; color: #fff; } -.step-label .arrow { height: 26px; width: 10px; background: url('../images/sprites-32x32-se93fc83bf9.png') 0 -256px no-repeat; margin-right: 4px; } +.step-label .arrow { height: 26px; width: 10px; background: url('../images/sprites-32x32-sf6890c994e.png') 0 -256px no-repeat; margin-right: 4px; } .step-label .title { height: 18px; padding: 4px; } /** -------------------------------------------- Item Edit Form -------------------------------------------- */ @@ -670,7 +679,6 @@ form.small .cms-file-info-data .field .middleColumn { margin-left: 120px; } /** -------------------------------------------- Users Members Admin -------------------------------------------- */ .members_grid span button#action_gridfield_relationfind { display: none; } .members_grid p button#action_export span.btn-icon-download-csv { height: 17px; } -.members_grid p button#action_export .ui-button-text { padding-left: 26px; } /** Import forms */ form.import-form ul { list-style: disc; } @@ -694,10 +702,10 @@ form.import-form label.left { width: 250px; } /** -------------------------------------------- Buttons for FileUpload -------------------------------------------- */ .ss-uploadfield-item-edit-all .ui-button-text { padding-right: 0; } -.toggle-details-icon { background: url('../images/sprites-32x32-se93fc83bf9.png') 0 -433px no-repeat; } -.ss-uploadfield-item-edit-all .toggle-details-icon { background: url('../images/sprites-32x32-se93fc83bf9.png') 0 -375px no-repeat; display: inline-block; width: 8px; height: 8px; padding-left: 5px; } -.toggle-details-icon.opened { background: url('../images/sprites-32x32-se93fc83bf9.png') 0 -1121px no-repeat; } -.ss-uploadfield-item-edit-all .toggle-details-icon.opened { background: url('../images/sprites-32x32-se93fc83bf9.png') 0 -359px no-repeat; } +.toggle-details-icon { background: url('../images/sprites-32x32-sf6890c994e.png') 0 -433px no-repeat; } +.ss-uploadfield-item-edit-all .toggle-details-icon { background: url('../images/sprites-32x32-sf6890c994e.png') 0 -375px no-repeat; display: inline-block; width: 8px; height: 8px; padding-left: 5px; } +.toggle-details-icon.opened { background: url('../images/sprites-32x32-sf6890c994e.png') 0 -1121px no-repeat; } +.ss-uploadfield-item-edit-all .toggle-details-icon.opened { background: url('../images/sprites-32x32-sf6890c994e.png') 0 -359px no-repeat; } /** -------------------------------------------- Hide preview toggle link by default. May be shown in IE7 stylesheet and forced to show with js if needed -------------------------------------------- */ .cms .Actions > .cms-preview-toggle-link, .cms .cms-navigator > .cms-preview-toggle-link { display: none; } @@ -812,7 +820,7 @@ li.class-ErrorPage > a a .jstree-pageicon { background-position: 0 -112px; } .cms-logo span { font-weight: bold; font-size: 12px; line-height: 16px; padding: 2px 0; margin-left: 30px; } .cms-login-status { border-top: 1px solid #19435c; padding: 12px 0 17px; line-height: 16px; font-size: 11px; } -.cms-login-status .logout-link { display: inline-block; height: 16px; width: 16px; float: left; margin: 0 8px 0 5px; background: url('../images/sprites-32x32-se93fc83bf9.png') 0 -292px no-repeat; text-indent: -9999em; } +.cms-login-status .logout-link { display: inline-block; height: 16px; width: 16px; float: left; margin: 0 8px 0 5px; background: url('../images/sprites-32x32-sf6890c994e.png') 0 -292px no-repeat; text-indent: -9999em; } .cms-menu { z-index: 80; background: #b0bec7; width: 160px; -webkit-box-shadow: rgba(0, 0, 0, 0.9) 0 0 3px; -moz-box-shadow: rgba(0, 0, 0, 0.9) 0 0 3px; box-shadow: rgba(0, 0, 0, 0.9) 0 0 3px; } .cms-menu a { text-decoration: none; } @@ -836,12 +844,12 @@ li.class-ErrorPage > a a .jstree-pageicon { background-position: 0 -112px; } .cms-menu-list li a .icon { display: inline-block; float: left; margin: 4px 10px 0 4px; filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70); opacity: 0.7; } .cms-menu-list li a .text { display: inline-block; float: left; } .cms-menu-list li a .toggle-children { display: inline-block; float: right; width: 20px; height: 100%; cursor: pointer; } -.cms-menu-list li a .toggle-children .toggle-children-icon { display: inline-block; width: 8px; height: 8px; background: url('../images/sprites-32x32-se93fc83bf9.png') 0 -375px no-repeat; vertical-align: middle; } -.cms-menu-list li a .toggle-children.opened .toggle-children-icon { background: url('../images/sprites-32x32-se93fc83bf9.png') 0 -359px no-repeat; } +.cms-menu-list li a .toggle-children .toggle-children-icon { display: inline-block; width: 8px; height: 8px; background: url('../images/sprites-32x32-sf6890c994e.png') 0 -375px no-repeat; vertical-align: middle; } +.cms-menu-list li a .toggle-children.opened .toggle-children-icon { background: url('../images/sprites-32x32-sf6890c994e.png') 0 -359px no-repeat; } .cms-menu-list li ul li a { border-top: 1px solid #b6c3cb; } .cms-menu-list li.current a { color: white; text-shadow: #1e5270 0 -1px 0; border-top: 1px solid #55a4d2; border-bottom: 1px solid #236184; background-color: #338dc1; background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzMzOGRjMSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzI4NzA5OSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #338dc1), color-stop(100%, #287099)); background-image: -webkit-linear-gradient(#338dc1, #287099); background-image: -moz-linear-gradient(#338dc1, #287099); background-image: -o-linear-gradient(#338dc1, #287099); background-image: linear-gradient(#338dc1, #287099); } -.cms-menu-list li.current a .toggle-children .toggle-children-icon { background: url('../images/sprites-32x32-se93fc83bf9.png') 0 -433px no-repeat; } -.cms-menu-list li.current a .toggle-children.opened .toggle-children-icon { background: url('../images/sprites-32x32-se93fc83bf9.png') 0 -1121px no-repeat; } +.cms-menu-list li.current a .toggle-children .toggle-children-icon { background: url('../images/sprites-32x32-sf6890c994e.png') 0 -433px no-repeat; } +.cms-menu-list li.current a .toggle-children.opened .toggle-children-icon { background: url('../images/sprites-32x32-sf6890c994e.png') 0 -1121px no-repeat; } .cms-menu-list li.current ul { border-top: none; display: block; } .cms-menu-list li.current li { background-color: #287099; } .cms-menu-list li.current li a { font-size: 11px; padding: 0 10px 0 40px; height: 32px; line-height: 32px; color: #e2f0f7; background: none; border-top: 1px solid #2f81b1; border-bottom: 1px solid #1e5270; } @@ -850,44 +858,7 @@ li.class-ErrorPage > a a .jstree-pageicon { background-position: 0 -112px; } .cms-menu-list li.current li.current { background: #2e7ead; border-top: 1px solid #2e7ead; border-top: none; } .cms-menu-list li.current li.current a { font-weight: bold; color: white; } .cms-menu-list li.current li.first a { border-top: none; } -.cms-menu-list li ul.collapse { display: none; /* // To specific - was overriding collapsed-flyout styles -#Menu-CMSPagesController { - a { - background-image:none; - font-size: 11px; - padding: 0 10px 0 40px; - height: 32px; - line-height: 32px; - } - } - #Menu-CMSPageAddController { - a { - background-image:none; - font-size: 11px; - padding: 0 10px 0 40px; - height: 32px; - line-height: 32px; - } - } - #Menu-AssetAdmin { - a { - background-image:none; - font-size: 11px; - padding: 0 10px 0 40px; - height: 32px; - line-height: 32px; - } - } - #Menu-CMSFileAddController { - a { - background-image:none; - font-size: 11px; - padding: 0 10px 0 40px; - height: 32px; - line-height: 32px; - } - } -*/ } +.cms-menu-list li ul.collapse { display: none; } .cms-menu-list li ul.collapse li a { background-image: none; font-size: 11px; padding: 0 10px 0 40px; height: 32px; line-height: 32px; } .cms-menu-list li ul.collapsed-flyout { display: block; } .cms-menu-list li ul.collapsed-flyout li a { font-size: 11px; padding: 0 10px 0 16px; height: 32px; line-height: 32px; } @@ -901,14 +872,14 @@ li.class-ErrorPage > a a .jstree-pageicon { background-position: 0 -112px; } .cms-content-controls.cms-preview-controls { z-index: 1; background: #eceff1; height: 30px; /* should be set in js Layout to match page actions */ padding: 12px 12px; } .cms-content-controls .icon-view, .cms-content-controls .preview-selector.dropdown a.chzn-single { white-space: nowrap; } .cms-content-controls .icon-view:before, .cms-content-controls .preview-selector.dropdown a.chzn-single:before { display: inline-block; float: left; content: ''; width: 23px; height: 17px; overflow: hidden; } -.cms-content-controls .icon-auto:before { background: url('../images/sprites-32x32-se93fc83bf9.png') 0 -108px no-repeat; } -.cms-content-controls .icon-desktop:before { background: url('../images/sprites-32x32-se93fc83bf9.png') 0 -81px no-repeat; } -.cms-content-controls .icon-tablet:before { background: url('../images/sprites-32x32-se93fc83bf9.png') 0 -162px no-repeat; } -.cms-content-controls .icon-mobile:before { background: url('../images/sprites-32x32-se93fc83bf9.png') 0 -189px no-repeat; } -.cms-content-controls .icon-split:before { background: url('../images/sprites-32x32-se93fc83bf9.png') 0 -135px no-repeat; } -.cms-content-controls .icon-edit:before { background: url('../images/sprites-32x32-se93fc83bf9.png') 0 -27px no-repeat; } -.cms-content-controls .icon-preview:before { background: url('../images/sprites-32x32-se93fc83bf9.png') 0 0 no-repeat; } -.cms-content-controls .icon-window:before { background: url('../images/sprites-32x32-se93fc83bf9.png') 0 -54px no-repeat; } +.cms-content-controls .icon-auto:before { background: url('../images/sprites-32x32-sf6890c994e.png') 0 -108px no-repeat; } +.cms-content-controls .icon-desktop:before { background: url('../images/sprites-32x32-sf6890c994e.png') 0 -81px no-repeat; } +.cms-content-controls .icon-tablet:before { background: url('../images/sprites-32x32-sf6890c994e.png') 0 -162px no-repeat; } +.cms-content-controls .icon-mobile:before { background: url('../images/sprites-32x32-sf6890c994e.png') 0 -189px no-repeat; } +.cms-content-controls .icon-split:before { background: url('../images/sprites-32x32-sf6890c994e.png') 0 -135px no-repeat; } +.cms-content-controls .icon-edit:before { background: url('../images/sprites-32x32-sf6890c994e.png') 0 -27px no-repeat; } +.cms-content-controls .icon-preview:before { background: url('../images/sprites-32x32-sf6890c994e.png') 0 0 no-repeat; } +.cms-content-controls .icon-window:before { background: url('../images/sprites-32x32-sf6890c994e.png') 0 -54px no-repeat; } .cms-content-controls .cms-navigator { width: 100%; } .cms-content-controls .preview-selector.dropdown a.chzn-single { text-indent: -200px; } .cms-content-controls .preview-selector { float: right; border-bottom: none; position: relative; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; margin: 3px 0 0 4px; padding: 0; height: 28px; } @@ -966,6 +937,116 @@ li.class-ErrorPage > a a .jstree-pageicon { background-position: 0 -112px; } .cms-preview.tabletLandscape .preview-scroll .preview-device-outer .preview-device-inner { -webkit-transition: all 0.3s ease-out; -webkit-transition-delay: 1s; -moz-transition: all 0.3s ease-out 1s; -o-transition: all 0.3s ease-out 1s; transition: all 0.3s ease-out 1s; width: 1039px; } .cms-preview.desktop .preview-scroll .preview-device-outer { -webkit-transition: all 0.3s ease-out; -webkit-transition-delay: 1s; -moz-transition: all 0.3s ease-out 1s; -o-transition: all 0.3s ease-out 1s; transition: all 0.3s ease-out 1s; height: 800px; margin: 0 auto; width: 1024px; } +/******************************************** + +Defines the styles for the action tabset, found on the site tree, +and as a single (more options) tab in page view. This is a special +use case of tabs, so the default tab styling should not apply + + +**********************************************/ +.cms { /********************** +Styles for pop-up tabs in bottom panel +************************/ /* Styles for the cms-actions in tree view, to use more limited space. +Title hidden in tree view, until hover/active state added. Active is applied +to the first tab within the template, so there should always be one title +visible. Added and removed with js in TabSet.js */ } +.cms .ss-ui-action-tabset { position: relative; float: left; /*Style the "tabs" navigation for multiple tabs*/ /* Style the tab panels */ } +.cms .ss-ui-action-tabset ul.ui-tabs-nav { overflow: hidden; *zoom: 1; padding: 0; overflow: visible; float: left; height: 28px; border: 1px solid #b3b3b3; -webkit-border-radius: 3px; -moz-border-radius: 3px; -ms-border-radius: 3px; -o-border-radius: 3px; border-radius: 3px; } +.cms .ss-ui-action-tabset ul.ui-tabs-nav:focus, .cms .ss-ui-action-tabset ul.ui-tabs-nav:active { outline: none; box-shadow: none; -webkit-box-shadow: none; } +.cms .ss-ui-action-tabset ul.ui-tabs-nav li { width: 110px; overflow: visible; background: #eaeaea; background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2Y4ZjhmOCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2Q5ZDlkOSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f8f8f8), color-stop(100%, #d9d9d9)); background-image: -webkit-linear-gradient(top, #f8f8f8, #d9d9d9); background-image: -moz-linear-gradient(top, #f8f8f8, #d9d9d9); background-image: -o-linear-gradient(top, #f8f8f8, #d9d9d9); background-image: linear-gradient(top, #f8f8f8, #d9d9d9); border-radius: none; -webkit-border-radius: 0; -moz-border-radius: 0; -ms-border-radius: 0; -o-border-radius: 0; border-radius: 0; border: none; border-right: 1px solid #eee; border-left: 1px solid #b3b3b3; margin: 0; } +.cms .ss-ui-action-tabset ul.ui-tabs-nav li:focus, .cms .ss-ui-action-tabset ul.ui-tabs-nav li:active { outline: none; box-shadow: none; -webkit-box-shadow: none; } +.cms .ss-ui-action-tabset ul.ui-tabs-nav li.ui-state-active { background: #f8f8f8; border-bottom: none !important; -moz-border-radius-bottomleft: 0px; -webkit-border-bottom-left-radius: 0px; border-bottom-left-radius: 0px; -moz-border-radius-bottomright: 0px; -webkit-border-bottom-right-radius: 0px; border-bottom-right-radius: 0px; } +.cms .ss-ui-action-tabset ul.ui-tabs-nav li.ui-state-active a { -moz-border-radius-bottomleft: 0px; -webkit-border-bottom-left-radius: 0px; border-bottom-left-radius: 0px; -moz-border-radius-bottomright: 0px; -webkit-border-bottom-right-radius: 0px; border-bottom-right-radius: 0px; } +.cms .ss-ui-action-tabset ul.ui-tabs-nav li.ui-state-active a:focus, .cms .ss-ui-action-tabset ul.ui-tabs-nav li.ui-state-active a span:focus, .cms .ss-ui-action-tabset ul.ui-tabs-nav li.ui-state-active a:active, .cms .ss-ui-action-tabset ul.ui-tabs-nav li.ui-state-active a span:active { outline: none; box-shadow: none; -webkit-box-shadow: none; } +.cms .ss-ui-action-tabset ul.ui-tabs-nav li.first { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; border-left: none; } +.cms .ss-ui-action-tabset ul.ui-tabs-nav li.last { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; border-right: none; } +.cms .ss-ui-action-tabset ul.ui-tabs-nav li a.tab-nav-link { color: #444444; font-weight: bold; line-height: 16px; display: inline-block; padding: 5px 10px; } +.cms .ss-ui-action-tabset ul.ui-tabs-nav li a.tab-nav-link .ui-no-icon { display: inline-block; float: left; padding: 0 2px; width: 16px; height: 16px; } +.cms .ss-ui-action-tabset ul.ui-tabs-nav li a.tab-nav-link .title { display: inline-block; line-height: 18px; } +.cms .ss-ui-action-tabset ul.ui-tabs-nav li a.tab-nav-link.view-mode-batchactions-wrapper .title { margin-left: 22px; } +.cms .ss-ui-action-tabset.tabset-open ul.ui-tabs-nav, .cms .ss-ui-action-tabset.tabset-open ul.ui-tabs-nav li.first { -moz-border-radius-bottomleft: 0; -webkit-border-bottom-left-radius: 0; border-bottom-left-radius: 0; } +.cms .ss-ui-action-tabset.tabset-open-last ul.ui-tabs-nav li.last { -moz-border-radius-bottomright: 0; -webkit-border-bottom-right-radius: 0; border-bottom-right-radius: 0; } +.cms .ss-ui-action-tabset .batch-check, .cms .ss-ui-action-tabset .ui-icon { /* position a checkbox & icon within a tab */ display: inline-block; float: left; margin-left: -2px; padding-right: 6px; } +.cms .ss-ui-action-tabset .batch-check { margin: 6px 0px 5px 9px; position: absolute; } +.cms .ss-ui-action-tabset.single ul.ui-tabs-nav { background: none; border: none; display: inline; padding: 0; float: left; } +.cms .ss-ui-action-tabset.single ul.ui-tabs-nav li { display: inline; background: none; border: none; padding: 0; border-bottom: none !important; } +.cms .ss-ui-action-tabset.single ul.ui-tabs-nav li:hover, .cms .ss-ui-action-tabset.single ul.ui-tabs-nav li:focus, .cms .ss-ui-action-tabset.single ul.ui-tabs-nav li:active { -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; outline: none; } +.cms .ss-ui-action-tabset.single ul.ui-tabs-nav li a { color: #0073c1; text-shadow: white 0 1px 1px; padding: 0 0 0 10px; line-height: 24px; } +.cms .ss-ui-action-tabset.single ul.ui-tabs-nav li a:hover, .cms .ss-ui-action-tabset.single ul.ui-tabs-nav li a:focus, .cms .ss-ui-action-tabset.single ul.ui-tabs-nav li a:active { -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; outline: none; } +.cms .ss-ui-action-tabset.single ul.ui-tabs-nav li a:hover { text-shadow: white 0 10px 10px; color: #005b98; } +.cms .ss-ui-action-tabset.single ul.ui-tabs-nav li a:hover:after { border-bottom: 4px solid #005b98; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel { display: block; clear: both; background: #f8f8f8 !important; position: absolute; top: 30px; border: 1px solid #b3b3b3; border-top: none; width: 202px; z-index: 1; padding: 10px; padding-top: 15px; margin: 0; float: left; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel h3, .cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel h4, .cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel h5 { font-weight: bold; line-height: 16px; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel h3 { font-size: 13px; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel h4 { font-size: 12px; margin: 5px 0; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .ui-widget-content { background: none; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .field { /* Fields are more compressed in the sidebar compared to the main content editing window so the below alters the internal spacing of the fields so we can move that spacing to between the form fields rather than padding */ } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .field label { float: none; width: auto; font-size: 11px; padding: 0 8px 4px 0; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .field .middleColumn { margin: 0; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .field input.text, .cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .field select, .cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .field textarea { padding: 5px; font-size: 11px; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .field.checkbox { padding: 0 8px 0; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .field.checkbox input { margin: 2px 0; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .fieldgroup .fieldgroup-field { padding: 0; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .fieldgroup .fieldgroup-field .field { margin: 0; padding: 0; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .field label { font-size: 12px; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .cms-content-fields { overflow: visible; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .chzn-container-single { width: 100% !important; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .chzn-container-single .chzn-single { padding: 0 0 0 5px; float: none; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .cms-content-actions, .cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .cms-preview-controls { padding: 0; height: auto; border: none; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .field { border-bottom: none; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .cms-edit-form { width: 100%; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .CompositeField { margin: 0; padding: 0; float: none; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .parent-mode { padding-top: 0; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .treedropdown, .cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .SelectionGroup li.selected div.field { margin: 10px 0 0 0; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .treedropdown .treedropdownfield-title, .cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .SelectionGroup li.selected div.field .treedropdownfield-title { position: absolute; z-index: 2; padding: 5px; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .treedropdown .treedropdownfield-panel, .cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .SelectionGroup li.selected div.field .treedropdownfield-panel { margin-top: 11px; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .treedropdown .treedropdownfield-toggle-panel-link, .cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .SelectionGroup li.selected div.field .treedropdownfield-toggle-panel-link { background: none; border-left: none; padding: 5px 3px; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .treedropdown .treedropdownfield-toggle-panel-link .ui-icon, .cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .SelectionGroup li.selected div.field .treedropdownfield-toggle-panel-link .ui-icon { float: right; opacity: 0.7; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel #PageType ul { padding: 0; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel #PageType ul li { padding: 4px 5px; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .cms-add-form ul.SelectionGroup { padding-left: 0; padding-right: 0; overflow: visible; border-bottom: none; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel label.extra-details { overflow: hidden; margin-top: 10px; display: block; color: #9d9d9d; font-style: italic; font-weight: normal; font-size: 1em; float: left; text-shadow: none; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel label.extra-details.fill:before { color: #fff; content: '?'; font-size: 12px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; padding-left: 3px; padding-right: 3px; display: block; float: left; text-shadow: none; -webkit-border-radius: 50px; -moz-border-radius: 50px; -ms-border-radius: 50px; -o-border-radius: 50px; border-radius: 50px; background-color: #b7b7b7; width: 15px; height: 15px; margin-right: 5px; margin-bottom: 5px; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel.first { left: 0; width: 203px; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .ui-icon { padding-right: 0; } +.cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .tab-nav-link, .cms .ss-ui-action-tabset .ss-ui-action-tab.ui-tabs-panel .ss-ui-button { font-size: 12px; } +.cms .ss-ui-action-tabset .last .ss-ui-action-tab { right: -1px; left: auto; } +.cms .south .Actions { overflow: visible; } +.cms .south .Actions .rise-up.ss-ui-action-tabset ul.ui-tabs-nav { margin: 0; } +.cms .south .Actions .rise-up.ss-ui-action-tabset ul.ui-tabs-nav li a.ui-tabs-anchor { font-weight: normal; font-size: 13px; line-height: 24px; padding-right: 25px; } +.cms .south .Actions .rise-up.ss-ui-action-tabset ul.ui-tabs-nav li a.ui-tabs-anchor:after { background: url('../images/sprites-32x32-sf6890c994e.png') 0 -1189px no-repeat; width: 16px; height: 16px; content: ""; display: inline-block; margin-left: 6px; border-bottom: 0; } +.cms .south .Actions .rise-up.ss-ui-action-tabset ul.ui-tabs-nav li a.ui-tabs-anchor:hover:after { border-bottom: 0; background: url('../images/sprites-32x32-sf6890c994e.png') 0 -1163px no-repeat; } +.cms .south .Actions .rise-up.ss-ui-action-tabset ul.ui-tabs-nav li.ui-state-active a.ui-tabs-anchor:after { background: url('../images/sprites-32x32-sf6890c994e.png') 0 -1215px no-repeat; } +.cms .south .Actions .rise-up.ss-ui-action-tabset ul.ui-tabs-nav li.ui-state-active a.ui-tabs-anchor:hover:after { background: url('../images/sprites-32x32-sf6890c994e.png') 0 -1137px no-repeat; } +.cms .south .Actions .rise-up.ss-ui-action-tabset .ui-tabs-panel { overflow: hidden; *zoom: 1; -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; -moz-border-radius-bottomleft: 0; -webkit-border-bottom-left-radius: 0; border-bottom-left-radius: 0; -moz-border-radius-bottomright: 0; -webkit-border-bottom-right-radius: 0; border-bottom-right-radius: 0; background-color: #eceff1; border: 1px solid #ccc; border-bottom: 1px solid #eceff1; clear: both; display: block; position: absolute; top: -204px; width: 190px; /* same width as buttons within panel */ z-index: 1; padding: 10px; margin: 0; margin-top: 1px; } +.cms .south .Actions .rise-up.ss-ui-action-tabset .ui-tabs-panel h3, .cms .south .Actions .rise-up.ss-ui-action-tabset .ui-tabs-panel h4, .cms .south .Actions .rise-up.ss-ui-action-tabset .ui-tabs-panel h5 { font-weight: bold; line-height: 16px; } +.cms .south .Actions .rise-up.ss-ui-action-tabset .ui-tabs-panel h3 { font-size: 13px; } +.cms .south .Actions .rise-up.ss-ui-action-tabset .ui-tabs-panel h4 { font-size: 12px; margin: 5px 0; } +.cms .south .Actions .rise-up.ss-ui-action-tabset .ui-tabs-panel .ui-widget-content { background: none; } +.cms .south .Actions .rise-up.ss-ui-action-tabset .ui-tabs-panel .field { /* Fields are more compressed in the sidebar compared to the main content editing window so the below alters the internal spacing of the fields so we can move that spacing to between the form fields rather than padding */ } +.cms .south .Actions .rise-up.ss-ui-action-tabset .ui-tabs-panel .field label { float: none; width: auto; font-size: 11px; padding: 0 8px 4px 0; } +.cms .south .Actions .rise-up.ss-ui-action-tabset .ui-tabs-panel .field .middleColumn { margin: 0; } +.cms .south .Actions .rise-up.ss-ui-action-tabset .ui-tabs-panel .field input.text, .cms .south .Actions .rise-up.ss-ui-action-tabset .ui-tabs-panel .field select, .cms .south .Actions .rise-up.ss-ui-action-tabset .ui-tabs-panel .field textarea { padding: 5px; font-size: 11px; } +.cms .south .Actions .rise-up.ss-ui-action-tabset .ui-tabs-panel .field.checkbox { padding: 0 8px 0; } +.cms .south .Actions .rise-up.ss-ui-action-tabset .ui-tabs-panel .field.checkbox input { margin: 2px 0; } +.cms .south .Actions .rise-up.ss-ui-action-tabset .ui-tabs-panel .fieldgroup .fieldgroup-field { padding: 0; } +.cms .south .Actions .rise-up.ss-ui-action-tabset .ui-tabs-panel .fieldgroup .fieldgroup-field .field { margin: 0; padding: 0; } +.cms .south .Actions .rise-up.ss-ui-action-tabset .ui-tabs-panel .chzn-container-single .chzn-single { padding: 0 0 0 5px; float: none; } +.cms .south .Actions .rise-up.ss-ui-action-tabset .ui-tabs-panel button.ss-ui-button:hover, .cms .south .Actions .rise-up.ss-ui-action-tabset .ui-tabs-panel button.ss-ui-button:focus, .cms .south .Actions .rise-up.ss-ui-action-tabset .ui-tabs-panel button.ss-ui-button:active { /*text-decoration:underline;*/ background-color: #e0e5e8; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; outline: none; } +.cms .south .Actions .rise-up.ss-ui-action-tabset .ui-tabs-panel .cms-sitetree-information { border-bottom: 1px solid #d0d3d5; margin-bottom: 8px; } +.cms .south .Actions .rise-up.ss-ui-action-tabset .ui-tabs-panel .cms-sitetree-information p.meta-info { color: #999; font-size: 11px; line-height: 16px; margin-bottom: 8px; } +.cms .south .Actions .rise-up.ss-ui-action-tabset .last .ui-tabs-panel.ss-ui-action-tab { right: -1px; left: auto; } +.cms .cms-tree-view-sidebar { min-width: 176px; /* for when the scrollbar is present & find dropdown open */ } +.cms .cms-tree-view-sidebar .ss-ui-action-tabset.ss-tabset.multi ul.ui-tabs-nav > li { width: auto; } +.cms .cms-tree-view-sidebar .ss-ui-action-tabset.ss-tabset.multi ul.ui-tabs-nav > li a.tab-nav-link { width: 30px; overflow: hidden; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; padding-right: 0; -webkit-transition-duration: 0.5s; -moz-transition-duration: 0.5s; -o-transition-duration: 0.5s; transition-duration: 0.5s; } +.cms .cms-tree-view-sidebar .ss-ui-action-tabset.ss-tabset.multi ul.ui-tabs-nav > li a.tab-nav-link.active { width: 110px; -webkit-transition-duration: 0.5s; -moz-transition-duration: 0.5s; -o-transition-duration: 0.5s; transition-duration: 0.5s; } +.cms .cms-tree-view-sidebar .ss-ui-action-tabset.ss-tabset.multi.tabset-open ul.ui-tabs-nav, .cms .cms-tree-view-sidebar .ss-ui-action-tabset.ss-tabset.multi.tabset-open ul.ui-tabs-nav li.first, .cms .cms-tree-view-sidebar .ss-ui-action-tabset.ss-tabset.multi.tabset-open ul.ui-tabs-nav li.last, .cms .cms-tree-view-sidebar .ss-ui-action-tabset.ss-tabset.multi.tabset-open-last ul.ui-tabs-nav, .cms .cms-tree-view-sidebar .ss-ui-action-tabset.ss-tabset.multi.tabset-open-last ul.ui-tabs-nav li.first, .cms .cms-tree-view-sidebar .ss-ui-action-tabset.ss-tabset.multi.tabset-open-last ul.ui-tabs-nav li.last { -moz-border-radius-bottomright: 0; -webkit-border-bottom-right-radius: 0; border-bottom-right-radius: 0; -moz-border-radius-bottomleft: 0; -webkit-border-bottom-left-radius: 0; border-bottom-left-radius: 0; } +.cms .cms-tree-view-sidebar .ui-tabs .ui-tabs-panel.ss-ui-action-tab { width: 162px; padding: 10px 6px; } +.cms .cms-tree-view-sidebar .ui-tabs .ui-tabs-panel.ss-ui-action-tab .field { max-width: 160px; } +.cms .cms-tree-view-sidebar .ui-tabs .ui-tabs-panel.ss-ui-action-tab .ui-icon { padding-right: 0; } +.cms .cms-tree-view-sidebar .last .ui-tabs-panel.ss-ui-action-tab { right: 0; left: auto; } + .ModelAdmin .cms-content-fields { overflow: hidden; } .ModelAdmin .cms-content-fields .cms-edit-form { overflow-y: auto; overflow-x: hidden; } .ModelAdmin .cms-content-fields .cms-content-tools .cms-panel-content .cms-search-form .resetformaction { margin-right: 0px; } diff --git a/admin/images/btn-icon-s37c6548b54.png b/admin/images/btn-icon-s37c6548b54.png deleted file mode 100644 index 3b2195bd8f4343326a334f5d15451ac6b7418822..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21728 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�Gq11u$aMl_5 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 Hu0mjfS*mtZ diff --git a/admin/images/btn-icon-s97372285ea.png b/admin/images/btn-icon-s97372285ea.png new file mode 100644 index 0000000000000000000000000000000000000000..217f085790f8f2b894f93fa00824fa6f5b555e2c GIT binary patch literal 22288 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 literal 0 HcmV?d00001 diff --git a/admin/images/btn-icon/disk.png b/admin/images/btn-icon/disk.png new file mode 100755 index 0000000000000000000000000000000000000000..99d532e8b1750115952f97302a92d713c0486f97 GIT binary patch literal 620 zcmV-y0+aoTP)~H+MJzd|s z^YP1Hc07G_>)Lgir!F1{Qn4GcTg%?koHo<=1qRN{}nPDolOeI^o4N5I>! zU$N=L=sg~ zDx#dOA*B0N~cqPsWI(^rbbkh)DS0_H_UN0C4l_kvWIm2#Kyy6%BCh z(yIUf003&1xdx>t$*eR2ZvXxT0001Z_R$y3Iju92q*wg58};}zm(OaAH=p|y0002M zh5O5#fxp|~jc?yi@+7$`d4Q6Hl%z;WiWG??NXR{Hx%)pMd~SE0000OQI literal 0 HcmV?d00001 diff --git a/admin/images/link_arrows.png b/admin/images/link_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..d1cc76c6465888a7735367fb1a35e4b12151cec7 GIT binary patch literal 342 zcmeAS@N?(olHy`uVBq!ia0vp^Ahsh18<2dl)>H^cNtU=qlmzFem6RtIr7}3CJ#*cM#zc`GrcI2>CMT~8 zd!-#wi4ovvNo{pf*w^43sOY@@FPqyInF{$1)(IlI3|d|;Pb6ECm^1uD7;az4&hN0@ z{q0tKgVke34d>otUo{#UUPv-I^aN@fBx^LOZ02CIm3M199nB{YuI+OEKoE$C({>Ow zR?<`o0CFVOin=kL&1UuZr?4sP!2ANw6{6G96s~ejkm-oj);SB-;II}b_5dUi5U0(+ bBEi7K9`JDLviDbjVZh+&>gTe~DWM4f`Dk^v literal 0 HcmV?d00001 diff --git a/admin/images/sprites-32x32-se93fc83bf9.png b/admin/images/sprites-32x32-se93fc83bf9.png deleted file mode 100644 index a27e405a99c1cd7738965e63e553e09ac8005805..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18954 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 diff --git a/admin/images/sprites-32x32-sf6890c994e.png b/admin/images/sprites-32x32-sf6890c994e.png new file mode 100644 index 0000000000000000000000000000000000000000..0c02eb066f109cd876eef84a0d898ced27adef15 GIT binary patch literal 19229 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 literal 0 HcmV?d00001 diff --git a/admin/images/sprites-32x32/arrow_down_darker.png b/admin/images/sprites-32x32/arrow_down_darker.png new file mode 100644 index 0000000000000000000000000000000000000000..e4ca34c7f6b68741528952dd8dfbed66a5d3cbaf GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XY&~5ZLn>}1B}lL?ZfI;2bXKW4R--Vp!TB$%LRm`0tdES_ z8F%m=ywG!-!N+++*0FqsLjue(v)mb37+542p2!KaE}1B}lL?ZfI;2bYAk~L5;%92Is%53S}uTw*GIp z&2XnJA>&vs!!pGP)5qovi5-l3XBRUtF);Bk{HYUWUA9Lu5@-;Er>mdKI;Vst0Cxs4 AKmY&$ literal 0 HcmV?d00001 diff --git a/admin/images/sprites-32x32/arrow_up_darker.png b/admin/images/sprites-32x32/arrow_up_darker.png new file mode 100644 index 0000000000000000000000000000000000000000..9de2abfa716c4128bd595afeeb29af278a31ccea GIT binary patch literal 156 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X>^xl@Ln>}1B}lL;Gr61>IG}#k#o=>}!cO`5iajhQ>JF9S z4L2qxW*%dI#N%-FOv8BrHziYJfufThYz&NS4B~dev0iSr$AKm>c)I$ztaD0e0szkQ BEpY$< literal 0 HcmV?d00001 diff --git a/admin/images/sprites-32x32/arrow_up_lighter.png b/admin/images/sprites-32x32/arrow_up_lighter.png new file mode 100644 index 0000000000000000000000000000000000000000..d150a044b1e5460e74d5e6dd4d58fc88b1ddf848 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XtUX;ELn>}1B`pvz=#?^1;nA?uaM;Iql>IsL$-h5%5|tKM yGIsEOkUZq#V9fKtq@|PNEDNvXOHNLO0}L~xg|aiJZMOy*!{F)a=d#Wzp$PyvCM`<< literal 0 HcmV?d00001 diff --git a/admin/javascript/LeftAndMain.Content.js b/admin/javascript/LeftAndMain.Content.js index 780108b50..1c2dfec29 100644 --- a/admin/javascript/LeftAndMain.Content.js +++ b/admin/javascript/LeftAndMain.Content.js @@ -15,9 +15,8 @@ // Force initialization of certain UI elements to avoid layout glitches this.find('.cms-tabset').redrawTabs(); - this.find('.ss-ui-tabs-nav').redraw(); - this._super(); + }, redraw: function() { diff --git a/admin/javascript/LeftAndMain.EditForm.js b/admin/javascript/LeftAndMain.EditForm.js index 4efc94e0a..227412dfc 100644 --- a/admin/javascript/LeftAndMain.EditForm.js +++ b/admin/javascript/LeftAndMain.EditForm.js @@ -205,14 +205,18 @@ }); /** - * Hide tabs when only one is available + * Hide tabs when only one is available. + * Special case is actiontabs - tabs between buttons, where we want to have + * extra options hidden within a tab (even if only one) by default. */ $('.cms-edit-form .ss-tabset').entwine({ onmatch: function() { - var tabs = this.find("> ul:first"); + if (!this.hasClass('ss-ui-action-tabset')) { + var tabs = this.find("> ul:first"); - if(tabs.children("li").length == 1) { - tabs.hide().parent().addClass("ss-tabset-tabshidden"); + if(tabs.children("li").length == 1) { + tabs.hide().parent().addClass("ss-tabset-tabshidden"); + } } this._super(); diff --git a/admin/javascript/LeftAndMain.js b/admin/javascript/LeftAndMain.js index dbfe0270c..dd11134dd 100644 --- a/admin/javascript/LeftAndMain.js +++ b/admin/javascript/LeftAndMain.js @@ -440,7 +440,7 @@ jQuery.noConflict(); * Can be hooked into an ajax 'success' callback. */ handleAjaxResponse: function(data, status, xhr) { - var self = this, url, activeTabs, guessFragment; + var self = this, url, selectedTabs, guessFragment; // Pseudo-redirects via X-ControllerURL might return empty data, in which // case we'll ignore the response @@ -571,19 +571,19 @@ jQuery.noConflict(); saveTabState: function() { if(typeof(window.sessionStorage)=="undefined" || window.sessionStorage == null) return; - var activeTabs = [], url = this._tabStateUrl(); + var selectedTabs = [], url = this._tabStateUrl(); this.find('.cms-tabset,.ss-tabset').each(function(i, el) { var id = $(el).attr('id'); if(!id) return; // we need a unique reference if(!$(el).data('tabs')) return; // don't act on uninit'ed controls if($(el).data('ignoreTabState')) return; // allow opt-out - activeTabs.push({id:id, active:$(el).tabs('option', 'active')}); + selectedTabs.push({id:id, selected:$(el).tabs('option', 'selected')}); }); - if(activeTabs) { + if(selectedTabs) { var tabsUrl = 'tabs-' + url; try { - window.sessionStorage.setItem(tabsUrl, JSON.stringify(activeTabs)); + window.sessionStorage.setItem(tabsUrl, JSON.stringify(selectedTabs)); } catch(err) { if (err.code === DOMException.QUOTA_EXCEEDED_ERR && window.sessionStorage.length === 0) { // If this fails we ignore the error as the only issue is that it @@ -606,12 +606,12 @@ jQuery.noConflict(); var self = this, url = this._tabStateUrl(), data = window.sessionStorage.getItem('tabs-' + url), - activeTabs = data ? JSON.parse(data) : false; - if(activeTabs) { - $.each(activeTabs, function(i, activeTab) { - var el = self.find('#' + activeTab.id); + selectedTabs = data ? JSON.parse(data) : false; + if(selectedTabs) { + $.each(selectedTabs, function(i, selectedTab) { + var el = self.find('#' + selectedTab.id); if(!el.data('tabs')) return; // don't act on uninit'ed controls - el.tabs('option', 'active', activeTab.active); + el.tabs('select', selectedTab.selected); }); } }, @@ -1012,7 +1012,7 @@ jQuery.noConflict(); }, redrawTabs: function() { this.rewriteHashlinks(); - + var id = this.attr('id'), activeTab = this.find('ul:first .ui-tabs-active'); if(!this.data('uiTabs')) this.tabs({ @@ -1025,7 +1025,7 @@ jQuery.noConflict(); activate: function(e, ui) { // Usability: Hide actions for "readonly" tabs (which don't contain any editable fields) var actions = $(this).closest('form').find('.Actions'); - if($(ui.tab).closest('li').hasClass('readonly')) { + if($(ui.newTab).closest('li').hasClass('readonly')) { actions.fadeOut(); } else { actions.show(); diff --git a/admin/javascript/ssui.core.js b/admin/javascript/ssui.core.js index 4e013ae83..bcdcd380f 100644 --- a/admin/javascript/ssui.core.js +++ b/admin/javascript/ssui.core.js @@ -83,17 +83,17 @@ } // Create missing elements. - if (this.options.alternate.text) { - this.buttonElement.append( - "" + this.options.alternate.text + "" - ); - } if (this.options.alternate.icon) { this.buttonElement.append( "" ); } + if (this.options.alternate.text) { + this.buttonElement.append( + "" + this.options.alternate.text + "" + ); + } this._refreshAlternate(); }, diff --git a/admin/scss/_actionTabs.scss b/admin/scss/_actionTabs.scss new file mode 100644 index 000000000..592327527 --- /dev/null +++ b/admin/scss/_actionTabs.scss @@ -0,0 +1,428 @@ +/******************************************** + +Defines the styles for the action tabset, found on the site tree, +and as a single (more options) tab in page view. This is a special +use case of tabs, so the default tab styling should not apply + + +**********************************************/ + + +$border: 1px solid darken(#D9D9D9, 15%); + +.cms { + .ss-ui-action-tabset{ + position:relative; + float:left; + + /*Style the "tabs" navigation for multiple tabs*/ + ul.ui-tabs-nav{ + @include clearfix; + padding:0; + overflow:visible; + float:left; + height: 28px; + border:$border; + @include border-radius(3px); + &:focus,&:active{ + outline:none; + box-shadow:none; + -webkit-box-shadow: none; + } + li{ + &:focus, &:active{ + outline:none; + box-shadow:none; + -webkit-box-shadow: none; + } + width: 110px; + overflow:visible; + background:#eaeaea; + @include background-image(linear-gradient(top, #f8f8f8, #D9D9D9)); + border-radius: none; + @include border-radius(0); + border: none; + border-right:1px solid #eee; + border-left: $border; + margin:0; + &.ui-state-active{ + background:#f8f8f8; + border-bottom:none !important; //jquery-ui style has important on it + @include border-bottom-left-radius(0px); + @include border-bottom-right-radius(0px); + a { + @include border-bottom-left-radius(0px); + @include border-bottom-right-radius(0px); + &:focus, span:focus,&:active, span:active{ + outline:none; + box-shadow:none; + -webkit-box-shadow: none; + } + } + } + &.first{ + @include border-top-left-radius(3px); + @include border-bottom-left-radius(3px); + border-left:none; + } + &.last{ + @include border-top-right-radius(3px); + @include border-bottom-right-radius(3px); + border-right:none; + } + a.tab-nav-link{ + color:$color-text; + font-weight:bold; + line-height:16px; + display:inline-block; + padding: 5px 10px; + .ui-no-icon { + display:inline-block; + float:left; + padding: 0 2px; + width:16px; + height:16px; + } + .title{ + display:inline-block; + line-height: 18px; + } + &.view-mode-batchactions-wrapper .title { + margin-left: 22px; + } + } + } + } + &.tabset-open { + ul.ui-tabs-nav, + ul.ui-tabs-nav li.first { + @include border-bottom-left-radius(0); + } + } + &.tabset-open-last { + ul.ui-tabs-nav li.last { + @include border-bottom-right-radius(0); + } + } + + .batch-check, .ui-icon { /* position a checkbox & icon within a tab */ + display: inline-block; + float:left; + margin-left: -2px; + padding-right: 6px; + } + .batch-check { + margin: 6px 0px 5px 9px; + position: absolute; + } + &.single{ + ul.ui-tabs-nav{ + background:none; + border:none; + display:inline; + padding:0; + float:left; + li{ + display:inline; + background:none; + border:none; + padding:0; + border-bottom:none !important; //jquery-ui style has important on it + + &:hover, &:focus, &:active{ + @include box-shadow(none); + outline:none; + } + a{ + color: $color-text-blue-link; + @include text-shadow(#fff 0 1px 1px); + padding:0 0 0 10px; + line-height:24px; + + &:hover, &:focus, &:active{ + @include box-shadow(none); + outline:none; + } + &:hover{ + @include text-shadow(#fff 0 10px 10px); + color: darken($color-text-blue-link,8%); + &:after{ + border-bottom: 4px solid darken($color-text-blue-link,8%); + } + } + } + } + } + } + + /* Style the tab panels */ + .ss-ui-action-tab.ui-tabs-panel{ + display:block; + clear:both; + background:#f8f8f8 !important; //Because ie7 doesn't understanding what the 'C' in CSS stands for + position:absolute; + top:30px; + border:$border; + border-top:none; + width:202px; + z-index:1; + padding:10px; + padding-top:15px; + @include tightSpacing; + margin:0; + float:left; + .field label{ + font-size:12px; + } + .cms-content-fields{ + overflow:visible; + } + .chzn-container-single{ + width:100% !important; + .chzn-single{ + padding: 0 0 0 5px; + float:none; + } + } + .cms-content-actions, .cms-preview-controls{ + padding:0; + height:auto; + border:none; + @include box-shadow(none); + + } + .field{ + border-bottom:none; + @include box-shadow(none); + } + .cms-edit-form{ + width:100%; + } + .CompositeField{ + margin:0; + padding:0; + float:none; + } + .parent-mode{ + padding-top:0; + } + + .treedropdown, .SelectionGroup li.selected div.field{ + margin:10px 0 0 0; + //@include box-shadow(inset 0 1px 0 #fff, 0 1px 1px rgba(0,0,0,0.1)); + .treedropdownfield-title{ + position:absolute; + z-index:2; + padding:5px; + } + .treedropdownfield-panel{ + margin-top:11px; + } + .treedropdownfield-toggle-panel-link{ + background:none; + border-left:none; + padding:5px 3px; + .ui-icon{ + float:right; + opacity:0.7; + } + } + } + #PageType ul{ + padding:0; + li{ + padding:4px 5px; + } + } + .cms-add-form ul.SelectionGroup{ + padding-left:0; + padding-right:0; + overflow:visible; + border-bottom:none; + } + label.extra-details{ + overflow:hidden; + margin-top:10px; + display: block; + color: lighten($color-text, 35%); + font-style:italic; + font-weight:normal; + font-size:1em; + float:left; + @include text-shadow(none); + &.fill{ + &:before{ + color:#fff; + content: '?'; + font-size:12px; + @include box-sizing('border-box'); + padding-left:3px; + padding-right:3px; + display:block; + float:left; + @include text-shadow(none); + @include border-radius(50px); + background-color:lighten($color-text, 45%); + width:15px; + height:15px; + margin-right:5px; + margin-bottom:5px; + } + } + } + &.first { + left: 0; + width: 203px; + } + .ui-icon { + padding-right: 0; + } + .tab-nav-link, .ss-ui-button { + font-size: 12px; + } + } + .last .ss-ui-action-tab{ + right:-1px; + left:auto; + } + } + + /********************** + Styles for pop-up tabs in bottom panel + ************************/ + .south .Actions{ + overflow:visible; //put this somewhere else/more generic + + .rise-up.ss-ui-action-tabset{ + ul.ui-tabs-nav { + margin: 0; + li { + a.ui-tabs-anchor { + font-weight: normal; + font-size: 13px; + line-height: 24px; + padding-right: 25px; + &:after { + background: sprite($sprites32, arrow_down_lighter) no-repeat; + width: 16px; + height: 16px; + content: ""; + display: inline-block; + margin-left: 6px; + border-bottom: 0; + + } + &:hover:after { + border-bottom: 0; + background: sprite($sprites32, arrow_down_darker) no-repeat; + } + + } + &.ui-state-active a.ui-tabs-anchor { + &:after { + background: sprite($sprites32, arrow_up_lighter) no-repeat; + } + &:hover:after { + background: sprite($sprites32, arrow_up_darker) no-repeat; + } + } + } + } + .ui-tabs-panel{ + @include clearfix; + @include border-top-radius(3px); + @include border-bottom-radius(0); + @include tightSpacing; + background-color: $tab-panel-texture-color; + border:1px solid #ccc; + border-bottom:1px solid $tab-panel-texture-color; + clear:both; + display:block; + position:absolute; + top:-204px; + width:190px; /* same width as buttons within panel */ + z-index:1; + padding:10px; + margin:0; + margin-top:1px; + .chzn-container-single .chzn-single{ + padding: 0 0 0 5px; + float:none; + } + @extend .button-no-style; + button.ss-ui-button{ + &:hover, &:focus, &:active{ + /*text-decoration:underline;*/ + background-color: darken($tab-panel-texture-color,4%); + @include box-shadow(none); + outline:none; + } + + } + .cms-sitetree-information { + border-bottom: 1px solid $color-light-separator; + margin-bottom: 8px; + p.meta-info { + color: #999; + font-size: 11px; + line-height: 16px; + margin-bottom: 8px; + } + } + } + .last .ui-tabs-panel.ss-ui-action-tab{ + right:-1px; + left:auto; + } + } + } + + + /* Styles for the cms-actions in tree view, to use more limited space. + Title hidden in tree view, until hover/active state added. Active is applied + to the first tab within the template, so there should always be one title + visible. Added and removed with js in TabSet.js */ + .cms-tree-view-sidebar{ + min-width: 176px; /* for when the scrollbar is present & find dropdown open */ + .ss-ui-action-tabset.ss-tabset.multi{ + ul.ui-tabs-nav{ + >li{ + width: auto; + a.tab-nav-link{ + width:30px; + overflow:hidden; + @include box-sizing(border-box); + padding-right:0; + @include duration(0.5s); + &.active{ + width:110px; + @include duration(0.5s); + } + } + } + } + &.tabset-open, &.tabset-open-last { + ul.ui-tabs-nav, + ul.ui-tabs-nav li.first, + ul.ui-tabs-nav li.last { + @include border-bottom-right-radius(0); + @include border-bottom-left-radius(0); + } + } + } + .ui-tabs .ui-tabs-panel.ss-ui-action-tab { + width:162px; + padding:10px 6px; + .field { + max-width:160px; + } + .ui-icon { + padding-right: 0; + } + } + .last .ui-tabs-panel.ss-ui-action-tab { + right:0; + left:auto; + } + } +} \ No newline at end of file diff --git a/admin/scss/_forms.scss b/admin/scss/_forms.scss index 2bb2e3f9d..393c76d07 100644 --- a/admin/scss/_forms.scss +++ b/admin/scss/_forms.scss @@ -285,6 +285,36 @@ form.small .field, .field.small { * ---------------------------------------------------- */ .cms { + .button-no-style{ + button{ + background: none; + border: none; + display: block; + margin:0; + outline:none; + color: $color-text-blue-link; + font-weight:normal; + width: 210px; /* same as width of surrounding panel */ + text-align: left; + @include border-radius(0); + text-shadow: none; + margin-left:-10px; + + &.ss-ui-action-destructive{ + color: darken($color-error,25%); + } + span{ + padding-left:0; + padding-right:0; + } + &:hover, &:focus, &:active{ + outline:none; + background:none; + @include box-shadow(none); + border:none; + } + } + } .Actions, .cms-actions-row { > * { @@ -300,7 +330,7 @@ form.small .field, .field.small { .Actions { min-height: 30px; - overflow: visible; + overflow: auto; padding: $grid-x $grid-y * 1.5; } .south .Actions, .ui-tabs-panel .Actions, .ui-tabs-panel iframe .Actions { @@ -328,7 +358,9 @@ form.small .field, .field.small { } .ss-ui-button { + font-size: 12px; margin-top:0px; + padding: 5px 10px; font-weight: bold; text-decoration: none; line-height: $grid-y * 2; @@ -339,6 +371,22 @@ form.small .field, .field.small { background-color: $color-button-generic; white-space: nowrap; + .ui-icon, .ui-button-text { + display: inline-block; + line-height: $grid-x*2; + padding: 0; + } + .ui-icon { + width: 16px; + padding: 0 2px; + position: relative; + left: -2px; + margin-top: 0; + top: 0; + height: 16px; + float: left; + } + @include background( linear-gradient(color-stops( lighten($color-button-generic, 10%), @@ -412,7 +460,6 @@ form.small .field, .field.small { &.ss-ui-button-small { .ui-button-text { - padding: ($grid-y/4) ($grid-x/4); font-size: $font-base-size - 2; } } diff --git a/admin/scss/_menu.scss b/admin/scss/_menu.scss index 6e93297e0..e427589c9 100644 --- a/admin/scss/_menu.scss +++ b/admin/scss/_menu.scss @@ -319,44 +319,6 @@ line-height: 32px; } } - /* // To specific - was overriding collapsed-flyout styles -#Menu-CMSPagesController { - a { - background-image:none; - font-size: 11px; - padding: 0 10px 0 40px; - height: 32px; - line-height: 32px; - } - } - #Menu-CMSPageAddController { - a { - background-image:none; - font-size: 11px; - padding: 0 10px 0 40px; - height: 32px; - line-height: 32px; - } - } - #Menu-AssetAdmin { - a { - background-image:none; - font-size: 11px; - padding: 0 10px 0 40px; - height: 32px; - line-height: 32px; - } - } - #Menu-CMSFileAddController { - a { - background-image:none; - font-size: 11px; - padding: 0 10px 0 40px; - height: 32px; - line-height: 32px; - } - } -*/ } /* Style applied to the menu flyout only when the collapsed setting */ diff --git a/admin/scss/_mixins.scss b/admin/scss/_mixins.scss index 403629d43..3fd97769d 100644 --- a/admin/scss/_mixins.scss +++ b/admin/scss/_mixins.scss @@ -108,7 +108,79 @@ transition: $properties; } +@mixin duration($time, $webkit:true){ + @if($webkit){ + -webkit-transition-duration: $time; + } + -moz-transition-duration: $time; + -o-transition-duration: $time; + transition-duration: $time; +} +/*Mixin used to generate slightly smaller text and forms +Used in side panels and action tabs +*/ +@mixin tightSpacing{ + h3,h4,h5 { + font-weight: bold; + line-height: $grid-y * 2; + } + h3 { + font-size: $font-base-size + 1; + } + h4 { + font-size: $font-base-size; + margin:5px 0; + } + + .ui-widget-content { + background: none; + } + + .field { + /* + * Fields are more compressed in the sidebar compared to the + * main content editing window so the below alters the internal + * spacing of the fields so we can move that spacing to between + * the form fields rather than padding + */ + label { + float: none; + width: auto; + font-size: 11px; + padding: 0 $grid-x 4px 0; + } + + .middleColumn { + margin: 0; + } + + input.text, + select, + textarea { + padding: 5px; + font-size: 11px; + } + + &.checkbox { + padding: 0 8px 0; + + input { + margin: 2px 0; + } + } + } + .fieldgroup { + .fieldgroup-field { + padding: 0; + + .field { + margin: 0; + padding: 0; + } + } + } +} diff --git a/admin/scss/_style.scss b/admin/scss/_style.scss index 2219c522b..332ade848 100644 --- a/admin/scss/_style.scss +++ b/admin/scss/_style.scss @@ -54,16 +54,18 @@ body.cms { * Helpers * -------------------------------------------- */ -.cms-helper-hide-actions { - .Actions { - display: none; - } -} - .hide { display: none; } +.cms-helper-hide-actions { + .Actions { + @extend .hide; + } +} + + + /** -------------------------------------------- * Panels Styles * -------------------------------------------- */ @@ -248,7 +250,7 @@ body.cms { } } - .cms-edit-form, .cms-content-fields { + .cms-edit-form, .cms-content-fields { /*not sure if .cms-content-fields effects other areas*/ .cms-panel-padded { /* Has padded area inside it */ padding: 0; margin: 0; @@ -540,8 +542,9 @@ p.message { overflow: auto; } } + #PageType { - ul { + ul { padding-left: 20px; li { float: none; @@ -607,6 +610,7 @@ p.message { min-height: 29px; display: block; margin: 0 0 15px 0; + padding-bottom: 9px; @include doubleborder(bottom, $color-light-separator, $box-shadow-shine); @include legacy-pie-clearfix(); @@ -1579,9 +1583,6 @@ form.small { span.btn-icon-download-csv { height:17px; //exact height of icon } - .ui-button-text { - padding-left:26px; //to accomodate wider export icon - } } } diff --git a/admin/scss/_uitheme.scss b/admin/scss/_uitheme.scss index f6a9b5cb1..3c2e8f6f2 100644 --- a/admin/scss/_uitheme.scss +++ b/admin/scss/_uitheme.scss @@ -45,16 +45,16 @@ z-index: 100000; } - & a.ui-state-hover { + a.ui-state-hover { border-color: transparent; background: transparent; - & .ui-icon-closethick { + .ui-icon-closethick { background: sprite($sprites32, dialog-close-over) no-repeat; } } - & .ui-icon-closethick { + .ui-icon-closethick { background: sprite($sprites32, dialog-close) no-repeat; width: 30px; height: 30px; diff --git a/admin/scss/_uitheme.scss.orig b/admin/scss/_uitheme.scss.orig deleted file mode 100644 index 6fb3d3bd3..000000000 --- a/admin/scss/_uitheme.scss.orig +++ /dev/null @@ -1,116 +0,0 @@ -/** - * This file defines CMS-specific customizations to the jQuery UI theme. - * Every rule should contain ONLY overwritten jQuery UI rules (with 'ui-' prefix). - * - * This file should be fairly short, as we're using our own custom jQuery UI theme already. - * TODO Add theme reference - * - * Use _style.scss to add more generic style information, - * and read the jQuery UI theming API: http://jqueryui.com/docs/Theming/API - */ - -<<<<<<< HEAD -.cms { - .ui-tabs { - padding: 0; - background: none; - - .ui-widget-header { - border: 0; - background: none; - } - - .ui-tabs-nav { - margin: 0; - padding: 0; - - li { - top: 0; - border-bottom: 0 !important; - - a { - padding: 0 15px; - } - } - - &.ui-state-active { - border-color: $color-medium-separator; - } - } -======= -.ui-widget-content, -.ui-widget { - color: $color-text; - font-size: $font-base-size; - font-family: $font-family; - border: 0; -} - - -.ui-widget-header { - background-color: darken($color-widget-bg, 20%); - padding: 8px 8px 6px 8px; - border-bottom: 2px solid darken($color-widget-bg, 35%); - @include background-image( - linear-gradient(darken($color-widget-bg, 5%), darken($color-widget-bg, 30%)) - ); - border-bottom: 3px solid darken($color-widget-bg, 50%); - padding: 8px; - @include border-radius(0); ->>>>>>> ENHANCEMENT Tab style consolidation and design consistency - - & .ui-dialog-title { - padding: 6px 0; - text-shadow: lighten($color-base, 10%) 1px 1px 0; - } - - - - & a.ui-dialog-titlebar-close { - position: absolute; - top: -8px; - right: -15px; - width: 30px; - height: 30px; - z-index: 100000; - } - - & a.ui-state-hover { - border-color: transparent; - background: transparent; - - & .ui-icon-closethick { - background: sprite($sprites32, dialog-close-over) no-repeat; - } - } - - & .ui-icon-closethick { - background: sprite($sprites32, dialog-close) no-repeat; - width: 30px; - height: 30px; - } -} - -.ui-state-hover { - cursor: pointer; -} - -.ui-widget input, -.ui-widget select, -.ui-widget textarea, -.ui-widget button { - color: $color-text; - font-size: $font-base-size; - font-family: $font-family; -} - -.ui-accordion { - .ui-accordion-header { - border-color: $color-button-generic-border; - margin-bottom: 0; - } - .ui-accordion-content { - border: 1px solid $color-button-generic-border; - border-top: none; - } -} diff --git a/admin/scss/screen.scss b/admin/scss/screen.scss index 8e1af8b4d..382c5ed54 100644 --- a/admin/scss/screen.scss +++ b/admin/scss/screen.scss @@ -55,5 +55,6 @@ $experimental-support-for-svg: true; @import "tree.scss"; @import "menu.scss"; @import "preview.scss"; +@import "actionTabs.scss"; @import "ModelAdmin.scss"; @import "SecurityAdmin.scss"; diff --git a/css/AssetUploadField.css b/css/AssetUploadField.css index e4c0b2b3a..ad090f63c 100644 --- a/css/AssetUploadField.css +++ b/css/AssetUploadField.css @@ -7,6 +7,9 @@ /** ----------------------------------------------- Typography. ------------------------------------------------ */ /** ----------------------------------------------- Grid Units (px) We have a vertical rhythm that the grid is based off both x (=horizontal) and y (=vertical). All internal padding and margins are scaled to this and accounting for paragraphs ------------------------------------------------ */ /** ----------------------------------------------- Application Logo (CMS Logo) Must be 24px x 24px ------------------------------------------------ */ +/*Mixin used to generate slightly smaller text and forms +Used in side panels and action tabs +*/ .ss-uploadfield-view-allowed-extensions { padding-top: 20px; clear: both; max-width: 750px; display: block; } #AssetUploadField { border-bottom: 0; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; padding: 12px; } diff --git a/css/GridField.css b/css/GridField.css index 78f373cbe..ec6e5bddb 100644 --- a/css/GridField.css +++ b/css/GridField.css @@ -8,14 +8,15 @@ /** ----------------------------------------------- Typography. ------------------------------------------------ */ /** ----------------------------------------------- Grid Units (px) We have a vertical rhythm that the grid is based off both x (=horizontal) and y (=vertical). All internal padding and margins are scaled to this and accounting for paragraphs ------------------------------------------------ */ /** ----------------------------------------------- Application Logo (CMS Logo) Must be 24px x 24px ------------------------------------------------ */ -.cms .ss-gridfield > div { margin-bottom: 36px; } +/*Mixin used to generate slightly smaller text and forms +Used in side panels and action tabs +*/ .cms .ss-gridfield > div.addNewGridFieldButton { margin-bottom: 0; } .cms .ss-gridfield > div.addNewGridFieldButton .action { margin-bottom: 12px; } .cms .ss-gridfield[data-selectable] tr.ui-selected, .cms .ss-gridfield[data-selectable] tr.ui-selecting { background: #FFFAD6 !important; } .cms .ss-gridfield[data-selectable] td { cursor: pointer; } .cms .ss-gridfield span button#action_gridfield_relationfind { display: none; } .cms .ss-gridfield p button#action_export span.btn-icon-download-csv { height: 17px; } -.cms .ss-gridfield p button#action_export .ui-button-text { padding-left: 26px; } .cms .ss-gridfield .right { float: right; } .cms .ss-gridfield .right > * { float: right; margin-left: 8px; } .cms .ss-gridfield .right .pagination-records-number { font-size: 1.0em; padding: 6px 3px 6px 0; color: white; text-shadow: 0px -1px 0 rgba(0, 0, 0, 0.2); font-weight: normal; } diff --git a/css/UploadField.css b/css/UploadField.css index 2885c4320..6ef200f4f 100644 --- a/css/UploadField.css +++ b/css/UploadField.css @@ -7,10 +7,13 @@ /** ----------------------------------------------- Typography. ------------------------------------------------ */ /** ----------------------------------------------- Grid Units (px) We have a vertical rhythm that the grid is based off both x (=horizontal) and y (=vertical). All internal padding and margins are scaled to this and accounting for paragraphs ------------------------------------------------ */ /** ----------------------------------------------- Application Logo (CMS Logo) Must be 24px x 24px ------------------------------------------------ */ +/*Mixin used to generate slightly smaller text and forms +Used in side panels and action tabs +*/ .ss-uploadfield .clear { clear: both; } .ss-insert-media .ss-uploadfield { margin-top: 20px; } .ss-insert-media .ss-uploadfield h4 { float: left; } -.ss-uploadfield .middleColumn { width: 526px; padding: 0; background: #fff; border: 1px solid #b3b3b3; -webkit-border-radius: 4px; -moz-border-radius: 4px; -ms-border-radius: 4px; -o-border-radius: 4px; border-radius: 4px; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #efefef), color-stop(10%, #ffffff), color-stop(90%, #ffffff), color-stop(100%, #efefef)); background-image: -webkit-linear-gradient(#efefef, #ffffff 10%, #ffffff 90%, #efefef); background-image: -moz-linear-gradient(#efefef, #ffffff 10%, #ffffff 90%, #efefef); background-image: -o-linear-gradient(#efefef, #ffffff 10%, #ffffff 90%, #efefef); background-image: linear-gradient(#efefef, #ffffff 10%, #ffffff 90%, #efefef); } +.ss-uploadfield .middleColumn { width: 510px; padding: 0; background: #fff; border: 1px solid #b3b3b3; -webkit-border-radius: 4px; -moz-border-radius: 4px; -ms-border-radius: 4px; -o-border-radius: 4px; border-radius: 4px; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #efefef), color-stop(10%, #ffffff), color-stop(90%, #ffffff), color-stop(100%, #efefef)); background-image: -webkit-linear-gradient(#efefef, #ffffff 10%, #ffffff 90%, #efefef); background-image: -moz-linear-gradient(#efefef, #ffffff 10%, #ffffff 90%, #efefef); background-image: -o-linear-gradient(#efefef, #ffffff 10%, #ffffff 90%, #efefef); background-image: linear-gradient(#efefef, #ffffff 10%, #ffffff 90%, #efefef); } .ss-uploadfield .ss-uploadfield-item { margin: 0; padding: 15px; overflow: auto; } .ss-uploadfield .ss-uploadfield-item .ss-uploadfield-item-preview { height: 60px; line-height: 60px; width: 80px; text-align: center; font-weight: bold; float: left; overflow: hidden; } .ss-uploadfield .ss-uploadfield-item .ss-uploadfield-item-preview.ss-uploadfield-dropzone { -webkit-box-shadow: gray 0 0 4px 0 inset; -moz-box-shadow: gray 0 0 4px 0 inset; box-shadow: gray 0 0 4px 0 inset; border: 2px dashed gray; background: #d0d3d5; display: none; } diff --git a/docs/en/howto/extend-cms-interface.md b/docs/en/howto/extend-cms-interface.md index 1e03503a6..eac980dd5 100644 --- a/docs/en/howto/extend-cms-interface.md +++ b/docs/en/howto/extend-cms-interface.md @@ -22,8 +22,8 @@ We can use this to create a different base template with `LeftAndMain.ss` (which corresponds to the `LeftAndMain` PHP controller class). Copy the template markup of the base implementation at `framework/admin/templates/LeftAndMain.ss` into -`mysite/templates/LeftAndMain.ss`. It will automatically be picked up by the CMS logic. Add a new section after -the `$Content` tag: +`mysite/templates/LeftAndMain.ss`. It will automatically be picked up by the CMS logic. Add a new section after the +`$Content` tag: :::ss ... @@ -125,6 +125,55 @@ and replace it with the following: <% end_loop %> +## Extending the CMS actions + +CMS actions follow a principle similar to the CMS fields: they are built in the backend with the help of `FormFields` +and `FormActions`, and the frontend is responsible for applying a consistent styling. + +The following conventions apply: + +* New actions can be added by redefining `getCMSActions`, or adding an extension with `updateCMSActions`. +* It is required the actions are contained in a `FieldSet` (`getCMSActions` returns this already). +* Standalone buttons are created by adding a top-level `FormAction` (no such button is added by default). +* Button groups are created by adding a top-level `CompositeField` with `FormActions` in it. +* A `MajorActions` button group is already provided as a default. +* Drop ups with additional actions that appear as links are created via a `TabSet` and `Tabs` with `FormActions` inside. +* A `ActionMenus.MoreOptions` tab is already provided as a default and contains some minor actions. +* You can override the actions completely by providing your own `getAllCMSFields`. + +Let's walk through a couple of examples of adding new CMS actions in `getCMSActions`. + +First of all we can add a regular standalone button anywhere in the set. Here we are inserting it in the front of all +other actions. We could also add a button group (`CompositeField`) in a similar fashion. + + :::php + $fields->unshift(FormAction::create('normal', 'Normal button')); + +We can affect the existing button group by manipulating the `CompositeField` already present in the `FieldList`. + + :::php + $fields->fieldByName('MajorActions')->push(FormAction::create('grouped', 'New group button')); + +Another option is adding actions into the drop-up - best place for placing infrequently used minor actions. + + :::php + $fields->addFieldToTab('ActionMenus.MoreOptions', FormAction::create('minor', 'Minor action')); + +We can also easily create new drop-up menus by defining new tabs within the `TabSet`. + + :::php + $fields->addFieldToTab('ActionMenus.MyDropUp', FormAction::create('minor', 'Minor action in a new drop-up')); + +
+Empty tabs will be automatically removed from the `FieldList` to prevent clutter. +
+ +New actions will need associated controller handlers to work. You can use a `LeftAndMainExtension` to provide one. Refer +to [Controller documentation](../topics/controller) for instructions on setting up handlers. + +To make the actions more user-friendly you can also use alternating buttons as detailed in the [CMS Alternating +Button](../reference/cms-alternating-button) how-to. + ## Summary In a few lines of code, we've customized the look and feel of the CMS. @@ -136,3 +185,4 @@ blocks and concepts for more complex extensions as well. * [Reference: CMS Architecture](../reference/cms-architecture) * [Reference: Layout](../reference/layout) * [Topics: Rich Text Editing](../topics/rich-text-editing) + * [CMS Alternating Button](../reference/cms-alternating-button) diff --git a/javascript/TabSet.js b/javascript/TabSet.js index 2d30fcf58..7b0609f52 100644 --- a/javascript/TabSet.js +++ b/javascript/TabSet.js @@ -4,6 +4,80 @@ * Lightweight wrapper around jQuery UI tabs. */ $('.ss-tabset').entwine({ + + /*Custom functionality for special action tabsets*/ + actionTabs: function(){ + this.tabs( + 'option', + 'collapsible', + true + ).tabs('option', 'active', false); + + //Apply special behaviour to the cms actions row + if(this.hasClass('cms-actions-row')){ + + /* If actions panel is within the tree, apply active class + to help animate open/close on hover + Position must be reset else anyone coming from main sitetree + will see broken tabs */ + var container = this.parent().parent(); + if($(container).hasClass('cms-tree-view-sidebar')){ + $('.ui-tabs-nav li').hover(function(){ + $(this).parent().find('li .active').removeClass('active'); + $(this).find('a').addClass('active'); + }); + + this.tabs({ + beforeActivate:function(event, ui){ + var activePanel = ui.newPanel; + $(activePanel).attr("style","left : auto; right: auto"); + $(this).closest('.ss-ui-action-tabset').removeClass('tabset-open').removeClass('tabset-open-last'); + + if($(activePanel).length > 0){ + $(activePanel).parent().addClass('tabset-open'); + } + } + }); + }else{ + /* If the tabs are in the full site tree view, do some + positioning so tabPanel stays with relevent tab */ + this.tabs({ + beforeActivate:function(event, ui){ + var activePanel = ui.newPanel; + var activeTab = ui.newTab; + $(this).closest('.ss-ui-action-tabset').removeClass('tabset-open').removeClass('tabset-open-last'); + if($(activePanel).length > 0){ + if($(activeTab).hasClass("last")){ + $(activePanel).attr("style","left : auto; right: 0px"); + $(activePanel).parent().addClass('tabset-open-last');//last needs to be styled differently when open + }else{ + $(activePanel).attr("style","left: "+activeTab.position().left+"px"); + if($(activeTab).hasClass("first")){ + $(activePanel).attr("style","left: 0px"); + $(activePanel).parent().addClass('tabset-open'); + }else{ + $(activePanel).attr("style","left: "+activeTab.position().left+"px"); + } + } + } + + } + }); + } + }else if(this.parents('.south')){ + this.tabs({ + beforeActivate:function(event, ui){ + var activePanel = ui.newPanel; + var activeTab = ui.newTab; + if($(activePanel).length > 0){ + $(activePanel).attr("style","left: "+activeTab.position().left+"px"); + } + } + }); + } + //Check if tabs should open upwards, and adjust + this.riseUp(); + }, onadd: function() { // Can't name redraw() as it clashes with other CMS entwine classes this.redrawTabs(); @@ -13,9 +87,49 @@ if(this.data('uiTabs')) this.tabs('destroy'); this._super(); }, + riseUp: function(){ + /* Function checks to see if a tab should be opened upwards + (based on space concerns. If true, the rise-up class is applied + and the position is calculated and applied to the element */ + var elHeight = $(this).find('.ui-tabs-panel').outerHeight(); + var trigger = $(this).find('.ui-tabs-nav').outerHeight(); + var endOfWindow = ($(window).height() + $(document).scrollTop()) - trigger; + var elPos = $(this).find('.ui-tabs-nav').offset().top; + if(elPos + elHeight >= endOfWindow && elPos - elHeight > 0){ + this.addClass('rise-up'); + + /* Apply position to tab */ + this.tabs({ + activate:function(event, ui){ + var activePanel = ui.newPanel; + var activeTab = ui.newTab; + if(activeTab.position()!=null){ + var top = -activePanel.outerHeight(); + var containerSouth = activePanel.parents('.south'); + if(containerSouth){ + var padding = activeTab.offset().top-containerSouth.offset().top; + top = top-padding; + } + var style = $(activePanel).attr("style"); + + $(activePanel).attr("style", style+"top: "+top+"px;"); + } + } + }); + + }else{ + this.removeClass('rise-up'); + } + return false; + }, redrawTabs: function() { this.rewriteHashlinks(); this.tabs(); + + //Apply special behaviour to action tabs: closed by default, and collapsible + if(this.hasClass('ss-ui-action-tabset')){ + this.actionTabs(); + } }, /** diff --git a/scss/GridField.scss b/scss/GridField.scss index 73423e558..25d9995e4 100644 --- a/scss/GridField.scss +++ b/scss/GridField.scss @@ -39,14 +39,13 @@ $gf_grid_x: 16px; .cms { .ss-gridfield { & > div { - margin-bottom: $gf_grid_y*3; &.addNewGridFieldButton{ margin-bottom: 0; .action { - margin-bottom: $gf_grid_y; - } + margin-bottom:$gf_grid_y; } } + } &[data-selectable] { tr.ui-selected, tr.ui-selecting { @@ -66,9 +65,6 @@ $gf_grid_x: 16px; span.btn-icon-download-csv { height:17px; //exact height of icon } - .ui-button-text { - padding-left:26px; //to accomodate wider export icon - } } .right { float:right; @@ -95,8 +91,8 @@ $gf_grid_x: 16px; .ss-gridfield-buttonrow { font-size: $gf_grid_y*1.2; + } } - } .ss-gridfield { .grid-levelup { @@ -120,7 +116,7 @@ $gf_grid_x: 16px; margin-bottom: $gf_grid_y; @include inline-block(); } - } + } table.ss-gridfield-table { display: table; @include box-shadow-none; diff --git a/scss/UploadField.scss b/scss/UploadField.scss index d2474504e..cfbe8ffda 100644 --- a/scss/UploadField.scss +++ b/scss/UploadField.scss @@ -22,7 +22,7 @@ .middleColumn { // TODO .middleColumn styling should probably be theme specific (eg cms ui will look different than blackcandy) // so we should move this style into the cms and black candy files - width: 526px; + width: 510px; padding: 0; background: #fff; border: 1px solid lighten($color-medium-separator, 20%);