Поло Арт Обновлен 4 года назад в категории CMS Общий функционал 7
Идентификатором языка является двухсимвольное обозначение языка. Например: en,de,ru. Идентификатор языка получается с помощью метода RS::Language::getCurrentLang. Метод возвращает текущий язык системы по следующему правилу:
Если это административная зона:
попытка использовать язык, установленный в cookie
попытка использовать язык браузера
возвращается базовый язык
Если это клиентская часть:
попытка использовать язык, установленный в cookie
попытка использовать язык текущего сайта
возвращается базовый язык
if (\RS\Router\Manager::obj()->isAdminZone()) {
//Если это административная панель
$sysLangs = self::getSystemLanguages();
if ($request->cookie(self::COOKIE_ADMIN_LANG, TYPE_STRING)) {
//Ищем установленный язык в cookie
$current_lang = $request->cookie(self::COOKIE_ADMIN_LANG, TYPE_STRING);
} else {
//Ищем предпочтительный язык у браузера
$accept_langs = explode(',', $request->server('Accept-Language'));
if ($request->cookie(self::COOKIE_CUSTOMER_LANG, TYPE_STRING)) {
//Читаем параметр из cookie
$current_lang = $request->cookie(self::COOKIE_CUSTOMER_LANG, TYPE_STRING);
} else {
$site = \Setup::$INSTALLED ? \RS\Site\Manager::getSite() : null;
$current_lang = ($site) ? $site->language : $request->cookie(self::COOKIE_CUSTOMER_LANG, TYPE_STRING, \Setup::$DEFAULT_LANG);
}
Дмитрий Петухов Обновлен 8 лет назад в категории CMS Общий функционал 6
Денис Ефремов Обновлен 8 лет назад в категории CMS Общий функционал 0
/**
* Вычисляем характеристики, для которых нет в наличии товаров
* @param {obj} selected Массив выбранных характеристик checkEmptyOffers
*/
checkEmptyOffers = function(selected) {
// Из массива выбранного делаем объекты данных для каждой хар-ки отдельно
selected.forEach(function(el, i) {
// Исключаем выбранное значение из возможных
var t = selected.filter(function(v, idx) {
return idx != i;
});
disableOptions({ // готовим объект и передаем его метод для изменения DOM
name: el.title, // имя хар-ки по которой проходим
activeValue: el.value, // выбранное значение хар-ки
disabled: [], // сюда отфильтруются только нулевые остатки из всех siblings (ниже)
// фильтруем компл, оставим только актуальные для выбранных значений
siblings: data.options.multiOffersInfo.filter(function(v) {
// здесь ишем чтобы не совпадало с выбранной по которой проходим но совпадало с
return v.info.every(function(a) { // выбранными остальными
return (a[0] == el.title && a[1] != el.value) || t.some(function(o) {
return JSON.stringify(o) === JSON.stringify({ // объекты только так сравнивать)))
title: a[0],
value: a[1]
});
});
});
})
});
});
},
// @TODO перенести формирование disabled в метод checkEmptyOffers, тк disableOptions должен только DOM заниматься
// @TODO избавиться от промежуточного siblings.
/**
* Зачеркиваем характеристики
* @param {obj} data Массив данных
*/
disableOptions = function(d) {
var $listEl = $('[data-prop-title="' + d.name + '"]'),
$items,
getValueByName = function(name, info) { // хелпер. @TODO вынести объявление рядом с in_array()
return info.filter(function(ar) {
return ar[0] == name;
})[0][1];
};
d.disabled = d.siblings.filter(function(s) { // сюда фильтруем только остатки 0
s.title = d.name;
s.value = getValueByName(s.title, s.info);
return s.num < 1;
}); // @TODO этот фильтр в checkEmptyOffers вместо siblings
// Далее нужно получить набор $items $(jQuery(obj))
$items = getItems
// И само зачеркивание
$items.removeClass('empty');
d.disabled.forEach(function(val) {
$items.each(function(i, el) {
var _this = $(this);
if (_this.text().trim() == val.value) {
_this.addClass('empty');
}
});
});
},
Андрей Левченко Обновлен 4 года назад в категории CMS Общий функционал 0
Сергей Токарев Обновлен 6 лет назад в категории CMS Общий функционал 0
Андрей Викторов Обновлен 3 года назад в категории CMS Общий функционал 3
Ольга Филатова Обновлен 4 года назад в категории CMS Общий функционал 0
Сергей Токарев Обновлен 6 лет назад в категории CMS Общий функционал 1
Александр Малкин Обновлен 4 года назад в категории CMS Общий функционал 0
Дмитрий Петухов Обновлен 8 лет назад в категории CMS Общий функционал 1