diff --git a/.travis.yml b/.travis.yml index 89c00a825..81ca66d41 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,6 @@ language: php php: - - 5.4 - 5.5 - 5.6 - 7.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index 8981616e1..71ea9ad6f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -307,7 +307,7 @@ - All instances now use the Cron queue driver by default (see config queue.default). - Created My Settings backend page. Renamed old My Settings to My Account. - Moved Editor Preferences to My Settings area. - - Created Backend Preferences page, used for setting the Backend langauge. + - Created Backend Preferences page, used for setting the Backend language. - Dropdown field options can now supply an image or icon. - CMS Pages now have a hidden flag. @@ -338,7 +338,7 @@ * **Build 106** (2014-06-10) - Upgrade to Laravel 4.2. - - Form fields can now pass context via their name definnition using syntax `field@context`. + - Form fields can now pass context via their name definition using syntax `field@context`. - Added a code editor preferences page. - Fixes a bug where morphToMany relations show all records in list rows. diff --git a/bootstrap/app.php b/bootstrap/app.php index 1304ef30b..cc0ec8d58 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -27,18 +27,18 @@ $app = new October\Rain\Foundation\Application( */ $app->singleton( - 'Illuminate\Contracts\Http\Kernel', - 'October\Rain\Foundation\Http\Kernel' + Illuminate\Contracts\Http\Kernel::class, + October\Rain\Foundation\Http\Kernel::class ); $app->singleton( - 'Illuminate\Contracts\Console\Kernel', - 'October\Rain\Foundation\Console\Kernel' + Illuminate\Contracts\Console\Kernel::class, + October\Rain\Foundation\Console\Kernel::class ); $app->singleton( - 'Illuminate\Contracts\Debug\ExceptionHandler', - 'October\Rain\Foundation\Exception\Handler' + Illuminate\Contracts\Debug\ExceptionHandler::class, + October\Rain\Foundation\Exception\Handler::class ); /* diff --git a/composer.json b/composer.json index a7d6a4a9b..51b165d56 100644 --- a/composer.json +++ b/composer.json @@ -24,18 +24,18 @@ "source": "https://github.com/octobercms/october" }, "require": { - "php": ">=5.4", + "php": ">=5.5.9", "october/rain": "~1.0", "october/system": "~1.0", "october/backend": "~1.0", "october/cms": "~1.0", - "laravel/framework": "5.0.*", - "illuminate/html": "5.0.*", + "laravel/framework": "5.1.*", "wikimedia/composer-merge-plugin": "dev-master" }, "require-dev": { + "fzaninotto/faker": "~1.4", "phpunit/phpunit": "~4.0", - "phpunit/phpunit-selenium": ">=1.2" + "phpunit/phpunit-selenium": "~1.2" }, "autoload-dev": { "classmap": [ @@ -62,6 +62,6 @@ "recurse": true, "replace": false, "merge-dev": false - } +} } } diff --git a/config/app.php b/config/app.php index 1da5680c6..87cc0b602 100644 --- a/config/app.php +++ b/config/app.php @@ -81,9 +81,9 @@ return [ | */ - 'key' => 'CHANGE_ME!!!!!!!', + 'key' => 'CHANGE_ME!!!!!!!!!!!!!!!!!!!!!!!', - 'cipher' => MCRYPT_RIJNDAEL_128, + 'cipher' => 'AES-256-CBC', /* |-------------------------------------------------------------------------- @@ -111,7 +111,7 @@ return [ | */ - 'providers' => array_merge(include(base_path().'/modules/system/providers.php'), [ + 'providers' => array_merge(include(base_path('modules/system/providers.php')), [ // 'Illuminate\Html\HtmlServiceProvider', // Example @@ -129,7 +129,7 @@ return [ | */ - 'aliases' => array_merge(include(base_path().'/modules/system/aliases.php'), [ + 'aliases' => array_merge(include(base_path('modules/system/aliases.php')), [ // 'Str' => 'Illuminate\Support\Str', // Example diff --git a/config/broadcasting.php b/config/broadcasting.php new file mode 100644 index 000000000..02cf625a5 --- /dev/null +++ b/config/broadcasting.php @@ -0,0 +1,52 @@ + 'pusher', + + /* + |-------------------------------------------------------------------------- + | Broadcast Connections + |-------------------------------------------------------------------------- + | + | Here you may define all of the broadcast connections that will be used + | to broadcast events to other systems or over websockets. Samples of + | each available type of connection are provided inside this array. + | + */ + + 'connections' => [ + + 'pusher' => [ + 'driver' => 'pusher', + 'key' => '', + 'secret' => '', + 'app_id' => '', + 'options' => [ + // + ], + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + ], + + 'log' => [ + 'driver' => 'log', + ], + + ], + +]; \ No newline at end of file diff --git a/config/cache.php b/config/cache.php index 425c74e4b..65939e071 100644 --- a/config/cache.php +++ b/config/cache.php @@ -44,7 +44,7 @@ return [ 'file' => [ 'driver' => 'file', - 'path' => storage_path().'/framework/cache', + 'path' => storage_path('framework/cache'), ], 'memcached' => [ diff --git a/config/cms.php b/config/cms.php index 88ee86081..74d924b76 100644 --- a/config/cms.php +++ b/config/cms.php @@ -4,16 +4,15 @@ return [ /* |-------------------------------------------------------------------------- - | Bleeding edge updates + | Back-end URI prefix |-------------------------------------------------------------------------- | - | If you are developing with October, it is important to have the latest - | code base, set this value to 'true' to tell the platform to download - | and use the development copies of core files and plugins. + | Specifies the URL name used for accessing back-end pages. + | For example: backend -> http://localhost/backend | */ - 'edgeUpdates' => false, + 'backendUri' => 'backend', /* |-------------------------------------------------------------------------- @@ -28,14 +27,16 @@ return [ /* |-------------------------------------------------------------------------- - | Back-end URI prefix + | Bleeding edge updates |-------------------------------------------------------------------------- | - | Specifies the URI prefix used for accessing back-end pages. + | If you are developing with October, it is important to have the latest + | code base, set this value to 'true' to tell the platform to download + | and use the development copies of core files and plugins. | */ - 'backendUri' => 'backend', + 'edgeUpdates' => false, /* |-------------------------------------------------------------------------- @@ -250,6 +251,19 @@ return [ 'defaultMask' => ['file' => null, 'folder' => null], + /* + |-------------------------------------------------------------------------- + | Safe mode + |-------------------------------------------------------------------------- + | + | If safe mode is enabled, the PHP code section is disabled in the CMS + | for security reasons. If set to null, safe mode is on when debug mode + | (app.debug) is disabled. + | + */ + + 'enableSafeMode' => null, + /* |-------------------------------------------------------------------------- | Cross Site Request Forgery (CSRF) Protection diff --git a/config/database.php b/config/database.php index 13f816854..3835c07b6 100644 --- a/config/database.php +++ b/config/database.php @@ -118,6 +118,7 @@ return [ 'default' => [ 'host' => '127.0.0.1', + 'password' => null, 'port' => 6379, 'database' => 0, ], diff --git a/config/filesystems.php b/config/filesystems.php index c636d36c3..a265cbb3e 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -45,7 +45,7 @@ return [ 'local' => [ 'driver' => 'local', - 'root' => storage_path().'/app', + 'root' => storage_path('app'), ], 's3' => [ diff --git a/config/session.php b/config/session.php index 739563bde..3ee92a981 100644 --- a/config/session.php +++ b/config/session.php @@ -57,7 +57,7 @@ return [ | */ - 'files' => storage_path().'/framework/sessions', + 'files' => storage_path('framework/sessions'), /* |-------------------------------------------------------------------------- diff --git a/config/testing/cms.php b/config/testing/cms.php index 36fe39edd..dfea912c7 100644 --- a/config/testing/cms.php +++ b/config/testing/cms.php @@ -96,7 +96,7 @@ return [ | */ - 'pluginsPathLocal' => base_path().'/tests/fixtures/plugins', + 'pluginsPathLocal' => base_path('tests/fixtures/plugins'), /* |-------------------------------------------------------------------------- @@ -107,6 +107,6 @@ return [ | */ - 'themesPathLocal' => base_path().'/tests/fixtures/themes', + 'themesPathLocal' => base_path('tests/fixtures/themes'), ]; diff --git a/config/view.php b/config/view.php index 215dfafc2..9948f06ea 100644 --- a/config/view.php +++ b/config/view.php @@ -28,6 +28,6 @@ return [ | */ - 'compiled' => realpath(storage_path().'/framework/views'), + 'compiled' => realpath(storage_path('framework/views')), ]; diff --git a/modules/backend/ServiceProvider.php b/modules/backend/ServiceProvider.php index f362936dc..9451f075d 100644 --- a/modules/backend/ServiceProvider.php +++ b/modules/backend/ServiceProvider.php @@ -1,8 +1,6 @@ [ 'label' => 'backend::lang.dashboard.menu_label', 'icon' => 'icon-dashboard', + 'iconSvg' => 'modules/backend/assets/images/dashboard-icon.svg', 'url' => Backend::url('backend'), 'permissions' => ['backend.access_dashboard'], 'order' => 1 @@ -165,10 +164,6 @@ class ServiceProvider extends ModuleServiceProvider 'label' => 'Color picker', 'code' => 'colorpicker' ]); - $manager->registerFormWidget('Backend\FormWidgets\DataGrid', [ - 'label' => 'Data Grid', - 'code' => 'datagrid' - ]); // @deprecated if year >= 2016 $manager->registerFormWidget('Backend\FormWidgets\DataTable', [ 'label' => 'Data Table', 'code' => 'datatable' diff --git a/modules/backend/assets/css/dashboard/dashboard.css b/modules/backend/assets/css/dashboard/dashboard.css new file mode 100644 index 000000000..c09524d57 --- /dev/null +++ b/modules/backend/assets/css/dashboard/dashboard.css @@ -0,0 +1,69 @@ +.dashboard-container > .report-container { + -webkit-transition: background 1s ease; + transition: background 1s ease; + border-radius: 5px; +} +.dashboard-container > .report-container.loading { + position: absolute; + width: 100%; + height: 100%; + background: #fff; +} +.dashboard-container > .report-container.loading .loading-indicator-container { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; +} +.dashboard-container > .report-container.loading .loading-indicator-container .loading-indicator { + background: transparent; + padding: 0; + height: 150px; + top: 50%; + margin-top: -90px; +} +.dashboard-container > .report-container.loading .loading-indicator-container .loading-indicator:after { + content: ''; + background: transparent url('../../images/dashboard-loading-indicator.svg') no-repeat; + background-size: 100px 100px; + width: 100px; + height: 100px; + left: 50%; + top: 50%; + margin-top: -50px; + margin-left: -50px; + position: absolute; + -webkit-animation: spin 1s linear infinite; + animation: spin 1s linear infinite; +} +.dashboard-container > .report-container.loading .loading-indicator-container .loading-indicator:before { + content: ''; + background: transparent url('../../images/dashboard-loading-indicator.svg') no-repeat; + background-size: 150px 150px; + width: 150px; + height: 150px; + left: 50%; + top: 50%; + margin-top: -75px; + margin-left: -75px; + position: absolute; + /*.animation(rspin 1.5s linear infinite);*/ + -webkit-animation: spin 1.5s linear infinite; + animation: spin 1.5s linear infinite; + opacity: 0.9; + filter: alpha(opacity=90); +} +.dashboard-container > .report-container.loading .loading-indicator-container .loading-indicator > span { + left: 50%; + width: 200px; + height: 200px; + margin-left: -100px; + margin-top: -100px; + background-size: 200px 200px; + background-image: url('../../images/dashboard-loading-indicator.svg'); + -webkit-animation: spin 2s linear infinite; + animation: spin 2s linear infinite; + opacity: 0.8; + filter: alpha(opacity=80); +} diff --git a/modules/backend/assets/css/october.css b/modules/backend/assets/css/october.css index 99f947dce..1fa7a45f0 100644 --- a/modules/backend/assets/css/october.css +++ b/modules/backend/assets/css/october.css @@ -109,7 +109,7 @@ .sweet-alert .icon.success .line.tip{width:25px;left:14px;top:46px;-webkit-transform:rotate(45deg);transform:rotate(45deg)} .sweet-alert .icon.success .line.long{width:47px;right:8px;top:38px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)} .sweet-alert .icon.custom{background-size:contain;border-radius:0;border:none;background-position:center center;background-repeat:no-repeat} -.sweet-alert .btn-default:focus{border-color:#e3e3e3;outline:0} +.sweet-alert .btn-default:focus{border-color:#a7afb4;outline:0} .sweet-alert .btn-success:focus{border-color:#2b9854;outline:0} .sweet-alert .btn-info:focus{border-color:#46b8da;outline:0} .sweet-alert .btn-danger:focus{border-color:#952518;outline:0} @@ -119,11 +119,15 @@ .sweet-alert h2{word-break:word-break;word-wrap:break-word;max-height:350px;overflow-y:auto;margin:10px 0 17px 0;color:#2b3e50;text-align:left;font-size:15px;line-height:23px} .sweet-alert p{margin:0} .sweet-alert p.text-muted{margin-bottom:20px;color:#555555} -.control-simplelist{font-size:13px} +.control-simplelist{font-size:13px;padding:20px 20px 2px 20px;margin-bottom:25px;background:#ffffff;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px} .control-simplelist ul{padding-left:15px} .control-simplelist.form-control ul{margin-bottom:0} .control-simplelist.form-control li{padding-top:5px;padding-bottom:5px} .control-simplelist.with-icons ul,.control-simplelist.with-checkboxes ul,.control-simplelist.is-divided ul,.control-simplelist.is-selectable ul{list-style-type:none;padding-left:0} +.control-simplelist.with-checkboxes li{margin-top:-5px} +.control-simplelist.with-checkboxes li:first-child{margin-top:0} +.control-simplelist.with-checkboxes li:last-child div.custom-checkbox{margin-bottom:0} +.control-simplelist.with-checkboxes li:last-child div.custom-checkbox label{margin-bottom:5px} .control-simplelist.is-sortable li.placeholder{position:relative} .control-simplelist.is-sortable li.placeholder:before{top:-10px;position:absolute;content:'';display:block;width:0;height:0;border-top:4.5px solid transparent;border-bottom:4.5px solid transparent;border-left:5px solid #999999} .control-simplelist.is-sortable li.dragged{position:absolute;opacity:0.5;filter:alpha(opacity=50);z-index:2000;color:#e67e22;width:auto !important} @@ -133,7 +137,7 @@ .control-simplelist.is-scrollable.size-large{min-height:400px} .control-simplelist.is-scrollable.size-huge{min-height:450px} .control-simplelist.is-scrollable.size-giant{min-height:550px} -.control-simplelist.is-divided li,.control-simplelist.is-selectable li{padding:5px 10px;border-bottom:1px solid #e2e2e2} +.control-simplelist.is-divided li,.control-simplelist.is-selectable li{padding:5px 10px;border-bottom:1px solid #d4d8da} .control-simplelist.is-divided li .heading,.control-simplelist.is-selectable li .heading{font-size:14px;font-weight:bold} .control-simplelist.is-divided li:last-child,.control-simplelist.is-selectable li:last-child{border-bottom:none} .control-simplelist.is-selectable li a{padding:5px 10px;margin:-5px -10px;display:block;color:#333333} @@ -143,7 +147,7 @@ .control-simplelist.is-selectable li.active a{background:#f0f0f0} .control-simplelist.is-selectable li.active a:hover{background:#4da7e8} .list-preview .control-simplelist.is-selectable ul{margin-bottom:0} -.drag-noselect{user-select:none;-o-user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none} +.drag-noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none} .control-scrollbar{position:relative;overflow:hidden;height:100%;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0)} .control-scrollbar > div{-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0)} .control-scrollbar > .scrollbar-scrollbar{position:absolute;z-index:100} @@ -165,23 +169,23 @@ @media (max-width:768px){.responsive-sidebar > .layout-cell:last-child .control-scrollbar{overflow:visible;height:auto} .responsive-sidebar > .layout-cell:last-child .control-scrollbar .scrollbar-scrollbar{display:none !important} } -.control-filelist p.no-data{padding:18px 0;margin:0;color:#666666;font-size:12px;text-align:center;font-weight:400;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px} +.control-filelist p.no-data{padding:22px 0;margin:0;color:#666666;font-size:14px;text-align:center;font-weight:normal;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px} .control-filelist ul{padding:0;margin:0} -.control-filelist ul li{font-weight:300;line-height:150%;position:relative;list-style:none} +.control-filelist ul li{font-weight:normal;line-height:150%;position:relative;list-style:none} .control-filelist ul li a:hover{background:#dddddd} .control-filelist ul li.active > a{background:#dddddd;position:relative} .control-filelist ul li.active > a:after{position:absolute;height:100%;width:4px;left:0;top:0;background:#e67e22;display:block;content:' '} -.control-filelist ul li a{display:block;padding:10px 40px 10px 20px;outline:none} +.control-filelist ul li a{display:block;padding:10px 45px 10px 20px;outline:none} .control-filelist ul li a:hover,.control-filelist ul li a:focus,.control-filelist ul li a:active{text-decoration:none} .control-filelist ul li a span{display:block} -.control-filelist ul li a span.title{font-weight:500;color:#405261;font-size:12px} -.control-filelist ul li a span.description{color:#8f8f8f;font-size:12px;font-weight:500} -.control-filelist ul li a span.description strong{color:#405261;font-weight:500} -.control-filelist ul li.group > h4,.control-filelist ul li.group > div.group > h4{font-weight:500;font-size:12px;margin-top:0;margin-bottom:0;display:relative} +.control-filelist ul li a span.title{font-weight:normal;color:#405261;font-size:14px} +.control-filelist ul li a span.description{color:#8f8f8f;font-size:13px;white-space:nowrap;font-weight:normal;overflow:hidden;text-overflow:ellipsis} +.control-filelist ul li a span.description strong{color:#405261;font-weight:normal} +.control-filelist ul li.group > h4,.control-filelist ul li.group > div.group > h4{font-weight:normal;font-size:14px;margin-top:0;margin-bottom:0;position:relative} .control-filelist ul li.group > h4 a,.control-filelist ul li.group > div.group > h4 a{padding:10px 20px 10px 53px;color:#405261;position:relative;outline:none} .control-filelist ul li.group > h4 a:hover,.control-filelist ul li.group > div.group > h4 a:hover{background:transparent} .control-filelist ul li.group > h4 a:before,.control-filelist ul li.group > div.group > h4 a:before,.control-filelist ul li.group > h4 a:after,.control-filelist ul li.group > div.group > h4 a:after{width:10px;height:10px;display:block;position:absolute;top:1px} -.control-filelist ul li.group > h4 a:after,.control-filelist ul li.group > div.group > h4 a:after{left:34px;font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em;content:"\f07b";color:#a1aab1;font-size:14px;top:9px} +.control-filelist ul li.group > h4 a:after,.control-filelist ul li.group > div.group > h4 a:after{left:33px;top:9px;font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em;content:"\f07b";color:#a1aab1;font-size:16px} .control-filelist ul li.group > h4 a:before,.control-filelist ul li.group > div.group > h4 a:before{left:20px;top:9px;color:#cfcfcf;font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em;content:"\f0da";-webkit-transform:rotate(90deg) translate(5px,0);-ms-transform:rotate(90deg) translate(5px,0);transform:rotate(90deg) translate(5px,0);-webkit-transition:all 0.1s ease;transition:all 0.1s ease} .control-filelist ul li.group > ul > li > a{padding-left:52px} .control-filelist ul li.group > ul > li.group{padding-left:20px} @@ -206,18 +210,19 @@ .control-filelist ul li > div.controls a.control:hover{opacity:1;filter:alpha(opacity=100)} .control-filelist ul li:hover > div.controls,.control-filelist ul li:hover > a.control{display:block !important} .control-filelist ul li:hover > div.controls > a.control,.control-filelist ul li:hover > a.control > a.control{display:block !important} -.control-filelist ul li .checkbox{position:absolute;top:13px;right:17px} +.control-filelist ul li .checkbox{position:absolute;top:-5px;right:-5px} .control-filelist ul li .checkbox label{margin-right:0} .control-filelist ul li .checkbox label:before{border-color:#cccccc} .control-filelist.single-line ul li a span.title{text-overflow:ellipsis;overflow:hidden;white-space:nowrap} .control-filelist.hero ul li{background:#ffffff;border-bottom:none} .control-filelist.hero ul li > a{padding:16px 45px 15px 50px;font-size:13px;border-bottom:1px solid #ecf0f1} -.control-filelist.hero ul li > a span.title{font-size:13px;font-weight:600;color:#2b3e50} +.control-filelist.hero ul li > a span.title{font-size:15px;font-weight:normal;color:#2b3e50} +.control-filelist.hero ul li > a span.description{font-size:14px} .control-filelist.hero ul li > a .list-icon{position:absolute;left:14px;top:20px;font-size:22px;color:#b7c0c2} .control-filelist.hero ul li > a:hover{background:#58b6f7;border-bottom:1px solid #58b6f7 !important} .control-filelist.hero ul li > a:hover span.title,.control-filelist.hero ul li > a:hover span.description{color:#ffffff !important} .control-filelist.hero ul li > a:hover .list-icon{color:#ffffff !important} -.control-filelist.hero ul li .checkbox{top:17px;right:17px} +.control-filelist.hero ul li .checkbox{top:0;right:0} .control-filelist.hero ul li.active > a{border-bottom:1px solid #dddddd} .control-filelist.hero ul li.active > a:after{top:-1px;bottom:-1px;height:auto} .control-filelist.hero ul li.active > a > span.borders:before{content:' ';position:absolute;width:100%;height:1px;display:block;left:0;background-color:#dddddd} @@ -231,7 +236,7 @@ .control-filelist.hero ul li.separator{position:relative;border-bottom:1px solid #95a5a6;padding:17px 15px 18px 15px} .control-filelist.hero ul li.separator:before{z-index:31;content:'';display:block;width:0;height:0;border-left:9.5px solid transparent;border-right:9.5px solid transparent;border-top:11px solid #ffffff;border-bottom-width:0;position:absolute;left:13px;bottom:-8px} .control-filelist.hero ul li.separator:after{z-index:30;content:'';display:block;width:0;height:0;border-left:8.5px solid transparent;border-right:8.5px solid transparent;border-top:9px solid #95a5a6;border-bottom-width:0;position:absolute;left:14px;bottom:-9px} -.control-filelist.hero ul li.separator h5{color:#2b3e50;font-size:15px;margin:0;font-weight:600;padding:0} +.control-filelist.hero ul li.separator h5{color:#2b3e50;font-size:15px;margin:0;font-weight:bold;padding:0} .control-filelist.hero ul > li.group > ul > li > a{padding-left:66px} .control-filelist.hero.single-level ul li:hover{background:#58b6f7} .control-filelist.hero.single-level ul li:hover > a{background:#58b6f7;border-bottom:1px solid #58b6f7 !important} @@ -244,7 +249,7 @@ .tooltip.in{opacity:1;filter:alpha(opacity=100)} .oc-logo-white{background-image:url(../images/october-logo-white.svg);background-position:50% 50%;background-repeat:no-repeat;background-size:contain} .oc-bg-logo{background-image:url(../images/october-logo-transparent.svg);background-position:50% 50%;background-repeat:no-repeat;background-size:50% auto} -.report-widget{padding:15px;background:white;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px} +.report-widget{padding:15px;background:white;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px} .report-widget h3{font-size:14px;color:#7e8c8d;text-transform:uppercase;font-weight:600;margin-top:0;margin-bottom:30px} .report-widget .height-100{height:100px} .report-widget .height-200{height:200px} @@ -272,14 +277,14 @@ .control-treeview{margin-bottom:40px; } .control-treeview ol{margin:0;padding:0;list-style:none;background:#ffffff} .control-treeview ol > li{-webkit-transition:width 1s;transition:width 1s} -.control-treeview ol > li > div{font-size:13px;font-weight:600;background:#ffffff;border-bottom:1px solid #ecf0f1;position:relative} +.control-treeview ol > li > div{font-size:15px;font-weight:normal;background:#ffffff;border-bottom:1px solid #ecf0f1;position:relative} .control-treeview ol > li > div > a{color:#2b3e50;padding:16px 45px 15px 61px;display:block;line-height:150%;text-decoration:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box} .control-treeview ol > li > div:before{content:' ';background-image:url(../images/treeview-icons.png);background-position:0px -28px;background-repeat:no-repeat;background-size:42px auto;position:absolute;width:21px;height:22px;left:28px;top:20px} -.control-treeview ol > li > div span.comment{display:block;font-weight:400;color:#95a5a6;font-size:12px;margin-top:2px;overflow:hidden;text-overflow:ellipsis} -.control-treeview ol > li > div > span.expand{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;display:none;position:absolute;left:0;width:20px;height:20px;top:24px;left:2px;cursor:pointer;color:#bdc3c7;-webkit-transition:transform 0.1s ease;transition:transform 0.1s ease} +.control-treeview ol > li > div span.comment{display:block;font-weight:400;color:#95a5a6;font-size:14px;margin-top:2px;overflow:hidden;text-overflow:ellipsis} +.control-treeview ol > li > div > span.expand{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;display:none;position:absolute;width:20px;height:20px;top:24px;left:2px;cursor:pointer;color:#bdc3c7;-webkit-transition:transform 0.1s ease;transition:transform 0.1s ease} .control-treeview ol > li > div > span.expand:before{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em;content:"\f0da";line-height:100%;font-size:15px;position:relative;left:8px;top:2px} -.control-treeview ol > li > div > span.drag-handle{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;-webkit-transition:opacity 0.4s;transition:opacity 0.4s;position:absolute;right:24px;bottom:5px;width:14px;height:14px;cursor:move;color:#bdc3c7;opacity:0;filter:alpha(opacity=0)} -.control-treeview ol > li > div > span.drag-handle:before{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em;content:"\f0c9";font-size:14px} +.control-treeview ol > li > div > span.drag-handle{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;-webkit-transition:opacity 0.4s;transition:opacity 0.4s;position:absolute;right:18px;bottom:5px;width:18px;height:19px;cursor:move;color:#bdc3c7;opacity:0;filter:alpha(opacity=0)} +.control-treeview ol > li > div > span.drag-handle:before{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em;content:"\f0c9";font-size:18px} .control-treeview ol > li > div span.borders{font-size:0} .control-treeview ol > li > div > ul.submenu{position:absolute;left:20px;bottom:-37px;padding:0;list-style:none;z-index:200;height:37px;display:none;margin-left:15px;background:transparent url(../images/treeview-submenu-tabs.png) repeat-x left -39px} .control-treeview ol > li > div > ul.submenu:before,.control-treeview ol > li > div > ul.submenu:after{background:transparent url(../images/treeview-submenu-tabs.png) no-repeat left top;content:' ';display:block;width:20px;height:37px;position:absolute;top:0} @@ -289,7 +294,7 @@ .control-treeview ol > li > div > ul.submenu li a{display:block;padding:4px 3px 0 3px;color:#ffffff;text-decoration:none;outline:none} .control-treeview ol > li > div > ul.submenu li a i{margin-right:5px} .control-treeview ol > li > div:hover > ul.submenu{display:block} -.control-treeview ol > li > div .checkbox{position:absolute;top:19px;right:17px} +.control-treeview ol > li > div .checkbox{position:absolute;top:0;right:0} .control-treeview ol > li > div .checkbox label{margin-right:0} .control-treeview ol > li > div .checkbox label:before{border-color:#cccccc} .control-treeview ol > li > div.popover-highlight{background-color:#58b6f7 !important} @@ -397,28 +402,32 @@ .control-treeview ol > li.drop-target > div:before{background-position:0px -129px} .control-treeview ol > li.drop-target.has-subitems > div:before{background-position:0px -102px} } -.sidenav-tree{width:280px;background:#34495e} -.sidenav-tree .control-toolbar{padding:20px 0 20px 20px} -.sidenav-tree .control-toolbar input.form-control{border:none} +.sidenav-tree{width:300px;background:#31495f} +.sidenav-tree .control-toolbar{padding:0} +.sidenav-tree .control-toolbar .toolbar-item{display:block} +.sidenav-tree .control-toolbar input.form-control{border:none;outline:none;padding:12px 13px 13px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:inset -5px 0 3px rgba(0,0,0,0.1);box-shadow:inset -5px 0 3px rgba(0,0,0,0.1)} +.sidenav-tree .control-toolbar input.form-control.search{background-position:right -78px} .sidenav-tree ul{padding:0;margin:0;list-style:none} .sidenav-tree div.scrollbar-thumb{background:#2b3e50 !important} -.sidenav-tree ul.top-level > li[data-status=collapsed] > div.group h3:before{-webkit-transform:rotate(0deg) translate(3px,0);-ms-transform:rotate(0deg) translate(3px,0);transform:rotate(0deg) translate(3px,0)} +.sidenav-tree ul.top-level > li[data-status=collapsed] > div.group h3:before{-webkit-transform:rotate(0deg) translate(2px,-2px);-ms-transform:rotate(0deg) translate(2px,-2px);transform:rotate(0deg) translate(2px,-2px)} +.sidenav-tree ul.top-level > li[data-status=collapsed] > div.group h3:after{display:none} .sidenav-tree ul.top-level > li[data-status=collapsed] ul{display:none} -.sidenav-tree ul.top-level > li > div.group h3{background:#2b3e50;color:#ecf0f1;text-transform:uppercase;font-size:14px;padding:15px 15px 15px 33px;margin:0;position:relative;cursor:pointer} -.sidenav-tree ul.top-level > li > div.group h3:before{width:10px;height:10px;display:block;position:absolute;top:1px} -.sidenav-tree ul.top-level > li > div.group h3:before{left:13px;top:15px;color:#cfcfcf;font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em;content:"\f0da";-webkit-transform:rotate(90deg) translate(5px,0);-ms-transform:rotate(90deg) translate(5px,0);transform:rotate(90deg) translate(5px,0);-webkit-transition:all 0.1s ease;transition:all 0.1s ease} -.sidenav-tree ul.top-level > li > ul li a{display:block;position:relative;padding:15px 15px 15px 40px;background:#3d5265;margin-bottom:1px;color:rgba(255,255,255,0.26);text-decoration:none !important} +.sidenav-tree ul.top-level > li > div.group{position:relative} +.sidenav-tree ul.top-level > li > div.group:after{content:'';position:absolute;top:0;right:0;width:10px;height:100%;-webkit-box-shadow:inset -5px 0 3px rgba(0,0,0,0.1);box-shadow:inset -5px 0 3px rgba(0,0,0,0.1)} +.sidenav-tree ul.top-level > li > div.group h3{background:#2a3e51;color:#ecf0f1;text-transform:uppercase;font-size:15px;padding:15px 15px 15px 40px;margin:0;position:relative;cursor:pointer} +.sidenav-tree ul.top-level > li > div.group h3:before{display:block;position:absolute;width:10px;height:10px;left:16px;top:15px;color:#cfcfcf;font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em;content:"\f105";-webkit-transform:rotate(90deg) translate(5px,-3px);-ms-transform:rotate(90deg) translate(5px,-3px);transform:rotate(90deg) translate(5px,-3px);-webkit-transition:all 0.1s ease;transition:all 0.1s ease;font-size:16px} +.sidenav-tree ul.top-level > li > div.group h3:after{content:'';display:block;width:0;height:0;border-left:7.5px solid transparent;border-right:7.5px solid transparent;border-top:8px solid #2a3e51;border-bottom-width:0;position:absolute;left:15px;bottom:-8px;z-index:101} +.sidenav-tree ul.top-level > li > ul li a{display:block;position:relative;padding:18px 25px 18px 55px;background:transparent;border-bottom:1px solid #2a3e51;color:#ffffff;text-decoration:none !important} +.sidenav-tree ul.top-level > li > ul li a:after{content:'';position:absolute;top:0;right:0;width:10px;height:100%;-webkit-box-shadow:inset -5px 0 3px rgba(0,0,0,0.1);box-shadow:inset -5px 0 3px rgba(0,0,0,0.1)} .sidenav-tree ul.top-level > li > ul li a:hover{text-decoration:none} -.sidenav-tree ul.top-level > li > ul li a i{position:absolute;left:15px;top:17px;font-size:16px} +.sidenav-tree ul.top-level > li > ul li a i{position:absolute;left:16px;top:18px;font-size:22px} .sidenav-tree ul.top-level > li > ul li a span{display:block;line-height:150%} -.sidenav-tree ul.top-level > li > ul li a span.header{color:rgba(255,255,255,0.74);font-size:14px;margin-bottom:5px} -.sidenav-tree ul.top-level > li > ul li a span.description{color:rgba(255,255,255,0.64);font-size:12px;font-weight:100} -.sidenav-tree ul.top-level > li > ul li.active a{background:#34495e;color:rgba(255,255,255,0.91)} -.sidenav-tree ul.top-level > li > ul li.active a:before{content:' ';position:absolute;width:4px;background:#e67e22;left:0;top:0;height:100%} -.sidenav-tree ul.top-level > li > ul li.active a span.header{color:#ffffff} -.sidenav-tree ul.top-level > li > ul li.active a span.description{color:rgba(255,255,255,0.91)} -.sidenav-tree ul.top-level > li > ul li:last-child a{margin-bottom:0} -.sidenav-tree ul.top-level > li > ul li:hover a{background-color:#34495e} +.sidenav-tree ul.top-level > li > ul li a span.header{color:#ffffff;font-size:16px;margin-bottom:5px} +.sidenav-tree ul.top-level > li > ul li a span.description{color:#bdc3c7;font-size:15px} +.sidenav-tree ul.top-level > li > ul li.active a,.sidenav-tree ul.top-level > li > ul li:hover a{background:#1f99dc;color:rgba(255,255,255,0.91)} +.sidenav-tree ul.top-level > li > ul li.active a span.header,.sidenav-tree ul.top-level > li > ul li:hover a span.header{color:#ffffff} +.sidenav-tree ul.top-level > li > ul li.active a span.description,.sidenav-tree ul.top-level > li > ul li:hover a span.description{color:rgba(255,255,255,0.91)} +.sidenav-tree ul.top-level > li > ul li:last-child a{border-bottom:none} .sidenav-tree .back-link{display:none} @media (max-width:768px){.sidenav-tree{width:100%;height:auto !important;display:block !important} .sidenav-tree > .layout{display:none} @@ -479,27 +488,17 @@ div.control-scrollpad[data-direction=horizontal] > div{overflow-x:scroll;overflo div.control-scrollpad[data-direction=horizontal] > div::-webkit-scrollbar{width:auto;height:0} div.control-scrollpad > .scrollpad-scrollbar{z-index:199;position:absolute;top:0;right:0;bottom:0;width:11px;background-color:transparent;opacity:0;overflow:hidden;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-transition:opacity 0.3s;transition:opacity 0.3s} div.control-scrollpad > .scrollpad-scrollbar .drag-handle{position:absolute;right:2px;min-height:10px;width:7px;background-color:#aaaaaa;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px} -div.control-scrollpad > .scrollpad-scrollbar:hover{opacity:0.7;-webkit-transition:opacity 0 linear;transition:opacity 0 linear} -div.control-scrollpad > .scrollpad-scrollbar[data-visible]{opacity:0.7} +div.control-scrollpad > .scrollpad-scrollbar:hover{opacity:0.7;filter:alpha(opacity=70);-webkit-transition:opacity 0 linear;transition:opacity 0 linear} +div.control-scrollpad > .scrollpad-scrollbar[data-visible]{opacity:0.7;filter:alpha(opacity=70)} div.control-scrollpad > .scrollpad-scrollbar[data-hidden]{display:none} div.control-scrollpad[data-direction=horizontal] > .scrollpad-scrollbar{top:auto;left:0;width:auto;height:11px} div.control-scrollpad[data-direction=horizontal] > .scrollpad-scrollbar .drag-handle{right:auto;top:2px;height:7px;min-height:0;min-width:10px;width:auto} .autocomplete.dropdown-menu{background:white} .autocomplete.dropdown-menu li a{padding:3px 12px} -@font-face{font-family:'Open Sans';src:url('../font/OpenSans-Light.eot');src:url('../font/OpenSans-Light.eot?#iefix') format('embedded-opentype'),url('../font/OpenSans-Light.svg#open_sanslight') format('svg'),url('../font/OpenSans-Light.woff') format('woff'),url('../font/OpenSans-Light.ttf') format('truetype');font-style:normal;font-weight:300} -@font-face{font-family:'Open Sans';src:url('../font/OpenSans-Regular.eot');src:url('../font/OpenSans-Regular.eot?#iefix') format('embedded-opentype'),url('../font/OpenSans-Regular.svg#open_sansregular') format('svg'),url('../font/OpenSans-Regular.woff') format('woff'),url('../font/OpenSans-Regular.ttf') format('truetype');font-style:normal;font-weight:400} -@font-face{font-family:'Open Sans';src:url('../font/OpenSans-Semibold.eot');src:url('../font/OpenSans-Semibold.eot?#iefix') format('embedded-opentype'),url('../font/OpenSans-Semibold.svg#open_sanssemibold') format('svg'),url('../font/OpenSans-Semibold.woff') format('woff'),url('../font/OpenSans-Semibold.ttf') format('truetype');font-style:normal;font-weight:600} -@font-face{font-family:'Open Sans';src:url('../font/OpenSans-Bold.eot');src:url('../font/OpenSans-Bold.eot?#iefix') format('embedded-opentype'),url('../font/OpenSans-Bold.svg#open_sansbold') format('svg'),url('../font/OpenSans-Bold.woff') format('woff'),url('../font/OpenSans-Bold.ttf') format('truetype');font-style:normal;font-weight:700} -@font-face{font-family:'Open Sans';src:url('../font/OpenSans-LightItalic.eot');src:url('../font/OpenSans-LightItalic.eot?#iefix') format('embedded-opentype'),url('../font/OpenSans-LightItalic.svg#open_sanslight_italic') format('svg'),url('../font/OpenSans-LightItalic.woff') format('woff'),url('../font/OpenSans-LightItalic.ttf') format('truetype');font-style:italic;font-weight:300} -@font-face{font-family:'Open Sans';src:url('../font/OpenSans-Italic.eot');src:url('../font/OpenSans-Italic.eot?#iefix') format('embedded-opentype'),url('../font/OpenSans-Italic.svg#open_sansitalic') format('svg'),url('../font/OpenSans-Italic.woff') format('woff'),url('../font/OpenSans-Italic.ttf') format('truetype');font-style:italic;font-weight:400} -@font-face{font-family:'Open Sans';src:url('../font/OpenSans-SemiboldItalic.eot');src:url('../font/OpenSans-SemiboldItalic.eot?#iefix') format('embedded-opentype'),url('../font/OpenSans-SemiboldItalic.svg#open_sanssemibold_italic') format('svg'),url('../font/OpenSans-SemiboldItalic.woff') format('woff'),url('../font/OpenSans-SemiboldItalic.ttf') format('truetype');font-style:italic;font-weight:600} -@font-face{font-family:'Open Sans';src:url('../font/OpenSans-Light.eot');src:url('../font/OpenSans-Light.eot?#iefix') format('embedded-opentype'),url('../font/OpenSans-Light.woff') format('woff'),url('../font/OpenSans-Light.svg#open_sanslight') format('svg'),url('../font/OpenSans-Light.ttf') format('truetype');font-style:normal;font-weight:300} -@font-face{font-family:'Open Sans';src:url('../font/OpenSans-Regular.eot');src:url('../font/OpenSans-Regular.eot?#iefix') format('embedded-opentype'),url('../font/OpenSans-Regular.woff') format('woff'),url('../font/OpenSans-Regular.svg#open_sansregular') format('svg'),url('../font/OpenSans-Regular.ttf') format('truetype');font-style:normal;font-weight:400} -@font-face{font-family:'Open Sans';src:url('../font/OpenSans-Semibold.eot');src:url('../font/OpenSans-Semibold.eot?#iefix') format('embedded-opentype'),url('../font/OpenSans-Semibold.woff') format('woff'),url('../font/OpenSans-Semibold.svg#open_sanssemibold') format('svg'),url('../font/OpenSans-Semibold.ttf') format('truetype');font-style:normal;font-weight:600} -@font-face{font-family:'Open Sans';src:url('../font/OpenSans-Bold.eot');src:url('../font/OpenSans-Bold.eot?#iefix') format('embedded-opentype'),url('../font/OpenSans-Bold.woff') format('woff'),url('../font/OpenSans-Bold.svg#open_sansbold') format('svg'),url('../font/OpenSans-Bold.ttf') format('truetype');font-style:normal;font-weight:700} -@font-face{font-family:'Open Sans';src:url('../font/OpenSans-LightItalic.eot');src:url('../font/OpenSans-LightItalic.eot?#iefix') format('embedded-opentype'),url('../font/OpenSans-LightItalic.woff') format('woff'),url('../font/OpenSans-LightItalic.svg#open_sanslight_italic') format('svg'),url('../font/OpenSans-LightItalic.ttf') format('truetype');font-style:italic;font-weight:300} -@font-face{font-family:'Open Sans';src:url('../font/OpenSans-Italic.eot');src:url('../font/OpenSans-Italic.eot?#iefix') format('embedded-opentype'),url('../font/OpenSans-Italic.woff') format('woff'),url('../font/OpenSans-Italic.svg#open_sansitalic') format('svg'),url('../font/OpenSans-Italic.ttf') format('truetype');font-style:italic;font-weight:400} -@font-face{font-family:'Open Sans';src:url('../font/OpenSans-SemiboldItalic.eot');src:url('../font/OpenSans-SemiboldItalic.eot?#iefix') format('embedded-opentype'),url('../font/OpenSans-SemiboldItalic.woff') format('woff'),url('../font/OpenSans-SemiboldItalic.svg#open_sanssemibold_italic') format('svg'),url('../font/OpenSans-SemiboldItalic.ttf') format('truetype');font-style:italic;font-weight:600} +.svg-icon-container img.svg-icon{display:none} +.svg-icon-container.svg-active-effects img.svg-icon{-webkit-filter:grayscale(100%);filter:grayscale(100%);opacity:0.6;filter:alpha(opacity=60)} +.svg-icon-container.svg-active-effects:hover img.svg-icon,.svg-icon-container.svg-active-effects.active img.svg-icon{-webkit-filter:none;filter:none;opacity:1;filter:alpha(opacity=100)} +html.svg .svg-icon-container i.svg-replace{display:none} @-webkit-keyframes fadeIn{0%{opacity:0} 100%{opacity:1} } @@ -578,18 +577,21 @@ body.dragging,body.dragging *{cursor:move !important} body.loading,body.loading *{cursor:wait !important} body.no-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default !important} html,body{height:100%; } -body{webkit-font-smoothing:antialiased;font-family:'Open Sans',Arial,sans-serif;background:#f9f9f9} +body{webkit-font-smoothing:antialiased;font-family:sans-serif;background:#f9f9f9} #layout-canvas{min-height:100%;height:100%} -.control-tabs.primary-tabs > ul.nav-tabs,.control-tabs.primary-tabs > div > ul.nav-tabs,.control-tabs.primary-tabs > div > div > ul.nav-tabs{margin-left:-20px;margin-right:-20px} +.control-tabs.primary-tabs > ul.nav-tabs,.control-tabs.primary-tabs > div > ul.nav-tabs,.control-tabs.primary-tabs > div > div > ul.nav-tabs{margin-left:-25px;margin-right:-25px} .control-tabs.primary-tabs.tabs-no-inset > ul.nav-tabs,.control-tabs.primary-tabs.tabs-no-inset > div > ul.nav-tabs,.control-tabs.primary-tabs.tabs-no-inset > div > div > ul.nav-tabs{margin-left:0;margin-right:0} .layout{display:table;table-layout:fixed;height:100%;width:100%} .layout > .layout-row{display:table-row;vertical-align:top;height:100%} .layout > .layout-row > .layout-cell{display:table-cell;vertical-align:top;height:100%} .layout > .layout-row > .layout-cell.width-100{width:100px} .layout > .layout-row > .layout-cell.width-120{width:120px} +.layout > .layout-row > .layout-cell.width-130{width:130px} +.layout > .layout-row > .layout-cell.width-140{width:140px} .layout > .layout-row > .layout-cell.width-200{width:200px} .layout > .layout-row > .layout-cell.width-300{width:300px} -.layout > .layout-row > .layout-cell.layout-container,.layout > .layout-row > .layout-cell .layout-container,.layout > .layout-row > .layout-cell.padded-container,.layout > .layout-row > .layout-cell .padded-container{padding:20px 20px 0 20px} +.layout > .layout-row > .layout-cell.width-350{width:350px} +.layout > .layout-row > .layout-cell.layout-container,.layout > .layout-row > .layout-cell .layout-container,.layout > .layout-row > .layout-cell.padded-container,.layout > .layout-row > .layout-cell .padded-container{padding:25px 25px 0 25px} .layout > .layout-row > .layout-cell.layout-container .container-flush,.layout > .layout-row > .layout-cell .layout-container .container-flush,.layout > .layout-row > .layout-cell.padded-container .container-flush,.layout > .layout-row > .layout-cell .padded-container .container-flush{padding-top:0} .layout > .layout-row > .layout-cell .layout-relative{position:relative;height:100%} .layout > .layout-row > .layout-cell .layout-absolute{position:absolute;height:100%;width:100%} @@ -599,9 +601,12 @@ body{webkit-font-smoothing:antialiased;font-family:'Open Sans',Arial,sans-serif; .layout > .layout-row > .layout-cell.middle{vertical-align:middle} .layout > .layout-row > .layout-cell.width-100{width:100px} .layout > .layout-row > .layout-cell.width-120{width:120px} +.layout > .layout-row > .layout-cell.width-130{width:130px} +.layout > .layout-row > .layout-cell.width-140{width:140px} .layout > .layout-row > .layout-cell.width-200{width:200px} .layout > .layout-row > .layout-cell.width-300{width:300px} -.layout > .layout-row > .layout-cell.layout-container,.layout > .layout-row > .layout-cell .layout-container,.layout > .layout-row > .layout-cell.padded-container,.layout > .layout-row > .layout-cell .padded-container{padding:20px 20px 0 20px} +.layout > .layout-row > .layout-cell.width-350{width:350px} +.layout > .layout-row > .layout-cell.layout-container,.layout > .layout-row > .layout-cell .layout-container,.layout > .layout-row > .layout-cell.padded-container,.layout > .layout-row > .layout-cell .padded-container{padding:25px 25px 0 25px} .layout > .layout-row > .layout-cell.layout-container .container-flush,.layout > .layout-row > .layout-cell .layout-container .container-flush,.layout > .layout-row > .layout-cell.padded-container .container-flush,.layout > .layout-row > .layout-cell .padded-container .container-flush{padding-top:0} .layout > .layout-row > .layout-cell .layout-relative{position:relative;height:100%} .layout > .layout-row > .layout-cell .layout-absolute{position:absolute;height:100%;width:100%} @@ -613,9 +618,12 @@ body{webkit-font-smoothing:antialiased;font-family:'Open Sans',Arial,sans-serif; .layout > .layout-cell{display:table-cell;vertical-align:top;height:100%} .layout > .layout-cell.width-100{width:100px} .layout > .layout-cell.width-120{width:120px} +.layout > .layout-cell.width-130{width:130px} +.layout > .layout-cell.width-140{width:140px} .layout > .layout-cell.width-200{width:200px} .layout > .layout-cell.width-300{width:300px} -.layout > .layout-cell.layout-container,.layout > .layout-cell .layout-container,.layout > .layout-cell.padded-container,.layout > .layout-cell .padded-container{padding:20px 20px 0 20px} +.layout > .layout-cell.width-350{width:350px} +.layout > .layout-cell.layout-container,.layout > .layout-cell .layout-container,.layout > .layout-cell.padded-container,.layout > .layout-cell .padded-container{padding:25px 25px 0 25px} .layout > .layout-cell.layout-container .container-flush,.layout > .layout-cell .layout-container .container-flush,.layout > .layout-cell.padded-container .container-flush,.layout > .layout-cell .padded-container .container-flush{padding-top:0} .layout > .layout-cell .layout-relative{position:relative;height:100%} .layout > .layout-cell .layout-absolute{position:absolute;height:100%;width:100%} @@ -639,7 +647,7 @@ body.slim-container .layout.layout-container,body.slim-container .layout .layout .flex-layout-column.absolute{position:absolute !important} .flex-layout-column.fill-container{position:absolute;left:0;top:0;width:100%;height:100%} .flex-layout-row{display:-webkit-box;display:-webkit-flex;display:-moz-flex;display:-ms-flexbox;display:-ms-flex;display:flex;-webkit-flex-direction:row;-moz-flex-direction:row;-webkit-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row} -.flex-layout-column.justify-center,.flex-layout-row.justify-center{-webkit-justify-content:center;-moz-justify-content:center;-ms-justify-content:;-webkit-box-pack:center;justify-content:center} +.flex-layout-column.justify-center,.flex-layout-row.justify-center{-webkit-justify-content:center;-moz-justify-content:center;-ms-justify-content:center;-webkit-box-pack:center;justify-content:center} .flex-layout-column.align-center,.flex-layout-row.align-center{-webkit-align-items:center;-moz-align-items:center;-ms-align-items:center;align-items:center;-webkit-align-content:center;-moz-align-content:center;-webkit-box-align:center;-ms-align-content:center;align-content:center} .flex-layout-column.full-height,.flex-layout-row.full-height{min-height:100%} .flex-layout-item{margin:0} @@ -653,60 +661,81 @@ body.slim-container .layout.layout-container,body.slim-container .layout .layout .flex-layout-item.width-200{width:200px} .flex-layout-item.width-300{width:300px} body.mainmenu-open{overflow:hidden} -nav#layout-mainmenu.navbar{background-color:#111111;padding:0 0 0 20px;line-height:0;white-space:nowrap} -nav#layout-mainmenu.navbar a{text-decoration:none} -nav#layout-mainmenu.navbar a:focus{background:transparent} -nav#layout-mainmenu.navbar ul{margin:0;padding:0;list-style:none;float:left;font-weight:600;white-space:nowrap;overflow:hidden} -nav#layout-mainmenu.navbar ul li{color:#555555;display:inline-block;margin-right:30px;position:relative} -nav#layout-mainmenu.navbar ul li:last-child{margin-right:0} -nav#layout-mainmenu.navbar ul li.active:after{content:' ';position:absolute;bottom:0;left:50%;margin-left:-8.5px} -nav#layout-mainmenu.navbar ul li.icon{margin-right:0} -nav#layout-mainmenu.navbar ul li.icon i{margin-right:0} -nav#layout-mainmenu.navbar ul li.icon a{padding:14px} -nav#layout-mainmenu.navbar ul li.power-off i,nav#layout-mainmenu.navbar ul li.preview i{font-size:20px} -nav#layout-mainmenu.navbar ul li.power-off a,nav#layout-mainmenu.navbar ul li.preview a{padding:22px 20px 20px 20px} -nav#layout-mainmenu.navbar ul li.account{margin-right:0;line-height:23px} -nav#layout-mainmenu.navbar ul li.account a{padding-right:20px;position:relative;z-index:590} -nav#layout-mainmenu.navbar ul li.account img{width:25px;margin-right:7px;position:relative;top:-2px} -nav#layout-mainmenu.navbar ul.nav{display:inline-block} -nav#layout-mainmenu.navbar .menu-toggle{display:none} -nav#layout-mainmenu.navbar .toolbar-item{padding-right:0} -nav#layout-mainmenu.navbar .toolbar-item:before,nav#layout-mainmenu.navbar .toolbar-item:after{margin-top:0} -nav#layout-mainmenu.navbar .toolbar-item:before{left:-12px} -nav#layout-mainmenu.navbar .toolbar-item:after{right:-12px} -nav#layout-mainmenu.navbar .toolbar-item.scroll-active-before:before{color:#ffffff} -nav#layout-mainmenu.navbar .toolbar-item.scroll-active-after:after{color:#ffffff} -nav#layout-mainmenu.navbar ul li .mainmenu-accountmenu{position:fixed;top:63px;right:0;background:#2b3e50;z-index:590;display:none} -nav#layout-mainmenu.navbar ul li .mainmenu-accountmenu.active{display:block} -nav#layout-mainmenu.navbar ul li .mainmenu-accountmenu:after{content:'';display:block;width:0;height:0;border-left:11px solid transparent;border-right:11px solid transparent;border-bottom:12px solid #2b3e50;right:40px;top:-12px;position:absolute} -nav#layout-mainmenu.navbar ul li .mainmenu-accountmenu ul{float:none;display:block} -nav#layout-mainmenu.navbar ul li .mainmenu-accountmenu li{padding:0;margin:0;font-weight:400;text-align:left;display:block} -nav#layout-mainmenu.navbar ul li .mainmenu-accountmenu li a{display:block;padding:12px 30px;text-align:left} -nav#layout-mainmenu.navbar ul li .mainmenu-accountmenu li:hover{background:#3d5265 !important} -nav#layout-mainmenu.navbar ul li .mainmenu-accountmenu li.divider{height:1px;width:100%;background-color:#4b6372} -@media (max-width:768px){nav#layout-mainmenu.navbar ul li .mainmenu-accountmenu:after{right:71px} +.mainmenu-tooltip .tooltip-inner{font-size:16px;padding:6px 16px;border-radius:0} +nav#layout-mainmenu{background-color:#111111;padding:0 0 0 20px;line-height:0;white-space:nowrap;vertical-align:top;height:78px} +nav#layout-mainmenu a{text-decoration:none} +nav#layout-mainmenu a:focus{background:transparent} +nav#layout-mainmenu ul{margin:0;padding:0;list-style:none;float:left;white-space:nowrap;overflow:hidden} +nav#layout-mainmenu ul li{color:#555555;display:inline-block;vertical-align:top;position:relative} +nav#layout-mainmenu ul li a{display:inline-block;font-size:15px;color:inherit;outline:none;padding:14px 0 10px} +nav#layout-mainmenu ul li a:hover{background-color:transparent !important} +nav#layout-mainmenu ul li a:active,nav#layout-mainmenu ul li a:focus{text-decoration:none;color:#555555} +nav#layout-mainmenu ul li a i{line-height:1;font-size:30px;vertical-align:middle} +nav#layout-mainmenu ul li a img.svg-icon{height:30px;width:30px;margin-right:10px;position:relative;top:0} +nav#layout-mainmenu ul li.icon-only{margin-right:0} +nav#layout-mainmenu ul li.icon-only a{padding:14px} +nav#layout-mainmenu ul li.icon-only i{margin-right:0} +nav#layout-mainmenu ul.nav{display:inline-block} +nav#layout-mainmenu .toolbar-item{padding-right:0} +nav#layout-mainmenu .toolbar-item:before,nav#layout-mainmenu .toolbar-item:after{margin-top:0} +nav#layout-mainmenu .toolbar-item:before{left:-12px} +nav#layout-mainmenu .toolbar-item:after{right:-12px} +nav#layout-mainmenu .toolbar-item.scroll-active-before:before{color:#ffffff} +nav#layout-mainmenu .toolbar-item.scroll-active-after:after{color:#ffffff} +nav#layout-mainmenu ul.mainmenu-toolbar li.mainmenu-preview i{font-size:20px} +nav#layout-mainmenu ul.mainmenu-toolbar li.mainmenu-preview a{height:62px;line-height:62px;padding:0 15px;margin:8px 0 8px 11px} +nav#layout-mainmenu ul.mainmenu-toolbar li.mainmenu-account{margin-right:0} +nav#layout-mainmenu ul.mainmenu-toolbar li.mainmenu-account > a{height:78px;line-height:78px;padding:0 20px 0 10px;font-size:16px;position:relative;z-index:590} +nav#layout-mainmenu ul.mainmenu-toolbar li.mainmenu-account img{width:40px;margin-right:15px;border-radius:999px} +nav#layout-mainmenu ul.mainmenu-toolbar li.mainmenu-account ul{line-height:23px} +nav#layout-mainmenu:hover ul.mainmenu-nav li{-webkit-transition:opacity 0.15s ease;transition:opacity 0.15s ease;opacity:1;filter:alpha(opacity=100)} +nav#layout-mainmenu ul.mainmenu-nav li a{position:relative;width:65px;height:65px} +nav#layout-mainmenu ul.mainmenu-nav li a .nav-icon{text-align:center;display:block;position:absolute;top:50%;left:50%;margin-left:-15px;margin-top:-22.5px;width:30px;height:30px} +nav#layout-mainmenu ul.mainmenu-nav li a .nav-icon i,nav#layout-mainmenu ul.mainmenu-nav li a .nav-icon img{margin:0} +nav#layout-mainmenu ul.mainmenu-nav li a .nav-label{display:block;width:100px;height:20px;line-height:23px;position:absolute;bottom:0;left:50%;padding:0 5px;margin-left:-50px;overflow:hidden;text-overflow:ellipsis;text-align:center} +nav#layout-mainmenu ul.mainmenu-nav li{opacity:0.65;filter:alpha(opacity=65);-webkit-transition:opacity 5s ease;transition:opacity 5s ease;-webkit-transition-delay:5s;transition-delay:5s;margin-right:30px;padding:3px 0} +nav#layout-mainmenu ul.mainmenu-nav li:first-child{margin-left:8px} +nav#layout-mainmenu ul.mainmenu-nav li:last-child{margin-right:0} +nav#layout-mainmenu ul.mainmenu-nav li.active{opacity:1;filter:alpha(opacity=100)} +nav#layout-mainmenu ul.mainmenu-nav li.active a .nav-label{text-shadow:1px 1px 0 rgba(255,255,255,0.3)} +nav#layout-mainmenu ul.mainmenu-nav li:hover .nav-label{width:auto;min-width:100px;text-overflow:all;overflow:visible;background-color:#111111;z-index:2} +nav#layout-mainmenu .menu-toggle{display:inline-block;font-size:15px;color:inherit;outline:none;height:78px;line-height:78px;display:none} +nav#layout-mainmenu .menu-toggle:hover{background-color:transparent !important} +nav#layout-mainmenu .menu-toggle:active,nav#layout-mainmenu .menu-toggle:focus{text-decoration:none;color:#555555} +nav#layout-mainmenu .menu-toggle i{line-height:1;font-size:30px;vertical-align:middle} +nav#layout-mainmenu .menu-toggle > i{margin-right:10px} +html.svg nav#layout-mainmenu img.svg-icon,html.svg .mainmenu-collapsed img.svg-icon{display:inline-block} +nav#layout-mainmenu ul li .mainmenu-accountmenu{position:fixed;top:78px;right:0;background:#2b3e50;z-index:590;display:none} +nav#layout-mainmenu ul li .mainmenu-accountmenu.active{display:block} +nav#layout-mainmenu ul li .mainmenu-accountmenu:after{content:'';display:block;width:0;height:0;border-left:11px solid transparent;border-right:11px solid transparent;border-bottom:12px solid #2b3e50;right:40px;top:-12px;position:absolute} +nav#layout-mainmenu ul li .mainmenu-accountmenu ul{float:none;display:block} +nav#layout-mainmenu ul li .mainmenu-accountmenu li{padding:0;margin:0;font-weight:normal;text-align:left;display:block} +nav#layout-mainmenu ul li .mainmenu-accountmenu li a{display:block;padding:12px 30px;text-align:left} +nav#layout-mainmenu ul li .mainmenu-accountmenu li:hover{background:#3d5265 !important} +nav#layout-mainmenu ul li .mainmenu-accountmenu li.divider{height:1px;width:100%;background-color:#4b6372} +@media (max-width:768px){nav#layout-mainmenu ul li .mainmenu-accountmenu:after{right:71px} } -nav#layout-mainmenu.navbar ul li a,nav#layout-mainmenu .menu-toggle,.mainmenu-collapsed li a{padding:14px 0;display:inline-block;font-size:14px;color:inherit;outline:none} -nav#layout-mainmenu.navbar ul li a:hover,nav#layout-mainmenu .menu-toggle:hover,.mainmenu-collapsed li a:hover{background-color:transparent !important} -nav#layout-mainmenu.navbar ul li a:active,nav#layout-mainmenu .menu-toggle:active,.mainmenu-collapsed li a:active,nav#layout-mainmenu.navbar ul li a:focus,nav#layout-mainmenu .menu-toggle:focus,.mainmenu-collapsed li a:focus{text-decoration:none;color:#555555} -nav#layout-mainmenu.navbar ul li a i,nav#layout-mainmenu .menu-toggle i,.mainmenu-collapsed li a i{line-height:1;font-size:35px;vertical-align:middle;margin-right:10px} -nav#layout-mainmenu.navbar ul li a i{font-size:28px} -nav#layout-mainmenu.navbar ul li.active a i{font-size:35px} -.mainmenu-collapsed li a i{width:40px;text-align:left;display:inline-block} nav#layout-mainmenu.navbar ul li:hover a:active,.mainmenu-collapsed li:hover a:active,nav#layout-mainmenu.navbar ul li:hover a:focus,.mainmenu-collapsed li:hover a:focus{color:#ffffff !important} .touch .mainmenu-collapsed li a:hover{color:#555555} -nav#layout-mainmenu.navbar ul li.active,.mainmenu-collapsed li.active,nav#layout-mainmenu.navbar ul li.highlight,.mainmenu-collapsed li.highlight{color:#ffffff !important;font-weight:600} +nav#layout-mainmenu.navbar ul li.active,.mainmenu-collapsed li.active,nav#layout-mainmenu.navbar ul li.highlight,.mainmenu-collapsed li.highlight{color:#ffffff !important} nav#layout-mainmenu.navbar ul li.active a,.mainmenu-collapsed li.active a,nav#layout-mainmenu.navbar ul li.highlight a,.mainmenu-collapsed li.highlight a{color:#ffffff !important} nav#layout-mainmenu.navbar ul li:hover,.mainmenu-collapsed li:hover{color:#ffffff;background:transparent} body.drag nav#layout-mainmenu.navbar ul.nav li:hover,body.drag .mainmenu-collapsed ul li:hover{color:#555555} @media (max-width:769px){nav#layout-mainmenu.navbar ul.nav{display:none} -nav#layout-mainmenu.navbar .menu-toggle{display:inline-block;color:#ffffff !important;font-weight:600} +nav#layout-mainmenu.navbar .menu-toggle{display:inline-block;color:#ffffff !important} .mainmenu-collapsed{position:fixed;height:100%;left:0;top:0;width:0;background:#333333;-webkit-box-shadow:inset -5px 0 3px rgba(0,0,0,0.1);box-shadow:inset -5px 0 3px rgba(0,0,0,0.1);margin:0} .mainmenu-collapsed > div{display:relative;height:100%} .mainmenu-collapsed > div ul{overflow:hidden;padding:0;margin:0} .mainmenu-collapsed > div ul li{text-transform:uppercase;list-style:none;color:#555555} -.mainmenu-collapsed > div ul li a{white-space:nowrap;display:block;padding:15px 20px} +.mainmenu-collapsed > div ul li a{display:inline-block;font-size:15px;color:inherit;outline:none;white-space:nowrap;display:block;padding:15px 20px} +.mainmenu-collapsed > div ul li a:hover{background-color:transparent !important} +.mainmenu-collapsed > div ul li a:active,.mainmenu-collapsed > div ul li a:focus{text-decoration:none;color:#555555} +.mainmenu-collapsed > div ul li a i{line-height:1;font-size:30px;vertical-align:middle} .mainmenu-collapsed > div ul li a:hover{text-decoration:none} +.mainmenu-collapsed > div ul li a .nav-icon{margin-right:10px} +.mainmenu-collapsed > div ul li a .nav-icon img.svg-icon{position:relative;top:-3px;width:30px;height:30px} +.mainmenu-collapsed > div ul li a .nav-icon i{width:30px;text-align:left;display:inline-block} +.mainmenu-collapsed > div ul li.active a{padding:9px 20px 11px 20px} .mainmenu-collapsed .scroll-marker{position:absolute;left:0;width:100%;height:10px;display:none} .mainmenu-collapsed .scroll-marker:after{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em;content:"\f141";display:block;position:absolute;left:50%;margin-left:-3px;top:0;height:9px;font-size:10px;color:#555555} .mainmenu-collapsed .scroll-marker.before{top:0} @@ -719,37 +748,34 @@ body.mainmenu-open .mainmenu-collapsed ul{position:fixed;left:0;top:10px;bottom: @media (min-width:770px){#layout-canvas{position:static !important} .mainmenu-collapsed{display:none !important} } -#layout-sidenav{background-color:#34495e;position:absolute;height:100%;width:100%;padding:10px 0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box} +#layout-sidenav{background-color:#31495f;position:absolute;height:100%;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box} #layout-sidenav ul{position:relative;margin:0;padding:0;height:100%;overflow:hidden} +#layout-sidenav ul,#layout-sidenav ul li:first-child a{-webkit-box-shadow:inset 0 6px 3px -3px rgba(0,0,0,0.1);box-shadow:inset 0 6px 3px -3px rgba(0,0,0,0.1)} +#layout-sidenav ul:after{content:'';position:absolute;height:100%;top:0;right:0;width:10px;-webkit-box-shadow:inset -5px 0 3px rgba(0,0,0,0.1);box-shadow:inset -5px 0 3px rgba(0,0,0,0.1)} #layout-sidenav ul li{display:block;text-align:center;position:relative} -#layout-sidenav ul li a{padding:13px;display:block;font-size:12px;color:rgba(255,255,255,0.35);font-weight:normal} +#layout-sidenav ul li a{padding:20px 10px;display:block;font-size:14px;color:rgba(255,255,255,0.35);font-weight:normal;position:relative} #layout-sidenav ul li a:hover{text-decoration:none;background-color:transparent} #layout-sidenav ul li a:focus{background:transparent} #layout-sidenav ul li a i{color:rgba(255,255,255,0.35);display:block;margin-bottom:5px;font-size:28px} #layout-sidenav ul li.active a,#layout-sidenav ul li a:hover{color:#ffffff} #layout-sidenav ul li.active a i,#layout-sidenav ul li a:hover i{color:#ffffff} +#layout-sidenav ul li.active a{background:#1f99dc;text-shadow:1px 1px 0 rgba(0,0,0,0.2)} +#layout-sidenav ul li.active a > i{text-shadow:none} #layout-sidenav ul li span.counter{display:block;position:absolute;top:15px;right:15px;padding:2px 6px 3px 4px;background-color:#d9350f;color:#ffffff;font-size:11px;line-height:100%;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;opacity:1;filter:alpha(opacity=100);-webkit-transform:scale(1,);-ms-transform:scale(1,);transform:scale(1,);-webkit-transition:all 0.3s;transition:all 0.3s} #layout-sidenav ul li span.counter.empty{opacity:0;filter:alpha(opacity=0);-webkit-transform:scale(0,);-ms-transform:scale(0,);transform:scale(0,)} -#layout-sidenav .scroll-marker{position:absolute;left:0;width:100%;height:10px;display:none} -#layout-sidenav .scroll-marker:after{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em;content:"\f141";display:block;position:absolute;left:50%;margin-left:-3px;top:0;height:9px;font-size:10px;color:rgba(255,255,255,0.35)} -#layout-sidenav .scroll-marker.before{top:0} -#layout-sidenav .scroll-marker.after{bottom:3px} -#layout-sidenav .scroll-marker.after:after{top:2px} -#layout-sidenav.scroll-before .scroll-marker.before{display:block} -#layout-sidenav.scroll-after .scroll-marker.after{display:block} #layout-sidenav.layout-sidenav ul.drag li:not(.active) a:hover,.touch #layout-sidenav.layout-sidenav li:not(.active) a:hover{color:rgba(255,255,255,0.35) !important} #layout-sidenav.layout-sidenav ul.drag li:not(.active) a:hover i,.touch #layout-sidenav.layout-sidenav li:not(.active) a:hover i{color:rgba(255,255,255,0.35) !important} #layout-sidenav.layout-sidenav ul.drag li:not(.active) a:hover:after,.touch #layout-sidenav.layout-sidenav li:not(.active) a:hover:after{display:none !important} -#layout-side-panel .fix-button{position:absolute;right:2px;top:1px;display:block;width:20px;height:20px;font-size:13px} +#layout-side-panel .fix-button{position:absolute;right:-25px;top:0;display:none;width:25px;height:25px;font-size:13px;background:#ecf0f1;z-index:120;opacity:0.5;filter:alpha(opacity=50);-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0} #layout-side-panel .fix-button i{display:block;text-align:center;margin-top:5px;color:#aaaaaa} -#layout-side-panel .fix-button:hover{text-decoration:none;opacity:1 !important;filter:alpha(opacity=100) !important} -#layout-side-panel .fix-button-content-header .fix-button{top:9px;right:7px} -#layout-side-panel .fix-button-content-header .fix-button i{color:#eeeeee} -#layout-side-panel .sidepanel-content-header{background:#d35400;color:white;font-size:14px;padding:8px 15px;position:relative} +#layout-side-panel .fix-button:hover{text-decoration:none;display:block;opacity:1 !important;filter:alpha(opacity=100) !important} +#layout-side-panel:hover .fix-button{display:block} +#layout-side-panel .fix-button-content-header .fix-button{top:46px} +#layout-side-panel .sidepanel-content-header{background:#d35400;color:white;font-size:15px;padding:12px 20px 13px;position:relative} #layout-side-panel .sidepanel-content-header:after{content:'';display:block;width:0;height:0;border-left:7.5px solid transparent;border-right:7.5px solid transparent;border-top:8px solid #d35400;border-bottom-width:0;position:absolute;left:14px;bottom:-8px} body.side-panel-not-fixed #layout-side-panel{display:none} body.side-panel-not-fixed #layout-side-panel .fix-button{opacity:0.5;filter:alpha(opacity=50)} -body.display-side-panel #layout-side-panel{display:block;position:absolute;z-index:500;width:300px;-webkit-box-shadow:2px 0px 2px 0 rgba(0,0,0,0.3);box-shadow:2px 0px 2px 0 rgba(0,0,0,0.3)} +body.display-side-panel #layout-side-panel{display:block;position:absolute;z-index:500;width:350px;-webkit-box-shadow:2px 0px 2px 0 rgba(0,0,0,0.3);box-shadow:2px 0px 2px 0 rgba(0,0,0,0.3)} @media (min-width:992px){body.side-panel-fix-shadow #layout-side-panel{-webkit-box-shadow:none;box-shadow:none} } .touch #layout-side-panel .fix-button{display:none} @@ -779,42 +805,48 @@ body.outer .layout > .layout-row > .layout-cell .outer-form-container .forgot-pa body.outer .layout > .layout-row > .layout-cell .outer-form-container .forgot-password:before{color:rgba(255,255,255,0.44);font-size:14px;position:relative;margin-right:5px} html.csstransitions body.outer .outer-form-container{-webkit-transition:all 0.5s ease-out;transition:all 0.5s ease-out;-webkit-transform:scale(1,1);-moz-transform:scale(1,1);-ms-transform:scale(1,1);-o-transform:scale(1,1);transform:scale(1,1)} html.csstransitions body.outer.preload .outer-form-container{-webkit-transform:scale(0.2,0.2);-moz-transform:scale(0.2,0.2);-ms-transform:scale(0.2,0.2);-o-transform:scale(0.2,0.2);transform:scale(0.2,0.2)} +@media (max-width:768px){body.outer .layout > .layout-row.layout-head > .layout-cell{padding:50px 25px} +body.outer .layout > .layout-row > .layout-cell .outer-form-container{width:auto;padding:25px} +body.outer .layout > .layout-row > .layout-cell .outer-form-container .horizontal-form input{display:block;width:100% !important;margin-bottom:25px} +} .fancy-layout .tab-collapse-icon{position:absolute;display:block;text-decoration:none;outline:none;opacity:0.6;filter:alpha(opacity=60);-webkit-transition:all 0.3s;transition:all 0.3s;font-size:12px;color:#ffffff;right:11px} .fancy-layout .tab-collapse-icon:hover{text-decoration:none;opacity:1;filter:alpha(opacity=100)} .fancy-layout .tab-collapse-icon.primary{color:#475354;bottom:-25px;z-index:100;-webkit-transform:scale(1,-1);-moz-transform:scale(1,-1);-ms-transform:scale(1,-1);-o-transform:scale(1,-1);transform:scale(1,-1)} .fancy-layout .tab-collapse-icon.primary i{position:relative;display:block} .fancy-layout .control-tabs.master-tabs,.fancy-layout.control-tabs.master-tabs{overflow:hidden} -.fancy-layout .control-tabs.master-tabs:before,.fancy-layout.control-tabs.master-tabs:before,.fancy-layout .control-tabs.master-tabs:after,.fancy-layout.control-tabs.master-tabs:after{top:7px;font-size:14px;color:rgba(255,255,255,0.35)} +.fancy-layout .control-tabs.master-tabs:before,.fancy-layout.control-tabs.master-tabs:before,.fancy-layout .control-tabs.master-tabs:after,.fancy-layout.control-tabs.master-tabs:after{top:13px;font-size:14px;color:rgba(255,255,255,0.35)} .fancy-layout .control-tabs.master-tabs:before,.fancy-layout.control-tabs.master-tabs:before{left:8px} .fancy-layout .control-tabs.master-tabs:after,.fancy-layout.control-tabs.master-tabs:after{right:8px} .fancy-layout .control-tabs.master-tabs.scroll-before:before,.fancy-layout.control-tabs.master-tabs.scroll-before:before{color:#ffffff} .fancy-layout .control-tabs.master-tabs.scroll-after:after,.fancy-layout.control-tabs.master-tabs.scroll-after:after{color:#ffffff} .fancy-layout .control-tabs.master-tabs > div > div.tabs-container,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container{background:#d35400;padding-left:20px;padding-right:20px} .fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs{margin-left:-8px} -.fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li{margin-left:-8px;top:1px} -.fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li span.tab-close,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li span.tab-close{top:9px;right:-3px;left:auto;z-index:110} -.fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li span.tab-close i,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li span.tab-close i{top:4px;right:1px;color:rgba(255,255,255,0.3) !important;font:14px bold "Helvetica Neue",Helvetica,Arial,sans-serif} +.fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li{margin-left:-5px;top:1px;padding-top:3px} +.fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li span.tab-close,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li span.tab-close{top:15px;right:-3px;left:auto;z-index:110} +.fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li span.tab-close i,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li span.tab-close i{top:4px;right:1px;color:rgba(255,255,255,0.3) !important;font-style:normal;font-weight:bold} .fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li span.tab-close i:hover,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li span.tab-close i:hover{color:#ffffff !important} .fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li a,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li a{border-bottom:none;background:transparent;font-size:14px;color:rgba(255,255,255,0.35);padding:6px 0 0 24px!important;overflow:visible} -.fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li a > span.title,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li a > span.title{position:relative;display:inline-block;padding:8px 5px 9px 5px;height:31px;font-size:13px;z-index:100;background-color:#b9530f} -.fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li a > span.title:before,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li a > span.title:before,.fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li a > span.title:after,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li a > span.title:after{content:' ';position:absolute;background:transparent url(../images/tab-shape.svg) no-repeat left -80px;width:20px;display:block;height:30px;top:0;z-index:100} -.fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li a > span.title:before,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li a > span.title:before{left:-20px} -.fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li a > span.title:after,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li a > span.title:after{right:-20px;background-position:-80px -80px} -.fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li a:before,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li a:before{z-index:110;position:absolute;top:15px;left:22px} +.fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li a > span.title,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li a > span.title{position:relative;display:inline-block;padding:12px 5px 0 5px;height:38px;font-size:14px;z-index:100;background-color:#b9530f} +.fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li a > span.title:before,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li a > span.title:before,.fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li a > span.title:after,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li a > span.title:after{content:' ';position:absolute;width:20px;display:block;height:37px;top:0;z-index:100;background-color:#b9530f} +.fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li a > span.title:before,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li a > span.title:before{left:-14px;-webkit-border-radius:8px 0 0 0;-moz-border-radius:8px 0 0 0;border-radius:8px 0 0 0;-webkit-transform:skewX(-20deg);-ms-transform:skewX(-20deg);transform:skewX(-20deg)} +.fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li a > span.title:after,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li a > span.title:after{right:-14px;-webkit-border-radius:0 8px 0 0;-moz-border-radius:0 8px 0 0;border-radius:0 8px 0 0;-webkit-transform:skewX(20deg);-ms-transform:skewX(20deg);transform:skewX(20deg)} +.fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li a > span.title span,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li a > span.title span{border-top:none;padding:0;margin-top:0;overflow:visible} +.fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li a:before,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li a:before{z-index:110;position:absolute;top:18px;left:22px} .fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li a[class*=icon] > span.title,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li a[class*=icon] > span.title{padding-left:18px} .fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li.active a,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li.active a{z-index:107;color:#ffffff} .fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li.active span.tab-close i,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li.active span.tab-close i{color:#ffffff} .fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li.active a > span.title,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li.active a > span.title{background-color:#e67e22;z-index:105} -.fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li.active a > span.title:before,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li.active a > span.title:before{background-position:left -40px;z-index:107} -.fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li.active a > span.title:after,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li.active a > span.title:after{background-position:-80px -40px;z-index:107} +.fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li.active a > span.title:before,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li.active a > span.title:before{z-index:107;background-color:#e67e22} +.fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li.active a > span.title:after,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li.active a > span.title:after{background-color:#e67e22;z-index:107} .fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li[data-modified] span.tab-close i,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li[data-modified] span.tab-close i{top:3px;font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0} .fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li[data-modified] span.tab-close i:before,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li[data-modified] span.tab-close i:before{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em;content:"\f111";font-size:9px} .fancy-layout .control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li:first-child,.fancy-layout.control-tabs.master-tabs > div > div.tabs-container > ul.nav-tabs > li:first-child{margin-left:0} .fancy-layout .control-tabs.master-tabs[data-closable] > div > div.tabs-container > ul.nav-tabs > li a > span.title,.fancy-layout.control-tabs.master-tabs[data-closable] > div > div.tabs-container > ul.nav-tabs > li a > span.title{padding-right:10px} .fancy-layout .control-tabs.master-tabs.has-tabs:before,.fancy-layout.control-tabs.master-tabs.has-tabs:before,.fancy-layout .control-tabs.master-tabs.has-tabs:after,.fancy-layout.control-tabs.master-tabs.has-tabs:after{display:block} -.fancy-layout .control-tabs.secondary-tabs > div > ul.nav-tabs,.fancy-layout.control-tabs.secondary-tabs > div > ul.nav-tabs{background:#475354} +.fancy-layout .control-tabs.secondary-tabs > div > ul.nav-tabs,.fancy-layout.control-tabs.secondary-tabs > div > ul.nav-tabs{background:#475354;padding-left:15px} .fancy-layout .control-tabs.secondary-tabs > div > ul.nav-tabs > li,.fancy-layout.control-tabs.secondary-tabs > div > ul.nav-tabs > li{border-right:none;padding-right:0;margin-right:0} -.fancy-layout .control-tabs.secondary-tabs > div > ul.nav-tabs > li a,.fancy-layout.control-tabs.secondary-tabs > div > ul.nav-tabs > li a{background:transparent;border:none;padding:8px 10px;color:#919898} +.fancy-layout .control-tabs.secondary-tabs > div > ul.nav-tabs > li a,.fancy-layout.control-tabs.secondary-tabs > div > ul.nav-tabs > li a{background:transparent;border:none;padding:12px 10px 13px 10px;font-size:14px;font-weight:normal;line-height:14px;color:#919898} +.fancy-layout .control-tabs.secondary-tabs > div > ul.nav-tabs > li a span span,.fancy-layout.control-tabs.secondary-tabs > div > ul.nav-tabs > li a span span{overflow:visible;border-top:none;margin-top:0;padding-top:0} .fancy-layout .control-tabs.secondary-tabs > div > ul.nav-tabs > li.active a,.fancy-layout.control-tabs.secondary-tabs > div > ul.nav-tabs > li.active a{color:#ffffff} .fancy-layout .control-tabs.secondary-tabs .tab-collapse-icon,.fancy-layout.control-tabs.secondary-tabs .tab-collapse-icon{position:absolute;display:block;text-decoration:none;outline:none;opacity:0.6;filter:alpha(opacity=60);-webkit-transition:all 0.3s;transition:all 0.3s;font-size:12px;color:#ffffff;right:11px} .fancy-layout .control-tabs.secondary-tabs .tab-collapse-icon:hover,.fancy-layout.control-tabs.secondary-tabs .tab-collapse-icon:hover{text-decoration:none;opacity:1;filter:alpha(opacity=100)} @@ -825,12 +857,12 @@ html.csstransitions body.outer.preload .outer-form-container{-webkit-transform:s .fancy-layout .control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs,.fancy-layout.control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs{background:#f9f9f9} .fancy-layout .control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li,.fancy-layout.control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li{margin-left:-19px} .fancy-layout .control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li:first-child,.fancy-layout.control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li:first-child{margin-left:0;padding-left:8px} -.fancy-layout .control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li a,.fancy-layout.control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li a{padding:8px 16px 0 16px;font-weight:400;height:33px;color:#2b3e50;opacity:0.6;filter:alpha(opacity=60)} -.fancy-layout .control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li a > span.title,.fancy-layout.control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li a > span.title{position:relative;display:inline-block;padding:4px 5px 9px 5px;font-size:13px;z-index:100;height:25px !important;background-color:transparent} -.fancy-layout .control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li a > span.title:before,.fancy-layout.control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li a > span.title:before,.fancy-layout .control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li a > span.title:after,.fancy-layout.control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li a > span.title:after{content:' ';position:absolute;background:transparent url(../images/secondary-tab-shape-content.svg) no-repeat left top;width:15px;height:25px;top:0;z-index:100;display:none} -.fancy-layout .control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li a > span.title:before,.fancy-layout.control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li a > span.title:before{left:-15px} -.fancy-layout .control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li a > span.title:after,.fancy-layout.control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li a > span.title:after{right:-15px;background-position:-60px 0} -.fancy-layout .control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li a > span.title span,.fancy-layout.control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li a > span.title span{height:18px;font-size:12px} +.fancy-layout .control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li a,.fancy-layout.control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li a{padding:8px 16px 0 16px;font-weight:400;height:36px;color:#2b3e50;opacity:0.6;filter:alpha(opacity=60)} +.fancy-layout .control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li a > span.title,.fancy-layout.control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li a > span.title{position:relative;display:inline-block;padding:8px 5px 9px 5px;font-size:14px;z-index:100;height:27px !important;background-color:transparent} +.fancy-layout .control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li a > span.title:before,.fancy-layout.control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li a > span.title:before,.fancy-layout .control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li a > span.title:after,.fancy-layout.control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li a > span.title:after{content:' ';position:absolute;background-color:white;width:15px;height:28px;top:0;z-index:100;display:none} +.fancy-layout .control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li a > span.title:before,.fancy-layout.control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li a > span.title:before{left:-11px;-webkit-border-radius:8px 0 0 0;-moz-border-radius:8px 0 0 0;border-radius:8px 0 0 0;-webkit-transform:skewX(-20deg);-ms-transform:skewX(-20deg);transform:skewX(-20deg)} +.fancy-layout .control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li a > span.title:after,.fancy-layout.control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li a > span.title:after{right:-11px;-webkit-border-radius:0 8px 0 0;-moz-border-radius:0 8px 0 0;border-radius:0 8px 0 0;-webkit-transform:skewX(20deg);-ms-transform:skewX(20deg);transform:skewX(20deg)} +.fancy-layout .control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li a > span.title span,.fancy-layout.control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li a > span.title span{height:18px;font-size:14px} .fancy-layout .control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li.active a,.fancy-layout.control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li.active a{opacity:1;filter:alpha(opacity=100)} .fancy-layout .control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li.active a > span.title,.fancy-layout.control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li.active a > span.title{background-color:white} .fancy-layout .control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li.active a > span.title:before,.fancy-layout.control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li.active a > span.title:before,.fancy-layout .control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li.active a > span.title:after,.fancy-layout.control-tabs.secondary-tabs.secondary-content-tabs > div > ul.nav-tabs > li.active a > span.title:after{display:block} @@ -838,29 +870,29 @@ html.csstransitions body.outer.preload .outer-form-container{-webkit-transform:s .fancy-layout .control-tabs.secondary-tabs.secondary-content-tabs.primary-collapsed .tab-collapse-icon.primary,.fancy-layout.control-tabs.secondary-tabs.secondary-content-tabs.primary-collapsed .tab-collapse-icon.primary{color:white} .fancy-layout .control-tabs.secondary-tabs.secondary-content-tabs.primary-collapsed > div > ul.nav-tabs,.fancy-layout.control-tabs.secondary-tabs.secondary-content-tabs.primary-collapsed > div > ul.nav-tabs{background:#e67e22} .fancy-layout .control-tabs.secondary-tabs.secondary-content-tabs.primary-collapsed > div > ul.nav-tabs > li a,.fancy-layout.control-tabs.secondary-tabs.secondary-content-tabs.primary-collapsed > div > ul.nav-tabs > li a{color:white} +.fancy-layout .control-tabs.secondary-tabs.secondary-content-tabs.primary-collapsed > div > ul.nav-tabs > li a > span.title:before,.fancy-layout.control-tabs.secondary-tabs.secondary-content-tabs.primary-collapsed > div > ul.nav-tabs > li a > span.title:before,.fancy-layout .control-tabs.secondary-tabs.secondary-content-tabs.primary-collapsed > div > ul.nav-tabs > li a > span.title:after,.fancy-layout.control-tabs.secondary-tabs.secondary-content-tabs.primary-collapsed > div > ul.nav-tabs > li a > span.title:after{background-color:white} .fancy-layout .control-tabs.secondary-tabs.secondary-content-tabs.primary-collapsed > div > ul.nav-tabs > li.active a,.fancy-layout.control-tabs.secondary-tabs.secondary-content-tabs.primary-collapsed > div > ul.nav-tabs > li.active a{color:#2b3e50} .fancy-layout .control-tabs.primary-tabs > div > ul.nav-tabs,.fancy-layout.control-tabs.primary-tabs > div > ul.nav-tabs{background:#7f8c8d;margin-left:0 !important;margin-right:0 !important} .fancy-layout .control-tabs.primary-tabs > div > ul.nav-tabs.master-area,.fancy-layout.control-tabs.primary-tabs > div > ul.nav-tabs.master-area{-webkit-transition:background-color 0.5s;transition:background-color 0.5s;background:#e67e22} .fancy-layout .control-tabs.primary-tabs > div > ul.nav-tabs:before,.fancy-layout.control-tabs.primary-tabs > div > ul.nav-tabs:before{display:none} -.fancy-layout .control-tabs.primary-tabs > div > ul.nav-tabs > li,.fancy-layout.control-tabs.primary-tabs > div > ul.nav-tabs > li{background:transparent;border-right:none} +.fancy-layout .control-tabs.primary-tabs > div > ul.nav-tabs > li,.fancy-layout.control-tabs.primary-tabs > div > ul.nav-tabs > li{background:transparent;border-right:none;margin-right:-8px} .fancy-layout .control-tabs.primary-tabs > div > ul.nav-tabs > li:first-child,.fancy-layout.control-tabs.primary-tabs > div > ul.nav-tabs > li:first-child{margin-left:-5px} -.fancy-layout .control-tabs.primary-tabs > div > ul.nav-tabs > li a,.fancy-layout.control-tabs.primary-tabs > div > ul.nav-tabs > li a{background:transparent;border:none;padding:12px 16px 0px;font-size:12px;font-weight:400;color:#95a5a6} +.fancy-layout .control-tabs.primary-tabs > div > ul.nav-tabs > li a,.fancy-layout.control-tabs.primary-tabs > div > ul.nav-tabs > li a{background:transparent;border:none;padding:12px 16px 0px;font-size:14px;font-weight:400;color:#95a5a6} .fancy-layout .control-tabs.primary-tabs > div > ul.nav-tabs > li a span.title,.fancy-layout.control-tabs.primary-tabs > div > ul.nav-tabs > li a span.title{background:#d5d9d8;border-top:none;padding:5px 5px 3px 5px} -.fancy-layout .control-tabs.primary-tabs > div > ul.nav-tabs > li a span.title:before,.fancy-layout.control-tabs.primary-tabs > div > ul.nav-tabs > li a span.title:before,.fancy-layout .control-tabs.primary-tabs > div > ul.nav-tabs > li a span.title:after,.fancy-layout.control-tabs.primary-tabs > div > ul.nav-tabs > li a span.title:after{top:0} -.fancy-layout .control-tabs.primary-tabs > div > ul.nav-tabs > li a span.title:before,.fancy-layout.control-tabs.primary-tabs > div > ul.nav-tabs > li a span.title:before{background-position:left -92px} -.fancy-layout .control-tabs.primary-tabs > div > ul.nav-tabs > li a span.title:after,.fancy-layout.control-tabs.primary-tabs > div > ul.nav-tabs > li a span.title:after{background-position:-61px -92px} +.fancy-layout .control-tabs.primary-tabs > div > ul.nav-tabs > li a span.title:before,.fancy-layout.control-tabs.primary-tabs > div > ul.nav-tabs > li a span.title:before,.fancy-layout .control-tabs.primary-tabs > div > ul.nav-tabs > li a span.title:after,.fancy-layout.control-tabs.primary-tabs > div > ul.nav-tabs > li a span.title:after{background:#d5d9d8;border-width:0;top:0} +.fancy-layout .control-tabs.primary-tabs > div > ul.nav-tabs > li a span.title:before,.fancy-layout.control-tabs.primary-tabs > div > ul.nav-tabs > li a span.title:before{left:-20px} +.fancy-layout .control-tabs.primary-tabs > div > ul.nav-tabs > li a span.title:after,.fancy-layout.control-tabs.primary-tabs > div > ul.nav-tabs > li a span.title:after{right:-20px} +.fancy-layout .control-tabs.primary-tabs > div > ul.nav-tabs > li a span.title span,.fancy-layout.control-tabs.primary-tabs > div > ul.nav-tabs > li a span.title span{border-width:0;vertical-align:top} .fancy-layout .control-tabs.primary-tabs > div > ul.nav-tabs > li.active a,.fancy-layout.control-tabs.primary-tabs > div > ul.nav-tabs > li.active a{color:#808c8d} .fancy-layout .control-tabs.primary-tabs > div > ul.nav-tabs > li.active a:before,.fancy-layout.control-tabs.primary-tabs > div > ul.nav-tabs > li.active a:before{display:none} .fancy-layout .control-tabs.primary-tabs > div > ul.nav-tabs > li.active a span.title,.fancy-layout.control-tabs.primary-tabs > div > ul.nav-tabs > li.active a span.title{background:#fafafa} -.fancy-layout .control-tabs.primary-tabs > div > ul.nav-tabs > li.active a span.title:before,.fancy-layout.control-tabs.primary-tabs > div > ul.nav-tabs > li.active a span.title:before{background-position:left -62px} -.fancy-layout .control-tabs.primary-tabs > div > ul.nav-tabs > li.active a span.title:after,.fancy-layout.control-tabs.primary-tabs > div > ul.nav-tabs > li.active a span.title:after{background-position:-61px -62px} -.fancy-layout .control-tabs.primary-tabs > .tab-content > .tab-pane,.fancy-layout.control-tabs.primary-tabs > .tab-content > .tab-pane{padding:15px 15px 0 15px} +.fancy-layout .control-tabs.primary-tabs > div > ul.nav-tabs > li.active a span.title:before,.fancy-layout.control-tabs.primary-tabs > div > ul.nav-tabs > li.active a span.title:before,.fancy-layout .control-tabs.primary-tabs > div > ul.nav-tabs > li.active a span.title:after,.fancy-layout.control-tabs.primary-tabs > div > ul.nav-tabs > li.active a span.title:after{background:#fafafa} +.fancy-layout .control-tabs.primary-tabs > .tab-content > .tab-pane,.fancy-layout.control-tabs.primary-tabs > .tab-content > .tab-pane{padding:25px 25px 0 25px} .fancy-layout .control-tabs.primary-tabs > .tab-content > .tab-pane.pane-compact,.fancy-layout.control-tabs.primary-tabs > .tab-content > .tab-pane.pane-compact{padding:0} -.fancy-layout .control-tabs.primary-tabs > .tab-content > .tab-pane .form-control,.fancy-layout.control-tabs.primary-tabs > .tab-content > .tab-pane .form-control{border-width:1px} .fancy-layout .control-tabs.primary-tabs.collapsed,.fancy-layout.control-tabs.primary-tabs.collapsed{display:none} .fancy-layout .control-tabs.has-tabs > div.tab-content,.fancy-layout.control-tabs.has-tabs > div.tab-content{background:#f9f9f9} .fancy-layout .control-tabs > div.tab-content > div.tab-pane,.fancy-layout.control-tabs > div.tab-content > div.tab-pane{padding:0} -.fancy-layout .control-tabs > div.tab-content > div.tab-pane.padded-pane,.fancy-layout.control-tabs > div.tab-content > div.tab-pane.padded-pane{padding:15px 15px 0 15px} +.fancy-layout .control-tabs > div.tab-content > div.tab-pane.padded-pane,.fancy-layout.control-tabs > div.tab-content > div.tab-pane.padded-pane{padding:25px 25px 0 25px} .fancy-layout .form-tabless-fields{position:relative;background:#e67e22;padding:18px 23px 0 23px;-webkit-transition:all 0.5s;transition:all 0.5s} .fancy-layout .form-tabless-fields:before,.fancy-layout .form-tabless-fields:after{content:" ";display:table} .fancy-layout .form-tabless-fields:after{clear:both} @@ -880,22 +912,23 @@ html.csstransitions body.outer.preload .outer-form-container{-webkit-transform:s .fancy-layout .form-tabless-fields.collapsed{padding:5px 23px 0 10px} .fancy-layout .form-tabless-fields.collapsed .tab-collapse-icon.tabless{-webkit-transform:scale(1,-1);-moz-transform:scale(1,-1);-ms-transform:scale(1,-1);-o-transform:scale(1,-1);transform:scale(1,-1)} .fancy-layout .form-tabless-fields.collapsed .form-group:not(.collapse-visible){display:none} -.fancy-layout .form-tabless-fields.collapsed .form-buttons{padding-bottom:0} +.fancy-layout .form-tabless-fields.collapsed .form-buttons{margin-left:10px;padding-bottom:0} .fancy-layout .form-tabless-fields .loading-indicator-container .loading-indicator{background-color:#e67e22;padding:0 0 0 30px;color:rgba(255,255,255,0.5);margin-top:1px;height:90%;font-size:12px;line-height:100%} .fancy-layout .form-tabless-fields .loading-indicator-container .loading-indicator > span{left:-10px;top:18px} -.fancy-layout .form-buttons{-webkit-transition:all 0.5s;transition:all 0.5s;padding-top:2px;padding-bottom:5px;margin-top:-6px} -.fancy-layout .form-buttons .btn{margin-left:-11px;background-color:transparent} -.fancy-layout .form-buttons .btn{color:#ffffff;opacity:0.5;filter:alpha(opacity=50);-webkit-transition:all 0.3s ease;transition:all 0.3s ease} +.fancy-layout .form-buttons{-webkit-transition:all 0.5s;transition:all 0.5s;padding-top:11px;padding-bottom:5px} +.fancy-layout .form-buttons .btn{padding:0;margin-right:5px;margin-top:-6px;margin-right:30px;background-color:transparent;color:#ffffff;font-weight:normal;opacity:0.5;filter:alpha(opacity=50);-webkit-transition:all 0.3s ease;transition:all 0.3s ease} .fancy-layout .form-buttons .btn:hover{opacity:1;filter:alpha(opacity=100)} +.fancy-layout .form-buttons .btn:last-child{margin-right:0} .fancy-layout form.oc-data-changed .btn.save{opacity:1;filter:alpha(opacity=100)} .fancy-layout .field-codeeditor{border:none !important;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0} .fancy-layout .field-codeeditor .editor-code{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0} -.fancy-layout .field-richeditor{border:none;border-left:1px solid #e0e0e0 !important} +.fancy-layout .field-richeditor{border:none;border-left:1px solid #bdc3c7 !important} .fancy-layout .field-richeditor,.fancy-layout .field-richeditor .redactor_box,.fancy-layout .field-richeditor .redactor_toolbar{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-top-right-radius:0;border-top-left-radius:0} .fancy-layout .field-richeditor .redactor-box textarea{background:white;padding:20px !important;color:#333333;font-size:14px} .fancy-layout .secondary-content-tabs .field-richeditor .redactor-box .redactor-toolbar{margin:20px 0 0 0!important;left:20px;right:20px;width:auto;-webkit-border-radius:3px !important;-moz-border-radius:3px !important;border-radius:3px !important} body.side-panel-not-fixed .fancy-layout .field-richeditor{border-left:none} html.cssanimations .fancy-layout .form-tabless-fields .loading-indicator-container .loading-indicator > span{-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite;background-image:url('../../../system/assets/ui/images/loader-white.svg');background-size:20px 20px} +html.gecko .fancy-layout .control-tabs.secondary-tabs > div > ul.nav-tabs > li.active a{padding-top:13px} .flyout-container > .flyout{overflow:hidden;width:0;left:0 !important;-webkit-transition:width 0.1s;transition:width 0.1s} .flyout-overlay{width:100%;height:100%;top:0;z-index:5000;position:absolute;background-color:rgba(0,0,0,0);-webkit-transition:background-color 0.3s;transition:background-color 0.3s} .flyout-toggle{position:absolute;top:20px;left:0;width:23px;height:25px;background:#2b3e50;cursor:pointer;border-bottom-right-radius:4px;border-top-right-radius:4px;color:#bdc3c7;font-size:10px} diff --git a/modules/backend/assets/font/Apache License Version 2.txt b/modules/backend/assets/font/Apache License Version 2.txt deleted file mode 100644 index e395039f4..000000000 --- a/modules/backend/assets/font/Apache License Version 2.txt +++ /dev/null @@ -1,53 +0,0 @@ -Apache License - -Version 2.0, January 2004 - -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. - -"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and - -If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. \ No newline at end of file diff --git a/modules/backend/assets/font/OpenSans-Bold.eot b/modules/backend/assets/font/OpenSans-Bold.eot deleted file mode 100644 index 016123ba0..000000000 Binary files a/modules/backend/assets/font/OpenSans-Bold.eot and /dev/null differ diff --git a/modules/backend/assets/font/OpenSans-Bold.svg b/modules/backend/assets/font/OpenSans-Bold.svg deleted file mode 100644 index 81c8a275a..000000000 --- a/modules/backend/assets/font/OpenSans-Bold.svg +++ /dev/null @@ -1,958 +0,0 @@ - - - \ No newline at end of file diff --git a/modules/backend/assets/font/OpenSans-Bold.ttf b/modules/backend/assets/font/OpenSans-Bold.ttf deleted file mode 100644 index cf53e6e46..000000000 Binary files a/modules/backend/assets/font/OpenSans-Bold.ttf and /dev/null differ diff --git a/modules/backend/assets/font/OpenSans-Bold.woff b/modules/backend/assets/font/OpenSans-Bold.woff deleted file mode 100644 index c668e4537..000000000 Binary files a/modules/backend/assets/font/OpenSans-Bold.woff and /dev/null differ diff --git a/modules/backend/assets/font/OpenSans-Italic.eot b/modules/backend/assets/font/OpenSans-Italic.eot deleted file mode 100644 index 55af8e72b..000000000 Binary files a/modules/backend/assets/font/OpenSans-Italic.eot and /dev/null differ diff --git a/modules/backend/assets/font/OpenSans-Italic.svg b/modules/backend/assets/font/OpenSans-Italic.svg deleted file mode 100644 index 7561e874c..000000000 --- a/modules/backend/assets/font/OpenSans-Italic.svg +++ /dev/null @@ -1,958 +0,0 @@ - - - \ No newline at end of file diff --git a/modules/backend/assets/font/OpenSans-Italic.ttf b/modules/backend/assets/font/OpenSans-Italic.ttf deleted file mode 100644 index a30932742..000000000 Binary files a/modules/backend/assets/font/OpenSans-Italic.ttf and /dev/null differ diff --git a/modules/backend/assets/font/OpenSans-Italic.woff b/modules/backend/assets/font/OpenSans-Italic.woff deleted file mode 100644 index 1ed8ab956..000000000 Binary files a/modules/backend/assets/font/OpenSans-Italic.woff and /dev/null differ diff --git a/modules/backend/assets/font/OpenSans-Light.eot b/modules/backend/assets/font/OpenSans-Light.eot deleted file mode 100644 index 03f143051..000000000 Binary files a/modules/backend/assets/font/OpenSans-Light.eot and /dev/null differ diff --git a/modules/backend/assets/font/OpenSans-Light.svg b/modules/backend/assets/font/OpenSans-Light.svg deleted file mode 100644 index c3bd1594c..000000000 --- a/modules/backend/assets/font/OpenSans-Light.svg +++ /dev/null @@ -1,958 +0,0 @@ - - - \ No newline at end of file diff --git a/modules/backend/assets/font/OpenSans-Light.ttf b/modules/backend/assets/font/OpenSans-Light.ttf deleted file mode 100644 index dddcc62a9..000000000 Binary files a/modules/backend/assets/font/OpenSans-Light.ttf and /dev/null differ diff --git a/modules/backend/assets/font/OpenSans-Light.woff b/modules/backend/assets/font/OpenSans-Light.woff deleted file mode 100644 index 937323df0..000000000 Binary files a/modules/backend/assets/font/OpenSans-Light.woff and /dev/null differ diff --git a/modules/backend/assets/font/OpenSans-LightItalic.eot b/modules/backend/assets/font/OpenSans-LightItalic.eot deleted file mode 100644 index 3861cd65b..000000000 Binary files a/modules/backend/assets/font/OpenSans-LightItalic.eot and /dev/null differ diff --git a/modules/backend/assets/font/OpenSans-LightItalic.svg b/modules/backend/assets/font/OpenSans-LightItalic.svg deleted file mode 100644 index e5694a123..000000000 --- a/modules/backend/assets/font/OpenSans-LightItalic.svg +++ /dev/null @@ -1,958 +0,0 @@ - - - \ No newline at end of file diff --git a/modules/backend/assets/font/OpenSans-LightItalic.ttf b/modules/backend/assets/font/OpenSans-LightItalic.ttf deleted file mode 100644 index 9338bd99e..000000000 Binary files a/modules/backend/assets/font/OpenSans-LightItalic.ttf and /dev/null differ diff --git a/modules/backend/assets/font/OpenSans-LightItalic.woff b/modules/backend/assets/font/OpenSans-LightItalic.woff deleted file mode 100644 index bc83d1db5..000000000 Binary files a/modules/backend/assets/font/OpenSans-LightItalic.woff and /dev/null differ diff --git a/modules/backend/assets/font/OpenSans-Regular.eot b/modules/backend/assets/font/OpenSans-Regular.eot deleted file mode 100644 index 7ac1753b1..000000000 Binary files a/modules/backend/assets/font/OpenSans-Regular.eot and /dev/null differ diff --git a/modules/backend/assets/font/OpenSans-Regular.svg b/modules/backend/assets/font/OpenSans-Regular.svg deleted file mode 100644 index b34ed428a..000000000 --- a/modules/backend/assets/font/OpenSans-Regular.svg +++ /dev/null @@ -1,958 +0,0 @@ - - - \ No newline at end of file diff --git a/modules/backend/assets/font/OpenSans-Regular.ttf b/modules/backend/assets/font/OpenSans-Regular.ttf deleted file mode 100644 index a135120e0..000000000 Binary files a/modules/backend/assets/font/OpenSans-Regular.ttf and /dev/null differ diff --git a/modules/backend/assets/font/OpenSans-Regular.woff b/modules/backend/assets/font/OpenSans-Regular.woff deleted file mode 100644 index bd0f824b2..000000000 Binary files a/modules/backend/assets/font/OpenSans-Regular.woff and /dev/null differ diff --git a/modules/backend/assets/font/OpenSans-Semibold.eot b/modules/backend/assets/font/OpenSans-Semibold.eot deleted file mode 100644 index f16506315..000000000 Binary files a/modules/backend/assets/font/OpenSans-Semibold.eot and /dev/null differ diff --git a/modules/backend/assets/font/OpenSans-Semibold.svg b/modules/backend/assets/font/OpenSans-Semibold.svg deleted file mode 100644 index 4949365fb..000000000 --- a/modules/backend/assets/font/OpenSans-Semibold.svg +++ /dev/null @@ -1,958 +0,0 @@ - - - \ No newline at end of file diff --git a/modules/backend/assets/font/OpenSans-Semibold.ttf b/modules/backend/assets/font/OpenSans-Semibold.ttf deleted file mode 100644 index 9be83c563..000000000 Binary files a/modules/backend/assets/font/OpenSans-Semibold.ttf and /dev/null differ diff --git a/modules/backend/assets/font/OpenSans-Semibold.woff b/modules/backend/assets/font/OpenSans-Semibold.woff deleted file mode 100644 index 3a78f7548..000000000 Binary files a/modules/backend/assets/font/OpenSans-Semibold.woff and /dev/null differ diff --git a/modules/backend/assets/font/OpenSans-SemiboldItalic.eot b/modules/backend/assets/font/OpenSans-SemiboldItalic.eot deleted file mode 100644 index c13a4e33f..000000000 Binary files a/modules/backend/assets/font/OpenSans-SemiboldItalic.eot and /dev/null differ diff --git a/modules/backend/assets/font/OpenSans-SemiboldItalic.svg b/modules/backend/assets/font/OpenSans-SemiboldItalic.svg deleted file mode 100644 index df4513785..000000000 --- a/modules/backend/assets/font/OpenSans-SemiboldItalic.svg +++ /dev/null @@ -1,958 +0,0 @@ - - - \ No newline at end of file diff --git a/modules/backend/assets/font/OpenSans-SemiboldItalic.ttf b/modules/backend/assets/font/OpenSans-SemiboldItalic.ttf deleted file mode 100644 index ee10d635d..000000000 Binary files a/modules/backend/assets/font/OpenSans-SemiboldItalic.ttf and /dev/null differ diff --git a/modules/backend/assets/font/OpenSans-SemiboldItalic.woff b/modules/backend/assets/font/OpenSans-SemiboldItalic.woff deleted file mode 100644 index 90351a259..000000000 Binary files a/modules/backend/assets/font/OpenSans-SemiboldItalic.woff and /dev/null differ diff --git a/modules/backend/assets/images/dashboard-icon.svg b/modules/backend/assets/images/dashboard-icon.svg new file mode 100644 index 000000000..bf6976e2b --- /dev/null +++ b/modules/backend/assets/images/dashboard-icon.svg @@ -0,0 +1,20 @@ + + \ No newline at end of file diff --git a/modules/backend/assets/images/dashboard-loading-indicator.svg b/modules/backend/assets/images/dashboard-loading-indicator.svg new file mode 100644 index 000000000..0a1715647 --- /dev/null +++ b/modules/backend/assets/images/dashboard-loading-indicator.svg @@ -0,0 +1,13 @@ + + \ No newline at end of file diff --git a/modules/backend/assets/images/october-leaf.svg b/modules/backend/assets/images/october-leaf.svg new file mode 100644 index 000000000..6f4cfdbc3 --- /dev/null +++ b/modules/backend/assets/images/october-leaf.svg @@ -0,0 +1,18 @@ + + \ No newline at end of file diff --git a/modules/backend/assets/js/october-min.js b/modules/backend/assets/js/october-min.js index 6e572f9ca..cdd8c2d30 100644 --- a/modules/backend/assets/js/october-min.js +++ b/modules/backend/assets/js/october-min.js @@ -888,7 +888,7 @@ $.fn.verticalMenu.noConflict=function(){$.fn.verticalMenu=old return this}}(window.jQuery);(function($){$(window).load(function(){$('nav.navbar').each(function(){var navbar=$(this),nav=$('ul.nav',navbar) nav.verticalMenu($('a.menu-toggle',navbar)) -$('li.with-tooltip > a',navbar).tooltip({container:'body',placement:'bottom'}) +$('li.with-tooltip:not(.active) > a',navbar).tooltip({container:'body',placement:'bottom',template:'
'}) $('[data-calculate-width]',navbar).one('oc.widthFixed',function(){var dragScroll=$('[data-control=toolbar]',navbar).data('oc.dragScroll') if(dragScroll){dragScroll.goToElement($('ul.nav > li.active',navbar),undefined,{'duration':0})}})})})})(jQuery);+function($){"use strict";if($.oc===undefined) $.oc={} diff --git a/modules/backend/assets/js/october.navbar.js b/modules/backend/assets/js/october.navbar.js index df87b29c0..fede55edf 100644 --- a/modules/backend/assets/js/october.navbar.js +++ b/modules/backend/assets/js/october.navbar.js @@ -18,9 +18,10 @@ nav.verticalMenu($('a.menu-toggle', navbar)) - $('li.with-tooltip > a', navbar).tooltip({ + $('li.with-tooltip:not(.active) > a', navbar).tooltip({ container: 'body', - placement: 'bottom' + placement: 'bottom', + template: '' }) $('[data-calculate-width]', navbar).one('oc.widthFixed', function() { diff --git a/modules/backend/assets/less/controls/filelist.less b/modules/backend/assets/less/controls/filelist.less index 824748caa..5cd0c17b6 100644 --- a/modules/backend/assets/less/controls/filelist.less +++ b/modules/backend/assets/less/controls/filelist.less @@ -18,12 +18,12 @@ .listPaddings (0, 27px) {} p.no-data { - padding: 18px 0; + padding: 22px 0; margin: 0; color: @color-filelist-norecords-text; - font-size: 12px; + font-size: 14px; text-align: center; - font-weight: 400; + font-weight: normal; .border-radius(@border-radius-base); } @@ -32,7 +32,7 @@ margin: 0; li { - font-weight: 300; + font-weight: normal; line-height: 150%; position: relative; list-style: none; @@ -58,7 +58,7 @@ a { display: block; - padding: 10px 40px 10px 20px; + padding: 10px 45px 10px 20px; outline: none; &:hover, &:focus, &:active {text-decoration: none;} @@ -67,19 +67,22 @@ display: block; &.title { - font-weight: 500; + font-weight: normal; color: @color-text-title; - font-size: 12px; + font-size: 14px; } &.description { color: @color-text-description; - font-size: 12px; - font-weight: 500; + font-size: 13px; + white-space: nowrap; + font-weight: normal; + overflow: hidden; + text-overflow: ellipsis; strong { color: @color-text-title; - font-weight: 500; + font-weight: normal; } } } @@ -87,11 +90,11 @@ &.group { > h4, > div.group > h4 { - font-weight: 500; - font-size: 12px; + font-weight: normal; + font-size: 14px; margin-top: 0; margin-bottom: 0; - display: relative; + position: relative; a { padding: 10px 20px 10px 53px; @@ -110,11 +113,11 @@ } &:after { - left: 34px; + left: 33px; + top: 9px; .icon(@folder); color: @color-list-icon; - font-size: 14px; - top: 9px; + font-size: 16px; } &:before { @@ -205,8 +208,8 @@ .checkbox { position: absolute; - top: 13px; - right: 17px; + top: -5px; + right: -5px; label { margin-right: 0; @@ -253,11 +256,15 @@ border-bottom: 1px solid @color-panel-light; span.title { - font-size: 13px; - font-weight: 600; + font-size: 15px; + font-weight: normal; color: @color-filelist-title-hero; } + span.description { + font-size: 14px; + } + .list-icon { position: absolute; left: 14px; @@ -272,8 +279,8 @@ } .checkbox { - top: 17px; - right: 17px; + top: 0; + right: 0; } &.active { @@ -362,7 +369,7 @@ color: #2b3e50; font-size: 15px; margin: 0; - font-weight: 600; + font-weight: bold; padding: 0; } } diff --git a/modules/backend/assets/less/controls/scrollbar.less b/modules/backend/assets/less/controls/scrollbar.less index 8ca3585e2..1f0acd840 100644 --- a/modules/backend/assets/less/controls/scrollbar.less +++ b/modules/backend/assets/less/controls/scrollbar.less @@ -3,11 +3,7 @@ // -------------------------------------------------- .drag-noselect { - user-select: none; - -o-user-select: none; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; + .user-select(none); } .control-scrollbar { diff --git a/modules/backend/assets/less/controls/scrollpad.less b/modules/backend/assets/less/controls/scrollpad.less index b3f42bbf7..a364d54f9 100644 --- a/modules/backend/assets/less/controls/scrollpad.less +++ b/modules/backend/assets/less/controls/scrollpad.less @@ -67,12 +67,12 @@ div.control-scrollpad { } &:hover { - opacity: 0.7; + .opacity(.7); .transition(opacity 0 linear); } &[data-visible] { - opacity: 0.7; + .opacity(.7); } &[data-hidden] { diff --git a/modules/backend/assets/less/controls/sidenav-tree.less b/modules/backend/assets/less/controls/sidenav-tree.less index 52fc0600a..975b66af2 100644 --- a/modules/backend/assets/less/controls/sidenav-tree.less +++ b/modules/backend/assets/less/controls/sidenav-tree.less @@ -1,12 +1,35 @@ +.sidenav-tree-shadow-element() { + content: ''; + position: absolute; + height: 100%; + top: 0; + right: 0; + width: 10px; + height: 100%; + .box-shadow(inset -5px 0 3px rgba(0,0,0,0.1)); +} + .sidenav-tree { - width: 280px; + width: 300px; background: @color-sidebarnav-bg; .control-toolbar { - padding: 20px 0 20px 20px; + padding: 0; + + .toolbar-item { + display: block; + } input.form-control { border: none; + outline: none; + padding: 12px 13px 13px; + .border-radius(0); + .box-shadow(inset -5px 0 3px rgba(0,0,0,0.1)); + + &.search { + background-position: right -78px; + } } } @@ -22,8 +45,16 @@ ul.top-level > li { &[data-status=collapsed] { - > div.group h3:before { - .transform(~'rotate(0deg) translate(3px, 0)'); + > div.group { + h3 { + &:before { + .transform(~'rotate(0deg) translate(2px, -2px)'); + } + + &:after { + display: none; + } + } } ul { @@ -32,31 +63,42 @@ } > div.group { + position: relative; + + &:after { + .sidenav-tree-shadow-element(); + } + h3 { background: @color-sidebarnav-tree-group-bg; color: @color-sidebarnav-tree-group; text-transform: uppercase; - font-size: 14px; - padding: 15px 15px 15px 33px; + font-size: 15px; + padding: 15px 15px 15px 40px; margin: 0; position: relative; cursor: pointer; &:before { - width: 10px; - height: 10px; display: block; position: absolute; - top: 1px; - } - - &:before { - left: 13px; + width: 10px; + height: 10px; + left: 16px; top: 15px; color: @color-list-arrow; - .icon(@caret-right); - .transform(~'rotate(90deg) translate(5px, 0)'); + .icon(@angle-right); + .transform(~'rotate(90deg) translate(5px, -3px)'); .transition(all 0.1s ease); + font-size: 16px; + } + + &:after { + .triangle(down, 15px, 8px, @color-sidebarnav-tree-group-bg); + position: absolute; + left: 15px; + bottom: -8px; + z-index: 101; } } } @@ -66,21 +108,25 @@ a { display: block; position: relative; - padding: 15px 15px 15px 40px; + padding: 18px 25px 18px 55px; background: @color-sidebarnav-tree-inactive-bg; - margin-bottom: 1px; + border-bottom: 1px solid @color-sidebarnav-tree-group-bg; color: @color-sidebarnav-tree-inactive-text; text-decoration: none!important; + &:after { + .sidenav-tree-shadow-element(); + } + &:hover { text-decoration: none; } i { position: absolute; - left: 15px; - top: 17px; - font-size: 16px; + left: 16px; + top: 18px; + font-size: 22px; } span { @@ -89,32 +135,21 @@ &.header { color: @color-sidebarnav-tree-inactive-header; - font-size: 14px; + font-size: 16px; margin-bottom: 5px; } &.description { color: @color-sidebarnav-tree-inactive-desc; - font-size: 12px; - font-weight: 100; + font-size: 15px; } } } - &.active a { + &.active a, &:hover a { background: @color-sidebarnav-tree-active-bg; color: @color-sidebarnav-tree-active-text; - &:before { - content: ' '; - position: absolute; - width: 4px; - background: @color-sidebarnav-tree-active-marker; - left: 0; - top: 0; - height: 100%; - } - span.header { color: @color-sidebarnav-tree-active-header; } @@ -125,11 +160,7 @@ } &:last-child a { - margin-bottom: 0; - } - - &:hover a { - background-color: @color-sidebarnav-tree-active-bg; + border-bottom: none; } } } diff --git a/modules/backend/assets/less/controls/simplelist.less b/modules/backend/assets/less/controls/simplelist.less index 989179b7f..ff90ad983 100644 --- a/modules/backend/assets/less/controls/simplelist.less +++ b/modules/backend/assets/less/controls/simplelist.less @@ -48,8 +48,11 @@ // .control-simplelist { - font-size: 13px; + padding: 20px 20px 2px 20px; + margin-bottom: @padding-standard; + background: @color-form-checkboxlist-background; + .border-radius(@border-radius-base); ul { padding-left: 15px; } @@ -71,7 +74,25 @@ } } - &.with-checkboxes {} + &.with-checkboxes { + li { + margin-top: -5px; + + &:first-child { + margin-top: 0; + } + + &:last-child { + div.custom-checkbox { + margin-bottom: 0; + + label { + margin-bottom: 5px; + } + } + } + } + } &.is-sortable { diff --git a/modules/backend/assets/less/controls/svg-icons.less b/modules/backend/assets/less/controls/svg-icons.less new file mode 100644 index 000000000..6e82b8917 --- /dev/null +++ b/modules/backend/assets/less/controls/svg-icons.less @@ -0,0 +1,33 @@ +.svg-icon-container { + img.svg-icon { + // SVG icons are invisible until SVG support is detected + // with JavaScript to reduce flickering on page load. + // This should be overridden in a specific control, + // inside html.svg {} + display: none; + } + + &.svg-active-effects { + img.svg-icon { + -webkit-filter: grayscale(100%); + filter: grayscale(100%); + .opacity(0.6); + } + + &:hover, &.active { + img.svg-icon { + -webkit-filter: none; + filter: none; + .opacity(1); + } + } + } +} + +html.svg { + .svg-icon-container { + i.svg-replace { + display: none; + } + } +} diff --git a/modules/backend/assets/less/controls/treeview.less b/modules/backend/assets/less/controls/treeview.less index 0ed9a6cb0..3b0718835 100644 --- a/modules/backend/assets/less/controls/treeview.less +++ b/modules/backend/assets/less/controls/treeview.less @@ -20,8 +20,8 @@ .transition(width 1s); > div { - font-size: 13px; - font-weight: 600; + font-size: 15px; + font-weight: normal; background: @color-treeview-item-bg; border-bottom: 1px solid @color-panel-light; position: relative; @@ -53,7 +53,7 @@ display: block; font-weight: 400; color: @color-treeview-item-comment; - font-size: 12px; + font-size: 14px; margin-top: 2px; overflow: hidden; text-overflow: ellipsis; @@ -63,7 +63,6 @@ .hide-text(); display: none; position: absolute; - left: 0; width: 20px; height: 20px; top: 24px; @@ -88,17 +87,17 @@ .transition(opacity 0.4s); position: absolute; - right: 24px; + right: 18px; bottom: 5px; - width: 14px; - height: 14px; + width: 18px; + height: 19px; cursor: move; color: @color-treeview-control; .opacity(0); &:before { .icon(@bars); - font-size: 14px; + font-size: 18px; } } @@ -163,8 +162,8 @@ .checkbox { position: absolute; - top: 19px; - right: 17px; + top: 0; + right: 0; label { margin-right: 0; diff --git a/modules/backend/assets/less/core/fonts.less b/modules/backend/assets/less/core/fonts.less deleted file mode 100644 index f8387b595..000000000 --- a/modules/backend/assets/less/core/fonts.less +++ /dev/null @@ -1,163 +0,0 @@ -// -// Open Sans -// -------------------------------------------------- - -@font-face { - font-family: 'Open Sans'; - src: url('@{type-font-path}/OpenSans-Light.eot'); - src: url('@{type-font-path}/OpenSans-Light.eot?#iefix') format('embedded-opentype'), - url('@{type-font-path}/OpenSans-Light.svg#open_sanslight') format('svg'), - url('@{type-font-path}/OpenSans-Light.woff') format('woff'), - url('@{type-font-path}/OpenSans-Light.ttf') format('truetype'); - font-style: normal; - font-weight: 300; -} - -@font-face { - font-family: 'Open Sans'; - src: url('@{type-font-path}/OpenSans-Regular.eot'); - src: url('@{type-font-path}/OpenSans-Regular.eot?#iefix') format('embedded-opentype'), - url('@{type-font-path}/OpenSans-Regular.svg#open_sansregular') format('svg'), - url('@{type-font-path}/OpenSans-Regular.woff') format('woff'), - url('@{type-font-path}/OpenSans-Regular.ttf') format('truetype'); - font-style: normal; - font-weight: 400; -} - -@font-face { - font-family: 'Open Sans'; - src: url('@{type-font-path}/OpenSans-Semibold.eot'); - src: url('@{type-font-path}/OpenSans-Semibold.eot?#iefix') format('embedded-opentype'), - url('@{type-font-path}/OpenSans-Semibold.svg#open_sanssemibold') format('svg'), - url('@{type-font-path}/OpenSans-Semibold.woff') format('woff'), - url('@{type-font-path}/OpenSans-Semibold.ttf') format('truetype'); - font-style: normal; - font-weight: 600; -} - -@font-face { - font-family: 'Open Sans'; - src: url('@{type-font-path}/OpenSans-Bold.eot'); - src: url('@{type-font-path}/OpenSans-Bold.eot?#iefix') format('embedded-opentype'), - url('@{type-font-path}/OpenSans-Bold.svg#open_sansbold') format('svg'), - url('@{type-font-path}/OpenSans-Bold.woff') format('woff'), - url('@{type-font-path}/OpenSans-Bold.ttf') format('truetype'); - font-style: normal; - font-weight: 700; - -} - -@font-face { - font-family: 'Open Sans'; - src: url('@{type-font-path}/OpenSans-LightItalic.eot'); - src: url('@{type-font-path}/OpenSans-LightItalic.eot?#iefix') format('embedded-opentype'), - url('@{type-font-path}/OpenSans-LightItalic.svg#open_sanslight_italic') format('svg'), - url('@{type-font-path}/OpenSans-LightItalic.woff') format('woff'), - url('@{type-font-path}/OpenSans-LightItalic.ttf') format('truetype'); - font-style: italic; - font-weight: 300; -} - -@font-face { - font-family: 'Open Sans'; - src: url('@{type-font-path}/OpenSans-Italic.eot'); - src: url('@{type-font-path}/OpenSans-Italic.eot?#iefix') format('embedded-opentype'), - url('@{type-font-path}/OpenSans-Italic.svg#open_sansitalic') format('svg'), - url('@{type-font-path}/OpenSans-Italic.woff') format('woff'), - url('@{type-font-path}/OpenSans-Italic.ttf') format('truetype'); - font-style: italic; - font-weight: 400; -} - -@font-face { - font-family: 'Open Sans'; - src: url('@{type-font-path}/OpenSans-SemiboldItalic.eot'); - src: url('@{type-font-path}/OpenSans-SemiboldItalic.eot?#iefix') format('embedded-opentype'), - url('@{type-font-path}/OpenSans-SemiboldItalic.svg#open_sanssemibold_italic') format('svg'), - url('@{type-font-path}/OpenSans-SemiboldItalic.woff') format('woff'), - url('@{type-font-path}/OpenSans-SemiboldItalic.ttf') format('truetype'); - font-style: italic; - font-weight: 600; -} - -.chrome.mac { - // Prefer woff over svg in Mac Chrome - - @font-face { - font-family: 'Open Sans'; - src: url('@{type-font-path}/OpenSans-Light.eot'); - src: url('@{type-font-path}/OpenSans-Light.eot?#iefix') format('embedded-opentype'), - url('@{type-font-path}/OpenSans-Light.woff') format('woff'), - url('@{type-font-path}/OpenSans-Light.svg#open_sanslight') format('svg'), - url('@{type-font-path}/OpenSans-Light.ttf') format('truetype'); - font-style: normal; - font-weight: 300; - } - - @font-face { - font-family: 'Open Sans'; - src: url('@{type-font-path}/OpenSans-Regular.eot'); - src: url('@{type-font-path}/OpenSans-Regular.eot?#iefix') format('embedded-opentype'), - url('@{type-font-path}/OpenSans-Regular.woff') format('woff'), - url('@{type-font-path}/OpenSans-Regular.svg#open_sansregular') format('svg'), - url('@{type-font-path}/OpenSans-Regular.ttf') format('truetype'); - font-style: normal; - font-weight: 400; - } - - @font-face { - font-family: 'Open Sans'; - src: url('@{type-font-path}/OpenSans-Semibold.eot'); - src: url('@{type-font-path}/OpenSans-Semibold.eot?#iefix') format('embedded-opentype'), - url('@{type-font-path}/OpenSans-Semibold.woff') format('woff'), - url('@{type-font-path}/OpenSans-Semibold.svg#open_sanssemibold') format('svg'), - url('@{type-font-path}/OpenSans-Semibold.ttf') format('truetype'); - font-style: normal; - font-weight: 600; - } - - @font-face { - font-family: 'Open Sans'; - src: url('@{type-font-path}/OpenSans-Bold.eot'); - src: url('@{type-font-path}/OpenSans-Bold.eot?#iefix') format('embedded-opentype'), - url('@{type-font-path}/OpenSans-Bold.woff') format('woff'), - url('@{type-font-path}/OpenSans-Bold.svg#open_sansbold') format('svg'), - url('@{type-font-path}/OpenSans-Bold.ttf') format('truetype'); - font-style: normal; - font-weight: 700; - - } - - @font-face { - font-family: 'Open Sans'; - src: url('@{type-font-path}/OpenSans-LightItalic.eot'); - src: url('@{type-font-path}/OpenSans-LightItalic.eot?#iefix') format('embedded-opentype'), - url('@{type-font-path}/OpenSans-LightItalic.woff') format('woff'), - url('@{type-font-path}/OpenSans-LightItalic.svg#open_sanslight_italic') format('svg'), - url('@{type-font-path}/OpenSans-LightItalic.ttf') format('truetype'); - font-style: italic; - font-weight: 300; - } - - @font-face { - font-family: 'Open Sans'; - src: url('@{type-font-path}/OpenSans-Italic.eot'); - src: url('@{type-font-path}/OpenSans-Italic.eot?#iefix') format('embedded-opentype'), - url('@{type-font-path}/OpenSans-Italic.woff') format('woff'), - url('@{type-font-path}/OpenSans-Italic.svg#open_sansitalic') format('svg'), - url('@{type-font-path}/OpenSans-Italic.ttf') format('truetype'); - font-style: italic; - font-weight: 400; - } - - @font-face { - font-family: 'Open Sans'; - src: url('@{type-font-path}/OpenSans-SemiboldItalic.eot'); - src: url('@{type-font-path}/OpenSans-SemiboldItalic.eot?#iefix') format('embedded-opentype'), - url('@{type-font-path}/OpenSans-SemiboldItalic.woff') format('woff'), - url('@{type-font-path}/OpenSans-SemiboldItalic.svg#open_sanssemibold_italic') format('svg'), - url('@{type-font-path}/OpenSans-SemiboldItalic.ttf') format('truetype'); - font-style: italic; - font-weight: 600; - } -} \ No newline at end of file diff --git a/modules/backend/assets/less/core/mixins.less b/modules/backend/assets/less/core/mixins.less index 1707445c3..e3e0d6981 100644 --- a/modules/backend/assets/less/core/mixins.less +++ b/modules/backend/assets/less/core/mixins.less @@ -128,7 +128,7 @@ .justify-content(@justify: flex-start) { -webkit-justify-content: @justify; -moz-justify-content: @justify; - -ms-justify-content: ; + -ms-justify-content: @justify; -webkit-box-pack: @justify; justify-content: @justify; } diff --git a/modules/backend/assets/less/core/variables.less b/modules/backend/assets/less/core/variables.less index 04730b292..469755446 100644 --- a/modules/backend/assets/less/core/variables.less +++ b/modules/backend/assets/less/core/variables.less @@ -2,7 +2,7 @@ // Override UI variables // -------------------------------------------------- -@font-family-base: 'Open Sans', Arial, sans-serif; +@font-family-base: sans-serif; // // Paths @@ -29,8 +29,9 @@ @color-footer-border: #dfdfdf; @color-footer-text: #666666; -@color-sidebarnav-bg: #34495e; +@color-sidebarnav-bg: #31495F; @color-sidebarnav-active-text: #ffffff; +@color-sidebarnav-active-bg: #1f99dc; @color-sidebarnav-active-icon: #ffffff; @color-sidebarnav-inactive-text: rgba(255,255,255,.35); @color-sidebarnav-inactive-icon: rgba(255,255,255,.35); @@ -38,13 +39,13 @@ @color-sidebarnav-counter-text: #ffffff; @color-sidebarnav-tree-group: #ecf0f1; -@color-sidebarnav-tree-group-bg: #2b3e50; -@color-sidebarnav-tree-inactive-header: rgba(255,255,255,.74); -@color-sidebarnav-tree-inactive-desc: rgba(255,255,255,.64); -@color-sidebarnav-tree-inactive-text: rgba(255,255,255,.26); +@color-sidebarnav-tree-group-bg: #2A3E51; +@color-sidebarnav-tree-inactive-header: #ffffff; +@color-sidebarnav-tree-inactive-desc: #BDC3C7; +@color-sidebarnav-tree-inactive-text: #ffffff; @color-sidebarnav-tree-active-header: #ffffff; -@color-sidebarnav-tree-inactive-bg: #3d5265; -@color-sidebarnav-tree-active-bg: #34495e; +@color-sidebarnav-tree-inactive-bg: transparent; +@color-sidebarnav-tree-active-bg: #1F99DC; @color-sidebarnav-tree-active-text: rgba(255,255,255,.91); @color-sidebarnav-tree-active-marker: #e67e22; @color-sidebarnav-back-link-bg: #2b3e50; @@ -67,7 +68,7 @@ @color-outer-form-label: #666666; @color-breadcrumb-text-active: #9da3a7; -@color-breadcrumb-text: #ecf0f1; +@color-breadcrumb-text: #9B9B9B; @color-breadcrumb-background: #2b343d; @color-custom-input-icon: #666666; diff --git a/modules/backend/assets/less/dashboard/dashboard.less b/modules/backend/assets/less/dashboard/dashboard.less new file mode 100644 index 000000000..4df8dd1c5 --- /dev/null +++ b/modules/backend/assets/less/dashboard/dashboard.less @@ -0,0 +1,70 @@ +@import "../../../../backend/assets/less/core/boot.less"; + +.dashboard-container > .report-container { + .transition(background 1s ease); + .border-radius(5px); + + &.loading { + position: absolute; + width: 100%; + height: 100%; + background: #fff; + + .loading-indicator-container { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + + .loading-indicator { + background: transparent; + padding: 0; + height: 150px; + top: 50%; + margin-top: -90px; + + &:after { + content: ''; + background: transparent url('../../images/dashboard-loading-indicator.svg') no-repeat; + background-size: 100px 100px; + width: 100px; + height: 100px; + left: 50%; + top: 50%; + margin-top: -50px; + margin-left: -50px; + position: absolute; + .animation(spin 1s linear infinite); + } + + &:before { + content: ''; + background: transparent url('../../images/dashboard-loading-indicator.svg') no-repeat; + background-size: 150px 150px; + width: 150px; + height: 150px; + left: 50%; + top: 50%; + margin-top: -75px; + margin-left: -75px; + position: absolute; + .animation(spin 1.5s linear infinite); + .opacity(.9); + } + + > span { + left: 50%; + width: 200px; + height: 200px; + margin-left: -100px; + margin-top: -100px; + background-size: 200px 200px; + background-image: url('../../images/dashboard-loading-indicator.svg'); + .animation(spin 2s linear infinite); + .opacity(.8); + } + } + } + } +} diff --git a/modules/backend/assets/less/layout/fancylayout.less b/modules/backend/assets/less/layout/fancylayout.less index 98a49abe2..45c620986 100644 --- a/modules/backend/assets/less/layout/fancylayout.less +++ b/modules/backend/assets/less/layout/fancylayout.less @@ -37,7 +37,7 @@ overflow: hidden; &:before, &:after { - top: 7px; + top: 13px; font-size: 14px; color: @color-fancy-master-tabs-inactive-text; } @@ -54,11 +54,12 @@ > ul.nav-tabs { margin-left: -8px; > li { - margin-left: -8px; + margin-left: -5px; top: 1px; + padding-top: 3px; span.tab-close{ - top: 9px; + top: 15px; right: -3px; left: auto; z-index: 110; @@ -67,7 +68,8 @@ top: 4px; right: 1px; color: rgba(255, 255, 255, 0.3) !important; - font: 14px bold "Helvetica Neue", Helvetica, Arial, sans-serif; + font-style: normal; + font-weight: bold; &:hover { color: @color-fancy-master-tabs-active-text !important; } } @@ -85,37 +87,48 @@ > span.title { position: relative; display: inline-block; - padding: 8px 5px 9px 5px; - height: 31px; - font-size: 13px; + padding: 12px 5px 0 5px; + height: 38px; + font-size: 14px; z-index: 100; background-color: @color-fancy-form-inactive-tab; &:before, &:after { content: ' '; position: absolute; - background: transparent url(../images/tab-shape.svg) no-repeat left -80px; width: 20px; display: block; - height: 30px; + height: 37px; top: 0; z-index: 100; + background-color: @color-fancy-form-inactive-tab; } &:before { - left: -20px; + left: -14px; + .border-radius(8px 0 0 0); + .transform( ~'skewX(-20deg)'); + } &:after { - right: -20px; - background-position: -80px -80px; + right: -14px; + .border-radius(0 8px 0 0); + .transform( ~'skewX(20deg)'); + } + + span { + border-top: none; + padding: 0; + margin-top: 0; + overflow: visible; } } &:before { z-index: 110; position: absolute; - top: 15px; + top: 18px; left: 22px; } @@ -135,11 +148,11 @@ background-color: @color-fancy-form-tabless-fields-bg; z-index: 105; &:before { - background-position: left -40px; z-index: 107; + background-color: @color-fancy-form-tabless-fields-bg; } &:after { - background-position: -80px -40px; + background-color: @color-fancy-form-tabless-fields-bg; z-index: 107; } } @@ -184,6 +197,7 @@ &.secondary-tabs { > div > ul.nav-tabs { background: @color-fancy-secondary-tabs-bg; + padding-left: 15px; > li { border-right: none; padding-right: 0; @@ -191,8 +205,20 @@ a { background: transparent; border: none; - padding: 8px 10px; + padding: 12px 10px 13px 10px; + font-size: 14px; + font-weight: normal; + line-height: 14px; color: @color-fancy-secondary-tabs-inactive-text; + + span { + span { + overflow: visible; + border-top: none; + margin-top: 0; + padding-top: 0; + } + } } &.active { @@ -233,42 +259,45 @@ a { padding: 8px 16px 0 16px; font-weight: 400; - height: 33px; + height: 36px; color: #2b3e50; .opacity(0.6); > span.title { position: relative; display: inline-block; - padding: 4px 5px 9px 5px; - font-size: 13px; + padding: 8px 5px 9px 5px; + font-size: 14px; z-index: 100; - height: 25px!important; + height: 27px!important; background-color: transparent; &:before, &:after { content: ' '; position: absolute; - background: transparent url(../images/secondary-tab-shape-content.svg) no-repeat left top; + background-color: white; width: 15px; - height: 25px; + height: 28px; top: 0; z-index: 100; display: none; } &:before { - left: -15px; + left: -11px; + .border-radius(8px 0 0 0); + .transform( ~'skewX(-20deg)'); } &:after { - right: -15px; - background-position: -60px 0; + right: -11px; + .border-radius(0 8px 0 0); + .transform( ~'skewX(20deg)'); } span { height: 18px; - font-size: 12px; + font-size: 14px; } } } @@ -301,6 +330,12 @@ > li { a { color: white; + + > span.title { + &:before, &:after { + background-color: white; + } + } } &.active a { @@ -330,6 +365,7 @@ > li { background: transparent; border-right: none; + margin-right: -8px; &:first-child { margin-left: -5px; @@ -339,7 +375,7 @@ background: transparent; border: none; padding: 12px 16px 0px; - font-size: 12px; + font-size: 14px; font-weight: 400; color: @color-fancy-primary-tabs-inactive-text; @@ -349,15 +385,22 @@ padding: 5px 5px 3px 5px; &:before, &:after { + background: @color-fancy-primary-tabs-inactive-bg; + border-width: 0; top: 0; } &:before { - background-position: left -92px; + left: -20px; } &:after { - background-position: -61px -92px; + right: -20px; + } + + span { + border-width: 0; + vertical-align: top; } } } @@ -372,12 +415,8 @@ span.title { background: @color-fancy-primary-tabs-active-bg; - &:before { - background-position: left -62px; - } - - &:after { - background-position: -61px -62px; + &:before, &:after { + background: @color-fancy-primary-tabs-active-bg; } } } @@ -386,15 +425,11 @@ } > .tab-content > .tab-pane { - padding: 15px 15px 0 15px; + padding: @padding-standard @padding-standard 0 @padding-standard; &.pane-compact { padding: 0; } - - .form-control { - border-width: 1px; - } } &.collapsed { @@ -413,7 +448,7 @@ padding: 0; &.padded-pane { - padding: 15px 15px 0 15px; + padding: @padding-standard @padding-standard 0 @padding-standard; } } } @@ -482,6 +517,7 @@ } .form-buttons { + margin-left: 10px; padding-bottom: 0; } } @@ -505,25 +541,28 @@ .form-buttons { .transition(all 0.5s); - padding-top: 2px; + padding-top: 11px; padding-bottom: 5px; - margin-top: -6px; .btn { - margin-left: -11px; + padding: 0; + margin-right: 5px; + margin-top: -6px; + margin-right: 30px; background-color: transparent; - } - } - - .form-buttons { - .btn { color: @color-fancy-master-tabs-active-text; + font-weight: normal; + .opacity(0.5); .transition(all 0.3s ease); &:hover { .opacity(1); } + + &:last-child { + margin-right: 0; + } } } @@ -598,4 +637,10 @@ html.cssanimations { } } } +} + +html.gecko { + .fancy-layout .control-tabs.secondary-tabs > div > ul.nav-tabs > li.active a { + padding-top: 13px; + } } \ No newline at end of file diff --git a/modules/backend/assets/less/layout/layout.less b/modules/backend/assets/less/layout/layout.less index da8c8491e..f1bbe99d7 100644 --- a/modules/backend/assets/less/layout/layout.less +++ b/modules/backend/assets/less/layout/layout.less @@ -50,8 +50,8 @@ body { .control-tabs.primary-tabs { > ul.nav-tabs, > div > ul.nav-tabs, > div > div > ul.nav-tabs { - margin-left: -20px; - margin-right: -20px; + margin-left: -(@padding-standard); + margin-right: -(@padding-standard); } &.tabs-no-inset { @@ -74,11 +74,14 @@ body { &.width-100 { width: 100px; } &.width-120 { width: 120px; } + &.width-130 { width: 130px; } + &.width-140 { width: 140px; } &.width-200 { width: 200px; } &.width-300 { width: 300px; } + &.width-350 { width: 350px; } &.layout-container, .layout-container, &.padded-container, .padded-container { - padding: 20px 20px 0 20px; + padding: @padding-standard @padding-standard 0 @padding-standard; // Container to sit flush to the element above .container-flush { diff --git a/modules/backend/assets/less/layout/mainmenu.less b/modules/backend/assets/less/layout/mainmenu.less index 68ee9617e..07c3a988c 100644 --- a/modules/backend/assets/less/layout/mainmenu.less +++ b/modules/backend/assets/less/layout/mainmenu.less @@ -2,15 +2,53 @@ // Top navigation bar // -------------------------------------------------- +@mainmenu-height: 78px; +@mainmenu-tile-dimension: 65px; +@mainmenu-tile-icon-dimension: 30px; +@mainmenu-tile-label-height: 20px; +@mainmenu-tile-label-width: 100px; + body.mainmenu-open { overflow: hidden; } -nav#layout-mainmenu.navbar { +.mainmenu-item-link() { + display: inline-block; + font-size: 15px; + color: inherit; + outline: none; + + &:hover { + background-color: transparent !important; + } + + &:active, &:focus { + text-decoration: none; + color: @color-mainmenu-inactive; + } + + i { + line-height: 1; + font-size: 30px; + vertical-align: middle; + } +} + +.mainmenu-tooltip { + .tooltip-inner { + font-size: 16px; + padding: 6px 16px; + border-radius: 0; + } +} + +nav#layout-mainmenu { background-color: @color-mainmenu; padding: 0 0 0 20px; line-height: 0; white-space: nowrap; + vertical-align: top; + height: @mainmenu-height; a { text-decoration: none; @@ -24,61 +62,39 @@ nav#layout-mainmenu.navbar { padding: 0; list-style: none; float: left; - font-weight: 600; white-space: nowrap; overflow: hidden; li { color: @color-mainmenu-inactive; display: inline-block; - margin-right: 30px; + vertical-align: top; position: relative; - &:last-child { margin-right: 0; } + a { + .mainmenu-item-link(); + padding: 14px 0 10px; - &.active { - &:after { - content: ' '; - position: absolute; - bottom: 0; - left: 50%; - margin-left: -8.5px; + img.svg-icon { + height: 30px; + width: 30px; + margin-right: 10px; + position: relative; + top: 0; } } - &.icon { + &.icon-only { margin-right: 0; - i { margin-right: 0; } a { padding: 14px; } - } - - &.power-off, &.preview { - i { font-size: 20px; } - a { padding: 22px 20px 20px 20px; } - } - - &.account { - margin-right: 0; - line-height: 23px; - - a { - padding-right: 20px; - position: relative; - z-index: 590; - } - - img { - width: 25px; - margin-right: 7px; - position: relative; - top: -2px; - } + i { margin-right: 0; } } } - &.nav { display: inline-block; } + &.nav { + display: inline-block; + } } - .menu-toggle { display: none; } .toolbar-item { padding-right: 0; @@ -86,17 +102,179 @@ nav#layout-mainmenu.navbar { &:before, &:after { margin-top: 0; } - &:before { left: -12px; } - &:after { right: -12px; } - &.scroll-active-before:before { color: @color-mainmenu-active; } - &.scroll-active-after:after { color: @color-mainmenu-active; } + &:before { + left: -12px; + } + + &:after { + right: -12px; + } + + &.scroll-active-before:before { + color: @color-mainmenu-active; + } + + &.scroll-active-after:after { + color: @color-mainmenu-active; + } + } + + // + // Toolbar + // + + ul.mainmenu-toolbar { + li.mainmenu-preview { + i { + font-size: 20px; + } + + a { + height: @mainmenu-height - 16px; + line-height: @mainmenu-height - 16px; + padding: 0 15px; + margin: 8px 0 8px 11px; + } + } + + li.mainmenu-account { + margin-right: 0; + + > a { + height: @mainmenu-height; + line-height: @mainmenu-height; + padding: 0 20px 0 10px; + font-size: 16px; + position: relative; + // z-index: 200; // Previous value 590 was overlappnig with drop-down menus on small screens + z-index: 590; // @todo Investigate: This causes the button to dim without 590 + } + + img { + width: 40px; + margin-right: 15px; + border-radius: 999px; + } + + ul { + line-height: 23px; + } + } + } + + // + // Tiles + // + + &:hover { + ul.mainmenu-nav li { + .transition(opacity .15s ease); + .opacity(1); + } + } + + ul.mainmenu-nav { + li a { + position: relative; + width: @mainmenu-tile-dimension; + height: @mainmenu-tile-dimension; + + .nav-icon { + text-align: center; + display: block; + position: absolute; + top: 50%; + left: 50%; + margin-left: -(@mainmenu-tile-icon-dimension / 2); + margin-top: -(@mainmenu-tile-dimension - @mainmenu-tile-label-height) / 2; + width: @mainmenu-tile-icon-dimension; + height: @mainmenu-tile-icon-dimension; + i, img { margin: 0; } + } + + .nav-label { + display: block; + width: @mainmenu-tile-label-width; + height: @mainmenu-tile-label-height; + line-height: (@mainmenu-tile-label-height+3); + position: absolute; + bottom: 0; + left: 50%; + padding: 0 5px; + margin-left: -(@mainmenu-tile-label-width / 2); + overflow: hidden; + text-overflow: ellipsis; + text-align: center; + } + } + + li { + .opacity(.65); + .transition(opacity 5s ease); + .transition-delay(5s); + + margin-right: 30px; + padding: 3px 0; + + &:first-child { + margin-left: 8px; + } + + &:last-child { + margin-right: 0; + } + + &.active { + .opacity(1); + + a .nav-label { + text-shadow: 1px 1px 0 rgba(255,255,255,.3); + } + } + + &:hover { + .nav-label { + width: auto; + min-width: @mainmenu-tile-label-width; + text-overflow: all; + overflow: visible; + background-color: @color-mainmenu; + z-index: 2; + } + } + } + } + + // + // Mobile + // + + .menu-toggle { + .mainmenu-item-link(); + height: @mainmenu-height; + line-height: @mainmenu-height; + display: none; + + > i { + margin-right: 10px; + } + } + +} + +html.svg { + nav#layout-mainmenu, + .mainmenu-collapsed { + img.svg-icon { + display: inline-block; + } } } -nav#layout-mainmenu.navbar ul li .mainmenu-accountmenu { +nav#layout-mainmenu ul li .mainmenu-accountmenu { position: fixed; - top: 63px; + top: @mainmenu-height; right: 0; background: @color-accountmenu-bg; z-index: 590; @@ -121,7 +299,7 @@ nav#layout-mainmenu.navbar ul li .mainmenu-accountmenu { li { padding: 0; margin: 0; - font-weight: 400; + font-weight: normal; text-align: left; display: block; @@ -149,47 +327,6 @@ nav#layout-mainmenu.navbar ul li .mainmenu-accountmenu { } } -nav#layout-mainmenu.navbar ul li a, -nav#layout-mainmenu .menu-toggle, -.mainmenu-collapsed li a { - padding: 14px 0; - display: inline-block; - font-size: 14px; - color: inherit; - outline: none; - - &:hover { - background-color: transparent !important; - } - - &:active, &:focus { - text-decoration: none; - color: @color-mainmenu-inactive; - } - - i { - line-height: 1; - font-size: 35px; - vertical-align: middle; - margin-right: 10px; - } -} - -nav#layout-mainmenu.navbar ul li { - a { - i { font-size: 28px; } - } - &.active a { - i { font-size: 35px; } - } -} - -.mainmenu-collapsed li a i { - width: 40px; - text-align: left; - display: inline-block; -} - nav#layout-mainmenu.navbar ul li:hover, .mainmenu-collapsed li:hover { a { @@ -207,7 +344,6 @@ nav#layout-mainmenu.navbar ul li, .mainmenu-collapsed li { &.active, &.highlight { color: @color-mainmenu-active !important; - font-weight: 600; a { color: @color-mainmenu-active !important; @@ -229,12 +365,11 @@ body.drag { @media (max-width: @menu-breakpoint-max) { nav#layout-mainmenu.navbar { - ul.nav {display: none;} + ul.nav { display: none; } .menu-toggle { display: inline-block; color: @color-mainmenu-active!important; - font-weight: 600; } } @@ -264,6 +399,8 @@ body.drag { color: @color-mainmenu-inactive; a { + .mainmenu-item-link(); + white-space: nowrap; display: block; padding: 15px 20px; @@ -271,6 +408,27 @@ body.drag { &:hover { text-decoration: none; } + + .nav-icon { + margin-right: 10px; + + img.svg-icon { + position: relative; + top: -3px; + width: 30px; + height: 30px; + } + + i { + width: 30px; + text-align: left; + display: inline-block; + } + } + } + + &.active a { + padding: 9px 20px 11px 20px; } } } @@ -288,6 +446,6 @@ body.mainmenu-open .mainmenu-collapsed ul { } @media (min-width: @menu-breakpoint-min) { - #layout-canvas {position: static!important;} - .mainmenu-collapsed {display: none!important;} + #layout-canvas { position: static!important; } + .mainmenu-collapsed { display: none!important; } } diff --git a/modules/backend/assets/less/layout/outerlayout.less b/modules/backend/assets/less/layout/outerlayout.less index 81f060b9a..dde6c0ab5 100644 --- a/modules/backend/assets/less/layout/outerlayout.less +++ b/modules/backend/assets/less/layout/outerlayout.less @@ -112,6 +112,27 @@ html.csstransitions { } } +@media (max-width: @screen-sm) { + body.outer .layout > .layout-row { + &.layout-head { + > .layout-cell { + padding: 50px @padding-standard; + } + } + + > .layout-cell .outer-form-container { + width: auto; + padding: @padding-standard; + + .horizontal-form input { + display: block; + width: 100%!important; + margin-bottom: @padding-standard; + } + } + } +} + /* .outer-form-container { diff --git a/modules/backend/assets/less/layout/sidenav.less b/modules/backend/assets/less/layout/sidenav.less index d4168a3c5..1d4d23e19 100644 --- a/modules/backend/assets/less/layout/sidenav.less +++ b/modules/backend/assets/less/layout/sidenav.less @@ -3,21 +3,23 @@ // -------------------------------------------------- #layout-sidenav { - .virtualFullHeight() { - content: ' '; - position: absolute; - height: 100%; - top: 0; - } background-color: @color-sidebarnav-bg; position: absolute; height: 100%; width: 100%; - padding: 10px 0; - .box-sizing(border-box); + .sidenav-shadow-element() { + content: ''; + position: absolute; + height: 100%; + top: 0; + right: 0; + width: 10px; + .box-shadow(inset -5px 0 3px rgba(0,0,0,.1)); + } + ul { position: relative; margin: 0; @@ -25,17 +27,26 @@ height: 100%; overflow: hidden; + &, li:first-child a { + .box-shadow(inset 0 6px 3px -3px rgba(0,0,0,.1)); + } + + &:after { + .sidenav-shadow-element(); + } + li { display: block; text-align: center; position: relative; a { - padding: 13px; + padding: 20px 10px; display: block; - font-size: 12px; + font-size: 14px; color: @color-sidebarnav-inactive-text; font-weight: normal; + position: relative; &:hover { text-decoration: none; @@ -59,6 +70,14 @@ i { color: @color-sidebarnav-active-icon; } } + &.active a { + background: @color-sidebarnav-active-bg; + text-shadow: 1px 1px 0 rgba(0,0,0,.2); + > i { + text-shadow: none; + } + } + span.counter { display: block; position: absolute; @@ -81,8 +100,6 @@ } } } - - .vertical-scroll-marker(@color-sidebarnav-inactive-icon); } #layout-sidenav.layout-sidenav ul.drag li:not(.active) a:hover, diff --git a/modules/backend/assets/less/layout/sidepanel.less b/modules/backend/assets/less/layout/sidepanel.less index f0fe8a8d4..677fc0cc1 100644 --- a/modules/backend/assets/less/layout/sidepanel.less +++ b/modules/backend/assets/less/layout/sidepanel.less @@ -5,12 +5,16 @@ #layout-side-panel { .fix-button { position: absolute; - right: 2px; - top: 1px; - display: block; - width: 20px; - height: 20px; + right: -25px; + top: 0; + display: none; + width: 25px; + height: 25px; font-size: 13px; + background: #ecf0f1; + z-index: 120; + .opacity(0.5); + .border-radius(~'0 4px 4px 0'); i { display: block; @@ -21,24 +25,26 @@ &:hover { text-decoration: none; + display: block; .opacity(1)!important; } } - .fix-button-content-header .fix-button { - top: 9px; - right: 7px; - - i { - color: @color-scrollpanel-fix-button-light; + &:hover { + .fix-button { + display: block; } } + .fix-button-content-header .fix-button { + top: 46px; + } + .sidepanel-content-header { background: #d35400; color: white; - font-size: 14px; - padding: 8px 15px; + font-size: 15px; + padding: 12px 20px 13px; position: relative; &:after { @@ -65,7 +71,7 @@ body.display-side-panel { display: block; position: absolute; z-index: 500; - width: 300px; + width: 350px; .box-shadow(2px 0px 2px 0 rgba(0, 0, 0, 0.3)); } } diff --git a/modules/backend/assets/less/october.less b/modules/backend/assets/less/october.less index 4c1f03313..be5dea606 100644 --- a/modules/backend/assets/less/october.less +++ b/modules/backend/assets/less/october.less @@ -36,6 +36,7 @@ @import "controls/namevaluelist.less"; @import "controls/scrollpad.less"; @import "controls/autocomplete.less"; +@import "controls/svg-icons.less"; // // October Storm UI @@ -48,7 +49,6 @@ // // Core (shared elements) -@import "core/fonts.less"; @import "core/animations.less"; // Boot variables and mixins diff --git a/modules/backend/behaviors/FormController.php b/modules/backend/behaviors/FormController.php index 48906da73..fe14ddc6d 100644 --- a/modules/backend/behaviors/FormController.php +++ b/modules/backend/behaviors/FormController.php @@ -39,7 +39,12 @@ class FormController extends ControllerBehavior const CONTEXT_PREVIEW = 'preview'; /** - * @var Backend\Classes\WidgetBase Reference to the widget object. + * @var \Backend\Classes\Controller|FormController Reference to the back end controller. + */ + protected $controller; + + /** + * @var \Backend\Widgets\Form Reference to the widget object. */ protected $formWidget; @@ -180,6 +185,8 @@ class FormController extends ControllerBehavior ); $model = $this->controller->formCreateModelObject(); + $model = $this->controller->formExtendModel($model); + $this->initForm($model); } catch (Exception $ex) { @@ -194,7 +201,10 @@ class FormController extends ControllerBehavior public function create_onSave($context = null) { $this->context = strlen($context) ? $context : $this->getConfig('create[context]', self::CONTEXT_CREATE); + $model = $this->controller->formCreateModelObject(); + $model = $this->controller->formExtendModel($model); + $this->initForm($model); $this->controller->formBeforeSave($model); @@ -363,9 +373,7 @@ class FormController extends ControllerBehavior protected function createModel() { $class = $this->config->modelClass; - $model = new $class(); - - $model = $this->controller->formExtendModel($model); + $model = new $class; return $model; } @@ -571,7 +579,6 @@ class FormController extends ControllerBehavior { } - /** * Finds a Model record by its primary identifier, used by update actions. This logic * can be changed by overriding it in the controller. @@ -584,7 +591,7 @@ class FormController extends ControllerBehavior throw new ApplicationException($this->getLang('not-found-message', 'backend::lang.form.missing_id')); } - $model = $this->createModel(); + $model = $this->controller->formCreateModelObject(); /* * Prepare query and find model record @@ -599,12 +606,14 @@ class FormController extends ControllerBehavior ])); } + $result = $this->controller->formExtendModel($result); + return $result; } /** - * Creates a new instance of a form model, used by create actions. This logic - * can be changed by overriding it in the controller. + * Creates a new instance of a form model. This logic can be changed + * by overriding it in the controller. * @return Model */ public function formCreateModelObject() diff --git a/modules/backend/behaviors/ImportExportController.php b/modules/backend/behaviors/ImportExportController.php index 8e0b9a9e2..3b41af513 100644 --- a/modules/backend/behaviors/ImportExportController.php +++ b/modules/backend/behaviors/ImportExportController.php @@ -7,6 +7,7 @@ use Response; use Backend; use BackendAuth; use Backend\Classes\ControllerBehavior; +use Backend\Behaviors\ImportExportController\TranscodeFilter; use League\Csv\Reader as CsvReader; use League\Csv\Writer as CsvWriter; use ApplicationException; @@ -179,10 +180,11 @@ class ImportExportController extends ControllerBehavior $model->fill($optionData); } - $model->import($matches, [ - 'sessionKey' => $this->importUploadFormWidget->getSessionKey(), - 'firstRowTitles' => post('first_row_titles', false) - ]); + $importOptions = $this->getFormatOptionsFromPost(); + $importOptions['sessionKey'] = $this->importUploadFormWidget->getSessionKey(); + $importOptions['firstRowTitles'] = post('first_row_titles', false); + + $model->import($matches, $importOptions); $this->vars['importResults'] = $model->getResultStats(); $this->vars['returnUrl'] = $this->getRedirectUrlForType('import'); @@ -218,7 +220,7 @@ class ImportExportController extends ControllerBehavior } $path = $this->getImportFilePath(); - $reader = CsvReader::createFromPath($path); + $reader = $this->createCsvReader($path); if (post('first_row_titles')) { $reader->setOffset(1); @@ -293,7 +295,7 @@ class ImportExportController extends ControllerBehavior return null; } - $reader = CsvReader::createFromPath($path); + $reader = $this->createCsvReader($path); $firstRow = $reader->fetchOne(0); if (!post('first_row_titles')) { @@ -302,6 +304,13 @@ class ImportExportController extends ControllerBehavior }); } + /* + * Prevents unfriendly error to be thrown due to bad encoding at response time. + */ + if (json_encode($firstRow) === false) { + throw new ApplicationException(Lang::get('backend::lang.import_export.encoding_not_supported_error')); + } + return $firstRow; } @@ -384,19 +393,13 @@ class ImportExportController extends ControllerBehavior try { $model = $this->exportGetModel(); $columns = $this->processExportColumnsFromPost(); - $exportOptions = [ - 'sessionKey' => $this->exportFormatFormWidget->getSessionKey() - ]; if ($optionData = post('ExportOptions')) { $model->fill($optionData); } - if (post('format_preset') == 'custom') { - $exportOptions['delimiter'] = post('format_delimiter'); - $exportOptions['enclosure'] = post('format_enclosure'); - $exportOptions['escape'] = post('format_escape'); - } + $exportOptions = $this->getFormatOptionsFromPost(); + $exportOptions['sessionKey'] = $this->exportFormatFormWidget->getSessionKey(); $reference = $model->export($columns, $exportOptions); $fileUrl = $this->controller->actionUrl( @@ -695,4 +698,69 @@ class ImportExportController extends ControllerBehavior return $this->controller->actionUrl($type); } -} \ No newline at end of file + + /** + * Create a new CSV reader with options selected by the user + * @param string $path + * + * @return CsvReader + */ + protected function createCsvReader($path) + { + $reader = CsvReader::createFromPath($path); + $options = $this->getFormatOptionsFromPost(); + + if ($options['delimiter'] !== null) { + $reader->setDelimiter($options['delimiter']); + } + + if ($options['enclosure'] !== null) { + $reader->setEnclosure($options['enclosure']); + } + + if ($options['escape'] !== null) { + $reader->setEscape($options['escape']); + } + + if ( + $options['encoding'] !== null && + $reader->isActiveStreamFilter() + ) { + $reader->appendStreamFilter(sprintf( + '%s%s:%s', + TranscodeFilter::FILTER_NAME, + strtolower($options['encoding']), + 'utf-8' + )); + } + + return $reader; + } + + /** + * Returns the file format options from postback. This method + * can be used to define presets. + * @return array + */ + protected function getFormatOptionsFromPost() + { + $presetMode = post('format_preset'); + + $options = [ + 'delimiter' => null, + 'enclosure' => null, + 'escape' => null, + 'encoding' => null + ]; + + if ($presetMode == 'custom') { + $options['delimiter'] = post('format_delimiter'); + $options['enclosure'] = post('format_enclosure'); + $options['escape'] = post('format_escape'); + $options['encoding'] = post('format_encoding'); + } + + return $options; + } + +} diff --git a/modules/backend/behaviors/ListController.php b/modules/backend/behaviors/ListController.php index a1a8c7353..882ef3a3a 100644 --- a/modules/backend/behaviors/ListController.php +++ b/modules/backend/behaviors/ListController.php @@ -27,17 +27,17 @@ class ListController extends ControllerBehavior protected $primaryDefinition; /** - * @var Backend\Classes\WidgetBase Reference to the list widget object. + * @var \Backend\Classes\WidgetBase Reference to the list widget object. */ protected $listWidgets = []; /** - * @var WidgetBase Reference to the toolbar widget objects. + * @var \Backend\Classes\WidgetBase Reference to the toolbar widget objects. */ protected $toolbarWidgets = []; /** - * @var WidgetBase Reference to the filter widget objects. + * @var \Backend\Classes\WidgetBase Reference to the filter widget objects. */ protected $filterWidgets = []; @@ -55,7 +55,7 @@ class ListController extends ControllerBehavior /** * Behavior constructor - * @param Backend\Classes\Controller $controller + * @param \Backend\Classes\Controller $controller */ public function __construct($controller) { @@ -361,7 +361,7 @@ class ListController extends ControllerBehavior /** * Returns the widget used by this behavior. - * @return Backend\Classes\WidgetBase + * @return \Backend\Classes\WidgetBase */ public function listGetWidget($definition = null) { @@ -387,7 +387,7 @@ class ListController extends ControllerBehavior /** * Called after the list columns are defined. - * @param Backend\Widgets\List $host The hosting list widget + * @param \Backend\Widgets\List $host The hosting list widget * @return void */ public function listExtendColumns($host) @@ -407,7 +407,7 @@ class ListController extends ControllerBehavior /** * Controller override: Extend the query used for populating the list * before the default query is processed. - * @param October\Rain\Database\Builder $query + * @param \October\Rain\Database\Builder $query */ public function listExtendQueryBefore($query, $definition = null) { @@ -416,7 +416,7 @@ class ListController extends ControllerBehavior /** * Controller override: Extend the query used for populating the list * after the default query is processed. - * @param October\Rain\Database\Builder $query + * @param \October\Rain\Database\Builder $query */ public function listExtendQuery($query, $definition = null) { @@ -425,7 +425,7 @@ class ListController extends ControllerBehavior /** * Controller override: Extend the query used for populating the filter * options before the default query is processed. - * @param October\Rain\Database\Builder $query + * @param \October\Rain\Database\Builder $query * @param array $scope */ public function listFilterExtendQuery($query, $scope) diff --git a/modules/backend/behaviors/RelationController.php b/modules/backend/behaviors/RelationController.php index ff13fac7a..8e066f7b4 100644 --- a/modules/backend/behaviors/RelationController.php +++ b/modules/backend/behaviors/RelationController.php @@ -130,6 +130,11 @@ class RelationController extends ControllerBehavior */ protected $viewMode; + /** + * @var string The title used for the manage popup. + */ + protected $manageTitle; + /** * @var string Management of relation as list, form, or pivot. */ @@ -220,6 +225,7 @@ class RelationController extends ControllerBehavior { $this->vars['relationManageId'] = $this->manageId; $this->vars['relationLabel'] = $this->config->label ?: $this->field; + $this->vars['relationManageTitle'] = $this->manageTitle; $this->vars['relationField'] = $this->field; $this->vars['relationType'] = $this->relationType; $this->vars['relationSearchWidget'] = $this->searchWidget; @@ -309,6 +315,7 @@ class RelationController extends ControllerBehavior $this->toolbarButtons = $this->evalToolbarButtons(); $this->viewMode = $this->evalViewMode(); $this->manageMode = $this->evalManageMode(); + $this->manageTitle = $this->evalManageTitle(); $this->manageId = post('manage_id'); $this->foreignId = post('foreign_id'); @@ -501,7 +508,7 @@ class RelationController extends ControllerBehavior */ $defaultButtons = null; - if (!$this->readOnly) { + if (!$this->readOnly && $this->toolbarButtons) { $defaultButtons = '~/modules/backend/behaviors/relationcontroller/partials/_toolbar.htm'; } @@ -613,8 +620,6 @@ class RelationController extends ControllerBehavior $this->relationObject->addConstraints(); } - $this->controller->relationExtendQuery($query, $this->field); - /* * Allows pivot data to enter the fray */ @@ -767,8 +772,6 @@ class RelationController extends ControllerBehavior if (count($existingIds)) { $query->whereNotIn($this->relationModel->getQualifiedKeyName(), $existingIds); } - - $this->controller->relationExtendQuery($query, $this->field); }); } @@ -1206,20 +1209,6 @@ class RelationController extends ControllerBehavior // Overrides // - /** - * !!!! - * !!!! WARNING: DO NOT USE - This method is scheduled to be removed - * !!!! - * - * Controller override: Extend the query used for populating the list - * after the default query is processed. - * @param October\Rain\Database\Builder $query - * @param string $field - */ - public function relationExtendQuery($query, $field) - { - } - /** * Provides an opportunity to manipulate the view widget. * @param Backend\Classes\WidgetBase $widget @@ -1289,10 +1278,16 @@ class RelationController extends ControllerBehavior */ protected function evalToolbarButtons() { - if ($buttons = $this->getConfig('view[toolbarButtons]')) { - return is_array($buttons) - ? $buttons - : array_map('trim', explode('|', $buttons)); + $buttons = $this->getConfig('view[toolbarButtons]'); + + if ($buttons === false) { + return null; + } + elseif (is_string($buttons)) { + return array_map('trim', explode('|', $buttons)); + } + elseif (is_array($buttons)) { + return $buttons; } switch ($this->relationType) { @@ -1327,6 +1322,37 @@ class RelationController extends ControllerBehavior } } + /** + * Determine the management mode popup title. + * @return string + */ + protected function evalManageTitle() + { + if ($customTitle = $this->getConfig('manage[title]')) { + return $customTitle; + } + + switch ($this->manageMode) { + case 'pivot': + case 'list': + if ($this->eventTarget == 'button-link') { + return 'backend::lang.relation.link_a_new'; + } + else { + return 'backend::lang.relation.add_a_new'; + } + break; + case 'form': + if ($this->readOnly) { + return 'backend::lang.relation.preview_name'; + } + else { + return 'backend::lang.relation.update_name'; + } + break; + } + } + /** * Determine the management mode based on the relation type and settings. * @return string diff --git a/modules/backend/behaviors/UserPreferencesModel.php b/modules/backend/behaviors/UserPreferencesModel.php index ea6a1ab25..b9bb6dc01 100644 --- a/modules/backend/behaviors/UserPreferencesModel.php +++ b/modules/backend/behaviors/UserPreferencesModel.php @@ -18,6 +18,9 @@ use Backend\Models\UserPreferences; */ class UserPreferencesModel extends SettingsModel { + /** + * @var array Internal cache of model objects. + */ private static $instances = []; /** diff --git a/modules/backend/behaviors/importexportcontroller/TranscodeFilter.php b/modules/backend/behaviors/importexportcontroller/TranscodeFilter.php new file mode 100644 index 000000000..146eaeeb3 --- /dev/null +++ b/modules/backend/behaviors/importexportcontroller/TranscodeFilter.php @@ -0,0 +1,69 @@ +data = @mb_convert_encoding( + $resource->data, + $this->encodingTo, + $this->encodingFrom + ); + + $consumed += $resource->datalen; + + stream_bucket_append($out, $resource); + } + + return PSFS_PASS_ON; + } + + public function onCreate() + { + if (strpos($this->filtername, self::FILTER_NAME) !== 0) { + return false; + } + + $params = substr($this->filtername, strlen(self::FILTER_NAME)); + if (!preg_match('/^([-\w]+)(:([-\w]+))?$/', $params, $matches)) { + return false; + } + + if (isset($matches[1])) { + $this->encodingFrom = $matches[1]; + } + + $this->encodingTo = mb_internal_encoding(); + if (isset( $matches[3] )) { + $this->encodingTo = $matches[3]; + } + + $this->params['locale'] = setlocale(LC_CTYPE, '0'); + if (stripos($this->params['locale'], 'UTF-8') === false) { + setlocale(LC_CTYPE, 'en_US.UTF-8'); + } + + return true; + } + + public function onClose() + { + setlocale(LC_CTYPE, $this->params['locale']); + } +} diff --git a/modules/backend/behaviors/importexportcontroller/partials/fields_import.yaml b/modules/backend/behaviors/importexportcontroller/partials/fields_import.yaml index da4dbcf02..7c2397304 100644 --- a/modules/backend/behaviors/importexportcontroller/partials/fields_import.yaml +++ b/modules/backend/behaviors/importexportcontroller/partials/fields_import.yaml @@ -15,6 +15,52 @@ fields: fileTypes: csv useCaption: false + format_preset: + label: backend::lang.import_export.file_format + type: dropdown + default: standard + options: + standard: backend::lang.import_export.standard_format + custom: backend::lang.import_export.custom_format + span: right + + format_delimiter: + label: backend::lang.import_export.delimiter_char + default: ',' + span: left + trigger: + action: show + condition: value[custom] + field: format_preset + + format_enclosure: + label: backend::lang.import_export.enclosure_char + span: auto + default: '"' + trigger: + action: show + condition: value[custom] + field: format_preset + + format_escape: + label: backend::lang.import_export.escape_char + span: auto + default: '\' + trigger: + action: show + condition: value[custom] + field: format_preset + + format_encoding: + label: backend::lang.import_export.encoding_format + span: auto + default: UTF-8 + type: dropdown + trigger: + action: show + condition: value[custom] + field: format_preset + first_row_titles: label: backend::lang.import_export.first_row_contains_titles comment: backend::lang.import_export.first_row_contains_titles_desc @@ -34,14 +80,14 @@ fields: label: backend::lang.import_export.file_columns type: partial path: ~/modules/backend/behaviors/importexportcontroller/partials/_import_file_columns.htm - dependsOn: [import_file, first_row_titles] + dependsOn: [import_file, first_row_titles, format_delimiter, format_enclosure, format_escape, format_encoding] span: left import_db_columns: label: backend::lang.import_export.database_fields type: partial path: ~/modules/backend/behaviors/importexportcontroller/partials/_import_db_columns.htm - dependsOn: [import_file, first_row_titles] + dependsOn: [import_file, first_row_titles, format_delimiter, format_enclosure, format_escape, format_encoding] span: right step3_section: diff --git a/modules/backend/behaviors/relationcontroller/partials/_manage_form.htm b/modules/backend/behaviors/relationcontroller/partials/_manage_form.htm index fa6054862..c34ae0c9a 100644 --- a/modules/backend/behaviors/relationcontroller/partials/_manage_form.htm +++ b/modules/backend/behaviors/relationcontroller/partials/_manage_form.htm @@ -12,11 +12,7 @@
',invisibleSpace:'',imageTypes:['image/png','image/jpeg','image/gif'],indentValue:20,verifiedTags:['a','img','b','strong','sub','sup','i','em','u','small','strike','del','cite','ul','ol','li'],inlineTags:['strong','b','u','em','i','code','del','ins','samp','kbd','sup','sub','mark','var','cite','small'],alignmentTags:['P','H1','H2','H3','H4','H5','H6','DL','DT','DD','DIV','TD','BLOCKQUOTE','OUTPUT','FIGCAPTION','ADDRESS','SECTION','HEADER','FOOTER','ASIDE','ARTICLE'],blockLevelElements:['PRE','UL','OL','LI'],highContrast:false,observe:{dropdowns:[]},langs:{en:{html:'HTML',video:'Insert Video',image:'Insert Image',table:'Table',link:'Link',link_insert:'Insert link',link_edit:'Edit link',unlink:'Unlink',formatting:'Formatting',paragraph:'Normal text',quote:'Quote',code:'Code',header1:'Header 1',header2:'Header 2',header3:'Header 3',header4:'Header 4',header5:'Header 5',bold:'Bold',italic:'Italic',fontcolor:'Font Color',backcolor:'Back Color',unorderedlist:'Unordered List',orderedlist:'Ordered List',outdent:'Outdent',indent:'Indent',cancel:'Cancel',insert:'Insert',save:'Save',_delete:'Delete',insert_table:'Insert Table',insert_row_above:'Add Row Above',insert_row_below:'Add Row Below',insert_column_left:'Add Column Left',insert_column_right:'Add Column Right',delete_column:'Delete Column',delete_row:'Delete Row',delete_table:'Delete Table',rows:'Rows',columns:'Columns',add_head:'Add Head',delete_head:'Delete Head',title:'Title',image_position:'Position',none:'None',left:'Left',right:'Right',center:'Center',image_web_link:'Image Web Link',text:'Text',mailto:'Email',web:'URL',video_html_code:'Video Embed Code or Youtube/Vimeo Link',file:'Insert File',upload:'Upload',download:'Download',choose:'Choose',or_choose:'Or choose',drop_file_here:'Drop file here',align_left:'Align text to the left',align_center:'Center text',align_right:'Align text to the right',align_justify:'Justify text',horizontalrule:'Insert Horizontal Rule',deleted:'Deleted',anchor:'Anchor',link_new_tab:'Open link in new tab',underline:'Underline',alignment:'Alignment',filename:'Name (optional)',edit:'Edit',upload_label:'Drop file here or '}},linkify:{regexps:{youtube:/https?:\/\/(?:[0-9A-Z-]+\.)?(?:youtu\.be\/|youtube\.com\S*[^\w\-\s])([\w\-]{11})(?=[^\w\-]|$)(?![?=&+%\w.\-]*(?:['"][^<>]*>|<\/a>))[?=&+%\w.-]*/ig,vimeo:/https?:\/\/(www\.)?vimeo.com\/(\d+)($|\/)/,image:/((https?|www)[^\s]+\.)(jpe?g|png|gif)(\?[^\s-]+)?/ig,url:/(https?:\/\/(?:www\.|(?!www))[^\s\.]+\.[^\s]{2,}|www\.[^\s]+\.[^\s]{2,})/ig,}},codemirror:false};Redactor.fn=$.Redactor.prototype={keyCode:{BACKSPACE:8,DELETE:46,UP:38,DOWN:40,ENTER:13,SPACE:32,ESC:27,TAB:9,CTRL:17,META:91,SHIFT:16,ALT:18,RIGHT:39,LEFT:37,LEFT_WIN:91},init:function(el,options) +$.Redactor=Redactor;$.Redactor.VERSION='10.2.5';$.Redactor.modules=['alignment','autosave','block','buffer','build','button','caret','clean','code','core','dropdown','file','focus','image','indent','inline','insert','keydown','keyup','lang','line','link','linkify','list','modal','observe','paragraphize','paste','placeholder','progress','selection','shortcuts','tabifier','tidy','toolbar','upload','utils'];$.Redactor.opts={lang:'en',direction:'ltr',plugins:false,focus:false,focusEnd:false,placeholder:false,visual:true,tabindex:false,minHeight:false,maxHeight:false,linebreaks:false,replaceDivs:true,paragraphize:true,cleanStyleOnEnter:false,enterKey:true,cleanOnPaste:true,cleanSpaces:true,pastePlainText:false,autosave:false,autosaveName:false,autosaveInterval:60,autosaveOnChange:false,autosaveFields:false,linkTooltip:true,linkProtocol:'http',linkNofollow:false,linkSize:50,imageEditable:true,imageLink:true,imagePosition:true,imageFloatMargin:'10px',imageResizable:true,imageUpload:null,imageUploadParam:'file',uploadImageField:false,dragImageUpload:true,fileUpload:null,fileUploadParam:'file',dragFileUpload:false,s3:false,convertLinks:true,convertUrlLinks:true,convertImageLinks:true,convertVideoLinks:true,preSpaces:4,tabAsSpaces:true,tabKey:true,scrollTarget:false,toolbar:true,toolbarFixed:true,toolbarFixedTarget:document,toolbarFixedTopOffset:0,toolbarExternal:false,toolbarOverflow:false,source:true,buttons:['html','formatting','bold','italic','deleted','unorderedlist','orderedlist','outdent','indent','image','file','link','alignment','horizontalrule'],buttonsHide:[],buttonsHideOnMobile:[],formatting:['p','blockquote','pre','h1','h2','h3','h4','h5','h6'],formattingAdd:false,tabifier:true,deniedTags:['script','style'],allowedTags:false,paragraphizeBlocks:['table','div','pre','form','ul','ol','h1','h2','h3','h4','h5','h6','dl','blockquote','figcaption','address','section','header','footer','aside','article','object','style','script','iframe','select','input','textarea','button','option','map','area','math','hr','fieldset','legend','hgroup','nav','figure','details','menu','summary','p'],removeComments:false,replaceTags:[['strike','del'],['b','strong']],replaceStyles:[['font-weight:\\s?bold',"strong"],['font-style:\\s?italic',"em"],['text-decoration:\\s?underline',"u"],['text-decoration:\\s?line-through','del']],removeDataAttr:false,removeAttr:false,allowedAttr:false,removeWithoutAttr:['span'],removeEmpty:['p'],activeButtons:['deleted','italic','bold','underline','unorderedlist','orderedlist','alignleft','aligncenter','alignright','justify'],activeButtonsStates:{b:'bold',strong:'bold',i:'italic',em:'italic',del:'deleted',strike:'deleted',ul:'unorderedlist',ol:'orderedlist',u:'underline'},shortcuts:{'ctrl+shift+m, meta+shift+m':{func:'inline.removeFormat'},'ctrl+b, meta+b':{func:'inline.format',params:['bold']},'ctrl+i, meta+i':{func:'inline.format',params:['italic']},'ctrl+h, meta+h':{func:'inline.format',params:['superscript']},'ctrl+l, meta+l':{func:'inline.format',params:['subscript']},'ctrl+k, meta+k':{func:'link.show'},'ctrl+shift+7':{func:'list.toggle',params:['orderedlist']},'ctrl+shift+8':{func:'list.toggle',params:['unorderedlist']}},shortcutsAdd:false,buffer:[],rebuffer:[],emptyHtml:'
',invisibleSpace:'',imageTypes:['image/png','image/jpeg','image/gif'],indentValue:20,verifiedTags:['a','img','b','strong','sub','sup','i','em','u','small','strike','del','cite','ul','ol','li'],inlineTags:['strong','b','u','em','i','code','del','ins','samp','kbd','sup','sub','mark','var','cite','small'],alignmentTags:['P','H1','H2','H3','H4','H5','H6','DL','DT','DD','DIV','TD','BLOCKQUOTE','OUTPUT','FIGCAPTION','ADDRESS','SECTION','HEADER','FOOTER','ASIDE','ARTICLE'],blockLevelElements:['PRE','UL','OL','LI'],highContrast:false,observe:{dropdowns:[]},langs:{en:{html:'HTML',video:'Insert Video',image:'Insert Image',table:'Table',link:'Link',link_insert:'Insert link',link_edit:'Edit link',unlink:'Unlink',formatting:'Formatting',paragraph:'Normal text',quote:'Quote',code:'Code',header1:'Header 1',header2:'Header 2',header3:'Header 3',header4:'Header 4',header5:'Header 5',bold:'Bold',italic:'Italic',fontcolor:'Font Color',backcolor:'Back Color',unorderedlist:'Unordered List',orderedlist:'Ordered List',outdent:'Outdent',indent:'Indent',cancel:'Cancel',insert:'Insert',save:'Save',_delete:'Delete',insert_table:'Insert Table',insert_row_above:'Add Row Above',insert_row_below:'Add Row Below',insert_column_left:'Add Column Left',insert_column_right:'Add Column Right',delete_column:'Delete Column',delete_row:'Delete Row',delete_table:'Delete Table',rows:'Rows',columns:'Columns',add_head:'Add Head',delete_head:'Delete Head',title:'Title',image_position:'Position',none:'None',left:'Left',right:'Right',center:'Center',image_web_link:'Image Web Link',text:'Text',mailto:'Email',web:'URL',video_html_code:'Video Embed Code or Youtube/Vimeo Link',file:'Insert File',upload:'Upload',download:'Download',choose:'Choose',or_choose:'Or choose',drop_file_here:'Drop file here',align_left:'Align text to the left',align_center:'Center text',align_right:'Align text to the right',align_justify:'Justify text',horizontalrule:'Insert Horizontal Rule',deleted:'Deleted',anchor:'Anchor',link_new_tab:'Open link in new tab',underline:'Underline',alignment:'Alignment',filename:'Name (optional)',edit:'Edit',upload_label:'Drop file here or '}},linkify:{regexps:{youtube:/https?:\/\/(?:[0-9A-Z-]+\.)?(?:youtu\.be\/|youtube\.com\S*[^\w\-\s])([\w\-]{11})(?=[^\w\-]|$)(?![?=&+%\w.\-]*(?:['"][^<>]*>|<\/a>))[?=&+%\w.-]*/ig,vimeo:/https?:\/\/(www\.)?vimeo.com\/(\d+)($|\/)/,image:/((https?|www)[^\s]+\.)(jpe?g|png|gif)(\?[^\s-]+)?/ig,url:/(https?:\/\/(?:www\.|(?!www))[^\s\.]+\.[^\s]{2,}|www\.[^\s]+\.[^\s]{2,})/ig,}},codemirror:false};Redactor.fn=$.Redactor.prototype={keyCode:{BACKSPACE:8,DELETE:46,UP:38,DOWN:40,ENTER:13,SPACE:32,ESC:27,TAB:9,CTRL:17,META:91,SHIFT:16,ALT:18,RIGHT:39,LEFT:37,LEFT_WIN:91},init:function(el,options) {this.$element=$(el);this.uuid=uuid++;this.rtePaste=false;this.$pasteBox=false;this.loadOptions(options);this.loadModules();this.formatting={};$.merge(this.opts.blockLevelElements,this.opts.alignmentTags);this.reIsBlock=new RegExp('^('+this.opts.blockLevelElements.join('|')+')$','i');this.tidy.setupAllowed();if(this.opts.deniedTags!==false) {var tags=['html','head','link','body','meta','applet'];for(var i=0;i