From 1ab1524eba0453d83159d7cf8b124f5f65810d76 Mon Sep 17 00:00:00 2001 From: Leo Feyer Date: Tue, 3 Oct 2017 21:00:50 +0200 Subject: [PATCH 01/18] Prevent the User::authenticate() method from running twice (see #1067). --- CHANGELOG.md | 4 ++++ src/Resources/contao/controllers/BackendAlerts.php | 6 +++++- src/Resources/contao/controllers/BackendConfirm.php | 6 +++++- src/Resources/contao/controllers/BackendFile.php | 7 ++++++- src/Resources/contao/controllers/BackendHelp.php | 6 +++++- src/Resources/contao/controllers/BackendMain.php | 6 +++++- src/Resources/contao/controllers/BackendPage.php | 7 ++++++- src/Resources/contao/controllers/BackendPassword.php | 6 +++++- src/Resources/contao/controllers/BackendPopup.php | 7 ++++++- src/Resources/contao/controllers/BackendPreview.php | 7 ++++++- src/Resources/contao/controllers/BackendSwitch.php | 7 ++++++- src/Resources/contao/controllers/FrontendIndex.php | 6 +----- src/Resources/contao/library/Contao/User.php | 6 ++++++ 13 files changed, 66 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ebb85b5cf8..f33de2ff95 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Contao core bundle change log +### DEV + + * Prevent the User::authenticate() method from running twice (see #1067). + ### 4.4.6 (2017-09-28) * Bind the lock file path to the installation root directory (see #1107). diff --git a/src/Resources/contao/controllers/BackendAlerts.php b/src/Resources/contao/controllers/BackendAlerts.php index 1255a7d488..50a0d26b13 100644 --- a/src/Resources/contao/controllers/BackendAlerts.php +++ b/src/Resources/contao/controllers/BackendAlerts.php @@ -10,6 +10,7 @@ namespace Contao; +use Contao\CoreBundle\Exception\AccessDeniedException; use Symfony\Component\HttpFoundation\Response; @@ -35,7 +36,10 @@ public function __construct() $this->import('BackendUser', 'User'); parent::__construct(); - $this->User->authenticate(); + if (!\System::getContainer()->get('security.authorization_checker')->isGranted('ROLE_USER')) + { + throw new AccessDeniedException('Access denied'); + } \System::loadLanguageFile('default'); } diff --git a/src/Resources/contao/controllers/BackendConfirm.php b/src/Resources/contao/controllers/BackendConfirm.php index a37b49f9ef..d647e25b98 100644 --- a/src/Resources/contao/controllers/BackendConfirm.php +++ b/src/Resources/contao/controllers/BackendConfirm.php @@ -10,6 +10,7 @@ namespace Contao; +use Contao\CoreBundle\Exception\AccessDeniedException; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Session\SessionInterface; @@ -36,7 +37,10 @@ public function __construct() $this->import('BackendUser', 'User'); parent::__construct(); - $this->User->authenticate(); + if (!\System::getContainer()->get('security.authorization_checker')->isGranted('ROLE_USER')) + { + throw new AccessDeniedException('Access denied'); + } \System::loadLanguageFile('default'); \System::loadLanguageFile('modules'); diff --git a/src/Resources/contao/controllers/BackendFile.php b/src/Resources/contao/controllers/BackendFile.php index a48807158a..dd2270b336 100644 --- a/src/Resources/contao/controllers/BackendFile.php +++ b/src/Resources/contao/controllers/BackendFile.php @@ -10,6 +10,7 @@ namespace Contao; +use Contao\CoreBundle\Exception\AccessDeniedException; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBagInterface; use Symfony\Component\HttpFoundation\Session\SessionInterface; @@ -44,7 +45,11 @@ public function __construct() $this->import('BackendUser', 'User'); parent::__construct(); - $this->User->authenticate(); + if (!\System::getContainer()->get('security.authorization_checker')->isGranted('ROLE_USER')) + { + throw new AccessDeniedException('Access denied'); + } + \System::loadLanguageFile('default'); } diff --git a/src/Resources/contao/controllers/BackendHelp.php b/src/Resources/contao/controllers/BackendHelp.php index 08964715ee..e195e65485 100644 --- a/src/Resources/contao/controllers/BackendHelp.php +++ b/src/Resources/contao/controllers/BackendHelp.php @@ -10,6 +10,7 @@ namespace Contao; +use Contao\CoreBundle\Exception\AccessDeniedException; use Symfony\Component\HttpFoundation\Response; @@ -35,7 +36,10 @@ public function __construct() $this->import('BackendUser', 'User'); parent::__construct(); - $this->User->authenticate(); + if (!\System::getContainer()->get('security.authorization_checker')->isGranted('ROLE_USER')) + { + throw new AccessDeniedException('Access denied'); + } \System::loadLanguageFile('default'); \System::loadLanguageFile('modules'); diff --git a/src/Resources/contao/controllers/BackendMain.php b/src/Resources/contao/controllers/BackendMain.php index 042df72638..a4a534a91c 100644 --- a/src/Resources/contao/controllers/BackendMain.php +++ b/src/Resources/contao/controllers/BackendMain.php @@ -12,6 +12,7 @@ use Contao\CoreBundle\Event\ContaoCoreEvents; use Contao\CoreBundle\Event\PreviewUrlCreateEvent; +use Contao\CoreBundle\Exception\AccessDeniedException; use Knp\Bundle\TimeBundle\DateTimeFormatter; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Session\SessionInterface; @@ -51,7 +52,10 @@ public function __construct() $this->import('BackendUser', 'User'); parent::__construct(); - $this->User->authenticate(); + if (!\System::getContainer()->get('security.authorization_checker')->isGranted('ROLE_USER')) + { + throw new AccessDeniedException('Access denied'); + } // Password change required if ($this->User->pwChange) diff --git a/src/Resources/contao/controllers/BackendPage.php b/src/Resources/contao/controllers/BackendPage.php index 76386c7a9a..3ba190ad87 100644 --- a/src/Resources/contao/controllers/BackendPage.php +++ b/src/Resources/contao/controllers/BackendPage.php @@ -10,6 +10,7 @@ namespace Contao; +use Contao\CoreBundle\Exception\AccessDeniedException; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBagInterface; use Symfony\Component\HttpFoundation\Session\SessionInterface; @@ -44,7 +45,11 @@ public function __construct() $this->import('BackendUser', 'User'); parent::__construct(); - $this->User->authenticate(); + if (!\System::getContainer()->get('security.authorization_checker')->isGranted('ROLE_USER')) + { + throw new AccessDeniedException('Access denied'); + } + \System::loadLanguageFile('default'); } diff --git a/src/Resources/contao/controllers/BackendPassword.php b/src/Resources/contao/controllers/BackendPassword.php index 4ed2e63d8a..55218f6f38 100644 --- a/src/Resources/contao/controllers/BackendPassword.php +++ b/src/Resources/contao/controllers/BackendPassword.php @@ -10,6 +10,7 @@ namespace Contao; +use Contao\CoreBundle\Exception\AccessDeniedException; use Patchwork\Utf8; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -37,7 +38,10 @@ public function __construct() $this->import('BackendUser', 'User'); parent::__construct(); - $this->User->authenticate(); + if (!\System::getContainer()->get('security.authorization_checker')->isGranted('ROLE_USER')) + { + throw new AccessDeniedException('Access denied'); + } \System::loadLanguageFile('default'); \System::loadLanguageFile('modules'); diff --git a/src/Resources/contao/controllers/BackendPopup.php b/src/Resources/contao/controllers/BackendPopup.php index 0434502cc1..d3b17f0d80 100644 --- a/src/Resources/contao/controllers/BackendPopup.php +++ b/src/Resources/contao/controllers/BackendPopup.php @@ -10,6 +10,7 @@ namespace Contao; +use Contao\CoreBundle\Exception\AccessDeniedException; use Symfony\Component\HttpFoundation\Response; @@ -42,7 +43,11 @@ public function __construct() $this->import('BackendUser', 'User'); parent::__construct(); - $this->User->authenticate(); + if (!\System::getContainer()->get('security.authorization_checker')->isGranted('ROLE_USER')) + { + throw new AccessDeniedException('Access denied'); + } + \System::loadLanguageFile('default'); $strFile = \Input::get('src', true); diff --git a/src/Resources/contao/controllers/BackendPreview.php b/src/Resources/contao/controllers/BackendPreview.php index 357d7d25c5..bb52576d5d 100644 --- a/src/Resources/contao/controllers/BackendPreview.php +++ b/src/Resources/contao/controllers/BackendPreview.php @@ -12,6 +12,7 @@ use Contao\CoreBundle\Event\ContaoCoreEvents; use Contao\CoreBundle\Event\PreviewUrlConvertEvent; +use Contao\CoreBundle\Exception\AccessDeniedException; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; @@ -38,7 +39,11 @@ public function __construct() $this->import('BackendUser', 'User'); parent::__construct(); - $this->User->authenticate(); + if (!\System::getContainer()->get('security.authorization_checker')->isGranted('ROLE_USER')) + { + throw new AccessDeniedException('Access denied'); + } + \System::loadLanguageFile('default'); } diff --git a/src/Resources/contao/controllers/BackendSwitch.php b/src/Resources/contao/controllers/BackendSwitch.php index 745602d27b..20d4179365 100644 --- a/src/Resources/contao/controllers/BackendSwitch.php +++ b/src/Resources/contao/controllers/BackendSwitch.php @@ -10,6 +10,7 @@ namespace Contao; +use Contao\CoreBundle\Exception\AccessDeniedException; use Symfony\Component\HttpFoundation\Response; @@ -35,7 +36,11 @@ public function __construct() $this->import('BackendUser', 'User'); parent::__construct(); - $this->User->authenticate(); + if (!\System::getContainer()->get('security.authorization_checker')->isGranted('ROLE_USER')) + { + throw new AccessDeniedException('Access denied'); + } + \System::loadLanguageFile('default'); } diff --git a/src/Resources/contao/controllers/FrontendIndex.php b/src/Resources/contao/controllers/FrontendIndex.php index 8a92a730eb..4e7fd38924 100644 --- a/src/Resources/contao/controllers/FrontendIndex.php +++ b/src/Resources/contao/controllers/FrontendIndex.php @@ -63,7 +63,6 @@ public function run() // Throw a 404 error if the request is not a Contao request (see #2864) elseif ($pageId === false) { - $this->User->authenticate(); throw new PageNotFoundException('Page not found: ' . \Environment::get('uri')); } @@ -182,7 +181,6 @@ public function renderPage($pageModel) if (preg_match($regex, \Environment::get('relativeRequest'))) { - $this->User->authenticate(); throw new PageNotFoundException('Page not found: ' . \Environment::get('uri')); } } @@ -230,15 +228,13 @@ public function renderPage($pageModel) // Load an error 404 page object if ($objPage->domain != \Environment::get('host')) { - $this->User->authenticate(); $this->log('Page ID "' . $objPage->id . '" was requested via "' . \Environment::get('host') . '" but can only be accessed via "' . $objPage->domain . '" (' . \Environment::get('base') . \Environment::get('request') . ')', __METHOD__, TL_ERROR); - throw new PageNotFoundException('Page not found: ' . \Environment::get('uri')); } } // Authenticate the user - if (!$this->User->authenticate() && $objPage->protected) + if ($objPage->protected && !\System::getContainer()->get('security.authorization_checker')->isGranted('ROLE_MEMBER')) { throw new AccessDeniedException('Access denied: ' . \Environment::get('uri')); } diff --git a/src/Resources/contao/library/Contao/User.php b/src/Resources/contao/library/Contao/User.php index 3a3339bc0a..154c3fc3e3 100644 --- a/src/Resources/contao/library/Contao/User.php +++ b/src/Resources/contao/library/Contao/User.php @@ -261,6 +261,12 @@ public function getData() */ public function authenticate() { + // No cookie + if ($this->strHash === null) + { + return false; + } + // Check the cookie hash if ($this->strHash != $this->getSessionHash($this->strCookie)) { From 56d3b297acf9319a9afeff45a85574a5f5865870 Mon Sep 17 00:00:00 2001 From: Leo Feyer Date: Wed, 4 Oct 2017 16:24:28 +0200 Subject: [PATCH 02/18] Ignore the node_modules folder. --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 52695ce89a..8028c843fc 100644 --- a/.gitignore +++ b/.gitignore @@ -2,5 +2,8 @@ /composer.lock /vendor/ +# Node +/node_modules/ + # PhpUnit /phpunit.xml From 49ce6df92fdf1bd34ad78546df65ada00633e85e Mon Sep 17 00:00:00 2001 From: Leo Feyer Date: Fri, 6 Oct 2017 17:57:27 +0200 Subject: [PATCH 03/18] Correctly align the user menu in the back end. --- src/Resources/contao/themes/flexible/main.css | 2 +- src/Resources/contao/themes/flexible/src/main.css | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Resources/contao/themes/flexible/main.css b/src/Resources/contao/themes/flexible/main.css index 0bcf9a3bf0..a11ef02872 100644 --- a/src/Resources/contao/themes/flexible/main.css +++ b/src/Resources/contao/themes/flexible/main.css @@ -1,2 +1,2 @@ /* Contao Open Source CMS, (c) 2005-2017 Leo Feyer, LGPL-3.0+ */ -body{background:#132330;background-image:radial-gradient(#234058,#0f1c26)}body.popup{background:#fff}#header{min-height:40px;text-align:left}#header .inner{max-width:1440px;margin:0 auto;background:#f47c00}.lw #header .inner{max-width:1140px}#header,#header a{color:#fff}#header h1{position:absolute}#header h1 a{display:block;padding:12px 12px 12px 43px;background:url(icons/logo.svg) no-repeat 10px center;font-weight:400}#tmenu{text-align:right}#tmenu li{display:inline-block;position:relative;vertical-align:top}#tmenu a,#tmenu h2{padding:13px 12px;display:inline-block}#tmenu img{vertical-align:top}#tmenu sup{position:absolute;top:8px;left:19px;z-index:1;font-size:.5rem;background:red;padding:0 2px;border-radius:2px;line-height:11px;text-indent:0}#tmenu .burger{display:none}#tmenu .burger button{margin-right:-3px;padding:8px 10px 9px;background:0 0;border:0;vertical-align:top}#tmenu .burger img{margin-bottom:-1px}#tmenu h2{padding-right:26px;cursor:pointer;background:url(icons/chevron-down.svg) right 9px top 14px no-repeat;font-size:.875rem;font-weight:400}#tmenu ul.level_2{min-width:150px;position:absolute;right:3px;margin-top:5px;padding:6px 0 9px;background:#fff;box-shadow:0 0 3px #999;z-index:1;color:#222;text-align:left;opacity:0;visibility:hidden}#tmenu ul.level_2 li{display:block}#tmenu ul.level_2 li a{display:block;color:inherit;padding:6px 20px 6px 40px}#tmenu ul.level_2 li a:hover{background-color:#eee}#tmenu ul.level_2 .info{color:gray;padding:9px 20px 15px;border-bottom:1px solid #e6e6e8;line-height:1.4;margin-bottom:9px;white-space:nowrap}#tmenu ul.level_2 strong{color:#222;display:block}#tmenu ul.level_2:before{content:"";display:block;width:0;height:0;position:absolute;right:9px;top:-14px;border:solid transparent;border-width:7px;border-bottom-color:#fff}#tmenu a:hover,#tmenu h2:hover,#tmenu .burger button:hover{background-color:#e87600}#tmenu .icon-alert{width:16px;margin-bottom:-2px;position:relative;background:url(icons/alert.svg) center center no-repeat;overflow:hidden;white-space:nowrap;text-indent:28px}#tmenu .icon-profile{background:url(icons/profile_dark.svg) 20px center no-repeat}#tmenu .icon-logout{background:url(icons/exit_dark.svg) 20px center no-repeat}#container{max-width:1440px;margin:0 auto;display:flex;min-height:calc(100vh - 40px);background:#172b3b}.lw #container{max-width:1140px}.popup #container{padding:0;width:auto;min-height:0;background:#fff;max-width:auto}#left{float:left;width:225px;min-height:calc(100vh - 40px);background:#0f1c26;display:flex;flex-direction:column}#left .version{margin-top:4em;padding:15px;border-top:1px solid #3a454d;font-size:.75rem;line-height:1.4;background:#172b3b}#left .version,#left .version a{color:#91979c}#main{float:left;width:calc(100% - 225px);min-height:calc(100vh - 40px);background:#eaeaec}.popup #main{float:none;width:auto;max-width:auto;min-height:0;margin:0;padding:0;border:0;display:initial}#main .content{margin:15px;background:#fff;border:1px solid #d0d0d2}.popup #main .content{margin:0;border:0}#tl_navigation{flex-grow:1}#tl_navigation .tl_level_1_group{margin:0 15px;padding:15px 0 6px;border-top:1px solid #3a454d}#tl_navigation .tl_level_1_group:first-child{border-top:0;padding-top:18px}#tl_navigation .tl_level_1_group a{display:block;padding:3px 3px 3px 24px;color:#91979c;font-size:.75rem;text-transform:uppercase}#tl_navigation .group-content{background:url(icons/content.svg) 3px 2px no-repeat}#tl_navigation .group-design{background:url(icons/monitor.svg) 3px 2px no-repeat}#tl_navigation .group-accounts{background:url(icons/person.svg) 3px 2px no-repeat}#tl_navigation .group-system{background:url(icons/wrench.svg) 3px 2px no-repeat}#tl_navigation .node-collapsed{padding-bottom:14px}#tl_navigation .tl_level_2{padding:0 0 15px}#tl_navigation .tl_level_2 li{border-left:4px solid #0f1c26}#tl_navigation .tl_level_2 li.active{background-color:#172b3b;border-left-color:#f47c00}#tl_navigation .tl_level_2 a{display:block;padding:6px 18px 6px 35px;font-weight:400;color:#d3d5d7;transition:color .2s ease}#tl_navigation .tl_level_2 li:hover a{color:#fff}#tl_buttons,#tl_buttons_a{margin:0;padding:12px 15px;text-align:right}.toggleWrap{cursor:pointer}.opacity{-moz-opacity:.8;opacity:.8}h1.main_headline{margin:20px 0;padding:0 16px;font-size:1.1rem}.lw h1.main_headline{max-width:900px;margin-left:auto;margin-right:auto}.popup h1.main_headline{display:none}h1.main_headline span:nth-child(even){font-weight:400}h2.sub_headline{margin:3px 18px;padding:7px 0}.tl_gerror{margin:12px;padding:3px 0 3px 22px;background:url(icons/error.svg) no-repeat left center}.tl_error,.tl_confirm,.tl_info,.tl_new{margin:0 0 1px;padding:12px 18px 12px 37px;line-height:1.2}.tl_error{background:#faebeb url(icons/error.svg) no-repeat 16px center}.tl_confirm{background:#eefcde url(icons/ok.svg) no-repeat 16px center}.tl_info{background:#e9f0f7 url(icons/show.svg) no-repeat 16px center}.tl_new{background:#fbf2e5 url(icons/featured.svg) no-repeat 16px center}.tl_gerror,.tl_gerror a,.tl_error,.tl_error a{color:#c33}.tl_confirm,.tl_confirm a{color:#589b0e}.tl_info,.tl_info a{color:#006494}.tl_new,.tl_new a{color:#d68c23}.tl_panel,.tl_version_panel{padding:8px 10px 8px 0;background:#f3f3f5;border-bottom:1px solid #ddd;text-align:right}.tl_version_panel .tl_select{max-width:280px}.tl_version_panel .tl_formbody{position:relative}.tl_img_submit{width:16px;height:16px;border:0;margin:0;padding:0;text-indent:16px;white-space:nowrap;overflow:hidden;position:relative;top:9px;vertical-align:top;cursor:pointer}.filter_apply{background:url(icons/filter-apply.svg) center center no-repeat}.filter_reset{background:url(icons/filter-reset.svg) center center no-repeat}.tl_subpanel{float:right;letter-spacing:-.31em}.tl_subpanel *{letter-spacing:normal}.tl_subpanel strong,.tl_search span{vertical-align:middle}.tl_submit_panel{min-width:32px;padding-left:6px;padding-right:3px}.tl_panel .active,.tl_panel_bottom .active,#search .active{background-color:#fffce1}.tl_filter{width:100%}.tl_filter .tl_select{max-width:14.65%;margin-left:3px}.tl_submit_panel+.tl_filter{width:86%}.tl_limit{width:22%}.tl_limit .tl_select{width:52%;margin-left:3px}.tl_search{width:40%}.tl_search .tl_select{width:38%;margin-left:3px;margin-right:1%}.tl_search .tl_text{width:30%;margin-left:1%;-webkit-appearance:textfield;box-sizing:content-box}.tl_sorting{width:26%}.tl_sorting .tl_select{width:60%;margin-left:1%}input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.tl_xpl{padding:0 18px}.tl_tbox,.tl_box{padding:12px 0 26px;border-bottom:1px solid #e6e6e8}.tl_tbox:last-child,.tl_box:last-child{border-bottom:0}.tl_box h3,.tl_tbox h3,.tl_xpl h3{margin:0;padding:14px 0 1px;font-size:.875rem}.tl_box h4,.tl_tbox h4{margin:6px 0 0;padding:0;font-size:.875rem}.tl_tbox.theme_import{padding-left:15px;padding-right:15px}.tl_tbox.theme_import h3,.tl_tbox.theme_import h4,.tl_tbox.theme_import p{line-height:1.3}.tl_help,.tl_help *{font-size:.75rem}.tl_help,.tl_help a{margin-bottom:0;padding:1px 0;line-height:1.25;color:gray}.tl_help a:hover,.tl_help a:focus,.tl_help a:active{text-decoration:underline}.tl_formbody_edit.nogrid .w50{float:none}.tl_formbody_edit.nogrid .cbx{height:auto}.tl_formbody_edit.nogrid .m12{margin-top:0;margin-bottom:0}.tl_edit_form .tl_formbody_edit{border-top:1px solid #e6e6e8}.tl_formbody_submit{border-top:1px solid #ddd}.tl_submit_container{padding:8px 15px;background:#f3f3f5}.tl_submit_container .tl_submit{margin-top:2px;margin-bottom:2px}.maintenance_active{padding-top:12px}.maintenance_active,.maintenance_inactive{border-top:1px solid #e6e6e8}.maintenance_inactive:last-child{padding-bottom:9px}.maintenance_inactive .tl_tbox{border:0!important;padding:6px 15px 14px}.maintenance_inactive .tl_message{margin-top:0}.maintenance_inactive h2.sub_headline{margin:18px 15px 3px}.maintenance_inactive .tl_submit_container{background:0 0;padding:0 15px 24px;border:0}.maintenance_inactive:last-of-type .tl_submit_container{padding-bottom:10px}#tl_maintenance_mode .tl_message{margin-bottom:12px}#tl_maintenance_index .tl_tbox{margin-top:-12px}#search{margin:18px 18px -9px;text-align:right}#search .tl_text{max-width:160px;-webkit-appearance:textfield;box-sizing:content-box}.tl_edit_preview{margin-top:18px}.tl_edit_preview img{max-width:100%;height:auto;padding:2px;border:1px solid #ddd;background:#fff}.tl_edit_preview_enabled{position:relative;cursor:crosshair;display:inline-block}.tl_edit_preview_important_part{position:absolute;margin:-1px;border:1px solid #000;box-shadow:0 0 0 1px #fff,inset 0 0 0 1px #fff;opacity:.5}#tl_rebuild_index{padding:0 18px 18px;line-height:1.3}#index_note{margin:24px 0 18px;padding:11px 12px 12px;background:#ffc;border:1px solid #f90;font-size:.875rem}#index_loading{margin:0;padding:12px 12px 12px 24px;background:url(icons/loading.svg) no-repeat left center;background-size:16px;color:#006494}#index_complete{margin:0;padding:12px 12px 12px 24px;background:url(icons/ok.svg) no-repeat left center;color:#589b0e}table.tl_listing{width:100%}.tl_listing_container{padding:2px 0;margin:20px 15px 16px}#tl_buttons+.tl_listing_container{margin-top:10px}#paste_hint+.tl_listing_container{margin-top:30px}.tl_folder_list,.tl_folder_tlist{padding:7px 0;border-bottom:1px solid #e9e9e9;background:#f3f3f5;font-weight:700}.tl_folder_tlist{border-top:1px solid #e9e9e9}.tl_file,.tl_file_list{padding:5px 0;border-bottom:1px solid #e9e9e9;background:#fff}.tl_file_list{padding:7px 0}.tl_file_list .ellipsis{height:15px;text-overflow:ellipsis;overflow:hidden;padding-right:18px;word-break:break-all}.tl_right_nowrap{padding:3px 0;text-align:right;white-space:nowrap}.tl_listing_container .tl_content ul li>*{vertical-align:middle}.tl_listing.picker .tl_file,.tl_listing.picker .tl_folder,.tl_listing.picker .tl_right_nowrap,.tl_listing_container.picker .tl_content_header,.tl_listing_container.picker .tl_content{background-image:linear-gradient(90deg,transparent calc(100% - 26px),#f0f0f2 26px)}.tl_listing.picker .tl_tree_checkbox,.tl_listing.picker .tl_tree_radio,.tl_listing_container.picker .tl_tree_checkbox,.tl_listing_container.picker .tl_tree_radio{margin-top:2px;margin-left:8px}.tl_listing.picker .tl_tree_checkbox:disabled,.tl_listing.picker .tl_tree_radio:disabled,.tl_listing_container.picker .tl_tree_checkbox:disabled,.tl_listing_container.picker .tl_tree_radio:disabled{visibility:hidden}.tl_listing_container.picker .tl_content p{padding-right:24px}.tl_listing_container.picker .limit_toggler{width:calc(100% - 26px)}.tl_listing tr.odd td{background-color:#fafafc}.tl_listing th,.tl_listing td{padding-left:6px!important;padding-right:6px!important}.list_view .tl_listing img.theme_preview{margin-right:9px}.tl_show{width:96%;margin:18px 2%;padding:9px 0 18px}.tl_bg{background:#f6f6f8}.tl_show td{padding:4px 6px;line-height:18px}.tl_show td:first-child{width:34%}.tl_show td p:last-of-type{margin-bottom:0}.tl_label{margin-right:12px;font-weight:700;white-space:nowrap}.tl_empty{margin:0;padding:18px}.tl_empty_parent_view{margin:0;padding:18px 0 0}.tl_noopt{margin:0 0 -1px}.tl_select_trigger{margin-top:-9px;padding:0 6px 3px 0;text-align:right}.tl_radio_reset{margin-top:6px;padding:0 6px 3px 0;text-align:right}.tl_select_label,.tl_radio_label{margin-right:2px;color:#999;font-size:.75rem}.tl_header{padding:6px;background:#f9f9fb;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.tl_header_table{line-height:1.3}.tl_content_header{padding:7px 6px;border-bottom:1px solid #e9e9e9;background:#f6f6f8;font-weight:700}.tl_content{padding:6px;border-bottom:1px solid #e9e9e9;overflow:hidden;position:relative}.tl_content.wrapper_start,.tl_content.wrapper_separator,.tl_content.wrapper_stop{background:#f3f3f5}.tl_content.wrapper_start,.tl_content.wrapper_separator{border-bottom:0}.tl_content.wrapper_stop,.tl_content.wrapper_separator{border-top:0}.tl_content.wrapper_start h1{margin:0 0 9px 6px}.tl_content.indent{border-left:10px solid #f3f3f5;border-right:10px solid #f3f3f5}.tl_content.indent_1.wrapper_start,.tl_content.indent_1.wrapper_separator,.tl_content.indent_1.wrapper_stop{background:#eaeaec}.tl_content.indent_1.wrapper_stop{border-bottom-color:#dbdbdd}.tl_content.indent_2{margin-left:10px;margin-right:10px;box-shadow:-10px 0 #f3f3f5,10px 0 #f3f3f5;border-left-color:#eaeaec;border-right-color:#eaeaec}.tl_content.indent_3{margin-left:20px;margin-right:20px;box-shadow:-10px 0 #eaeaec,10px 0 #eaeaec,-20px 0 #f3f3f5,20px 0 #f3f3f5}.tl_content.indent_3.wrapper_start,.tl_content.indent_3.wrapper_separator,.tl_content.indent_3.wrapper_stop{background:#eaeaec}.tl_content.indent_3.wrapper_stop{border-bottom-color:#dbdbdd}.tl_content.indent_4{margin-left:30px;margin-right:30px;box-shadow:-10px 0 #f3f3f5,10px 0 #f3f3f5,-20px 0 #eaeaec,20px 0 #eaeaec,-30px 0 #f3f3f5,30px 0 #f3f3f5;border-left-color:#eaeaec;border-right-color:#eaeaec}.tl_content.indent_5{margin-left:40px;margin-right:40px;box-shadow:-10px 0 #eaeaec,10px 0 #eaeaec,-20px 0 #f3f3f5,20px 0 #f3f3f5,-30px 0 #eaeaec,30px 0 #eaeaec,-40px 0 #f3f3f5,40px 0 #f3f3f5}.tl_content h1,.tl_content h2,.tl_content h3,.tl_content h4,.tl_content h5,.tl_content h6{font-size:.875rem}.tl_content pre{margin-top:3px;margin-bottom:3px;word-break:break-all;white-space:pre-wrap}.tl_content pre.disabled{color:#a6a6a6}.tl_content .ce_text a{color:#589b0e}.tl_content span.comment{color:#006494;display:inline-block;margin-bottom:3px}.tl_content_left{float:left;width:calc(100% - 200px);line-height:16px}.tl_content_right{float:right;text-align:right;margin-left:12px;margin-top:-1px}.tl_content_right button{margin:0;padding:0;border:0;background:0 0}.cte_type{margin-bottom:9px;font-size:.75rem;color:#c6c6c6}.cte_type.published{padding:1px 0 2px 20px;background:url(icons/published.svg) no-repeat left center}.cte_type.unpublished{padding:1px 0 2px 20px;background:url(icons/unpublished.svg) no-repeat left center}.cte_type.published,.cte_type.published a{color:#589b0e}.cte_type.unpublished,.cte_type.unpublished a{color:#c33}.limit_height{overflow:hidden;line-height:1.25}.limit_toggler{width:100%;position:absolute;bottom:0;left:0;background:#fff;line-height:11px;text-align:center}.limit_toggler button{margin:0;padding:0;border:0;background:#fff;width:24px;line-height:8px;color:#999;outline:0;border-top-left-radius:2px;border-top-right-radius:2px}.limit_toggler button span{position:relative;top:-4px}.limit_height input[type=file]{position:relative}.limit_height select{-moz-appearance:menulist;-webkit-appearance:menulist}.limit_height label,.limit_height .checkbox_container legend,.limit_height .radio_container legend{display:inline-block;width:180px;vertical-align:top;margin-top:3px}.limit_height .widget-submit{margin-left:183px}.limit_height .checkbox_container label,.limit_height .radio_container label{display:initial}.tl_folder_top{padding:5px 0;border-top:1px solid #e3e3e3;border-bottom:1px solid #e3e3e3;background:#f0f0f2}.tl_folder{padding:5px 0;border-bottom:1px solid #e9e9e9;background:#f6f6f8}.tl_listing .tl_left{float:left;width:calc(100% - 240px);margin-left:40px;text-indent:-40px;box-sizing:border-box}.tl_tree_xtnd .tl_file{padding-top:4px;padding-bottom:4px}.tl_tree_xtnd .tl_file .tl_left{margin-left:22px;text-indent:-22px;width:calc(100% - 200px)}.tl_tree_xtnd .tl_file .tl_left *{line-height:normal}.tl_tree_xtnd .tl_file .tl_left a{position:relative;top:-1px}.tl_tree_xtnd .tl_file .tl_left img{margin-right:2px}.tl_left>a:last-of-type{vertical-align:middle}.tl_left>a:first-child{vertical-align:bottom}.tl_file_manager .tl_file .tl_left>a:first-child,.tl_file_manager .tl_left>img{vertical-align:text-top}.tl_listing .tl_right{float:right;padding:0 0 1px}.tl_listing,.tl_listing ul{margin:0;padding:0}.tl_listing li{margin:0;padding-left:6px;padding-right:6px;list-style-type:none}.tl_listing li.parent{display:inline;padding-left:0;padding-right:0}label.tl_change_selected{margin-right:2px;color:#999;font-size:.75rem}#tl_breadcrumb{margin:0 0 12px;padding:4px 6px;overflow:hidden;background:#fffce1;border:1px solid #d68c23;line-height:24px}#tl_breadcrumb li{margin:0;padding:0 3px;list-style-type:none;float:left}#tl_breadcrumb li a{display:inline-block}#tl_breadcrumb li img{width:16px;height:16px;vertical-align:-3px}.selector_container{margin-top:1px;position:relative}.selector_container ul{margin-bottom:1px;list-style-type:none;overflow:hidden}.selector_container li{margin-right:9px;padding:2px 0}.selector_container p{margin-bottom:1px}.selector_container ul:not(.sgallery) img{margin-right:1px;vertical-align:text-top}ul.sgallery{overflow:hidden}ul.sgallery li{min-width:75px;min-height:50px;float:left;margin:2px 4px 2px 0;padding:0;background:#eee;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center}.popup #tl_soverview{margin-top:15px}#tl_soverview>div{padding:0 15px 4px;border-bottom:1px solid #e6e6e8}#tl_soverview>div:last-child{border-bottom:0}#tl_soverview table{width:100%}#tl_messages h2,#tl_shortcuts h2,#tl_versions h2{margin:18px 0 6px}#tl_messages p:not([class]){margin-top:6px}#tl_messages .tl_error,#tl_messages .tl_confirm,#tl_messages .tl_info,#tl_messages .tl_new{padding:3px 6px 3px 21px;background-color:transparent;background-position:left center}#tl_shortcuts p a{text-decoration:underline}#tl_versions{margin-bottom:14px}#tl_versions th{background:#f6f6f8;padding:6px;border-top:1px solid #e9e9e9}#tl_versions th,#tl_versions td{border-bottom:1px solid #e9e9e9}#tl_versions td{padding:4px}#tl_versions td:first-child{white-space:nowrap}#tl_versions td:last-child{width:32px;white-space:nowrap;text-align:right}#tl_versions img.undo{padding-right:2px}.tl_chmod{width:100%}.tl_chmod th{height:18px;text-align:center;font-weight:400;background:#f0f0f2}.tl_chmod td{text-align:center;background:#f6f6f8}.tl_chmod th,.tl_chmod td{width:14.2857%;padding:6px;border:1px solid #fff}.tl_modulewizard button,.tl_optionwizard button,.tl_key_value_wizard button,.tl_tablewizard button,.tl_listwizard button,.tl_checkbox_wizard button,.tl_metawizard button,.tl_sectionwizard button{margin:0;padding:0;border:0;background:0 0}.tl_modulewizard{width:100%;max-width:800px;margin-top:2px}.tl_modulewizard td{position:relative;padding:0 3px 0 0}.tl_modulewizard th{font-size:.75rem;font-weight:400;padding:0 6px 1px 0}.tl_modulewizard td:last-child{width:1%;white-space:nowrap}.tl_modulewizard img{position:relative;top:1px}.js .tl_modulewizard input.mw_enable{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.tl_modulewizard img.mw_enable{display:none}.js .tl_modulewizard img.mw_enable{display:inline;margin-right:1px}.tl_optionwizard{width:100%;max-width:600px}.tl_key_value_wizard{width:100%;max-width:450px}.tl_optionwizard,.tl_key_value_wizard{margin-top:2px}.tl_optionwizard label,.tl_key_value_wizard label{margin-right:3px}.tl_optionwizard td,.tl_key_value_wizard td{padding:0 3px 0 0}.tl_optionwizard th,.tl_key_value_wizard th{font-size:.75rem;font-weight:400;padding:0 6px 1px 0}.tl_optionwizard td:nth-child(n+3),.tl_key_value_wizard td:nth-child(n+3){width:1%;white-space:nowrap}.tl_optionwizard img,.tl_key_value_wizard img{position:relative;top:1px}.tl_optionwizard .fw_checkbox,.tl_key_value_wizard .fw_checkbox{margin:0 1px}#tl_tablewizard{margin-top:2px;padding-bottom:2px;overflow:auto}.tl_tablewizard td{padding:0 3px 0 0}.tl_tablewizard thead td{padding-bottom:3px;text-align:center;white-space:nowrap}.tl_tablewizard tbody td:last-child{white-space:nowrap}.tl_tablewizard td.tcontainer{vertical-align:top}.tl_listwizard .tl_text{width:78%}.tl_checkbox_wizard .fixed{display:block;margin-top:1px}.tl_checkbox_wizard .sortable span{display:block}.tl_checkbox_wizard .sortable img{vertical-align:bottom}.tl_metawizard{margin:3px 0 6px}.tl_metawizard li{overflow:hidden;margin-bottom:2px;padding:9px;background:#f3f3f5}.tl_metawizard li.odd{background:#f9f9fb}.tl_metawizard span img{cursor:pointer}.tl_metawizard label{float:left;width:18%;margin-top:9px}.tl_metawizard .tl_text{float:left;width:82%;margin:1px 0}.tl_metawizard br{clear:left}.tl_metawizard .lang{display:block;margin-bottom:9px;font-weight:700;position:relative}.tl_metawizard_img{position:absolute;right:0;top:-1px}.tl_metawizard_new .tl_select{margin-right:4px;max-width:200px}.tl_metawizard_new .tl_submit{padding-top:6px;padding-bottom:6px}.tl_sectionwizard{margin-top:2px;width:100%;max-width:680px}.tl_sectionwizard td{width:25%;position:relative;padding:0 3px 0 0}.tl_sectionwizard th{font-size:.75rem;font-weight:400;padding:0 4px 1px 0}.tl_sectionwizard td:last-child{white-space:nowrap}#paste_hint{position:relative}.tl_message+#paste_hint{margin-top:-12px}#paste_hint p{position:absolute;font-family:"Architects Daughter",cursive;font-size:1rem;color:#838990;top:0;right:30px;padding:0 36px 24px 0;background:url(icons/arrow_right.svg) bottom right no-repeat;transform:rotate(-1deg)}.sort_hint{position:absolute;font-family:"Architects Daughter",cursive;font-size:1rem;color:#838990;top:-50px;left:160px;padding:0 6px 24px 42px;background:url(icons/arrow_left.svg) 6px bottom no-repeat;transform:rotate(-2deg)}.widget+.widget .sort_hint{left:320px}#tl_ajaxBox{width:20%;padding:2em;position:absolute;left:40%;background:#fff url(icons/loading.svg) no-repeat right 2em center;border:2px solid #111;border-radius:2px;font-size:1rem;text-align:left}#tl_ajaxOverlay{width:100%;height:100%;position:absolute;top:0;left:0;background:#fff;opacity:.5}.ce_gallery ul{overflow:hidden}.ce_gallery li{float:left;margin:0 6px 6px 0}.drag-handle{cursor:move}ul.sortable li{cursor:move;position:relative}ul.sortable li .dirname{display:none}ul.sortable li:hover .dirname{display:inline}ul.sortable button{position:absolute;top:0;right:0;border:0;background:rgba(255,255,255,.7);margin:0;padding:0 0 2px;font-size:22px;line-height:10px;cursor:pointer;transition:all .1s linear}ul.sortable button:hover{background:rgba(255,255,255,.9)}ul.sortable button[disabled]{color:#999;cursor:not-allowed}ul.sortable button[disabled]:hover{background:rgba(255,255,255,.7)}#picker-menu{padding:9px 6px 0;border-bottom:1px solid #ddd}#picker-menu li{display:inline-block;padding:8px 0;background-color:#f9f9fb;border:1px solid #ddd;border-radius:2px 2px 0 0;position:relative;top:1px}#picker-menu li:hover{background-color:#f3f3f5}#picker-menu li.current{background-color:#f3f3f5;border-bottom-color:#f3f3f5}#picker-menu a{padding:3px 12px 3px 32px;background:url(icons/manager.svg) 12px center no-repeat}#picker-menu a:hover{color:#222}#picker-menu a.pagePicker{background-image:url(icons/pagemounts.svg);background-size:16px}#picker-menu a.filePicker{background-image:url(icons/filemounts.svg);background-size:14px}#picker-menu a.articlePicker{background-image:url(icons/articles.svg);background-size:16px}#picker-menu a.close{background-image:url(icons/back.svg)}.ace_editor{padding:3px}.ace_editor,.ace_editor *{font-family:"Roboto Mono",monospace!important;font-size:.75rem!important;color:inherit}.ace-fullsize{overflow:hidden!important}.ace-fullsize .ace_editor{position:fixed!important;top:0;right:0;bottom:0;left:0;width:auto!important;height:auto!important;margin:0;border:0;z-index:10000}div.mce-edit-area{width:99.9%}time[title]{cursor:help}.float_left{float:left}.float_right{float:right}#manager{padding:9px 6px 0;border-bottom:1px solid #ddd}#manager a{padding:3px 12px 3px 32px;background:url(icons/manager.svg) 12px center no-repeat}.header_icon,.header_clipboard,.header_back,.header_new,.header_rss,.header_edit_all,.header_delete_all,.header_new_folder,.header_css_import,.header_theme_import,.header_store,.header_toggle,.header_sync{padding:3px 0 3px 21px;background-position:left center;background-repeat:no-repeat;margin-left:15px}.list_icon{margin-left:-3px;padding-left:20px;background-position:left center;background-repeat:no-repeat}.list_icon_new{width:16px;background-position:1px center;background-repeat:no-repeat}.header_clipboard{background-image:url(icons/clipboard.svg)}.header_back{background-image:url(icons/back.svg)}.header_new{background-image:url(icons/new.svg)}.header_rss{background-image:url(icons/rss.svg)}.header_edit_all{background-image:url(icons/all.svg)}.header_delete_all{background-image:url(icons/deleteAll.svg)}.header_new_folder{padding-left:24px;background-image:url(icons/newfolder.svg)}.header_css_import{background-image:url(icons/cssimport.svg)}.header_theme_import{background-image:url(icons/theme_import.svg)}.header_store{padding-left:18px;background-image:url(icons/store.svg)}.header_toggle{background-image:url(icons/folPlus.svg)}.header_sync{background-image:url(icons/sync.svg)}.tl_text_trbl,.tl_imageSize_0,.tl_imageSize_1,#ctrl_playerSize input{background:url(icons/hints.svg) no-repeat right 1px top 2px}#ctrl_playerSize_1,.tl_imageSize_1{background-position:right 1px top -28px!important}.trbl_top{background-position:right 1px top -59px!important}.trbl_right{background-position:right 1px top -89px!important}.trbl_bottom{background-position:right 1px top -119px!important}.trbl_left{background-position:right 1px top -149px!important}#ctrl_shadowsize_top{background-position:right 1px top -179px!important}#ctrl_shadowsize_right{background-position:right 1px top -209px!important}#ctrl_shadowsize_bottom{background-position:right 1px top -238px!important}#ctrl_shadowsize_left{background-position:right 1px top -269px!important}#ctrl_borderradius_top{background-position:left -299px!important}#ctrl_borderradius_right{background-position:right 1px top -329px!important}#ctrl_borderradius_bottom{background-position:right 1px top -352px!important}#ctrl_borderradius_left{background-position:left -382px!important}label.error,legend.error{color:#c33}.tl_tbox .tl_error,.tl_box .tl_error{background:0 0;padding:0;font-size:.75rem}.tl_formbody_edit>.tl_error{margin-top:9px}fieldset.tl_tbox,fieldset.tl_box{padding-top:9px;border-top:26px solid #f6f6f6;border-left:0;border-right:0}fieldset.tl_tbox.nolegend,fieldset.tl_box.nolegend{border-top:0}fieldset.tl_tbox.nolegend{margin-top:0;border-top:1px solid #e6e6e8}fieldset.tl_tbox>legend,fieldset.tl_box>legend{width:100%;box-sizing:border-box;color:#6a6a6c;padding:14px 0 0 28px;background:url(icons/navcol.svg) 13px 16px no-repeat;cursor:pointer}fieldset.collapsed{margin-bottom:0;padding-top:14px;padding-bottom:0}fieldset.collapsed div{display:none!important}fieldset.collapsed>legend{background:url(icons/navexp.svg) 13px 16px no-repeat}#tl_maintenance_cache table{width:100%}#tl_maintenance_cache th,#tl_maintenance_cache td{border-bottom:1px solid #e9e9e9}#tl_maintenance_cache th{background:#f6f6f8;padding:6px;border-top:1px solid #e9e9e9}#tl_maintenance_cache td{padding:6px;line-height:1.2}#tl_maintenance_cache tr:nth-child(even) td{background:#fcfcfe}#tl_maintenance_cache td span{color:#999}#tl_maintenance_cache td:first-child{width:16px}.mac #tl_maintenance_cache td:first-child .tl_checkbox{top:-2px}#tl_maintenance_cache .nw{white-space:nowrap}#tl_maintenance_cache .tl_checkbox_container{margin-top:12px}#tl_maintenance_cache .tl_checkbox_container label{font-weight:700}.pagination{overflow:hidden;background:#f6f6f8;margin-top:10px;border:solid #e9e9e9;border-width:1px 0;padding:12px 15px}.pagination ul{width:60%;float:right;text-align:right;padding-right:3px}.pagination p{width:30%;float:left;margin-bottom:0}.pagination li{display:inline;padding-right:3px}.pagination .active{color:#999}.pagination-lp{margin-left:15px;margin-right:15px}#sync-results{overflow:hidden;margin:18px 15px 0}#sync-results p{margin-bottom:0}#sync-results .left{float:left;padding:2px 0}#sync-results .right{float:right}#result-list{margin:15px}#result-list .tl_error,#result-list .tl_confirm,#result-list .tl_info,#result-list .tl_new{padding:3px 0;background:0 0}.dropzone{margin:2px 0;min-height:auto!important;border:3px dashed #ddd!important;border-radius:2px}.dz-message span{font-size:1.3125rem;color:#ccc}@media (min-width:1440px){#main{border-right:1px solid #ddd}}@media (min-width:1140px){.lw #main{border-right:1px solid #ddd}}@media (max-width:991px){html,body{overflow-x:hidden}body{background:#fff}#header{width:100%;padding:0;position:fixed;top:0;z-index:2;transition:transform .2s ease;-webkit-transform:none;transform:none;will-change:transform}#container{display:block;padding-top:40px}#main,#left{float:none;overflow:hidden}#main{width:100%!important;position:relative;transition:transform .2s ease;-webkit-transform:none;transform:none;will-change:transform}.show-navigation #main{-webkit-transform:translateX(240px);transform:translateX(240px)}#left{position:absolute;top:40px;width:240px;transition:transform .2s ease;-webkit-transform:translateX(-240px);transform:translateX(-240px);will-change:transform}.show-navigation #left{-webkit-transform:none;transform:none}#tmenu .burger{display:inline}}@media (max-width:767px){#header.down{-webkit-transform:translateY(-40px);transform:translateY(-40px)}#header h1 a{width:22px;padding:12px;text-indent:34px;overflow:hidden}#tmenu{display:flex;width:72%;max-width:360px;margin:0 auto;padding-right:0;text-align:center}#tmenu li{flex-grow:1}#tmenu li.submenu{flex-grow:2}#tmenu li.burger{width:auto;position:absolute;right:3px;text-align:right}#tmenu a{width:40px;margin-right:0;text-align:center;font-weight:700}#tmenu sup{top:5px;left:29px}#tmenu .icon-alert{width:40px;margin-bottom:0;background-position:center 8px;font-size:.5rem;text-indent:0;overflow:initial;padding:24px 0 8px}#tmenu .icon-preview{background:url(icons/preview.svg) center 8px no-repeat;font-size:.5rem;padding:24px 0 8px}#tmenu h2{display:none}#tmenu ul.level_2{display:flex;min-width:unset;margin-top:0;position:initial;box-shadow:none;visibility:visible!important;opacity:1!important;padding:0;background:0 0;color:#fff;text-align:center}#tmenu ul.level_2 li,#tmenu ul.level_2 li a{display:inline-block}#tmenu ul.level_2 .info{display:none}#tmenu ul.level_2 .icon-profile{background:url(icons/profile.svg) center 8px no-repeat;font-size:.5rem;padding:24px 0 8px}#tmenu ul.level_2 .icon-logout{background:url(icons/exit.svg) center 8px no-repeat;font-size:.5rem;padding:24px 0 8px}#main .content{margin:15px 10px}h1.main_headline{margin:15px 0;padding:0 11px}div.tl_tbox,div.tl_box{position:relative}.tl_content_left{width:100%;float:none}.showColumns th,.showColumns td{display:block}.showColumns th:empty{display:none}.tl_label{white-space:normal}.list_view .tl_listing img.theme_preview{display:none}.tl_filter{box-sizing:border-box;padding:0 3px 0 7px}.tl_filter strong{display:none}.tl_filter .tl_select{display:block;max-width:100%}.tl_search{width:76%;max-width:283px}.tl_search .tl_select{width:36%}.tl_search .tl_text{width:26%}.tl_sorting{width:60%;max-width:212px}.tl_limit{width:50%;max-width:177px}.tl_submit_panel{float:right;z-index:1}input.tl_submit{margin-top:3px;margin-bottom:3px;padding-left:6px!important;padding-right:7px!important}.tl_show td{word-break:break-word}#tl_breadcrumb li{padding:3px}#tl_versions{display:none}.tl_version_panel .tl_select{width:44%}.tl_modulewizard td:first-child{width:1%}.tl_modulewizard td:first-child .tl_select{max-width:52vw}#paste_hint,.sort_hint{display:none}#tl_maintenance_cache table{width:100%}#tl_maintenance_cache tr th:last-child,#tl_maintenance_cache tr td:last-child{display:none}.tl_file_list .ellipsis{padding-right:10px}}@media (max-width:599px){.tl_metawizard label{width:auto;float:none;font-size:.9em;display:block;margin-top:3px}.tl_metawizard .tl_text{width:100%}}@media (max-width:479px){.tl_modulewizard td:first-child .tl_select{max-width:48vw}} \ No newline at end of file +body{background:#132330;background-image:radial-gradient(#234058,#0f1c26)}body.popup{background:#fff}#header{min-height:40px;text-align:left}#header .inner{max-width:1440px;margin:0 auto;background:#f47c00}.lw #header .inner{max-width:1140px}#header,#header a{color:#fff}#header h1{position:absolute}#header h1 a{display:block;padding:12px 12px 12px 43px;background:url(icons/logo.svg) no-repeat 10px center;font-weight:400}#tmenu{text-align:right}#tmenu li{display:inline-block;position:relative;vertical-align:top}#tmenu a,#tmenu h2{padding:13px 12px;display:inline-block}#tmenu img{vertical-align:top}#tmenu sup{position:absolute;top:8px;left:19px;z-index:1;font-size:.5rem;background:red;padding:0 2px;border-radius:2px;line-height:11px;text-indent:0}#tmenu .burger{display:none}#tmenu .burger button{margin-right:-3px;padding:8px 10px 9px;background:0 0;border:0;vertical-align:top}#tmenu .burger img{margin-bottom:-1px}#tmenu h2{padding-right:26px;cursor:pointer;background:url(icons/chevron-down.svg) right 9px top 14px no-repeat;font-size:.875rem;font-weight:400}#tmenu ul.level_2{min-width:150px;position:absolute;right:6px;margin-top:5px;padding:6px 0 9px;background:#fff;box-shadow:0 0 3px #999;z-index:1;color:#222;text-align:left;opacity:0;visibility:hidden}#tmenu ul.level_2 li{display:block}#tmenu ul.level_2 li a{display:block;color:inherit;padding:6px 20px 6px 40px}#tmenu ul.level_2 li a:hover{background-color:#eee}#tmenu ul.level_2 .info{color:gray;padding:9px 20px 15px;border-bottom:1px solid #e6e6e8;line-height:1.4;margin-bottom:9px;white-space:nowrap}#tmenu ul.level_2 strong{color:#222;display:block}#tmenu ul.level_2:before{content:"";display:block;width:0;height:0;position:absolute;right:9px;top:-14px;border:solid transparent;border-width:7px;border-bottom-color:#fff}#tmenu a:hover,#tmenu h2:hover,#tmenu .burger button:hover{background-color:#e87600}#tmenu .icon-alert{width:16px;margin-bottom:-2px;position:relative;background:url(icons/alert.svg) center center no-repeat;overflow:hidden;white-space:nowrap;text-indent:28px}#tmenu .icon-profile{background:url(icons/profile_dark.svg) 20px center no-repeat}#tmenu .icon-logout{background:url(icons/exit_dark.svg) 20px center no-repeat}#container{max-width:1440px;margin:0 auto;display:flex;min-height:calc(100vh - 40px);background:#172b3b}.lw #container{max-width:1140px}.popup #container{padding:0;width:auto;min-height:0;background:#fff;max-width:auto}#left{float:left;width:225px;min-height:calc(100vh - 40px);background:#0f1c26;display:flex;flex-direction:column}#left .version{margin-top:4em;padding:15px;border-top:1px solid #3a454d;font-size:.75rem;line-height:1.4;background:#172b3b}#left .version,#left .version a{color:#91979c}#main{float:left;width:calc(100% - 225px);min-height:calc(100vh - 40px);background:#eaeaec}.popup #main{float:none;width:auto;max-width:auto;min-height:0;margin:0;padding:0;border:0;display:initial}#main .content{margin:15px;background:#fff;border:1px solid #d0d0d2}.popup #main .content{margin:0;border:0}#tl_navigation{flex-grow:1}#tl_navigation .tl_level_1_group{margin:0 15px;padding:15px 0 6px;border-top:1px solid #3a454d}#tl_navigation .tl_level_1_group:first-child{border-top:0;padding-top:18px}#tl_navigation .tl_level_1_group a{display:block;padding:3px 3px 3px 24px;color:#91979c;font-size:.75rem;text-transform:uppercase}#tl_navigation .group-content{background:url(icons/content.svg) 3px 2px no-repeat}#tl_navigation .group-design{background:url(icons/monitor.svg) 3px 2px no-repeat}#tl_navigation .group-accounts{background:url(icons/person.svg) 3px 2px no-repeat}#tl_navigation .group-system{background:url(icons/wrench.svg) 3px 2px no-repeat}#tl_navigation .node-collapsed{padding-bottom:14px}#tl_navigation .tl_level_2{padding:0 0 15px}#tl_navigation .tl_level_2 li{border-left:4px solid #0f1c26}#tl_navigation .tl_level_2 li.active{background-color:#172b3b;border-left-color:#f47c00}#tl_navigation .tl_level_2 a{display:block;padding:6px 18px 6px 35px;font-weight:400;color:#d3d5d7;transition:color .2s ease}#tl_navigation .tl_level_2 li:hover a{color:#fff}#tl_buttons,#tl_buttons_a{margin:0;padding:12px 15px;text-align:right}.toggleWrap{cursor:pointer}.opacity{-moz-opacity:.8;opacity:.8}h1.main_headline{margin:20px 0;padding:0 16px;font-size:1.1rem}.lw h1.main_headline{max-width:900px;margin-left:auto;margin-right:auto}.popup h1.main_headline{display:none}h1.main_headline span:nth-child(even){font-weight:400}h2.sub_headline{margin:3px 18px;padding:7px 0}.tl_gerror{margin:12px;padding:3px 0 3px 22px;background:url(icons/error.svg) no-repeat left center}.tl_error,.tl_confirm,.tl_info,.tl_new{margin:0 0 1px;padding:12px 18px 12px 37px;line-height:1.2}.tl_error{background:#faebeb url(icons/error.svg) no-repeat 16px center}.tl_confirm{background:#eefcde url(icons/ok.svg) no-repeat 16px center}.tl_info{background:#e9f0f7 url(icons/show.svg) no-repeat 16px center}.tl_new{background:#fbf2e5 url(icons/featured.svg) no-repeat 16px center}.tl_gerror,.tl_gerror a,.tl_error,.tl_error a{color:#c33}.tl_confirm,.tl_confirm a{color:#589b0e}.tl_info,.tl_info a{color:#006494}.tl_new,.tl_new a{color:#d68c23}.tl_panel,.tl_version_panel{padding:8px 10px 8px 0;background:#f3f3f5;border-bottom:1px solid #ddd;text-align:right}.tl_version_panel .tl_select{max-width:280px}.tl_version_panel .tl_formbody{position:relative}.tl_img_submit{width:16px;height:16px;border:0;margin:0;padding:0;text-indent:16px;white-space:nowrap;overflow:hidden;position:relative;top:9px;vertical-align:top;cursor:pointer}.filter_apply{background:url(icons/filter-apply.svg) center center no-repeat}.filter_reset{background:url(icons/filter-reset.svg) center center no-repeat}.tl_subpanel{float:right;letter-spacing:-.31em}.tl_subpanel *{letter-spacing:normal}.tl_subpanel strong,.tl_search span{vertical-align:middle}.tl_submit_panel{min-width:32px;padding-left:6px;padding-right:3px}.tl_panel .active,.tl_panel_bottom .active,#search .active{background-color:#fffce1}.tl_filter{width:100%}.tl_filter .tl_select{max-width:14.65%;margin-left:3px}.tl_submit_panel+.tl_filter{width:86%}.tl_limit{width:22%}.tl_limit .tl_select{width:52%;margin-left:3px}.tl_search{width:40%}.tl_search .tl_select{width:38%;margin-left:3px;margin-right:1%}.tl_search .tl_text{width:30%;margin-left:1%;-webkit-appearance:textfield;box-sizing:content-box}.tl_sorting{width:26%}.tl_sorting .tl_select{width:60%;margin-left:1%}input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.tl_xpl{padding:0 18px}.tl_tbox,.tl_box{padding:12px 0 26px;border-bottom:1px solid #e6e6e8}.tl_tbox:last-child,.tl_box:last-child{border-bottom:0}.tl_box h3,.tl_tbox h3,.tl_xpl h3{margin:0;padding:14px 0 1px;font-size:.875rem}.tl_box h4,.tl_tbox h4{margin:6px 0 0;padding:0;font-size:.875rem}.tl_tbox.theme_import{padding-left:15px;padding-right:15px}.tl_tbox.theme_import h3,.tl_tbox.theme_import h4,.tl_tbox.theme_import p{line-height:1.3}.tl_help,.tl_help *{font-size:.75rem}.tl_help,.tl_help a{margin-bottom:0;padding:1px 0;line-height:1.25;color:gray}.tl_help a:hover,.tl_help a:focus,.tl_help a:active{text-decoration:underline}.tl_formbody_edit.nogrid .w50{float:none}.tl_formbody_edit.nogrid .cbx{height:auto}.tl_formbody_edit.nogrid .m12{margin-top:0;margin-bottom:0}.tl_edit_form .tl_formbody_edit{border-top:1px solid #e6e6e8}.tl_formbody_submit{border-top:1px solid #ddd}.tl_submit_container{padding:8px 15px;background:#f3f3f5}.tl_submit_container .tl_submit{margin-top:2px;margin-bottom:2px}.maintenance_active{padding-top:12px}.maintenance_active,.maintenance_inactive{border-top:1px solid #e6e6e8}.maintenance_inactive:last-child{padding-bottom:9px}.maintenance_inactive .tl_tbox{border:0!important;padding:6px 15px 14px}.maintenance_inactive .tl_message{margin-top:0}.maintenance_inactive h2.sub_headline{margin:18px 15px 3px}.maintenance_inactive .tl_submit_container{background:0 0;padding:0 15px 24px;border:0}.maintenance_inactive:last-of-type .tl_submit_container{padding-bottom:10px}#tl_maintenance_mode .tl_message{margin-bottom:12px}#tl_maintenance_index .tl_tbox{margin-top:-12px}#search{margin:18px 18px -9px;text-align:right}#search .tl_text{max-width:160px;-webkit-appearance:textfield;box-sizing:content-box}.tl_edit_preview{margin-top:18px}.tl_edit_preview img{max-width:100%;height:auto;padding:2px;border:1px solid #ddd;background:#fff}.tl_edit_preview_enabled{position:relative;cursor:crosshair;display:inline-block}.tl_edit_preview_important_part{position:absolute;margin:-1px;border:1px solid #000;box-shadow:0 0 0 1px #fff,inset 0 0 0 1px #fff;opacity:.5}#tl_rebuild_index{padding:0 18px 18px;line-height:1.3}#index_note{margin:24px 0 18px;padding:11px 12px 12px;background:#ffc;border:1px solid #f90;font-size:.875rem}#index_loading{margin:0;padding:12px 12px 12px 24px;background:url(icons/loading.svg) no-repeat left center;background-size:16px;color:#006494}#index_complete{margin:0;padding:12px 12px 12px 24px;background:url(icons/ok.svg) no-repeat left center;color:#589b0e}table.tl_listing{width:100%}.tl_listing_container{padding:2px 0;margin:20px 15px 16px}#tl_buttons+.tl_listing_container{margin-top:10px}#paste_hint+.tl_listing_container{margin-top:30px}.tl_folder_list,.tl_folder_tlist{padding:7px 0;border-bottom:1px solid #e9e9e9;background:#f3f3f5;font-weight:700}.tl_folder_tlist{border-top:1px solid #e9e9e9}.tl_file,.tl_file_list{padding:5px 0;border-bottom:1px solid #e9e9e9;background:#fff}.tl_file_list{padding:7px 0}.tl_file_list .ellipsis{height:15px;text-overflow:ellipsis;overflow:hidden;padding-right:18px;word-break:break-all}.tl_right_nowrap{padding:3px 0;text-align:right;white-space:nowrap}.tl_listing_container .tl_content ul li>*{vertical-align:middle}.tl_listing.picker .tl_file,.tl_listing.picker .tl_folder,.tl_listing.picker .tl_right_nowrap,.tl_listing_container.picker .tl_content_header,.tl_listing_container.picker .tl_content{background-image:linear-gradient(90deg,transparent calc(100% - 26px),#f0f0f2 26px)}.tl_listing.picker .tl_tree_checkbox,.tl_listing.picker .tl_tree_radio,.tl_listing_container.picker .tl_tree_checkbox,.tl_listing_container.picker .tl_tree_radio{margin-top:2px;margin-left:8px}.tl_listing.picker .tl_tree_checkbox:disabled,.tl_listing.picker .tl_tree_radio:disabled,.tl_listing_container.picker .tl_tree_checkbox:disabled,.tl_listing_container.picker .tl_tree_radio:disabled{visibility:hidden}.tl_listing_container.picker .tl_content p{padding-right:24px}.tl_listing_container.picker .limit_toggler{width:calc(100% - 26px)}.tl_listing tr.odd td{background-color:#fafafc}.tl_listing th,.tl_listing td{padding-left:6px!important;padding-right:6px!important}.list_view .tl_listing img.theme_preview{margin-right:9px}.tl_show{width:96%;margin:18px 2%;padding:9px 0 18px}.tl_bg{background:#f6f6f8}.tl_show td{padding:4px 6px;line-height:18px}.tl_show td:first-child{width:34%}.tl_show td p:last-of-type{margin-bottom:0}.tl_label{margin-right:12px;font-weight:700;white-space:nowrap}.tl_empty{margin:0;padding:18px}.tl_empty_parent_view{margin:0;padding:18px 0 0}.tl_noopt{margin:0 0 -1px}.tl_select_trigger{margin-top:-9px;padding:0 6px 3px 0;text-align:right}.tl_radio_reset{margin-top:6px;padding:0 6px 3px 0;text-align:right}.tl_select_label,.tl_radio_label{margin-right:2px;color:#999;font-size:.75rem}.tl_header{padding:6px;background:#f9f9fb;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.tl_header_table{line-height:1.3}.tl_content_header{padding:7px 6px;border-bottom:1px solid #e9e9e9;background:#f6f6f8;font-weight:700}.tl_content{padding:6px;border-bottom:1px solid #e9e9e9;overflow:hidden;position:relative}.tl_content.wrapper_start,.tl_content.wrapper_separator,.tl_content.wrapper_stop{background:#f3f3f5}.tl_content.wrapper_start,.tl_content.wrapper_separator{border-bottom:0}.tl_content.wrapper_stop,.tl_content.wrapper_separator{border-top:0}.tl_content.wrapper_start h1{margin:0 0 9px 6px}.tl_content.indent{border-left:10px solid #f3f3f5;border-right:10px solid #f3f3f5}.tl_content.indent_1.wrapper_start,.tl_content.indent_1.wrapper_separator,.tl_content.indent_1.wrapper_stop{background:#eaeaec}.tl_content.indent_1.wrapper_stop{border-bottom-color:#dbdbdd}.tl_content.indent_2{margin-left:10px;margin-right:10px;box-shadow:-10px 0 #f3f3f5,10px 0 #f3f3f5;border-left-color:#eaeaec;border-right-color:#eaeaec}.tl_content.indent_3{margin-left:20px;margin-right:20px;box-shadow:-10px 0 #eaeaec,10px 0 #eaeaec,-20px 0 #f3f3f5,20px 0 #f3f3f5}.tl_content.indent_3.wrapper_start,.tl_content.indent_3.wrapper_separator,.tl_content.indent_3.wrapper_stop{background:#eaeaec}.tl_content.indent_3.wrapper_stop{border-bottom-color:#dbdbdd}.tl_content.indent_4{margin-left:30px;margin-right:30px;box-shadow:-10px 0 #f3f3f5,10px 0 #f3f3f5,-20px 0 #eaeaec,20px 0 #eaeaec,-30px 0 #f3f3f5,30px 0 #f3f3f5;border-left-color:#eaeaec;border-right-color:#eaeaec}.tl_content.indent_5{margin-left:40px;margin-right:40px;box-shadow:-10px 0 #eaeaec,10px 0 #eaeaec,-20px 0 #f3f3f5,20px 0 #f3f3f5,-30px 0 #eaeaec,30px 0 #eaeaec,-40px 0 #f3f3f5,40px 0 #f3f3f5}.tl_content h1,.tl_content h2,.tl_content h3,.tl_content h4,.tl_content h5,.tl_content h6{font-size:.875rem}.tl_content pre{margin-top:3px;margin-bottom:3px;word-break:break-all;white-space:pre-wrap}.tl_content pre.disabled{color:#a6a6a6}.tl_content .ce_text a{color:#589b0e}.tl_content span.comment{color:#006494;display:inline-block;margin-bottom:3px}.tl_content_left{float:left;width:calc(100% - 200px);line-height:16px}.tl_content_right{float:right;text-align:right;margin-left:12px;margin-top:-1px}.tl_content_right button{margin:0;padding:0;border:0;background:0 0}.cte_type{margin-bottom:9px;font-size:.75rem;color:#c6c6c6}.cte_type.published{padding:1px 0 2px 20px;background:url(icons/published.svg) no-repeat left center}.cte_type.unpublished{padding:1px 0 2px 20px;background:url(icons/unpublished.svg) no-repeat left center}.cte_type.published,.cte_type.published a{color:#589b0e}.cte_type.unpublished,.cte_type.unpublished a{color:#c33}.limit_height{overflow:hidden;line-height:1.25}.limit_toggler{width:100%;position:absolute;bottom:0;left:0;background:#fff;line-height:11px;text-align:center}.limit_toggler button{margin:0;padding:0;border:0;background:#fff;width:24px;line-height:8px;color:#999;outline:0;border-top-left-radius:2px;border-top-right-radius:2px}.limit_toggler button span{position:relative;top:-4px}.limit_height input[type=file]{position:relative}.limit_height select{-moz-appearance:menulist;-webkit-appearance:menulist}.limit_height label,.limit_height .checkbox_container legend,.limit_height .radio_container legend{display:inline-block;width:180px;vertical-align:top;margin-top:3px}.limit_height .widget-submit{margin-left:183px}.limit_height .checkbox_container label,.limit_height .radio_container label{display:initial}.tl_folder_top{padding:5px 0;border-top:1px solid #e3e3e3;border-bottom:1px solid #e3e3e3;background:#f0f0f2}.tl_folder{padding:5px 0;border-bottom:1px solid #e9e9e9;background:#f6f6f8}.tl_listing .tl_left{float:left;width:calc(100% - 240px);margin-left:40px;text-indent:-40px;box-sizing:border-box}.tl_tree_xtnd .tl_file{padding-top:4px;padding-bottom:4px}.tl_tree_xtnd .tl_file .tl_left{margin-left:22px;text-indent:-22px;width:calc(100% - 200px)}.tl_tree_xtnd .tl_file .tl_left *{line-height:normal}.tl_tree_xtnd .tl_file .tl_left a{position:relative;top:-1px}.tl_tree_xtnd .tl_file .tl_left img{margin-right:2px}.tl_left>a:last-of-type{vertical-align:middle}.tl_left>a:first-child{vertical-align:bottom}.tl_file_manager .tl_file .tl_left>a:first-child,.tl_file_manager .tl_left>img{vertical-align:text-top}.tl_listing .tl_right{float:right;padding:0 0 1px}.tl_listing,.tl_listing ul{margin:0;padding:0}.tl_listing li{margin:0;padding-left:6px;padding-right:6px;list-style-type:none}.tl_listing li.parent{display:inline;padding-left:0;padding-right:0}label.tl_change_selected{margin-right:2px;color:#999;font-size:.75rem}#tl_breadcrumb{margin:0 0 12px;padding:4px 6px;overflow:hidden;background:#fffce1;border:1px solid #d68c23;line-height:24px}#tl_breadcrumb li{margin:0;padding:0 3px;list-style-type:none;float:left}#tl_breadcrumb li a{display:inline-block}#tl_breadcrumb li img{width:16px;height:16px;vertical-align:-3px}.selector_container{margin-top:1px;position:relative}.selector_container ul{margin-bottom:1px;list-style-type:none;overflow:hidden}.selector_container li{margin-right:9px;padding:2px 0}.selector_container p{margin-bottom:1px}.selector_container ul:not(.sgallery) img{margin-right:1px;vertical-align:text-top}ul.sgallery{overflow:hidden}ul.sgallery li{min-width:75px;min-height:50px;float:left;margin:2px 4px 2px 0;padding:0;background:#eee;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center}.popup #tl_soverview{margin-top:15px}#tl_soverview>div{padding:0 15px 4px;border-bottom:1px solid #e6e6e8}#tl_soverview>div:last-child{border-bottom:0}#tl_soverview table{width:100%}#tl_messages h2,#tl_shortcuts h2,#tl_versions h2{margin:18px 0 6px}#tl_messages p:not([class]){margin-top:6px}#tl_messages .tl_error,#tl_messages .tl_confirm,#tl_messages .tl_info,#tl_messages .tl_new{padding:3px 6px 3px 21px;background-color:transparent;background-position:left center}#tl_shortcuts p a{text-decoration:underline}#tl_versions{margin-bottom:14px}#tl_versions th{background:#f6f6f8;padding:6px;border-top:1px solid #e9e9e9}#tl_versions th,#tl_versions td{border-bottom:1px solid #e9e9e9}#tl_versions td{padding:4px}#tl_versions td:first-child{white-space:nowrap}#tl_versions td:last-child{width:32px;white-space:nowrap;text-align:right}#tl_versions img.undo{padding-right:2px}.tl_chmod{width:100%}.tl_chmod th{height:18px;text-align:center;font-weight:400;background:#f0f0f2}.tl_chmod td{text-align:center;background:#f6f6f8}.tl_chmod th,.tl_chmod td{width:14.2857%;padding:6px;border:1px solid #fff}.tl_modulewizard button,.tl_optionwizard button,.tl_key_value_wizard button,.tl_tablewizard button,.tl_listwizard button,.tl_checkbox_wizard button,.tl_metawizard button,.tl_sectionwizard button{margin:0;padding:0;border:0;background:0 0}.tl_modulewizard{width:100%;max-width:800px;margin-top:2px}.tl_modulewizard td{position:relative;padding:0 3px 0 0}.tl_modulewizard th{font-size:.75rem;font-weight:400;padding:0 6px 1px 0}.tl_modulewizard td:last-child{width:1%;white-space:nowrap}.tl_modulewizard img{position:relative;top:1px}.js .tl_modulewizard input.mw_enable{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.tl_modulewizard img.mw_enable{display:none}.js .tl_modulewizard img.mw_enable{display:inline;margin-right:1px}.tl_optionwizard{width:100%;max-width:600px}.tl_key_value_wizard{width:100%;max-width:450px}.tl_optionwizard,.tl_key_value_wizard{margin-top:2px}.tl_optionwizard label,.tl_key_value_wizard label{margin-right:3px}.tl_optionwizard td,.tl_key_value_wizard td{padding:0 3px 0 0}.tl_optionwizard th,.tl_key_value_wizard th{font-size:.75rem;font-weight:400;padding:0 6px 1px 0}.tl_optionwizard td:nth-child(n+3),.tl_key_value_wizard td:nth-child(n+3){width:1%;white-space:nowrap}.tl_optionwizard img,.tl_key_value_wizard img{position:relative;top:1px}.tl_optionwizard .fw_checkbox,.tl_key_value_wizard .fw_checkbox{margin:0 1px}#tl_tablewizard{margin-top:2px;padding-bottom:2px;overflow:auto}.tl_tablewizard td{padding:0 3px 0 0}.tl_tablewizard thead td{padding-bottom:3px;text-align:center;white-space:nowrap}.tl_tablewizard tbody td:last-child{white-space:nowrap}.tl_tablewizard td.tcontainer{vertical-align:top}.tl_listwizard .tl_text{width:78%}.tl_checkbox_wizard .fixed{display:block;margin-top:1px}.tl_checkbox_wizard .sortable span{display:block}.tl_checkbox_wizard .sortable img{vertical-align:bottom}.tl_metawizard{margin:3px 0 6px}.tl_metawizard li{overflow:hidden;margin-bottom:2px;padding:9px;background:#f3f3f5}.tl_metawizard li.odd{background:#f9f9fb}.tl_metawizard span img{cursor:pointer}.tl_metawizard label{float:left;width:18%;margin-top:9px}.tl_metawizard .tl_text{float:left;width:82%;margin:1px 0}.tl_metawizard br{clear:left}.tl_metawizard .lang{display:block;margin-bottom:9px;font-weight:700;position:relative}.tl_metawizard_img{position:absolute;right:0;top:-1px}.tl_metawizard_new .tl_select{margin-right:4px;max-width:200px}.tl_metawizard_new .tl_submit{padding-top:6px;padding-bottom:6px}.tl_sectionwizard{margin-top:2px;width:100%;max-width:680px}.tl_sectionwizard td{width:25%;position:relative;padding:0 3px 0 0}.tl_sectionwizard th{font-size:.75rem;font-weight:400;padding:0 4px 1px 0}.tl_sectionwizard td:last-child{white-space:nowrap}#paste_hint{position:relative}.tl_message+#paste_hint{margin-top:-12px}#paste_hint p{position:absolute;font-family:"Architects Daughter",cursive;font-size:1rem;color:#838990;top:0;right:30px;padding:0 36px 24px 0;background:url(icons/arrow_right.svg) bottom right no-repeat;transform:rotate(-1deg)}.sort_hint{position:absolute;font-family:"Architects Daughter",cursive;font-size:1rem;color:#838990;top:-50px;left:160px;padding:0 6px 24px 42px;background:url(icons/arrow_left.svg) 6px bottom no-repeat;transform:rotate(-2deg)}.widget+.widget .sort_hint{left:320px}#tl_ajaxBox{width:20%;padding:2em;position:absolute;left:40%;background:#fff url(icons/loading.svg) no-repeat right 2em center;border:2px solid #111;border-radius:2px;font-size:1rem;text-align:left}#tl_ajaxOverlay{width:100%;height:100%;position:absolute;top:0;left:0;background:#fff;opacity:.5}.ce_gallery ul{overflow:hidden}.ce_gallery li{float:left;margin:0 6px 6px 0}.drag-handle{cursor:move}ul.sortable li{cursor:move;position:relative}ul.sortable li .dirname{display:none}ul.sortable li:hover .dirname{display:inline}ul.sortable button{position:absolute;top:0;right:0;border:0;background:rgba(255,255,255,.7);margin:0;padding:0 0 2px;font-size:22px;line-height:10px;cursor:pointer;transition:all .1s linear}ul.sortable button:hover{background:rgba(255,255,255,.9)}ul.sortable button[disabled]{color:#999;cursor:not-allowed}ul.sortable button[disabled]:hover{background:rgba(255,255,255,.7)}#picker-menu{padding:9px 6px 0;border-bottom:1px solid #ddd}#picker-menu li{display:inline-block;padding:8px 0;background-color:#f9f9fb;border:1px solid #ddd;border-radius:2px 2px 0 0;position:relative;top:1px}#picker-menu li:hover{background-color:#f3f3f5}#picker-menu li.current{background-color:#f3f3f5;border-bottom-color:#f3f3f5}#picker-menu a{padding:3px 12px 3px 32px;background:url(icons/manager.svg) 12px center no-repeat}#picker-menu a:hover{color:#222}#picker-menu a.pagePicker{background-image:url(icons/pagemounts.svg);background-size:16px}#picker-menu a.filePicker{background-image:url(icons/filemounts.svg);background-size:14px}#picker-menu a.articlePicker{background-image:url(icons/articles.svg);background-size:16px}#picker-menu a.close{background-image:url(icons/back.svg)}.ace_editor{padding:3px}.ace_editor,.ace_editor *{font-family:"Roboto Mono",monospace!important;font-size:.75rem!important;color:inherit}.ace-fullsize{overflow:hidden!important}.ace-fullsize .ace_editor{position:fixed!important;top:0;right:0;bottom:0;left:0;width:auto!important;height:auto!important;margin:0;border:0;z-index:10000}div.mce-edit-area{width:99.9%}time[title]{cursor:help}.float_left{float:left}.float_right{float:right}#manager{padding:9px 6px 0;border-bottom:1px solid #ddd}#manager a{padding:3px 12px 3px 32px;background:url(icons/manager.svg) 12px center no-repeat}.header_icon,.header_clipboard,.header_back,.header_new,.header_rss,.header_edit_all,.header_delete_all,.header_new_folder,.header_css_import,.header_theme_import,.header_store,.header_toggle,.header_sync{padding:3px 0 3px 21px;background-position:left center;background-repeat:no-repeat;margin-left:15px}.list_icon{margin-left:-3px;padding-left:20px;background-position:left center;background-repeat:no-repeat}.list_icon_new{width:16px;background-position:1px center;background-repeat:no-repeat}.header_clipboard{background-image:url(icons/clipboard.svg)}.header_back{background-image:url(icons/back.svg)}.header_new{background-image:url(icons/new.svg)}.header_rss{background-image:url(icons/rss.svg)}.header_edit_all{background-image:url(icons/all.svg)}.header_delete_all{background-image:url(icons/deleteAll.svg)}.header_new_folder{padding-left:24px;background-image:url(icons/newfolder.svg)}.header_css_import{background-image:url(icons/cssimport.svg)}.header_theme_import{background-image:url(icons/theme_import.svg)}.header_store{padding-left:18px;background-image:url(icons/store.svg)}.header_toggle{background-image:url(icons/folPlus.svg)}.header_sync{background-image:url(icons/sync.svg)}.tl_text_trbl,.tl_imageSize_0,.tl_imageSize_1,#ctrl_playerSize input{background:url(icons/hints.svg) no-repeat right 1px top 2px}#ctrl_playerSize_1,.tl_imageSize_1{background-position:right 1px top -28px!important}.trbl_top{background-position:right 1px top -59px!important}.trbl_right{background-position:right 1px top -89px!important}.trbl_bottom{background-position:right 1px top -119px!important}.trbl_left{background-position:right 1px top -149px!important}#ctrl_shadowsize_top{background-position:right 1px top -179px!important}#ctrl_shadowsize_right{background-position:right 1px top -209px!important}#ctrl_shadowsize_bottom{background-position:right 1px top -238px!important}#ctrl_shadowsize_left{background-position:right 1px top -269px!important}#ctrl_borderradius_top{background-position:left -299px!important}#ctrl_borderradius_right{background-position:right 1px top -329px!important}#ctrl_borderradius_bottom{background-position:right 1px top -352px!important}#ctrl_borderradius_left{background-position:left -382px!important}label.error,legend.error{color:#c33}.tl_tbox .tl_error,.tl_box .tl_error{background:0 0;padding:0;font-size:.75rem}.tl_formbody_edit>.tl_error{margin-top:9px}fieldset.tl_tbox,fieldset.tl_box{padding-top:9px;border-top:26px solid #f6f6f6;border-left:0;border-right:0}fieldset.tl_tbox.nolegend,fieldset.tl_box.nolegend{border-top:0}fieldset.tl_tbox.nolegend{margin-top:0;border-top:1px solid #e6e6e8}fieldset.tl_tbox>legend,fieldset.tl_box>legend{width:100%;box-sizing:border-box;color:#6a6a6c;padding:14px 0 0 28px;background:url(icons/navcol.svg) 13px 16px no-repeat;cursor:pointer}fieldset.collapsed{margin-bottom:0;padding-top:14px;padding-bottom:0}fieldset.collapsed div{display:none!important}fieldset.collapsed>legend{background:url(icons/navexp.svg) 13px 16px no-repeat}#tl_maintenance_cache table{width:100%}#tl_maintenance_cache th,#tl_maintenance_cache td{border-bottom:1px solid #e9e9e9}#tl_maintenance_cache th{background:#f6f6f8;padding:6px;border-top:1px solid #e9e9e9}#tl_maintenance_cache td{padding:6px;line-height:1.2}#tl_maintenance_cache tr:nth-child(even) td{background:#fcfcfe}#tl_maintenance_cache td span{color:#999}#tl_maintenance_cache td:first-child{width:16px}.mac #tl_maintenance_cache td:first-child .tl_checkbox{top:-2px}#tl_maintenance_cache .nw{white-space:nowrap}#tl_maintenance_cache .tl_checkbox_container{margin-top:12px}#tl_maintenance_cache .tl_checkbox_container label{font-weight:700}.pagination{overflow:hidden;background:#f6f6f8;margin-top:10px;border:solid #e9e9e9;border-width:1px 0;padding:12px 15px}.pagination ul{width:60%;float:right;text-align:right;padding-right:3px}.pagination p{width:30%;float:left;margin-bottom:0}.pagination li{display:inline;padding-right:3px}.pagination .active{color:#999}.pagination-lp{margin-left:15px;margin-right:15px}#sync-results{overflow:hidden;margin:18px 15px 0}#sync-results p{margin-bottom:0}#sync-results .left{float:left;padding:2px 0}#sync-results .right{float:right}#result-list{margin:15px}#result-list .tl_error,#result-list .tl_confirm,#result-list .tl_info,#result-list .tl_new{padding:3px 0;background:0 0}.dropzone{margin:2px 0;min-height:auto!important;border:3px dashed #ddd!important;border-radius:2px}.dz-message span{font-size:1.3125rem;color:#ccc}@media (min-width:1440px){#main{border-right:1px solid #ddd}}@media (min-width:1140px){.lw #main{border-right:1px solid #ddd}}@media (max-width:991px){html,body{overflow-x:hidden}body{background:#fff}#header{width:100%;padding:0;position:fixed;top:0;z-index:2;transition:transform .2s ease;-webkit-transform:none;transform:none;will-change:transform}#container{display:block;padding-top:40px}#main,#left{float:none;overflow:hidden}#main{width:100%!important;position:relative;transition:transform .2s ease;-webkit-transform:none;transform:none;will-change:transform}.show-navigation #main{-webkit-transform:translateX(240px);transform:translateX(240px)}#left{position:absolute;top:40px;width:240px;transition:transform .2s ease;-webkit-transform:translateX(-240px);transform:translateX(-240px);will-change:transform}.show-navigation #left{-webkit-transform:none;transform:none}#tmenu .burger{display:inline}}@media (max-width:767px){#header.down{-webkit-transform:translateY(-40px);transform:translateY(-40px)}#header h1 a{width:22px;padding:12px;text-indent:34px;overflow:hidden}#tmenu{display:flex;width:72%;max-width:360px;margin:0 auto;padding-right:0;text-align:center}#tmenu li{flex-grow:1}#tmenu li.submenu{flex-grow:2}#tmenu li.burger{width:auto;position:absolute;right:3px;text-align:right}#tmenu a{width:40px;margin-right:0;text-align:center;font-weight:700}#tmenu sup{top:5px;left:29px}#tmenu .icon-alert{width:40px;margin-bottom:0;background-position:center 8px;font-size:.5rem;text-indent:0;overflow:initial;padding:24px 0 8px}#tmenu .icon-preview{background:url(icons/preview.svg) center 8px no-repeat;font-size:.5rem;padding:24px 0 8px}#tmenu h2{display:none}#tmenu ul.level_2{display:flex;min-width:unset;margin-top:0;position:initial;box-shadow:none;visibility:visible!important;opacity:1!important;padding:0;background:0 0;color:#fff;text-align:center}#tmenu ul.level_2 li,#tmenu ul.level_2 li a{display:inline-block}#tmenu ul.level_2 .info{display:none}#tmenu ul.level_2 .icon-profile{background:url(icons/profile.svg) center 8px no-repeat;font-size:.5rem;padding:24px 0 8px}#tmenu ul.level_2 .icon-logout{background:url(icons/exit.svg) center 8px no-repeat;font-size:.5rem;padding:24px 0 8px}#main .content{margin:15px 10px}h1.main_headline{margin:15px 0;padding:0 11px}div.tl_tbox,div.tl_box{position:relative}.tl_content_left{width:100%;float:none}.showColumns th,.showColumns td{display:block}.showColumns th:empty{display:none}.tl_label{white-space:normal}.list_view .tl_listing img.theme_preview{display:none}.tl_filter{box-sizing:border-box;padding:0 3px 0 7px}.tl_filter strong{display:none}.tl_filter .tl_select{display:block;max-width:100%}.tl_search{width:76%;max-width:283px}.tl_search .tl_select{width:36%}.tl_search .tl_text{width:26%}.tl_sorting{width:60%;max-width:212px}.tl_limit{width:50%;max-width:177px}.tl_submit_panel{float:right;z-index:1}input.tl_submit{margin-top:3px;margin-bottom:3px;padding-left:6px!important;padding-right:7px!important}.tl_show td{word-break:break-word}#tl_breadcrumb li{padding:3px}#tl_versions{display:none}.tl_version_panel .tl_select{width:44%}.tl_modulewizard td:first-child{width:1%}.tl_modulewizard td:first-child .tl_select{max-width:52vw}#paste_hint,.sort_hint{display:none}#tl_maintenance_cache table{width:100%}#tl_maintenance_cache tr th:last-child,#tl_maintenance_cache tr td:last-child{display:none}.tl_file_list .ellipsis{padding-right:10px}}@media (max-width:599px){.tl_metawizard label{width:auto;float:none;font-size:.9em;display:block;margin-top:3px}.tl_metawizard .tl_text{width:100%}}@media (max-width:479px){.tl_modulewizard td:first-child .tl_select{max-width:48vw}} \ No newline at end of file diff --git a/src/Resources/contao/themes/flexible/src/main.css b/src/Resources/contao/themes/flexible/src/main.css index c0ef01cab7..36897e3a08 100644 --- a/src/Resources/contao/themes/flexible/src/main.css +++ b/src/Resources/contao/themes/flexible/src/main.css @@ -90,7 +90,7 @@ body.popup { #tmenu ul.level_2 { min-width:150px; position:absolute; - right:3px; + right:6px; margin-top:5px; padding:6px 0 9px; background:#fff; From ca6718e894a9c73705f758e976c627b12caefb4f Mon Sep 17 00:00:00 2001 From: Leo Feyer Date: Mon, 9 Oct 2017 09:16:50 +0200 Subject: [PATCH 04/18] Stop using the TinyMCE gzip compressor (deprecated since 2014). --- CHANGELOG.md | 1 + composer.json | 2 +- src/Resources/contao/templates/backend/be_tinyFlash.html5 | 2 +- src/Resources/contao/templates/backend/be_tinyMCE.html5 | 2 +- src/Resources/contao/templates/backend/be_tinyNews.html5 | 2 +- 5 files changed, 5 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f33de2ff95..5dc619ad31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ### DEV + * Stop using the TinyMCE gzip compressor (deprecated since 2014). * Prevent the User::authenticate() method from running twice (see #1067). ### 4.4.6 (2017-09-28) diff --git a/composer.json b/composer.json index 413ff49921..946aca451f 100644 --- a/composer.json +++ b/composer.json @@ -67,7 +67,7 @@ "contao-components/swipe": "^2.0.3", "contao-components/tablesort": "^3.4.5", "contao-components/tablesorter": "^2.0.5.3", - "contao-components/tinymce4": "^4.6.3" + "contao-components/tinymce4": "4.6.*" }, "require-dev": { "ext-fileinfo": "*", diff --git a/src/Resources/contao/templates/backend/be_tinyFlash.html5 b/src/Resources/contao/templates/backend/be_tinyFlash.html5 index 8275406ed7..f7aeba33a3 100644 --- a/src/Resources/contao/templates/backend/be_tinyFlash.html5 +++ b/src/Resources/contao/templates/backend/be_tinyFlash.html5 @@ -5,7 +5,7 @@ namespace Contao; if ($GLOBALS['TL_CONFIG']['useRTE']): ?> - + + +