mirror of
https://github.com/retailcrm/prestashop-module.git
synced 2025-03-01 19:03:14 +03:00
Added highlighting of tabs with errors in settings
This commit is contained in:
parent
5fc6e4c5b8
commit
45ce3247f6
@ -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();
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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';
|
||||
|
@ -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 минут';
|
||||
|
@ -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 {
|
||||
|
2
retailcrm/views/css/styles.min.css
vendored
2
retailcrm/views/css/styles.min.css
vendored
File diff suppressed because one or more lines are too long
@ -49,10 +49,10 @@
|
||||
<aside class="retail-column__aside">
|
||||
<div class="retail-menu">
|
||||
<a href="{$url_post|escape:'htmlall':'UTF-8'}&configure=retailcrm" data-tab-trigger="rcrm_tab_connection" class="retail-menu__btn retail-menu__btn_big retail-menu__btn_active"><span>{l s='Connection' mod='retailcrm'}<span/></a>
|
||||
<a href="{$url_post|escape:'htmlall':'UTF-8'}&configure=retailcrm" data-tab-trigger="rcrm_tab_delivery_types" class="retail-menu__btn retail-menu__btn_big retail-menu__btn_inactive"><span>{l s='Delivery' mod='retailcrm'}<span/></a>
|
||||
<a href="{$url_post|escape:'htmlall':'UTF-8'}&configure=retailcrm" data-tab-trigger="rcrm_tab_order_statuses" class="retail-menu__btn retail-menu__btn_big retail-menu__btn_inactive"><span>{l s='Order statuses' mod='retailcrm'}<span/></a>
|
||||
<a href="{$url_post|escape:'htmlall':'UTF-8'}&configure=retailcrm" data-tab-trigger="rcrm_tab_payment_types" class="retail-menu__btn retail-menu__btn_big retail-menu__btn_inactive"><span>{l s='Payment types' mod='retailcrm'}<span/></a>
|
||||
<a href="{$url_post|escape:'htmlall':'UTF-8'}&configure=retailcrm" data-tab-trigger="rcrm_tab_default_types" class="retail-menu__btn retail-menu__btn_big retail-menu__btn_inactive"><span>{l s='Default' mod='retailcrm'}<span/></a>
|
||||
<a href="{$url_post|escape:'htmlall':'UTF-8'}&configure=retailcrm" data-tab-trigger="rcrm_tab_delivery_types" class="retail-menu__btn retail-menu__btn_big{if in_array('delivery', $errorTabs)} retail-menu__btn_error{/if}"><span>{l s='Delivery' mod='retailcrm'}<span/></a>
|
||||
<a href="{$url_post|escape:'htmlall':'UTF-8'}&configure=retailcrm" data-tab-trigger="rcrm_tab_order_statuses" class="retail-menu__btn retail-menu__btn_big{if in_array('statuses', $errorTabs)} retail-menu__btn_error{/if}"><span>{l s='Order statuses' mod='retailcrm'}<span/></a>
|
||||
<a href="{$url_post|escape:'htmlall':'UTF-8'}&configure=retailcrm" data-tab-trigger="rcrm_tab_payment_types" class="retail-menu__btn retail-menu__btn_big{if in_array('payment', $errorTabs)} retail-menu__btn_error{/if}"><span>{l s='Payment types' mod='retailcrm'}<span/></a>
|
||||
<a href="{$url_post|escape:'htmlall':'UTF-8'}&configure=retailcrm" data-tab-trigger="rcrm_tab_default_types" class="retail-menu__btn retail-menu__btn_big{if in_array('deliveryDefault', $errorTabs) || in_array('paymentDefault', $errorTabs)} retail-menu__btn_error{/if}"><span>{l s='Default' mod='retailcrm'}<span/></a>
|
||||
<a href="{$url_post|escape:'htmlall':'UTF-8'}&configure=retailcrm" data-tab-trigger="rcrm_tab_orders_upload" class="retail-menu__btn retail-menu__btn_big retail-menu__btn_inactive"><span>{l s='Upload orders' mod='retailcrm'}<span/></a>
|
||||
<a href="{$url_post|escape:'htmlall':'UTF-8'}&configure=retailcrm" data-tab-trigger="rcrm_tab_carts_sync" class="retail-menu__btn retail-menu__btn_big retail-menu__btn_inactive"><span>{l s='Abandoned carts' mod='retailcrm'}<span/></a>
|
||||
<a href="{$url_post|escape:'htmlall':'UTF-8'}&configure=retailcrm" data-tab-trigger="rcrm_tab_daemon_collector" class="retail-menu__btn retail-menu__btn_big retail-menu__btn_inactive"><span>{l s='Daemon Collector' mod='retailcrm'}<span/></a>
|
||||
|
Loading…
x
Reference in New Issue
Block a user