From 45ce3247f6ce303d821571d69aa722c04a9b7cf7 Mon Sep 17 00:00:00 2001 From: gleemand Date: Fri, 25 Jun 2021 18:44:52 +0300 Subject: [PATCH] Added highlighting of tabs with errors in settings --- retailcrm/lib/RetailcrmReferences.php | 6 +- .../templates/RetailcrmSettingsTemplate.php | 1 + retailcrm/retailcrm.php | 73 +++++++++++++++++++ retailcrm/translations/es.php | 4 + retailcrm/translations/ru.php | 4 + retailcrm/views/css/less/styles.less | 37 +++++++--- retailcrm/views/css/styles.min.css | 2 +- retailcrm/views/templates/admin/settings.tpl | 8 +- 8 files changed, 116 insertions(+), 19 deletions(-) diff --git a/retailcrm/lib/RetailcrmReferences.php b/retailcrm/lib/RetailcrmReferences.php index 826e64c..84c808a 100644 --- a/retailcrm/lib/RetailcrmReferences.php +++ b/retailcrm/lib/RetailcrmReferences.php @@ -256,7 +256,7 @@ class RetailcrmReferences return $this->getApiStatuses(); } - protected function getApiDeliveryTypes() + public function getApiDeliveryTypes() { $crmDeliveryTypes = array(); $request = $this->api->deliveryTypesList(); @@ -281,7 +281,7 @@ class RetailcrmReferences return $crmDeliveryTypes; } - protected function getApiStatuses() + public function getApiStatuses() { $crmStatusTypes = array(); $request = $this->api->statusesList(); @@ -315,7 +315,7 @@ class RetailcrmReferences return $crmStatusTypes; } - protected function getApiPaymentTypes() + public function getApiPaymentTypes() { $crmPaymentTypes = array(); $request = $this->api->paymentTypesList(); diff --git a/retailcrm/lib/templates/RetailcrmSettingsTemplate.php b/retailcrm/lib/templates/RetailcrmSettingsTemplate.php index cc4f02f..755767a 100644 --- a/retailcrm/lib/templates/RetailcrmSettingsTemplate.php +++ b/retailcrm/lib/templates/RetailcrmSettingsTemplate.php @@ -83,6 +83,7 @@ class RetailcrmSettingsTemplate extends RetailcrmAbstractTemplate $params['currentJob'] = Configuration::get(RetailcrmJobManager::CURRENT_TASK); $params['currentJobCli'] = Configuration::get(RetailcrmCli::CURRENT_TASK_CLI); $params['retailcrmLogsInfo'] = RetailcrmLogger::getLogFilesInfo(); + $params['errorTabs'] = $this->module->validateStoredSettings(); } return $params; diff --git a/retailcrm/retailcrm.php b/retailcrm/retailcrm.php index a1e61bb..bd4b3a9 100644 --- a/retailcrm/retailcrm.php +++ b/retailcrm/retailcrm.php @@ -86,6 +86,14 @@ class RetailCRM extends Module 'RetailcrmClearLogsEvent' => 'Clearing logs' ]; + const TABS_TO_VALIDATE = [ + 'delivery' => self::DELIVERY, + 'statuses' => self::STATUS, + 'payment' => self::PAYMENT, + 'deliveryDefault' => self::DELIVERY_DEFAULT, + 'paymentDefault' => self::PAYMENT_DEFAULT, + ]; + /** * @var array $templateErrors */ @@ -1086,6 +1094,56 @@ class RetailCRM extends Module return true; } + public function validateStoredSettings() + { + $output = array(); + $checkApiMethods = array( + 'delivery' => 'getApiDeliveryTypes', + 'statuses' => 'getApiStatuses', + 'payment' => 'getApiPaymentTypes', + ); + + foreach (self::TABS_TO_VALIDATE as $tabName => $settingName) { + $storedValues = Tools::getIsset($settingName) + ? Tools::getValue($settingName) + : json_decode(Configuration::get($settingName), true); + + if ($storedValues !== false && $storedValues !== null) { + if (!$this->validateMappingSelected($storedValues)) { + $output[] = $tabName; + } else { + if (array_key_exists($tabName, $checkApiMethods)) { + $crmValues = call_user_func(array($this->reference, $checkApiMethods[$tabName])); + $crmCodes = array_column($crmValues, 'id_option'); + + if (!empty(array_diff($storedValues, $crmCodes))) { + $output[] = $tabName; + }; + } + } + } + } + + return $output; + } + + private function validateMappingSelected($values) + { + if (is_array($values)) { + foreach ($values as $item) { + if (empty($item)) { + return false; + } + } + } else { + if (empty($values)) { + return false; + } + } + + return true; + } + /** * Settings form validator * @@ -1124,6 +1182,21 @@ class RetailCRM extends Module ); } + $errorTabs = $this->validateStoredSettings(); + + if (in_array('delivery', $errorTabs)) { + $this->displayWarning($this->l('Select values for all delivery types')); + } + if (in_array('statuses', $errorTabs)) { + $this->displayWarning($this->l('Select values for all order statuses')); + } + if (in_array('payment', $errorTabs)) { + $this->displayWarning($this->l('Select values for all payment types')); + } + if (in_array('deliveryDefault', $errorTabs) || in_array('paymentDefault', $errorTabs)) { + $this->displayWarning($this->l('Select values for all default parameters')); + } + return $output; } diff --git a/retailcrm/translations/es.php b/retailcrm/translations/es.php index d62097a..37442e6 100644 --- a/retailcrm/translations/es.php +++ b/retailcrm/translations/es.php @@ -15,6 +15,10 @@ $_MODULE['<{retailcrm}prestashop>retailcrm_b9c4e8fe56eabcc4c7913ebb2f8eb388'] = $_MODULE['<{retailcrm}prestashop>retailcrm_39e90036af004a005ccbccbe9a9c19c2'] = 'Los estados de orden no deben repetirse en la matriz de estados'; $_MODULE['<{retailcrm}prestashop>retailcrm_a52213fa61ecf700d1a6091d9769c9a8'] = 'Los tipos de entrega no deben repetirse en la matriz de entrega'; $_MODULE['<{retailcrm}prestashop>retailcrm_f08acd4b354f4d5f4e531ca1972e4504'] = 'Los tipos de pago no deben repetirse en la matriz de pagos'; +$_MODULE['<{retailcrm}prestashop>retailcrm_49910de3587b1c6141c03f65ef26b334'] = 'Seleccionar valores para todos los tipos de envío'; +$_MODULE['<{retailcrm}prestashop>retailcrm_220b6b5418e80a7f86b0ce9fbdd96bb0'] = 'Seleccionar valores para todos los estados de los pedidos'; +$_MODULE['<{retailcrm}prestashop>retailcrm_10f66d6041a2b944b446b6ca02f7f4f3'] = 'Seleccionar valores para todos los tipos de pago'; +$_MODULE['<{retailcrm}prestashop>retailcrm_1bf0b3775f120ff1991773064903e8b1'] = 'Seleccionar valores para todos los parámetros predeterminados'; $_MODULE['<{retailcrm}prestashop>retailcrm_d5bb7c2cb1565fb1568924b01847b330'] = 'Tras 15 minutos'; $_MODULE['<{retailcrm}prestashop>retailcrm_9d3095e54f694bb41ef4a3e62ed90e7a'] = 'Tras 30 minutos'; $_MODULE['<{retailcrm}prestashop>retailcrm_dfb403fd86851c7d9f97706dff5a2327'] = 'Tras 45 minutos'; diff --git a/retailcrm/translations/ru.php b/retailcrm/translations/ru.php index cc0ff1a..848e6ed 100644 --- a/retailcrm/translations/ru.php +++ b/retailcrm/translations/ru.php @@ -15,6 +15,10 @@ $_MODULE['<{retailcrm}prestashop>retailcrm_b9c4e8fe56eabcc4c7913ebb2f8eb388'] = $_MODULE['<{retailcrm}prestashop>retailcrm_39e90036af004a005ccbccbe9a9c19c2'] = 'Статусы заказов не должны повторяться в матрице соответствий статусов'; $_MODULE['<{retailcrm}prestashop>retailcrm_a52213fa61ecf700d1a6091d9769c9a8'] = 'Типы доставок не должны повторяться в матрице соответствий типов доставок'; $_MODULE['<{retailcrm}prestashop>retailcrm_f08acd4b354f4d5f4e531ca1972e4504'] = 'Способы оплат не должны повторяться в матрице соответствий способов оплат'; +$_MODULE['<{retailcrm}prestashop>retailcrm_49910de3587b1c6141c03f65ef26b334'] = 'Выберите соответствия для всех типов доставки'; +$_MODULE['<{retailcrm}prestashop>retailcrm_220b6b5418e80a7f86b0ce9fbdd96bb0'] = 'Выберите соответствия для всех статусов заказов'; +$_MODULE['<{retailcrm}prestashop>retailcrm_10f66d6041a2b944b446b6ca02f7f4f3'] = 'Выберите соответствия для всех типов оплаты'; +$_MODULE['<{retailcrm}prestashop>retailcrm_1bf0b3775f120ff1991773064903e8b1'] = 'Выберите соответствия для всех параметров по умолчанию'; $_MODULE['<{retailcrm}prestashop>retailcrm_d5bb7c2cb1565fb1568924b01847b330'] = 'Через 15 минут'; $_MODULE['<{retailcrm}prestashop>retailcrm_9d3095e54f694bb41ef4a3e62ed90e7a'] = 'Через 30 минут'; $_MODULE['<{retailcrm}prestashop>retailcrm_dfb403fd86851c7d9f97706dff5a2327'] = 'Через 45 минут'; diff --git a/retailcrm/views/css/less/styles.less b/retailcrm/views/css/less/styles.less index f946082..c3ae6ae 100644 --- a/retailcrm/views/css/less/styles.less +++ b/retailcrm/views/css/less/styles.less @@ -1,8 +1,11 @@ @import "fonts.less"; -@red: #0068FF; -@redHover: #005add; +@red: #ff553b; +@redHover: #da4932; @redActive: darken(@redHover, 10%); +@blue: #0068FF; +@blueHover: #005add; +@blueActive: darken(@blueHover, 10%); @gray: #7A7A7A; @grayBg: #EAEBEC; @grayBtn: rgba(122, 122, 122, 0.1); @@ -146,12 +149,12 @@ body, html { margin-bottom: 22px; &_link { - color: @red; + color: @blue; transition: .25s ease; float: right; &:hover { - color: @redHover; + color: @blueHover; } } } @@ -273,7 +276,7 @@ body, html { right: 0; opacity: 0; visibility: hidden; - background: @red; + background: @blue; transition: .25s ease; } @@ -372,14 +375,14 @@ body, html { margin-top: 10px; } &__link { - color: @red; + color: @blue; font-size: 16px; font-weight: 600; line-height: 24px; transition: .25s ease; &:hover { - color: @redHover; + color: @blueHover; } } } @@ -488,6 +491,18 @@ body, html { } &_active { + color: white !important; + background: @blue !important; + + &:hover { + background: @blueHover !important; + } + + &.retail-menu__btn_error { + background: @redHover !important; + } + } + &_error { color: white !important; background: @red !important; @@ -520,7 +535,7 @@ body, html { font-size: 18px; font-weight: 600; text-align: center; - color: @red; + color: @blue; text-decoration: none; cursor: pointer; appearance: none; @@ -540,15 +555,15 @@ body, html { min-width: 356px; } &_invert { - background: @red; + background: @blue; color: white; &:hover { - background: @redHover; + background: @blueHover; } &:active { - background: @redActive; + background: @blueActive; } } &_whatsapp { diff --git a/retailcrm/views/css/styles.min.css b/retailcrm/views/css/styles.min.css index c43c194..0efbe1e 100644 --- a/retailcrm/views/css/styles.min.css +++ b/retailcrm/views/css/styles.min.css @@ -1 +1 @@ -@font-face{font-family:OpenSans;src:url(../fonts/OpenSans/opensans-regular.eot);src:url(../fonts/OpenSans/opensans-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/OpenSans/opensans-regular.woff2) format('woff2'),url(../fonts/OpenSans/opensans-regular.woff) format('woff'),url(../fonts/OpenSans/opensans-regular.ttf) format('truetype'),url(../fonts/OpenSans/opensans-regular.svg#open_sansregular) format('svg');font-weight:400;font-style:normal}@font-face{font-family:OpenSans;src:url(../fonts/OpenSansBold/opensans-bold.eot);src:url(../fonts/OpenSansBold/opensans-bold.eot?#iefix) format('embedded-opentype'),url(../fonts/OpenSansBold/opensans-bold.woff2) format('woff2'),url(../fonts/OpenSansBold/opensans-bold.woff) format('woff'),url(../fonts/OpenSansBold/opensans-bold.ttf) format('truetype'),url(../fonts/OpenSansBold/opensans-bold.svg#open_sansbold) format('svg');font-weight:600;font-style:normal}body,html{margin:0;padding:0;height:100%}.hidden{visibility:hidden}.retail-wrap{font-family:OpenSans,Arial,sans-serif;padding:0 15px;height:100%}.retail-wrap *,.retail-wrap ::after,.retail-wrap ::before{box-sizing:border-box}.retail-container{margin:0 auto;width:100%;max-width:950px}.retail-title{margin:60px 0 0;font-weight:400;text-align:center;font-size:28px;line-height:38px}.retail-title_content{text-align:left;margin-top:40px}.retail-txt{color:#7a7a7a;font-size:18px;line-height:26px}.retail-descript{margin-top:45px;text-align:center}.retail-tab__enabled{display:block}.retail-tab__disabled{display:none!important}.retail-video{margin:57px auto 0;max-width:442px;position:relative}.retail-video-trigger{position:absolute;top:0;bottom:0;right:0;left:0;width:100%;height:100%;cursor:pointer}.retail-video iframe{pointer-events:none}.retail-video__btn{position:absolute;left:0;right:0;top:0;bottom:0;margin:auto;width:100px;height:100px;cursor:pointer;opacity:.4;transition:.25s ease}.retail-video__btn svg{width:100%}.retail-video__btn:hover{opacity:.6}.retail-btns{margin:56px auto 0;display:flex;justify-content:space-between;max-width:815px;transition:50ms ease}.retail-btns__separate{padding:0 20px;display:flex;align-items:center;color:#7a7a7a;font-size:16px}.retail-btns_hide{opacity:0}.retail-form{margin-top:60px}.retail-form__title{font-size:16px;font-weight:600;line-height:24px;margin-bottom:22px}.retail-form__title_link{color:#0068ff;transition:.25s ease;float:right}.retail-form__title_link:hover{color:#005add}.retail-form__label{width:100%!important;text-align:left!important;margin:15px 12px;font-size:15px}.retail-form__row{margin-top:15px}.retail-form__row_submit{margin-top:23px}.retail-form__message-warning{padding:13px 18px;margin:1px 13px;border-radius:8px;border:1px solid #fcf3b5;font-size:1rem;box-shadow:0 0 6px 0 #fdd0d0}.retail-form__checkbox{display:flex;flex-direction:row;align-items:center;padding:4px 12px}.retail-form__checkbox input[type=checkbox]{width:24px;height:24px}.retail-form__checkbox label{width:auto;margin-left:8px;font-size:16px}.retail-form__area{display:inline-block!important;vertical-align:top;width:430px!important;height:60px!important;border:1px solid rgba(122,122,122,.15)!important;box-shadow:none!important;border-radius:58px!important;padding:0 28px!important;line-height:normal;color:#7a7a7a!important;font-size:16px!important;appearance:none}.retail-form__area:focus{color:#363a41}.retail-form__area:focus::-webkit-input-placeholder{color:#363a41}.retail-form__area:focus::-moz-placeholder{color:#363a41}.retail-form__area:focus:-moz-placeholder{color:#363a41}.retail-form__area:focus:-ms-input-placeholder{color:#363a41}.retail-form__area_txt{padding:20px 28px!important;line-height:24px!important;height:487px!important;border-radius:20px!important;resize:none!important;font-family:OpenSans,Arial,sans-serif!important}.retail-form input:focus,.retail-form textarea:focus{outline:0!important}.retail-form_main{margin-top:34px;max-width:900px;width:100%}.retail-form_main .retail-form__area{width:100%!important}.retail-tabs{margin-top:60px}.retail-tabs__btn{display:inline-block;vertical-align:top;padding:19px 30px;font-size:16px;font-weight:600;line-height:22px;color:#7a7a7a;text-align:center;min-width:152px;text-decoration:none!important;position:relative;transition:.25s ease}.retail-tabs__btn:hover{color:#363a41}.retail-tabs__btn::after{content:"";height:3px;width:100%;position:absolute;bottom:-1px;left:0;right:0;opacity:0;visibility:hidden;background:#0068ff;transition:.25s ease}.retail-tabs__btn_active{color:#363a41}.retail-tabs__btn_active::after{opacity:1;visibility:visible}.retail-tabs__head{display:flex;justify-content:space-between;border-bottom:1px solid #dfdfdf}.retail-tabs__body{padding-top:18px}.retail-tabs__body p{margin-top:23px;margin-bottom:0;color:#7a7a7a;font-size:16px;line-height:24px}.retail-tabs__item{display:none}.retail-list{margin:0;padding:0;list-style:none}.retail-list__item{padding-left:2px;position:relative;color:#7a7a7a;font-size:16px;line-height:24px}.retail-list__item::before{content:"-";display:inline-block;vertical-align:top;color:#7a7a7a;font-size:16px;line-height:24px;margin-right:3px}.retail-tile{display:flex;flex-wrap:wrap}.retail-tile__col{width:48%;padding-right:35px}.retail-tile__col:nth-child(1){width:52%}.retail-tile__col_contacts{padding-right:0}.retail-tile__row{display:flex;justify-content:center;margin-bottom:30px}.retail-tile__row:nth-last-child(1){margin-bottom:0}.retail-tile__item{margin-top:34px}.retail-tile__item:nth-child(1){margin-top:20px}.retail-tile__title{color:#363a41;font-size:16px;font-weight:600;line-height:24px}.retail-tile__descript{color:#7a7a7a;font-size:16px;line-height:24px;margin-top:10px}.retail-tile__link{color:#0068ff;font-size:16px;font-weight:600;line-height:24px;transition:.25s ease}.retail-tile__link:hover{color:#005add}.retail-popup{position:absolute;width:90%;height:90%;background:#fff;left:0;right:0;top:0;bottom:0;margin:auto;transform:translate3d(0,-1000%,0) scale(.1);transition:.25s ease}.retail-popup__close{position:absolute;top:-30px;right:-30px;width:30px;height:30px;cursor:pointer}.retail-popup__close::after,.retail-popup__close::before{content:"";position:absolute;left:0;right:0;top:0;bottom:0;margin:auto;height:30px;width:2px;background:#fff}.retail-popup__close::before{transform:rotate(45deg)}.retail-popup__close::after{transform:rotate(-45deg)}.retail-popup.open{transform:translate3d(0,0,0) scale(1)}.retail-popup-wrap{position:fixed;left:0;right:0;top:0;bottom:0;background:rgba(0,0,0,.6);z-index:1000;display:none}.retail-column{display:flex;max-width:1389px;height:100%}.retail-column__aside{width:253px;background:#eaebec;min-height:300px}.retail-column__content{flex:1 0 auto;padding:0 58px;min-height:300px}.retail-menu{padding:8px 20px 8px 15px}.retail-menu__btn{display:inline-flex;align-items:center;justify-content:center;vertical-align:top;width:100%;height:60px;background:rgba(122,122,122,.1)!important;font-weight:700;font-size:16px;color:#363a41!important;text-decoration:none!important;padding:0 30px;margin-top:20px;border-radius:5px;text-align:center;transition:.25s ease}.retail-menu__btn span{display:block}.retail-menu__btn:hover{background:rgba(122,122,122,.15)!important}.retail-menu__btn:nth-child(1){margin-top:0}.retail-menu__btn_active{color:#fff!important;background:#0068ff!important}.retail-menu__btn_active:hover{background:#005add!important}.retail-menu__btn_big{font-size:18px}.retail-menu__btn_hidden{display:none}.retail-full-height{height:100%}.retail .btn{display:inline-block;vertical-align:top;background:rgba(122,122,122,.1);border-radius:58px;height:60px;line-height:60px;padding:0 30px;font-size:18px;font-weight:600;text-align:center;color:#0068ff;text-decoration:none;cursor:pointer;appearance:none;border:none;box-shadow:none;transition:.25s ease}.retail .btn:hover{background:rgba(122,122,122,.15)}.retail .btn:active{background:rgba(122,122,122,.25)}.retail .btn_max{min-width:356px}.retail .btn_invert{background:#0068ff;color:#fff}.retail .btn_invert:hover{background:#005add}.retail .btn_invert:active{background:#0045aa}.retail .btn_whatsapp{background:#33d16b;color:#fff;padding:0 62px}.retail .btn_whatsapp:hover{background:#22ca5d}.retail .btn_submit{min-width:218px}.retail .toggle-box{display:none}.retail-table{width:100%;border:none;border-radius:20px}.retail-table thead th{background:rgba(122,122,122,.15);font-size:16px}.retail-table tbody tr td{border-bottom:1px solid #ccc}.retail-table td,.retail-table th{color:#333;font-size:14px;line-height:60px;padding:4px 4px 4px 6px;max-width:300px;vertical-align:middle}.retail-table-no-wrap{white-space:nowrap}.retail-table-center{text-align:center}.retail-table-sort__btn,.retail-table-sort__switch{cursor:pointer}.retail-table-sort__btn:hover,.retail-table-sort__switch:hover{color:#005add}.retail-table-sort__btn{float:left;clear:both;line-height:15px;font-size:20px;padding-left:10px;padding-right:10px;opacity:0;transition:opacity .2s ease-out}.retail-table-sort__btn-wrap{position:absolute}.retail-table-sort__asc{padding-top:15px;padding-bottom:0}.retail-table-sort__desc{padding-top:0;padding-bottom:15px}.retail-table-sort thead td:hover .retail-table-sort__btn,.retail-table-sort thead th:hover .retail-table-sort__btn{opacity:1}.retail-collapsible__input{display:none}label.retail-collapsible__title{cursor:pointer;font-weight:400;text-align:center;padding:0;position:relative;line-height:1;width:100%}label.retail-collapsible__title:before{content:'\25B6';opacity:0;transition:opacity .2s ease-out}label.retail-collapsible__title:hover:before{opacity:1}.retail-collapsible__content{text-align:left;font-size:12px;line-height:1.5;background:#fff;border:1px solid rgba(122,122,122,.15);position:absolute;top:20px;left:0;padding:18px;margin:0;border-radius:20px;overflow:hidden;max-height:0;transition-duration:.2s;transition-timing-function:ease-out;transition-property:max-height,visibility;visibility:hidden}.retail-collapsible__input:checked+.retail-collapsible__title .retail-collapsible__content{max-height:100vh;visibility:visible}.retail-error-msg,.retail-error-msg:after,.retail-error-msg:before{color:#dd2e44} \ No newline at end of file +@font-face{font-family:OpenSans;src:url(../fonts/OpenSans/opensans-regular.eot);src:url(../fonts/OpenSans/opensans-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/OpenSans/opensans-regular.woff2) format('woff2'),url(../fonts/OpenSans/opensans-regular.woff) format('woff'),url(../fonts/OpenSans/opensans-regular.ttf) format('truetype'),url(../fonts/OpenSans/opensans-regular.svg#open_sansregular) format('svg');font-weight:400;font-style:normal}@font-face{font-family:OpenSans;src:url(../fonts/OpenSansBold/opensans-bold.eot);src:url(../fonts/OpenSansBold/opensans-bold.eot?#iefix) format('embedded-opentype'),url(../fonts/OpenSansBold/opensans-bold.woff2) format('woff2'),url(../fonts/OpenSansBold/opensans-bold.woff) format('woff'),url(../fonts/OpenSansBold/opensans-bold.ttf) format('truetype'),url(../fonts/OpenSansBold/opensans-bold.svg#open_sansbold) format('svg');font-weight:600;font-style:normal}body,html{margin:0;padding:0;height:100%}.hidden{visibility:hidden}.retail-wrap{font-family:OpenSans,Arial,sans-serif;padding:0 15px;height:100%}.retail-wrap *,.retail-wrap ::after,.retail-wrap ::before{box-sizing:border-box}.retail-container{margin:0 auto;width:100%;max-width:950px}.retail-title{margin:60px 0 0;font-weight:400;text-align:center;font-size:28px;line-height:38px}.retail-title_content{text-align:left;margin-top:40px}.retail-txt{color:#7A7A7A;font-size:18px;line-height:26px}.retail-descript{margin-top:45px;text-align:center}.retail-tab__enabled{display:block}.retail-tab__disabled{display:none!important}.retail-video{margin:57px auto 0;max-width:442px;position:relative}.retail-video-trigger{position:absolute;top:0;bottom:0;right:0;left:0;width:100%;height:100%;cursor:pointer}.retail-video iframe{pointer-events:none}.retail-video__btn{position:absolute;left:0;right:0;top:0;bottom:0;margin:auto;width:100px;height:100px;cursor:pointer;opacity:.4;transition:.25s ease}.retail-video__btn svg{width:100%}.retail-video__btn:hover{opacity:.6}.retail-btns{margin:56px auto 0;display:flex;justify-content:space-between;max-width:815px;transition:50ms ease}.retail-btns__separate{padding:0 20px;display:flex;align-items:center;color:#7A7A7A;font-size:16px}.retail-btns_hide{opacity:0}.retail-form{margin-top:60px}.retail-form__title{font-size:16px;font-weight:600;line-height:24px;margin-bottom:22px}.retail-form__title_link{color:#0068FF;transition:.25s ease;float:right}.retail-form__title_link:hover{color:#005add}.retail-form__label{width:100%!important;text-align:left!important;margin:15px 12px;font-size:15px}.retail-form__row{margin-top:15px}.retail-form__row_submit{margin-top:23px}.retail-form__message-warning{padding:13px 18px;margin:1px 13px;border-radius:8px;border:1px solid #fcf3b5;font-size:1rem;box-shadow:0 0 6px 0 #fdd0d0}.retail-form__checkbox{display:flex;flex-direction:row;align-items:center;padding:4px 12px}.retail-form__checkbox input[type=checkbox]{width:24px;height:24px}.retail-form__checkbox label{width:auto;margin-left:8px;font-size:16px}.retail-form__area{display:inline-block!important;vertical-align:top;width:430px!important;height:60px!important;border:1px solid rgba(122,122,122,.15)!important;box-shadow:none!important;border-radius:58px!important;padding:0 28px!important;line-height:normal;color:#7A7A7A!important;font-size:16px!important;appearance:none}.retail-form__area:focus{color:#363A41}.retail-form__area:focus::-webkit-input-placeholder{color:#363A41}.retail-form__area:focus::-moz-placeholder{color:#363A41}.retail-form__area:focus:-moz-placeholder{color:#363A41}.retail-form__area:focus:-ms-input-placeholder{color:#363A41}.retail-form__area_txt{padding:20px 28px!important;line-height:24px!important;height:487px!important;border-radius:20px!important;resize:none!important;font-family:OpenSans,Arial,sans-serif!important}.retail-form input:focus,.retail-form textarea:focus{outline:0!important}.retail-form_main{margin-top:34px;max-width:900px;width:100%}.retail-form_main .retail-form__area{width:100%!important}.retail-tabs{margin-top:60px}.retail-tabs__btn{display:inline-block;vertical-align:top;padding:19px 30px;font-size:16px;font-weight:600;line-height:22px;color:#7A7A7A;text-align:center;min-width:152px;text-decoration:none!important;position:relative;transition:.25s ease}.retail-tabs__btn:hover{color:#363A41}.retail-tabs__btn::after{content:"";height:3px;width:100%;position:absolute;bottom:-1px;left:0;right:0;opacity:0;visibility:hidden;background:#0068FF;transition:.25s ease}.retail-tabs__btn_active{color:#363A41}.retail-tabs__btn_active::after{opacity:1;visibility:visible}.retail-tabs__head{display:flex;justify-content:space-between;border-bottom:1px solid #DFDFDF}.retail-tabs__body{padding-top:18px}.retail-tabs__body p{margin-top:23px;margin-bottom:0;color:#7A7A7A;font-size:16px;line-height:24px}.retail-tabs__item{display:none}.retail-list{margin:0;padding:0;list-style:none}.retail-list__item{padding-left:2px;position:relative;color:#7A7A7A;font-size:16px;line-height:24px}.retail-list__item::before{content:"-";display:inline-block;vertical-align:top;color:#7A7A7A;font-size:16px;line-height:24px;margin-right:3px}.retail-tile{display:flex;flex-wrap:wrap}.retail-tile__col{width:48%;padding-right:35px}.retail-tile__col:nth-child(1){width:52%}.retail-tile__col_contacts{padding-right:0}.retail-tile__row{display:flex;justify-content:center;margin-bottom:30px}.retail-tile__row:nth-last-child(1){margin-bottom:0}.retail-tile__item{margin-top:34px}.retail-tile__item:nth-child(1){margin-top:20px}.retail-tile__title{color:#363A41;font-size:16px;font-weight:600;line-height:24px}.retail-tile__descript{color:#7A7A7A;font-size:16px;line-height:24px;margin-top:10px}.retail-tile__link{color:#0068FF;font-size:16px;font-weight:600;line-height:24px;transition:.25s ease}.retail-tile__link:hover{color:#005add}.retail-popup{position:absolute;width:90%;height:90%;background:#fff;left:0;right:0;top:0;bottom:0;margin:auto;transform:translate3d(0,-1000%,0) scale(.1);transition:.25s ease}.retail-popup__close{position:absolute;top:-30px;right:-30px;width:30px;height:30px;cursor:pointer}.retail-popup__close::after,.retail-popup__close::before{content:"";position:absolute;left:0;right:0;top:0;bottom:0;margin:auto;height:30px;width:2px;background:#fff}.retail-popup__close::before{transform:rotate(45deg)}.retail-popup__close::after{transform:rotate(-45deg)}.retail-popup.open{transform:translate3d(0,0,0) scale(1)}.retail-popup-wrap{position:fixed;left:0;right:0;top:0;bottom:0;background:rgba(0,0,0,.6);z-index:1000;display:none}.retail-column{display:flex;max-width:1389px;height:100%}.retail-column__aside{width:253px;background:#EAEBEC;min-height:300px}.retail-column__content{flex:1 0 auto;padding:0 58px;min-height:300px}.retail-menu{padding:8px 20px 8px 15px}.retail-menu__btn{display:inline-flex;align-items:center;justify-content:center;vertical-align:top;width:100%;height:60px;background:rgba(122,122,122,.1)!important;font-weight:700;font-size:16px;color:#363A41!important;text-decoration:none!important;padding:0 30px;margin-top:20px;border-radius:5px;text-align:center;transition:.25s ease}.retail-menu__btn span{display:block}.retail-menu__btn:hover{background:rgba(122,122,122,.15)!important}.retail-menu__btn:nth-child(1){margin-top:0}.retail-menu__btn_active{color:#fff!important;background:#0068FF!important}.retail-menu__btn_active:hover{background:#005add!important}.retail-menu__btn_active.retail-menu__btn_error{background:#da4932!important}.retail-menu__btn_error{color:#fff!important;background:#ff553b!important}.retail-menu__btn_error:hover{background:#da4932!important}.retail-menu__btn_big{font-size:18px}.retail-menu__btn_hidden{display:none}.retail-full-height{height:100%}.retail .btn{display:inline-block;vertical-align:top;background:rgba(122,122,122,.1);border-radius:58px;height:60px;line-height:60px;padding:0 30px;font-size:18px;font-weight:600;text-align:center;color:#0068FF;text-decoration:none;cursor:pointer;appearance:none;border:none;box-shadow:none;transition:.25s ease}.retail .btn:hover{background:rgba(122,122,122,.15)}.retail .btn:active{background:rgba(122,122,122,.25)}.retail .btn_max{min-width:356px}.retail .btn_invert{background:#0068FF;color:#fff}.retail .btn_invert:hover{background:#005add}.retail .btn_invert:active{background:#0045aa}.retail .btn_whatsapp{background:#33D16B;color:#fff;padding:0 62px}.retail .btn_whatsapp:hover{background:#22CA5D}.retail .btn_submit{min-width:218px}.retail .toggle-box{display:none}.retail-table{width:100%;border:none;border-radius:20px}.retail-table thead th{background:rgba(122,122,122,.15);font-size:16px}.retail-table tbody tr td{border-bottom:1px solid #ccc}.retail-table td,.retail-table th{color:#333;font-size:14px;line-height:60px;padding:4px 4px 4px 6px;max-width:300px;vertical-align:middle}.retail-table-no-wrap{white-space:nowrap}.retail-table-center{text-align:center}.retail-table-sort__btn,.retail-table-sort__switch{cursor:pointer}.retail-table-sort__btn:hover,.retail-table-sort__switch:hover{color:#005add}.retail-table-sort__btn{float:left;clear:both;line-height:15px;font-size:20px;padding-left:10px;padding-right:10px;opacity:0;transition:opacity .2s ease-out}.retail-table-sort__btn-wrap{position:absolute}.retail-table-sort__asc{padding-top:15px;padding-bottom:0}.retail-table-sort__desc{padding-top:0;padding-bottom:15px}.retail-table-sort thead td:hover .retail-table-sort__btn,.retail-table-sort thead th:hover .retail-table-sort__btn{opacity:1}.retail-collapsible__input{display:none}label.retail-collapsible__title{cursor:pointer;font-weight:400;text-align:center;padding:0;position:relative;line-height:1;width:100%}label.retail-collapsible__title:before{content:'\25B6';opacity:0;transition:opacity .2s ease-out}label.retail-collapsible__title:hover:before{opacity:1}.retail-collapsible__content{text-align:left;font-size:12px;line-height:1.5;background:#fff;border:1px solid rgba(122,122,122,.15);position:absolute;top:20px;left:0;padding:18px;margin:0;border-radius:20px;overflow:hidden;max-height:0;transition-duration:.2s;transition-timing-function:ease-out;transition-property:max-height,visibility;visibility:hidden}.retail-collapsible__input:checked+.retail-collapsible__title .retail-collapsible__content{max-height:100vh;visibility:visible}.retail-error-msg,.retail-error-msg:after,.retail-error-msg:before{color:#dd2e44} \ No newline at end of file diff --git a/retailcrm/views/templates/admin/settings.tpl b/retailcrm/views/templates/admin/settings.tpl index 561ec66..f2ecf2e 100644 --- a/retailcrm/views/templates/admin/settings.tpl +++ b/retailcrm/views/templates/admin/settings.tpl @@ -49,10 +49,10 @@