mirror of
https://github.com/retailcrm/prestashop-module.git
synced 2025-03-02 19:33: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();
|
return $this->getApiStatuses();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getApiDeliveryTypes()
|
public function getApiDeliveryTypes()
|
||||||
{
|
{
|
||||||
$crmDeliveryTypes = array();
|
$crmDeliveryTypes = array();
|
||||||
$request = $this->api->deliveryTypesList();
|
$request = $this->api->deliveryTypesList();
|
||||||
@ -281,7 +281,7 @@ class RetailcrmReferences
|
|||||||
return $crmDeliveryTypes;
|
return $crmDeliveryTypes;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getApiStatuses()
|
public function getApiStatuses()
|
||||||
{
|
{
|
||||||
$crmStatusTypes = array();
|
$crmStatusTypes = array();
|
||||||
$request = $this->api->statusesList();
|
$request = $this->api->statusesList();
|
||||||
@ -315,7 +315,7 @@ class RetailcrmReferences
|
|||||||
return $crmStatusTypes;
|
return $crmStatusTypes;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getApiPaymentTypes()
|
public function getApiPaymentTypes()
|
||||||
{
|
{
|
||||||
$crmPaymentTypes = array();
|
$crmPaymentTypes = array();
|
||||||
$request = $this->api->paymentTypesList();
|
$request = $this->api->paymentTypesList();
|
||||||
|
@ -83,6 +83,7 @@ class RetailcrmSettingsTemplate extends RetailcrmAbstractTemplate
|
|||||||
$params['currentJob'] = Configuration::get(RetailcrmJobManager::CURRENT_TASK);
|
$params['currentJob'] = Configuration::get(RetailcrmJobManager::CURRENT_TASK);
|
||||||
$params['currentJobCli'] = Configuration::get(RetailcrmCli::CURRENT_TASK_CLI);
|
$params['currentJobCli'] = Configuration::get(RetailcrmCli::CURRENT_TASK_CLI);
|
||||||
$params['retailcrmLogsInfo'] = RetailcrmLogger::getLogFilesInfo();
|
$params['retailcrmLogsInfo'] = RetailcrmLogger::getLogFilesInfo();
|
||||||
|
$params['errorTabs'] = $this->module->validateStoredSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
return $params;
|
return $params;
|
||||||
|
@ -86,6 +86,14 @@ class RetailCRM extends Module
|
|||||||
'RetailcrmClearLogsEvent' => 'Clearing logs'
|
'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
|
* @var array $templateErrors
|
||||||
*/
|
*/
|
||||||
@ -1086,6 +1094,56 @@ class RetailCRM extends Module
|
|||||||
return true;
|
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
|
* 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;
|
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_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_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_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_d5bb7c2cb1565fb1568924b01847b330'] = 'Tras 15 minutos';
|
||||||
$_MODULE['<{retailcrm}prestashop>retailcrm_9d3095e54f694bb41ef4a3e62ed90e7a'] = 'Tras 30 minutos';
|
$_MODULE['<{retailcrm}prestashop>retailcrm_9d3095e54f694bb41ef4a3e62ed90e7a'] = 'Tras 30 minutos';
|
||||||
$_MODULE['<{retailcrm}prestashop>retailcrm_dfb403fd86851c7d9f97706dff5a2327'] = 'Tras 45 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_39e90036af004a005ccbccbe9a9c19c2'] = 'Статусы заказов не должны повторяться в матрице соответствий статусов';
|
||||||
$_MODULE['<{retailcrm}prestashop>retailcrm_a52213fa61ecf700d1a6091d9769c9a8'] = 'Типы доставок не должны повторяться в матрице соответствий типов доставок';
|
$_MODULE['<{retailcrm}prestashop>retailcrm_a52213fa61ecf700d1a6091d9769c9a8'] = 'Типы доставок не должны повторяться в матрице соответствий типов доставок';
|
||||||
$_MODULE['<{retailcrm}prestashop>retailcrm_f08acd4b354f4d5f4e531ca1972e4504'] = 'Способы оплат не должны повторяться в матрице соответствий способов оплат';
|
$_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_d5bb7c2cb1565fb1568924b01847b330'] = 'Через 15 минут';
|
||||||
$_MODULE['<{retailcrm}prestashop>retailcrm_9d3095e54f694bb41ef4a3e62ed90e7a'] = 'Через 30 минут';
|
$_MODULE['<{retailcrm}prestashop>retailcrm_9d3095e54f694bb41ef4a3e62ed90e7a'] = 'Через 30 минут';
|
||||||
$_MODULE['<{retailcrm}prestashop>retailcrm_dfb403fd86851c7d9f97706dff5a2327'] = 'Через 45 минут';
|
$_MODULE['<{retailcrm}prestashop>retailcrm_dfb403fd86851c7d9f97706dff5a2327'] = 'Через 45 минут';
|
||||||
|
@ -1,8 +1,11 @@
|
|||||||
@import "fonts.less";
|
@import "fonts.less";
|
||||||
|
|
||||||
@red: #0068FF;
|
@red: #ff553b;
|
||||||
@redHover: #005add;
|
@redHover: #da4932;
|
||||||
@redActive: darken(@redHover, 10%);
|
@redActive: darken(@redHover, 10%);
|
||||||
|
@blue: #0068FF;
|
||||||
|
@blueHover: #005add;
|
||||||
|
@blueActive: darken(@blueHover, 10%);
|
||||||
@gray: #7A7A7A;
|
@gray: #7A7A7A;
|
||||||
@grayBg: #EAEBEC;
|
@grayBg: #EAEBEC;
|
||||||
@grayBtn: rgba(122, 122, 122, 0.1);
|
@grayBtn: rgba(122, 122, 122, 0.1);
|
||||||
@ -146,12 +149,12 @@ body, html {
|
|||||||
margin-bottom: 22px;
|
margin-bottom: 22px;
|
||||||
|
|
||||||
&_link {
|
&_link {
|
||||||
color: @red;
|
color: @blue;
|
||||||
transition: .25s ease;
|
transition: .25s ease;
|
||||||
float: right;
|
float: right;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color: @redHover;
|
color: @blueHover;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -273,7 +276,7 @@ body, html {
|
|||||||
right: 0;
|
right: 0;
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
background: @red;
|
background: @blue;
|
||||||
transition: .25s ease;
|
transition: .25s ease;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -372,14 +375,14 @@ body, html {
|
|||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
}
|
}
|
||||||
&__link {
|
&__link {
|
||||||
color: @red;
|
color: @blue;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
line-height: 24px;
|
line-height: 24px;
|
||||||
transition: .25s ease;
|
transition: .25s ease;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color: @redHover;
|
color: @blueHover;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -488,6 +491,18 @@ body, html {
|
|||||||
}
|
}
|
||||||
|
|
||||||
&_active {
|
&_active {
|
||||||
|
color: white !important;
|
||||||
|
background: @blue !important;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: @blueHover !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.retail-menu__btn_error {
|
||||||
|
background: @redHover !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&_error {
|
||||||
color: white !important;
|
color: white !important;
|
||||||
background: @red !important;
|
background: @red !important;
|
||||||
|
|
||||||
@ -520,7 +535,7 @@ body, html {
|
|||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
color: @red;
|
color: @blue;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
appearance: none;
|
appearance: none;
|
||||||
@ -540,15 +555,15 @@ body, html {
|
|||||||
min-width: 356px;
|
min-width: 356px;
|
||||||
}
|
}
|
||||||
&_invert {
|
&_invert {
|
||||||
background: @red;
|
background: @blue;
|
||||||
color: white;
|
color: white;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background: @redHover;
|
background: @blueHover;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:active {
|
&:active {
|
||||||
background: @redActive;
|
background: @blueActive;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
&_whatsapp {
|
&_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">
|
<aside class="retail-column__aside">
|
||||||
<div class="retail-menu">
|
<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_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_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 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_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 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_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 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_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_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_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>
|
<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