Удаление помойки из прошлого
@@ -1,86 +0,0 @@
|
||||
<?php
|
||||
class ControllerExtensionTotalLightshopsets extends Controller {
|
||||
private $error = array();
|
||||
|
||||
public function index() {
|
||||
$this->load->language('extension/total/lightshopsets');
|
||||
|
||||
$this->document->setTitle($this->language->get('heading_title'));
|
||||
|
||||
$this->load->model('setting/setting');
|
||||
|
||||
if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
|
||||
$this->model_setting_setting->editSetting('total_lightshopsets', $this->request->post);
|
||||
|
||||
$this->session->data['success'] = $this->language->get('text_success');
|
||||
|
||||
$this->response->redirect($this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=total', true));
|
||||
}
|
||||
|
||||
$data['heading_title'] = $this->language->get('heading_title');
|
||||
|
||||
$data['text_edit'] = $this->language->get('text_edit');
|
||||
$data['text_enabled'] = $this->language->get('text_enabled');
|
||||
$data['text_disabled'] = $this->language->get('text_disabled');
|
||||
|
||||
$data['entry_status'] = $this->language->get('entry_status');
|
||||
$data['entry_sort_order'] = $this->language->get('entry_sort_order');
|
||||
|
||||
$data['button_save'] = $this->language->get('button_save');
|
||||
$data['button_cancel'] = $this->language->get('button_cancel');
|
||||
|
||||
if (isset($this->error['warning'])) {
|
||||
$data['error_warning'] = $this->error['warning'];
|
||||
} else {
|
||||
$data['error_warning'] = '';
|
||||
}
|
||||
|
||||
$data['breadcrumbs'] = array();
|
||||
|
||||
$data['breadcrumbs'][] = array(
|
||||
'text' => $this->language->get('text_home'),
|
||||
'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true)
|
||||
);
|
||||
|
||||
$data['breadcrumbs'][] = array(
|
||||
'text' => $this->language->get('text_extension'),
|
||||
'href' => $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=total', true)
|
||||
);
|
||||
|
||||
$data['breadcrumbs'][] = array(
|
||||
'text' => $this->language->get('heading_title'),
|
||||
'href' => $this->url->link('extension/total/lightshopsets', 'user_token=' . $this->session->data['user_token'], true)
|
||||
);
|
||||
|
||||
$data['action'] = $this->url->link('extension/total/lightshopsets', 'user_token=' . $this->session->data['user_token'], true);
|
||||
|
||||
$data['cancel'] = $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=total', true);
|
||||
|
||||
if (isset($this->request->post['total_lightshopsets_status'])) {
|
||||
$data['total_lightshopsets_status'] = $this->request->post['total_lightshopsets_status'];
|
||||
} else {
|
||||
$data['total_lightshopsets_status'] = $this->config->get('total_lightshopsets_status');
|
||||
}
|
||||
|
||||
if (isset($this->request->post['total_lightshopsets_sort_order'])) {
|
||||
$data['total_lightshopsets_sort_order'] = $this->request->post['total_lightshopsets_sort_order'];
|
||||
} else {
|
||||
$data['total_lightshopsets_sort_order'] = $this->config->get('total_lightshopsets_sort_order');
|
||||
}
|
||||
|
||||
$data['header'] = $this->load->controller('common/header');
|
||||
$data['column_left'] = $this->load->controller('common/column_left');
|
||||
$data['footer'] = $this->load->controller('common/footer');
|
||||
|
||||
$this->response->setOutput($this->load->view('extension/total/lightshopsets', $data));
|
||||
}
|
||||
|
||||
protected function validate() {
|
||||
if (!$this->user->hasPermission('modify', 'extension/total/lightshopsets')) { var_dump($this->user->hasPermission('modify', 'extension/total/lightshopsets'));
|
||||
$this->error['warning'] = $this->language->get('error_permission');
|
||||
}
|
||||
|
||||
return !$this->error;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,396 +0,0 @@
|
||||
<?php
|
||||
// Heading
|
||||
$_['heading_title'] = 'Лайтшоп';
|
||||
|
||||
// Text
|
||||
$_['text_theme'] = 'Шаблоны';
|
||||
$_['text_extension'] = 'Шаблоны';
|
||||
$_['text_success'] = 'Настройки шаблона успешно сохранены!';
|
||||
$_['text_error_activation'] = 'Ошибка активации ключа, пожалуйста обратитесь в техническую поддержку по электронной почте support@899themes.ru';
|
||||
$_['text_edit'] = 'Настройка шаблона';
|
||||
$_['text_general'] = 'Общие';
|
||||
$_['text_product'] = 'Товары и категории';
|
||||
$_['text_image'] = 'Размеры изображений';
|
||||
$_['text_products'] = 'Товары';
|
||||
$_['text_categories'] = 'Категории';
|
||||
$_['text_tabs_shablon'] = 'Шаблон вывода';
|
||||
$_['text_tabs_links'] = 'Привязка';
|
||||
$_['text_tabs_popup'] = 'Всплывающее окно';
|
||||
$_['text_tabs_tab'] = 'Вкладка';
|
||||
$_['text_tabs_to_products'] = 'К конкретным товарам';
|
||||
$_['text_tabs_tab_to_categories'] = 'К товарам в категориях';
|
||||
$_['text_sort_order'] = 'Порядок сортировки';
|
||||
$_['text_name'] = 'Название:';
|
||||
$_['text_description'] = 'Описание:';
|
||||
$_['text_copystore'] = 'Копирование настроек для мультимагазинов';
|
||||
$_['text_copystore_success'] = 'Настройки для мультимагазинов скопированы';
|
||||
$_['text_copystore_ask'] = 'Копировать настройки основного магазина на мультимагазины?';
|
||||
$_['text_license'] = 'ЛИЦЕНЗИОННОЕ СОГЛАШЕНИЕ на использование Шаблона «Лайтшоп»
|
||||
|
||||
Настоящее Лицензионное соглашение (далее – Соглашение) заключается между «899themes» (далее – Автор) и Пользователем (любым физическим лицом, индивидуальным предпринимателем, юридическим лицом (далее – Пользователь) шаблона «Лайтшоп» (далее – Шаблон).
|
||||
Соглашение относится ко всем распространяемым версиям или модификациям Шаблона.
|
||||
Основные термины настоящего Соглашения:
|
||||
Лицензионный ключ – набор символов, представляющий собой техническое средство защиты авторских прав и предназначенный для активации.
|
||||
Активация – действие, направленное на регистрацию шаблона на конкретного Пользователя по средствам ввода Лицензионного ключа на странице настроек Шаблона, согласно технической документации.
|
||||
|
||||
1. ПРЕДМЕТ СОГЛАШЕНИЯ
|
||||
1.1. В порядке и на условиях, предусмотренных настоящим Соглашением, Автор предоставляет Пользователю право использования Шаблона, реализуемое путем установки (инсталляции) и запуска Пользователем Шаблона в соответствии с его технической документацией, условиями настоящего Соглашения.
|
||||
1.2. Все положения Соглашения распространяются как на Шаблон в целом, так и на его отдельные компоненты.
|
||||
1.3. Соглашение вступает в силу непосредственно в момент получения Пользователем копии Шаблона посредством электронных средств передачи данных либо на физических носителях.
|
||||
|
||||
2. УСЛОВИЯ ИСПОЛЬЗОВАНИЯ ШАБЛОНА И ТЕХНИЧЕСКАЯ ПОДДЕРЖКА
|
||||
2.1. Соглашение дает Пользователю право использовать одну копию Шаблона после Активации в рамках одного сайта (интернет-магазина), который работает в пределах одного доменного имени.
|
||||
2.2. Если при использовании Шаблона будут обнаружены ошибки, Автор обязуется исправить их и выпустить обновленную версию Шаблона. Стороны соглашаются, что точное определение срока устранения ошибки и/или выпуска обновления не может быть установлено, так как Шаблон тесно взаимодействует с другими программами и дополнениями сторонних разработчиков, операционной системой и аппаратными ресурсами компьютера Пользователя, и работоспособность и время устранения проблем в полной мере не зависят только от Автора.
|
||||
2.3. Техническая поддержка оказывается в течение одного года со дня покупки копии Шаблона. Стоимость продления технической поддержки еще на один год составляет 50% от текущей стоимости копии Шаблона.
|
||||
2.4. Условия использования Шаблона в тестовых окружениях, выдача Лицензионных ключей для тестирования, а также повторная Активация Шаблона на другом доменном имени обсуждаются индивидуально, при условии активного периода технической поддержки.
|
||||
|
||||
3. АВТОРСКИЕ ПРАВА
|
||||
3.1. Шаблон является результатом интеллектуальной деятельности и объектом авторских прав, которые регулируются и защищены законодательством Российской Федерации об интеллектуальной собственности и нормами международного права.
|
||||
3.2. Шаблон содержит коммерческую тайну и иную конфиденциальную информацию, принадлежащую Автору. Любое использование Шаблона в нарушение условий настоящего Соглашения рассматривается как нарушение прав Автора и является достаточным основанием для лишения Пользователя предоставленных по настоящему Соглашению прав.
|
||||
3.3. Автор гарантирует, что обладает всеми необходимыми по настоящему Соглашению правами для предоставления их Пользователю, включая техническую документацию к Шаблону.
|
||||
3.4. Пользователь не может ни при каких условиях удалять или делать малозаметными информацию и сведения об авторских правах, указанные в Шаблоне.
|
||||
|
||||
4. ОТВЕТСТВЕННОСТЬ СТОРОН
|
||||
4.1. Автор не несет ответственность за какие-либо убытки и/или ущерб (в том числе, убытки в связи недополученной коммерческой выгодой, прерыванием коммерческой и производственной деятельности, утратой данных), возникающие в связи с использованием или невозможностью использования Шаблона, даже если Автор был уведомлен о возможном возникновении таких убытков и/или ущерба.
|
||||
4.2. Шаблон поставляется на условиях «как есть» без предоставления гарантий производительности, покупательной способности, сохранности данных, а также иных явно выраженных или предполагаемых гарантий. Автор не несёт какой-либо ответственности за причинение или возможность причинения вреда Пользователю, его информации или его бизнесу вследствие использования или невозможности использования Шаблона.
|
||||
4.3. Автор не несёт ответственность, связанную с привлечением Пользователя или третьих лиц к административной или уголовной ответственности за использование Шаблона в противозаконных целях (включая, но не ограничиваясь, продажей через Интернет магазин объектов, изъятых из оборота или добытых преступным путём, предназначенных для разжигания межрасовой или межнациональной вражды и т.д.).
|
||||
|
||||
5. ДЕЙСТВИЕ, ИЗМЕНЕНИЕ И РАСТОРЖЕНИЕ СОГЛАШЕНИЯ
|
||||
5.1. В случае нарушения Пользователем условий настоящего Соглашения по использованию шаблона, Автор имеет право в одностороннем порядке расторгнуть настоящее Соглашение, уведомив об этом Пользователя.
|
||||
5.2. При расторжении настоящего Соглашения Пользователь обязан прекратить использование Шаблона полностью и уничтожить все копии Шаблона, установленные на компьютерах Пользователь, включая резервные копии и все компоненты Шаблона.
|
||||
5.3. Пользователь не имеет права продавать, распространять или использовать Шаблон без согласия Автора.
|
||||
5.4. Пользователь имеет право модифицировать Шаблон по своему усмотрению. При этом последующее использование Шаблона должно осуществляться в соответствии с данным Соглашением и при условии сохранения всех авторских прав.
|
||||
5.5. Автор оставляет за собой право в любое время изменять условия Соглашения без предварительного уведомления.
|
||||
5.6. Получение экземпляра Шаблона, его использование и/или хранение автоматически означает:
|
||||
- осведомленность Пользователя о содержании Соглашения;
|
||||
- принятие его положений;
|
||||
- выполнение условий данного Соглашения.
|
||||
|
||||
Официальный сайт Автора: 899themes.ru';
|
||||
|
||||
$_['text_yes'] = 'Да';
|
||||
$_['text_no'] = 'Отмена';
|
||||
$_['text_no_0'] = 'Нет';
|
||||
$_['text_on'] = 'Вкл.';
|
||||
$_['text_off'] = 'Откл.';
|
||||
$_['text_delete'] = 'Удалить';
|
||||
$_['text_add'] = 'Добавить';
|
||||
$_['text_menu'] = 'МЕНЮ';
|
||||
$_['text_not_chosen'] = '--- Не выбрано ---';
|
||||
$_['text_manufacturers'] = 'Производители';
|
||||
|
||||
$_['text_tab_general'] = 'Общие';
|
||||
$_['text_tab_header'] = 'Верх сайта';
|
||||
$_['text_tab_home'] = 'Контент';
|
||||
$_['text_tab_footer'] = 'Низ сайта';
|
||||
$_['text_tab_widgets'] = 'Виджеты';
|
||||
$_['text_tab_info'] = 'О шаблоне';
|
||||
$_['text_tab_href'] = 'Ссылка';
|
||||
$_['text_tab_att'] = 'Атрибут';
|
||||
$_['text_tab_left_config'] = 'Настройка';
|
||||
$_['text_tab_left_image'] = 'Размеры картинок';
|
||||
$_['text_tab_left_color'] = 'Цветовая схема';
|
||||
$_['text_tab_left_css_js'] = 'Для разработчиков';
|
||||
$_['text_tab_left_header_all'] = 'Основные настройки';
|
||||
$_['text_tab_left_header_nav'] = 'Верхнее мега-меню';
|
||||
$_['text_tab_left_header_menu'] = 'Главное мега-меню';
|
||||
$_['text_tab_left_catalog'] = 'Каталог';
|
||||
$_['text_tab_left_product'] = 'Карточка товара';
|
||||
$_['text_tab_left_news'] = 'Страница новостей';
|
||||
$_['text_tab_left_contact'] = 'Контакты';
|
||||
$_['text_tab_left_checkout_reg'] = 'Заказ и регистрация';
|
||||
$_['text_tab_left_blog'] = 'Блог';
|
||||
$_['text_tab_left_footer_logo'] = 'Логотип и тексты';
|
||||
$_['text_tab_left_footer_menu'] = 'Нижнее мега-меню';
|
||||
$_['text_tab_left_404'] = 'Страница 404';
|
||||
$_['text_tab_left_col'] = 'Название колонки';
|
||||
$_['text_tab_left_callback'] = 'Заказ звонка';
|
||||
$_['text_tab_left_newsletter'] = 'Подписка на новости';
|
||||
$_['text_tab_left_links'] = 'Дополнительные ссылки';
|
||||
$_['text_tab_left_soc'] = 'Соц. сети';
|
||||
$_['text_tab_left_soc_share'] = 'Кнопки соц. сетей (share)';
|
||||
$_['text_tab_left_stiker'] = 'Стикеры';
|
||||
$_['text_tab_left_buy_click'] = 'Быстрый заказ';
|
||||
$_['text_tab_left_scrolltotop'] = 'Кнопка наверх';
|
||||
$_['text_tab_left_pdata'] = 'Персональные данные';
|
||||
$_['text_tab_left_analytics'] = 'Настройка Аналитики';
|
||||
$_['text_tab_left_messengers'] = 'Мессенджеры';
|
||||
|
||||
|
||||
$_['text_theme_lightshop_phone_1'] = 'Номер телефона 1';
|
||||
$_['text_theme_lightshop_phone_2'] = 'Номер телефона 2';
|
||||
$_['text_theme_lightshop_schema'] = 'Разметка Schema.org';
|
||||
$_['text_theme_lightshop_schema_tt'] = 'Schema.org — это стандарт семантической разметки данных в сети, объявленный поисковыми системами Google, Bing и Yahoo! летом 2011 года. Цель семантической разметки – сделать интернет более понятным, структурированным и облегчить поисковым системам и специальным программам извлечение и обработку информации для удобного её представления в результатах поиска.';
|
||||
$_['text_theme_lightshop_og'] = 'Разметка Open Graph';
|
||||
$_['text_theme_lightshop_og_tt'] = 'Стандарт Open Graph разработан социальной сетью Facebook. Он позволяет контролировать превью, которое формируется при публикации ссылки на сайт в социальных сетях, и передавать информацию другим интернет-сервисам. Разметку Open Graph используют Facebook, Вконтакте, Google+, Twitter, LinkedIn, Pinterest и другие сервисы.';
|
||||
$_['text_theme_lightshop_preloader'] = 'Индикатор загрузки';
|
||||
$_['text_theme_lightshop_preloader_tt'] = 'Индикатор загрузки контента сайта, рекомендуется использовать если вывод .css и .js кода в положении - Внизу сайта';
|
||||
$_['text_theme_lightshop_container_width'] = 'Ширина сайта';
|
||||
$_['text_theme_lightshop_container_width_tt'] = 'Максимальная ширина сайта в ПК версии, фиксированное значение или автоматическое в процентнах.';
|
||||
$_['text_theme_lightshop_container_width_0'] = '1200px (по умолчанию)';
|
||||
$_['text_theme_lightshop_container_width_fix'] = 'Фиксированная';
|
||||
$_['text_theme_lightshop_container_width_auto'] = 'Автоматическая';
|
||||
$_['text_theme_lightshop_google_site_verification'] = 'Мета-тег google-site-verification';
|
||||
$_['text_theme_lightshop_yandex_verification'] = 'Мета-тег yandex-verification';
|
||||
$_['text_image_resize'] = 'Ресайз изображений можно изменить стандартный opencart или Лайтшоп. При выборе опции Лайтшоп ресайз, изображения обрезаются по высоте и автоматически в пропорции по ширине.';
|
||||
$_['text_image_lightshop_resize'] = 'Лайтшоп ресайз';
|
||||
$_['text_theme_lightshop_image_main_rec'] = 'Подменю категории (Ш x В)';
|
||||
$_['text_theme_lightshop_image_product_detail'] = 'Окно быстрого просмотра (Ш x В)';
|
||||
$_['text_lightshop_image_blog_cat_width'] = 'Категория блога (Ш x В)';
|
||||
$_['text_lightshop_image_blog_item'] = 'Статья блога (Ш x В)';
|
||||
$_['text_lightshop_image_blog_related'] = 'Рекомендуемые статьи блога (Ш x В)';
|
||||
$_['text_lightshop_image_manufacturer'] = 'Страница производители (Ш x В)';
|
||||
$_['text_pane_color'] = 'Основные цвета';
|
||||
$_['text_pane_color_0'] = 'По умолчанию';
|
||||
$_['text_pane_color_1'] = 'Схема';
|
||||
$_['text_pane_color_2'] = 'Произвольная схема';
|
||||
$_['text_pane_color_3'] = 'Верх и низ сайта';
|
||||
$_['text_pane_left_css_js_1'] = 'Пользовательские скрипты';
|
||||
$_['text_pane_left_css_js_2'] = 'Основные скрипты';
|
||||
$_['text_pane_left_css_js_3'] = 'Дополнительные компоненты';
|
||||
$_['text_theme_lightshop_lazyload'] = '<span class="tooltip-custom" title="Дополнение lazyLoad для ajax подгрузки изображений товаров при скролле.">lazyLoad</span>';
|
||||
$_['text_theme_lightshop_js_footorhead'] = 'Вывод js скриптов';
|
||||
$_['text_theme_lightshop_js_footorhead_tt'] = 'Вывод js скриптов. Для совместимости со сторонними дополнениями, рекомендуется положение - Вверху сайта';
|
||||
$_['text_theme_lightshop_js_footorhead_1'] = 'Вверху сайта';
|
||||
$_['text_theme_lightshop_js_footorhead_2'] = 'Внизу сайта';
|
||||
$_['text_theme_lightshop_fontawesome'] = 'Иконки fontawesome';
|
||||
$_['text_theme_lightshop_fontawesome_tt'] = 'Включите, если стороннее дополенение использует иконки <a href=\'https://fontawesome.com/icons?d=gallery&m=free\' target=\'_blank\'>fontawesome</a>';
|
||||
$_['text_theme_lightshop_bootstrap'] = 'bootstrap компоненты';
|
||||
$_['text_theme_lightshop_bootstrap_tt'] = 'Включите, если стороннее дополенение использует <a href=\'https://getbootstrap.com/docs/3.3/javascript/\' target=\'_blank\'>bootstrap компоненты: modals, tooltip, tabs, dropdown</a>';
|
||||
$_['text_theme_lightshop_header_type'] = 'Тип шапки';
|
||||
$_['text_theme_lightshop_header_type_1'] = 'Только главное меню';
|
||||
$_['text_theme_lightshop_header_type_2'] = 'Верхнее и главное меню, стиль 1';
|
||||
$_['text_theme_lightshop_header_type_3'] = 'Верхнее и главное меню, стиль 2';
|
||||
$_['text_theme_lightshop_header_type3_logo'] = 'Положение логотипа';
|
||||
$_['text_theme_lightshop_header_type3_logo_0'] = 'По центру';
|
||||
$_['text_theme_lightshop_header_type3_logo_1'] = 'Слева';
|
||||
$_['text_theme_lightshop_header_type3_logo_2'] = 'Справа';
|
||||
$_['text_theme_lightshop_header_type3_menu'] = 'Пункты в главном меню';
|
||||
$_['text_theme_lightshop_fixed_header'] = 'Фикс. меню';
|
||||
$_['text_theme_lightshop_fixed_header_tt'] = 'Фиксировать меню вверху сайта при скролле';
|
||||
$_['text_theme_lightshop_header_text_logo'] = 'Текстовый логотип или svg код';
|
||||
$_['text_theme_lightshop_header_logo'] = 'Логотип';
|
||||
$_['text_table_header_navs_0'] = 'Тип';
|
||||
$_['text_table_header_navs_1'] = 'Пункт меню';
|
||||
$_['text_table_header_navs_2'] = 'Порядок сортировки';
|
||||
$_['text_table_header_navs_name'] = 'Название подменю';
|
||||
$_['text_table_header_navs_href'] = 'Ссылка(http://)';
|
||||
$_['text_table_header_navs_href_0'] = 'Ссылки';
|
||||
$_['text_theme_lightshop_max_subcat'] = 'Ограничение категорий';
|
||||
$_['text_theme_lightshop_max_subcat_tt'] = 'Ограничить категории 3го уровня';
|
||||
$_['text_table_header_navs_1_tt'] = 'Для главных родительских категорий необходимо включить параметр «Главное меню» в настройках категории';
|
||||
$_['text_table_main_nav'] = 'Категории (по умолчанию все)';
|
||||
$_['text_table_main_add'] = 'Дополнительный элемент подменю';
|
||||
$_['text_table_main_add_0'] = 'Главная категория';
|
||||
$_['text_table_main_add_1'] = 'Правый элемент подменю 1';
|
||||
$_['text_theme_lightshop_main_rec'] = 'Можно использовать html';
|
||||
$_['text_theme_lightshop_main_rec_0'] = 'html контент';
|
||||
$_['text_theme_lightshop_product_detail'] = 'Быстрый просмотр';
|
||||
$_['text_theme_lightshop_product_detail_1'] = 'Вкл. (при клике на название/изображение товара)';
|
||||
$_['text_theme_lightshop_product_detail_2'] = 'Вкл. (при клике на кнопку быстрого просмотра)';
|
||||
$_['text_theme_lightshop_cart_call'] = 'В корзину';
|
||||
$_['text_theme_lightshop_cart_call_tt'] = 'Действие после добавления товара в корзину';
|
||||
$_['text_theme_lightshop_cart_call_0'] = 'Показывать подсказку вверху сайта';
|
||||
$_['text_theme_lightshop_cart_call_1'] = 'Открывать корзину';
|
||||
$_['text_theme_lightshop_category_background'] = 'Фон в каталоге';
|
||||
$_['text_theme_lightshop_category_background_tt'] = 'Отображать фоновое изображение в каталоге товаров';
|
||||
$_['text_theme_lightshop_category_categories'] = 'Категории в каталоге';
|
||||
$_['text_theme_lightshop_category_categories_tt'] = 'Варианты отображения плиток категорий в каталоге';
|
||||
$_['text_theme_lightshop_category_categories_0'] = 'Не отображать';
|
||||
$_['text_theme_lightshop_category_categories_4'] = 'По 3 в ряд';
|
||||
$_['text_theme_lightshop_category_categories_3'] = 'По 4 в ряд';
|
||||
$_['text_theme_lightshop_category_categories_2'] = 'По 6 в ряд';
|
||||
$_['text_theme_lightshop_category_sorts'] = 'Сортировка';
|
||||
$_['text_theme_lightshop_category_sorts_tt'] = 'Отображать варианты сортировки товаров';
|
||||
$_['text_theme_lightshop_category_limits'] = 'Лимиты';
|
||||
$_['text_theme_lightshop_category_limits_tt'] = 'Отображать лимиты вывода товаров в каталог';
|
||||
$_['text_theme_lightshop_pс_view'] = 'Вид каталога (ПК)';
|
||||
$_['text_theme_lightshop_pс_view_tt'] = 'Вид каталога товаров по умолчанию в ПК версии сайта, данный параметр на витрине сайта сохраняется в файлах cookies';
|
||||
$_['text_theme_lightshop_pс_view_3'] = 'Плитка по 3 товара в ряд';
|
||||
$_['text_theme_lightshop_pс_view_4'] = 'Плитка по 4 товара в ряд';
|
||||
$_['text_theme_lightshop_pс_view_5'] = 'Плитка по 5 товаров в ряд';
|
||||
$_['text_theme_lightshop_pс_view_list'] = 'Лист';
|
||||
$_['text_theme_lightshop_pс_view_table'] = 'Таблица';
|
||||
$_['text_theme_lightshop_mobile_view'] = 'Вид каталога (моб.)';
|
||||
$_['text_theme_lightshop_mobile_view_tt'] = 'Вид каталога товаров по умолчанию в мобильной версии сайта, данный параметр на витрине сайта сохраняется в файлах cookies';
|
||||
$_['text_theme_lightshop_mobile_view_main'] = 'Плитка';
|
||||
$_['text_theme_lightshop_catalog_type_tt'] = 'Вариант отображения плитки в каталоге товаров';
|
||||
$_['text_theme_lightshop_wishlist'] = '<span data-toggle="tooltip" title="Отключает обзательную регистрацию при добавлении товаров с список избранных">Избранные без регистрации</span>';
|
||||
$_['text_theme_lightshop_subcategory'] = '<span data-toggle="tooltip" title="Вывод в категории товаров из подкатегорий">Вывод в категории товаров из подкатегорий</span>';
|
||||
$_['text_theme_lightshop_product_short_descr'] = '<span data-toggle="tooltip" title="" data-original-title="Чтобы использовать краткое описание в карточках товаров, отделите текст описания Enter-ом в редактировании товара">Краткое описание</span>';
|
||||
$_['text_theme_lightshop_product_short_tag'] = '<span data-toggle="tooltip" title="" data-original-title="Текст до данного разделителя будет перенесен в верхнюю часть картчки товара (под названием), остальной текст в останется в нижней части (в табе)">Разделитель краткого описания</span>';
|
||||
$_['text_theme_lightshop_product_opt_select'] = '<span data-toggle="tooltip" title="" data-original-title="Вариант отображения опций">Опции</span>';
|
||||
$_['text_theme_lightshop_product_opt_select_0'] = 'в 2 столбца (по умолчанию)';
|
||||
$_['text_theme_lightshop_product_opt_select_'] = 'в 1 столбец';
|
||||
$_['text_theme_lightshop_product_att_select'] = '<span data-toggle="tooltip" title="" data-original-title="Вариант отображения атрибутов (характеристик)">Атрибуты</span>';
|
||||
$_['text_theme_lightshop_product_zoom'] = '<span data-toggle="tooltip" title="" data-original-title="Эффект увеличения изображения товара">Увеличение изображения</span>';
|
||||
$_['text_theme_lightshop_product_zoom_0'] = 'Fancy box (по умолчанию)';
|
||||
$_['text_theme_lightshop_product_zoom_1'] = 'Cloud zoom';
|
||||
$_['text_theme_lightshop_product_cod'] = '<span data-toggle="tooltip" title="" data-original-title="Поле, в карточках товара, отображаемое на витрине магазина">Код товара</span>';
|
||||
$_['text_theme_lightshop_product_cod_0'] = 'model (по умолчанию)';
|
||||
$_['text_theme_lightshop_p_related_view'] = '<span data-toggle="tooltip" title="" data-original-title="Шаблон вывода рекомендуемых товаров">Рекомендуемые товары</span>';
|
||||
$_['text_theme_lightshop_p_related_view_0'] = 'Слайдер (по умолчанию)';
|
||||
$_['text_theme_lightshop_p_related_view_3'] = 'Сетка по 3 товара в строке';
|
||||
$_['text_theme_lightshop_p_related_view_4'] = 'Сетка по 4 товара в строке';
|
||||
$_['text_theme_lightshop_p_related_view_5'] = 'Сетка по 5 товаров в строке';
|
||||
$_['text_theme_lightshop_product_review'] = '<span data-toggle="tooltip" title="" data-original-title="Включить индексацию отзывов, т.е. отзывы о товарах будут в коде страницы товара, по умолчанию, отзывы в cms opencart выводятся скриптом через ajax.">Индексируемые отзывы</span>';
|
||||
$_['text_theme_lightshop_tag'] = 'тег';
|
||||
$_['text_theme_lightshop_metatag'] = 'Метатег';
|
||||
$_['text_theme_lightshop_contact_map'] = '<span data-toggle="tooltip" title="Используемая карта">Используемая карта</span>';
|
||||
$_['text_theme_lightshop_contact_map_0'] = 'Без карты';
|
||||
$_['text_theme_lightshop_contact_map_1'] = 'Google карты';
|
||||
$_['text_theme_lightshop_contact_map_2'] = 'Яндекс карты';
|
||||
$_['text_theme_lightshop_contact_zoom'] = 'Масштаб карты';
|
||||
$_['text_theme_lightshop_contact_zoom_control'] = '<span data-toggle="tooltip" title="" data-original-title="Показывать в углу карты кнопки +/- для увеличения/уменьшения масштаба карты">Кнопки увеличения</span>';
|
||||
$_['text_theme_lightshop_contact_api_key'] = 'API ключ';
|
||||
$_['text_theme_lightshop_contact_api_key_i'] = 'Для получения ключа API Google Maps перейдите по ссылке <a href="https://developers.google.com/maps/documentation/geocoding/get-api-key?hl=ru" target="_blank">https://developers.google.com/maps/documentation/geocoding/get-api-key?hl=ru</a>';
|
||||
$_['text_theme_lightshop_checkout_st4_title'] = '<span data-toggle="tooltip" title="" data-original-title="Показывать заголовки способов оплаты и достаки">Заголовки</span>';
|
||||
$_['text_theme_lightshop_checkout_st4_col'] = '<span data-toggle="tooltip" title="" data-original-title="Вид отображения способов оплаты и достаки">Вид отображения</span>';
|
||||
$_['text_theme_lightshop_checkout_st4_col_0'] = 'В 1 колонку';
|
||||
$_['text_theme_lightshop_checkout_st4_col_1'] = 'В 2 колонки';
|
||||
$_['text_theme_lightshop_checkout_st3_sa'] = '<span data-toggle="tooltip" title="" data-original-title="Выбор адреса доставки, отличного от платежного адреса">Адрес доставки</span>';
|
||||
$_['text_theme_lightshop_checkout_shipping'] = '<span data-toggle="tooltip" title="" data-original-title="Видимость способов доставки, если в товаре отключена доставка">Видимость доставки</span>';
|
||||
$_['text_theme_lightshop_checkout_shipping_0'] = 'Скрыть (По умолчанию)';
|
||||
$_['text_theme_lightshop_checkout_shipping_1'] = 'Показывать';
|
||||
$_['text_theme_lightshop_che_legend'] = 'Поле';
|
||||
$_['text_theme_lightshop_che_name'] = 'Название';
|
||||
$_['text_theme_lightshop_che_customer_group'] = 'Группа покупателей';
|
||||
$_['text_theme_lightshop_che_required'] = 'Обязательно';
|
||||
$_['text_theme_lightshop_che_i'] = 'Для добавления дополнительного поля откройте раздел <a href="%s" target="_blank">Покупатели > Произвольные поля</a>';
|
||||
$_['text_theme_lightshop_che_st2_firstname'] = 'Если значение не задано, используется по умолчанию - Имя';
|
||||
$_['text_theme_lightshop_che_st2_lastname'] = 'Если значение не задано, используется по умолчанию - Фамилия';
|
||||
$_['text_theme_lightshop_che_st2_email'] = 'Если значение не задано, используется по умолчанию - E-mail';
|
||||
$_['text_theme_lightshop_che_st2_telephone'] = 'Если значение не задано, используется по умолчанию - Телефон';
|
||||
$_['text_theme_lightshop_che_st2_fax'] = 'Если значение не задано, используется по умолчанию - Факс';
|
||||
$_['text_theme_lightshop_che_st2_company'] = 'Если значение не задано, используется по умолчанию - Компания';
|
||||
$_['text_theme_lightshop_che_st2_address_1'] = 'Если значение не задано, используется по умолчанию - Адрес';
|
||||
$_['text_theme_lightshop_che_st2_address_2'] = 'Если значение не задано, используется по умолчанию - Адрес (дополнительно)';
|
||||
$_['text_theme_lightshop_che_st2_city'] = 'Если значение не задано, используется по умолчанию - Город';
|
||||
$_['text_theme_lightshop_che_st2_postcode'] = 'Если значение не задано, используется по умолчанию - Индекс';
|
||||
$_['text_theme_lightshop_che_st2_country_id'] = 'Если значение не задано, используется по умолчанию - Страна';
|
||||
$_['text_theme_lightshop_che_st2_zone_id'] = 'Если значение не задано, используется по умолчанию - Регион / Область';
|
||||
$_['text_theme_lightshop_blog_legend'] = 'Общая страница блога';
|
||||
$_['text_theme_lightshop_blog_legend_0'] = 'Запись блога';
|
||||
$_['text_theme_lightshop_blog_path'] = '<span data-toggle="tooltip" title="URL блога с категорией">URL блога с категорией</span>';
|
||||
$_['text_theme_lightshop_blog_background'] = '<span data-toggle="tooltip" title="Отображать фоновое изображение в записи блога">Фон в записи</span>';
|
||||
$_['text_theme_lightshop_blog_rev_st'] = 'Разрешить отзывы';
|
||||
$_['text_theme_lightshop_blog_rev_guest'] = '<span data-toggle="tooltip" title="Разрешить гостям оставлять отзывы. В противном случае, оставлять отзывы смогут только зарегистрированные покупатели!">Отзывы от гостей</span>';
|
||||
$_['text_theme_lightshop_blog_rev_moder'] = '<span data-toggle="tooltip" title="Публиковать отзывы без модерации.">Отзывы без модерации</span>';
|
||||
$_['text_theme_lightshop_captcha'] = '<span data-toggle="tooltip" title="Использовать выбранную Captcha-службу">Captcha</span>';
|
||||
$_['text_theme_lightshop_logo_404'] = '<span data-toggle="tooltip" title="По умолчанию на странице 404 используется стандартное изображение.">Изображение</span>';
|
||||
$_['text_theme_lightshop_footer_type'] = 'Тип футера';
|
||||
$_['text_theme_lightshop_footer_soc_stat'] = 'Соц. сети';
|
||||
$_['text_theme_lightshop_footer_text_logo'] = 'Текстовый логотип или svg код';
|
||||
$_['text_theme_lightshop_footer_logo'] = 'Логотип внизу сайта';
|
||||
$_['text_theme_lightshop_footer_text'] = 'Тектовый блок';
|
||||
$_['text_theme_lightshop_footer_copyright'] = 'Копирайт';
|
||||
$_['text_theme_lightshop_subscribe_email_alert'] = 'Оповещение e-mail администратору';
|
||||
$_['text_theme_lightshop_subscribe_title'] = '<span data-toggle="tooltip" title="Текст заголовка внизу сайта">Заголовок</span>';
|
||||
$_['text_theme_lightshop_subscribe_subtitle'] = '<span data-toggle="tooltip" title="Текст подзаголовка внизу сайта">Подзаголовок</span>';
|
||||
$_['text_theme_lightshop_vidg_extlinks_i'] = 'Дополнительные ссылки могут быть добавлены: Верх сайта > Верхнее мега-меню, Верх сайта > Главное мега-меню, Низ сайта > Нижнее мега-меню.';
|
||||
$_['text_theme_lightshop_social_nav'] = 'Соц. сеть';
|
||||
$_['text_theme_lightshop_soc_share_prod'] = 'Показывать на страницах товаров';
|
||||
$_['text_theme_lightshop_soc_share_blog'] = 'Показывать на страницах блога';
|
||||
$_['text_theme_lightshop_soc_share_code'] = '<span data-toggle="tooltip" title="" data-original-title="Если поле пустое, используется код кнопок www.addthis.com">Код share кнопок</span>';
|
||||
$_['text_theme_lightshop_soc_share_code_0'] = 'Код share кнопок';
|
||||
$_['text_theme_lightshop_label_legend'] = 'СТИКЕР НОВИНКА';
|
||||
$_['text_theme_lightshop_label_legend_0'] = 'СТИКЕР СКИДКА';
|
||||
$_['text_theme_lightshop_label_legend_1'] = 'СТИКЕР ХИТ ПРОДАЖ';
|
||||
$_['text_theme_lightshop_label_legend_2'] = 'СТИКЕР ПОПУЛЯРНЫЙ ТОВАР';
|
||||
$_['text_theme_lightshop_label_legend_3'] = 'СТИКЕР УСПЕЙ КУПИТЬ';
|
||||
$_['text_theme_lightshop_label_new_periods'] = '<span data-toggle="tooltip" title="" data-original-title="Период активности после добавления товара">Активен</span>';
|
||||
$_['text_theme_lightshop_label_legend_0_i'] = 'Отображается у товаров где добавлена цена по акции (есть перечеркнутая цена).';
|
||||
$_['text_theme_lightshop_label_sale_extra'] = 'Дополнительный элемент';
|
||||
$_['text_theme_lightshop_label_legend_1_i'] = '<span data-toggle="tooltip" title="" data-original-title="Количество продаж товара для отображения стикера, учитываются только заказы с завершенным статусом.">Продаж</span>';
|
||||
$_['text_theme_lightshop_label_hit_period'] = 'За период';
|
||||
$_['text_theme_lightshop_label_hit_qty'] = 'Продаж';
|
||||
$_['text_theme_lightshop_label_legend_2_i'] = '<span data-toggle="tooltip" title="" data-original-title="Общее количество просмотров товара больше заданного значения для отображения стикера.">Просмотров</span>';
|
||||
$_['text_theme_lightshop_label_catch_qty'] = '<span data-toggle="tooltip" title="" data-original-title="Общее количество единиц товара равное или меньше заданного значения для отображения стикера.">Количество</span>';
|
||||
$_['text_theme_lightshop_label_catch'] = '<span data-toggle="tooltip" title="" data-original-title="Дополнительное название для стикера, когда количество товара меньше или равно нулю.">Дополнительное название</span>';
|
||||
$_['text_theme_lightshop_order_status_id'] = '<span data-toggle="tooltip" title="Статус заказа по умолчанию.">Статус заказа</span>';
|
||||
$_['text_theme_lightshop_label_popular_views'] = 'Просмотров';
|
||||
$_['text_theme_lightshop_buy_click_i'] = 'Настройки для функционала "Купить в один клик" (в карточке товара, каталоге и быстром просмотре) и "Быстрый заказ" (в стандартной и всплывающей корзине)';
|
||||
$_['text_theme_lightshop_scrolltt_pos'] = 'Позиция';
|
||||
$_['text_theme_lightshop_pdata_i'] = 'Перед выбором текст нужно добавить в раздел';
|
||||
$_['text_theme_lightshop_pdata_i_0'] = 'Каталог > Статьи';
|
||||
$_['text_theme_lightshop_callback_pdata'] = '<span data-toggle="tooltip" title="Текст согласия на обработку персональных данных в окне заказть звонок">Заказ звонка</span>';
|
||||
$_['text_theme_lightshop_subscribe_pdata'] = '<span data-toggle="tooltip" title="Текст согласия на обработку персональных данных в форме подписки внизу сайта">Форма подписки</span>';
|
||||
$_['text_theme_lightshop_buy_click_pdata'] = '<span data-toggle="tooltip" title="Текст согласия на обработку персональных данных в форме быстрого заказа">Быстрый заказ</span>';
|
||||
$_['text_theme_lightshop_contact_pdata'] = '<span data-toggle="tooltip" title="Текст согласия на обработку персональных данных на странице контактов">Контакты</span>';
|
||||
$_['text_theme_lightshop_voucher_pdata'] = '<span data-toggle="tooltip" title="Текст согласия на обработку персональных данных на странице подарочных сертификатов">Сертификат</span>';
|
||||
$_['text_theme_lightshop_review_pdata'] = '<span data-toggle="tooltip" title="Текст согласия на обработку персональных данных в форме отзыва на товар">Отзывы о товарах</span>';
|
||||
$_['text_theme_lightshop_blog_pdata'] = '<span data-toggle="tooltip" title="Текст согласия на обработку персональных данных на странице статей блога">Статьи блога</span>';
|
||||
$_['text_theme_lightshop_cookies_pdata'] = '<span data-toggle="tooltip" title="Текст согласия на обработку персональных данных для файлов cookies, отображается подсказка внизу сайта для неавторизованных клиентов, время жизни cookie 1 год.">Файлы cookies</span>';
|
||||
$_['text_theme_lightshop_ecommerce'] = 'Электронная коммерция';
|
||||
$_['text_theme_lightshop_analytics_i'] = 'Код счетчиков можно добавить в ';
|
||||
$_['text_theme_lightshop_analytics_i_0'] = 'соответствующем разделе панели управления ';
|
||||
$_['text_theme_lightshop_analytics_ya_status'] = '<span data-toggle="tooltip" title="Включить электронную коммерцию Яндекс">Коммерция Яндекс</span>';
|
||||
$_['text_theme_lightshop_analytics_goole_status'] = '<span data-toggle="tooltip" title="Включить электронную коммерцию Google, если вы уже настроили отправку данных в электронную коммерцию Google, Яндекс.Метрика также начнет собирать данные (Включите опцию «Отправка в Метрику данных электронной коммерции» на странице настроек счетчика в Яндекс.Метрике)">Коммерция Google</span>';
|
||||
$_['text_theme_lightshop_ecommerce_event'] = 'Общие метки событий';
|
||||
$_['text_theme_lightshop_ecommerce_event_i'] = 'Настройка целей для Яндекс.Метрики описана в <a href="https://yandex.ru/support/metrika/general/goal-js-event.html#js-event" target="_blank">разделе</a>, используется идентификатор JavaScript-события из списка ниже. Настройка целей для Google Аналитики описана в <a href="https://support.google.com/analytics/answer/1032415?hl=ru" target="_blank">разделе</a>, используется «Вариант 2. Собственные цели» > Тип: Событие > Действие > Равно > Значение из списка ниже.';
|
||||
$_['text_lightshop_callback'] = '<span data-toggle="tooltip" title="Обратный звонок (отправка формы)">Обратный звонок, форма</span>';
|
||||
$_['text_lightshop_addtocart_catalog'] = '<span data-toggle="tooltip" title="Товар добавлен в корзину (из списка товаров)">Товар добавлен в корзину, список</span>';
|
||||
$_['text_lightshop_addtocart_product'] = '<span data-toggle="tooltip" title="Товар добавлен в корзину (из страницы товара)">Товар добавлен в корзину, страница</span>';
|
||||
$_['text_lightshop_buyclick'] = '<span data-toggle="tooltip" title="Купить в 1 клик (открытие формы из карточки товара и быстрого просмотра)">Купить в 1 клик, форма</span>';
|
||||
$_['text_lightshop_buyclick_success'] = '<span data-toggle="tooltip" title="Купить в 1 клик (страница checkout/success)">Купить в 1 клик, success</span>';
|
||||
$_['text_lightshop_checkout_success'] = '<span data-toggle="tooltip" title="Стандартный заказ (завершение оформления, страница checkout/success)">Стандартный заказ, success</span>';
|
||||
$_['text_lightshop_settocart'] = '<span data-toggle="tooltip" title="Набор добавлен в корзину">Набор добавлен в корзину</span>';
|
||||
$_['text_lightshop_subscribe'] = '<span data-toggle="tooltip" title="Подписался на новости (отправка формы)">Подписался на новости, форма</span>';
|
||||
$_['text_lightshop_contact'] = '<span data-toggle="tooltip" title="Форма обратной связи на странице контактов (отправка формы)">Форма обратной связи</span>';
|
||||
$_['text_theme_lightshop_messenger_td'] = 'Мессенджер';
|
||||
$_['text_theme_lightshop_messenger_td_0'] = '<span data-toggle="tooltip" title="Номер телефона в международном формате (только цифры, без пробелов), имя страницы или id">Идентификатор</span>';
|
||||
$_['text_version'] = 'Версия';
|
||||
$_['text_new_version'] = 'Доступна новая версия';
|
||||
$_['text_support'] = 'Техническая поддержка';
|
||||
$_['text_support_0'] = 'Для продления технической поддержки напишите пожалуйста нам на почту';
|
||||
$_['text_support_1'] = 'Отправить запрос в службу поддержки:';
|
||||
$_['text_899themes'] = 'Разработчик';
|
||||
$_['text_license_0'] = 'Лицензионное соглашение';
|
||||
$_['text_theme_lightshop_news_limit'] = 'Сколько новостей показывать на одной странице';
|
||||
$_['text_theme_lightshop_blog_limit'] = 'Сколько записей блога показывать на одной странице';
|
||||
$_['text_theme_lightshop_title'] = 'Заголовок';
|
||||
$_['text_theme_lightshop_subtitle'] = 'Подзаголовок';
|
||||
$_['text_theme_lightshop_qty'] = 'Количество';
|
||||
$_['text_theme_lightshop_category_products'] = '<span data-toggle="tooltip" title="Вывод товаров в каталоге с наличием меньше или равно нулю">Товары с нулевым остатком</span>';
|
||||
$_['text_theme_lightshop_category_products_0'] = 'По умолчанию';
|
||||
$_['text_theme_lightshop_category_products_1'] = 'Выводить в конце каталога';
|
||||
|
||||
// Entry
|
||||
$_['entry_directory'] = 'Папка шаблона';
|
||||
$_['entry_status'] = 'Статус';
|
||||
$_['entry_product_limit'] = 'На странице';
|
||||
$_['entry_product_description_length'] = 'Краткое описание';
|
||||
$_['entry_image_category'] = 'Категории (Ш x В)';
|
||||
$_['entry_image_thumb'] = 'Миниатюры (Ш x В)';
|
||||
$_['entry_image_popup'] = 'Всплывающие (Ш x В)';
|
||||
$_['entry_image_product'] = 'Товара (Ш x В)';
|
||||
$_['entry_image_additional'] = 'Дополнительные (Ш x В)';
|
||||
$_['entry_image_related'] = 'Рекомендуемые (Ш x В)';
|
||||
$_['entry_image_compare'] = 'В сравнении (Ш x В)';
|
||||
$_['entry_image_wishlist'] = 'Закладки (Ш x В)';
|
||||
$_['entry_image_cart'] = 'В корзине (Ш x В)';
|
||||
$_['entry_image_location'] = 'Изображение магазина (Ш x В)';
|
||||
$_['entry_width'] = 'Ширина';
|
||||
$_['entry_height'] = 'Высота';
|
||||
|
||||
// Help
|
||||
$_['help_directory'] = 'Это поле только для выбора старых шаблонов, что бы сделать их совместимыми с новым движком Opencart.';
|
||||
$_['help_product_limit'] = 'Сколько элементов показывать на одной странице (товары, категории, и т.п.)';
|
||||
$_['help_product_description_length'] = 'Сколько знаков показывать из описания товара в режиме список.';
|
||||
$_['help_product_tabs_main'] = 'Вкладка выводится в карточке товара после отзывов, всплывающее окно перед опциями в карточке товара и в быстром просмотре.';
|
||||
$_['help_product_tabs_select'] = 'Если товары не выбраны то вкладка показывается во всех товарах.';
|
||||
$_['help_product_tabs_cat_select'] = 'Если категории не выбраны то вкладка показывается во всех товарах.';
|
||||
|
||||
// Error
|
||||
$_['error_permission'] = 'У вас не достаточно прав!';
|
||||
$_['error_limit'] = 'Укажите количество символов в кратком описании товара для режима список!';
|
||||
$_['error_image_thumb'] = 'Укажите размер миниатюр!';
|
||||
$_['error_image_popup'] = 'Укажите размер всплывающих изображений товара!';
|
||||
$_['error_image_product'] = 'Укажите размер изображения для товаров!';
|
||||
$_['error_image_category'] = 'Укажите размер изображения для категорий!';
|
||||
$_['error_image_additional'] = 'Укажите размер дополнительных изображений товара!';
|
||||
$_['error_image_related'] = 'Укажите размер изображений для рекомендуемых (похожих) товаров!';
|
||||
$_['error_image_compare'] = 'Укажите размер изображений товара для списка сравнений!';
|
||||
$_['error_image_wishlist'] = 'Укажите размер изображений товара для закладок!';
|
||||
$_['error_image_cart'] = 'Укажите размер изображений товара для корзины!';
|
||||
$_['error_image_location'] = 'Укажите размер изображений магазина!';
|
||||
@@ -1,17 +0,0 @@
|
||||
<?php
|
||||
$_['account/account'] = 'Аккаунт';
|
||||
$_['information/sitemap'] = 'Карта сайта';
|
||||
$_['information/contact'] = 'Контакты';
|
||||
$_['affiliate/login'] = 'Партнерская программа';
|
||||
$_['product/search'] = 'Поиск';
|
||||
$_['product/manufacturer'] = 'Производители';
|
||||
$_['product/compare'] = 'Сравнение';
|
||||
$_['account/wishlist'] = 'Избранное';
|
||||
$_['checkout/cart'] = 'Корзина';
|
||||
$_['checkout/checkout'] = 'Оформление заказа';
|
||||
$_['account/return/add'] = 'Возвраты';
|
||||
$_['account/voucher'] = 'Подарочные сертификаты';
|
||||
$_['product/special'] = 'Акции';
|
||||
$_['extension/module/lightshop_news/getnewslist'] = 'Новости';
|
||||
$_['extension/module/lightshopcat_blog/getcat&lbpath=0'] = 'Блог';
|
||||
$_['extension/module/lightshopcat_blog/getcatbloglist'] = 'Блог.Категории';
|
||||
@@ -1,15 +0,0 @@
|
||||
<?php
|
||||
// Heading
|
||||
$_['heading_title'] = 'Скидка на наборы. Lightshop';
|
||||
|
||||
// Text
|
||||
$_['text_extension'] = 'Общая сумма заказа';
|
||||
$_['text_success'] = 'Настройки модуля обновлены!';
|
||||
$_['text_edit'] = 'Редактирование модуля';
|
||||
|
||||
// Entry
|
||||
$_['entry_status'] = 'Статус:';
|
||||
$_['entry_sort_order'] = 'Порядок сортировки:';
|
||||
|
||||
// Error
|
||||
$_['error_permission'] = 'У вас нет прав для управления подарочными сертификатами!';
|
||||
@@ -1,805 +0,0 @@
|
||||
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
|
||||
x0==
|
||||
@@ -1,413 +0,0 @@
|
||||
<?php
|
||||
class ModelExtensionThemeLightshopBlog extends Model {
|
||||
public function addBlog($data) {
|
||||
if($data['date_added']){
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_blog SET sort_order = 0, bottom = '" . (isset($data['bottom']) ? (int)$data['bottom'] : 0) . "', status = '" . (int)$data['status'] . "', date_added = '" . $this->db->escape($data['date_added']) . "'");
|
||||
}else{
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_blog SET sort_order = 0, bottom = '" . (isset($data['bottom']) ? (int)$data['bottom'] : 0) . "', status = '" . (int)$data['status'] . "', date_added = NOW()");
|
||||
}
|
||||
$blog_id = $this->db->getLastId();
|
||||
|
||||
if (isset($data['image'])) {
|
||||
$this->db->query("UPDATE " . DB_PREFIX . "lightshop_blog SET image = '" . $this->db->escape($data['image']) . "' WHERE blog_id = '" . (int)$blog_id . "'");
|
||||
}
|
||||
|
||||
foreach ($data['blog_description'] as $language_id => $value) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_blog_description SET blog_id = '" . (int)$blog_id . "', language_id = '" . (int)$language_id . "', title = '" . $this->db->escape($value['title']) . "', description = '" . $this->db->escape($value['description']) . "', meta_title = '" . $this->db->escape($value['meta_title']) . "', meta_h1 = '" . $this->db->escape($value['meta_h1']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "'");
|
||||
if($value['tag']){
|
||||
foreach (explode(',',$value['tag']) as $tag) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_blog_tag SET blog_id = '" . (int)$blog_id . "', language_id = '" . (int)$language_id . "', tag = '" . $this->db->escape(trim($tag)) . "'");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($data['blog_store'])) {
|
||||
foreach ($data['blog_store'] as $store_id) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_blog_to_store SET blog_id = '" . (int)$blog_id . "', store_id = '" . (int)$store_id . "'");
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($data['blog_related'])) {
|
||||
foreach ($data['blog_related'] as $related_id) {
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_blog_related WHERE blog_id = '" . (int)$blog_id . "' AND related_id = '" . (int)$related_id . "'");
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_blog_related SET blog_id = '" . (int)$blog_id . "', related_id = '" . (int)$related_id . "'");
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($data['product_related'])) {
|
||||
foreach ($data['product_related'] as $related_id) {
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_blog_related_prod WHERE blog_id = '" . (int)$blog_id . "' AND related_id = '" . (int)$related_id . "'");
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_blog_related_prod SET blog_id = '" . (int)$blog_id . "', related_id = '" . (int)$related_id . "'");
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($data['blog_layout'])) {
|
||||
foreach ($data['blog_layout'] as $store_id => $layout_id) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_blog_to_layout SET blog_id = '" . (int)$blog_id . "', store_id = '" . (int)$store_id . "', layout_id = '" . (int)$layout_id . "'");
|
||||
}
|
||||
}
|
||||
|
||||
// SEO URL
|
||||
if (isset($data['blog_seo_url'])) {
|
||||
foreach ($data['blog_seo_url'] as $store_id => $language) {
|
||||
foreach ($language as $language_id => $keyword) {
|
||||
if (!empty($keyword)) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "seo_url SET store_id = '" . (int)$store_id . "', language_id = '" . (int)$language_id . "', query = 'blog_id=" . (int)$blog_id . "', keyword = '" . $this->db->escape($keyword) . "'");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($data['main_category_id']) && $data['main_category_id'] > 0) {
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_blog_to_category WHERE blog_id = '" . (int)$blog_id . "' AND category_id = '" . (int)$data['main_category_id'] . "'");
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_blog_to_category SET blog_id = '" . (int)$blog_id . "', category_id = '" . (int)$data['main_category_id'] . "', main_category = 1");
|
||||
}
|
||||
|
||||
$this->cache->delete('blog');
|
||||
|
||||
return $blog_id;
|
||||
}
|
||||
|
||||
public function editBlog($blog_id, $data) {
|
||||
$this->db->query("UPDATE " . DB_PREFIX . "lightshop_blog SET sort_order = 0, bottom = '" . (isset($data['bottom']) ? (int)$data['bottom'] : 0) . "', status = '" . (int)$data['status'] . "', date_added = '" . $this->db->escape($data['date_added']) . "' WHERE blog_id = '" . (int)$blog_id . "'");
|
||||
|
||||
if (isset($data['image'])) {
|
||||
$this->db->query("UPDATE " . DB_PREFIX . "lightshop_blog SET image = '" . $this->db->escape($data['image']) . "' WHERE blog_id = '" . (int)$blog_id . "'");
|
||||
}
|
||||
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_blog_description WHERE blog_id = '" . (int)$blog_id . "'");
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_blog_tag WHERE blog_id = '" . (int)$blog_id . "'");
|
||||
|
||||
foreach ($data['blog_description'] as $language_id => $value) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_blog_description SET blog_id = '" . (int)$blog_id . "', language_id = '" . (int)$language_id . "', title = '" . $this->db->escape($value['title']) . "', description = '" . $this->db->escape($value['description']) . "', meta_title = '" . $this->db->escape($value['meta_title']) . "', meta_h1 = '" . $this->db->escape($value['meta_h1']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "'");
|
||||
if($value['tag']){
|
||||
foreach (explode(',',$value['tag']) as $tag) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_blog_tag SET blog_id = '" . (int)$blog_id . "', language_id = '" . (int)$language_id . "', tag = '" . $this->db->escape(trim($tag)) . "'");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_blog_to_store WHERE blog_id = '" . (int)$blog_id . "'");
|
||||
|
||||
if (isset($data['blog_store'])) {
|
||||
foreach ($data['blog_store'] as $store_id) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_blog_to_store SET blog_id = '" . (int)$blog_id . "', store_id = '" . (int)$store_id . "'");
|
||||
}
|
||||
}
|
||||
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_blog_to_layout WHERE blog_id = '" . (int)$blog_id . "'");
|
||||
|
||||
if (isset($data['blog_layout'])) {
|
||||
foreach ($data['blog_layout'] as $store_id => $layout_id) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_blog_to_layout SET blog_id = '" . (int)$blog_id . "', store_id = '" . (int)$store_id . "', layout_id = '" . (int)$layout_id . "'");
|
||||
}
|
||||
}
|
||||
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_blog_related WHERE blog_id = '" . (int)$blog_id . "'");
|
||||
|
||||
|
||||
if (isset($data['blog_related'])) {
|
||||
foreach ($data['blog_related'] as $related_id) {
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_blog_related WHERE blog_id = '" . (int)$blog_id . "' AND related_id = '" . (int)$related_id . "'");
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_blog_related SET blog_id = '" . (int)$blog_id . "', related_id = '" . (int)$related_id . "'");
|
||||
}
|
||||
}
|
||||
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_blog_related_prod WHERE blog_id = '" . (int)$blog_id . "'");
|
||||
|
||||
if (isset($data['product_related'])) {
|
||||
foreach ($data['product_related'] as $related_id) {
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_blog_related_prod WHERE blog_id = '" . (int)$blog_id . "' AND related_id = '" . (int)$related_id . "'");
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_blog_related_prod SET blog_id = '" . (int)$blog_id . "', related_id = '" . (int)$related_id . "'");
|
||||
}
|
||||
}
|
||||
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "seo_url WHERE query = 'blog_id=" . (int)$blog_id . "'");
|
||||
|
||||
// SEO URL
|
||||
if (isset($data['blog_seo_url'])) {
|
||||
foreach ($data['blog_seo_url'] as $store_id => $language) {
|
||||
foreach ($language as $language_id => $keyword) {
|
||||
if (!empty($keyword)) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "seo_url SET store_id = '" . (int)$store_id . "', language_id = '" . (int)$language_id . "', query = 'blog_id=" . (int)$blog_id . "', keyword = '" . $this->db->escape($keyword) . "'");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_blog_to_category WHERE blog_id = '" . (int)$blog_id . "'");
|
||||
|
||||
if(isset($data['main_category_id']) && $data['main_category_id'] > 0) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_blog_to_category SET blog_id = '" . (int)$blog_id . "', category_id = '" . (int)$data['main_category_id'] . "', main_category = 1");
|
||||
}
|
||||
|
||||
$this->cache->delete('blog');
|
||||
}
|
||||
|
||||
public function deleteBlog($blog_id) {
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_blog WHERE blog_id = '" . (int)$blog_id . "'");
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_blog_description WHERE blog_id = '" . (int)$blog_id . "'");
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_blog_to_store WHERE blog_id = '" . (int)$blog_id . "'");
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_blog_to_category WHERE blog_id = '" . (int)$blog_id . "'");
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_blog_to_layout WHERE blog_id = '" . (int)$blog_id . "'");
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "seo_url WHERE query = 'blog_id=" . (int)$blog_id . "'");
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_blog_related WHERE blog_id = '" . (int)$blog_id . "'");
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_blog_tag WHERE blog_id = '" . (int)$blog_id . "'");
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_blog_related WHERE related_id = '" . (int)$blog_id . "'");
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_blog_related_prod WHERE blog_id = '" . (int)$blog_id . "'");
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_blog_comment WHERE blog_id = '" . (int)$blog_id . "'");
|
||||
|
||||
$this->cache->delete('blog');
|
||||
}
|
||||
|
||||
public function getBlog($blog_id) {
|
||||
$query = $this->db->query("SELECT DISTINCT *, (SELECT keyword FROM " . DB_PREFIX . "seo_url WHERE query = 'blog_id=" . (int)$blog_id . "' LIMIT 1) AS keyword FROM " . DB_PREFIX . "lightshop_blog i LEFT JOIN " . DB_PREFIX . "lightshop_blog_description id ON (i.blog_id = id.blog_id) WHERE i.blog_id = '" . (int)$blog_id . "'");
|
||||
|
||||
return $query->row;
|
||||
}
|
||||
|
||||
public function getBlogTag($blog_id) {
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshop_blog_tag WHERE blog_id = '" . (int)$blog_id . "'");
|
||||
|
||||
return $query->rows;
|
||||
}
|
||||
|
||||
public function getBlogSeoUrls($blog_id) {
|
||||
$blog_seo_url_data = array();
|
||||
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE query = 'blog_id=" . (int)$blog_id . "'");
|
||||
|
||||
foreach ($query->rows as $result) {
|
||||
$blog_seo_url_data[$result['store_id']][$result['language_id']] = $result['keyword'];
|
||||
}
|
||||
|
||||
return $blog_seo_url_data;
|
||||
}
|
||||
|
||||
public function getBlogs($data = array()) {
|
||||
|
||||
$this->createTable();
|
||||
|
||||
if ($data) {
|
||||
$sql = "SELECT * FROM " . DB_PREFIX . "lightshop_blog i LEFT JOIN " . DB_PREFIX . "lightshop_blog_description id ON (i.blog_id = id.blog_id) WHERE id.language_id = '" . (int)$this->config->get('config_language_id') . "'";
|
||||
|
||||
if (!empty($data['filter_name'])) {
|
||||
$sql .= " AND id.title LIKE '" . $this->db->escape($data['filter_name']) . "%'";
|
||||
}
|
||||
|
||||
$sort_data = array(
|
||||
'id.title',
|
||||
'i.sort_order',
|
||||
'i.date_added'
|
||||
);
|
||||
|
||||
if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
|
||||
$sql .= " ORDER BY " . $data['sort'];
|
||||
} else {
|
||||
$sql .= " ORDER BY i.date_added";
|
||||
}
|
||||
|
||||
if (isset($data['order']) && ($data['order'] == 'DESC')) {
|
||||
$sql .= " DESC";
|
||||
} else {
|
||||
$sql .= " ASC";
|
||||
}
|
||||
|
||||
if (isset($data['start']) || isset($data['limit'])) {
|
||||
if ($data['start'] < 0) {
|
||||
$data['start'] = 0;
|
||||
}
|
||||
|
||||
if ($data['limit'] < 1) {
|
||||
$data['limit'] = 20;
|
||||
}
|
||||
|
||||
$sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
|
||||
}
|
||||
|
||||
$query = $this->db->query($sql);
|
||||
|
||||
return $query->rows;
|
||||
} else {
|
||||
$blog_data = $this->cache->get('blog.' . (int)$this->config->get('config_language_id'));
|
||||
|
||||
if (!$blog_data) {
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshop_blog i LEFT JOIN " . DB_PREFIX . "lightshop_blog_description id ON (i.blog_id = id.blog_id) WHERE id.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY id.title");
|
||||
|
||||
$blog_data = $query->rows;
|
||||
|
||||
$this->cache->set('blog.' . (int)$this->config->get('config_language_id'), $blog_data);
|
||||
}
|
||||
|
||||
return $blog_data;
|
||||
}
|
||||
}
|
||||
|
||||
public function getBlogDescriptions($blog_id) {
|
||||
$blog_description_data = array();
|
||||
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshop_blog_description WHERE blog_id = '" . (int)$blog_id . "'");
|
||||
|
||||
foreach ($query->rows as $result) {
|
||||
|
||||
$tag = '';
|
||||
$temp = array();
|
||||
$query1 = $this->db->query("SELECT tag FROM " . DB_PREFIX . "lightshop_blog_tag WHERE blog_id = '" . (int)$blog_id . "' AND language_id = '" . (int)$result['language_id'] . "'");
|
||||
|
||||
if($query1->num_rows){
|
||||
foreach ($query1->rows as $value) {
|
||||
$temp[] = $value['tag'];
|
||||
}
|
||||
$tag = implode(',', $temp);
|
||||
}
|
||||
|
||||
$blog_description_data[$result['language_id']] = array(
|
||||
'title' => $result['title'],
|
||||
'description' => $result['description'],
|
||||
'meta_title' => $result['meta_title'],
|
||||
'meta_h1' => $result['meta_h1'],
|
||||
'meta_description' => $result['meta_description'],
|
||||
'meta_keyword' => $result['meta_keyword'],
|
||||
'tag' => $tag
|
||||
);
|
||||
}
|
||||
|
||||
return $blog_description_data;
|
||||
}
|
||||
|
||||
public function getBlogStores($blog_id) {
|
||||
$blog_store_data = array();
|
||||
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshop_blog_to_store WHERE blog_id = '" . (int)$blog_id . "'");
|
||||
|
||||
foreach ($query->rows as $result) {
|
||||
$blog_store_data[] = $result['store_id'];
|
||||
}
|
||||
|
||||
return $blog_store_data;
|
||||
}
|
||||
|
||||
public function getBlogLayouts($blog_id) {
|
||||
$blog_layout_data = array();
|
||||
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshop_blog_to_layout WHERE blog_id = '" . (int)$blog_id . "'");
|
||||
|
||||
foreach ($query->rows as $result) {
|
||||
$blog_layout_data[$result['store_id']] = $result['layout_id'];
|
||||
}
|
||||
|
||||
return $blog_layout_data;
|
||||
}
|
||||
|
||||
public function getTotalBlogs() {
|
||||
$query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "lightshop_blog");
|
||||
|
||||
return $query->row['total'];
|
||||
}
|
||||
|
||||
public function getTotalBlogsByLayoutId($layout_id) {
|
||||
$query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "lightshop_blog_to_layout WHERE layout_id = '" . (int)$layout_id . "'");
|
||||
|
||||
return $query->row['total'];
|
||||
}
|
||||
|
||||
public function getBlogRelated($blog_id) {
|
||||
$blog_related_data = array();
|
||||
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshop_blog_related WHERE blog_id = '" . (int)$blog_id . "'");
|
||||
|
||||
foreach ($query->rows as $result) {
|
||||
$blog_related_data[] = $result['related_id'];
|
||||
}
|
||||
|
||||
return $blog_related_data;
|
||||
}
|
||||
|
||||
public function getBlogRelatedProds($blog_id) {
|
||||
$product_related_data = array();
|
||||
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshop_blog_related_prod WHERE blog_id = '" . (int)$blog_id . "'");
|
||||
|
||||
foreach ($query->rows as $result) {
|
||||
$product_related_data[] = $result['related_id'];
|
||||
}
|
||||
|
||||
return $product_related_data;
|
||||
}
|
||||
|
||||
public function getBlogMainCategoryId($blog_id) {
|
||||
$query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "lightshop_blog_to_category WHERE blog_id = '" . (int)$blog_id . "' AND main_category = '1' LIMIT 1");
|
||||
|
||||
return ($query->num_rows ? (int)$query->row['category_id'] : 0);
|
||||
}
|
||||
|
||||
public function getCommentNewCount() {
|
||||
|
||||
$this->db->query("
|
||||
CREATE TABLE IF NOT EXISTS " . DB_PREFIX . "lightshop_blog_comment (
|
||||
`comment_id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`blog_id` int(11) NOT NULL,
|
||||
`customer_id` int(11) NOT NULL,
|
||||
`author` varchar(64) NOT NULL,
|
||||
`text` text NOT NULL,
|
||||
`rating` int(1) NOT NULL,
|
||||
`status` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`date_added` datetime NOT NULL,
|
||||
`date_modified` datetime NOT NULL,
|
||||
PRIMARY KEY (`comment_id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
");
|
||||
|
||||
$query = $this->db->query("SELECT COUNT(status) as total FROM " . DB_PREFIX . "lightshop_blog_comment WHERE status = '0'");
|
||||
|
||||
return $query->row;
|
||||
}
|
||||
|
||||
public function createTable() {
|
||||
$this->db->query("
|
||||
CREATE TABLE IF NOT EXISTS " . DB_PREFIX . "lightshop_blog (
|
||||
`blog_id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`bottom` int(1) NOT NULL DEFAULT '0',
|
||||
`sort_order` int(3) NOT NULL DEFAULT '0',
|
||||
`status` tinyint(1) NOT NULL DEFAULT '1',
|
||||
`date_added` date NOT NULL,
|
||||
PRIMARY KEY (`blog_id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
");
|
||||
$this->db->query("
|
||||
CREATE TABLE IF NOT EXISTS " . DB_PREFIX . "lightshop_blog_description (
|
||||
`blog_id` int(11) NOT NULL,
|
||||
`language_id` int(11) NOT NULL,
|
||||
`title` varchar(200) NOT NULL,
|
||||
`description` text NOT NULL,
|
||||
`meta_title` varchar(255) NOT NULL,
|
||||
`meta_h1` varchar(255) NOT NULL,
|
||||
`meta_description` varchar(255) NOT NULL,
|
||||
`meta_keyword` varchar(255) NOT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
");
|
||||
$this->db->query("
|
||||
CREATE TABLE IF NOT EXISTS " . DB_PREFIX . "lightshop_blog_to_layout (
|
||||
`blog_id` int(11) NOT NULL,
|
||||
`store_id` int(11) NOT NULL,
|
||||
`layout_id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`blog_id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
");
|
||||
$this->db->query("
|
||||
CREATE TABLE IF NOT EXISTS " . DB_PREFIX . "lightshop_blog_to_store (
|
||||
`blog_id` int(11) NOT NULL,
|
||||
`store_id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`blog_id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
");
|
||||
$this->db->query("
|
||||
CREATE TABLE IF NOT EXISTS " . DB_PREFIX . "lightshop_blog_related (
|
||||
`news_id` int(11) NOT NULL,
|
||||
`related_id` int(11) NOT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,131 +0,0 @@
|
||||
<?php
|
||||
class ModelExtensionThemeLightshopblogReview extends Model {
|
||||
public function addReview($data) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_blog_comment SET author = '" . $this->db->escape($data['author']) . "', blog_id = '" . (int)$data['blog_id'] . "', text = '" . $this->db->escape(strip_tags($data['text'])) . "', status = '" . (int)$data['status'] . "', date_added = '" . $this->db->escape($data['date_added']) . "'");
|
||||
|
||||
$comment_id = $this->db->getLastId();
|
||||
|
||||
$this->cache->delete('blog');
|
||||
|
||||
return $comment_id;
|
||||
}
|
||||
|
||||
public function editReview($comment_id, $data) {
|
||||
$this->db->query("UPDATE " . DB_PREFIX . "lightshop_blog_comment SET author = '" . $this->db->escape($data['author']) . "', blog_id = '" . (int)$data['blog_id'] . "', text = '" . $this->db->escape(strip_tags($data['text'])) . "', status = '" . (int)$data['status'] . "', date_added = '" . $this->db->escape($data['date_added']) . "', date_modified = NOW() WHERE comment_id = '" . (int)$comment_id . "'");
|
||||
|
||||
$this->cache->delete('blog');
|
||||
}
|
||||
|
||||
public function deleteReview($comment_id) {
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_blog_comment WHERE comment_id = '" . (int)$comment_id . "'");
|
||||
|
||||
$this->cache->delete('blog');
|
||||
}
|
||||
|
||||
public function getReview($comment_id) {
|
||||
$query = $this->db->query("SELECT DISTINCT *, (SELECT pd.title FROM " . DB_PREFIX . "lightshop_blog_description pd WHERE pd.blog_id = r.blog_id AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS blog FROM " . DB_PREFIX . "lightshop_blog_comment r WHERE r.comment_id = '" . (int)$comment_id . "'");
|
||||
|
||||
return $query->row;
|
||||
}
|
||||
|
||||
public function getReviews($data = array()) {
|
||||
$sql = "SELECT r.comment_id, pd.title, r.author, r.status, r.date_added FROM " . DB_PREFIX . "lightshop_blog_comment r LEFT JOIN " . DB_PREFIX . "lightshop_blog_description pd ON (r.blog_id = pd.blog_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "'";
|
||||
|
||||
if (!empty($data['filter_blog'])) {
|
||||
$sql .= " AND pd.title LIKE '" . $this->db->escape($data['filter_blog']) . "%'";
|
||||
}
|
||||
|
||||
if (!empty($data['filter_author'])) {
|
||||
$sql .= " AND r.author LIKE '" . $this->db->escape($data['filter_author']) . "%'";
|
||||
}
|
||||
|
||||
if (isset($data['filter_status']) && !is_null($data['filter_status'])) {
|
||||
$sql .= " AND r.status = '" . (int)$data['filter_status'] . "'";
|
||||
}
|
||||
|
||||
if (!empty($data['filter_date_added'])) {
|
||||
$sql .= " AND DATE(r.date_added) = DATE('" . $this->db->escape($data['filter_date_added']) . "')";
|
||||
}
|
||||
|
||||
$sort_data = array(
|
||||
'pd.title',
|
||||
'r.author',
|
||||
'r.status',
|
||||
'r.date_added'
|
||||
);
|
||||
|
||||
if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
|
||||
$sql .= " ORDER BY " . $data['sort'];
|
||||
} else {
|
||||
$sql .= " ORDER BY r.date_added";
|
||||
}
|
||||
|
||||
if (isset($data['order']) && ($data['order'] == 'DESC')) {
|
||||
$sql .= " DESC";
|
||||
} else {
|
||||
$sql .= " ASC";
|
||||
}
|
||||
|
||||
if (isset($data['start']) || isset($data['limit'])) {
|
||||
if ($data['start'] < 0) {
|
||||
$data['start'] = 0;
|
||||
}
|
||||
|
||||
if ($data['limit'] < 1) {
|
||||
$data['limit'] = 20;
|
||||
}
|
||||
|
||||
$sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
|
||||
}
|
||||
|
||||
$query = $this->db->query($sql);
|
||||
|
||||
return $query->rows;
|
||||
}
|
||||
|
||||
public function getTotalReviews($data = array()) {
|
||||
|
||||
$this->db->query("
|
||||
CREATE TABLE IF NOT EXISTS " . DB_PREFIX . "lightshop_blog_comment (
|
||||
`comment_id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`blog_id` int(11) NOT NULL,
|
||||
`customer_id` int(11) NOT NULL,
|
||||
`author` varchar(64) NOT NULL,
|
||||
`text` text NOT NULL,
|
||||
`rating` int(1) NOT NULL,
|
||||
`status` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`date_added` datetime NOT NULL,
|
||||
`date_modified` datetime NOT NULL,
|
||||
PRIMARY KEY (`comment_id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
");
|
||||
|
||||
$sql = "SELECT COUNT(*) AS total FROM " . DB_PREFIX . "lightshop_blog_comment r LEFT JOIN " . DB_PREFIX . "lightshop_blog_description pd ON (r.blog_id = pd.blog_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "'";
|
||||
|
||||
if (!empty($data['filter_blog'])) {
|
||||
$sql .= " AND pd.title LIKE '" . $this->db->escape($data['filter_blog']) . "%'";
|
||||
}
|
||||
|
||||
if (!empty($data['filter_author'])) {
|
||||
$sql .= " AND r.author LIKE '" . $this->db->escape($data['filter_author']) . "%'";
|
||||
}
|
||||
|
||||
if (isset($data['filter_status']) && !is_null($data['filter_status'])) {
|
||||
$sql .= " AND r.status = '" . (int)$data['filter_status'] . "'";
|
||||
}
|
||||
|
||||
if (!empty($data['filter_date_added'])) {
|
||||
$sql .= " AND DATE(r.date_added) = DATE('" . $this->db->escape($data['filter_date_added']) . "')";
|
||||
}
|
||||
|
||||
$query = $this->db->query($sql);
|
||||
|
||||
return $query->row['total'];
|
||||
}
|
||||
|
||||
public function getTotalReviewsAwaitingApproval() {
|
||||
$query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "lightshop_blog_commentWHERE status = '0'");
|
||||
|
||||
return $query->row['total'];
|
||||
}
|
||||
}
|
||||
@@ -1,365 +0,0 @@
|
||||
<?php
|
||||
class ModelExtensionThemeLightshopcatblog extends Model {
|
||||
public function addCategoryBlog($data) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshopcat_blog SET parent_id = '" . (int)$data['parent_id'] . "', `top` = '" . (isset($data['top']) ? (int)$data['top'] : 0) . "', `column` = '" . (int)$data['column'] . "', sort_order = '" . (int)$data['sort_order'] . "', status = '" . (int)$data['status'] . "', date_modified = NOW(), date_added = NOW()");
|
||||
|
||||
$category_id = $this->db->getLastId();
|
||||
|
||||
if (isset($data['image'])) {
|
||||
$this->db->query("UPDATE " . DB_PREFIX . "lightshopcat_blog SET image = '" . $this->db->escape($data['image']) . "' WHERE category_id = '" . (int)$category_id . "'");
|
||||
}
|
||||
|
||||
foreach ($data['lightshopcatblog_description'] as $language_id => $value) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshopcat_blog_description SET category_id = '" . (int)$category_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', description = '" . $this->db->escape($value['description']) . "', meta_title = '" . $this->db->escape($value['meta_title']) . "', meta_h1 = '" . $this->db->escape($value['meta_h1']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "'");
|
||||
}
|
||||
|
||||
// MySQL Hierarchical Data Closure Table Pattern
|
||||
$level = 0;
|
||||
|
||||
$query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "lightshopcat_blog_path` WHERE category_id = '" . (int)$data['parent_id'] . "' ORDER BY `level` ASC");
|
||||
|
||||
foreach ($query->rows as $result) {
|
||||
$this->db->query("INSERT INTO `" . DB_PREFIX . "lightshopcat_blog_path` SET `category_id` = '" . (int)$category_id . "', `path_id` = '" . (int)$result['path_id'] . "', `level` = '" . (int)$level . "'");
|
||||
|
||||
$level++;
|
||||
}
|
||||
|
||||
$this->db->query("INSERT INTO `" . DB_PREFIX . "lightshopcat_blog_path` SET `category_id` = '" . (int)$category_id . "', `path_id` = '" . (int)$category_id . "', `level` = '" . (int)$level . "'");
|
||||
|
||||
if (isset($data['category_filter'])) {
|
||||
foreach ($data['category_filter'] as $filter_id) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshopcat_blog_filter SET category_id = '" . (int)$category_id . "', filter_id = '" . (int)$filter_id . "'");
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($data['lightshopcatblog_store'])) {
|
||||
foreach ($data['lightshopcatblog_store'] as $store_id) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshopcat_blog_to_store SET category_id = '" . (int)$category_id . "', store_id = '" . (int)$store_id . "'");
|
||||
}
|
||||
}
|
||||
|
||||
// Set which layout to use with this category
|
||||
if (isset($data['category_layout'])) {
|
||||
foreach ($data['category_layout'] as $store_id => $layout_id) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshopcat_blog_to_layout SET category_id = '" . (int)$category_id . "', store_id = '" . (int)$store_id . "', layout_id = '" . (int)$layout_id . "'");
|
||||
}
|
||||
}
|
||||
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "seo_url WHERE query = 'lightshopcatblog_id=" . (int)$category_id . "'");
|
||||
|
||||
// SEO URL
|
||||
if (isset($data['category_seo_url'])) {
|
||||
foreach ($data['category_seo_url'] as $store_id => $language) {
|
||||
foreach ($language as $language_id => $keyword) {
|
||||
if (!empty($keyword)) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "seo_url SET store_id = '" . (int)$store_id . "', language_id = '" . (int)$language_id . "', query = 'lightshopcatblog_id=" . (int)$category_id . "', keyword = '" . $this->db->escape($keyword) . "'");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->cache->delete('category');
|
||||
|
||||
return $category_id;
|
||||
}
|
||||
|
||||
public function editCategoryBlog($category_id, $data) {
|
||||
$this->db->query("UPDATE " . DB_PREFIX . "lightshopcat_blog SET parent_id = '" . (int)$data['parent_id'] . "', `top` = '" . (isset($data['top']) ? (int)$data['top'] : 0) . "', `column` = '" . (int)$data['column'] . "', sort_order = '" . (int)$data['sort_order'] . "', status = '" . (int)$data['status'] . "', date_modified = NOW() WHERE category_id = '" . (int)$category_id . "'");
|
||||
|
||||
if (isset($data['image'])) {
|
||||
$this->db->query("UPDATE " . DB_PREFIX . "lightshopcat_blog SET image = '" . $this->db->escape($data['image']) . "' WHERE category_id = '" . (int)$category_id . "'");
|
||||
}
|
||||
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshopcat_blog_description WHERE category_id = '" . (int)$category_id . "'");
|
||||
|
||||
foreach ($data['lightshopcatblog_description'] as $language_id => $value) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshopcat_blog_description SET category_id = '" . (int)$category_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', description = '" . $this->db->escape($value['description']) . "', meta_title = '" . $this->db->escape($value['meta_title']) . "', meta_h1 = '" . $this->db->escape($value['meta_h1']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "'");
|
||||
}
|
||||
|
||||
// MySQL Hierarchical Data Closure Table Pattern
|
||||
$query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "lightshopcat_blog_path` WHERE path_id = '" . (int)$category_id . "' ORDER BY level ASC");
|
||||
|
||||
if ($query->rows) {
|
||||
foreach ($query->rows as $category_path) {
|
||||
// Delete the path below the current one
|
||||
$this->db->query("DELETE FROM `" . DB_PREFIX . "lightshopcat_blog_path` WHERE category_id = '" . (int)$category_path['category_id'] . "' AND level < '" . (int)$category_path['level'] . "'");
|
||||
|
||||
$path = array();
|
||||
|
||||
// Get the nodes new parents
|
||||
$query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "lightshopcat_blog_path` WHERE category_id = '" . (int)$data['parent_id'] . "' ORDER BY level ASC");
|
||||
|
||||
foreach ($query->rows as $result) {
|
||||
$path[] = $result['path_id'];
|
||||
}
|
||||
|
||||
// Get whats left of the nodes current path
|
||||
$query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "lightshopcat_blog_path` WHERE category_id = '" . (int)$category_path['category_id'] . "' ORDER BY level ASC");
|
||||
|
||||
foreach ($query->rows as $result) {
|
||||
$path[] = $result['path_id'];
|
||||
}
|
||||
|
||||
// Combine the paths with a new level
|
||||
$level = 0;
|
||||
|
||||
foreach ($path as $path_id) {
|
||||
$this->db->query("REPLACE INTO `" . DB_PREFIX . "lightshopcat_blog_path` SET category_id = '" . (int)$category_path['category_id'] . "', `path_id` = '" . (int)$path_id . "', level = '" . (int)$level . "'");
|
||||
|
||||
$level++;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Delete the path below the current one
|
||||
$this->db->query("DELETE FROM `" . DB_PREFIX . "lightshopcat_blog_path` WHERE category_id = '" . (int)$category_id . "'");
|
||||
|
||||
// Fix for records with no paths
|
||||
$level = 0;
|
||||
|
||||
$query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "lightshopcat_blog_path` WHERE category_id = '" . (int)$data['parent_id'] . "' ORDER BY level ASC");
|
||||
|
||||
foreach ($query->rows as $result) {
|
||||
$this->db->query("INSERT INTO `" . DB_PREFIX . "lightshopcat_blog_path` SET category_id = '" . (int)$category_id . "', `path_id` = '" . (int)$result['path_id'] . "', level = '" . (int)$level . "'");
|
||||
|
||||
$level++;
|
||||
}
|
||||
|
||||
$this->db->query("REPLACE INTO `" . DB_PREFIX . "lightshopcat_blog_path` SET category_id = '" . (int)$category_id . "', `path_id` = '" . (int)$category_id . "', level = '" . (int)$level . "'");
|
||||
}
|
||||
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshopcat_blog_filter WHERE category_id = '" . (int)$category_id . "'");
|
||||
|
||||
if (isset($data['category_filter'])) {
|
||||
foreach ($data['category_filter'] as $filter_id) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshopcat_blog_filter SET category_id = '" . (int)$category_id . "', filter_id = '" . (int)$filter_id . "'");
|
||||
}
|
||||
}
|
||||
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshopcat_blog_to_store WHERE category_id = '" . (int)$category_id . "'");
|
||||
|
||||
if (isset($data['lightshopcatblog_store'])) {
|
||||
foreach ($data['lightshopcatblog_store'] as $store_id) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshopcat_blog_to_store SET category_id = '" . (int)$category_id . "', store_id = '" . (int)$store_id . "'");
|
||||
}
|
||||
}
|
||||
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshopcat_blog_to_layout WHERE category_id = '" . (int)$category_id . "'");
|
||||
|
||||
if (isset($data['category_layout'])) {
|
||||
foreach ($data['category_layout'] as $store_id => $layout_id) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshopcat_blog_to_layout SET category_id = '" . (int)$category_id . "', store_id = '" . (int)$store_id . "', layout_id = '" . (int)$layout_id . "'");
|
||||
}
|
||||
}
|
||||
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "seo_url WHERE query = 'lightshopcatblog_id=" . (int)$category_id . "'");
|
||||
|
||||
// SEO URL
|
||||
if (isset($data['category_seo_url'])) {
|
||||
foreach ($data['category_seo_url'] as $store_id => $language) {
|
||||
foreach ($language as $language_id => $keyword) {
|
||||
if (!empty($keyword)) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "seo_url SET store_id = '" . (int)$store_id . "', language_id = '" . (int)$language_id . "', query = 'lightshopcatblog_id=" . (int)$category_id . "', keyword = '" . $this->db->escape($keyword) . "'");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->cache->delete('category');
|
||||
}
|
||||
|
||||
public function deleteCategoryBlog($category_id) {
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshopcat_blog_path WHERE category_id = '" . (int)$category_id . "'");
|
||||
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshopcat_blog_path WHERE path_id = '" . (int)$category_id . "'");
|
||||
|
||||
foreach ($query->rows as $result) {
|
||||
$this->deleteCategory($result['category_id']);
|
||||
}
|
||||
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshopcat_blog WHERE category_id = '" . (int)$category_id . "'");
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshopcat_blog_description WHERE category_id = '" . (int)$category_id . "'");
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshopcat_blog_filter WHERE category_id = '" . (int)$category_id . "'");
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshopcat_blog_to_store WHERE category_id = '" . (int)$category_id . "'");
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshopcat_blog_to_layout WHERE category_id = '" . (int)$category_id . "'");
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_blog_to_category WHERE category_id = '" . (int)$category_id . "'");
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "seo_url WHERE query = 'lightshopcatblog_id=" . (int)$category_id . "'");
|
||||
|
||||
$this->cache->delete('category');
|
||||
}
|
||||
|
||||
public function repairCategoriesBlog($parent_id = 0) {
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshopcat_blog WHERE parent_id = '" . (int)$parent_id . "'");
|
||||
|
||||
foreach ($query->rows as $category) {
|
||||
// Delete the path below the current one
|
||||
$this->db->query("DELETE FROM `" . DB_PREFIX . "lightshopcat_blog_path` WHERE category_id = '" . (int)$category['category_id'] . "'");
|
||||
|
||||
// Fix for records with no paths
|
||||
$level = 0;
|
||||
|
||||
$query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "lightshopcat_blog_path` WHERE category_id = '" . (int)$parent_id . "' ORDER BY level ASC");
|
||||
|
||||
foreach ($query->rows as $result) {
|
||||
$this->db->query("INSERT INTO `" . DB_PREFIX . "lightshopcat_blog_path` SET category_id = '" . (int)$category['category_id'] . "', `path_id` = '" . (int)$result['path_id'] . "', level = '" . (int)$level . "'");
|
||||
|
||||
$level++;
|
||||
}
|
||||
|
||||
$this->db->query("REPLACE INTO `" . DB_PREFIX . "lightshopcat_blog_path` SET category_id = '" . (int)$category['category_id'] . "', `path_id` = '" . (int)$category['category_id'] . "', level = '" . (int)$level . "'");
|
||||
|
||||
$this->repairCategories($category['category_id']);
|
||||
}
|
||||
}
|
||||
|
||||
public function getCategorySeoUrls($category_id) {
|
||||
$category_seo_url_data = array();
|
||||
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE query = 'lightshopcatblog_id=" . (int)$category_id . "'");
|
||||
|
||||
foreach ($query->rows as $result) {
|
||||
$category_seo_url_data[$result['store_id']][$result['language_id']] = $result['keyword'];
|
||||
}
|
||||
|
||||
return $category_seo_url_data;
|
||||
}
|
||||
|
||||
public function getCategoryBlog($category_id) {
|
||||
$query = $this->db->query("SELECT DISTINCT *, (SELECT GROUP_CONCAT(cd1.name ORDER BY level SEPARATOR ' > ') FROM " . DB_PREFIX . "lightshopcat_blog_path cp LEFT JOIN " . DB_PREFIX . "lightshopcat_blog_description cd1 ON (cp.path_id = cd1.category_id AND cp.category_id != cp.path_id) WHERE cp.category_id = c.category_id AND cd1.language_id = '" . (int)$this->config->get('config_language_id') . "' GROUP BY cp.category_id) AS path FROM " . DB_PREFIX . "lightshopcat_blog c LEFT JOIN " . DB_PREFIX . "lightshopcat_blog_description cd2 ON (c.category_id = cd2.category_id) WHERE c.category_id = '" . (int)$category_id . "' AND cd2.language_id = '" . (int)$this->config->get('config_language_id') . "'");
|
||||
|
||||
return $query->row;
|
||||
}
|
||||
|
||||
public function getCategoriesBlogByParentId($parent_id = 0) {
|
||||
$query = $this->db->query("SELECT *, (SELECT COUNT(parent_id) FROM " . DB_PREFIX . "lightshopcat_blog WHERE parent_id = c.category_id) AS children FROM " . DB_PREFIX . "lightshopcat_blog c LEFT JOIN " . DB_PREFIX . "lightshopcat_blog_description cd ON (c.category_id = cd.category_id) WHERE c.parent_id = '" . (int)$parent_id . "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY c.sort_order, cd.name");
|
||||
|
||||
return $query->rows;
|
||||
}
|
||||
|
||||
public function getCategoriesBlog($data = array()) {
|
||||
$sql = "SELECT cp.category_id AS category_id, GROUP_CONCAT(cd1.name ORDER BY cp.level SEPARATOR ' > ') AS name, c1.parent_id, c1.sort_order, c1.status,(select count(product_id) as product_count from " . DB_PREFIX . "product_to_category pc where pc.category_id = c1.category_id) as product_count FROM " . DB_PREFIX . "lightshopcat_blog_path cp LEFT JOIN " . DB_PREFIX . "lightshopcat_blog c1 ON (cp.category_id = c1.category_id) LEFT JOIN " . DB_PREFIX . "lightshopcat_blog c2 ON (cp.path_id = c2.category_id) LEFT JOIN " . DB_PREFIX . "lightshopcat_blog_description cd1 ON (cp.path_id = cd1.category_id) LEFT JOIN " . DB_PREFIX . "lightshopcat_blog_description cd2 ON (cp.category_id = cd2.category_id) WHERE cd1.language_id = '" . (int)$this->config->get('config_language_id') . "' AND cd2.language_id = '" . (int)$this->config->get('config_language_id') . "'";
|
||||
|
||||
if (!empty($data['filter_name'])) {
|
||||
$sql .= " AND cd2.name LIKE '%" . $this->db->escape($data['filter_name']) . "%'";
|
||||
}
|
||||
|
||||
$sql .= " GROUP BY cp.category_id";
|
||||
|
||||
$sort_data = array(
|
||||
'product_count',
|
||||
'name',
|
||||
'sort_order'
|
||||
);
|
||||
|
||||
if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
|
||||
$sql .= " ORDER BY " . $data['sort'];
|
||||
} else {
|
||||
$sql .= " ORDER BY sort_order";
|
||||
}
|
||||
|
||||
if (isset($data['order']) && ($data['order'] == 'DESC')) {
|
||||
$sql .= " DESC";
|
||||
} else {
|
||||
$sql .= " ASC";
|
||||
}
|
||||
|
||||
if (isset($data['start']) || isset($data['limit'])) {
|
||||
if ($data['start'] < 0) {
|
||||
$data['start'] = 0;
|
||||
}
|
||||
|
||||
if ($data['limit'] < 1) {
|
||||
$data['limit'] = 20;
|
||||
}
|
||||
|
||||
$sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
|
||||
}
|
||||
|
||||
$query = $this->db->query($sql);
|
||||
|
||||
return $query->rows;
|
||||
}
|
||||
|
||||
public function getCategoryBlogDescriptions($category_id) {
|
||||
$category_description_data = array();
|
||||
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshopcat_blog_description WHERE category_id = '" . (int)$category_id . "'");
|
||||
|
||||
foreach ($query->rows as $result) {
|
||||
$category_description_data[$result['language_id']] = array(
|
||||
'name' => $result['name'],
|
||||
'meta_title' => $result['meta_title'],
|
||||
'meta_h1' => $result['meta_h1'],
|
||||
'meta_description' => $result['meta_description'],
|
||||
'meta_keyword' => $result['meta_keyword'],
|
||||
'description' => $result['description']
|
||||
);
|
||||
}
|
||||
|
||||
return $category_description_data;
|
||||
}
|
||||
|
||||
public function getCategoryBlogPath($category_id) {
|
||||
$query = $this->db->query("SELECT category_id, path_id, level FROM " . DB_PREFIX . "lightshopcat_blog_path WHERE category_id = '" . (int)$category_id . "'");
|
||||
|
||||
return $query->rows;
|
||||
}
|
||||
|
||||
public function getCategoryBlogFilters($category_id) {
|
||||
$category_filter_data = array();
|
||||
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshopcat_blog_filter WHERE category_id = '" . (int)$category_id . "'");
|
||||
|
||||
foreach ($query->rows as $result) {
|
||||
$category_filter_data[] = $result['filter_id'];
|
||||
}
|
||||
|
||||
return $category_filter_data;
|
||||
}
|
||||
|
||||
public function getCategoryBlogStores($category_id) {
|
||||
$category_store_data = array();
|
||||
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshopcat_blog_to_store WHERE category_id = '" . (int)$category_id . "'");
|
||||
|
||||
foreach ($query->rows as $result) {
|
||||
$category_store_data[] = $result['store_id'];
|
||||
}
|
||||
|
||||
return $category_store_data;
|
||||
}
|
||||
|
||||
public function getCategoryBlogLayouts($category_id) {
|
||||
$category_layout_data = array();
|
||||
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshopcat_blog_to_layout WHERE category_id = '" . (int)$category_id . "'");
|
||||
|
||||
foreach ($query->rows as $result) {
|
||||
$category_layout_data[$result['store_id']] = $result['layout_id'];
|
||||
}
|
||||
|
||||
return $category_layout_data;
|
||||
}
|
||||
|
||||
public function getTotalCategoriesBlog() {
|
||||
$query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "lightshopcat_blog");
|
||||
|
||||
return $query->row['total'];
|
||||
}
|
||||
|
||||
public function getAllCategoriesBlog() {
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshopcat_blog c LEFT JOIN " . DB_PREFIX . "lightshopcat_blog_description cd ON (c.category_id = cd.category_id) LEFT JOIN " . DB_PREFIX . "lightshopcat_blog_to_store c2s ON (c.category_id = c2s.category_id) WHERE cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' ORDER BY c.parent_id, c.sort_order, cd.name");
|
||||
|
||||
$category_data = array();
|
||||
foreach ($query->rows as $row) {
|
||||
$category_data[$row['parent_id']][$row['category_id']] = $row;
|
||||
}
|
||||
|
||||
return $category_data;
|
||||
}
|
||||
|
||||
public function getTotalCategoriesBlogByLayoutId($layout_id) {
|
||||
$query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "lightshopcat_blog_to_layout WHERE layout_id = '" . (int)$layout_id . "'");
|
||||
|
||||
return $query->row['total'];
|
||||
}
|
||||
}
|
||||
@@ -1,298 +0,0 @@
|
||||
<?php
|
||||
class ModelExtensionThemeLightshopNews extends Model {
|
||||
public function addNews($data) {
|
||||
if($data['date_added']){
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_news SET sort_order = 0, bottom = '" . (isset($data['bottom']) ? (int)$data['bottom'] : 0) . "', status = '" . (int)$data['status'] . "', date_added = '" . $this->db->escape($data['date_added']) . "'");
|
||||
}else{
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_news SET sort_order = 0, bottom = '" . (isset($data['bottom']) ? (int)$data['bottom'] : 0) . "', status = '" . (int)$data['status'] . "', date_added = NOW()");
|
||||
}
|
||||
$news_id = $this->db->getLastId();
|
||||
|
||||
foreach ($data['news_description'] as $language_id => $value) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_news_description SET news_id = '" . (int)$news_id . "', language_id = '" . (int)$language_id . "', title = '" . $this->db->escape($value['title']) . "', description = '" . $this->db->escape($value['description']) . "', meta_title = '" . $this->db->escape($value['meta_title']) . "', meta_h1 = '" . $this->db->escape($value['meta_h1']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "'");
|
||||
}
|
||||
|
||||
if (isset($data['news_store'])) {
|
||||
foreach ($data['news_store'] as $store_id) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_news_to_store SET news_id = '" . (int)$news_id . "', store_id = '" . (int)$store_id . "'");
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($data['product_related'])) {
|
||||
foreach ($data['product_related'] as $related_id) {
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_news_related WHERE news_id = '" . (int)$news_id . "' AND related_id = '" . (int)$related_id . "'");
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_news_related SET news_id = '" . (int)$news_id . "', related_id = '" . (int)$related_id . "'");
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($data['news_layout'])) {
|
||||
foreach ($data['news_layout'] as $store_id => $layout_id) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_news_to_layout SET news_id = '" . (int)$news_id . "', store_id = '" . (int)$store_id . "', layout_id = '" . (int)$layout_id . "'");
|
||||
}
|
||||
}
|
||||
|
||||
// SEO URL
|
||||
if (isset($data['news_seo_url'])) {
|
||||
foreach ($data['news_seo_url'] as $store_id => $language) {
|
||||
foreach ($language as $language_id => $keyword) {
|
||||
if (!empty($keyword)) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "seo_url SET store_id = '" . (int)$store_id . "', language_id = '" . (int)$language_id . "', query = 'news_id=" . (int)$news_id . "', keyword = '" . $this->db->escape($keyword) . "'");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->cache->delete('news');
|
||||
|
||||
return $news_id;
|
||||
}
|
||||
|
||||
public function editNews($news_id, $data) {
|
||||
$this->db->query("UPDATE " . DB_PREFIX . "lightshop_news SET sort_order = 0, bottom = '" . (isset($data['bottom']) ? (int)$data['bottom'] : 0) . "', status = '" . (int)$data['status'] . "', date_added = '" . $this->db->escape($data['date_added']) . "' WHERE news_id = '" . (int)$news_id . "'");
|
||||
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_news_description WHERE news_id = '" . (int)$news_id . "'");
|
||||
|
||||
foreach ($data['news_description'] as $language_id => $value) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_news_description SET news_id = '" . (int)$news_id . "', language_id = '" . (int)$language_id . "', title = '" . $this->db->escape($value['title']) . "', description = '" . $this->db->escape($value['description']) . "', meta_title = '" . $this->db->escape($value['meta_title']) . "', meta_h1 = '" . $this->db->escape($value['meta_h1']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "'");
|
||||
}
|
||||
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_news_to_store WHERE news_id = '" . (int)$news_id . "'");
|
||||
|
||||
if (isset($data['news_store'])) {
|
||||
foreach ($data['news_store'] as $store_id) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_news_to_store SET news_id = '" . (int)$news_id . "', store_id = '" . (int)$store_id . "'");
|
||||
}
|
||||
}
|
||||
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_news_to_layout WHERE news_id = '" . (int)$news_id . "'");
|
||||
|
||||
if (isset($data['news_layout'])) {
|
||||
foreach ($data['news_layout'] as $store_id => $layout_id) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_news_to_layout SET news_id = '" . (int)$news_id . "', store_id = '" . (int)$store_id . "', layout_id = '" . (int)$layout_id . "'");
|
||||
}
|
||||
}
|
||||
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_news_related WHERE news_id = '" . (int)$news_id . "'");
|
||||
|
||||
|
||||
if (isset($data['product_related'])) {
|
||||
foreach ($data['product_related'] as $related_id) {
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_news_related WHERE news_id = '" . (int)$news_id . "' AND related_id = '" . (int)$related_id . "'");
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_news_related SET news_id = '" . (int)$news_id . "', related_id = '" . (int)$related_id . "'");
|
||||
}
|
||||
}
|
||||
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "seo_url WHERE query = 'news_id=" . (int)$news_id . "'");
|
||||
|
||||
if (isset($data['news_seo_url'])) {
|
||||
foreach ($data['news_seo_url'] as $store_id => $language) {
|
||||
foreach ($language as $language_id => $keyword) {
|
||||
if (trim($keyword)) {
|
||||
$this->db->query("INSERT INTO `" . DB_PREFIX . "seo_url` SET store_id = '" . (int)$store_id . "', language_id = '" . (int)$language_id . "', query = 'news_id=" . (int)$news_id . "', keyword = '" . $this->db->escape($keyword) . "'");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->cache->delete('news');
|
||||
}
|
||||
|
||||
public function deleteNews($news_id) {
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_news WHERE news_id = '" . (int)$news_id . "'");
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_news_description WHERE news_id = '" . (int)$news_id . "'");
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_news_to_store WHERE news_id = '" . (int)$news_id . "'");
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_news_to_layout WHERE news_id = '" . (int)$news_id . "'");
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "seo_url WHERE query = 'news_id=" . (int)$news_id . "'");
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_news_related WHERE news_id = '" . (int)$news_id . "'");
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_news_related WHERE related_id = '" . (int)$news_id . "'");
|
||||
|
||||
$this->cache->delete('news');
|
||||
}
|
||||
|
||||
public function getNews($news_id) {
|
||||
$query = $this->db->query("SELECT DISTINCT *, (SELECT keyword FROM " . DB_PREFIX . "seo_url WHERE query = 'news_id=" . (int)$news_id . "' LIMIT 1) AS keyword FROM " . DB_PREFIX . "lightshop_news WHERE news_id = '" . (int)$news_id . "'");
|
||||
|
||||
return $query->row;
|
||||
}
|
||||
|
||||
public function getNewsSeoUrls($news_id) {
|
||||
$news_seo_url_data = array();
|
||||
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE query = 'news_id=" . (int)$news_id . "'");
|
||||
|
||||
foreach ($query->rows as $result) {
|
||||
$news_seo_url_data[$result['store_id']][$result['language_id']] = $result['keyword'];
|
||||
}
|
||||
|
||||
return $news_seo_url_data;
|
||||
}
|
||||
|
||||
public function getNewss($data = array()) {
|
||||
|
||||
$this->createTable();
|
||||
|
||||
if ($data) {
|
||||
$sql = "SELECT * FROM " . DB_PREFIX . "lightshop_news i LEFT JOIN " . DB_PREFIX . "lightshop_news_description id ON (i.news_id = id.news_id) WHERE id.language_id = '" . (int)$this->config->get('config_language_id') . "'";
|
||||
|
||||
$sort_data = array(
|
||||
'id.title',
|
||||
'i.sort_order',
|
||||
'i.date_added'
|
||||
);
|
||||
|
||||
if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
|
||||
$sql .= " ORDER BY " . $data['sort'];
|
||||
} else {
|
||||
$sql .= " ORDER BY i.date_added";
|
||||
}
|
||||
|
||||
if (isset($data['order']) && ($data['order'] == 'DESC')) {
|
||||
$sql .= " DESC";
|
||||
} else {
|
||||
$sql .= " ASC";
|
||||
}
|
||||
|
||||
if (isset($data['start']) || isset($data['limit'])) {
|
||||
if ($data['start'] < 0) {
|
||||
$data['start'] = 0;
|
||||
}
|
||||
|
||||
if ($data['limit'] < 1) {
|
||||
$data['limit'] = 20;
|
||||
}
|
||||
|
||||
$sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
|
||||
}
|
||||
|
||||
$query = $this->db->query($sql);
|
||||
|
||||
return $query->rows;
|
||||
} else {
|
||||
$news_data = $this->cache->get('news.' . (int)$this->config->get('config_language_id'));
|
||||
|
||||
if (!$news_data) {
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshop_news i LEFT JOIN " . DB_PREFIX . "lightshop_news_description id ON (i.news_id = id.news_id) WHERE id.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY id.title");
|
||||
|
||||
$news_data = $query->rows;
|
||||
|
||||
$this->cache->set('news.' . (int)$this->config->get('config_language_id'), $news_data);
|
||||
}
|
||||
|
||||
return $news_data;
|
||||
}
|
||||
}
|
||||
|
||||
public function getNewsDescriptions($news_id) {
|
||||
$news_description_data = array();
|
||||
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshop_news_description WHERE news_id = '" . (int)$news_id . "'");
|
||||
|
||||
foreach ($query->rows as $result) {
|
||||
$news_description_data[$result['language_id']] = array(
|
||||
'title' => $result['title'],
|
||||
'description' => $result['description'],
|
||||
'meta_title' => $result['meta_title'],
|
||||
'meta_h1' => $result['meta_h1'],
|
||||
'meta_description' => $result['meta_description'],
|
||||
'meta_keyword' => $result['meta_keyword']
|
||||
);
|
||||
}
|
||||
|
||||
return $news_description_data;
|
||||
}
|
||||
|
||||
public function getNewsStores($news_id) {
|
||||
$news_store_data = array();
|
||||
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshop_news_to_store WHERE news_id = '" . (int)$news_id . "'");
|
||||
|
||||
foreach ($query->rows as $result) {
|
||||
$news_store_data[] = $result['store_id'];
|
||||
}
|
||||
|
||||
return $news_store_data;
|
||||
}
|
||||
|
||||
public function getNewsLayouts($news_id) {
|
||||
$news_layout_data = array();
|
||||
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshop_news_to_layout WHERE news_id = '" . (int)$news_id . "'");
|
||||
|
||||
foreach ($query->rows as $result) {
|
||||
$news_layout_data[$result['store_id']] = $result['layout_id'];
|
||||
}
|
||||
|
||||
return $news_layout_data;
|
||||
}
|
||||
|
||||
public function getTotalNewss() {
|
||||
$query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "lightshop_news");
|
||||
|
||||
return $query->row['total'];
|
||||
}
|
||||
|
||||
public function getTotalNewssByLayoutId($layout_id) {
|
||||
$query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "lightshop_news_to_layout WHERE layout_id = '" . (int)$layout_id . "'");
|
||||
|
||||
return $query->row['total'];
|
||||
}
|
||||
|
||||
public function getProductRelated($news_id) {
|
||||
$product_related_data = array();
|
||||
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshop_news_related WHERE news_id = '" . (int)$news_id . "'");
|
||||
|
||||
foreach ($query->rows as $result) {
|
||||
$product_related_data[] = $result['related_id'];
|
||||
}
|
||||
|
||||
return $product_related_data;
|
||||
}
|
||||
|
||||
public function createTable() {
|
||||
$this->db->query("
|
||||
CREATE TABLE IF NOT EXISTS " . DB_PREFIX . "lightshop_news (
|
||||
`news_id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`bottom` int(1) NOT NULL DEFAULT '0',
|
||||
`sort_order` int(3) NOT NULL DEFAULT '0',
|
||||
`status` tinyint(1) NOT NULL DEFAULT '1',
|
||||
`date_added` date NOT NULL,
|
||||
PRIMARY KEY (`news_id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
");
|
||||
$this->db->query("
|
||||
CREATE TABLE IF NOT EXISTS " . DB_PREFIX . "lightshop_news_description (
|
||||
`news_id` int(11) NOT NULL,
|
||||
`language_id` int(11) NOT NULL,
|
||||
`title` varchar(200) NOT NULL,
|
||||
`description` text NOT NULL,
|
||||
`meta_title` varchar(255) NOT NULL,
|
||||
`meta_h1` varchar(255) NOT NULL,
|
||||
`meta_description` varchar(255) NOT NULL,
|
||||
`meta_keyword` varchar(255) NOT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
");
|
||||
$this->db->query("
|
||||
CREATE TABLE IF NOT EXISTS " . DB_PREFIX . "lightshop_news_to_layout (
|
||||
`news_id` int(11) NOT NULL,
|
||||
`store_id` int(11) NOT NULL,
|
||||
`layout_id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`news_id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
");
|
||||
$this->db->query("
|
||||
CREATE TABLE IF NOT EXISTS " . DB_PREFIX . "lightshop_news_to_store (
|
||||
`news_id` int(11) NOT NULL,
|
||||
`store_id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`news_id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
");
|
||||
$this->db->query("
|
||||
CREATE TABLE IF NOT EXISTS " . DB_PREFIX . "lightshop_news_related (
|
||||
`news_id` int(11) NOT NULL,
|
||||
`related_id` int(11) NOT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,277 +0,0 @@
|
||||
<?php
|
||||
class ModelExtensionThemeLightshopSets extends Model {
|
||||
public function addSet($data) {
|
||||
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_set SET sort_order = 0, mode = '" . (isset($data['mode']) ? (int)$data['mode'] : 0) . "', discount = '" . (isset($data['discount']) ? (int)$data['discount'] : 0) . "', status = '" . (int)$data['status'] . "', date_added = NOW()");
|
||||
|
||||
$set_id = $this->db->getLastId();
|
||||
|
||||
foreach ($data['set_description'] as $language_id => $value) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_set_description SET set_id = '" . (int)$set_id . "', language_id = '" . (int)$language_id . "', title = '" . $this->db->escape($value['title']) . "'");
|
||||
}
|
||||
|
||||
if (isset($data['set_store'])) {
|
||||
foreach ($data['set_store'] as $store_id) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_set_to_store SET set_id = '" . (int)$set_id . "', store_id = '" . (int)$store_id . "'");
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($data['product'])) {
|
||||
foreach ($data['product'] as $key => $rowProducts) {
|
||||
if(!isset($rowProducts['items'])){ continue; }
|
||||
foreach ($rowProducts['items'] as $product) {
|
||||
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_product_to_set SET set_id = '" . (int)$set_id . "', row_id = '" . (int)$key . "', product_id = '" . (int)$product['id'] . "', quantity = '" . (int)$rowProducts['qty'] . "', sort_order = " . (int)$rowProducts['sort_order'] . "");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
$this->cache->delete('set');
|
||||
|
||||
return $set_id;
|
||||
}
|
||||
|
||||
public function editSet($set_id, $data) {
|
||||
$this->db->query("UPDATE " . DB_PREFIX . "lightshop_set SET mode = '" . (isset($data['mode']) ? (int)$data['mode'] : 0) . "', discount = '" . (isset($data['discount']) ? (int)$data['discount'] : 0) . "', status = '" . (int)$data['status'] . "' WHERE set_id = '" . (int)$set_id . "'");
|
||||
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_set_description WHERE set_id = '" . (int)$set_id . "'");
|
||||
|
||||
foreach ($data['set_description'] as $language_id => $value) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_set_description SET set_id = '" . (int)$set_id . "', language_id = '" . (int)$language_id . "', title = '" . $this->db->escape($value['title']) . "'");
|
||||
}
|
||||
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_set_to_store WHERE set_id = '" . (int)$set_id . "'");
|
||||
|
||||
if (isset($data['set_store'])) {
|
||||
foreach ($data['set_store'] as $store_id) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_set_to_store SET set_id = '" . (int)$set_id . "', store_id = '" . (int)$store_id . "'");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_product_to_set WHERE set_id = '" . (int)$set_id . "'");
|
||||
|
||||
|
||||
if (isset($data['product'])) {
|
||||
foreach ($data['product'] as $key => $rowProducts) {
|
||||
if(!isset($rowProducts['items'])){ continue; }
|
||||
foreach ($rowProducts['items'] as $product) {
|
||||
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "lightshop_product_to_set SET set_id = '" . (int)$set_id . "', row_id = '" . (int)$key . "', product_id = '" . (int)$product['id'] . "', quantity = '" . (int)$rowProducts['qty'] . "', sort_order = " . (int)$rowProducts['sort_order'] . "");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "seo_url WHERE query = 'set_id=" . (int)$set_id . "'");
|
||||
|
||||
|
||||
$this->cache->delete('set');
|
||||
}
|
||||
|
||||
public function deleteSet($set_id) {
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_set WHERE set_id = '" . (int)$set_id . "'");
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_set_description WHERE set_id = '" . (int)$set_id . "'");
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_set_to_store WHERE set_id = '" . (int)$set_id . "'");
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_set_to_layout WHERE set_id = '" . (int)$set_id . "'");
|
||||
$this->db->query("DELETE FROM " . DB_PREFIX . "lightshop_product_to_set WHERE set_id = '" . (int)$set_id . "'");
|
||||
|
||||
$this->cache->delete('set');
|
||||
}
|
||||
|
||||
public function getSet($set_id) {
|
||||
|
||||
$sql = "SELECT * FROM " . DB_PREFIX . "lightshop_set i LEFT JOIN " . DB_PREFIX . "lightshop_set_description id ON (i.set_id = id.set_id) WHERE id.language_id = '" . (int)$this->config->get('config_language_id') . "' AND i.set_id = '" . (int)$set_id . "'";
|
||||
|
||||
$query = $this->db->query($sql);
|
||||
|
||||
return $query->row;
|
||||
|
||||
}
|
||||
|
||||
public function getSetProduct($set_id) {
|
||||
$products = array();
|
||||
|
||||
$sql = "SELECT * FROM " . DB_PREFIX . "lightshop_product_to_set WHERE set_id = '" . (int)$set_id . "' ORDER BY row_id,set_product_id ASC";
|
||||
|
||||
$query = $this->db->query($sql);
|
||||
|
||||
foreach ($query->rows as $key => $product) {
|
||||
$products[$product['row_id']][] = array(
|
||||
'id' => $product['product_id'],
|
||||
'qty' => $product['quantity'],
|
||||
'sort_order' => $product['sort_order']
|
||||
);
|
||||
}
|
||||
|
||||
return $products;
|
||||
|
||||
}
|
||||
|
||||
public function getSets($data = array()) {
|
||||
|
||||
$this->createTable();
|
||||
|
||||
if ($data) {
|
||||
$sql = "SELECT * FROM " . DB_PREFIX . "lightshop_set i LEFT JOIN " . DB_PREFIX . "lightshop_set_description id ON (i.set_id = id.set_id) WHERE id.language_id = '" . (int)$this->config->get('config_language_id') . "'";
|
||||
|
||||
$sort_data = array(
|
||||
'id.title',
|
||||
'i.sort_order',
|
||||
'i.date_added'
|
||||
);
|
||||
|
||||
if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
|
||||
$sql .= " ORDER BY " . $data['sort'];
|
||||
} else {
|
||||
$sql .= " ORDER BY i.date_added";
|
||||
}
|
||||
|
||||
if (isset($data['order']) && ($data['order'] == 'DESC')) {
|
||||
$sql .= " DESC";
|
||||
} else {
|
||||
$sql .= " ASC";
|
||||
}
|
||||
|
||||
if (isset($data['start']) || isset($data['limit'])) {
|
||||
if ($data['start'] < 0) {
|
||||
$data['start'] = 0;
|
||||
}
|
||||
|
||||
if ($data['limit'] < 1) {
|
||||
$data['limit'] = 20;
|
||||
}
|
||||
|
||||
$sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
|
||||
}
|
||||
|
||||
$query = $this->db->query($sql);
|
||||
|
||||
return $query->rows;
|
||||
} else {
|
||||
$set_data = $this->cache->get('lightshopset.' . (int)$this->config->get('config_language_id'));
|
||||
|
||||
if (!$set_data) {
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshop_set i LEFT JOIN " . DB_PREFIX . "lightshop_set_description id ON (i.set_id = id.set_id) WHERE id.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY id.title");
|
||||
|
||||
$set_data = $query->rows;
|
||||
|
||||
$this->cache->set('lightshopset.' . (int)$this->config->get('config_language_id'), $set_data);
|
||||
}
|
||||
|
||||
return $set_data;
|
||||
}
|
||||
}
|
||||
|
||||
public function getSetDescriptions($set_id) {
|
||||
$set_description_data = array();
|
||||
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshop_set_description WHERE set_id = '" . (int)$set_id . "'");
|
||||
|
||||
foreach ($query->rows as $result) {
|
||||
$set_description_data[$result['language_id']] = array(
|
||||
'title' => $result['title'],
|
||||
);
|
||||
}
|
||||
|
||||
return $set_description_data;
|
||||
}
|
||||
|
||||
public function getSetStores($set_id) {
|
||||
$set_store_data = array();
|
||||
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshop_set_to_store WHERE set_id = '" . (int)$set_id . "'");
|
||||
|
||||
foreach ($query->rows as $result) {
|
||||
$set_store_data[] = $result['store_id'];
|
||||
}
|
||||
|
||||
return $set_store_data;
|
||||
}
|
||||
|
||||
|
||||
public function getTotalSets() {
|
||||
$query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "lightshop_set");
|
||||
|
||||
return $query->row['total'];
|
||||
}
|
||||
|
||||
public function getTotalNewssByLayoutId($layout_id) {
|
||||
$query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "lightshop_news_to_layout WHERE layout_id = '" . (int)$layout_id . "'");
|
||||
|
||||
return $query->row['total'];
|
||||
}
|
||||
|
||||
public function getProductRelated($news_id) {
|
||||
$product_related_data = array();
|
||||
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshop_news_related WHERE news_id = '" . (int)$news_id . "'");
|
||||
|
||||
foreach ($query->rows as $result) {
|
||||
$product_related_data[] = $result['related_id'];
|
||||
}
|
||||
|
||||
return $product_related_data;
|
||||
}
|
||||
|
||||
public function createTable() {
|
||||
$this->db->query("
|
||||
CREATE TABLE IF NOT EXISTS " . DB_PREFIX . "lightshop_set (
|
||||
`set_id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`mode` int(1) NOT NULL DEFAULT '0',
|
||||
`discount` int(11) NOT NULL DEFAULT '0',
|
||||
`sort_order` int(3) NOT NULL DEFAULT '0',
|
||||
`status` tinyint(1) NOT NULL DEFAULT '1',
|
||||
`date_added` date NOT NULL,
|
||||
PRIMARY KEY (`set_id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
");
|
||||
$this->db->query("
|
||||
CREATE TABLE IF NOT EXISTS " . DB_PREFIX . "lightshop_set_description (
|
||||
`set_id` int(11) NOT NULL,
|
||||
`language_id` int(11) NOT NULL,
|
||||
`title` varchar(200) NOT NULL,
|
||||
`description` text NOT NULL,
|
||||
`meta_title` varchar(255) NOT NULL,
|
||||
`meta_h1` varchar(255) NOT NULL,
|
||||
`meta_description` varchar(255) NOT NULL,
|
||||
`meta_keyword` varchar(255) NOT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
");
|
||||
$this->db->query("
|
||||
CREATE TABLE IF NOT EXISTS " . DB_PREFIX . "lightshop_product_to_set (
|
||||
`set_product_id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`set_id` int(11) NOT NULL,
|
||||
`row_id` int(11) NOT NULL,
|
||||
`product_id` int(11) NOT NULL,
|
||||
`quantity` int(11) NOT NULL DEFAULT '0',
|
||||
`sort_order` int(3) NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`set_product_id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
");
|
||||
$this->db->query("
|
||||
CREATE TABLE IF NOT EXISTS " . DB_PREFIX . "lightshop_set_to_layout (
|
||||
`set_id` int(11) NOT NULL,
|
||||
`store_id` int(11) NOT NULL,
|
||||
`layout_id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`set_id`,`store_id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
");
|
||||
$this->db->query("
|
||||
CREATE TABLE IF NOT EXISTS " . DB_PREFIX . "lightshop_set_to_store (
|
||||
`set_id` int(11) NOT NULL,
|
||||
`store_id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`set_id`,`store_id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
");
|
||||
$this->db->query("
|
||||
CREATE TABLE IF NOT EXISTS " . DB_PREFIX . "lightshop_news_related (
|
||||
`news_id` int(11) NOT NULL,
|
||||
`related_id` int(11) NOT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
");
|
||||
}
|
||||
|
||||
}
|
||||
|
Before Width: | Height: | Size: 9.7 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 7.2 KiB |
|
Before Width: | Height: | Size: 7.8 KiB |
|
Before Width: | Height: | Size: 757 B |
@@ -1,832 +0,0 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
mod(require("../../lib/codemirror"));
|
||||
else if (typeof define == "function" && define.amd) // AMD
|
||||
define(["../../lib/codemirror"], mod);
|
||||
else // Plain browser env
|
||||
mod(CodeMirror);
|
||||
})(function(CodeMirror) {
|
||||
"use strict";
|
||||
|
||||
CodeMirror.defineMode("css", function(config, parserConfig) {
|
||||
var inline = parserConfig.inline
|
||||
if (!parserConfig.propertyKeywords) parserConfig = CodeMirror.resolveMode("text/css");
|
||||
|
||||
var indentUnit = config.indentUnit,
|
||||
tokenHooks = parserConfig.tokenHooks,
|
||||
documentTypes = parserConfig.documentTypes || {},
|
||||
mediaTypes = parserConfig.mediaTypes || {},
|
||||
mediaFeatures = parserConfig.mediaFeatures || {},
|
||||
mediaValueKeywords = parserConfig.mediaValueKeywords || {},
|
||||
propertyKeywords = parserConfig.propertyKeywords || {},
|
||||
nonStandardPropertyKeywords = parserConfig.nonStandardPropertyKeywords || {},
|
||||
fontProperties = parserConfig.fontProperties || {},
|
||||
counterDescriptors = parserConfig.counterDescriptors || {},
|
||||
colorKeywords = parserConfig.colorKeywords || {},
|
||||
valueKeywords = parserConfig.valueKeywords || {},
|
||||
allowNested = parserConfig.allowNested,
|
||||
lineComment = parserConfig.lineComment,
|
||||
supportsAtComponent = parserConfig.supportsAtComponent === true;
|
||||
|
||||
var type, override;
|
||||
function ret(style, tp) { type = tp; return style; }
|
||||
|
||||
// Tokenizers
|
||||
|
||||
function tokenBase(stream, state) {
|
||||
var ch = stream.next();
|
||||
if (tokenHooks[ch]) {
|
||||
var result = tokenHooks[ch](stream, state);
|
||||
if (result !== false) return result;
|
||||
}
|
||||
if (ch == "@") {
|
||||
stream.eatWhile(/[\w\\\-]/);
|
||||
return ret("def", stream.current());
|
||||
} else if (ch == "=" || (ch == "~" || ch == "|") && stream.eat("=")) {
|
||||
return ret(null, "compare");
|
||||
} else if (ch == "\"" || ch == "'") {
|
||||
state.tokenize = tokenString(ch);
|
||||
return state.tokenize(stream, state);
|
||||
} else if (ch == "#") {
|
||||
stream.eatWhile(/[\w\\\-]/);
|
||||
return ret("atom", "hash");
|
||||
} else if (ch == "!") {
|
||||
stream.match(/^\s*\w*/);
|
||||
return ret("keyword", "important");
|
||||
} else if (/\d/.test(ch) || ch == "." && stream.eat(/\d/)) {
|
||||
stream.eatWhile(/[\w.%]/);
|
||||
return ret("number", "unit");
|
||||
} else if (ch === "-") {
|
||||
if (/[\d.]/.test(stream.peek())) {
|
||||
stream.eatWhile(/[\w.%]/);
|
||||
return ret("number", "unit");
|
||||
} else if (stream.match(/^-[\w\\\-]+/)) {
|
||||
stream.eatWhile(/[\w\\\-]/);
|
||||
if (stream.match(/^\s*:/, false))
|
||||
return ret("variable-2", "variable-definition");
|
||||
return ret("variable-2", "variable");
|
||||
} else if (stream.match(/^\w+-/)) {
|
||||
return ret("meta", "meta");
|
||||
}
|
||||
} else if (/[,+>*\/]/.test(ch)) {
|
||||
return ret(null, "select-op");
|
||||
} else if (ch == "." && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) {
|
||||
return ret("qualifier", "qualifier");
|
||||
} else if (/[:;{}\[\]\(\)]/.test(ch)) {
|
||||
return ret(null, ch);
|
||||
} else if (((ch == "u" || ch == "U") && stream.match(/rl(-prefix)?\(/i)) ||
|
||||
((ch == "d" || ch == "D") && stream.match("omain(", true, true)) ||
|
||||
((ch == "r" || ch == "R") && stream.match("egexp(", true, true))) {
|
||||
stream.backUp(1);
|
||||
state.tokenize = tokenParenthesized;
|
||||
return ret("property", "word");
|
||||
} else if (/[\w\\\-]/.test(ch)) {
|
||||
stream.eatWhile(/[\w\\\-]/);
|
||||
return ret("property", "word");
|
||||
} else {
|
||||
return ret(null, null);
|
||||
}
|
||||
}
|
||||
|
||||
function tokenString(quote) {
|
||||
return function(stream, state) {
|
||||
var escaped = false, ch;
|
||||
while ((ch = stream.next()) != null) {
|
||||
if (ch == quote && !escaped) {
|
||||
if (quote == ")") stream.backUp(1);
|
||||
break;
|
||||
}
|
||||
escaped = !escaped && ch == "\\";
|
||||
}
|
||||
if (ch == quote || !escaped && quote != ")") state.tokenize = null;
|
||||
return ret("string", "string");
|
||||
};
|
||||
}
|
||||
|
||||
function tokenParenthesized(stream, state) {
|
||||
stream.next(); // Must be '('
|
||||
if (!stream.match(/\s*[\"\')]/, false))
|
||||
state.tokenize = tokenString(")");
|
||||
else
|
||||
state.tokenize = null;
|
||||
return ret(null, "(");
|
||||
}
|
||||
|
||||
// Context management
|
||||
|
||||
function Context(type, indent, prev) {
|
||||
this.type = type;
|
||||
this.indent = indent;
|
||||
this.prev = prev;
|
||||
}
|
||||
|
||||
function pushContext(state, stream, type, indent) {
|
||||
state.context = new Context(type, stream.indentation() + (indent === false ? 0 : indentUnit), state.context);
|
||||
return type;
|
||||
}
|
||||
|
||||
function popContext(state) {
|
||||
if (state.context.prev)
|
||||
state.context = state.context.prev;
|
||||
return state.context.type;
|
||||
}
|
||||
|
||||
function pass(type, stream, state) {
|
||||
return states[state.context.type](type, stream, state);
|
||||
}
|
||||
function popAndPass(type, stream, state, n) {
|
||||
for (var i = n || 1; i > 0; i--)
|
||||
state.context = state.context.prev;
|
||||
return pass(type, stream, state);
|
||||
}
|
||||
|
||||
// Parser
|
||||
|
||||
function wordAsValue(stream) {
|
||||
var word = stream.current().toLowerCase();
|
||||
if (valueKeywords.hasOwnProperty(word))
|
||||
override = "atom";
|
||||
else if (colorKeywords.hasOwnProperty(word))
|
||||
override = "keyword";
|
||||
else
|
||||
override = "variable";
|
||||
}
|
||||
|
||||
var states = {};
|
||||
|
||||
states.top = function(type, stream, state) {
|
||||
if (type == "{") {
|
||||
return pushContext(state, stream, "block");
|
||||
} else if (type == "}" && state.context.prev) {
|
||||
return popContext(state);
|
||||
} else if (supportsAtComponent && /@component/i.test(type)) {
|
||||
return pushContext(state, stream, "atComponentBlock");
|
||||
} else if (/^@(-moz-)?document$/i.test(type)) {
|
||||
return pushContext(state, stream, "documentTypes");
|
||||
} else if (/^@(media|supports|(-moz-)?document|import)$/i.test(type)) {
|
||||
return pushContext(state, stream, "atBlock");
|
||||
} else if (/^@(font-face|counter-style)/i.test(type)) {
|
||||
state.stateArg = type;
|
||||
return "restricted_atBlock_before";
|
||||
} else if (/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(type)) {
|
||||
return "keyframes";
|
||||
} else if (type && type.charAt(0) == "@") {
|
||||
return pushContext(state, stream, "at");
|
||||
} else if (type == "hash") {
|
||||
override = "builtin";
|
||||
} else if (type == "word") {
|
||||
override = "tag";
|
||||
} else if (type == "variable-definition") {
|
||||
return "maybeprop";
|
||||
} else if (type == "interpolation") {
|
||||
return pushContext(state, stream, "interpolation");
|
||||
} else if (type == ":") {
|
||||
return "pseudo";
|
||||
} else if (allowNested && type == "(") {
|
||||
return pushContext(state, stream, "parens");
|
||||
}
|
||||
return state.context.type;
|
||||
};
|
||||
|
||||
states.block = function(type, stream, state) {
|
||||
if (type == "word") {
|
||||
var word = stream.current().toLowerCase();
|
||||
if (propertyKeywords.hasOwnProperty(word)) {
|
||||
override = "property";
|
||||
return "maybeprop";
|
||||
} else if (nonStandardPropertyKeywords.hasOwnProperty(word)) {
|
||||
override = "string-2";
|
||||
return "maybeprop";
|
||||
} else if (allowNested) {
|
||||
override = stream.match(/^\s*:(?:\s|$)/, false) ? "property" : "tag";
|
||||
return "block";
|
||||
} else {
|
||||
override += " error";
|
||||
return "maybeprop";
|
||||
}
|
||||
} else if (type == "meta") {
|
||||
return "block";
|
||||
} else if (!allowNested && (type == "hash" || type == "qualifier")) {
|
||||
override = "error";
|
||||
return "block";
|
||||
} else {
|
||||
return states.top(type, stream, state);
|
||||
}
|
||||
};
|
||||
|
||||
states.maybeprop = function(type, stream, state) {
|
||||
if (type == ":") return pushContext(state, stream, "prop");
|
||||
return pass(type, stream, state);
|
||||
};
|
||||
|
||||
states.prop = function(type, stream, state) {
|
||||
if (type == ";") return popContext(state);
|
||||
if (type == "{" && allowNested) return pushContext(state, stream, "propBlock");
|
||||
if (type == "}" || type == "{") return popAndPass(type, stream, state);
|
||||
if (type == "(") return pushContext(state, stream, "parens");
|
||||
|
||||
if (type == "hash" && !/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(stream.current())) {
|
||||
override += " error";
|
||||
} else if (type == "word") {
|
||||
wordAsValue(stream);
|
||||
} else if (type == "interpolation") {
|
||||
return pushContext(state, stream, "interpolation");
|
||||
}
|
||||
return "prop";
|
||||
};
|
||||
|
||||
states.propBlock = function(type, _stream, state) {
|
||||
if (type == "}") return popContext(state);
|
||||
if (type == "word") { override = "property"; return "maybeprop"; }
|
||||
return state.context.type;
|
||||
};
|
||||
|
||||
states.parens = function(type, stream, state) {
|
||||
if (type == "{" || type == "}") return popAndPass(type, stream, state);
|
||||
if (type == ")") return popContext(state);
|
||||
if (type == "(") return pushContext(state, stream, "parens");
|
||||
if (type == "interpolation") return pushContext(state, stream, "interpolation");
|
||||
if (type == "word") wordAsValue(stream);
|
||||
return "parens";
|
||||
};
|
||||
|
||||
states.pseudo = function(type, stream, state) {
|
||||
if (type == "meta") return "pseudo";
|
||||
|
||||
if (type == "word") {
|
||||
override = "variable-3";
|
||||
return state.context.type;
|
||||
}
|
||||
return pass(type, stream, state);
|
||||
};
|
||||
|
||||
states.documentTypes = function(type, stream, state) {
|
||||
if (type == "word" && documentTypes.hasOwnProperty(stream.current())) {
|
||||
override = "tag";
|
||||
return state.context.type;
|
||||
} else {
|
||||
return states.atBlock(type, stream, state);
|
||||
}
|
||||
};
|
||||
|
||||
states.atBlock = function(type, stream, state) {
|
||||
if (type == "(") return pushContext(state, stream, "atBlock_parens");
|
||||
if (type == "}" || type == ";") return popAndPass(type, stream, state);
|
||||
if (type == "{") return popContext(state) && pushContext(state, stream, allowNested ? "block" : "top");
|
||||
|
||||
if (type == "interpolation") return pushContext(state, stream, "interpolation");
|
||||
|
||||
if (type == "word") {
|
||||
var word = stream.current().toLowerCase();
|
||||
if (word == "only" || word == "not" || word == "and" || word == "or")
|
||||
override = "keyword";
|
||||
else if (mediaTypes.hasOwnProperty(word))
|
||||
override = "attribute";
|
||||
else if (mediaFeatures.hasOwnProperty(word))
|
||||
override = "property";
|
||||
else if (mediaValueKeywords.hasOwnProperty(word))
|
||||
override = "keyword";
|
||||
else if (propertyKeywords.hasOwnProperty(word))
|
||||
override = "property";
|
||||
else if (nonStandardPropertyKeywords.hasOwnProperty(word))
|
||||
override = "string-2";
|
||||
else if (valueKeywords.hasOwnProperty(word))
|
||||
override = "atom";
|
||||
else if (colorKeywords.hasOwnProperty(word))
|
||||
override = "keyword";
|
||||
else
|
||||
override = "error";
|
||||
}
|
||||
return state.context.type;
|
||||
};
|
||||
|
||||
states.atComponentBlock = function(type, stream, state) {
|
||||
if (type == "}")
|
||||
return popAndPass(type, stream, state);
|
||||
if (type == "{")
|
||||
return popContext(state) && pushContext(state, stream, allowNested ? "block" : "top", false);
|
||||
if (type == "word")
|
||||
override = "error";
|
||||
return state.context.type;
|
||||
};
|
||||
|
||||
states.atBlock_parens = function(type, stream, state) {
|
||||
if (type == ")") return popContext(state);
|
||||
if (type == "{" || type == "}") return popAndPass(type, stream, state, 2);
|
||||
return states.atBlock(type, stream, state);
|
||||
};
|
||||
|
||||
states.restricted_atBlock_before = function(type, stream, state) {
|
||||
if (type == "{")
|
||||
return pushContext(state, stream, "restricted_atBlock");
|
||||
if (type == "word" && state.stateArg == "@counter-style") {
|
||||
override = "variable";
|
||||
return "restricted_atBlock_before";
|
||||
}
|
||||
return pass(type, stream, state);
|
||||
};
|
||||
|
||||
states.restricted_atBlock = function(type, stream, state) {
|
||||
if (type == "}") {
|
||||
state.stateArg = null;
|
||||
return popContext(state);
|
||||
}
|
||||
if (type == "word") {
|
||||
if ((state.stateArg == "@font-face" && !fontProperties.hasOwnProperty(stream.current().toLowerCase())) ||
|
||||
(state.stateArg == "@counter-style" && !counterDescriptors.hasOwnProperty(stream.current().toLowerCase())))
|
||||
override = "error";
|
||||
else
|
||||
override = "property";
|
||||
return "maybeprop";
|
||||
}
|
||||
return "restricted_atBlock";
|
||||
};
|
||||
|
||||
states.keyframes = function(type, stream, state) {
|
||||
if (type == "word") { override = "variable"; return "keyframes"; }
|
||||
if (type == "{") return pushContext(state, stream, "top");
|
||||
return pass(type, stream, state);
|
||||
};
|
||||
|
||||
states.at = function(type, stream, state) {
|
||||
if (type == ";") return popContext(state);
|
||||
if (type == "{" || type == "}") return popAndPass(type, stream, state);
|
||||
if (type == "word") override = "tag";
|
||||
else if (type == "hash") override = "builtin";
|
||||
return "at";
|
||||
};
|
||||
|
||||
states.interpolation = function(type, stream, state) {
|
||||
if (type == "}") return popContext(state);
|
||||
if (type == "{" || type == ";") return popAndPass(type, stream, state);
|
||||
if (type == "word") override = "variable";
|
||||
else if (type != "variable" && type != "(" && type != ")") override = "error";
|
||||
return "interpolation";
|
||||
};
|
||||
|
||||
return {
|
||||
startState: function(base) {
|
||||
return {tokenize: null,
|
||||
state: inline ? "block" : "top",
|
||||
stateArg: null,
|
||||
context: new Context(inline ? "block" : "top", base || 0, null)};
|
||||
},
|
||||
|
||||
token: function(stream, state) {
|
||||
if (!state.tokenize && stream.eatSpace()) return null;
|
||||
var style = (state.tokenize || tokenBase)(stream, state);
|
||||
if (style && typeof style == "object") {
|
||||
type = style[1];
|
||||
style = style[0];
|
||||
}
|
||||
override = style;
|
||||
if (type != "comment")
|
||||
state.state = states[state.state](type, stream, state);
|
||||
return override;
|
||||
},
|
||||
|
||||
indent: function(state, textAfter) {
|
||||
var cx = state.context, ch = textAfter && textAfter.charAt(0);
|
||||
var indent = cx.indent;
|
||||
if (cx.type == "prop" && (ch == "}" || ch == ")")) cx = cx.prev;
|
||||
if (cx.prev) {
|
||||
if (ch == "}" && (cx.type == "block" || cx.type == "top" ||
|
||||
cx.type == "interpolation" || cx.type == "restricted_atBlock")) {
|
||||
// Resume indentation from parent context.
|
||||
cx = cx.prev;
|
||||
indent = cx.indent;
|
||||
} else if (ch == ")" && (cx.type == "parens" || cx.type == "atBlock_parens") ||
|
||||
ch == "{" && (cx.type == "at" || cx.type == "atBlock")) {
|
||||
// Dedent relative to current context.
|
||||
indent = Math.max(0, cx.indent - indentUnit);
|
||||
}
|
||||
}
|
||||
return indent;
|
||||
},
|
||||
|
||||
electricChars: "}",
|
||||
blockCommentStart: "/*",
|
||||
blockCommentEnd: "*/",
|
||||
blockCommentContinue: " * ",
|
||||
lineComment: lineComment,
|
||||
fold: "brace"
|
||||
};
|
||||
});
|
||||
|
||||
function keySet(array) {
|
||||
var keys = {};
|
||||
for (var i = 0; i < array.length; ++i) {
|
||||
keys[array[i].toLowerCase()] = true;
|
||||
}
|
||||
return keys;
|
||||
}
|
||||
|
||||
var documentTypes_ = [
|
||||
"domain", "regexp", "url", "url-prefix"
|
||||
], documentTypes = keySet(documentTypes_);
|
||||
|
||||
var mediaTypes_ = [
|
||||
"all", "aural", "braille", "handheld", "print", "projection", "screen",
|
||||
"tty", "tv", "embossed"
|
||||
], mediaTypes = keySet(mediaTypes_);
|
||||
|
||||
var mediaFeatures_ = [
|
||||
"width", "min-width", "max-width", "height", "min-height", "max-height",
|
||||
"device-width", "min-device-width", "max-device-width", "device-height",
|
||||
"min-device-height", "max-device-height", "aspect-ratio",
|
||||
"min-aspect-ratio", "max-aspect-ratio", "device-aspect-ratio",
|
||||
"min-device-aspect-ratio", "max-device-aspect-ratio", "color", "min-color",
|
||||
"max-color", "color-index", "min-color-index", "max-color-index",
|
||||
"monochrome", "min-monochrome", "max-monochrome", "resolution",
|
||||
"min-resolution", "max-resolution", "scan", "grid", "orientation",
|
||||
"device-pixel-ratio", "min-device-pixel-ratio", "max-device-pixel-ratio",
|
||||
"pointer", "any-pointer", "hover", "any-hover"
|
||||
], mediaFeatures = keySet(mediaFeatures_);
|
||||
|
||||
var mediaValueKeywords_ = [
|
||||
"landscape", "portrait", "none", "coarse", "fine", "on-demand", "hover",
|
||||
"interlace", "progressive"
|
||||
], mediaValueKeywords = keySet(mediaValueKeywords_);
|
||||
|
||||
var propertyKeywords_ = [
|
||||
"align-content", "align-items", "align-self", "alignment-adjust",
|
||||
"alignment-baseline", "anchor-point", "animation", "animation-delay",
|
||||
"animation-direction", "animation-duration", "animation-fill-mode",
|
||||
"animation-iteration-count", "animation-name", "animation-play-state",
|
||||
"animation-timing-function", "appearance", "azimuth", "backface-visibility",
|
||||
"background", "background-attachment", "background-blend-mode", "background-clip",
|
||||
"background-color", "background-image", "background-origin", "background-position",
|
||||
"background-repeat", "background-size", "baseline-shift", "binding",
|
||||
"bleed", "bookmark-label", "bookmark-level", "bookmark-state",
|
||||
"bookmark-target", "border", "border-bottom", "border-bottom-color",
|
||||
"border-bottom-left-radius", "border-bottom-right-radius",
|
||||
"border-bottom-style", "border-bottom-width", "border-collapse",
|
||||
"border-color", "border-image", "border-image-outset",
|
||||
"border-image-repeat", "border-image-slice", "border-image-source",
|
||||
"border-image-width", "border-left", "border-left-color",
|
||||
"border-left-style", "border-left-width", "border-radius", "border-right",
|
||||
"border-right-color", "border-right-style", "border-right-width",
|
||||
"border-spacing", "border-style", "border-top", "border-top-color",
|
||||
"border-top-left-radius", "border-top-right-radius", "border-top-style",
|
||||
"border-top-width", "border-width", "bottom", "box-decoration-break",
|
||||
"box-shadow", "box-sizing", "break-after", "break-before", "break-inside",
|
||||
"caption-side", "caret-color", "clear", "clip", "color", "color-profile", "column-count",
|
||||
"column-fill", "column-gap", "column-rule", "column-rule-color",
|
||||
"column-rule-style", "column-rule-width", "column-span", "column-width",
|
||||
"columns", "content", "counter-increment", "counter-reset", "crop", "cue",
|
||||
"cue-after", "cue-before", "cursor", "direction", "display",
|
||||
"dominant-baseline", "drop-initial-after-adjust",
|
||||
"drop-initial-after-align", "drop-initial-before-adjust",
|
||||
"drop-initial-before-align", "drop-initial-size", "drop-initial-value",
|
||||
"elevation", "empty-cells", "fit", "fit-position", "flex", "flex-basis",
|
||||
"flex-direction", "flex-flow", "flex-grow", "flex-shrink", "flex-wrap",
|
||||
"float", "float-offset", "flow-from", "flow-into", "font", "font-feature-settings",
|
||||
"font-family", "font-kerning", "font-language-override", "font-size", "font-size-adjust",
|
||||
"font-stretch", "font-style", "font-synthesis", "font-variant",
|
||||
"font-variant-alternates", "font-variant-caps", "font-variant-east-asian",
|
||||
"font-variant-ligatures", "font-variant-numeric", "font-variant-position",
|
||||
"font-weight", "grid", "grid-area", "grid-auto-columns", "grid-auto-flow",
|
||||
"grid-auto-rows", "grid-column", "grid-column-end", "grid-column-gap",
|
||||
"grid-column-start", "grid-gap", "grid-row", "grid-row-end", "grid-row-gap",
|
||||
"grid-row-start", "grid-template", "grid-template-areas", "grid-template-columns",
|
||||
"grid-template-rows", "hanging-punctuation", "height", "hyphens",
|
||||
"icon", "image-orientation", "image-rendering", "image-resolution",
|
||||
"inline-box-align", "justify-content", "justify-items", "justify-self", "left", "letter-spacing",
|
||||
"line-break", "line-height", "line-stacking", "line-stacking-ruby",
|
||||
"line-stacking-shift", "line-stacking-strategy", "list-style",
|
||||
"list-style-image", "list-style-position", "list-style-type", "margin",
|
||||
"margin-bottom", "margin-left", "margin-right", "margin-top",
|
||||
"marks", "marquee-direction", "marquee-loop",
|
||||
"marquee-play-count", "marquee-speed", "marquee-style", "max-height",
|
||||
"max-width", "min-height", "min-width", "move-to", "nav-down", "nav-index",
|
||||
"nav-left", "nav-right", "nav-up", "object-fit", "object-position",
|
||||
"opacity", "order", "orphans", "outline",
|
||||
"outline-color", "outline-offset", "outline-style", "outline-width",
|
||||
"overflow", "overflow-style", "overflow-wrap", "overflow-x", "overflow-y",
|
||||
"padding", "padding-bottom", "padding-left", "padding-right", "padding-top",
|
||||
"page", "page-break-after", "page-break-before", "page-break-inside",
|
||||
"page-policy", "pause", "pause-after", "pause-before", "perspective",
|
||||
"perspective-origin", "pitch", "pitch-range", "place-content", "place-items", "place-self", "play-during", "position",
|
||||
"presentation-level", "punctuation-trim", "quotes", "region-break-after",
|
||||
"region-break-before", "region-break-inside", "region-fragment",
|
||||
"rendering-intent", "resize", "rest", "rest-after", "rest-before", "richness",
|
||||
"right", "rotation", "rotation-point", "ruby-align", "ruby-overhang",
|
||||
"ruby-position", "ruby-span", "shape-image-threshold", "shape-inside", "shape-margin",
|
||||
"shape-outside", "size", "speak", "speak-as", "speak-header",
|
||||
"speak-numeral", "speak-punctuation", "speech-rate", "stress", "string-set",
|
||||
"tab-size", "table-layout", "target", "target-name", "target-new",
|
||||
"target-position", "text-align", "text-align-last", "text-decoration",
|
||||
"text-decoration-color", "text-decoration-line", "text-decoration-skip",
|
||||
"text-decoration-style", "text-emphasis", "text-emphasis-color",
|
||||
"text-emphasis-position", "text-emphasis-style", "text-height",
|
||||
"text-indent", "text-justify", "text-outline", "text-overflow", "text-shadow",
|
||||
"text-size-adjust", "text-space-collapse", "text-transform", "text-underline-position",
|
||||
"text-wrap", "top", "transform", "transform-origin", "transform-style",
|
||||
"transition", "transition-delay", "transition-duration",
|
||||
"transition-property", "transition-timing-function", "unicode-bidi",
|
||||
"user-select", "vertical-align", "visibility", "voice-balance", "voice-duration",
|
||||
"voice-family", "voice-pitch", "voice-range", "voice-rate", "voice-stress",
|
||||
"voice-volume", "volume", "white-space", "widows", "width", "will-change", "word-break",
|
||||
"word-spacing", "word-wrap", "z-index",
|
||||
// SVG-specific
|
||||
"clip-path", "clip-rule", "mask", "enable-background", "filter", "flood-color",
|
||||
"flood-opacity", "lighting-color", "stop-color", "stop-opacity", "pointer-events",
|
||||
"color-interpolation", "color-interpolation-filters",
|
||||
"color-rendering", "fill", "fill-opacity", "fill-rule", "image-rendering",
|
||||
"marker", "marker-end", "marker-mid", "marker-start", "shape-rendering", "stroke",
|
||||
"stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin",
|
||||
"stroke-miterlimit", "stroke-opacity", "stroke-width", "text-rendering",
|
||||
"baseline-shift", "dominant-baseline", "glyph-orientation-horizontal",
|
||||
"glyph-orientation-vertical", "text-anchor", "writing-mode"
|
||||
], propertyKeywords = keySet(propertyKeywords_);
|
||||
|
||||
var nonStandardPropertyKeywords_ = [
|
||||
"scrollbar-arrow-color", "scrollbar-base-color", "scrollbar-dark-shadow-color",
|
||||
"scrollbar-face-color", "scrollbar-highlight-color", "scrollbar-shadow-color",
|
||||
"scrollbar-3d-light-color", "scrollbar-track-color", "shape-inside",
|
||||
"searchfield-cancel-button", "searchfield-decoration", "searchfield-results-button",
|
||||
"searchfield-results-decoration", "zoom"
|
||||
], nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_);
|
||||
|
||||
var fontProperties_ = [
|
||||
"font-family", "src", "unicode-range", "font-variant", "font-feature-settings",
|
||||
"font-stretch", "font-weight", "font-style"
|
||||
], fontProperties = keySet(fontProperties_);
|
||||
|
||||
var counterDescriptors_ = [
|
||||
"additive-symbols", "fallback", "negative", "pad", "prefix", "range",
|
||||
"speak-as", "suffix", "symbols", "system"
|
||||
], counterDescriptors = keySet(counterDescriptors_);
|
||||
|
||||
var colorKeywords_ = [
|
||||
"aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige",
|
||||
"bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown",
|
||||
"burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue",
|
||||
"cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod",
|
||||
"darkgray", "darkgreen", "darkkhaki", "darkmagenta", "darkolivegreen",
|
||||
"darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen",
|
||||
"darkslateblue", "darkslategray", "darkturquoise", "darkviolet",
|
||||
"deeppink", "deepskyblue", "dimgray", "dodgerblue", "firebrick",
|
||||
"floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite",
|
||||
"gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew",
|
||||
"hotpink", "indianred", "indigo", "ivory", "khaki", "lavender",
|
||||
"lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral",
|
||||
"lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightpink",
|
||||
"lightsalmon", "lightseagreen", "lightskyblue", "lightslategray",
|
||||
"lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta",
|
||||
"maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple",
|
||||
"mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise",
|
||||
"mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin",
|
||||
"navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered",
|
||||
"orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred",
|
||||
"papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue",
|
||||
"purple", "rebeccapurple", "red", "rosybrown", "royalblue", "saddlebrown",
|
||||
"salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue",
|
||||
"slateblue", "slategray", "snow", "springgreen", "steelblue", "tan",
|
||||
"teal", "thistle", "tomato", "turquoise", "violet", "wheat", "white",
|
||||
"whitesmoke", "yellow", "yellowgreen"
|
||||
], colorKeywords = keySet(colorKeywords_);
|
||||
|
||||
var valueKeywords_ = [
|
||||
"above", "absolute", "activeborder", "additive", "activecaption", "afar",
|
||||
"after-white-space", "ahead", "alias", "all", "all-scroll", "alphabetic", "alternate",
|
||||
"always", "amharic", "amharic-abegede", "antialiased", "appworkspace",
|
||||
"arabic-indic", "armenian", "asterisks", "attr", "auto", "auto-flow", "avoid", "avoid-column", "avoid-page",
|
||||
"avoid-region", "background", "backwards", "baseline", "below", "bidi-override", "binary",
|
||||
"bengali", "blink", "block", "block-axis", "bold", "bolder", "border", "border-box",
|
||||
"both", "bottom", "break", "break-all", "break-word", "bullets", "button", "button-bevel",
|
||||
"buttonface", "buttonhighlight", "buttonshadow", "buttontext", "calc", "cambodian",
|
||||
"capitalize", "caps-lock-indicator", "caption", "captiontext", "caret",
|
||||
"cell", "center", "checkbox", "circle", "cjk-decimal", "cjk-earthly-branch",
|
||||
"cjk-heavenly-stem", "cjk-ideographic", "clear", "clip", "close-quote",
|
||||
"col-resize", "collapse", "color", "color-burn", "color-dodge", "column", "column-reverse",
|
||||
"compact", "condensed", "contain", "content", "contents",
|
||||
"content-box", "context-menu", "continuous", "copy", "counter", "counters", "cover", "crop",
|
||||
"cross", "crosshair", "currentcolor", "cursive", "cyclic", "darken", "dashed", "decimal",
|
||||
"decimal-leading-zero", "default", "default-button", "dense", "destination-atop",
|
||||
"destination-in", "destination-out", "destination-over", "devanagari", "difference",
|
||||
"disc", "discard", "disclosure-closed", "disclosure-open", "document",
|
||||
"dot-dash", "dot-dot-dash",
|
||||
"dotted", "double", "down", "e-resize", "ease", "ease-in", "ease-in-out", "ease-out",
|
||||
"element", "ellipse", "ellipsis", "embed", "end", "ethiopic", "ethiopic-abegede",
|
||||
"ethiopic-abegede-am-et", "ethiopic-abegede-gez", "ethiopic-abegede-ti-er",
|
||||
"ethiopic-abegede-ti-et", "ethiopic-halehame-aa-er",
|
||||
"ethiopic-halehame-aa-et", "ethiopic-halehame-am-et",
|
||||
"ethiopic-halehame-gez", "ethiopic-halehame-om-et",
|
||||
"ethiopic-halehame-sid-et", "ethiopic-halehame-so-et",
|
||||
"ethiopic-halehame-ti-er", "ethiopic-halehame-ti-et", "ethiopic-halehame-tig",
|
||||
"ethiopic-numeric", "ew-resize", "exclusion", "expanded", "extends", "extra-condensed",
|
||||
"extra-expanded", "fantasy", "fast", "fill", "fixed", "flat", "flex", "flex-end", "flex-start", "footnotes",
|
||||
"forwards", "from", "geometricPrecision", "georgian", "graytext", "grid", "groove",
|
||||
"gujarati", "gurmukhi", "hand", "hangul", "hangul-consonant", "hard-light", "hebrew",
|
||||
"help", "hidden", "hide", "higher", "highlight", "highlighttext",
|
||||
"hiragana", "hiragana-iroha", "horizontal", "hsl", "hsla", "hue", "icon", "ignore",
|
||||
"inactiveborder", "inactivecaption", "inactivecaptiontext", "infinite",
|
||||
"infobackground", "infotext", "inherit", "initial", "inline", "inline-axis",
|
||||
"inline-block", "inline-flex", "inline-grid", "inline-table", "inset", "inside", "intrinsic", "invert",
|
||||
"italic", "japanese-formal", "japanese-informal", "justify", "kannada",
|
||||
"katakana", "katakana-iroha", "keep-all", "khmer",
|
||||
"korean-hangul-formal", "korean-hanja-formal", "korean-hanja-informal",
|
||||
"landscape", "lao", "large", "larger", "left", "level", "lighter", "lighten",
|
||||
"line-through", "linear", "linear-gradient", "lines", "list-item", "listbox", "listitem",
|
||||
"local", "logical", "loud", "lower", "lower-alpha", "lower-armenian",
|
||||
"lower-greek", "lower-hexadecimal", "lower-latin", "lower-norwegian",
|
||||
"lower-roman", "lowercase", "ltr", "luminosity", "malayalam", "match", "matrix", "matrix3d",
|
||||
"media-controls-background", "media-current-time-display",
|
||||
"media-fullscreen-button", "media-mute-button", "media-play-button",
|
||||
"media-return-to-realtime-button", "media-rewind-button",
|
||||
"media-seek-back-button", "media-seek-forward-button", "media-slider",
|
||||
"media-sliderthumb", "media-time-remaining-display", "media-volume-slider",
|
||||
"media-volume-slider-container", "media-volume-sliderthumb", "medium",
|
||||
"menu", "menulist", "menulist-button", "menulist-text",
|
||||
"menulist-textfield", "menutext", "message-box", "middle", "min-intrinsic",
|
||||
"mix", "mongolian", "monospace", "move", "multiple", "multiply", "myanmar", "n-resize",
|
||||
"narrower", "ne-resize", "nesw-resize", "no-close-quote", "no-drop",
|
||||
"no-open-quote", "no-repeat", "none", "normal", "not-allowed", "nowrap",
|
||||
"ns-resize", "numbers", "numeric", "nw-resize", "nwse-resize", "oblique", "octal", "opacity", "open-quote",
|
||||
"optimizeLegibility", "optimizeSpeed", "oriya", "oromo", "outset",
|
||||
"outside", "outside-shape", "overlay", "overline", "padding", "padding-box",
|
||||
"painted", "page", "paused", "persian", "perspective", "plus-darker", "plus-lighter",
|
||||
"pointer", "polygon", "portrait", "pre", "pre-line", "pre-wrap", "preserve-3d",
|
||||
"progress", "push-button", "radial-gradient", "radio", "read-only",
|
||||
"read-write", "read-write-plaintext-only", "rectangle", "region",
|
||||
"relative", "repeat", "repeating-linear-gradient",
|
||||
"repeating-radial-gradient", "repeat-x", "repeat-y", "reset", "reverse",
|
||||
"rgb", "rgba", "ridge", "right", "rotate", "rotate3d", "rotateX", "rotateY",
|
||||
"rotateZ", "round", "row", "row-resize", "row-reverse", "rtl", "run-in", "running",
|
||||
"s-resize", "sans-serif", "saturation", "scale", "scale3d", "scaleX", "scaleY", "scaleZ", "screen",
|
||||
"scroll", "scrollbar", "scroll-position", "se-resize", "searchfield",
|
||||
"searchfield-cancel-button", "searchfield-decoration",
|
||||
"searchfield-results-button", "searchfield-results-decoration", "self-start", "self-end",
|
||||
"semi-condensed", "semi-expanded", "separate", "serif", "show", "sidama",
|
||||
"simp-chinese-formal", "simp-chinese-informal", "single",
|
||||
"skew", "skewX", "skewY", "skip-white-space", "slide", "slider-horizontal",
|
||||
"slider-vertical", "sliderthumb-horizontal", "sliderthumb-vertical", "slow",
|
||||
"small", "small-caps", "small-caption", "smaller", "soft-light", "solid", "somali",
|
||||
"source-atop", "source-in", "source-out", "source-over", "space", "space-around", "space-between", "space-evenly", "spell-out", "square",
|
||||
"square-button", "start", "static", "status-bar", "stretch", "stroke", "sub",
|
||||
"subpixel-antialiased", "super", "sw-resize", "symbolic", "symbols", "system-ui", "table",
|
||||
"table-caption", "table-cell", "table-column", "table-column-group",
|
||||
"table-footer-group", "table-header-group", "table-row", "table-row-group",
|
||||
"tamil",
|
||||
"telugu", "text", "text-bottom", "text-top", "textarea", "textfield", "thai",
|
||||
"thick", "thin", "threeddarkshadow", "threedface", "threedhighlight",
|
||||
"threedlightshadow", "threedshadow", "tibetan", "tigre", "tigrinya-er",
|
||||
"tigrinya-er-abegede", "tigrinya-et", "tigrinya-et-abegede", "to", "top",
|
||||
"trad-chinese-formal", "trad-chinese-informal", "transform",
|
||||
"translate", "translate3d", "translateX", "translateY", "translateZ",
|
||||
"transparent", "ultra-condensed", "ultra-expanded", "underline", "unset", "up",
|
||||
"upper-alpha", "upper-armenian", "upper-greek", "upper-hexadecimal",
|
||||
"upper-latin", "upper-norwegian", "upper-roman", "uppercase", "urdu", "url",
|
||||
"var", "vertical", "vertical-text", "visible", "visibleFill", "visiblePainted",
|
||||
"visibleStroke", "visual", "w-resize", "wait", "wave", "wider",
|
||||
"window", "windowframe", "windowtext", "words", "wrap", "wrap-reverse", "x-large", "x-small", "xor",
|
||||
"xx-large", "xx-small"
|
||||
], valueKeywords = keySet(valueKeywords_);
|
||||
|
||||
var allWords = documentTypes_.concat(mediaTypes_).concat(mediaFeatures_).concat(mediaValueKeywords_)
|
||||
.concat(propertyKeywords_).concat(nonStandardPropertyKeywords_).concat(colorKeywords_)
|
||||
.concat(valueKeywords_);
|
||||
CodeMirror.registerHelper("hintWords", "css", allWords);
|
||||
|
||||
function tokenCComment(stream, state) {
|
||||
var maybeEnd = false, ch;
|
||||
while ((ch = stream.next()) != null) {
|
||||
if (maybeEnd && ch == "/") {
|
||||
state.tokenize = null;
|
||||
break;
|
||||
}
|
||||
maybeEnd = (ch == "*");
|
||||
}
|
||||
return ["comment", "comment"];
|
||||
}
|
||||
|
||||
CodeMirror.defineMIME("text/css", {
|
||||
documentTypes: documentTypes,
|
||||
mediaTypes: mediaTypes,
|
||||
mediaFeatures: mediaFeatures,
|
||||
mediaValueKeywords: mediaValueKeywords,
|
||||
propertyKeywords: propertyKeywords,
|
||||
nonStandardPropertyKeywords: nonStandardPropertyKeywords,
|
||||
fontProperties: fontProperties,
|
||||
counterDescriptors: counterDescriptors,
|
||||
colorKeywords: colorKeywords,
|
||||
valueKeywords: valueKeywords,
|
||||
tokenHooks: {
|
||||
"/": function(stream, state) {
|
||||
if (!stream.eat("*")) return false;
|
||||
state.tokenize = tokenCComment;
|
||||
return tokenCComment(stream, state);
|
||||
}
|
||||
},
|
||||
name: "css"
|
||||
});
|
||||
|
||||
CodeMirror.defineMIME("text/x-scss", {
|
||||
mediaTypes: mediaTypes,
|
||||
mediaFeatures: mediaFeatures,
|
||||
mediaValueKeywords: mediaValueKeywords,
|
||||
propertyKeywords: propertyKeywords,
|
||||
nonStandardPropertyKeywords: nonStandardPropertyKeywords,
|
||||
colorKeywords: colorKeywords,
|
||||
valueKeywords: valueKeywords,
|
||||
fontProperties: fontProperties,
|
||||
allowNested: true,
|
||||
lineComment: "//",
|
||||
tokenHooks: {
|
||||
"/": function(stream, state) {
|
||||
if (stream.eat("/")) {
|
||||
stream.skipToEnd();
|
||||
return ["comment", "comment"];
|
||||
} else if (stream.eat("*")) {
|
||||
state.tokenize = tokenCComment;
|
||||
return tokenCComment(stream, state);
|
||||
} else {
|
||||
return ["operator", "operator"];
|
||||
}
|
||||
},
|
||||
":": function(stream) {
|
||||
if (stream.match(/\s*\{/, false))
|
||||
return [null, null]
|
||||
return false;
|
||||
},
|
||||
"$": function(stream) {
|
||||
stream.match(/^[\w-]+/);
|
||||
if (stream.match(/^\s*:/, false))
|
||||
return ["variable-2", "variable-definition"];
|
||||
return ["variable-2", "variable"];
|
||||
},
|
||||
"#": function(stream) {
|
||||
if (!stream.eat("{")) return false;
|
||||
return [null, "interpolation"];
|
||||
}
|
||||
},
|
||||
name: "css",
|
||||
helperType: "scss"
|
||||
});
|
||||
|
||||
CodeMirror.defineMIME("text/x-less", {
|
||||
mediaTypes: mediaTypes,
|
||||
mediaFeatures: mediaFeatures,
|
||||
mediaValueKeywords: mediaValueKeywords,
|
||||
propertyKeywords: propertyKeywords,
|
||||
nonStandardPropertyKeywords: nonStandardPropertyKeywords,
|
||||
colorKeywords: colorKeywords,
|
||||
valueKeywords: valueKeywords,
|
||||
fontProperties: fontProperties,
|
||||
allowNested: true,
|
||||
lineComment: "//",
|
||||
tokenHooks: {
|
||||
"/": function(stream, state) {
|
||||
if (stream.eat("/")) {
|
||||
stream.skipToEnd();
|
||||
return ["comment", "comment"];
|
||||
} else if (stream.eat("*")) {
|
||||
state.tokenize = tokenCComment;
|
||||
return tokenCComment(stream, state);
|
||||
} else {
|
||||
return ["operator", "operator"];
|
||||
}
|
||||
},
|
||||
"@": function(stream) {
|
||||
if (stream.eat("{")) return [null, "interpolation"];
|
||||
if (stream.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\b/i, false)) return false;
|
||||
stream.eatWhile(/[\w\\\-]/);
|
||||
if (stream.match(/^\s*:/, false))
|
||||
return ["variable-2", "variable-definition"];
|
||||
return ["variable-2", "variable"];
|
||||
},
|
||||
"&": function() {
|
||||
return ["atom", "atom"];
|
||||
}
|
||||
},
|
||||
name: "css",
|
||||
helperType: "less"
|
||||
});
|
||||
|
||||
CodeMirror.defineMIME("text/x-gss", {
|
||||
documentTypes: documentTypes,
|
||||
mediaTypes: mediaTypes,
|
||||
mediaFeatures: mediaFeatures,
|
||||
propertyKeywords: propertyKeywords,
|
||||
nonStandardPropertyKeywords: nonStandardPropertyKeywords,
|
||||
fontProperties: fontProperties,
|
||||
counterDescriptors: counterDescriptors,
|
||||
colorKeywords: colorKeywords,
|
||||
valueKeywords: valueKeywords,
|
||||
supportsAtComponent: true,
|
||||
tokenHooks: {
|
||||
"/": function(stream, state) {
|
||||
if (!stream.eat("*")) return false;
|
||||
state.tokenize = tokenCComment;
|
||||
return tokenCComment(stream, state);
|
||||
}
|
||||
},
|
||||
name: "css",
|
||||
helperType: "gss"
|
||||
});
|
||||
|
||||
});
|
||||
@@ -1,103 +0,0 @@
|
||||
<!doctype html>
|
||||
|
||||
<title>CodeMirror: Closure Stylesheets (GSS) mode</title>
|
||||
<meta charset="utf-8"/>
|
||||
<link rel=stylesheet href="../../doc/docs.css">
|
||||
|
||||
<link rel="stylesheet" href="../../lib/codemirror.css">
|
||||
<link rel="stylesheet" href="../../addon/hint/show-hint.css">
|
||||
<script src="../../lib/codemirror.js"></script>
|
||||
<script src="css.js"></script>
|
||||
<script src="../../addon/hint/show-hint.js"></script>
|
||||
<script src="../../addon/hint/css-hint.js"></script>
|
||||
<style>.CodeMirror {background: #f8f8f8;}</style>
|
||||
<div id=nav>
|
||||
<a href="https://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>
|
||||
|
||||
<ul>
|
||||
<li><a href="../../index.html">Home</a>
|
||||
<li><a href="../../doc/manual.html">Manual</a>
|
||||
<li><a href="https://github.com/codemirror/codemirror">Code</a>
|
||||
</ul>
|
||||
<ul>
|
||||
<li><a href="../index.html">Language modes</a>
|
||||
<li><a class=active href="#">Closure Stylesheets (GSS)</a>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<article>
|
||||
<h2>Closure Stylesheets (GSS) mode</h2>
|
||||
<form><textarea id="code" name="code">
|
||||
/* Some example Closure Stylesheets */
|
||||
|
||||
@provide 'some.styles';
|
||||
|
||||
@require 'other.styles';
|
||||
|
||||
@component {
|
||||
|
||||
@def FONT_FAMILY "Times New Roman", Georgia, Serif;
|
||||
@def FONT_SIZE_NORMAL 15px;
|
||||
@def FONT_NORMAL normal FONT_SIZE_NORMAL FONT_FAMILY;
|
||||
|
||||
@def BG_COLOR rgb(235, 239, 249);
|
||||
|
||||
@def DIALOG_BORDER_COLOR rgb(107, 144, 218);
|
||||
@def DIALOG_BG_COLOR BG_COLOR;
|
||||
|
||||
@def LEFT_HAND_NAV_WIDTH 180px;
|
||||
@def LEFT_HAND_NAV_PADDING 3px;
|
||||
|
||||
@defmixin size(WIDTH, HEIGHT) {
|
||||
width: WIDTH;
|
||||
height: HEIGHT;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: BG_COLOR;
|
||||
margin: 0;
|
||||
padding: 3em 6em;
|
||||
font: FONT_NORMAL;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
#navigation a {
|
||||
font-weight: bold;
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
.dialog {
|
||||
background-color: DIALOG_BG_COLOR;
|
||||
border: 1px solid DIALOG_BORDER_COLOR;
|
||||
}
|
||||
|
||||
.content {
|
||||
position: absolute;
|
||||
margin-left: add(LEFT_HAND_NAV_PADDING, /* padding left */
|
||||
LEFT_HAND_NAV_WIDTH,
|
||||
LEFT_HAND_NAV_PADDING); /* padding right */
|
||||
|
||||
}
|
||||
|
||||
.logo {
|
||||
@mixin size(150px, 55px);
|
||||
background-image: url('http://www.google.com/images/logo_sm.gif');
|
||||
}
|
||||
|
||||
}
|
||||
</textarea></form>
|
||||
<script>
|
||||
var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
|
||||
extraKeys: {"Ctrl-Space": "autocomplete"},
|
||||
lineNumbers: true,
|
||||
matchBrackets: "text/x-less",
|
||||
mode: "text/x-gss"
|
||||
});
|
||||
</script>
|
||||
|
||||
<p>A mode for <a href="https://github.com/google/closure-stylesheets">Closure Stylesheets</a> (GSS).</p>
|
||||
<p><strong>MIME type defined:</strong> <code>text/x-gss</code>.</p>
|
||||
|
||||
<p><strong>Parsing/Highlighting Tests:</strong> <a href="../../test/index.html#gss_*">normal</a>, <a href="../../test/index.html#verbose,gss_*">verbose</a>.</p>
|
||||
|
||||
</article>
|
||||
@@ -1,17 +0,0 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
|
||||
(function() {
|
||||
"use strict";
|
||||
|
||||
var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-gss");
|
||||
function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "gss"); }
|
||||
|
||||
MT("atComponent",
|
||||
"[def @component] {",
|
||||
"[tag foo] {",
|
||||
" [property color]: [keyword black];",
|
||||
"}",
|
||||
"}");
|
||||
|
||||
})();
|
||||
@@ -1,75 +0,0 @@
|
||||
<!doctype html>
|
||||
|
||||
<title>CodeMirror: CSS mode</title>
|
||||
<meta charset="utf-8"/>
|
||||
<link rel=stylesheet href="../../doc/docs.css">
|
||||
|
||||
<link rel="stylesheet" href="../../lib/codemirror.css">
|
||||
<link rel="stylesheet" href="../../addon/hint/show-hint.css">
|
||||
<script src="../../lib/codemirror.js"></script>
|
||||
<script src="css.js"></script>
|
||||
<script src="../../addon/hint/show-hint.js"></script>
|
||||
<script src="../../addon/hint/css-hint.js"></script>
|
||||
<style>.CodeMirror {background: #f8f8f8;}</style>
|
||||
<div id=nav>
|
||||
<a href="https://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>
|
||||
|
||||
<ul>
|
||||
<li><a href="../../index.html">Home</a>
|
||||
<li><a href="../../doc/manual.html">Manual</a>
|
||||
<li><a href="https://github.com/codemirror/codemirror">Code</a>
|
||||
</ul>
|
||||
<ul>
|
||||
<li><a href="../index.html">Language modes</a>
|
||||
<li><a class=active href="#">CSS</a>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<article>
|
||||
<h2>CSS mode</h2>
|
||||
<form><textarea id="code" name="code">
|
||||
/* Some example CSS */
|
||||
|
||||
@import url("something.css");
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 3em 6em;
|
||||
font-family: tahoma, arial, sans-serif;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
#navigation a {
|
||||
font-weight: bold;
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 2.5em;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.7em;
|
||||
}
|
||||
|
||||
h1:before, h2:before {
|
||||
content: "::";
|
||||
}
|
||||
|
||||
code {
|
||||
font-family: courier, monospace;
|
||||
font-size: 80%;
|
||||
color: #418A8A;
|
||||
}
|
||||
</textarea></form>
|
||||
<script>
|
||||
var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
|
||||
extraKeys: {"Ctrl-Space": "autocomplete"}
|
||||
});
|
||||
</script>
|
||||
|
||||
<p><strong>MIME types defined:</strong> <code>text/css</code>, <code>text/x-scss</code> (<a href="scss.html">demo</a>), <code>text/x-less</code> (<a href="less.html">demo</a>).</p>
|
||||
|
||||
<p><strong>Parsing/Highlighting Tests:</strong> <a href="../../test/index.html#css_*">normal</a>, <a href="../../test/index.html#verbose,css_*">verbose</a>.</p>
|
||||
|
||||
</article>
|
||||
@@ -1,152 +0,0 @@
|
||||
<!doctype html>
|
||||
|
||||
<title>CodeMirror: LESS mode</title>
|
||||
<meta charset="utf-8"/>
|
||||
<link rel=stylesheet href="../../doc/docs.css">
|
||||
|
||||
<link rel="stylesheet" href="../../lib/codemirror.css">
|
||||
<script src="../../lib/codemirror.js"></script>
|
||||
<script src="../../addon/edit/matchbrackets.js"></script>
|
||||
<script src="css.js"></script>
|
||||
<style>.CodeMirror {border: 1px solid #ddd; line-height: 1.2;}</style>
|
||||
<div id=nav>
|
||||
<a href="https://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>
|
||||
|
||||
<ul>
|
||||
<li><a href="../../index.html">Home</a>
|
||||
<li><a href="../../doc/manual.html">Manual</a>
|
||||
<li><a href="https://github.com/codemirror/codemirror">Code</a>
|
||||
</ul>
|
||||
<ul>
|
||||
<li><a href="../index.html">Language modes</a>
|
||||
<li><a class=active href="#">LESS</a>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<article>
|
||||
<h2>LESS mode</h2>
|
||||
<form><textarea id="code" name="code">@media screen and (device-aspect-ratio: 16/9) { … }
|
||||
@media screen and (device-aspect-ratio: 1280/720) { … }
|
||||
@media screen and (device-aspect-ratio: 2560/1440) { … }
|
||||
|
||||
html:lang(fr-be)
|
||||
|
||||
tr:nth-child(2n+1) /* represents every odd row of an HTML table */
|
||||
|
||||
img:nth-of-type(2n+1) { float: right; }
|
||||
img:nth-of-type(2n) { float: left; }
|
||||
|
||||
body > h2:not(:first-of-type):not(:last-of-type)
|
||||
|
||||
html|*:not(:link):not(:visited)
|
||||
*|*:not(:hover)
|
||||
p::first-line { text-transform: uppercase }
|
||||
|
||||
@namespace foo url(http://www.example.com);
|
||||
foo|h1 { color: blue } /* first rule */
|
||||
|
||||
span[hello="Ocean"][goodbye="Land"]
|
||||
|
||||
E[foo]{
|
||||
padding:65px;
|
||||
}
|
||||
|
||||
input[type="search"]::-webkit-search-decoration,
|
||||
input[type="search"]::-webkit-search-cancel-button {
|
||||
-webkit-appearance: none; // Inner-padding issues in Chrome OSX, Safari 5
|
||||
}
|
||||
button::-moz-focus-inner,
|
||||
input::-moz-focus-inner { // Inner padding and border oddities in FF3/4
|
||||
padding: 0;
|
||||
border: 0;
|
||||
}
|
||||
.btn {
|
||||
// reset here as of 2.0.3 due to Recess property order
|
||||
border-color: #ccc;
|
||||
border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);
|
||||
}
|
||||
fieldset span button, fieldset span input[type="file"] {
|
||||
font-size:12px;
|
||||
font-family:Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
.rounded-corners (@radius: 5px) {
|
||||
border-radius: @radius;
|
||||
-webkit-border-radius: @radius;
|
||||
-moz-border-radius: @radius;
|
||||
}
|
||||
|
||||
@import url("something.css");
|
||||
|
||||
@light-blue: hsl(190, 50%, 65%);
|
||||
|
||||
#menu {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
z-index: 3;
|
||||
clear: both;
|
||||
display: block;
|
||||
background-color: @blue;
|
||||
height: 42px;
|
||||
border-top: 2px solid lighten(@alpha-blue, 20%);
|
||||
border-bottom: 2px solid darken(@alpha-blue, 25%);
|
||||
.box-shadow(0, 1px, 8px, 0.6);
|
||||
-moz-box-shadow: 0 0 0 #000; // Because firefox sucks.
|
||||
|
||||
&.docked {
|
||||
background-color: hsla(210, 60%, 40%, 0.4);
|
||||
}
|
||||
&:hover {
|
||||
background-color: @blue;
|
||||
}
|
||||
|
||||
#dropdown {
|
||||
margin: 0 0 0 117px;
|
||||
padding: 0;
|
||||
padding-top: 5px;
|
||||
display: none;
|
||||
width: 190px;
|
||||
border-top: 2px solid @medium;
|
||||
color: @highlight;
|
||||
border: 2px solid darken(@medium, 25%);
|
||||
border-left-color: darken(@medium, 15%);
|
||||
border-right-color: darken(@medium, 15%);
|
||||
border-top-width: 0;
|
||||
background-color: darken(@medium, 10%);
|
||||
ul {
|
||||
padding: 0px;
|
||||
}
|
||||
li {
|
||||
font-size: 14px;
|
||||
display: block;
|
||||
text-align: left;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
a {
|
||||
display: block;
|
||||
padding: 0px 15px;
|
||||
text-decoration: none;
|
||||
color: white;
|
||||
&:hover {
|
||||
background-color: darken(@medium, 15%);
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
.border-radius(5px, bottom);
|
||||
.box-shadow(0, 6px, 8px, 0.5);
|
||||
}
|
||||
}
|
||||
</textarea></form>
|
||||
<script>
|
||||
var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
|
||||
lineNumbers : true,
|
||||
matchBrackets : true,
|
||||
mode: "text/x-less"
|
||||
});
|
||||
</script>
|
||||
|
||||
<p>The LESS mode is a sub-mode of the <a href="index.html">CSS mode</a> (defined in <code>css.js</code>).</p>
|
||||
|
||||
<p><strong>Parsing/Highlighting Tests:</strong> <a href="../../test/index.html#less_*">normal</a>, <a href="../../test/index.html#verbose,less_*">verbose</a>.</p>
|
||||
</article>
|
||||
@@ -1,54 +0,0 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
|
||||
(function() {
|
||||
"use strict";
|
||||
|
||||
var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-less");
|
||||
function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "less"); }
|
||||
|
||||
MT("variable",
|
||||
"[variable-2 @base]: [atom #f04615];",
|
||||
"[qualifier .class] {",
|
||||
" [property width]: [variable percentage]([number 0.5]); [comment // returns `50%`]",
|
||||
" [property color]: [variable saturate]([variable-2 @base], [number 5%]);",
|
||||
"}");
|
||||
|
||||
MT("amp",
|
||||
"[qualifier .child], [qualifier .sibling] {",
|
||||
" [qualifier .parent] [atom &] {",
|
||||
" [property color]: [keyword black];",
|
||||
" }",
|
||||
" [atom &] + [atom &] {",
|
||||
" [property color]: [keyword red];",
|
||||
" }",
|
||||
"}");
|
||||
|
||||
MT("mixin",
|
||||
"[qualifier .mixin] ([variable dark]; [variable-2 @color]) {",
|
||||
" [property color]: [atom darken]([variable-2 @color], [number 10%]);",
|
||||
"}",
|
||||
"[qualifier .mixin] ([variable light]; [variable-2 @color]) {",
|
||||
" [property color]: [atom lighten]([variable-2 @color], [number 10%]);",
|
||||
"}",
|
||||
"[qualifier .mixin] ([variable-2 @_]; [variable-2 @color]) {",
|
||||
" [property display]: [atom block];",
|
||||
"}",
|
||||
"[variable-2 @switch]: [variable light];",
|
||||
"[qualifier .class] {",
|
||||
" [qualifier .mixin]([variable-2 @switch]; [atom #888]);",
|
||||
"}");
|
||||
|
||||
MT("nest",
|
||||
"[qualifier .one] {",
|
||||
" [def @media] ([property width]: [number 400px]) {",
|
||||
" [property font-size]: [number 1.2em];",
|
||||
" [def @media] [attribute print] [keyword and] [property color] {",
|
||||
" [property color]: [keyword blue];",
|
||||
" }",
|
||||
" }",
|
||||
"}");
|
||||
|
||||
|
||||
MT("interpolation", ".@{[variable foo]} { [property font-weight]: [atom bold]; }");
|
||||
})();
|
||||
@@ -1,157 +0,0 @@
|
||||
<!doctype html>
|
||||
|
||||
<title>CodeMirror: SCSS mode</title>
|
||||
<meta charset="utf-8"/>
|
||||
<link rel=stylesheet href="../../doc/docs.css">
|
||||
|
||||
<link rel="stylesheet" href="../../lib/codemirror.css">
|
||||
<script src="../../lib/codemirror.js"></script>
|
||||
<script src="css.js"></script>
|
||||
<style>.CodeMirror {background: #f8f8f8;}</style>
|
||||
<div id=nav>
|
||||
<a href="https://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>
|
||||
|
||||
<ul>
|
||||
<li><a href="../../index.html">Home</a>
|
||||
<li><a href="../../doc/manual.html">Manual</a>
|
||||
<li><a href="https://github.com/codemirror/codemirror">Code</a>
|
||||
</ul>
|
||||
<ul>
|
||||
<li><a href="../index.html">Language modes</a>
|
||||
<li><a class=active href="#">SCSS</a>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<article>
|
||||
<h2>SCSS mode</h2>
|
||||
<form><textarea id="code" name="code">
|
||||
/* Some example SCSS */
|
||||
|
||||
@import "compass/css3";
|
||||
$variable: #333;
|
||||
|
||||
$blue: #3bbfce;
|
||||
$margin: 16px;
|
||||
|
||||
.content-navigation {
|
||||
#nested {
|
||||
background-color: black;
|
||||
}
|
||||
border-color: $blue;
|
||||
color:
|
||||
darken($blue, 9%);
|
||||
}
|
||||
|
||||
.border {
|
||||
padding: $margin / 2;
|
||||
margin: $margin / 2;
|
||||
border-color: $blue;
|
||||
}
|
||||
|
||||
@mixin table-base {
|
||||
th {
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
}
|
||||
td, th {padding: 2px}
|
||||
}
|
||||
|
||||
table.hl {
|
||||
margin: 2em 0;
|
||||
td.ln {
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
|
||||
li {
|
||||
font: {
|
||||
family: serif;
|
||||
weight: bold;
|
||||
size: 1.2em;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin left($dist) {
|
||||
float: left;
|
||||
margin-left: $dist;
|
||||
}
|
||||
|
||||
#data {
|
||||
@include left(10px);
|
||||
@include table-base;
|
||||
}
|
||||
|
||||
.source {
|
||||
@include flow-into(target);
|
||||
border: 10px solid green;
|
||||
margin: 20px;
|
||||
width: 200px; }
|
||||
|
||||
.new-container {
|
||||
@include flow-from(target);
|
||||
border: 10px solid red;
|
||||
margin: 20px;
|
||||
width: 200px; }
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 3em 6em;
|
||||
font-family: tahoma, arial, sans-serif;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
@mixin yellow() {
|
||||
background: yellow;
|
||||
}
|
||||
|
||||
.big {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.nested {
|
||||
@include border-radius(3px);
|
||||
@extend .big;
|
||||
p {
|
||||
background: whitesmoke;
|
||||
a {
|
||||
color: red;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#navigation a {
|
||||
font-weight: bold;
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 2.5em;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.7em;
|
||||
}
|
||||
|
||||
h1:before, h2:before {
|
||||
content: "::";
|
||||
}
|
||||
|
||||
code {
|
||||
font-family: courier, monospace;
|
||||
font-size: 80%;
|
||||
color: #418A8A;
|
||||
}
|
||||
</textarea></form>
|
||||
<script>
|
||||
var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
|
||||
lineNumbers: true,
|
||||
matchBrackets: true,
|
||||
mode: "text/x-scss"
|
||||
});
|
||||
</script>
|
||||
|
||||
<p>The SCSS mode is a sub-mode of the <a href="index.html">CSS mode</a> (defined in <code>css.js</code>).</p>
|
||||
|
||||
<p><strong>Parsing/Highlighting Tests:</strong> <a href="../../test/index.html#scss_*">normal</a>, <a href="../../test/index.html#verbose,scss_*">verbose</a>.</p>
|
||||
|
||||
</article>
|
||||
@@ -1,110 +0,0 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
|
||||
(function() {
|
||||
var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-scss");
|
||||
function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "scss"); }
|
||||
|
||||
MT('url_with_quotation',
|
||||
"[tag foo] { [property background]:[atom url]([string test.jpg]) }");
|
||||
|
||||
MT('url_with_double_quotes',
|
||||
"[tag foo] { [property background]:[atom url]([string \"test.jpg\"]) }");
|
||||
|
||||
MT('url_with_single_quotes',
|
||||
"[tag foo] { [property background]:[atom url]([string \'test.jpg\']) }");
|
||||
|
||||
MT('string',
|
||||
"[def @import] [string \"compass/css3\"]");
|
||||
|
||||
MT('important_keyword',
|
||||
"[tag foo] { [property background]:[atom url]([string \'test.jpg\']) [keyword !important] }");
|
||||
|
||||
MT('variable',
|
||||
"[variable-2 $blue]:[atom #333]");
|
||||
|
||||
MT('variable_as_attribute',
|
||||
"[tag foo] { [property color]:[variable-2 $blue] }");
|
||||
|
||||
MT('numbers',
|
||||
"[tag foo] { [property padding]:[number 10px] [number 10] [number 10em] [number 8in] }");
|
||||
|
||||
MT('number_percentage',
|
||||
"[tag foo] { [property width]:[number 80%] }");
|
||||
|
||||
MT('selector',
|
||||
"[builtin #hello][qualifier .world]{}");
|
||||
|
||||
MT('singleline_comment',
|
||||
"[comment // this is a comment]");
|
||||
|
||||
MT('multiline_comment',
|
||||
"[comment /*foobar*/]");
|
||||
|
||||
MT('attribute_with_hyphen',
|
||||
"[tag foo] { [property font-size]:[number 10px] }");
|
||||
|
||||
MT('string_after_attribute',
|
||||
"[tag foo] { [property content]:[string \"::\"] }");
|
||||
|
||||
MT('directives',
|
||||
"[def @include] [qualifier .mixin]");
|
||||
|
||||
MT('basic_structure',
|
||||
"[tag p] { [property background]:[keyword red]; }");
|
||||
|
||||
MT('nested_structure',
|
||||
"[tag p] { [tag a] { [property color]:[keyword red]; } }");
|
||||
|
||||
MT('mixin',
|
||||
"[def @mixin] [tag table-base] {}");
|
||||
|
||||
MT('number_without_semicolon',
|
||||
"[tag p] {[property width]:[number 12]}",
|
||||
"[tag a] {[property color]:[keyword red];}");
|
||||
|
||||
MT('atom_in_nested_block',
|
||||
"[tag p] { [tag a] { [property color]:[atom #000]; } }");
|
||||
|
||||
MT('interpolation_in_property',
|
||||
"[tag foo] { #{[variable-2 $hello]}:[number 2]; }");
|
||||
|
||||
MT('interpolation_in_selector',
|
||||
"[tag foo]#{[variable-2 $hello]} { [property color]:[atom #000]; }");
|
||||
|
||||
MT('interpolation_error',
|
||||
"[tag foo]#{[variable foo]} { [property color]:[atom #000]; }");
|
||||
|
||||
MT("divide_operator",
|
||||
"[tag foo] { [property width]:[number 4] [operator /] [number 2] }");
|
||||
|
||||
MT('nested_structure_with_id_selector',
|
||||
"[tag p] { [builtin #hello] { [property color]:[keyword red]; } }");
|
||||
|
||||
MT('indent_mixin',
|
||||
"[def @mixin] [tag container] (",
|
||||
" [variable-2 $a]: [number 10],",
|
||||
" [variable-2 $b]: [number 10])",
|
||||
"{}");
|
||||
|
||||
MT('indent_nested',
|
||||
"[tag foo] {",
|
||||
" [tag bar] {",
|
||||
" }",
|
||||
"}");
|
||||
|
||||
MT('indent_parentheses',
|
||||
"[tag foo] {",
|
||||
" [property color]: [atom darken]([variable-2 $blue],",
|
||||
" [number 9%]);",
|
||||
"}");
|
||||
|
||||
MT('indent_vardef',
|
||||
"[variable-2 $name]:",
|
||||
" [string 'val'];",
|
||||
"[tag tag] {",
|
||||
" [tag inner] {",
|
||||
" [property margin]: [number 3px];",
|
||||
" }",
|
||||
"}");
|
||||
})();
|
||||
@@ -1,209 +0,0 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
|
||||
(function() {
|
||||
var mode = CodeMirror.getMode({indentUnit: 2}, "css");
|
||||
function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }
|
||||
|
||||
// Error, because "foobarhello" is neither a known type or property, but
|
||||
// property was expected (after "and"), and it should be in parentheses.
|
||||
MT("atMediaUnknownType",
|
||||
"[def @media] [attribute screen] [keyword and] [error foobarhello] { }");
|
||||
|
||||
// Soft error, because "foobarhello" is not a known property or type.
|
||||
MT("atMediaUnknownProperty",
|
||||
"[def @media] [attribute screen] [keyword and] ([error foobarhello]) { }");
|
||||
|
||||
// Make sure nesting works with media queries
|
||||
MT("atMediaMaxWidthNested",
|
||||
"[def @media] [attribute screen] [keyword and] ([property max-width]: [number 25px]) { [tag foo] { } }");
|
||||
|
||||
MT("atMediaFeatureValueKeyword",
|
||||
"[def @media] ([property orientation]: [keyword landscape]) { }");
|
||||
|
||||
MT("atMediaUnknownFeatureValueKeyword",
|
||||
"[def @media] ([property orientation]: [error upsidedown]) { }");
|
||||
|
||||
MT("atMediaUppercase",
|
||||
"[def @MEDIA] ([property orienTAtion]: [keyword landScape]) { }");
|
||||
|
||||
MT("tagSelector",
|
||||
"[tag foo] { }");
|
||||
|
||||
MT("classSelector",
|
||||
"[qualifier .foo-bar_hello] { }");
|
||||
|
||||
MT("idSelector",
|
||||
"[builtin #foo] { [error #foo] }");
|
||||
|
||||
MT("tagSelectorUnclosed",
|
||||
"[tag foo] { [property margin]: [number 0] } [tag bar] { }");
|
||||
|
||||
MT("tagStringNoQuotes",
|
||||
"[tag foo] { [property font-family]: [variable hello] [variable world]; }");
|
||||
|
||||
MT("tagStringDouble",
|
||||
"[tag foo] { [property font-family]: [string \"hello world\"]; }");
|
||||
|
||||
MT("tagStringSingle",
|
||||
"[tag foo] { [property font-family]: [string 'hello world']; }");
|
||||
|
||||
MT("tagColorKeyword",
|
||||
"[tag foo] {",
|
||||
" [property color]: [keyword black];",
|
||||
" [property color]: [keyword navy];",
|
||||
" [property color]: [keyword yellow];",
|
||||
"}");
|
||||
|
||||
MT("tagColorHex3",
|
||||
"[tag foo] { [property background]: [atom #fff]; }");
|
||||
|
||||
MT("tagColorHex4",
|
||||
"[tag foo] { [property background]: [atom #ffff]; }");
|
||||
|
||||
MT("tagColorHex6",
|
||||
"[tag foo] { [property background]: [atom #ffffff]; }");
|
||||
|
||||
MT("tagColorHex8",
|
||||
"[tag foo] { [property background]: [atom #ffffffff]; }");
|
||||
|
||||
MT("tagColorHex5Invalid",
|
||||
"[tag foo] { [property background]: [atom&error #fffff]; }");
|
||||
|
||||
MT("tagColorHexInvalid",
|
||||
"[tag foo] { [property background]: [atom&error #ffg]; }");
|
||||
|
||||
MT("tagNegativeNumber",
|
||||
"[tag foo] { [property margin]: [number -5px]; }");
|
||||
|
||||
MT("tagPositiveNumber",
|
||||
"[tag foo] { [property padding]: [number 5px]; }");
|
||||
|
||||
MT("tagVendor",
|
||||
"[tag foo] { [meta -foo-][property box-sizing]: [meta -foo-][atom border-box]; }");
|
||||
|
||||
MT("tagBogusProperty",
|
||||
"[tag foo] { [property&error barhelloworld]: [number 0]; }");
|
||||
|
||||
MT("tagTwoProperties",
|
||||
"[tag foo] { [property margin]: [number 0]; [property padding]: [number 0]; }");
|
||||
|
||||
MT("tagTwoPropertiesURL",
|
||||
"[tag foo] { [property background]: [atom url]([string //example.com/foo.png]); [property padding]: [number 0]; }");
|
||||
|
||||
MT("indent_tagSelector",
|
||||
"[tag strong], [tag em] {",
|
||||
" [property background]: [atom rgba](",
|
||||
" [number 255], [number 255], [number 0], [number .2]",
|
||||
" );",
|
||||
"}");
|
||||
|
||||
MT("indent_atMedia",
|
||||
"[def @media] {",
|
||||
" [tag foo] {",
|
||||
" [property color]:",
|
||||
" [keyword yellow];",
|
||||
" }",
|
||||
"}");
|
||||
|
||||
MT("indent_comma",
|
||||
"[tag foo] {",
|
||||
" [property font-family]: [variable verdana],",
|
||||
" [atom sans-serif];",
|
||||
"}");
|
||||
|
||||
MT("indent_parentheses",
|
||||
"[tag foo]:[variable-3 before] {",
|
||||
" [property background]: [atom url](",
|
||||
"[string blahblah]",
|
||||
"[string etc]",
|
||||
"[string ]) [keyword !important];",
|
||||
"}");
|
||||
|
||||
MT("font_face",
|
||||
"[def @font-face] {",
|
||||
" [property font-family]: [string 'myfont'];",
|
||||
" [error nonsense]: [string 'abc'];",
|
||||
" [property src]: [atom url]([string http://blah]),",
|
||||
" [atom url]([string http://foo]);",
|
||||
"}");
|
||||
|
||||
MT("empty_url",
|
||||
"[def @import] [atom url]() [attribute screen];");
|
||||
|
||||
MT("parens",
|
||||
"[qualifier .foo] {",
|
||||
" [property background-image]: [variable fade]([atom #000], [number 20%]);",
|
||||
" [property border-image]: [atom linear-gradient](",
|
||||
" [atom to] [atom bottom],",
|
||||
" [variable fade]([atom #000], [number 20%]) [number 0%],",
|
||||
" [variable fade]([atom #000], [number 20%]) [number 100%]",
|
||||
" );",
|
||||
"}");
|
||||
|
||||
MT("css_variable",
|
||||
":[variable-3 root] {",
|
||||
" [variable-2 --main-color]: [atom #06c];",
|
||||
"}",
|
||||
"[tag h1][builtin #foo] {",
|
||||
" [property color]: [atom var]([variable-2 --main-color]);",
|
||||
"}");
|
||||
|
||||
MT("supports",
|
||||
"[def @supports] ([keyword not] (([property text-align-last]: [atom justify]) [keyword or] ([meta -moz-][property text-align-last]: [atom justify])) {",
|
||||
" [property text-align-last]: [atom justify];",
|
||||
"}");
|
||||
|
||||
MT("document",
|
||||
"[def @document] [tag url]([string http://blah]),",
|
||||
" [tag url-prefix]([string https://]),",
|
||||
" [tag domain]([string blah.com]),",
|
||||
" [tag regexp]([string \".*blah.+\"]) {",
|
||||
" [builtin #id] {",
|
||||
" [property background-color]: [keyword white];",
|
||||
" }",
|
||||
" [tag foo] {",
|
||||
" [property font-family]: [variable Verdana], [atom sans-serif];",
|
||||
" }",
|
||||
"}");
|
||||
|
||||
MT("document_url",
|
||||
"[def @document] [tag url]([string http://blah]) { [qualifier .class] { } }");
|
||||
|
||||
MT("document_urlPrefix",
|
||||
"[def @document] [tag url-prefix]([string https://]) { [builtin #id] { } }");
|
||||
|
||||
MT("document_domain",
|
||||
"[def @document] [tag domain]([string blah.com]) { [tag foo] { } }");
|
||||
|
||||
MT("document_regexp",
|
||||
"[def @document] [tag regexp]([string \".*blah.+\"]) { [builtin #id] { } }");
|
||||
|
||||
MT("counter-style",
|
||||
"[def @counter-style] [variable binary] {",
|
||||
" [property system]: [atom numeric];",
|
||||
" [property symbols]: [number 0] [number 1];",
|
||||
" [property suffix]: [string \".\"];",
|
||||
" [property range]: [atom infinite];",
|
||||
" [property speak-as]: [atom numeric];",
|
||||
"}");
|
||||
|
||||
MT("counter-style-additive-symbols",
|
||||
"[def @counter-style] [variable simple-roman] {",
|
||||
" [property system]: [atom additive];",
|
||||
" [property additive-symbols]: [number 10] [variable X], [number 5] [variable V], [number 1] [variable I];",
|
||||
" [property range]: [number 1] [number 49];",
|
||||
"}");
|
||||
|
||||
MT("counter-style-use",
|
||||
"[tag ol][qualifier .roman] { [property list-style]: [variable simple-roman]; }");
|
||||
|
||||
MT("counter-style-symbols",
|
||||
"[tag ol] { [property list-style]: [atom symbols]([atom cyclic] [string \"*\"] [string \"\\2020\"] [string \"\\2021\"] [string \"\\A7\"]); }");
|
||||
|
||||
MT("comment-does-not-disrupt",
|
||||
"[def @font-face] [comment /* foo */] {",
|
||||
" [property src]: [atom url]([string x]);",
|
||||
" [property font-family]: [variable One];",
|
||||
"}")
|
||||
})();
|
||||
@@ -1,114 +0,0 @@
|
||||
<!doctype html>
|
||||
|
||||
<title>CodeMirror: JavaScript mode</title>
|
||||
<meta charset="utf-8"/>
|
||||
<link rel=stylesheet href="../../doc/docs.css">
|
||||
|
||||
<link rel="stylesheet" href="../../lib/codemirror.css">
|
||||
<script src="../../lib/codemirror.js"></script>
|
||||
<script src="../../addon/edit/matchbrackets.js"></script>
|
||||
<script src="../../addon/comment/continuecomment.js"></script>
|
||||
<script src="../../addon/comment/comment.js"></script>
|
||||
<script src="javascript.js"></script>
|
||||
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
|
||||
<div id=nav>
|
||||
<a href="https://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>
|
||||
|
||||
<ul>
|
||||
<li><a href="../../index.html">Home</a>
|
||||
<li><a href="../../doc/manual.html">Manual</a>
|
||||
<li><a href="https://github.com/codemirror/codemirror">Code</a>
|
||||
</ul>
|
||||
<ul>
|
||||
<li><a href="../index.html">Language modes</a>
|
||||
<li><a class=active href="#">JavaScript</a>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<article>
|
||||
<h2>JavaScript mode</h2>
|
||||
|
||||
|
||||
<div><textarea id="code" name="code">
|
||||
// Demo code (the actual new parser character stream implementation)
|
||||
|
||||
function StringStream(string) {
|
||||
this.pos = 0;
|
||||
this.string = string;
|
||||
}
|
||||
|
||||
StringStream.prototype = {
|
||||
done: function() {return this.pos >= this.string.length;},
|
||||
peek: function() {return this.string.charAt(this.pos);},
|
||||
next: function() {
|
||||
if (this.pos < this.string.length)
|
||||
return this.string.charAt(this.pos++);
|
||||
},
|
||||
eat: function(match) {
|
||||
var ch = this.string.charAt(this.pos);
|
||||
if (typeof match == "string") var ok = ch == match;
|
||||
else var ok = ch && match.test ? match.test(ch) : match(ch);
|
||||
if (ok) {this.pos++; return ch;}
|
||||
},
|
||||
eatWhile: function(match) {
|
||||
var start = this.pos;
|
||||
while (this.eat(match));
|
||||
if (this.pos > start) return this.string.slice(start, this.pos);
|
||||
},
|
||||
backUp: function(n) {this.pos -= n;},
|
||||
column: function() {return this.pos;},
|
||||
eatSpace: function() {
|
||||
var start = this.pos;
|
||||
while (/\s/.test(this.string.charAt(this.pos))) this.pos++;
|
||||
return this.pos - start;
|
||||
},
|
||||
match: function(pattern, consume, caseInsensitive) {
|
||||
if (typeof pattern == "string") {
|
||||
function cased(str) {return caseInsensitive ? str.toLowerCase() : str;}
|
||||
if (cased(this.string).indexOf(cased(pattern), this.pos) == this.pos) {
|
||||
if (consume !== false) this.pos += str.length;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
var match = this.string.slice(this.pos).match(pattern);
|
||||
if (match && consume !== false) this.pos += match[0].length;
|
||||
return match;
|
||||
}
|
||||
}
|
||||
};
|
||||
</textarea></div>
|
||||
|
||||
<script>
|
||||
var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
|
||||
lineNumbers: true,
|
||||
matchBrackets: true,
|
||||
continueComments: "Enter",
|
||||
extraKeys: {"Ctrl-Q": "toggleComment"}
|
||||
});
|
||||
</script>
|
||||
|
||||
<p>
|
||||
JavaScript mode supports several configuration options:
|
||||
<ul>
|
||||
<li><code>json</code> which will set the mode to expect JSON
|
||||
data rather than a JavaScript program.</li>
|
||||
<li><code>jsonld</code> which will set the mode to expect
|
||||
<a href="http://json-ld.org">JSON-LD</a> linked data rather
|
||||
than a JavaScript program (<a href="json-ld.html">demo</a>).</li>
|
||||
<li><code>typescript</code> which will activate additional
|
||||
syntax highlighting and some other things for TypeScript code
|
||||
(<a href="typescript.html">demo</a>).</li>
|
||||
<li><code>statementIndent</code> which (given a number) will
|
||||
determine the amount of indentation to use for statements
|
||||
continued on a new line.</li>
|
||||
<li><code>wordCharacters</code>, a regexp that indicates which
|
||||
characters should be considered part of an identifier.
|
||||
Defaults to <code>/[\w$]/</code>, which does not handle
|
||||
non-ASCII identifiers. Can be set to something more elaborate
|
||||
to improve Unicode support.</li>
|
||||
</ul>
|
||||
</p>
|
||||
|
||||
<p><strong>MIME types defined:</strong> <code>text/javascript</code>, <code>application/json</code>, <code>application/ld+json</code>, <code>text/typescript</code>, <code>application/typescript</code>.</p>
|
||||
</article>
|
||||
@@ -1,896 +0,0 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
mod(require("../../lib/codemirror"));
|
||||
else if (typeof define == "function" && define.amd) // AMD
|
||||
define(["../../lib/codemirror"], mod);
|
||||
else // Plain browser env
|
||||
mod(CodeMirror);
|
||||
})(function(CodeMirror) {
|
||||
"use strict";
|
||||
|
||||
CodeMirror.defineMode("javascript", function(config, parserConfig) {
|
||||
var indentUnit = config.indentUnit;
|
||||
var statementIndent = parserConfig.statementIndent;
|
||||
var jsonldMode = parserConfig.jsonld;
|
||||
var jsonMode = parserConfig.json || jsonldMode;
|
||||
var isTS = parserConfig.typescript;
|
||||
var wordRE = parserConfig.wordCharacters || /[\w$\xa1-\uffff]/;
|
||||
|
||||
// Tokenizer
|
||||
|
||||
var keywords = function(){
|
||||
function kw(type) {return {type: type, style: "keyword"};}
|
||||
var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c"), D = kw("keyword d");
|
||||
var operator = kw("operator"), atom = {type: "atom", style: "atom"};
|
||||
|
||||
return {
|
||||
"if": kw("if"), "while": A, "with": A, "else": B, "do": B, "try": B, "finally": B,
|
||||
"return": D, "break": D, "continue": D, "new": kw("new"), "delete": C, "void": C, "throw": C,
|
||||
"debugger": kw("debugger"), "var": kw("var"), "const": kw("var"), "let": kw("var"),
|
||||
"function": kw("function"), "catch": kw("catch"),
|
||||
"for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": kw("default"),
|
||||
"in": operator, "typeof": operator, "instanceof": operator,
|
||||
"true": atom, "false": atom, "null": atom, "undefined": atom, "NaN": atom, "Infinity": atom,
|
||||
"this": kw("this"), "class": kw("class"), "super": kw("atom"),
|
||||
"yield": C, "export": kw("export"), "import": kw("import"), "extends": C,
|
||||
"await": C
|
||||
};
|
||||
}();
|
||||
|
||||
var isOperatorChar = /[+\-*&%=<>!?|~^@]/;
|
||||
var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;
|
||||
|
||||
function readRegexp(stream) {
|
||||
var escaped = false, next, inSet = false;
|
||||
while ((next = stream.next()) != null) {
|
||||
if (!escaped) {
|
||||
if (next == "/" && !inSet) return;
|
||||
if (next == "[") inSet = true;
|
||||
else if (inSet && next == "]") inSet = false;
|
||||
}
|
||||
escaped = !escaped && next == "\\";
|
||||
}
|
||||
}
|
||||
|
||||
// Used as scratch variables to communicate multiple values without
|
||||
// consing up tons of objects.
|
||||
var type, content;
|
||||
function ret(tp, style, cont) {
|
||||
type = tp; content = cont;
|
||||
return style;
|
||||
}
|
||||
function tokenBase(stream, state) {
|
||||
var ch = stream.next();
|
||||
if (ch == '"' || ch == "'") {
|
||||
state.tokenize = tokenString(ch);
|
||||
return state.tokenize(stream, state);
|
||||
} else if (ch == "." && stream.match(/^\d+(?:[eE][+\-]?\d+)?/)) {
|
||||
return ret("number", "number");
|
||||
} else if (ch == "." && stream.match("..")) {
|
||||
return ret("spread", "meta");
|
||||
} else if (/[\[\]{}\(\),;\:\.]/.test(ch)) {
|
||||
return ret(ch);
|
||||
} else if (ch == "=" && stream.eat(">")) {
|
||||
return ret("=>", "operator");
|
||||
} else if (ch == "0" && stream.match(/^(?:x[\da-f]+|o[0-7]+|b[01]+)n?/i)) {
|
||||
return ret("number", "number");
|
||||
} else if (/\d/.test(ch)) {
|
||||
stream.match(/^\d*(?:n|(?:\.\d*)?(?:[eE][+\-]?\d+)?)?/);
|
||||
return ret("number", "number");
|
||||
} else if (ch == "/") {
|
||||
if (stream.eat("*")) {
|
||||
state.tokenize = tokenComment;
|
||||
return tokenComment(stream, state);
|
||||
} else if (stream.eat("/")) {
|
||||
stream.skipToEnd();
|
||||
return ret("comment", "comment");
|
||||
} else if (expressionAllowed(stream, state, 1)) {
|
||||
readRegexp(stream);
|
||||
stream.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/);
|
||||
return ret("regexp", "string-2");
|
||||
} else {
|
||||
stream.eat("=");
|
||||
return ret("operator", "operator", stream.current());
|
||||
}
|
||||
} else if (ch == "`") {
|
||||
state.tokenize = tokenQuasi;
|
||||
return tokenQuasi(stream, state);
|
||||
} else if (ch == "#") {
|
||||
stream.skipToEnd();
|
||||
return ret("error", "error");
|
||||
} else if (isOperatorChar.test(ch)) {
|
||||
if (ch != ">" || !state.lexical || state.lexical.type != ">") {
|
||||
if (stream.eat("=")) {
|
||||
if (ch == "!" || ch == "=") stream.eat("=")
|
||||
} else if (/[<>*+\-]/.test(ch)) {
|
||||
stream.eat(ch)
|
||||
if (ch == ">") stream.eat(ch)
|
||||
}
|
||||
}
|
||||
return ret("operator", "operator", stream.current());
|
||||
} else if (wordRE.test(ch)) {
|
||||
stream.eatWhile(wordRE);
|
||||
var word = stream.current()
|
||||
if (state.lastType != ".") {
|
||||
if (keywords.propertyIsEnumerable(word)) {
|
||||
var kw = keywords[word]
|
||||
return ret(kw.type, kw.style, word)
|
||||
}
|
||||
if (word == "async" && stream.match(/^(\s|\/\*.*?\*\/)*[\[\(\w]/, false))
|
||||
return ret("async", "keyword", word)
|
||||
}
|
||||
return ret("variable", "variable", word)
|
||||
}
|
||||
}
|
||||
|
||||
function tokenString(quote) {
|
||||
return function(stream, state) {
|
||||
var escaped = false, next;
|
||||
if (jsonldMode && stream.peek() == "@" && stream.match(isJsonldKeyword)){
|
||||
state.tokenize = tokenBase;
|
||||
return ret("jsonld-keyword", "meta");
|
||||
}
|
||||
while ((next = stream.next()) != null) {
|
||||
if (next == quote && !escaped) break;
|
||||
escaped = !escaped && next == "\\";
|
||||
}
|
||||
if (!escaped) state.tokenize = tokenBase;
|
||||
return ret("string", "string");
|
||||
};
|
||||
}
|
||||
|
||||
function tokenComment(stream, state) {
|
||||
var maybeEnd = false, ch;
|
||||
while (ch = stream.next()) {
|
||||
if (ch == "/" && maybeEnd) {
|
||||
state.tokenize = tokenBase;
|
||||
break;
|
||||
}
|
||||
maybeEnd = (ch == "*");
|
||||
}
|
||||
return ret("comment", "comment");
|
||||
}
|
||||
|
||||
function tokenQuasi(stream, state) {
|
||||
var escaped = false, next;
|
||||
while ((next = stream.next()) != null) {
|
||||
if (!escaped && (next == "`" || next == "$" && stream.eat("{"))) {
|
||||
state.tokenize = tokenBase;
|
||||
break;
|
||||
}
|
||||
escaped = !escaped && next == "\\";
|
||||
}
|
||||
return ret("quasi", "string-2", stream.current());
|
||||
}
|
||||
|
||||
var brackets = "([{}])";
|
||||
// This is a crude lookahead trick to try and notice that we're
|
||||
// parsing the argument patterns for a fat-arrow function before we
|
||||
// actually hit the arrow token. It only works if the arrow is on
|
||||
// the same line as the arguments and there's no strange noise
|
||||
// (comments) in between. Fallback is to only notice when we hit the
|
||||
// arrow, and not declare the arguments as locals for the arrow
|
||||
// body.
|
||||
function findFatArrow(stream, state) {
|
||||
if (state.fatArrowAt) state.fatArrowAt = null;
|
||||
var arrow = stream.string.indexOf("=>", stream.start);
|
||||
if (arrow < 0) return;
|
||||
|
||||
if (isTS) { // Try to skip TypeScript return type declarations after the arguments
|
||||
var m = /:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(stream.string.slice(stream.start, arrow))
|
||||
if (m) arrow = m.index
|
||||
}
|
||||
|
||||
var depth = 0, sawSomething = false;
|
||||
for (var pos = arrow - 1; pos >= 0; --pos) {
|
||||
var ch = stream.string.charAt(pos);
|
||||
var bracket = brackets.indexOf(ch);
|
||||
if (bracket >= 0 && bracket < 3) {
|
||||
if (!depth) { ++pos; break; }
|
||||
if (--depth == 0) { if (ch == "(") sawSomething = true; break; }
|
||||
} else if (bracket >= 3 && bracket < 6) {
|
||||
++depth;
|
||||
} else if (wordRE.test(ch)) {
|
||||
sawSomething = true;
|
||||
} else if (/["'\/]/.test(ch)) {
|
||||
return;
|
||||
} else if (sawSomething && !depth) {
|
||||
++pos;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (sawSomething && !depth) state.fatArrowAt = pos;
|
||||
}
|
||||
|
||||
// Parser
|
||||
|
||||
var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true, "this": true, "jsonld-keyword": true};
|
||||
|
||||
function JSLexical(indented, column, type, align, prev, info) {
|
||||
this.indented = indented;
|
||||
this.column = column;
|
||||
this.type = type;
|
||||
this.prev = prev;
|
||||
this.info = info;
|
||||
if (align != null) this.align = align;
|
||||
}
|
||||
|
||||
function inScope(state, varname) {
|
||||
for (var v = state.localVars; v; v = v.next)
|
||||
if (v.name == varname) return true;
|
||||
for (var cx = state.context; cx; cx = cx.prev) {
|
||||
for (var v = cx.vars; v; v = v.next)
|
||||
if (v.name == varname) return true;
|
||||
}
|
||||
}
|
||||
|
||||
function parseJS(state, style, type, content, stream) {
|
||||
var cc = state.cc;
|
||||
// Communicate our context to the combinators.
|
||||
// (Less wasteful than consing up a hundred closures on every call.)
|
||||
cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style;
|
||||
|
||||
if (!state.lexical.hasOwnProperty("align"))
|
||||
state.lexical.align = true;
|
||||
|
||||
while(true) {
|
||||
var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;
|
||||
if (combinator(type, content)) {
|
||||
while(cc.length && cc[cc.length - 1].lex)
|
||||
cc.pop()();
|
||||
if (cx.marked) return cx.marked;
|
||||
if (type == "variable" && inScope(state, content)) return "variable-2";
|
||||
return style;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Combinator utils
|
||||
|
||||
var cx = {state: null, column: null, marked: null, cc: null};
|
||||
function pass() {
|
||||
for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);
|
||||
}
|
||||
function cont() {
|
||||
pass.apply(null, arguments);
|
||||
return true;
|
||||
}
|
||||
function inList(name, list) {
|
||||
for (var v = list; v; v = v.next) if (v.name == name) return true
|
||||
return false;
|
||||
}
|
||||
function register(varname) {
|
||||
var state = cx.state;
|
||||
cx.marked = "def";
|
||||
if (state.context) {
|
||||
if (state.lexical.info == "var" && state.context && state.context.block) {
|
||||
// FIXME function decls are also not block scoped
|
||||
var newContext = registerVarScoped(varname, state.context)
|
||||
if (newContext != null) {
|
||||
state.context = newContext
|
||||
return
|
||||
}
|
||||
} else if (!inList(varname, state.localVars)) {
|
||||
state.localVars = new Var(varname, state.localVars)
|
||||
return
|
||||
}
|
||||
}
|
||||
// Fall through means this is global
|
||||
if (parserConfig.globalVars && !inList(varname, state.globalVars))
|
||||
state.globalVars = new Var(varname, state.globalVars)
|
||||
}
|
||||
function registerVarScoped(varname, context) {
|
||||
if (!context) {
|
||||
return null
|
||||
} else if (context.block) {
|
||||
var inner = registerVarScoped(varname, context.prev)
|
||||
if (!inner) return null
|
||||
if (inner == context.prev) return context
|
||||
return new Context(inner, context.vars, true)
|
||||
} else if (inList(varname, context.vars)) {
|
||||
return context
|
||||
} else {
|
||||
return new Context(context.prev, new Var(varname, context.vars), false)
|
||||
}
|
||||
}
|
||||
|
||||
function isModifier(name) {
|
||||
return name == "public" || name == "private" || name == "protected" || name == "abstract" || name == "readonly"
|
||||
}
|
||||
|
||||
// Combinators
|
||||
|
||||
function Context(prev, vars, block) { this.prev = prev; this.vars = vars; this.block = block }
|
||||
function Var(name, next) { this.name = name; this.next = next }
|
||||
|
||||
var defaultVars = new Var("this", new Var("arguments", null))
|
||||
function pushcontext() {
|
||||
cx.state.context = new Context(cx.state.context, cx.state.localVars, false)
|
||||
cx.state.localVars = defaultVars
|
||||
}
|
||||
function pushblockcontext() {
|
||||
cx.state.context = new Context(cx.state.context, cx.state.localVars, true)
|
||||
cx.state.localVars = null
|
||||
}
|
||||
function popcontext() {
|
||||
cx.state.localVars = cx.state.context.vars
|
||||
cx.state.context = cx.state.context.prev
|
||||
}
|
||||
popcontext.lex = true
|
||||
function pushlex(type, info) {
|
||||
var result = function() {
|
||||
var state = cx.state, indent = state.indented;
|
||||
if (state.lexical.type == "stat") indent = state.lexical.indented;
|
||||
else for (var outer = state.lexical; outer && outer.type == ")" && outer.align; outer = outer.prev)
|
||||
indent = outer.indented;
|
||||
state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);
|
||||
};
|
||||
result.lex = true;
|
||||
return result;
|
||||
}
|
||||
function poplex() {
|
||||
var state = cx.state;
|
||||
if (state.lexical.prev) {
|
||||
if (state.lexical.type == ")")
|
||||
state.indented = state.lexical.indented;
|
||||
state.lexical = state.lexical.prev;
|
||||
}
|
||||
}
|
||||
poplex.lex = true;
|
||||
|
||||
function expect(wanted) {
|
||||
function exp(type) {
|
||||
if (type == wanted) return cont();
|
||||
else if (wanted == ";" || type == "}" || type == ")" || type == "]") return pass();
|
||||
else return cont(exp);
|
||||
};
|
||||
return exp;
|
||||
}
|
||||
|
||||
function statement(type, value) {
|
||||
if (type == "var") return cont(pushlex("vardef", value), vardef, expect(";"), poplex);
|
||||
if (type == "keyword a") return cont(pushlex("form"), parenExpr, statement, poplex);
|
||||
if (type == "keyword b") return cont(pushlex("form"), statement, poplex);
|
||||
if (type == "keyword d") return cx.stream.match(/^\s*$/, false) ? cont() : cont(pushlex("stat"), maybeexpression, expect(";"), poplex);
|
||||
if (type == "debugger") return cont(expect(";"));
|
||||
if (type == "{") return cont(pushlex("}"), pushblockcontext, block, poplex, popcontext);
|
||||
if (type == ";") return cont();
|
||||
if (type == "if") {
|
||||
if (cx.state.lexical.info == "else" && cx.state.cc[cx.state.cc.length - 1] == poplex)
|
||||
cx.state.cc.pop()();
|
||||
return cont(pushlex("form"), parenExpr, statement, poplex, maybeelse);
|
||||
}
|
||||
if (type == "function") return cont(functiondef);
|
||||
if (type == "for") return cont(pushlex("form"), forspec, statement, poplex);
|
||||
if (type == "class" || (isTS && value == "interface")) { cx.marked = "keyword"; return cont(pushlex("form"), className, poplex); }
|
||||
if (type == "variable") {
|
||||
if (isTS && value == "declare") {
|
||||
cx.marked = "keyword"
|
||||
return cont(statement)
|
||||
} else if (isTS && (value == "module" || value == "enum" || value == "type") && cx.stream.match(/^\s*\w/, false)) {
|
||||
cx.marked = "keyword"
|
||||
if (value == "enum") return cont(enumdef);
|
||||
else if (value == "type") return cont(typeexpr, expect("operator"), typeexpr, expect(";"));
|
||||
else return cont(pushlex("form"), pattern, expect("{"), pushlex("}"), block, poplex, poplex)
|
||||
} else if (isTS && value == "namespace") {
|
||||
cx.marked = "keyword"
|
||||
return cont(pushlex("form"), expression, block, poplex)
|
||||
} else if (isTS && value == "abstract") {
|
||||
cx.marked = "keyword"
|
||||
return cont(statement)
|
||||
} else {
|
||||
return cont(pushlex("stat"), maybelabel);
|
||||
}
|
||||
}
|
||||
if (type == "switch") return cont(pushlex("form"), parenExpr, expect("{"), pushlex("}", "switch"), pushblockcontext,
|
||||
block, poplex, poplex, popcontext);
|
||||
if (type == "case") return cont(expression, expect(":"));
|
||||
if (type == "default") return cont(expect(":"));
|
||||
if (type == "catch") return cont(pushlex("form"), pushcontext, maybeCatchBinding, statement, poplex, popcontext);
|
||||
if (type == "export") return cont(pushlex("stat"), afterExport, poplex);
|
||||
if (type == "import") return cont(pushlex("stat"), afterImport, poplex);
|
||||
if (type == "async") return cont(statement)
|
||||
if (value == "@") return cont(expression, statement)
|
||||
return pass(pushlex("stat"), expression, expect(";"), poplex);
|
||||
}
|
||||
function maybeCatchBinding(type) {
|
||||
if (type == "(") return cont(funarg, expect(")"))
|
||||
}
|
||||
function expression(type, value) {
|
||||
return expressionInner(type, value, false);
|
||||
}
|
||||
function expressionNoComma(type, value) {
|
||||
return expressionInner(type, value, true);
|
||||
}
|
||||
function parenExpr(type) {
|
||||
if (type != "(") return pass()
|
||||
return cont(pushlex(")"), expression, expect(")"), poplex)
|
||||
}
|
||||
function expressionInner(type, value, noComma) {
|
||||
if (cx.state.fatArrowAt == cx.stream.start) {
|
||||
var body = noComma ? arrowBodyNoComma : arrowBody;
|
||||
if (type == "(") return cont(pushcontext, pushlex(")"), commasep(funarg, ")"), poplex, expect("=>"), body, popcontext);
|
||||
else if (type == "variable") return pass(pushcontext, pattern, expect("=>"), body, popcontext);
|
||||
}
|
||||
|
||||
var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;
|
||||
if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);
|
||||
if (type == "function") return cont(functiondef, maybeop);
|
||||
if (type == "class" || (isTS && value == "interface")) { cx.marked = "keyword"; return cont(pushlex("form"), classExpression, poplex); }
|
||||
if (type == "keyword c" || type == "async") return cont(noComma ? expressionNoComma : expression);
|
||||
if (type == "(") return cont(pushlex(")"), maybeexpression, expect(")"), poplex, maybeop);
|
||||
if (type == "operator" || type == "spread") return cont(noComma ? expressionNoComma : expression);
|
||||
if (type == "[") return cont(pushlex("]"), arrayLiteral, poplex, maybeop);
|
||||
if (type == "{") return contCommasep(objprop, "}", null, maybeop);
|
||||
if (type == "quasi") return pass(quasi, maybeop);
|
||||
if (type == "new") return cont(maybeTarget(noComma));
|
||||
if (type == "import") return cont(expression);
|
||||
return cont();
|
||||
}
|
||||
function maybeexpression(type) {
|
||||
if (type.match(/[;\}\)\],]/)) return pass();
|
||||
return pass(expression);
|
||||
}
|
||||
|
||||
function maybeoperatorComma(type, value) {
|
||||
if (type == ",") return cont(expression);
|
||||
return maybeoperatorNoComma(type, value, false);
|
||||
}
|
||||
function maybeoperatorNoComma(type, value, noComma) {
|
||||
var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;
|
||||
var expr = noComma == false ? expression : expressionNoComma;
|
||||
if (type == "=>") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);
|
||||
if (type == "operator") {
|
||||
if (/\+\+|--/.test(value) || isTS && value == "!") return cont(me);
|
||||
if (isTS && value == "<" && cx.stream.match(/^([^>]|<.*?>)*>\s*\(/, false))
|
||||
return cont(pushlex(">"), commasep(typeexpr, ">"), poplex, me);
|
||||
if (value == "?") return cont(expression, expect(":"), expr);
|
||||
return cont(expr);
|
||||
}
|
||||
if (type == "quasi") { return pass(quasi, me); }
|
||||
if (type == ";") return;
|
||||
if (type == "(") return contCommasep(expressionNoComma, ")", "call", me);
|
||||
if (type == ".") return cont(property, me);
|
||||
if (type == "[") return cont(pushlex("]"), maybeexpression, expect("]"), poplex, me);
|
||||
if (isTS && value == "as") { cx.marked = "keyword"; return cont(typeexpr, me) }
|
||||
if (type == "regexp") {
|
||||
cx.state.lastType = cx.marked = "operator"
|
||||
cx.stream.backUp(cx.stream.pos - cx.stream.start - 1)
|
||||
return cont(expr)
|
||||
}
|
||||
}
|
||||
function quasi(type, value) {
|
||||
if (type != "quasi") return pass();
|
||||
if (value.slice(value.length - 2) != "${") return cont(quasi);
|
||||
return cont(expression, continueQuasi);
|
||||
}
|
||||
function continueQuasi(type) {
|
||||
if (type == "}") {
|
||||
cx.marked = "string-2";
|
||||
cx.state.tokenize = tokenQuasi;
|
||||
return cont(quasi);
|
||||
}
|
||||
}
|
||||
function arrowBody(type) {
|
||||
findFatArrow(cx.stream, cx.state);
|
||||
return pass(type == "{" ? statement : expression);
|
||||
}
|
||||
function arrowBodyNoComma(type) {
|
||||
findFatArrow(cx.stream, cx.state);
|
||||
return pass(type == "{" ? statement : expressionNoComma);
|
||||
}
|
||||
function maybeTarget(noComma) {
|
||||
return function(type) {
|
||||
if (type == ".") return cont(noComma ? targetNoComma : target);
|
||||
else if (type == "variable" && isTS) return cont(maybeTypeArgs, noComma ? maybeoperatorNoComma : maybeoperatorComma)
|
||||
else return pass(noComma ? expressionNoComma : expression);
|
||||
};
|
||||
}
|
||||
function target(_, value) {
|
||||
if (value == "target") { cx.marked = "keyword"; return cont(maybeoperatorComma); }
|
||||
}
|
||||
function targetNoComma(_, value) {
|
||||
if (value == "target") { cx.marked = "keyword"; return cont(maybeoperatorNoComma); }
|
||||
}
|
||||
function maybelabel(type) {
|
||||
if (type == ":") return cont(poplex, statement);
|
||||
return pass(maybeoperatorComma, expect(";"), poplex);
|
||||
}
|
||||
function property(type) {
|
||||
if (type == "variable") {cx.marked = "property"; return cont();}
|
||||
}
|
||||
function objprop(type, value) {
|
||||
if (type == "async") {
|
||||
cx.marked = "property";
|
||||
return cont(objprop);
|
||||
} else if (type == "variable" || cx.style == "keyword") {
|
||||
cx.marked = "property";
|
||||
if (value == "get" || value == "set") return cont(getterSetter);
|
||||
var m // Work around fat-arrow-detection complication for detecting typescript typed arrow params
|
||||
if (isTS && cx.state.fatArrowAt == cx.stream.start && (m = cx.stream.match(/^\s*:\s*/, false)))
|
||||
cx.state.fatArrowAt = cx.stream.pos + m[0].length
|
||||
return cont(afterprop);
|
||||
} else if (type == "number" || type == "string") {
|
||||
cx.marked = jsonldMode ? "property" : (cx.style + " property");
|
||||
return cont(afterprop);
|
||||
} else if (type == "jsonld-keyword") {
|
||||
return cont(afterprop);
|
||||
} else if (isTS && isModifier(value)) {
|
||||
cx.marked = "keyword"
|
||||
return cont(objprop)
|
||||
} else if (type == "[") {
|
||||
return cont(expression, maybetype, expect("]"), afterprop);
|
||||
} else if (type == "spread") {
|
||||
return cont(expressionNoComma, afterprop);
|
||||
} else if (value == "*") {
|
||||
cx.marked = "keyword";
|
||||
return cont(objprop);
|
||||
} else if (type == ":") {
|
||||
return pass(afterprop)
|
||||
}
|
||||
}
|
||||
function getterSetter(type) {
|
||||
if (type != "variable") return pass(afterprop);
|
||||
cx.marked = "property";
|
||||
return cont(functiondef);
|
||||
}
|
||||
function afterprop(type) {
|
||||
if (type == ":") return cont(expressionNoComma);
|
||||
if (type == "(") return pass(functiondef);
|
||||
}
|
||||
function commasep(what, end, sep) {
|
||||
function proceed(type, value) {
|
||||
if (sep ? sep.indexOf(type) > -1 : type == ",") {
|
||||
var lex = cx.state.lexical;
|
||||
if (lex.info == "call") lex.pos = (lex.pos || 0) + 1;
|
||||
return cont(function(type, value) {
|
||||
if (type == end || value == end) return pass()
|
||||
return pass(what)
|
||||
}, proceed);
|
||||
}
|
||||
if (type == end || value == end) return cont();
|
||||
return cont(expect(end));
|
||||
}
|
||||
return function(type, value) {
|
||||
if (type == end || value == end) return cont();
|
||||
return pass(what, proceed);
|
||||
};
|
||||
}
|
||||
function contCommasep(what, end, info) {
|
||||
for (var i = 3; i < arguments.length; i++)
|
||||
cx.cc.push(arguments[i]);
|
||||
return cont(pushlex(end, info), commasep(what, end), poplex);
|
||||
}
|
||||
function block(type) {
|
||||
if (type == "}") return cont();
|
||||
return pass(statement, block);
|
||||
}
|
||||
function maybetype(type, value) {
|
||||
if (isTS) {
|
||||
if (type == ":") return cont(typeexpr);
|
||||
if (value == "?") return cont(maybetype);
|
||||
}
|
||||
}
|
||||
function mayberettype(type) {
|
||||
if (isTS && type == ":") {
|
||||
if (cx.stream.match(/^\s*\w+\s+is\b/, false)) return cont(expression, isKW, typeexpr)
|
||||
else return cont(typeexpr)
|
||||
}
|
||||
}
|
||||
function isKW(_, value) {
|
||||
if (value == "is") {
|
||||
cx.marked = "keyword"
|
||||
return cont()
|
||||
}
|
||||
}
|
||||
function typeexpr(type, value) {
|
||||
if (value == "keyof" || value == "typeof") {
|
||||
cx.marked = "keyword"
|
||||
return cont(value == "keyof" ? typeexpr : expressionNoComma)
|
||||
}
|
||||
if (type == "variable" || value == "void") {
|
||||
cx.marked = "type"
|
||||
return cont(afterType)
|
||||
}
|
||||
if (type == "string" || type == "number" || type == "atom") return cont(afterType);
|
||||
if (type == "[") return cont(pushlex("]"), commasep(typeexpr, "]", ","), poplex, afterType)
|
||||
if (type == "{") return cont(pushlex("}"), commasep(typeprop, "}", ",;"), poplex, afterType)
|
||||
if (type == "(") return cont(commasep(typearg, ")"), maybeReturnType)
|
||||
if (type == "<") return cont(commasep(typeexpr, ">"), typeexpr)
|
||||
}
|
||||
function maybeReturnType(type) {
|
||||
if (type == "=>") return cont(typeexpr)
|
||||
}
|
||||
function typeprop(type, value) {
|
||||
if (type == "variable" || cx.style == "keyword") {
|
||||
cx.marked = "property"
|
||||
return cont(typeprop)
|
||||
} else if (value == "?") {
|
||||
return cont(typeprop)
|
||||
} else if (type == ":") {
|
||||
return cont(typeexpr)
|
||||
} else if (type == "[") {
|
||||
return cont(expression, maybetype, expect("]"), typeprop)
|
||||
}
|
||||
}
|
||||
function typearg(type, value) {
|
||||
if (type == "variable" && cx.stream.match(/^\s*[?:]/, false) || value == "?") return cont(typearg)
|
||||
if (type == ":") return cont(typeexpr)
|
||||
return pass(typeexpr)
|
||||
}
|
||||
function afterType(type, value) {
|
||||
if (value == "<") return cont(pushlex(">"), commasep(typeexpr, ">"), poplex, afterType)
|
||||
if (value == "|" || type == "." || value == "&") return cont(typeexpr)
|
||||
if (type == "[") return cont(expect("]"), afterType)
|
||||
if (value == "extends" || value == "implements") { cx.marked = "keyword"; return cont(typeexpr) }
|
||||
}
|
||||
function maybeTypeArgs(_, value) {
|
||||
if (value == "<") return cont(pushlex(">"), commasep(typeexpr, ">"), poplex, afterType)
|
||||
}
|
||||
function typeparam() {
|
||||
return pass(typeexpr, maybeTypeDefault)
|
||||
}
|
||||
function maybeTypeDefault(_, value) {
|
||||
if (value == "=") return cont(typeexpr)
|
||||
}
|
||||
function vardef(_, value) {
|
||||
if (value == "enum") {cx.marked = "keyword"; return cont(enumdef)}
|
||||
return pass(pattern, maybetype, maybeAssign, vardefCont);
|
||||
}
|
||||
function pattern(type, value) {
|
||||
if (isTS && isModifier(value)) { cx.marked = "keyword"; return cont(pattern) }
|
||||
if (type == "variable") { register(value); return cont(); }
|
||||
if (type == "spread") return cont(pattern);
|
||||
if (type == "[") return contCommasep(pattern, "]");
|
||||
if (type == "{") return contCommasep(proppattern, "}");
|
||||
}
|
||||
function proppattern(type, value) {
|
||||
if (type == "variable" && !cx.stream.match(/^\s*:/, false)) {
|
||||
register(value);
|
||||
return cont(maybeAssign);
|
||||
}
|
||||
if (type == "variable") cx.marked = "property";
|
||||
if (type == "spread") return cont(pattern);
|
||||
if (type == "}") return pass();
|
||||
return cont(expect(":"), pattern, maybeAssign);
|
||||
}
|
||||
function maybeAssign(_type, value) {
|
||||
if (value == "=") return cont(expressionNoComma);
|
||||
}
|
||||
function vardefCont(type) {
|
||||
if (type == ",") return cont(vardef);
|
||||
}
|
||||
function maybeelse(type, value) {
|
||||
if (type == "keyword b" && value == "else") return cont(pushlex("form", "else"), statement, poplex);
|
||||
}
|
||||
function forspec(type, value) {
|
||||
if (value == "await") return cont(forspec);
|
||||
if (type == "(") return cont(pushlex(")"), forspec1, expect(")"), poplex);
|
||||
}
|
||||
function forspec1(type) {
|
||||
if (type == "var") return cont(vardef, expect(";"), forspec2);
|
||||
if (type == ";") return cont(forspec2);
|
||||
if (type == "variable") return cont(formaybeinof);
|
||||
return pass(expression, expect(";"), forspec2);
|
||||
}
|
||||
function formaybeinof(_type, value) {
|
||||
if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression); }
|
||||
return cont(maybeoperatorComma, forspec2);
|
||||
}
|
||||
function forspec2(type, value) {
|
||||
if (type == ";") return cont(forspec3);
|
||||
if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression); }
|
||||
return pass(expression, expect(";"), forspec3);
|
||||
}
|
||||
function forspec3(type) {
|
||||
if (type != ")") cont(expression);
|
||||
}
|
||||
function functiondef(type, value) {
|
||||
if (value == "*") {cx.marked = "keyword"; return cont(functiondef);}
|
||||
if (type == "variable") {register(value); return cont(functiondef);}
|
||||
if (type == "(") return cont(pushcontext, pushlex(")"), commasep(funarg, ")"), poplex, mayberettype, statement, popcontext);
|
||||
if (isTS && value == "<") return cont(pushlex(">"), commasep(typeparam, ">"), poplex, functiondef)
|
||||
}
|
||||
function funarg(type, value) {
|
||||
if (value == "@") cont(expression, funarg)
|
||||
if (type == "spread") return cont(funarg);
|
||||
if (isTS && isModifier(value)) { cx.marked = "keyword"; return cont(funarg); }
|
||||
return pass(pattern, maybetype, maybeAssign);
|
||||
}
|
||||
function classExpression(type, value) {
|
||||
// Class expressions may have an optional name.
|
||||
if (type == "variable") return className(type, value);
|
||||
return classNameAfter(type, value);
|
||||
}
|
||||
function className(type, value) {
|
||||
if (type == "variable") {register(value); return cont(classNameAfter);}
|
||||
}
|
||||
function classNameAfter(type, value) {
|
||||
if (value == "<") return cont(pushlex(">"), commasep(typeparam, ">"), poplex, classNameAfter)
|
||||
if (value == "extends" || value == "implements" || (isTS && type == ",")) {
|
||||
if (value == "implements") cx.marked = "keyword";
|
||||
return cont(isTS ? typeexpr : expression, classNameAfter);
|
||||
}
|
||||
if (type == "{") return cont(pushlex("}"), classBody, poplex);
|
||||
}
|
||||
function classBody(type, value) {
|
||||
if (type == "async" ||
|
||||
(type == "variable" &&
|
||||
(value == "static" || value == "get" || value == "set" || (isTS && isModifier(value))) &&
|
||||
cx.stream.match(/^\s+[\w$\xa1-\uffff]/, false))) {
|
||||
cx.marked = "keyword";
|
||||
return cont(classBody);
|
||||
}
|
||||
if (type == "variable" || cx.style == "keyword") {
|
||||
cx.marked = "property";
|
||||
return cont(isTS ? classfield : functiondef, classBody);
|
||||
}
|
||||
if (type == "[")
|
||||
return cont(expression, maybetype, expect("]"), isTS ? classfield : functiondef, classBody)
|
||||
if (value == "*") {
|
||||
cx.marked = "keyword";
|
||||
return cont(classBody);
|
||||
}
|
||||
if (type == ";") return cont(classBody);
|
||||
if (type == "}") return cont();
|
||||
if (value == "@") return cont(expression, classBody)
|
||||
}
|
||||
function classfield(type, value) {
|
||||
if (value == "?") return cont(classfield)
|
||||
if (type == ":") return cont(typeexpr, maybeAssign)
|
||||
if (value == "=") return cont(expressionNoComma)
|
||||
return pass(functiondef)
|
||||
}
|
||||
function afterExport(type, value) {
|
||||
if (value == "*") { cx.marked = "keyword"; return cont(maybeFrom, expect(";")); }
|
||||
if (value == "default") { cx.marked = "keyword"; return cont(expression, expect(";")); }
|
||||
if (type == "{") return cont(commasep(exportField, "}"), maybeFrom, expect(";"));
|
||||
return pass(statement);
|
||||
}
|
||||
function exportField(type, value) {
|
||||
if (value == "as") { cx.marked = "keyword"; return cont(expect("variable")); }
|
||||
if (type == "variable") return pass(expressionNoComma, exportField);
|
||||
}
|
||||
function afterImport(type) {
|
||||
if (type == "string") return cont();
|
||||
if (type == "(") return pass(expression);
|
||||
return pass(importSpec, maybeMoreImports, maybeFrom);
|
||||
}
|
||||
function importSpec(type, value) {
|
||||
if (type == "{") return contCommasep(importSpec, "}");
|
||||
if (type == "variable") register(value);
|
||||
if (value == "*") cx.marked = "keyword";
|
||||
return cont(maybeAs);
|
||||
}
|
||||
function maybeMoreImports(type) {
|
||||
if (type == ",") return cont(importSpec, maybeMoreImports)
|
||||
}
|
||||
function maybeAs(_type, value) {
|
||||
if (value == "as") { cx.marked = "keyword"; return cont(importSpec); }
|
||||
}
|
||||
function maybeFrom(_type, value) {
|
||||
if (value == "from") { cx.marked = "keyword"; return cont(expression); }
|
||||
}
|
||||
function arrayLiteral(type) {
|
||||
if (type == "]") return cont();
|
||||
return pass(commasep(expressionNoComma, "]"));
|
||||
}
|
||||
function enumdef() {
|
||||
return pass(pushlex("form"), pattern, expect("{"), pushlex("}"), commasep(enummember, "}"), poplex, poplex)
|
||||
}
|
||||
function enummember() {
|
||||
return pass(pattern, maybeAssign);
|
||||
}
|
||||
|
||||
function isContinuedStatement(state, textAfter) {
|
||||
return state.lastType == "operator" || state.lastType == "," ||
|
||||
isOperatorChar.test(textAfter.charAt(0)) ||
|
||||
/[,.]/.test(textAfter.charAt(0));
|
||||
}
|
||||
|
||||
function expressionAllowed(stream, state, backUp) {
|
||||
return state.tokenize == tokenBase &&
|
||||
/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(state.lastType) ||
|
||||
(state.lastType == "quasi" && /\{\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0))))
|
||||
}
|
||||
|
||||
// Interface
|
||||
|
||||
return {
|
||||
startState: function(basecolumn) {
|
||||
var state = {
|
||||
tokenize: tokenBase,
|
||||
lastType: "sof",
|
||||
cc: [],
|
||||
lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, "block", false),
|
||||
localVars: parserConfig.localVars,
|
||||
context: parserConfig.localVars && new Context(null, null, false),
|
||||
indented: basecolumn || 0
|
||||
};
|
||||
if (parserConfig.globalVars && typeof parserConfig.globalVars == "object")
|
||||
state.globalVars = parserConfig.globalVars;
|
||||
return state;
|
||||
},
|
||||
|
||||
token: function(stream, state) {
|
||||
if (stream.sol()) {
|
||||
if (!state.lexical.hasOwnProperty("align"))
|
||||
state.lexical.align = false;
|
||||
state.indented = stream.indentation();
|
||||
findFatArrow(stream, state);
|
||||
}
|
||||
if (state.tokenize != tokenComment && stream.eatSpace()) return null;
|
||||
var style = state.tokenize(stream, state);
|
||||
if (type == "comment") return style;
|
||||
state.lastType = type == "operator" && (content == "++" || content == "--") ? "incdec" : type;
|
||||
return parseJS(state, style, type, content, stream);
|
||||
},
|
||||
|
||||
indent: function(state, textAfter) {
|
||||
if (state.tokenize == tokenComment) return CodeMirror.Pass;
|
||||
if (state.tokenize != tokenBase) return 0;
|
||||
var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical, top
|
||||
// Kludge to prevent 'maybelse' from blocking lexical scope pops
|
||||
if (!/^\s*else\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) {
|
||||
var c = state.cc[i];
|
||||
if (c == poplex) lexical = lexical.prev;
|
||||
else if (c != maybeelse) break;
|
||||
}
|
||||
while ((lexical.type == "stat" || lexical.type == "form") &&
|
||||
(firstChar == "}" || ((top = state.cc[state.cc.length - 1]) &&
|
||||
(top == maybeoperatorComma || top == maybeoperatorNoComma) &&
|
||||
!/^[,\.=+\-*:?[\(]/.test(textAfter))))
|
||||
lexical = lexical.prev;
|
||||
if (statementIndent && lexical.type == ")" && lexical.prev.type == "stat")
|
||||
lexical = lexical.prev;
|
||||
var type = lexical.type, closing = firstChar == type;
|
||||
|
||||
if (type == "vardef") return lexical.indented + (state.lastType == "operator" || state.lastType == "," ? lexical.info.length + 1 : 0);
|
||||
else if (type == "form" && firstChar == "{") return lexical.indented;
|
||||
else if (type == "form") return lexical.indented + indentUnit;
|
||||
else if (type == "stat")
|
||||
return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0);
|
||||
else if (lexical.info == "switch" && !closing && parserConfig.doubleIndentSwitch != false)
|
||||
return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ? indentUnit : 2 * indentUnit);
|
||||
else if (lexical.align) return lexical.column + (closing ? 0 : 1);
|
||||
else return lexical.indented + (closing ? 0 : indentUnit);
|
||||
},
|
||||
|
||||
electricInput: /^\s*(?:case .*?:|default:|\{|\})$/,
|
||||
blockCommentStart: jsonMode ? null : "/*",
|
||||
blockCommentEnd: jsonMode ? null : "*/",
|
||||
blockCommentContinue: jsonMode ? null : " * ",
|
||||
lineComment: jsonMode ? null : "//",
|
||||
fold: "brace",
|
||||
closeBrackets: "()[]{}''\"\"``",
|
||||
|
||||
helperType: jsonMode ? "json" : "javascript",
|
||||
jsonldMode: jsonldMode,
|
||||
jsonMode: jsonMode,
|
||||
|
||||
expressionAllowed: expressionAllowed,
|
||||
|
||||
skipExpression: function(state) {
|
||||
var top = state.cc[state.cc.length - 1]
|
||||
if (top == expression || top == expressionNoComma) state.cc.pop()
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
CodeMirror.registerHelper("wordChars", "javascript", /[\w$]/);
|
||||
|
||||
CodeMirror.defineMIME("text/javascript", "javascript");
|
||||
CodeMirror.defineMIME("text/ecmascript", "javascript");
|
||||
CodeMirror.defineMIME("application/javascript", "javascript");
|
||||
CodeMirror.defineMIME("application/x-javascript", "javascript");
|
||||
CodeMirror.defineMIME("application/ecmascript", "javascript");
|
||||
CodeMirror.defineMIME("application/json", {name: "javascript", json: true});
|
||||
CodeMirror.defineMIME("application/x-json", {name: "javascript", json: true});
|
||||
CodeMirror.defineMIME("application/ld+json", {name: "javascript", jsonld: true});
|
||||
CodeMirror.defineMIME("text/typescript", { name: "javascript", typescript: true });
|
||||
CodeMirror.defineMIME("application/typescript", { name: "javascript", typescript: true });
|
||||
|
||||
});
|
||||
@@ -1,72 +0,0 @@
|
||||
<!doctype html>
|
||||
|
||||
<title>CodeMirror: JSON-LD mode</title>
|
||||
<meta charset="utf-8"/>
|
||||
<link rel=stylesheet href="../../doc/docs.css">
|
||||
|
||||
<link rel="stylesheet" href="../../lib/codemirror.css">
|
||||
<script src="../../lib/codemirror.js"></script>
|
||||
<script src="../../addon/edit/matchbrackets.js"></script>
|
||||
<script src="../../addon/comment/continuecomment.js"></script>
|
||||
<script src="../../addon/comment/comment.js"></script>
|
||||
<script src="javascript.js"></script>
|
||||
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
|
||||
<div id="nav">
|
||||
<a href="https://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"/></a>
|
||||
|
||||
<ul>
|
||||
<li><a href="../../index.html">Home</a>
|
||||
<li><a href="../../doc/manual.html">Manual</a>
|
||||
<li><a href="https://github.com/codemirror/codemirror">Code</a>
|
||||
</ul>
|
||||
<ul>
|
||||
<li><a href="../index.html">Language modes</a>
|
||||
<li><a class=active href="#">JSON-LD</a>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<article>
|
||||
<h2>JSON-LD mode</h2>
|
||||
|
||||
|
||||
<div><textarea id="code" name="code">
|
||||
{
|
||||
"@context": {
|
||||
"name": "http://schema.org/name",
|
||||
"description": "http://schema.org/description",
|
||||
"image": {
|
||||
"@id": "http://schema.org/image",
|
||||
"@type": "@id"
|
||||
},
|
||||
"geo": "http://schema.org/geo",
|
||||
"latitude": {
|
||||
"@id": "http://schema.org/latitude",
|
||||
"@type": "xsd:float"
|
||||
},
|
||||
"longitude": {
|
||||
"@id": "http://schema.org/longitude",
|
||||
"@type": "xsd:float"
|
||||
},
|
||||
"xsd": "http://www.w3.org/2001/XMLSchema#"
|
||||
},
|
||||
"name": "The Empire State Building",
|
||||
"description": "The Empire State Building is a 102-story landmark in New York City.",
|
||||
"image": "http://www.civil.usherbrooke.ca/cours/gci215a/empire-state-building.jpg",
|
||||
"geo": {
|
||||
"latitude": "40.75",
|
||||
"longitude": "73.98"
|
||||
}
|
||||
}
|
||||
</textarea></div>
|
||||
|
||||
<script>
|
||||
var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
|
||||
matchBrackets: true,
|
||||
autoCloseBrackets: true,
|
||||
mode: "application/ld+json",
|
||||
lineWrapping: true
|
||||
});
|
||||
</script>
|
||||
|
||||
<p>This is a specialization of the <a href="index.html">JavaScript mode</a>.</p>
|
||||
</article>
|
||||
@@ -1,482 +0,0 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
|
||||
(function() {
|
||||
var mode = CodeMirror.getMode({indentUnit: 2}, "javascript");
|
||||
function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }
|
||||
|
||||
MT("locals",
|
||||
"[keyword function] [def foo]([def a], [def b]) { [keyword var] [def c] [operator =] [number 10]; [keyword return] [variable-2 a] [operator +] [variable-2 c] [operator +] [variable d]; }");
|
||||
|
||||
MT("comma-and-binop",
|
||||
"[keyword function](){ [keyword var] [def x] [operator =] [number 1] [operator +] [number 2], [def y]; }");
|
||||
|
||||
MT("destructuring",
|
||||
"([keyword function]([def a], [[[def b], [def c] ]]) {",
|
||||
" [keyword let] {[def d], [property foo]: [def c][operator =][number 10], [def x]} [operator =] [variable foo]([variable-2 a]);",
|
||||
" [[[variable-2 c], [variable y] ]] [operator =] [variable-2 c];",
|
||||
"})();");
|
||||
|
||||
MT("destructure_trailing_comma",
|
||||
"[keyword let] {[def a], [def b],} [operator =] [variable foo];",
|
||||
"[keyword let] [def c];"); // Parser still in good state?
|
||||
|
||||
MT("class_body",
|
||||
"[keyword class] [def Foo] {",
|
||||
" [property constructor]() {}",
|
||||
" [property sayName]() {",
|
||||
" [keyword return] [string-2 `foo${][variable foo][string-2 }oo`];",
|
||||
" }",
|
||||
"}");
|
||||
|
||||
MT("class",
|
||||
"[keyword class] [def Point] [keyword extends] [variable SuperThing] {",
|
||||
" [keyword get] [property prop]() { [keyword return] [number 24]; }",
|
||||
" [property constructor]([def x], [def y]) {",
|
||||
" [keyword super]([string 'something']);",
|
||||
" [keyword this].[property x] [operator =] [variable-2 x];",
|
||||
" }",
|
||||
"}");
|
||||
|
||||
MT("anonymous_class_expression",
|
||||
"[keyword const] [def Adder] [operator =] [keyword class] [keyword extends] [variable Arithmetic] {",
|
||||
" [property add]([def a], [def b]) {}",
|
||||
"};");
|
||||
|
||||
MT("named_class_expression",
|
||||
"[keyword const] [def Subber] [operator =] [keyword class] [def Subtract] {",
|
||||
" [property sub]([def a], [def b]) {}",
|
||||
"};");
|
||||
|
||||
MT("class_async_method",
|
||||
"[keyword class] [def Foo] {",
|
||||
" [property sayName1]() {}",
|
||||
" [keyword async] [property sayName2]() {}",
|
||||
"}");
|
||||
|
||||
MT("import",
|
||||
"[keyword function] [def foo]() {",
|
||||
" [keyword import] [def $] [keyword from] [string 'jquery'];",
|
||||
" [keyword import] { [def encrypt], [def decrypt] } [keyword from] [string 'crypto'];",
|
||||
"}");
|
||||
|
||||
MT("import_trailing_comma",
|
||||
"[keyword import] {[def foo], [def bar],} [keyword from] [string 'baz']")
|
||||
|
||||
MT("import_dynamic",
|
||||
"[keyword import]([string 'baz']).[property then]")
|
||||
|
||||
MT("import_dynamic",
|
||||
"[keyword const] [def t] [operator =] [keyword import]([string 'baz']).[property then]")
|
||||
|
||||
MT("const",
|
||||
"[keyword function] [def f]() {",
|
||||
" [keyword const] [[ [def a], [def b] ]] [operator =] [[ [number 1], [number 2] ]];",
|
||||
"}");
|
||||
|
||||
MT("for/of",
|
||||
"[keyword for]([keyword let] [def of] [keyword of] [variable something]) {}");
|
||||
|
||||
MT("for await",
|
||||
"[keyword for] [keyword await]([keyword let] [def of] [keyword of] [variable something]) {}");
|
||||
|
||||
MT("generator",
|
||||
"[keyword function*] [def repeat]([def n]) {",
|
||||
" [keyword for]([keyword var] [def i] [operator =] [number 0]; [variable-2 i] [operator <] [variable-2 n]; [operator ++][variable-2 i])",
|
||||
" [keyword yield] [variable-2 i];",
|
||||
"}");
|
||||
|
||||
MT("let_scoping",
|
||||
"[keyword function] [def scoped]([def n]) {",
|
||||
" { [keyword var] [def i]; } [variable-2 i];",
|
||||
" { [keyword let] [def j]; [variable-2 j]; } [variable j];",
|
||||
" [keyword if] ([atom true]) { [keyword const] [def k]; [variable-2 k]; } [variable k];",
|
||||
"}");
|
||||
|
||||
MT("switch_scoping",
|
||||
"[keyword switch] ([variable x]) {",
|
||||
" [keyword default]:",
|
||||
" [keyword let] [def j];",
|
||||
" [keyword return] [variable-2 j]",
|
||||
"}",
|
||||
"[variable j];")
|
||||
|
||||
MT("leaving_scope",
|
||||
"[keyword function] [def a]() {",
|
||||
" {",
|
||||
" [keyword const] [def x] [operator =] [number 1]",
|
||||
" [keyword if] ([atom true]) {",
|
||||
" [keyword let] [def y] [operator =] [number 2]",
|
||||
" [keyword var] [def z] [operator =] [number 3]",
|
||||
" [variable console].[property log]([variable-2 x], [variable-2 y], [variable-2 z])",
|
||||
" }",
|
||||
" [variable console].[property log]([variable-2 x], [variable y], [variable-2 z])",
|
||||
" }",
|
||||
" [variable console].[property log]([variable x], [variable y], [variable-2 z])",
|
||||
"}")
|
||||
|
||||
MT("quotedStringAddition",
|
||||
"[keyword let] [def f] [operator =] [variable a] [operator +] [string 'fatarrow'] [operator +] [variable c];");
|
||||
|
||||
MT("quotedFatArrow",
|
||||
"[keyword let] [def f] [operator =] [variable a] [operator +] [string '=>'] [operator +] [variable c];");
|
||||
|
||||
MT("fatArrow",
|
||||
"[variable array].[property filter]([def a] [operator =>] [variable-2 a] [operator +] [number 1]);",
|
||||
"[variable a];", // No longer in scope
|
||||
"[keyword let] [def f] [operator =] ([[ [def a], [def b] ]], [def c]) [operator =>] [variable-2 a] [operator +] [variable-2 c];",
|
||||
"[variable c];");
|
||||
|
||||
MT("spread",
|
||||
"[keyword function] [def f]([def a], [meta ...][def b]) {",
|
||||
" [variable something]([variable-2 a], [meta ...][variable-2 b]);",
|
||||
"}");
|
||||
|
||||
MT("quasi",
|
||||
"[variable re][string-2 `fofdlakj${][variable x] [operator +] ([variable re][string-2 `foo`]) [operator +] [number 1][string-2 }fdsa`] [operator +] [number 2]");
|
||||
|
||||
MT("quasi_no_function",
|
||||
"[variable x] [operator =] [string-2 `fofdlakj${][variable x] [operator +] [string-2 `foo`] [operator +] [number 1][string-2 }fdsa`] [operator +] [number 2]");
|
||||
|
||||
MT("indent_statement",
|
||||
"[keyword var] [def x] [operator =] [number 10]",
|
||||
"[variable x] [operator +=] [variable y] [operator +]",
|
||||
" [atom Infinity]",
|
||||
"[keyword debugger];");
|
||||
|
||||
MT("indent_if",
|
||||
"[keyword if] ([number 1])",
|
||||
" [keyword break];",
|
||||
"[keyword else] [keyword if] ([number 2])",
|
||||
" [keyword continue];",
|
||||
"[keyword else]",
|
||||
" [number 10];",
|
||||
"[keyword if] ([number 1]) {",
|
||||
" [keyword break];",
|
||||
"} [keyword else] [keyword if] ([number 2]) {",
|
||||
" [keyword continue];",
|
||||
"} [keyword else] {",
|
||||
" [number 10];",
|
||||
"}");
|
||||
|
||||
MT("indent_for",
|
||||
"[keyword for] ([keyword var] [def i] [operator =] [number 0];",
|
||||
" [variable i] [operator <] [number 100];",
|
||||
" [variable i][operator ++])",
|
||||
" [variable doSomething]([variable i]);",
|
||||
"[keyword debugger];");
|
||||
|
||||
MT("indent_c_style",
|
||||
"[keyword function] [def foo]()",
|
||||
"{",
|
||||
" [keyword debugger];",
|
||||
"}");
|
||||
|
||||
MT("indent_else",
|
||||
"[keyword for] (;;)",
|
||||
" [keyword if] ([variable foo])",
|
||||
" [keyword if] ([variable bar])",
|
||||
" [number 1];",
|
||||
" [keyword else]",
|
||||
" [number 2];",
|
||||
" [keyword else]",
|
||||
" [number 3];");
|
||||
|
||||
MT("indent_funarg",
|
||||
"[variable foo]([number 10000],",
|
||||
" [keyword function]([def a]) {",
|
||||
" [keyword debugger];",
|
||||
"};");
|
||||
|
||||
MT("indent_below_if",
|
||||
"[keyword for] (;;)",
|
||||
" [keyword if] ([variable foo])",
|
||||
" [number 1];",
|
||||
"[number 2];");
|
||||
|
||||
MT("indent_semicolonless_if",
|
||||
"[keyword function] [def foo]() {",
|
||||
" [keyword if] ([variable x])",
|
||||
" [variable foo]()",
|
||||
"}")
|
||||
|
||||
MT("indent_semicolonless_if_with_statement",
|
||||
"[keyword function] [def foo]() {",
|
||||
" [keyword if] ([variable x])",
|
||||
" [variable foo]()",
|
||||
" [variable bar]()",
|
||||
"}")
|
||||
|
||||
MT("multilinestring",
|
||||
"[keyword var] [def x] [operator =] [string 'foo\\]",
|
||||
"[string bar'];");
|
||||
|
||||
MT("scary_regexp",
|
||||
"[string-2 /foo[[/]]bar/];");
|
||||
|
||||
MT("indent_strange_array",
|
||||
"[keyword var] [def x] [operator =] [[",
|
||||
" [number 1],,",
|
||||
" [number 2],",
|
||||
"]];",
|
||||
"[number 10];");
|
||||
|
||||
MT("param_default",
|
||||
"[keyword function] [def foo]([def x] [operator =] [string-2 `foo${][number 10][string-2 }bar`]) {",
|
||||
" [keyword return] [variable-2 x];",
|
||||
"}");
|
||||
|
||||
MT("new_target",
|
||||
"[keyword function] [def F]([def target]) {",
|
||||
" [keyword if] ([variable-2 target] [operator &&] [keyword new].[keyword target].[property name]) {",
|
||||
" [keyword return] [keyword new]",
|
||||
" .[keyword target];",
|
||||
" }",
|
||||
"}");
|
||||
|
||||
MT("async",
|
||||
"[keyword async] [keyword function] [def foo]([def args]) { [keyword return] [atom true]; }");
|
||||
|
||||
MT("async_assignment",
|
||||
"[keyword const] [def foo] [operator =] [keyword async] [keyword function] ([def args]) { [keyword return] [atom true]; };");
|
||||
|
||||
MT("async_object",
|
||||
"[keyword let] [def obj] [operator =] { [property async]: [atom false] };");
|
||||
|
||||
// async be highlighet as keyword and foo as def, but it requires potentially expensive look-ahead. See #4173
|
||||
MT("async_object_function",
|
||||
"[keyword let] [def obj] [operator =] { [property async] [property foo]([def args]) { [keyword return] [atom true]; } };");
|
||||
|
||||
MT("async_object_properties",
|
||||
"[keyword let] [def obj] [operator =] {",
|
||||
" [property prop1]: [keyword async] [keyword function] ([def args]) { [keyword return] [atom true]; },",
|
||||
" [property prop2]: [keyword async] [keyword function] ([def args]) { [keyword return] [atom true]; },",
|
||||
" [property prop3]: [keyword async] [keyword function] [def prop3]([def args]) { [keyword return] [atom true]; },",
|
||||
"};");
|
||||
|
||||
MT("async_arrow",
|
||||
"[keyword const] [def foo] [operator =] [keyword async] ([def args]) [operator =>] { [keyword return] [atom true]; };");
|
||||
|
||||
MT("async_jquery",
|
||||
"[variable $].[property ajax]({",
|
||||
" [property url]: [variable url],",
|
||||
" [property async]: [atom true],",
|
||||
" [property method]: [string 'GET']",
|
||||
"});");
|
||||
|
||||
MT("async_variable",
|
||||
"[keyword const] [def async] [operator =] {[property a]: [number 1]};",
|
||||
"[keyword const] [def foo] [operator =] [string-2 `bar ${][variable async].[property a][string-2 }`];")
|
||||
|
||||
MT("bigint", "[number 1n] [operator +] [number 0x1afn] [operator +] [number 0o064n] [operator +] [number 0b100n];")
|
||||
|
||||
MT("async_comment",
|
||||
"[keyword async] [comment /**/] [keyword function] [def foo]([def args]) { [keyword return] [atom true]; }");
|
||||
|
||||
MT("indent_switch",
|
||||
"[keyword switch] ([variable x]) {",
|
||||
" [keyword default]:",
|
||||
" [keyword return] [number 2]",
|
||||
"}")
|
||||
|
||||
MT("regexp_corner_case",
|
||||
"[operator +]{} [operator /] [atom undefined];",
|
||||
"[[[meta ...][string-2 /\\//] ]];",
|
||||
"[keyword void] [string-2 /\\//];",
|
||||
"[keyword do] [string-2 /\\//]; [keyword while] ([number 0]);",
|
||||
"[keyword if] ([number 0]) {} [keyword else] [string-2 /\\//];",
|
||||
"[string-2 `${][variable async][operator ++][string-2 }//`];",
|
||||
"[string-2 `${]{} [operator /] [string-2 /\\//}`];")
|
||||
|
||||
MT("return_eol",
|
||||
"[keyword return]",
|
||||
"{} [string-2 /5/]")
|
||||
|
||||
var ts_mode = CodeMirror.getMode({indentUnit: 2}, "application/typescript")
|
||||
function TS(name) {
|
||||
test.mode(name, ts_mode, Array.prototype.slice.call(arguments, 1))
|
||||
}
|
||||
|
||||
TS("typescript_extend_type",
|
||||
"[keyword class] [def Foo] [keyword extends] [type Some][operator <][type Type][operator >] {}")
|
||||
|
||||
TS("typescript_arrow_type",
|
||||
"[keyword let] [def x]: ([variable arg]: [type Type]) [operator =>] [type ReturnType]")
|
||||
|
||||
TS("typescript_class",
|
||||
"[keyword class] [def Foo] {",
|
||||
" [keyword public] [keyword static] [property main]() {}",
|
||||
" [keyword private] [property _foo]: [type string];",
|
||||
"}")
|
||||
|
||||
TS("typescript_literal_types",
|
||||
"[keyword import] [keyword *] [keyword as] [def Sequelize] [keyword from] [string 'sequelize'];",
|
||||
"[keyword interface] [def MyAttributes] {",
|
||||
" [property truthy]: [string 'true'] [operator |] [number 1] [operator |] [atom true];",
|
||||
" [property falsy]: [string 'false'] [operator |] [number 0] [operator |] [atom false];",
|
||||
"}",
|
||||
"[keyword interface] [def MyInstance] [keyword extends] [type Sequelize].[type Instance] [operator <] [type MyAttributes] [operator >] {",
|
||||
" [property rawAttributes]: [type MyAttributes];",
|
||||
" [property truthy]: [string 'true'] [operator |] [number 1] [operator |] [atom true];",
|
||||
" [property falsy]: [string 'false'] [operator |] [number 0] [operator |] [atom false];",
|
||||
"}")
|
||||
|
||||
TS("typescript_extend_operators",
|
||||
"[keyword export] [keyword interface] [def UserModel] [keyword extends]",
|
||||
" [type Sequelize].[type Model] [operator <] [type UserInstance], [type UserAttributes] [operator >] {",
|
||||
" [property findById]: (",
|
||||
" [variable userId]: [type number]",
|
||||
" ) [operator =>] [type Promise] [operator <] [type Array] [operator <] { [property id], [property name] } [operator >>];",
|
||||
" [property updateById]: (",
|
||||
" [variable userId]: [type number],",
|
||||
" [variable isActive]: [type boolean]",
|
||||
" ) [operator =>] [type Promise] [operator <] [type AccountHolderNotificationPreferenceInstance] [operator >];",
|
||||
" }")
|
||||
|
||||
TS("typescript_interface_with_const",
|
||||
"[keyword const] [def hello]: {",
|
||||
" [property prop1][operator ?]: [type string];",
|
||||
" [property prop2][operator ?]: [type string];",
|
||||
"} [operator =] {};")
|
||||
|
||||
TS("typescript_double_extend",
|
||||
"[keyword export] [keyword interface] [def UserAttributes] {",
|
||||
" [property id][operator ?]: [type number];",
|
||||
" [property createdAt][operator ?]: [type Date];",
|
||||
"}",
|
||||
"[keyword export] [keyword interface] [def UserInstance] [keyword extends] [type Sequelize].[type Instance][operator <][type UserAttributes][operator >], [type UserAttributes] {",
|
||||
" [property id]: [type number];",
|
||||
" [property createdAt]: [type Date];",
|
||||
"}");
|
||||
|
||||
TS("typescript_index_signature",
|
||||
"[keyword interface] [def A] {",
|
||||
" [[ [variable prop]: [type string] ]]: [type any];",
|
||||
" [property prop1]: [type any];",
|
||||
"}");
|
||||
|
||||
TS("typescript_generic_class",
|
||||
"[keyword class] [def Foo][operator <][type T][operator >] {",
|
||||
" [property bar]() {}",
|
||||
" [property foo](): [type Foo] {}",
|
||||
"}")
|
||||
|
||||
TS("typescript_type_when_keyword",
|
||||
"[keyword export] [keyword type] [type AB] [operator =] [type A] [operator |] [type B];",
|
||||
"[keyword type] [type Flags] [operator =] {",
|
||||
" [property p1]: [type string];",
|
||||
" [property p2]: [type boolean];",
|
||||
"};")
|
||||
|
||||
TS("typescript_type_when_not_keyword",
|
||||
"[keyword class] [def HasType] {",
|
||||
" [property type]: [type string];",
|
||||
" [property constructor]([def type]: [type string]) {",
|
||||
" [keyword this].[property type] [operator =] [variable-2 type];",
|
||||
" }",
|
||||
" [property setType]({ [def type] }: { [property type]: [type string]; }) {",
|
||||
" [keyword this].[property type] [operator =] [variable-2 type];",
|
||||
" }",
|
||||
"}")
|
||||
|
||||
TS("typescript_function_generics",
|
||||
"[keyword function] [def a]() {}",
|
||||
"[keyword function] [def b][operator <][type IA] [keyword extends] [type object], [type IB] [keyword extends] [type object][operator >]() {}",
|
||||
"[keyword function] [def c]() {}")
|
||||
|
||||
TS("typescript_complex_return_type",
|
||||
"[keyword function] [def A]() {",
|
||||
" [keyword return] [keyword this].[property property];",
|
||||
"}",
|
||||
"[keyword function] [def B](): [type Promise][operator <]{ [[ [variable key]: [type string] ]]: [type any] } [operator |] [atom null][operator >] {",
|
||||
" [keyword return] [keyword this].[property property];",
|
||||
"}")
|
||||
|
||||
TS("typescript_complex_type_casting",
|
||||
"[keyword const] [def giftpay] [operator =] [variable config].[property get]([string 'giftpay']) [keyword as] { [[ [variable platformUuid]: [type string] ]]: { [property version]: [type number]; [property apiCode]: [type string]; } };")
|
||||
|
||||
TS("typescript_keyof",
|
||||
"[keyword function] [def x][operator <][type T] [keyword extends] [keyword keyof] [type X][operator >]([def a]: [type T]) {",
|
||||
" [keyword return]")
|
||||
|
||||
TS("typescript_new_typeargs",
|
||||
"[keyword let] [def x] [operator =] [keyword new] [variable Map][operator <][type string], [type Date][operator >]([string-2 `foo${][variable bar][string-2 }`])")
|
||||
|
||||
TS("modifiers",
|
||||
"[keyword class] [def Foo] {",
|
||||
" [keyword public] [keyword abstract] [property bar]() {}",
|
||||
" [property constructor]([keyword readonly] [keyword private] [def x]) {}",
|
||||
"}")
|
||||
|
||||
TS("arrow prop",
|
||||
"({[property a]: [def p] [operator =>] [variable-2 p]})")
|
||||
|
||||
TS("generic in function call",
|
||||
"[keyword this].[property a][operator <][type Type][operator >]([variable foo]);",
|
||||
"[keyword this].[property a][operator <][variable Type][operator >][variable foo];")
|
||||
|
||||
TS("type guard",
|
||||
"[keyword class] [def Appler] {",
|
||||
" [keyword static] [property assertApple]([def fruit]: [type Fruit]): [variable-2 fruit] [keyword is] [type Apple] {",
|
||||
" [keyword if] ([operator !]([variable-2 fruit] [keyword instanceof] [variable Apple]))",
|
||||
" [keyword throw] [keyword new] [variable Error]();",
|
||||
" }",
|
||||
"}")
|
||||
|
||||
TS("type as variable",
|
||||
"[variable type] [operator =] [variable x] [keyword as] [type Bar];");
|
||||
|
||||
TS("enum body",
|
||||
"[keyword export] [keyword const] [keyword enum] [def CodeInspectionResultType] {",
|
||||
" [def ERROR] [operator =] [string 'problem_type_error'],",
|
||||
" [def WARNING] [operator =] [string 'problem_type_warning'],",
|
||||
" [def META],",
|
||||
"}")
|
||||
|
||||
TS("parenthesized type",
|
||||
"[keyword class] [def Foo] {",
|
||||
" [property x] [operator =] [keyword new] [variable A][operator <][type B], [type string][operator |](() [operator =>] [type void])[operator >]();",
|
||||
" [keyword private] [property bar]();",
|
||||
"}")
|
||||
|
||||
TS("abstract class",
|
||||
"[keyword export] [keyword abstract] [keyword class] [def Foo] {}")
|
||||
|
||||
var jsonld_mode = CodeMirror.getMode(
|
||||
{indentUnit: 2},
|
||||
{name: "javascript", jsonld: true}
|
||||
);
|
||||
function LD(name) {
|
||||
test.mode(name, jsonld_mode, Array.prototype.slice.call(arguments, 1));
|
||||
}
|
||||
|
||||
LD("json_ld_keywords",
|
||||
'{',
|
||||
' [meta "@context"]: {',
|
||||
' [meta "@base"]: [string "http://example.com"],',
|
||||
' [meta "@vocab"]: [string "http://xmlns.com/foaf/0.1/"],',
|
||||
' [property "likesFlavor"]: {',
|
||||
' [meta "@container"]: [meta "@list"]',
|
||||
' [meta "@reverse"]: [string "@beFavoriteOf"]',
|
||||
' },',
|
||||
' [property "nick"]: { [meta "@container"]: [meta "@set"] },',
|
||||
' [property "nick"]: { [meta "@container"]: [meta "@index"] }',
|
||||
' },',
|
||||
' [meta "@graph"]: [[ {',
|
||||
' [meta "@id"]: [string "http://dbpedia.org/resource/John_Lennon"],',
|
||||
' [property "name"]: [string "John Lennon"],',
|
||||
' [property "modified"]: {',
|
||||
' [meta "@value"]: [string "2010-05-29T14:17:39+02:00"],',
|
||||
' [meta "@type"]: [string "http://www.w3.org/2001/XMLSchema#dateTime"]',
|
||||
' }',
|
||||
' } ]]',
|
||||
'}');
|
||||
|
||||
LD("json_ld_fake",
|
||||
'{',
|
||||
' [property "@fake"]: [string "@fake"],',
|
||||
' [property "@contextual"]: [string "@identifier"],',
|
||||
' [property "user@domain.com"]: [string "@graphical"],',
|
||||
' [property "@ID"]: [string "@@ID"]',
|
||||
'}');
|
||||
})();
|
||||
@@ -1,61 +0,0 @@
|
||||
<!doctype html>
|
||||
|
||||
<title>CodeMirror: TypeScript mode</title>
|
||||
<meta charset="utf-8"/>
|
||||
<link rel=stylesheet href="../../doc/docs.css">
|
||||
|
||||
<link rel="stylesheet" href="../../lib/codemirror.css">
|
||||
<script src="../../lib/codemirror.js"></script>
|
||||
<script src="javascript.js"></script>
|
||||
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
|
||||
<div id=nav>
|
||||
<a href="https://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>
|
||||
|
||||
<ul>
|
||||
<li><a href="../../index.html">Home</a>
|
||||
<li><a href="../../doc/manual.html">Manual</a>
|
||||
<li><a href="https://github.com/codemirror/codemirror">Code</a>
|
||||
</ul>
|
||||
<ul>
|
||||
<li><a href="../index.html">Language modes</a>
|
||||
<li><a class=active href="#">TypeScript</a>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<article>
|
||||
<h2>TypeScript mode</h2>
|
||||
|
||||
|
||||
<div><textarea id="code" name="code">
|
||||
class Greeter {
|
||||
greeting: string;
|
||||
constructor (message: string) {
|
||||
this.greeting = message;
|
||||
}
|
||||
greet() {
|
||||
return "Hello, " + this.greeting;
|
||||
}
|
||||
}
|
||||
|
||||
var greeter = new Greeter("world");
|
||||
|
||||
var button = document.createElement('button')
|
||||
button.innerText = "Say Hello"
|
||||
button.onclick = function() {
|
||||
alert(greeter.greet())
|
||||
}
|
||||
|
||||
document.body.appendChild(button)
|
||||
|
||||
</textarea></div>
|
||||
|
||||
<script>
|
||||
var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
|
||||
lineNumbers: true,
|
||||
matchBrackets: true,
|
||||
mode: "text/typescript"
|
||||
});
|
||||
</script>
|
||||
|
||||
<p>This is a specialization of the <a href="index.html">JavaScript mode</a>.</p>
|
||||
</article>
|
||||
@@ -1,346 +0,0 @@
|
||||
/* BASICS */
|
||||
|
||||
.CodeMirror {
|
||||
/* Set height, width, borders, and global font properties here */
|
||||
font-family: monospace;
|
||||
height: 300px;
|
||||
color: black;
|
||||
direction: ltr;
|
||||
}
|
||||
|
||||
/* PADDING */
|
||||
|
||||
.CodeMirror-lines {
|
||||
padding: 4px 0; /* Vertical padding around content */
|
||||
}
|
||||
.CodeMirror pre {
|
||||
padding: 0 4px; /* Horizontal padding of content */
|
||||
}
|
||||
|
||||
.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
|
||||
background-color: white; /* The little square between H and V scrollbars */
|
||||
}
|
||||
|
||||
/* GUTTER */
|
||||
|
||||
.CodeMirror-gutters {
|
||||
border-right: 1px solid #ddd;
|
||||
background-color: #f7f7f7;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.CodeMirror-linenumbers {}
|
||||
.CodeMirror-linenumber {
|
||||
padding: 0 3px 0 5px;
|
||||
min-width: 20px;
|
||||
text-align: right;
|
||||
color: #999;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.CodeMirror-guttermarker { color: black; }
|
||||
.CodeMirror-guttermarker-subtle { color: #999; }
|
||||
|
||||
/* CURSOR */
|
||||
|
||||
.CodeMirror-cursor {
|
||||
border-left: 1px solid black;
|
||||
border-right: none;
|
||||
width: 0;
|
||||
}
|
||||
/* Shown when moving in bi-directional text */
|
||||
.CodeMirror div.CodeMirror-secondarycursor {
|
||||
border-left: 1px solid silver;
|
||||
}
|
||||
.cm-fat-cursor .CodeMirror-cursor {
|
||||
width: auto;
|
||||
border: 0 !important;
|
||||
background: #7e7;
|
||||
}
|
||||
.cm-fat-cursor div.CodeMirror-cursors {
|
||||
z-index: 1;
|
||||
}
|
||||
.cm-fat-cursor-mark {
|
||||
background-color: rgba(20, 255, 20, 0.5);
|
||||
-webkit-animation: blink 1.06s steps(1) infinite;
|
||||
-moz-animation: blink 1.06s steps(1) infinite;
|
||||
animation: blink 1.06s steps(1) infinite;
|
||||
}
|
||||
.cm-animate-fat-cursor {
|
||||
width: auto;
|
||||
border: 0;
|
||||
-webkit-animation: blink 1.06s steps(1) infinite;
|
||||
-moz-animation: blink 1.06s steps(1) infinite;
|
||||
animation: blink 1.06s steps(1) infinite;
|
||||
background-color: #7e7;
|
||||
}
|
||||
@-moz-keyframes blink {
|
||||
0% {}
|
||||
50% { background-color: transparent; }
|
||||
100% {}
|
||||
}
|
||||
@-webkit-keyframes blink {
|
||||
0% {}
|
||||
50% { background-color: transparent; }
|
||||
100% {}
|
||||
}
|
||||
@keyframes blink {
|
||||
0% {}
|
||||
50% { background-color: transparent; }
|
||||
100% {}
|
||||
}
|
||||
|
||||
/* Can style cursor different in overwrite (non-insert) mode */
|
||||
.CodeMirror-overwrite .CodeMirror-cursor {}
|
||||
|
||||
.cm-tab { display: inline-block; text-decoration: inherit; }
|
||||
|
||||
.CodeMirror-rulers {
|
||||
position: absolute;
|
||||
left: 0; right: 0; top: -50px; bottom: -20px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.CodeMirror-ruler {
|
||||
border-left: 1px solid #ccc;
|
||||
top: 0; bottom: 0;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
/* DEFAULT THEME */
|
||||
|
||||
.cm-s-default .cm-header {color: blue;}
|
||||
.cm-s-default .cm-quote {color: #090;}
|
||||
.cm-negative {color: #d44;}
|
||||
.cm-positive {color: #292;}
|
||||
.cm-header, .cm-strong {font-weight: bold;}
|
||||
.cm-em {font-style: italic;}
|
||||
.cm-link {text-decoration: underline;}
|
||||
.cm-strikethrough {text-decoration: line-through;}
|
||||
|
||||
.cm-s-default .cm-keyword {color: #708;}
|
||||
.cm-s-default .cm-atom {color: #219;}
|
||||
.cm-s-default .cm-number {color: #164;}
|
||||
.cm-s-default .cm-def {color: #00f;}
|
||||
.cm-s-default .cm-variable,
|
||||
.cm-s-default .cm-punctuation,
|
||||
.cm-s-default .cm-property,
|
||||
.cm-s-default .cm-operator {}
|
||||
.cm-s-default .cm-variable-2 {color: #05a;}
|
||||
.cm-s-default .cm-variable-3, .cm-s-default .cm-type {color: #085;}
|
||||
.cm-s-default .cm-comment {color: #a50;}
|
||||
.cm-s-default .cm-string {color: #a11;}
|
||||
.cm-s-default .cm-string-2 {color: #f50;}
|
||||
.cm-s-default .cm-meta {color: #555;}
|
||||
.cm-s-default .cm-qualifier {color: #555;}
|
||||
.cm-s-default .cm-builtin {color: #30a;}
|
||||
.cm-s-default .cm-bracket {color: #997;}
|
||||
.cm-s-default .cm-tag {color: #170;}
|
||||
.cm-s-default .cm-attribute {color: #00c;}
|
||||
.cm-s-default .cm-hr {color: #999;}
|
||||
.cm-s-default .cm-link {color: #00c;}
|
||||
|
||||
.cm-s-default .cm-error {color: #f00;}
|
||||
.cm-invalidchar {color: #f00;}
|
||||
|
||||
.CodeMirror-composing { border-bottom: 2px solid; }
|
||||
|
||||
/* Default styles for common addons */
|
||||
|
||||
div.CodeMirror span.CodeMirror-matchingbracket {color: #0b0;}
|
||||
div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #a22;}
|
||||
.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); }
|
||||
.CodeMirror-activeline-background {background: #e8f2ff;}
|
||||
|
||||
/* STOP */
|
||||
|
||||
/* The rest of this file contains styles related to the mechanics of
|
||||
the editor. You probably shouldn't touch them. */
|
||||
|
||||
.CodeMirror {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
background: white;
|
||||
}
|
||||
|
||||
.CodeMirror-scroll {
|
||||
overflow: scroll !important; /* Things will break if this is overridden */
|
||||
/* 30px is the magic margin used to hide the element's real scrollbars */
|
||||
/* See overflow: hidden in .CodeMirror */
|
||||
margin-bottom: -30px; margin-right: -30px;
|
||||
padding-bottom: 30px;
|
||||
height: 100%;
|
||||
outline: none; /* Prevent dragging from highlighting the element */
|
||||
position: relative;
|
||||
}
|
||||
.CodeMirror-sizer {
|
||||
position: relative;
|
||||
border-right: 30px solid transparent;
|
||||
}
|
||||
|
||||
/* The fake, visible scrollbars. Used to force redraw during scrolling
|
||||
before actual scrolling happens, thus preventing shaking and
|
||||
flickering artifacts. */
|
||||
.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
|
||||
position: absolute;
|
||||
z-index: 6;
|
||||
display: none;
|
||||
}
|
||||
.CodeMirror-vscrollbar {
|
||||
right: 0; top: 0;
|
||||
overflow-x: hidden;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
.CodeMirror-hscrollbar {
|
||||
bottom: 0; left: 0;
|
||||
overflow-y: hidden;
|
||||
overflow-x: scroll;
|
||||
}
|
||||
.CodeMirror-scrollbar-filler {
|
||||
right: 0; bottom: 0;
|
||||
}
|
||||
.CodeMirror-gutter-filler {
|
||||
left: 0; bottom: 0;
|
||||
}
|
||||
|
||||
.CodeMirror-gutters {
|
||||
position: absolute; left: 0; top: 0;
|
||||
min-height: 100%;
|
||||
z-index: 3;
|
||||
}
|
||||
.CodeMirror-gutter {
|
||||
white-space: normal;
|
||||
height: 100%;
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
margin-bottom: -30px;
|
||||
}
|
||||
.CodeMirror-gutter-wrapper {
|
||||
position: absolute;
|
||||
z-index: 4;
|
||||
background: none !important;
|
||||
border: none !important;
|
||||
}
|
||||
.CodeMirror-gutter-background {
|
||||
position: absolute;
|
||||
top: 0; bottom: 0;
|
||||
z-index: 4;
|
||||
}
|
||||
.CodeMirror-gutter-elt {
|
||||
position: absolute;
|
||||
cursor: default;
|
||||
z-index: 4;
|
||||
}
|
||||
.CodeMirror-gutter-wrapper ::selection { background-color: transparent }
|
||||
.CodeMirror-gutter-wrapper ::-moz-selection { background-color: transparent }
|
||||
|
||||
.CodeMirror-lines {
|
||||
cursor: text;
|
||||
min-height: 1px; /* prevents collapsing before first draw */
|
||||
}
|
||||
.CodeMirror pre {
|
||||
/* Reset some styles that the rest of the page might have set */
|
||||
-moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;
|
||||
border-width: 0;
|
||||
background: transparent;
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
margin: 0;
|
||||
white-space: pre;
|
||||
word-wrap: normal;
|
||||
line-height: inherit;
|
||||
color: inherit;
|
||||
z-index: 2;
|
||||
position: relative;
|
||||
overflow: visible;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
-webkit-font-variant-ligatures: contextual;
|
||||
font-variant-ligatures: contextual;
|
||||
}
|
||||
.CodeMirror-wrap pre {
|
||||
word-wrap: break-word;
|
||||
white-space: pre-wrap;
|
||||
word-break: normal;
|
||||
}
|
||||
|
||||
.CodeMirror-linebackground {
|
||||
position: absolute;
|
||||
left: 0; right: 0; top: 0; bottom: 0;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
.CodeMirror-linewidget {
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
padding: 0.1px; /* Force widget margins to stay inside of the container */
|
||||
}
|
||||
|
||||
.CodeMirror-widget {}
|
||||
|
||||
.CodeMirror-rtl pre { direction: rtl; }
|
||||
|
||||
.CodeMirror-code {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
/* Force content-box sizing for the elements where we expect it */
|
||||
.CodeMirror-scroll,
|
||||
.CodeMirror-sizer,
|
||||
.CodeMirror-gutter,
|
||||
.CodeMirror-gutters,
|
||||
.CodeMirror-linenumber {
|
||||
-moz-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
}
|
||||
|
||||
.CodeMirror-measure {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 0;
|
||||
overflow: hidden;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.CodeMirror-cursor {
|
||||
position: absolute;
|
||||
pointer-events: none;
|
||||
}
|
||||
.CodeMirror-measure pre { position: static; }
|
||||
|
||||
div.CodeMirror-cursors {
|
||||
visibility: hidden;
|
||||
position: relative;
|
||||
z-index: 3;
|
||||
}
|
||||
div.CodeMirror-dragcursors {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
.CodeMirror-focused div.CodeMirror-cursors {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
.CodeMirror-selected { background: #d9d9d9; }
|
||||
.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }
|
||||
.CodeMirror-crosshair { cursor: crosshair; }
|
||||
.CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; }
|
||||
.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; }
|
||||
|
||||
.cm-searching {
|
||||
background-color: #ffa;
|
||||
background-color: rgba(255, 255, 0, .4);
|
||||
}
|
||||
|
||||
/* Used to force a border model for a node */
|
||||
.cm-force-border { padding-right: .1px; }
|
||||
|
||||
@media print {
|
||||
/* Hide the cursor when printing */
|
||||
.CodeMirror div.CodeMirror-cursors {
|
||||
visibility: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
/* See issue #2901 */
|
||||
.cm-tab-wrap-hack:after { content: ''; }
|
||||
|
||||
/* Help users use markselection to safely style text background */
|
||||
span.CodeMirror-selectedtext { background: none; }
|
||||
@@ -1,41 +0,0 @@
|
||||
/* Based on Sublime Text's Monokai theme */
|
||||
|
||||
.cm-s-monokai.CodeMirror { background: #272822; color: #f8f8f2; }
|
||||
.cm-s-monokai div.CodeMirror-selected { background: #49483E; }
|
||||
.cm-s-monokai .CodeMirror-line::selection, .cm-s-monokai .CodeMirror-line > span::selection, .cm-s-monokai .CodeMirror-line > span > span::selection { background: rgba(73, 72, 62, .99); }
|
||||
.cm-s-monokai .CodeMirror-line::-moz-selection, .cm-s-monokai .CodeMirror-line > span::-moz-selection, .cm-s-monokai .CodeMirror-line > span > span::-moz-selection { background: rgba(73, 72, 62, .99); }
|
||||
.cm-s-monokai .CodeMirror-gutters { background: #272822; border-right: 0px; }
|
||||
.cm-s-monokai .CodeMirror-guttermarker { color: white; }
|
||||
.cm-s-monokai .CodeMirror-guttermarker-subtle { color: #d0d0d0; }
|
||||
.cm-s-monokai .CodeMirror-linenumber { color: #d0d0d0; }
|
||||
.cm-s-monokai .CodeMirror-cursor { border-left: 1px solid #f8f8f0; }
|
||||
|
||||
.cm-s-monokai span.cm-comment { color: #75715e; }
|
||||
.cm-s-monokai span.cm-atom { color: #ae81ff; }
|
||||
.cm-s-monokai span.cm-number { color: #ae81ff; }
|
||||
|
||||
.cm-s-monokai span.cm-comment.cm-attribute { color: #97b757; }
|
||||
.cm-s-monokai span.cm-comment.cm-def { color: #bc9262; }
|
||||
.cm-s-monokai span.cm-comment.cm-tag { color: #bc6283; }
|
||||
.cm-s-monokai span.cm-comment.cm-type { color: #5998a6; }
|
||||
|
||||
.cm-s-monokai span.cm-property, .cm-s-monokai span.cm-attribute { color: #a6e22e; }
|
||||
.cm-s-monokai span.cm-keyword { color: #f92672; }
|
||||
.cm-s-monokai span.cm-builtin { color: #66d9ef; }
|
||||
.cm-s-monokai span.cm-string { color: #e6db74; }
|
||||
|
||||
.cm-s-monokai span.cm-variable { color: #f8f8f2; }
|
||||
.cm-s-monokai span.cm-variable-2 { color: #9effff; }
|
||||
.cm-s-monokai span.cm-variable-3, .cm-s-monokai span.cm-type { color: #66d9ef; }
|
||||
.cm-s-monokai span.cm-def { color: #fd971f; }
|
||||
.cm-s-monokai span.cm-bracket { color: #f8f8f2; }
|
||||
.cm-s-monokai span.cm-tag { color: #f92672; }
|
||||
.cm-s-monokai span.cm-header { color: #ae81ff; }
|
||||
.cm-s-monokai span.cm-link { color: #ae81ff; }
|
||||
.cm-s-monokai span.cm-error { background: #f92672; color: #f8f8f0; }
|
||||
|
||||
.cm-s-monokai .CodeMirror-activeline-background { background: #373831; }
|
||||
.cm-s-monokai .CodeMirror-matchingbracket {
|
||||
text-decoration: underline;
|
||||
color: white !important;
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
#menu > li .fa.lightshop:before {
|
||||
content: '';
|
||||
display: block;
|
||||
background-image: url('data:image/png;base64,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');
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
background-size: 100%;
|
||||
background-repeat: no-repeat;
|
||||
margin-bottom: -3px;
|
||||
}
|
||||
#menu > li.active .fa.lightshop:before {
|
||||
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHIAAAByCAYAAACP3YV9AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsSAAALEgHS3X78AAAKi0lEQVR42u2de9BWRR3HP6B520SMbl66zFQ21biNYTEVMqQJyIxRljcatRHFiGQN74bRoDBp3rYmrjWiKTEGXQW5zDQM4jiMDcWahJOkAZpMFgSzI4pZf+x53h7gfd5nz233nJfznXnmfZ7n/e3v/M75PHvO3ncAjUqV0OYw4PjkNbjt/ZGJydHAUb0k3QX8F3gT+Hfy2p2k3WSV3NFuPCD2idZdQpuTgfcD7wNOAd7d9vkEYFBJh34dWAf83Co5twGZQkKbocCngNOAjwGnAsfGjguYdHjsCKoqoc0RwBhgOPDp5HVY7Lg66PNNjmyT0OZsHLizgM/GjieFdhzyIIU2o4EzgS8DH4gdT1YdkiCFNgOAbwATcM+72uuQApncOs8Fro4dS9E6JEAKbUYBFwKXx46lLPV7kEKbu4BrY8fRQXvb3u8G3pnVUb8FKbSZAGhABDzsi8ALwNbk/cvADlwrzS5gJ66FZhfwmlVyXxLrWGBZngP3O5DJc/AqXCm0LL0EGOBPwB+BjcCzLTAp480NEfoZSKHNpcADJbheCzyJaxJbb5X8R0HxFgIR+hFIoc0dwA0FudsNLAVWAL+1Sr5aQryFQYR+AlJoswC4ogBXi4BfWCWXlhxvoRChH4AU2jwIXJLDxRZcoWieVfL1APEWDhFqDlJoswi4OGPyZ4DvWSUfChhvKRABatv7keTELBC3ArdaJR8MHG9WiGOB5d2MaglSaPMTst1Op1slZ0SINw/EDT6GA0OfVF4Jbe4jfVPb74GxdYNolXzM17hWOVJoMx1QKZMtsEpOjBRvERCP80lQmxwptBkPfDdlsjtrDhHgGJ9EtQCZNLs9nDLZDKvkjZHiLfJ22q9y5K0p7WdZJafHCLSEZ+Jgn8SVBym0mQuckSLJI8DMSLGWUbAZ7OOg0iCFNlNwPRlpdAFwv9DG69lSYKxllU59bq37KgsyGRSlMyYPCrPkKsY7PPzsqCxI4Kac6YPADFBPPNHD5p+VBCm0mQaMLMBVqTADVfZP9rB5qXIghTZjgNsKdFkKzFAtNsB7PGy2VA4kMLUEn4XCDAgR/EC+UCmQQpsrgLM9zR9P6b4QmCEhCm0GA2/1MK0WSODeFLazSN/umgtm4JwIbnqej56vDEihzUz8fn0AN1glV1glf0AgmBEgAnzI064aIJOR4Ld4mq+xSn6/9SEHzDkp4osBEeDjHja7rJI7KwESN5zfV3ce+EVGmJcKbcZ1M4oIEfxmhz0LFWiiS6obvh3FszpdnIwwh3eJLSZE8MuRT0MFQAIXpbC9JenS6lUZYK7r9I+YEIU244U2q4CPeJhvhMij6BIoqzIkHWWVXN2H3yl0b6f9oVVySof0wSEm1+JMYCLwthRJR1glH4+dI0dnTLcqZ86cXRWISe5biftB30Q6iADrIX6OfDNnDFly5myr5OQO9kEgJj/Cz+Fy35Ac57/BKjkUIoIU2kwE5hXgqhvMcbhCzUnAOqvk7A52pUMU2lwMXEb2O9GB6vlRxgT5FHB6Qe76hOkRS2kQk9w3Epf73l7Q+bY03ir5M4gEMmkAWFmw20wwy4IotLkIl/vGFHyeLS21Sn6l9SHWuNbh+V0cpFVCm1Qwi4aY5L4RuOEpPj37abUT+BvuEbHfghaxcuRm4MMlufeCWSREoc2FuNx3Tknn9GtgkVXykU4GwUGmqDsuxRWGyqhnFgIxKbDNAN5VwqX6A/BTYKFVcmc34xi3Vt/b6mKr5OrkeZoWZsfbbMEQiyh1t2snsBBYaZVMVYaIAfKTHjZ7rZJLAHLAHAnsB7LgZ2KRz/mut85uqmqOXNL+ISPM/Y5TQul0a87r8DRwP563zm4KClJoI/Fb3/SgC5cBZk+DeElVjHWpPCWngYO3vKDekR6Fbmv9jKfdil6vgnvmjfJIv8wq+W0or55olVyBK6X+JYXPeVbJq4uGCOFBDvWw2WyV/Fenf3rAXAZMgvKb3RKYZwC/9PQ7VWjzlNCm8GpKaJAf9bDpOtW6D5iPAl+3Sm4L1QBuldxhlTwP+LFnktOB5UKbmzPE1lGhQfp0lP7Vx1EbzNuBNcDtVslzrZLbY/QnWiWvxI3s89Usoc3SVnec0OYtWY7bUrAGAaHNINyCet10fqvqkfE4UYdnZKxfrgeGJX/X4gpSq6ySe30dhMyRPpNRwK2qmEmxIQJYJefjCkF/TpFsWNvf63H1yleFNt/ydRASpO9apJlAVgFiS0khaAQH1Icz6B5fmCFBHuFp91pax1WC2JJV8hWr5PnAgpyuvFqQQoL0WtQA2JPGaRUhtitZVSTPVPhNPkYhQfou2Hekp13lIbZklZyGGyGQRV4tSCFB+q55epSPUV0gtmSVXECKaQqJrvPtBQkJcpenXde+vbpBTGKeT9Li5KklVsm7fY1DgtzuaffeLhekjhAXAlemSLKddNDDgbRKvozfc7Jjf2XdIAptjhfaLMYNA0mjyVbJV9IkCN1EZzxsTu1wUeoGcQzwBOlmmgHcbZX8TdrjhQbps/boQVPdaghxEq5P1adtuV3aKnldlmOGBulVlE4uROt93SBqYHaGpAusktdkPW7ooR5rPO0mAXPqBDG5ld5ItvWBOs5H8VWM4ZDP4Ncv+SX8O2zbFQPitcBdGZN3nN6XRjEGXy3FD2TlISa5UJF9WsBtVsnvFBFLDJBp18fxVWiI08i3QpdK5nEWolhTBpbhVtAvSsEgCm0uAe7AbU2fRduBSVbJR4uMK9YknnkUBzIIxGR+x/X4DSDrpGU4iNuKji/m/Mhf0UudMaVKhyi0uQyYjN8I+b70I6vkN8uKM+Z2EXPIB7I0iEKb43D7MF9DvqnhLV2VDAEpTbHXELiZdCPPWjrPKpmlVNtXLANxK2J9gez7bR2olcA9VsksM8pSKeatNe+GX08A8/PscSW0GYLbBX0c8MWCT3GaVTLYIvmxSq1F7tr2H9zAZINry92G29t4H6635RjgaNxiECfgGuU/CJwGnFLC6a3AtZmuyO0phWK07JS29V5k7QGmWiV9R5wXqqAg+zHEmcm4nGgKOdK8P0J8ADdBtfTCTDcFAdkPIT4MPBT6OdiXSgeZA+LluH49r1F1gXQfbpJq5sWZylKpIHNAPKf1axfazCblQKSCtQHX6Ts3YgxdVRrIIiC2+RqNW9f1a4GuyxZgMbC2Cs8/H5UCskiIB/gdBEzADWga5u21u/bghqGsBh6zSm4u47qUqcJBlgWxl+MMAc7CTXIZCnwCv+fpLtyUt024vZeftEpuLPo6hFahIENB7OP4J+LmYR7L/7eeeAOX43YCf+9rfYI6qzCQsSEe6ioEZAMxvnKDbCBWQ7lANhCro8wgG4jVUiaQDcTqKTXIBmI1lQpkA7G68gbZQKy2vEA2EKuvriAbiPVQnyAbiPVRR5ANxHqpV5ANxPrpIJANxHpqP5ANxPqqB2QOiGPS7hrTqHgNgJ7BTVlyVAOxImqts5N21UJoIFZKA4Q2J+G/4F9LDcSKaaBV8kXg+RRpGogVVOvW+jtP+wZiRdUCOQnotuVdA7HCaq9+HI6bZXRBL3YNxIqrZ3VIq+QbwFdxezw9l3z9HG6b2wZixfU/3vyHwyWaeT4AAAAASUVORK5CYII=');
|
||||
}
|
||||
/* fix collapse1 bug */
|
||||
#menu-lightshop > ul > li:first-child {
|
||||
display: none;
|
||||
}
|
||||
#menu-lightshop .badge {
|
||||
font-weight: normal;
|
||||
margin: -2px 0 0 5px;
|
||||
background: transparent;
|
||||
box-shadow: 0 0 0 1px inset;
|
||||
color: inherit;
|
||||
line-height: 9px;
|
||||
height: 13px;
|
||||
padding: 2px 5px;
|
||||
font-size: 10px;
|
||||
}
|
||||
@@ -1,601 +0,0 @@
|
||||
|
||||
/* custom inclusion of right, left and below tabs */
|
||||
|
||||
.tabs-below > .nav-tabs,
|
||||
.tabs-right > .nav-tabs,
|
||||
.tabs-left > .nav-tabs {
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.tab-content > .tab-pane,
|
||||
.pill-content > .pill-pane {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tab-content > .active,
|
||||
.pill-content > .active {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.tabs-below > .nav-tabs {
|
||||
border-top: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.tabs-below > .nav-tabs > li {
|
||||
margin-top: -1px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.tabs-below > .nav-tabs > li > a {
|
||||
-webkit-border-radius: 0 0 4px 4px;
|
||||
-moz-border-radius: 0 0 4px 4px;
|
||||
border-radius: 0 0 4px 4px;
|
||||
}
|
||||
|
||||
.tabs-below > .nav-tabs > li > a:hover,
|
||||
.tabs-below > .nav-tabs > li > a:focus {
|
||||
border-top-color: #ddd;
|
||||
border-bottom-color: transparent;
|
||||
}
|
||||
|
||||
.tabs-below > .nav-tabs > .active > a,
|
||||
.tabs-below > .nav-tabs > .active > a:hover,
|
||||
.tabs-below > .nav-tabs > .active > a:focus {
|
||||
border-color: transparent #ddd #ddd #ddd;
|
||||
}
|
||||
|
||||
.tabs-left > .nav-tabs > li,
|
||||
.tabs-right > .nav-tabs > li {
|
||||
float: none;
|
||||
}
|
||||
|
||||
.tabs-left > .nav-tabs > li > a,
|
||||
.tabs-right > .nav-tabs > li > a {
|
||||
min-width: 74px;
|
||||
margin-right: 0;
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
|
||||
.tabs-left > .nav-tabs {
|
||||
float: left;
|
||||
border-right: 1px solid #ddd;
|
||||
width: 200px;
|
||||
margin-bottom: -15px;
|
||||
padding-bottom: 25px;
|
||||
}
|
||||
|
||||
.tabs-left > .nav-tabs > li > a {
|
||||
margin-right: -1px;
|
||||
-webkit-border-radius: 4px 0 0 4px;
|
||||
-moz-border-radius: 4px 0 0 4px;
|
||||
border-radius: 4px 0 0 4px;
|
||||
}
|
||||
|
||||
.tabs-left > .nav-tabs > li > a:hover,
|
||||
.tabs-left > .nav-tabs > li > a:focus {
|
||||
border-color: #eeeeee #dddddd #eeeeee #eeeeee;
|
||||
}
|
||||
|
||||
.tabs-left > .nav-tabs .active > a,
|
||||
.tabs-left > .nav-tabs .active > a:hover,
|
||||
.tabs-left > .nav-tabs .active > a:focus {
|
||||
border-color: #ddd transparent #ddd #ddd;
|
||||
*border-right-color: #ffffff;
|
||||
}
|
||||
|
||||
.tabs-right > .nav-tabs {
|
||||
float: right;
|
||||
margin-left: 19px;
|
||||
border-left: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.tabs-right > .nav-tabs > li > a {
|
||||
margin-left: -1px;
|
||||
-webkit-border-radius: 0 4px 4px 0;
|
||||
-moz-border-radius: 0 4px 4px 0;
|
||||
border-radius: 0 4px 4px 0;
|
||||
}
|
||||
|
||||
.tabs-right > .nav-tabs > li > a:hover,
|
||||
.tabs-right > .nav-tabs > li > a:focus {
|
||||
border-color: #eeeeee #eeeeee #eeeeee #dddddd;
|
||||
}
|
||||
|
||||
.tabs-right > .nav-tabs .active > a,
|
||||
.tabs-right > .nav-tabs .active > a:hover,
|
||||
.tabs-right > .nav-tabs .active > a:focus {
|
||||
border-color: #ddd #ddd #ddd transparent;
|
||||
*border-left-color: #ffffff;
|
||||
}
|
||||
|
||||
.tabs-left > .tab-content {
|
||||
float: right;
|
||||
width: calc(100% - 199px);
|
||||
border-left: 1px solid #ddd;
|
||||
margin-left: -1px;
|
||||
padding-left: 15px;
|
||||
padding-right: 0;
|
||||
margin-bottom: -15px;
|
||||
}
|
||||
|
||||
.form-group {
|
||||
margin-left: 0 !important;
|
||||
margin-right: 0 !important;
|
||||
}
|
||||
|
||||
.code{
|
||||
font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
|
||||
}
|
||||
|
||||
.btn-default.btn-on.active {
|
||||
color: #fff;
|
||||
background-color: #5cb85c;
|
||||
border-color: #4cae4c;
|
||||
}
|
||||
.btn.btn-default.btn-on,
|
||||
.btn.btn-default.btn-off
|
||||
{
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.btn-group.on-off {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.radio, .checkbox {
|
||||
position: relative;
|
||||
padding-left: 20px;
|
||||
margin-bottom: 0;
|
||||
vertical-align: middle;
|
||||
font-weight: normal;
|
||||
cursor: pointer;
|
||||
}
|
||||
.radio input[type="radio"] {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.thumbnail {
|
||||
display: inline-block;
|
||||
margin-bottom: 0;
|
||||
margin-right: 30px;
|
||||
}
|
||||
|
||||
.thumbnail p {
|
||||
margin: 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.panel-default {
|
||||
border-color: #ddd;
|
||||
}
|
||||
.panel-default > .panel-heading {
|
||||
color: #333333;
|
||||
background-color: #f5f5f5;
|
||||
border-color: #ddd;
|
||||
}
|
||||
.panel-default > .panel-heading + .panel-collapse > .panel-body {
|
||||
border-top-color: #ddd;
|
||||
}
|
||||
.panel-default > .panel-heading .badge {
|
||||
color: #f5f5f5;
|
||||
background-color: #333333;
|
||||
}
|
||||
.panel-default > .panel-footer + .panel-collapse > .panel-body {
|
||||
border-bottom-color: #ddd;
|
||||
}
|
||||
.panel-primary {
|
||||
border-color: #337ab7;
|
||||
}
|
||||
.panel-primary > .panel-heading {
|
||||
color: #fff;
|
||||
background-color: #337ab7;
|
||||
border-color: #337ab7;
|
||||
}
|
||||
.panel-primary > .panel-heading + .panel-collapse > .panel-body {
|
||||
border-top-color: #337ab7;
|
||||
}
|
||||
.panel-primary > .panel-heading .badge {
|
||||
color: #337ab7;
|
||||
background-color: #fff;
|
||||
}
|
||||
.panel-primary > .panel-footer + .panel-collapse > .panel-body {
|
||||
border-bottom-color: #337ab7;
|
||||
}
|
||||
.panel-success {
|
||||
border-color: #d6e9c6;
|
||||
}
|
||||
.panel-success > .panel-heading {
|
||||
color: #3c763d;
|
||||
background-color: #dff0d8;
|
||||
border-color: #d6e9c6;
|
||||
}
|
||||
.panel-success > .panel-heading + .panel-collapse > .panel-body {
|
||||
border-top-color: #d6e9c6;
|
||||
}
|
||||
.panel-success > .panel-heading .badge {
|
||||
color: #dff0d8;
|
||||
background-color: #3c763d;
|
||||
}
|
||||
.panel-success > .panel-footer + .panel-collapse > .panel-body {
|
||||
border-bottom-color: #d6e9c6;
|
||||
}
|
||||
.panel-info {
|
||||
border-color: #bce8f1;
|
||||
}
|
||||
.panel-info > .panel-heading {
|
||||
color: #31708f;
|
||||
background-color: #d9edf7;
|
||||
border-color: #bce8f1;
|
||||
}
|
||||
.panel-info > .panel-heading + .panel-collapse > .panel-body {
|
||||
border-top-color: #bce8f1;
|
||||
}
|
||||
.panel-info > .panel-heading .badge {
|
||||
color: #d9edf7;
|
||||
background-color: #31708f;
|
||||
}
|
||||
.panel-info > .panel-footer + .panel-collapse > .panel-body {
|
||||
border-bottom-color: #bce8f1;
|
||||
}
|
||||
.panel-warning {
|
||||
border-color: #faebcc;
|
||||
}
|
||||
.panel-warning > .panel-heading {
|
||||
color: #8a6d3b;
|
||||
background-color: #fcf8e3;
|
||||
border-color: #faebcc;
|
||||
}
|
||||
.panel-warning > .panel-heading + .panel-collapse > .panel-body {
|
||||
border-top-color: #faebcc;
|
||||
}
|
||||
.panel-warning > .panel-heading .badge {
|
||||
color: #fcf8e3;
|
||||
background-color: #8a6d3b;
|
||||
}
|
||||
.panel-warning > .panel-footer + .panel-collapse > .panel-body {
|
||||
border-bottom-color: #faebcc;
|
||||
}
|
||||
.panel-danger {
|
||||
border-color: #ebccd1;
|
||||
}
|
||||
.panel-danger > .panel-heading {
|
||||
color: #a94442;
|
||||
background-color: #f2dede;
|
||||
border-color: #ebccd1;
|
||||
}
|
||||
.panel-danger > .panel-heading + .panel-collapse > .panel-body {
|
||||
border-top-color: #ebccd1;
|
||||
}
|
||||
.panel-danger > .panel-heading .badge {
|
||||
color: #f2dede;
|
||||
background-color: #a94442;
|
||||
}
|
||||
.panel-danger > .panel-footer + .panel-collapse > .panel-body {
|
||||
border-bottom-color: #ebccd1;
|
||||
}
|
||||
|
||||
.social-extension a.list-group-item {
|
||||
float: left;
|
||||
margin-right: -1px;
|
||||
padding: 0;
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
text-align: center;
|
||||
line-height: 45px;
|
||||
}
|
||||
|
||||
.social-extension .list-group-item:first-child {
|
||||
border-top-right-radius: 0;
|
||||
border-top-left-radius: 0;
|
||||
}
|
||||
.social-extension .list-group-item:last-child {
|
||||
margin-bottom: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
|
||||
.social-extension .icon{
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
fill: #444;
|
||||
}
|
||||
|
||||
.social-extension .list-group-item.active .icon {
|
||||
fill: #fff;
|
||||
}
|
||||
|
||||
.social-extension .list-group-item span {
|
||||
display: none;
|
||||
}
|
||||
.social-extension .list-group {
|
||||
height: 71px;
|
||||
overflow: auto;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.well-table {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.well-table .well {
|
||||
margin-bottom: 0;
|
||||
min-height: 70px;
|
||||
overflow: auto;
|
||||
max-height: 150px;
|
||||
background-color: #eeeeee;
|
||||
border: 1px solid #dddddd;
|
||||
}
|
||||
|
||||
.input-group label {
|
||||
margin: 0;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
input[type="radio"], input[type="checkbox"] {
|
||||
margin-bottom: -2px;
|
||||
}
|
||||
.theme-color {
|
||||
width: calc(100% + 20px);
|
||||
height: 140px;
|
||||
margin: 10px 0px 0 -20px;
|
||||
}
|
||||
|
||||
.main-color,.secondary-color {
|
||||
height: 65px;
|
||||
border: 0;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
line-height: 30px;
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
.color-0 .main-color {
|
||||
background: #2a77ed;
|
||||
}
|
||||
|
||||
.color-0 .secondary-color {
|
||||
background: #5e96eb;
|
||||
}
|
||||
|
||||
.color-1 .main-color {
|
||||
background: #e09d3d;
|
||||
}
|
||||
|
||||
.color-1 .secondary-color {
|
||||
background: #e4ad5e;
|
||||
}
|
||||
|
||||
.color-2 .main-color {
|
||||
background: #a8cf4b;
|
||||
}
|
||||
|
||||
.color-2 .secondary-color {
|
||||
background: #bede70;
|
||||
}
|
||||
|
||||
.color-3 .main-color {
|
||||
background: #8e6048;
|
||||
}
|
||||
|
||||
.color-3 .secondary-color {
|
||||
background: #a38c76;
|
||||
}
|
||||
|
||||
.color-4 .main-color {
|
||||
background: #5b5d84;
|
||||
}
|
||||
|
||||
.color-4 .secondary-color {
|
||||
background: #c8c9e3;
|
||||
}
|
||||
|
||||
.color-5 .main-color {
|
||||
background: #343434;
|
||||
}
|
||||
|
||||
.color-5 .secondary-color {
|
||||
background: #a38c76;
|
||||
}
|
||||
|
||||
.four-colors .main-color {
|
||||
width: 50%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.four-colors .secondary-color {
|
||||
width: 50%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.four-colors .main-color--1 {
|
||||
background: #343434;
|
||||
}
|
||||
|
||||
.four-colors .main-color--2 {
|
||||
background: #ededed;
|
||||
}
|
||||
|
||||
.four-colors .secondary-color--1 {
|
||||
background: #2f2f2f;
|
||||
}
|
||||
.four-colors .secondary-color--2 {
|
||||
background: #f6f6f6;
|
||||
}
|
||||
|
||||
.about-info.thumbnail {
|
||||
display: block;
|
||||
margin: 40px 0px 50px 0;
|
||||
padding: 0 15px 15px 15px;
|
||||
background: #fff;
|
||||
border-radius: 0;
|
||||
border: 0;
|
||||
color: #343434;
|
||||
box-shadow: 0px 0px 50px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.about-info .lightshop-logo {
|
||||
text-align: center;
|
||||
margin: 0 -15px;
|
||||
padding: 40px 0 37px 0;
|
||||
border-bottom: 1px solid #f2f2f0;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.about-info a,.about-info a:hover {
|
||||
border-bottom: 1px solid rgba(52, 52, 52, 0.25);
|
||||
color: #343434;
|
||||
}
|
||||
|
||||
.about-info .form-group + .form-group {
|
||||
border-top: 1px solid #fff;
|
||||
}
|
||||
|
||||
.inline-text {
|
||||
margin-bottom: 0;
|
||||
padding-top: 9px;
|
||||
}
|
||||
|
||||
.license-agreement {
|
||||
overflow: auto;
|
||||
height: 200px;
|
||||
background: #f2f2f0;
|
||||
border-radius: 0;
|
||||
padding: 15px;
|
||||
width: 100%;
|
||||
border: 0;
|
||||
outline: none;
|
||||
font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
|
||||
resize: none;
|
||||
}
|
||||
|
||||
fieldset legend {
|
||||
padding: 15px;
|
||||
background: #f9f9f9;
|
||||
border: 0;
|
||||
font-size: 15px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
min-width: 0;
|
||||
border-bottom: 1px solid #ededed;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.about-info .label-success {
|
||||
padding: 5px 10px;
|
||||
display: inline-block;
|
||||
margin: 0 15px 0;
|
||||
background-color: #2a77ed;
|
||||
border-radius: 0;
|
||||
font-weight: normal;
|
||||
letter-spacing: .5px;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
a.tab-new:after {
|
||||
position: absolute;
|
||||
content: '';
|
||||
background-color: #2a77ed;
|
||||
padding: 4px;
|
||||
border-radius: 10px;
|
||||
right: 5px;
|
||||
top: 5px;
|
||||
}
|
||||
|
||||
.nav-pills-btn {
|
||||
text-align: left;
|
||||
box-shadow: none;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.tooltip-custom {
|
||||
border-bottom: 1px dashed rgba(51, 51, 51, 0.4);
|
||||
cursor: pointer;
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
.tooltip-custom:after {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.tooltip-custom + .tooltip .tooltip-inner {
|
||||
max-width: 300px;
|
||||
}
|
||||
|
||||
.tooltip-custom + .tooltip a {
|
||||
color: #fff;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 992px) {
|
||||
.input-group-addon.code {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@media screen and (max-width: 767px) {
|
||||
.tabs-left > .nav-tabs {
|
||||
float: none;
|
||||
border-right: 0;
|
||||
width: 100%;
|
||||
margin-bottom: -15px;
|
||||
padding-bottom: 25px;
|
||||
}
|
||||
.tabs-left > .nav-tabs .active > a, .tabs-left > .nav-tabs .active > a:hover, .tabs-left > .nav-tabs .active > a:focus {
|
||||
border-color: #ddd;
|
||||
background: #fff;
|
||||
}
|
||||
.tabs-left > .nav-tabs > li > a {
|
||||
margin-right: 0;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
background: #eee;
|
||||
}
|
||||
.tabs-left > .tab-content {
|
||||
float: right;
|
||||
width: 100%;
|
||||
border-left: 0;
|
||||
margin-left: 0;
|
||||
padding-left: 0;
|
||||
padding-right: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.table .table {
|
||||
min-width: 125vw;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@media screen and (max-width: 480px) {
|
||||
.table .table {
|
||||
min-width: 150vw;
|
||||
}
|
||||
}
|
||||
|
||||
.nav-pills {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.is-expired span {
|
||||
color: #e3503e;
|
||||
font-weight: bold;
|
||||
}
|
||||
.new-version span {
|
||||
color: #2a77ed;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
{{ header }}{{ column_left }}
|
||||
<div id="content">
|
||||
<div class="page-header">
|
||||
<div class="container-fluid">
|
||||
<div class="pull-right">
|
||||
<button type="submit" form="form-module" data-toggle="tooltip" title="{{ button_save }}" class="btn btn-primary"><i class="fa fa-save"></i></button>
|
||||
<a href="{{ cancel }}" data-toggle="tooltip" title="{{ button_cancel }}" class="btn btn-default"><i class="fa fa-reply"></i></a></div>
|
||||
<h1>{{ heading_title }}</h1>
|
||||
<ul class="breadcrumb">
|
||||
{% for breadcrumb in breadcrumbs %}
|
||||
<li><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-fluid">
|
||||
{% if error_warning %}
|
||||
<div class="alert alert-danger alert-dismissible"><i class="fa fa-exclamation-circle"></i> {{ error_warning }}
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><i class="fa fa-pencil"></i> {{ text_edit }}</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="{{ action }}" method="post" enctype="multipart/form-data" id="form-module" class="form-horizontal">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-status">{{ entry_status }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select name="module_category_status" id="input-status" class="form-control">
|
||||
{% if module_lighthop_status %}
|
||||
<option value="1" selected="selected">{{ text_enabled }}</option>
|
||||
<option value="0">{{ text_disabled }}</option>
|
||||
{% else %}
|
||||
<option value="1">{{ text_enabled }}</option>
|
||||
<option value="0" selected="selected">{{ text_disabled }}</option>
|
||||
{% endif %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ footer }}
|
||||
@@ -1,78 +0,0 @@
|
||||
{{ header }}{{ column_left }}
|
||||
<div id="content">
|
||||
<div class="page-header">
|
||||
<div class="container-fluid">
|
||||
<div class="pull-right">
|
||||
<button type="submit" form="form-callback" data-toggle="tooltip" title="{{ button_save }}" class="btn btn-primary"><i class="fa fa-save"></i></button>
|
||||
<a href="{{ cancel }}" data-toggle="tooltip" title="{{ button_cancel }}" class="btn btn-default"><i class="fa fa-reply"></i></a></div>
|
||||
<h1>{{ heading_title }}</h1>
|
||||
<ul class="breadcrumb">
|
||||
{% for breadcrumb in breadcrumbs %}
|
||||
<li><a href="{{ breadcrumb['href'] }}">{{ breadcrumb['text'] }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-fluid">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><i class="fa fa-pencil"></i> {{ heading_title }}</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="{{ action }}" method="post" enctype="multipart/form-data" id="form-callback" class="form-horizontal">
|
||||
<div class="form-group required">
|
||||
<label class="col-sm-2 control-label">{{ text_id }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="call_id" value="{{ callback_id }}" placeholder="{{ callback_id }}" id="callback_id" class="form-control" disabled />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">{{ text_name }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="name" value="{{ name }}" placeholder="{{ name }}" id="name" class="form-control" disabled />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">{{ text_telephone }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="telephone" value="{{ telephone }}" placeholder="{{ telephone }}" id="telephone" class="form-control" disabled />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">{{ text_comment }}</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea name="comment" rows="5" placeholder="Код share кнопок" id="input-comment" class="form-control">{{ comment }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">{{ text_status }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select name="status_id" class="form-control">
|
||||
{% if (status_id == '0') %}
|
||||
<option value="0" selected="selected">{{ status_wait }}</option>
|
||||
<option value="1" >{{ status_done }}</option>
|
||||
{% else %}
|
||||
<option value="0" >{{ status_wait }}</option>
|
||||
<option value="1" selected="selected">{{ status_done }}</option>
|
||||
{% endif %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">{{ text_added }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="date_added" value="{{ date_added }}" placeholder="{{ date_added }}" id="date_added" class="form-control" disabled />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">{{ text_modified }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="date_modified" value="{{ date_modified }}" placeholder="{{ date_modified }}" id="date_modified" class="form-control" disabled />
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ footer }}
|
||||
@@ -1,98 +0,0 @@
|
||||
{{ header }}{{ column_left }}
|
||||
<div id="content">
|
||||
<div class="page-header">
|
||||
<div class="container-fluid">
|
||||
<div class="pull-right">
|
||||
<button onclick="$('#form').attr('action', '{{ update }}'); $('#form').submit();" data-toggle="tooltip" title="{{ status_done }}" class="btn btn-success"><i class="fa fa-refresh"></i></button>
|
||||
<a onclick="$('form').submit();" data-toggle="tooltip" title="{{ button_delete }}" class="btn btn-danger"><i class="fa fa-trash-o"></i></a></div>
|
||||
<h1>{{ heading_title }}</h1>
|
||||
<ul class="breadcrumb">
|
||||
{% for breadcrumb in breadcrumbs %}
|
||||
<li><a href="{{ breadcrumb['href'] }}">{{ breadcrumb['text'] }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-fluid">
|
||||
{% if (error_warning) %}
|
||||
<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> {{ error_warning }}
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if (success) %}
|
||||
<div class="alert alert-success"><i class="fa fa-check-circle"></i> {{ success }}
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><i class="fa fa-list"></i> Заявки</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="{{ delete }}" method="post" enctype="multipart/form-data" id="form" class="form-horizontal">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<td width="1" style="text-align: center;"><input type="checkbox" onclick="$('input[name*=\'selected\']').prop('checked', this.checked);" /></td>
|
||||
<td class="text-left">{% if (sort == 'call_id') %}
|
||||
<a href="{{ sort_call_id }}" class="{{ (order)|lower }}">{{ "Номер" }}</a>
|
||||
{% else %}
|
||||
<a href="{{ sort_call_id }}">{{ "Номер" }}</a>
|
||||
{% endif %}</td>
|
||||
<td class="text-left">{% if (sort == 'name') %}
|
||||
<a href="{{ sort_name }}" class="{{ (order)|lower }}">{{ column_name }}</a>
|
||||
{% else %}
|
||||
<a href="{{ sort_name }}">{{ column_name }}</a>
|
||||
{% endif %}</td>
|
||||
<td class="text-right">{% if (sort == 'telephone') %}
|
||||
<a href="{{ sort_telephone }}" class="{{ (order)|lower }}">{{ column_telephone }}</a>
|
||||
{% else %}
|
||||
<a href="{{ sort_telephone }}">{{ column_telephone }}</a>
|
||||
{% endif %}</td>
|
||||
<td class="text-left">{{ text_comment }}</td>
|
||||
<td class="text-right">{{ text_status }}</td>
|
||||
<td class="text-right">{{ text_added }}</td>
|
||||
<td class="text-right">{{ text_modified }}</td>
|
||||
<td class="text-right">{{ text_action }}</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% if (callbacks) %}
|
||||
{% for callback in callbacks %}
|
||||
<tr {% if (callback['status'] != status_done) %}class="warning"{% endif %}>
|
||||
<td class="text-center">{% if (callback['selected']) %}
|
||||
<input type="checkbox" name="selected[]" value="{{ callback['callback_id'] }}" checked="checked" />
|
||||
{% else %}
|
||||
<input type="checkbox" name="selected[]" value="{{ callback['callback_id'] }}" />
|
||||
{% endif %}</td>
|
||||
<td class="text-left">{{ callback['callback_id'] }}</td>
|
||||
<td class="text-left">{{ callback['name'] }}</td>
|
||||
<td class="text-right">{{ callback['telephone'] }}</td>
|
||||
<td class="text-left">{{ callback['comment'] }}</td>
|
||||
<td class="text-right">{{ callback['status'] }}</td>
|
||||
<td class="text-right">{{ callback['date_added'] }}</td>
|
||||
<td class="text-right">{{ callback['date_modified'] }}</td>
|
||||
<td class="text-right">
|
||||
<a href="{{ callback['action'] }}" data-toggle="tooltip" title="{{ text_edit }}</a>" class="btn btn-primary"><i class="fa fa-pencil"></i></a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<tr>
|
||||
<td class="text-center" colspan="9">{{ text_no_results }}</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
<div class="row">
|
||||
<div class="col-sm-6 text-left">{{ pagination }}</div>
|
||||
<div class="col-sm-6 text-right">{# echo $results; #}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ footer }}
|
||||
@@ -1,344 +0,0 @@
|
||||
{{ header }}{{ column_left }}
|
||||
<div id="content">
|
||||
<div class="page-header">
|
||||
<div class="container-fluid">
|
||||
<div class="pull-right">
|
||||
<button type="submit" form="form-blog" data-toggle="tooltip" title="{{ button_save }}" class="btn btn-primary"><i class="fa fa-save"></i></button>
|
||||
<a href="{{ cancel }}" data-toggle="tooltip" title="{{ button_cancel }}" class="btn btn-default"><i class="fa fa-reply"></i></a></div>
|
||||
<h1>{{ heading_title }}</h1>
|
||||
<ul class="breadcrumb">
|
||||
{% for breadcrumb in breadcrumbs %}
|
||||
<li><a href="{{ breadcrumb['href'] }}">{{ breadcrumb['text'] }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-fluid">
|
||||
{% if (error_warning) %}
|
||||
<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> {{ error_warning }}
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><i class="fa fa-pencil"></i> {{ text_form }}</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="{{ action }}" method="post" enctype="multipart/form-data" id="form-blog" class="form-horizontal">
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="active"><a href="#tab-general" data-toggle="tab">{{ tab_general }}</a></li>
|
||||
<li><a href="#tab-data" data-toggle="tab">{{ tab_data }}</a></li>
|
||||
<li><a href="#tab-seo" data-toggle="tab">{{ tab_seo }}</a></li>
|
||||
<li><a href="#tab-design" data-toggle="tab">{{ tab_design }}</a></li>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane active" id="tab-general">
|
||||
<ul class="nav nav-tabs" id="language">
|
||||
{% for language in languages %}
|
||||
<li><a href="#language{{ language['language_id'] }}" data-toggle="tab"><img src="language/{{ language['code'] }}/{{ language['code'] }}.png" title="{{ language['name'] }}" /> {{ language['name'] }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
{% for language in languages %}
|
||||
<div class="tab-pane" id="language{{ language['language_id'] }}">
|
||||
<div class="form-group required">
|
||||
<label class="col-sm-2 control-label" for="input-title{{ language['language_id'] }}">{{ entry_title }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="blog_description[{{ language['language_id'] }}][title]" value="{{ blog_description[language['language_id']] is defined ? blog_description[language['language_id']]['title'] : '' }}" placeholder="{{ entry_title }}" id="input-title{{ language['language_id'] }}" class="form-control" />
|
||||
{% if (error_title[language['language_id']] is defined) %}
|
||||
<div class="text-danger">{{ error_title[language['language_id']] }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group required">
|
||||
<label class="col-sm-2 control-label" for="input-description{{ language['language_id'] }}">{{ entry_description }}</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea name="blog_description[{{ language['language_id'] }}][description]" placeholder="{{ entry_description }}" id="input-description{{ language['language_id'] }}" data-lang="{{ lang }}" class="form-control" data-toggle="summernote" data-lang="{{ summernote }}">{{ blog_description[language['language_id']] is defined ? blog_description[language['language_id']]['description'] : '' }}</textarea>
|
||||
{% if (error_description[language['language_id']] is defined) %}
|
||||
<div class="text-danger">{{ error_description[language['language_id']] }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-meta-title{{ language['language_id'] }}">{{ entry_meta_title }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="blog_description[{{ language['language_id'] }}][meta_title]" value="{{ blog_description[language['language_id']] is defined ? blog_description[language['language_id']]['meta_title'] : '' }}" placeholder="{{ entry_meta_title }}" id="input-meta-title{{ language['language_id'] }}" class="form-control" />
|
||||
{% if (error_meta_title[language['language_id']] is defined) %}
|
||||
<div class="text-danger">{{ error_meta_title[language['language_id']] }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-meta-h1{{ language['language_id'] }}">{{ entry_meta_h1 }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="blog_description[{{ language['language_id'] }}][meta_h1]" value="{{ blog_description[language['language_id']] is defined ? blog_description[language['language_id']]['meta_h1'] : '' }}" placeholder="{{ entry_meta_h1 }}" id="input-meta-h1{{ language['language_id'] }}" class="form-control" />
|
||||
{% if (error_meta_title[language['language_id']] is defined) %}
|
||||
<div class="text-danger">{{ error_meta_title[language['language_id']] }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-meta-description{{ language['language_id'] }}">{{ entry_meta_description }}</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea name="blog_description[{{ language['language_id'] }}][meta_description]" rows="5" placeholder="{{ entry_meta_description }}" id="input-meta-description{{ language['language_id'] }}" class="form-control">{{ blog_description[language['language_id']] is defined ? blog_description[language['language_id']]['meta_description'] : '' }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-meta-keyword{{ language['language_id'] }}">{{ entry_meta_keyword }}</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea name="blog_description[{{ language['language_id'] }}][meta_keyword]" rows="5" placeholder="{{ entry_meta_keyword }}" id="input-meta-keyword{{ language['language_id'] }}" class="form-control">{{ blog_description[language['language_id']] is defined ? blog_description[language['language_id']]['meta_keyword'] : '' }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-tag{{ language['language_id'] }}">{{ entry_tag }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="blog_description[{{ language['language_id'] }}][tag]" value="{{ blog_description[language['language_id']] is defined ? blog_description[language['language_id']]['tag'] : '' }}" placeholder="{{ entry_tag }}" id="input-tag{{ language['language_id'] }}" class="form-control" />
|
||||
{% if (error_tag[language['language_id']] is defined) %}
|
||||
<div class="text-danger">{{ error_tag[language['language_id']] }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-pane" id="tab-data">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">{{ entry_store }}</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="well well-sm" style="height: 150px; overflow: auto;">
|
||||
|
||||
{% for store in stores %}
|
||||
<div class="checkbox">
|
||||
<label> {% if store.store_id in blog_store %}
|
||||
<input type="checkbox" name="blog_store[]" value="{{ store.store_id }}" checked="checked" />
|
||||
{{ store.name }}
|
||||
{% else %}
|
||||
<input type="checkbox" name="blog_store[]" value="{{ store.store_id }}" />
|
||||
{{ store.name }}
|
||||
{% endif %}</label>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-category">{{ entry_main_category }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select id="main_category_id" name="main_category_id" class="form-control">
|
||||
<option value="0" selected="selected">{{ text_none }}</option>
|
||||
{% for category in categories %}
|
||||
{% if (category['category_id'] == main_category_id) %}
|
||||
<option value="{{ category['category_id'] }}" selected="selected">{{ category['name'] }}</option>
|
||||
{% else %}
|
||||
<option value="{{ category['category_id'] }}">{{ category['name'] }}</option>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-date"><span data-toggle="tooltip" title="{{ help_date_added }}">{{ entry_date_added }}</span></label>
|
||||
<div class="col-sm-10">
|
||||
<div class="input-group date">
|
||||
<input type="text" name="date_added" value="{{ date_added }}" placeholder="{{ entry_date_added }}" data-date-format="YYYY-MM-DD" id="input-date-available" class="form-control" />
|
||||
<span class="input-group-btn">
|
||||
<button class="btn btn-default" type="button"><i class="fa fa-calendar"></i></button>
|
||||
</span></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-related"><span data-toggle="tooltip" title="{{ help_related }}">{{ entry_related }}</span></label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="related" value="" placeholder="{{ entry_related }}" id="input-related" class="form-control" />
|
||||
<div id="blog-related" class="well well-sm" style="height: 150px; overflow: auto;">
|
||||
{% for blog_related in blog_relateds %}
|
||||
<div id="blog-related{{ blog_related['blog_id'] }}"><i class="fa fa-minus-circle"></i> {{ blog_related['name'] }}
|
||||
<input type="hidden" name="blog_related[]" value="{{ blog_related['blog_id'] }}" />
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-related-products"><span data-toggle="tooltip" title="{{ help_related_products }}">{{ entry_related_products }}</span></label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="related-products" value="" placeholder="{{ entry_related_products }}" id="input-related-products" class="form-control" />
|
||||
<div id="product-related" class="well well-sm" style="height: 150px; overflow: auto;">
|
||||
{% for product_related in product_relateds %}
|
||||
<div id="product-related{{ product_related['product_id'] }}"><i class="fa fa-minus-circle"></i> {{ product_related['name'] }}
|
||||
<input type="hidden" name="product_related[]" value="{{ product_related['product_id'] }}" />
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">{{ entry_image }}</label>
|
||||
<div class="col-sm-10"><a href="" id="thumb-image" data-toggle="image" class="img-thumbnail"><img src="{{ thumb }}" alt="" title="" data-placeholder="{{ placeholder }}" /></a>
|
||||
<input type="hidden" name="image" value="{{ image }}" id="input-image" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-status">{{ entry_status }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select name="status" id="input-status" class="form-control">
|
||||
{% if (status) %}
|
||||
<option value="1" selected="selected">{{ text_enabled }}</option>
|
||||
<option value="0">{{ text_disabled }}</option>
|
||||
{% else %}
|
||||
<option value="1">{{ text_enabled }}</option>
|
||||
<option value="0" selected="selected">{{ text_disabled }}</option>
|
||||
{% endif %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="tab-pane" id="tab-seo">
|
||||
<div class="alert alert-info"><i class="fa fa-info-circle"></i> {{ help_keyword }} </div>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<td class="text-left">{{ entry_store }}</td>
|
||||
<td class="text-left">{{ entry_keyword }}</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for store in stores %}
|
||||
<tr>
|
||||
<td class="text-left">{{ store.name }}</td>
|
||||
<td class="text-left">{% for language in languages %}
|
||||
<div class="input-group"><span class="input-group-addon"><img src="language/{{ language.code }}/{{ language.code }}.png" title="{{ language.name }}" /></span>
|
||||
<input type="text" name="blog_seo_url[{{ store.store_id }}][{{ language.language_id }}]" value="{% if blog_seo_url[store.store_id][language.language_id] %}{{ blog_seo_url[store.store_id][language.language_id] }}{% endif %}" placeholder="{{ entry_keyword }}" class="form-control" />
|
||||
</div>
|
||||
{% if error_keyword[store.store_id][language.language_id] %}
|
||||
<div class="text-danger">{{ error_keyword[store.store_id][language.language_id] }}</div>
|
||||
{% endif %}
|
||||
{% endfor %}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="tab-pane" id="tab-design">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<td class="text-left">{{ entry_store }}</td>
|
||||
<td class="text-left">{{ entry_layout }}</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
{% for store in stores %}
|
||||
<tr>
|
||||
<td class="text-left">{{ store.name }}</td>
|
||||
<td class="text-left"><select name="blog_layout[{{ store.store_id }}]" class="form-control">
|
||||
<option value=""></option>
|
||||
{% for layout in layouts %}
|
||||
{% if blog_layout[store.store_id] and blog_layout[store.store_id] == layout.layout_id %}
|
||||
<option value="{{ layout.layout_id }}" selected="selected">{{ layout.name }}</option>
|
||||
{% else %}
|
||||
<option value="{{ layout.layout_id }}">{{ layout.name }}</option>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</select></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript"><!--
|
||||
{% if (ckeditor) %}
|
||||
{% for language in languages %}
|
||||
ckeditorInit('input-description{{ language['language_id'] }}', getURLVar('user_token'));
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
//--></script>
|
||||
<script type="text/javascript"><!--
|
||||
$('#language a:first').tab('show');
|
||||
$('.date').datetimepicker({
|
||||
pickTime: false
|
||||
});
|
||||
// Related
|
||||
$('input[name=\'related\']').autocomplete({
|
||||
'source': function(request, response) {
|
||||
$.ajax({
|
||||
url: 'index.php?route=extension/module/lightshop/lightshop_blog/autocomplete&user_token={{ user_token }}&filter_name=' + encodeURIComponent(request),
|
||||
dataType: 'json',
|
||||
success: function(json) {
|
||||
response($.map(json, function(item) {
|
||||
return {
|
||||
label: item['name'],
|
||||
value: item['blog_id']
|
||||
}
|
||||
}));
|
||||
}
|
||||
});
|
||||
},
|
||||
'select': function(item) {
|
||||
$('input[name=\'related\']').val('');
|
||||
|
||||
$('#blog-related' + item['value']).remove();
|
||||
|
||||
$('#blog-related').append('<div id="blog-related' + item['value'] + '"><i class="fa fa-minus-circle"></i> ' + item['label'] + '<input type="hidden" name="blog_related[]" value="' + item['value'] + '" /></div>');
|
||||
}
|
||||
});
|
||||
|
||||
$('#blog-related').delegate('.fa-minus-circle', 'click', function() {
|
||||
$(this).parent().remove();
|
||||
});
|
||||
|
||||
|
||||
// Related products
|
||||
$('input[name=\'related-products\']').autocomplete({
|
||||
'source': function(request, response) {
|
||||
$.ajax({
|
||||
url: 'index.php?route=catalog/product/autocomplete&user_token={{ user_token }}&filter_name=' + encodeURIComponent(request),
|
||||
dataType: 'json',
|
||||
success: function(json) {
|
||||
response($.map(json, function(item) {
|
||||
return {
|
||||
label: item['name'],
|
||||
value: item['product_id']
|
||||
}
|
||||
}));
|
||||
}
|
||||
});
|
||||
},
|
||||
'select': function(item) {
|
||||
$('input[name=\'related-products\']').val('');
|
||||
|
||||
$('#product-related' + item['value']).remove();
|
||||
|
||||
$('#product-related').append('<div id="product-related' + item['value'] + '"><i class="fa fa-minus-circle"></i> ' + item['label'] + '<input type="hidden" name="product_related[]" value="' + item['value'] + '" /></div>');
|
||||
}
|
||||
});
|
||||
|
||||
$('#product-related').delegate('.fa-minus-circle', 'click', function() {
|
||||
$(this).parent().remove();
|
||||
});
|
||||
|
||||
//--></script></div>
|
||||
{{ footer }}
|
||||
@@ -1,85 +0,0 @@
|
||||
{{ header }}{{ column_left }}
|
||||
<div id="content">
|
||||
<div class="page-header">
|
||||
<div class="container-fluid">
|
||||
<div class="pull-right"><a href="{{ add }}" data-toggle="tooltip" title="{{ button_add }}" class="btn btn-primary"><i class="fa fa-plus"></i></a>
|
||||
<button type="button" data-toggle="tooltip" title="{{ button_delete }}" class="btn btn-danger" onclick="confirm('{{ text_confirm }}') ? $('#form-blog').submit() : false;"><i class="fa fa-trash-o"></i></button>
|
||||
</div>
|
||||
<h1>{{ heading_title }}</h1>
|
||||
<ul class="breadcrumb">
|
||||
{% for breadcrumb in breadcrumbs %}
|
||||
<li><a href="{{ breadcrumb['href'] }}">{{ breadcrumb['text'] }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-fluid">
|
||||
{% if (error_warning) %}
|
||||
<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> {{ error_warning }}
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if (success) %}
|
||||
<div class="alert alert-success"><i class="fa fa-check-circle"></i> {{ success }}
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><i class="fa fa-list"></i> {{ text_list }}</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="{{ delete }}" method="post" enctype="multipart/form-data" id="form-blog">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<td style="width: 1px;" class="text-center"><input type="checkbox" onclick="$('input[name*=\'selected\']').prop('checked', this.checked);" /></td>
|
||||
<td class="text-left" class="text-center" style="width: 130px;">{{ column_image }}</td>
|
||||
<td class="text-left">{% if (sort == 'id.title') %}
|
||||
<a href="{{ sort_title }}" class="{{ (order)|lower }}">{{ column_title }}</a>
|
||||
{% else %}
|
||||
<a href="{{ sort_title }}">{{ column_title }}</a>
|
||||
{% endif %}</td>
|
||||
<td class="text-right">{% if (sort == 'i.date_added') %}
|
||||
<a href="{{ sort_date_added }}" class="{{ (order)|lower }}">{{ column_date_added }}</a>
|
||||
{% else %}
|
||||
<a href="{{ sort_date_added }}">{{ column_date_added }}</a>
|
||||
{% endif %}</td>
|
||||
|
||||
<td class="text-right">{{ column_action }}</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% if (blogs) %}
|
||||
{% for blog in blogs %}
|
||||
<tr>
|
||||
<td class="text-center">{% if blog['blog_id'] in selected %}
|
||||
<input type="checkbox" name="selected[]" value="{{ blog['blog_id'] }}" checked="checked" />
|
||||
{% else %}
|
||||
<input type="checkbox" name="selected[]" value="{{ blog['blog_id'] }}" />
|
||||
{% endif %}</td>
|
||||
<td class="text-center"><img src="{{ blog['image'] }}" alt="" title="" class="img-thumbnail" style="width: 50px;"></td>
|
||||
<td class="text-left">{{ blog['title'] }}</td>
|
||||
<td class="text-right">{{ blog['date_added'] }}</td>
|
||||
<td class="text-right"><a href="{{ blog['edit'] }}" data-toggle="tooltip" title="{{ button_edit }}" class="btn btn-primary"><i class="fa fa-pencil"></i></a></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<tr>
|
||||
<td class="text-center" colspan="4">{{ text_no_results }}</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
<div class="row">
|
||||
<div class="col-sm-6 text-left">{{ pagination }}</div>
|
||||
<div class="col-sm-6 text-right">{{ results }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ footer }}
|
||||
@@ -1,263 +0,0 @@
|
||||
{{ header }}{{ column_left }}
|
||||
<div id="content">
|
||||
<div class="page-header">
|
||||
<div class="container-fluid">
|
||||
<div class="pull-right">
|
||||
<button type="submit" form="form-news" data-toggle="tooltip" title="{{ button_save }}" class="btn btn-primary"><i class="fa fa-save"></i></button>
|
||||
<a href="{{ cancel }}" data-toggle="tooltip" title="{{ button_cancel }}" class="btn btn-default"><i class="fa fa-reply"></i></a></div>
|
||||
<h1>{{ heading_title }}</h1>
|
||||
<ul class="breadcrumb">
|
||||
{% for breadcrumb in breadcrumbs %}
|
||||
<li><a href="{{ breadcrumb['href'] }}">{{ breadcrumb['text'] }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-fluid">
|
||||
{% if (error_warning) %}
|
||||
<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> {{ error_warning }}
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><i class="fa fa-pencil"></i> {{ text_form }}</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="{{ action }}" method="post" enctype="multipart/form-data" id="form-news" class="form-horizontal">
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="active"><a href="#tab-general" data-toggle="tab">{{ tab_general }}</a></li>
|
||||
<li><a href="#tab-data" data-toggle="tab">{{ tab_data }}</a></li>
|
||||
<li><a href="#tab-seo" data-toggle="tab">{{ tab_seo }}</a></li>
|
||||
<li><a href="#tab-design" data-toggle="tab">{{ tab_design }}</a></li>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane active" id="tab-general">
|
||||
<ul class="nav nav-tabs" id="language">
|
||||
{% for language in languages %}
|
||||
<li><a href="#language{{ language['language_id'] }}" data-toggle="tab"><img src="language/{{ language['code'] }}/{{ language['code'] }}.png" title="{{ language['name'] }}" /> {{ language['name'] }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
{% for language in languages %}
|
||||
<div class="tab-pane" id="language{{ language['language_id'] }}">
|
||||
<div class="form-group required">
|
||||
<label class="col-sm-2 control-label" for="input-title{{ language['language_id'] }}">{{ entry_title }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="news_description[{{ language['language_id'] }}][title]" value="{{ news_description[language['language_id']] is defined ? news_description[language['language_id']]['title'] : '' }}" placeholder="{{ entry_title }}" id="input-title{{ language['language_id'] }}" class="form-control" />
|
||||
{% if (error_title[language['language_id']] is defined) %}
|
||||
<div class="text-danger">{{ error_title[language['language_id']] }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group required">
|
||||
<label class="col-sm-2 control-label" for="input-description{{ language['language_id'] }}">{{ entry_description }}</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea name="news_description[{{ language['language_id'] }}][description]" placeholder="{{ entry_description }}" id="input-description{{ language['language_id'] }}" data-lang="{{ lang }}" class="form-control" data-toggle="summernote" data-lang="{{ summernote }}">{{ news_description[language['language_id']] is defined ? news_description[language['language_id']]['description'] : '' }}</textarea>
|
||||
{% if (error_description[language['language_id']] is defined) %}
|
||||
<div class="text-danger">{{ error_description[language['language_id']] }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-meta-title{{ language['language_id'] }}">{{ entry_meta_title }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="news_description[{{ language['language_id'] }}][meta_title]" value="{{ news_description[language['language_id']] is defined ? news_description[language['language_id']]['meta_title'] : '' }}" placeholder="{{ entry_meta_title }}" id="input-meta-title{{ language['language_id'] }}" class="form-control" />
|
||||
{% if (error_meta_title[language['language_id']] is defined) %}
|
||||
<div class="text-danger">{{ error_meta_title[language['language_id']] }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-meta-h1{{ language['language_id'] }}">{{ entry_meta_h1 }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="news_description[{{ language['language_id'] }}][meta_h1]" value="{{ news_description[language['language_id']] is defined ? news_description[language['language_id']]['meta_h1'] : '' }}" placeholder="{{ entry_meta_h1 }}" id="input-meta-h1{{ language['language_id'] }}" class="form-control" />
|
||||
{% if (error_meta_title[language['language_id']] is defined) %}
|
||||
<div class="text-danger">{{ error_meta_title[language['language_id']] }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-meta-description{{ language['language_id'] }}">{{ entry_meta_description }}</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea name="news_description[{{ language['language_id'] }}][meta_description]" rows="5" placeholder="{{ entry_meta_description }}" id="input-meta-description{{ language['language_id'] }}" class="form-control">{{ news_description[language['language_id']] is defined ? news_description[language['language_id']]['meta_description'] : '' }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-meta-keyword{{ language['language_id'] }}">{{ entry_meta_keyword }}</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea name="news_description[{{ language['language_id'] }}][meta_keyword]" rows="5" placeholder="{{ entry_meta_keyword }}" id="input-meta-keyword{{ language['language_id'] }}" class="form-control">{{ news_description[language['language_id']] is defined ? news_description[language['language_id']]['meta_keyword'] : '' }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-pane" id="tab-data">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">{{ entry_store }}</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="well well-sm" style="height: 150px; overflow: auto;">
|
||||
|
||||
{% for store in stores %}
|
||||
<div class="checkbox">
|
||||
<label> {% if store.store_id in news_store %}
|
||||
<input type="checkbox" name="news_store[]" value="{{ store.store_id }}" checked="checked" />
|
||||
{{ store.name }}
|
||||
{% else %}
|
||||
<input type="checkbox" name="news_store[]" value="{{ store.store_id }}" />
|
||||
{{ store.name }}
|
||||
{% endif %}</label>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-date"><span data-toggle="tooltip" title="{{ help_date_added }}">{{ entry_date_added }}</span></label>
|
||||
<div class="col-sm-10">
|
||||
<div class="input-group date">
|
||||
<input type="text" name="date_added" value="{{ date_added }}" placeholder="{{ entry_date_added }}" data-date-format="YYYY-MM-DD" id="input-date-available" class="form-control" />
|
||||
<span class="input-group-btn">
|
||||
<button class="btn btn-default" type="button"><i class="fa fa-calendar"></i></button>
|
||||
</span></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-related"><span data-toggle="tooltip" title="{{ help_related }}">{{ entry_related }}</span></label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="related" value="" placeholder="{{ entry_related }}" id="input-related" class="form-control" />
|
||||
<div id="product-related" class="well well-sm" style="height: 150px; overflow: auto;">
|
||||
{% for product_related in product_relateds %}
|
||||
<div id="product-related{{ product_related['product_id'] }}"><i class="fa fa-minus-circle"></i> {{ product_related['name'] }}
|
||||
<input type="hidden" name="product_related[]" value="{{ product_related['product_id'] }}" />
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-status">{{ entry_status }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select name="status" id="input-status" class="form-control">
|
||||
{% if (status) %}
|
||||
<option value="1" selected="selected">{{ text_enabled }}</option>
|
||||
<option value="0">{{ text_disabled }}</option>
|
||||
{% else %}
|
||||
<option value="1">{{ text_enabled }}</option>
|
||||
<option value="0" selected="selected">{{ text_disabled }}</option>
|
||||
{% endif %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tab-pane" id="tab-seo">
|
||||
<div class="alert alert-info"><i class="fa fa-info-circle"></i> {{ help_keyword }}</div>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<td class="text-left">{{ entry_store }}</td>
|
||||
<td class="text-left">{{ entry_keyword }}</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for store in stores %}
|
||||
<tr>
|
||||
<td class="text-left">{{ store.name }}</td>
|
||||
<td class="text-left">{% for language in languages %}
|
||||
<div class="input-group"><span class="input-group-addon"><img src="language/{{ language.code }}/{{ language.code }}.png" title="{{ language.name }}" /></span>
|
||||
<input type="text" name="news_seo_url[{{ store.store_id }}][{{ language.language_id }}]" value="{% if news_seo_url[store.store_id][language.language_id] %}{{ news_seo_url[store.store_id][language.language_id] }}{% endif %}" placeholder="{{ entry_keyword }}" class="form-control" />
|
||||
</div>
|
||||
{% if error_keyword[store.store_id][language.language_id] %}
|
||||
<div class="text-danger">{{ error_keyword[store.store_id][language.language_id] }}</div>
|
||||
{% endif %}
|
||||
{% endfor %}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tab-pane" id="tab-design">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<td class="text-left">{{ entry_store }}</td>
|
||||
<td class="text-left">{{ entry_layout }}</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
{% for store in stores %}
|
||||
<tr>
|
||||
<td class="text-left">{{ store.name }}</td>
|
||||
<td class="text-left"><select name="news_layout[{{ store.store_id }}]" class="form-control">
|
||||
<option value=""></option>
|
||||
{% for layout in layouts %}
|
||||
{% if news_layout[store.store_id] and news_layout[store.store_id] == layout.layout_id %}
|
||||
<option value="{{ layout.layout_id }}" selected="selected">{{ layout.name }}</option>
|
||||
{% else %}
|
||||
<option value="{{ layout.layout_id }}">{{ layout.name }}</option>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</select></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript"><!--
|
||||
{% if (ckeditor) %}
|
||||
{% for language in languages %}
|
||||
ckeditorInit('input-description{{ language['language_id'] }}', getURLVar('user_token'));
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
//--></script>
|
||||
<script type="text/javascript"><!--
|
||||
$('#language a:first').tab('show');
|
||||
$('.date').datetimepicker({
|
||||
pickTime: false
|
||||
});
|
||||
// Related
|
||||
$('input[name=\'related\']').autocomplete({
|
||||
'source': function(request, response) {
|
||||
$.ajax({
|
||||
url: 'index.php?route=catalog/product/autocomplete&user_token={{ user_token }}&filter_name=' + encodeURIComponent(request),
|
||||
dataType: 'json',
|
||||
success: function(json) {
|
||||
response($.map(json, function(item) {
|
||||
return {
|
||||
label: item['name'],
|
||||
value: item['product_id']
|
||||
}
|
||||
}));
|
||||
}
|
||||
});
|
||||
},
|
||||
'select': function(item) {
|
||||
$('input[name=\'related\']').val('');
|
||||
|
||||
$('#product-related' + item['value']).remove();
|
||||
|
||||
$('#product-related').append('<div id="product-related' + item['value'] + '"><i class="fa fa-minus-circle"></i> ' + item['label'] + '<input type="hidden" name="product_related[]" value="' + item['value'] + '" /></div>');
|
||||
}
|
||||
});
|
||||
|
||||
$('#product-related').delegate('.fa-minus-circle', 'click', function() {
|
||||
$(this).parent().remove();
|
||||
});
|
||||
//--></script></div>
|
||||
{{ footer }}
|
||||
@@ -1,84 +0,0 @@
|
||||
{{ header }}{{ column_left }}
|
||||
<div id="content">
|
||||
<div class="page-header">
|
||||
<div class="container-fluid">
|
||||
<div class="pull-right"><a href="{{ add }}" data-toggle="tooltip" title="{{ button_add }}" class="btn btn-primary"><i class="fa fa-plus"></i></a>
|
||||
<button type="button" data-toggle="tooltip" title="{{ button_delete }}" class="btn btn-danger" onclick="confirm('{{ text_confirm }}') ? $('#form-news').submit() : false;"><i class="fa fa-trash-o"></i></button>
|
||||
</div>
|
||||
<h1>{{ heading_title }}</h1>
|
||||
<ul class="breadcrumb">
|
||||
{% for breadcrumb in breadcrumbs %}
|
||||
<li><a href="{{ breadcrumb['href'] }}">{{ breadcrumb['text'] }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-fluid">
|
||||
{% if (error_warning) %}
|
||||
<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> {{ error_warning }}
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if (success) %}
|
||||
<div class="alert alert-success"><i class="fa fa-check-circle"></i> {{ success }}
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><i class="fa fa-list"></i> {{ text_list }}</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="{{ delete }}" method="post" enctype="multipart/form-data" id="form-news">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<td style="width: 1px;" class="text-center"><input type="checkbox" onclick="$('input[name*=\'selected\']').prop('checked', this.checked);" /></td>
|
||||
<td class="text-left">{% if (sort == 'id.title') %}
|
||||
<a href="{{ sort_title }}" class="{{ (order)|lower }}">{{ column_title }}</a>
|
||||
{% else %}
|
||||
<a href="{{ sort_title }}">{{ column_title }}</a>
|
||||
{% endif %}</td>
|
||||
|
||||
<td class="text-right">{% if (sort == 'i.date_added') %}
|
||||
<a href="{{ sort_date_added }}" class="{{ (order)|lower }}">{{ column_date_added }}</a>
|
||||
{% else %}
|
||||
<a href="{{ sort_date_added }}">{{ column_date_added }}</a>
|
||||
{% endif %}</td>
|
||||
|
||||
<td class="text-right">{{ column_action }}</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% if (newss) %}
|
||||
{% for news in newss %}
|
||||
<tr>
|
||||
<td class="text-center">{% if news['news_id'] in selected %}
|
||||
<input type="checkbox" name="selected[]" value="{{ news['news_id'] }}" checked="checked" />
|
||||
{% else %}
|
||||
<input type="checkbox" name="selected[]" value="{{ news['news_id'] }}" />
|
||||
{% endif %}</td>
|
||||
<td class="text-left">{{ news['title'] }}</td>
|
||||
<td class="text-right">{{ news['date_added'] }}</td>
|
||||
<td class="text-right"><a href="{{ news['edit'] }}" data-toggle="tooltip" title="{{ button_edit }}" class="btn btn-primary"><i class="fa fa-pencil"></i></a></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<tr>
|
||||
<td class="text-center" colspan="4">{{ text_no_results }}</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
<div class="row">
|
||||
<div class="col-sm-6 text-left">{{ pagination }}</div>
|
||||
<div class="col-sm-6 text-right">{{ results }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ footer }}
|
||||
@@ -1,249 +0,0 @@
|
||||
{{ header }}{{ column_left }}
|
||||
<div id="content">
|
||||
<div class="page-header">
|
||||
<div class="container-fluid">
|
||||
<div class="pull-right">
|
||||
<button type="submit" form="form-set" data-toggle="tooltip" title="{{ button_save }}" class="btn btn-primary"><i class="fa fa-save"></i></button>
|
||||
<a href="{{ cancel }}" data-toggle="tooltip" title="{{ button_cancel }}" class="btn btn-default"><i class="fa fa-reply"></i></a></div>
|
||||
<h1>{{ heading_title }}</h1>
|
||||
<ul class="breadcrumb">
|
||||
{% for breadcrumb in breadcrumbs %}
|
||||
<li><a href="{{ breadcrumb['href'] }}">{{ breadcrumb['text'] }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-fluid">
|
||||
{% if (error_warning) %}
|
||||
<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> {{ error_warning }}
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><i class="fa fa-pencil"></i> {{ text_form }}</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="{{ action }}" method="post" enctype="multipart/form-data" id="form-set" class="form-horizontal">
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="active"><a href="#tab-general" data-toggle="tab">{{ tab_general }}</a></li>
|
||||
<li><a href="#tab-data" data-toggle="tab">{{ tab_data }}</a></li>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane active" id="tab-general">
|
||||
|
||||
<div class="form-group required">
|
||||
<label class="col-sm-2 control-label" for="input-theme_lightshop_set_name">{{ text_name }}</label>
|
||||
<div class="col-sm-10">
|
||||
{% for language in languages %}
|
||||
<div class="input-group"><span class="input-group-addon"><img src="language/{{ language['code'] }}/{{ language['code'] }}.png" title="{{ language['name'] }}" /></span>
|
||||
<input type="text" name="set_description[{{ language['language_id'] }}][title]" value="{{ set_description[language['language_id']] is defined ? set_description[language['language_id']]['title'] : '' }}" placeholder="{{ entry_title }}" id="input-title{{ language['language_id'] }}" class="form-control" />
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-mode">{{ entry_mode }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select name="mode" id="input-mode" class="form-control">
|
||||
{% if (mode) %}
|
||||
<option value="1" selected="selected">{{ text_percent }}</option>
|
||||
<option value="0">{{ text_fix }}</option>
|
||||
{% else %}
|
||||
<option value="1">{{ text_percent }}</option>
|
||||
<option value="0" selected="selected">{{ text_fix }}</option>
|
||||
{% endif %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">{{ text_discount }}</label>
|
||||
<div class="col-sm-2">
|
||||
<input type="text" name="discount" value="{{ discount }}" placeholder="{{ entry_title }}" class="form-control" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table id="products" class="table table-striped table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<td class="text-left"><span data-toggle="tooltip" data-container="#tab-general" title="{{ entry_product_info }}">{{ entry_product }}</span></td>
|
||||
<td class="text-left">{{ entry_product_qty }}</td>
|
||||
<td class="text-right">{{ entry_sort_order }}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% set product_row = 0 %}
|
||||
{% for product in products %}
|
||||
<tr id="product-row-{{ product_row }}">
|
||||
<td class="text-left">
|
||||
<input type="text" name="product[{{ product_row }}][name]" value="" placeholder="{{ entry_product }}" id="input-set-{{ product_row }}" class="product_input form-control" />
|
||||
|
||||
<div id="setproductsrow-{{ product_row }}" class="well well-sm" style="overflow: auto;">
|
||||
{% set addsrow = 0 %}
|
||||
|
||||
{% for id,product2row in product['products'] %}
|
||||
|
||||
<div id="set_row-{{ product_row }}-product-{{ id }}"><i class="fa fa-minus-circle"></i>{{ product2row['name'] }}<input type="hidden" name="product[{{ product_row }}][items][{{ product2row['product_id'] }}][id]; ?>]" value="{{ product2row['product_id'] }}"></div>
|
||||
|
||||
{% set addsrow = addsrow + 1 %}
|
||||
{% endfor %}
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</td>
|
||||
<td class="text-right"><input type="text" name="product[{{ product_row }}][qty]" value="{{ product['qty'] }}" placeholder="{{ entry_sort_order }}" class="form-control" /></td>
|
||||
<td class="text-right"><input type="text" name="product[{{ product_row }}][sort_order]" value="{{ product['sort_order'] }}" placeholder="{{ entry_sort_order }}" class="form-control" /></td>
|
||||
<td class="text-left"><button type="button" onclick="$('#product-row-{{ product_row }}').remove();" data-toggle="tooltip" title="{{ button_delete }}" class="btn btn-danger"><i class="fa fa-minus-circle"></i></button></td>
|
||||
</tr>
|
||||
{% set product_row = product_row + 1 %}
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="3"></td>
|
||||
<td class="text-left"><button type="button" onclick="addProduct();" data-toggle="tooltip" title="{{ text_add_product }}" class="btn btn-primary"><i class="fa fa-plus-circle"></i></button></td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
<div class="tab-pane" id="tab-data">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">{{ entry_store }}</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="well well-sm" style="height: 150px; overflow: auto;">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
{% if 0 in set_store %}
|
||||
<input type="checkbox" name="set_store[]" value="0" checked="checked" />
|
||||
{{ text_default }}
|
||||
{% else %}
|
||||
<input type="checkbox" name="set_store[]" value="0" />
|
||||
{{ text_default }}
|
||||
{% endif %}
|
||||
</label>
|
||||
</div>
|
||||
{% for store in stores %}
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
{% if store['store_id'] in set_store %}
|
||||
<input type="checkbox" name="set_store[]" value="{{ store['store_id'] }}" checked="checked" />
|
||||
{{ store['name'] }}
|
||||
{% else %}
|
||||
<input type="checkbox" name="set_store[]" value="{{ store['store_id'] }}" />
|
||||
{{ store['name'] }}
|
||||
{% endif %}
|
||||
</label>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-status">{{ entry_status }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select name="status" id="input-status" class="form-control">
|
||||
{% if (status) %}
|
||||
<option value="1" selected="selected">{{ text_enabled }}</option>
|
||||
<option value="0">{{ text_disabled }}</option>
|
||||
{% else %}
|
||||
<option value="1">{{ text_enabled }}</option>
|
||||
<option value="0" selected="selected">{{ text_disabled }}</option>
|
||||
{% endif %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript"><!--
|
||||
{% if (ckeditor) %}
|
||||
{% for language in languages %}
|
||||
ckeditorInit('input-description{{ language['language_id'] }}', getURLVar('user_token'));
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
//--></script>
|
||||
<script type="text/javascript"><!--
|
||||
$('#language a:first').tab('show');
|
||||
$('.date').datetimepicker({
|
||||
pickTime: false
|
||||
});
|
||||
|
||||
function addAutocomplete() {
|
||||
$('.product_input').autocomplete({
|
||||
|
||||
'source': function(request, response) {
|
||||
var row = $(this).prop("id");
|
||||
$.ajax({
|
||||
url: 'index.php?route=catalog/product/autocomplete&user_token={{ user_token }}&filter_name=' + encodeURIComponent(request),
|
||||
dataType: 'json',
|
||||
success: function(json) {
|
||||
response($.map(json, function(item) {
|
||||
return {
|
||||
label: item['name'],
|
||||
value: item['product_id'],
|
||||
rowid: row
|
||||
}
|
||||
}));
|
||||
}
|
||||
});
|
||||
},
|
||||
'select': function(item) {
|
||||
var sel = '#'+item['rowid'];
|
||||
console.log(sel);
|
||||
$(sel).val(item['label']);
|
||||
$(sel).siblings('.product_data').val(item['value']);
|
||||
|
||||
var row = $(this).attr('id');
|
||||
var rownum = row.split('-');
|
||||
rownum = rownum[2];
|
||||
|
||||
$(this).val('');
|
||||
|
||||
|
||||
$('#setproductsrow-'+rownum).append('<div id="set_row-'+rownum+'-product-' + item['value'] + '"><i class="fa fa-minus-circle"></i> ' + item['label'] + '<input type="hidden" name="product['+rownum+'][items]['+item['value']+'][id]" value="' + item['value'] + '" /></div>');
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$('#product-related').delegate('.fa-minus-circle', 'click', function() {
|
||||
$(this).parent().remove();
|
||||
});
|
||||
|
||||
var product_row = {{ product_row }};
|
||||
|
||||
function addProduct() {
|
||||
html = '<tr id="product-row-' + product_row + '">';
|
||||
html += ' <td class="text-left"><input class="product_input form-control" name="product[' + product_row + '][name]" value="" id="input-set-' + product_row + '" /><input class="product_data" type="hidden" name="product[' + product_row + '][id]" value="" id="input-product-' + product_row + '" />';
|
||||
html += '<div id="setproductsrow-' + product_row + '" class="well well-sm" style="overflow: auto;">';
|
||||
html += '</div></td>';
|
||||
html += '<td class="text-right"><input type="text" name="product[' + product_row + '][qty]" value="1" class="form-control" /></td>';
|
||||
html += ' <td class="text-right"><input type="text" name="product[' + product_row + '][sort_order]" value="1" placeholder="{{ entry_sort_order }}" class="form-control" /></td>';
|
||||
html += ' <td class="text-left"><button type="button" onclick="$(\'#product-row-' + product_row + '\').remove();" data-toggle="tooltip" title="{{ button_remove }}" class="btn btn-danger"><i class="fa fa-minus-circle"></i></button></td>';
|
||||
html += '</tr>';
|
||||
|
||||
$('#products tbody').append(html);
|
||||
|
||||
product_row++;
|
||||
|
||||
addAutocomplete();
|
||||
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
addAutocomplete();
|
||||
|
||||
$(document).on('click', '.well-sm .fa-minus-circle', function() {
|
||||
$(this).parent().remove();
|
||||
});
|
||||
})
|
||||
//--></script></div>
|
||||
{{ footer }}
|
||||
@@ -1,85 +0,0 @@
|
||||
{{ header }}{{ column_left }}
|
||||
<div id="content">
|
||||
<div class="page-header">
|
||||
<div class="container-fluid">
|
||||
<div class="pull-right"><a href="{{ add }}" data-toggle="tooltip" title="{{ button_add }}" class="btn btn-primary"><i class="fa fa-plus"></i></a>
|
||||
<button type="button" data-toggle="tooltip" title="{{ button_delete }}" class="btn btn-danger" onclick="confirm('{{ text_confirm }}') ? $('#form-set').submit() : false;"><i class="fa fa-trash-o"></i></button>
|
||||
</div>
|
||||
<h1>{{ heading_title }}</h1>
|
||||
<ul class="breadcrumb">
|
||||
{% for breadcrumb in breadcrumbs %}
|
||||
<li><a href="{{ breadcrumb['href'] }}">{{ breadcrumb['text'] }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-fluid">
|
||||
{% if (error_warning) %}
|
||||
<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> {{ error_warning }}
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if (success) %}
|
||||
<div class="alert alert-success"><i class="fa fa-check-circle"></i> {{ success }}
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><i class="fa fa-list"></i> {{ text_list }}</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="{{ delete }}" method="post" enctype="multipart/form-data" id="form-set">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<td style="width: 1px;" class="text-center"><input type="checkbox" onclick="$('input[name*=\'selected\']').prop('checked', this.checked);" /></td>
|
||||
<td class="text-left">{% if (sort == 'id.title') %}
|
||||
<a href="{{ sort_title }}" class="{{ (order)|lower }}">{{ column_title }}</a>
|
||||
{% else %}
|
||||
<a href="{{ sort_title }}">{{ column_title }}</a>
|
||||
{% endif %}</td>
|
||||
|
||||
<td class="text-right">{% if (sort == 'i.date_added') %}
|
||||
<a href="{{ sort_date_added }}" class="{{ (order)|lower }}">{{ column_date_added }}</a>
|
||||
{% else %}
|
||||
<a href="{{ sort_date_added }}">{{ column_date_added }}</a>
|
||||
{% endif %}</td>
|
||||
<td class="text-right">{{ column_status }}</td>
|
||||
<td class="text-right">{{ column_action }}</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% if (sets) %}
|
||||
{% for set in sets %}
|
||||
<tr>
|
||||
<td class="text-center">{% if set['set_id'] in selected %}
|
||||
<input type="checkbox" name="selected[]" value="{{ set['set_id'] }}" checked="checked" />
|
||||
{% else %}
|
||||
<input type="checkbox" name="selected[]" value="{{ set['set_id'] }}" />
|
||||
{% endif %}</td>
|
||||
<td class="text-left">{{ set['title'] }}</td>
|
||||
<td class="text-right">{{ set['date_added'] }}</td>
|
||||
<td class="text-left">{{ set['status'] }}</td>
|
||||
<td class="text-right"><a href="{{ set['edit'] }}" data-toggle="tooltip" title="{{ button_edit }}" class="btn btn-primary"><i class="fa fa-pencil"></i></a></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<tr>
|
||||
<td class="text-center" colspan="5">{{ text_no_results }}</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
<div class="row">
|
||||
<div class="col-sm-6 text-left">{{ pagination }}</div>
|
||||
<div class="col-sm-6 text-right">{{ results }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ footer }}
|
||||
@@ -1,247 +0,0 @@
|
||||
{{ header }}{{ column_left }}
|
||||
<div id="content">
|
||||
<div class="page-header">
|
||||
<div class="container-fluid">
|
||||
<div class="pull-right">
|
||||
<button type="submit" form="form-set" data-toggle="tooltip" title="{{ button_save }}" class="btn btn-primary"><i class="fa fa-save"></i></button>
|
||||
<a href="{{ cancel }}" data-toggle="tooltip" title="{{ button_cancel }}" class="btn btn-default"><i class="fa fa-reply"></i></a></div>
|
||||
<h1>{{ heading_title }}</h1>
|
||||
<ul class="breadcrumb">
|
||||
{% for breadcrumb in breadcrumbs %}
|
||||
<li><a href="{{ breadcrumb['href'] }}">{{ breadcrumb['text'] }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-fluid">
|
||||
{% if (error_warning) %}
|
||||
<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> {{ error_warning }}
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><i class="fa fa-pencil"></i> {{ text_form }}</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="{{ action }}" method="post" enctype="multipart/form-data" id="form-set" class="form-horizontal">
|
||||
|
||||
<div class="tab-content">
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-description1"><span data-toggle="tooltip" title="" data-original-title="{{ help_product_tabs_main }}">{{ text_tabs_shablon }}</span></label>
|
||||
<div class="col-sm-10">
|
||||
<select name="view" class="form-control">
|
||||
<option value="tab" {{ view == "tab" ? 'selected="selected"' : '' }}>{{ text_tabs_tab }}</option>
|
||||
<option value="popup" {{ view == "popup" ? 'selected="selected"' : '' }}>{{ text_tabs_popup }}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-description1">{{ entry_status }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select name="status" class="form-control">
|
||||
<option value="1" {{ status == 1 ? 'selected="selected"' : '' }}>{{ text_enabled }}</option>
|
||||
<option value="0" {{ status == 0 ? 'selected="selected"' : '' }}>{{ text_disabled }}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-description1">{{ text_tabs_links }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select name="mode" class="form-control cust_tabs_mode">
|
||||
<option value="products" {{ mode == "products" ? 'selected="selected"' : '' }}>{{ text_tabs_to_products }}</option>
|
||||
<option value="categories" {{ mode == "categories" ? 'selected="selected"' : '' }}>{{ text_tabs_tab_to_categories }}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group tabsmode" id="customtab-products" style="display: {{ mode == "products" ? 'block' : 'none' }};">
|
||||
<label class="col-sm-2 control-label" for="input-product"><span data-toggle="tooltip" title="" data-original-title="{{ help_product_tabs_select }}">{{ text_products }}</span></label>
|
||||
<div class="col-sm-10 required">
|
||||
<input type="text" name="product" value="" placeholder="{{ text_products }}" class="form-control tab-products">
|
||||
{% if (error_instanses) %}
|
||||
<div class="text-danger">{{ error_instanses }}</div>
|
||||
{% endif %}
|
||||
<div class="well well-sm" id="cust_tabs-products" style="height: 150px; overflow: auto;">
|
||||
{% if (mode == "products") %}
|
||||
{% for instanse in instanses %}
|
||||
<div id="product{{ instanse['id'] }}"><i class="fa fa-minus-circle"></i>{{ instanse['name'] }}<input type="hidden" name="instanses[products][]" value="{{ instanse['id'] }}">
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group tabsmode" id="customtab-categories" style="display: {{ mode == "categories" ? 'block' : 'none' }};">
|
||||
<label class="col-sm-2 control-label" for="input-categories"><span data-toggle="tooltip" title="" data-original-title="{{ help_product_tabs_cat_select }}">{{ text_categories }}</span></label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="category" value="" placeholder="{{ text_categories }}" class="form-control tab-categories">
|
||||
<div class="well well-sm" id="cust_tabs-categories" style="height: 150px; overflow: auto;">
|
||||
{% if (mode == "categories") %}
|
||||
{% for instanse in instanses %}
|
||||
<div id="category{{ instanse['id'] }}"><i class="fa fa-minus-circle"></i>{{ instanse['name'] }}<input type="hidden" name="instanses[categories][]" value="{{ instanse['id'] }}">
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="">{{ text_sort_order }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="sort_order" value="{{ sort_order }}" placeholder="{{ text_sort_order }}" class="form-control">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<ul class="nav nav-tabs" id="language_tab">
|
||||
{% for language in languages %}
|
||||
<li ><a href="#language_tab-{{ language['language_id'] }}" data-toggle="tab" aria-expanded="true"><img src="language/{{ language['code'] }}/{{ language['code'] }}.png" title="{{ language['name'] }}"> {{ language['name'] }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
<div class="tab-content">
|
||||
{% for language in languages %}
|
||||
<div class="tab-pane " id="language_tab-{{ language['language_id'] }}">
|
||||
<div class="form-group required">
|
||||
<label class="col-sm-2 control-label" for="input-name1">{{ text_name }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="title[{{ language['language_id'] }}]" value="{{ title[language['language_id']] is defined ? title[language['language_id']] : '' }}" placeholder="{{ text_name }}" class="form-control" />
|
||||
{% if (error_title[language['language_id']] is defined) %}
|
||||
<div class="text-danger">{{ error_title[language['language_id']] }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-description1">{{ text_description }}</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea name="description[{{ language['language_id'] }}]" id="tabdescription-{{ language['language_id'] }}" placeholder="{{ text_description }}" data-lang="{{ language['code'] }}" class="form-control" data-toggle="summernote" data-lang="{{ summernote }}">{{ description[language['language_id']] is defined ? description[language['language_id']] : '' }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">{{ entry_store }}</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="well well-sm" style="height: 150px; overflow: auto;">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
{% if 0 in tab_store %}
|
||||
<input type="checkbox" name="stories[]" value="0" checked="checked" />
|
||||
{{ text_default }}
|
||||
{% else %}
|
||||
<input type="checkbox" name="stories[]" value="0" />
|
||||
{{ text_default }}
|
||||
{% endif %}
|
||||
</label>
|
||||
</div>
|
||||
{% for store in stores %}
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
{% if store['store_id'] in tab_store %}
|
||||
<input type="checkbox" name="stories[]" value="{{ store['store_id'] }}" checked="checked" />
|
||||
{{ store['name'] }}
|
||||
{% else %}
|
||||
<input type="checkbox" name="stories[]" value="{{ store['store_id'] }}" />
|
||||
{{ store['name'] }}
|
||||
{% endif %}
|
||||
</label>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript"><!--
|
||||
{% if (ckeditor) %}
|
||||
{% for language in languages %}
|
||||
ckeditorInit('tabdescription-{{ language['language_id'] }}', getURLVar('user_token'));
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
$('#language_tab a:first').tab('show');
|
||||
$('.date').datetimepicker({
|
||||
pickTime: false
|
||||
});
|
||||
|
||||
$('.tab-products').autocomplete({
|
||||
'source': function(request, response) {
|
||||
$.ajax({
|
||||
url: 'index.php?route=catalog/product/autocomplete&user_token={{ user_token }}&filter_name=' + encodeURIComponent(request),
|
||||
dataType: 'json',
|
||||
success: function(json) {
|
||||
response($.map(json, function(item) {
|
||||
return {
|
||||
label: item['name'],
|
||||
value: item['product_id']
|
||||
}
|
||||
}));
|
||||
}
|
||||
});
|
||||
},
|
||||
'select': function(item) {
|
||||
$('.tab-products').val('');
|
||||
|
||||
$('#cust_tabs-product-' + item['value']).remove();
|
||||
|
||||
$('#cust_tabs-products').append('<div id="cust_tabs-product-' + item['value'] + '"><i class="fa fa-minus-circle"></i> ' + item['label'] + '<input type="hidden" name="instanses[products][]" value="' + item['value'] + '" /></div>');
|
||||
}
|
||||
});
|
||||
|
||||
$('.tab-categories').autocomplete({
|
||||
'source': function(request, response) {
|
||||
$.ajax({
|
||||
url: 'index.php?route=catalog/category/autocomplete&user_token={{ user_token }}&filter_name=' + encodeURIComponent(request),
|
||||
dataType: 'json',
|
||||
success: function(json) {
|
||||
response($.map(json, function(item) {
|
||||
return {
|
||||
label: item['name'],
|
||||
value: item['category_id']
|
||||
}
|
||||
}));
|
||||
}
|
||||
});
|
||||
},
|
||||
'select': function(item) {
|
||||
var row = $(this).attr('data-for');
|
||||
$('.tab-categories').val('');
|
||||
|
||||
$('#cust_tabs-categories-' + item['value']).remove();
|
||||
|
||||
$('#cust_tabs-categories').append('<div id="cust_tabs-category-' + item['value'] + '"><i class="fa fa-minus-circle"></i> ' + item['label'] + '<input type="hidden" name="instanses[categories][]" value="' + item['value'] + '" /></div>');
|
||||
}
|
||||
});
|
||||
|
||||
$('#product-related').delegate('.fa-minus-circle', 'click', function() {
|
||||
$(this).parent().remove();
|
||||
});
|
||||
|
||||
$('#form-set').on('change','.cust_tabs_mode', function() {
|
||||
$('.tabsmode').hide();
|
||||
var sel = $(this).val();
|
||||
$('#customtab-'+sel).show();
|
||||
});
|
||||
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
$(document).on('click', '.well-sm .fa-minus-circle', function() {
|
||||
$(this).parent().remove();
|
||||
});
|
||||
})
|
||||
//--></script>
|
||||
</div>
|
||||
{{ footer }}
|
||||
@@ -1,143 +0,0 @@
|
||||
{{ header }}{{ column_left }}
|
||||
<div id="content">
|
||||
<div class="page-header">
|
||||
<div class="container-fluid">
|
||||
<div class="pull-right"><a href="{{ add }}" data-toggle="tooltip" title="{{ button_add }}" class="btn btn-primary"><i class="fa fa-plus"></i></a>
|
||||
<button type="button" data-toggle="tooltip" title="{{ button_delete }}" class="btn btn-danger" onclick="confirm('{{ text_confirm }}') ? $('#form-tab').submit() : false;"><i class="fa fa-trash-o"></i></button>
|
||||
</div>
|
||||
<h1>{{ heading_title }}</h1>
|
||||
<ul class="breadcrumb">
|
||||
{% for breadcrumb in breadcrumbs %}
|
||||
<li><a href="{{ breadcrumb['href'] }}">{{ breadcrumb['text'] }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-fluid">
|
||||
{% if (error_warning) %}
|
||||
<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> {{ error_warning }}
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if (success) %}
|
||||
<div class="alert alert-success"><i class="fa fa-check-circle"></i> {{ success }}
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><i class="fa fa-list"></i> {{ text_list }}</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
|
||||
<div class="well">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="form-group">
|
||||
<label class="control-label" for="input-name">{{ text_instanse }}</label>
|
||||
<input type="text" name="filter_instanse" value="{{ filter_instanse }}" placeholder="{{ text_instanse }}" id="input-name" class="form-control" />
|
||||
|
||||
</div>
|
||||
<button type="button" id="button-filter" class="btn btn-primary pull-right"><i class="fa fa-filter"></i> {{ button_filter }}</button>
|
||||
<a href="{{ reset }}" title="{{ button_clear }}" class="btn btn-primary"><i class="fa fa-trash-o"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<form action="{{ delete }}" method="post" enctype="multipart/form-data" id="form-tab">
|
||||
<input type="hidden" name="filter_instanse_id" value="{{ filter_instanse_id }}" id="input-name" class="form-control" />
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<td style="width: 1px;" class="text-center"><input type="checkbox" onclick="$('input[name*=\'selected\']').prop('checked', this.checked);" /></td>
|
||||
<td class="text-left">{% if (sort == 'id.title') %}
|
||||
<a href="{{ sort_title }}" class="{{ (order)|lower }}">{{ column_title }}</a>
|
||||
{% else %}
|
||||
<a href="{{ sort_title }}">{{ column_title }}</a>
|
||||
{% endif %}</td>
|
||||
<td class="text-right">{{ column_mode }}</td>
|
||||
<td class="text-right">{{ column_instanses }}</td>
|
||||
<td class="text-right">{{ column_status }}</td>
|
||||
<td class="text-right">{{ column_action }}</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% if (tabs) %}
|
||||
{% for tab in tabs %}
|
||||
<tr>
|
||||
<td class="text-center">{% if tab['cust_tab_id'] in selected %}
|
||||
<input type="checkbox" name="selected[]" value="{{ tab['cust_tab_id'] }}" checked="checked" />
|
||||
{% else %}
|
||||
<input type="checkbox" name="selected[]" value="{{ tab['cust_tab_id'] }}" />
|
||||
{% endif %}</td>
|
||||
<td class="text-left">{{ tab['title'] }}</td>
|
||||
<td class="text-left">{{ tab['mode'] }}</td>
|
||||
<td class="text-right">
|
||||
{% for instanse in tab['instanses'] %}
|
||||
|
||||
{{ instanse['name'] }}<br>
|
||||
|
||||
{% endfor %}</td>
|
||||
</td>
|
||||
<td class="text-left">{{ tab['status'] ? text_enabled : text_disabled }}</td>
|
||||
<td class="text-right"><a href="{{ tab['edit'] }}" data-toggle="tooltip" title="{{ button_edit }}" class="btn btn-primary"><i class="fa fa-pencil"></i></a></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<tr>
|
||||
<td class="text-center" colspan="6">{{ text_no_results }}</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
<div class="row">
|
||||
<div class="col-sm-6 text-left">{{ pagination }}</div>
|
||||
<div class="col-sm-6 text-right">{{ results }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript"><!--
|
||||
$('#button-filter').on('click', function() {
|
||||
var url = 'index.php?route=extension/module/lightshop/lightshop_tab&user_token={{ user_token }}';
|
||||
|
||||
var filter_id = $('input[name=\'filter_instanse_id\']').val();
|
||||
var filter = $('input[name=\'filter_instanse\']').val();
|
||||
|
||||
if (filter_id) {
|
||||
url += '&filter_instanse_id=' + encodeURIComponent(filter_id);
|
||||
}
|
||||
|
||||
if (filter) {
|
||||
url += '&filter_instanse=' + encodeURIComponent(filter);
|
||||
}
|
||||
|
||||
location = url;
|
||||
});
|
||||
//--></script>
|
||||
<script type="text/javascript"><!--
|
||||
$('input[name=\'filter_instanse\']').autocomplete({
|
||||
'source': function(request, response) {
|
||||
$.ajax({
|
||||
url: 'index.php?route=extension/module/lightshop/lightshop_tab/autocomplete&user_token={{ user_token }}&filter_instanse=' + encodeURIComponent(request),
|
||||
dataType: 'json',
|
||||
success: function(json) {
|
||||
response($.map(json, function(item) {
|
||||
return {
|
||||
label: item['mode'] + '->' + item['name'],
|
||||
value: item['id']
|
||||
}
|
||||
}));
|
||||
}
|
||||
});
|
||||
},
|
||||
'select': function(item) {
|
||||
$('input[name=\'filter_instanse\']').val(item['label']);
|
||||
$('input[name=\'filter_instanse_id\']').val(item['value']);
|
||||
}
|
||||
});
|
||||
//--></script>
|
||||
{{ footer }}
|
||||
@@ -1,114 +0,0 @@
|
||||
{{ header }}{{ column_left }}
|
||||
<div id="content">
|
||||
<div class="page-header">
|
||||
<div class="container-fluid">
|
||||
<div class="pull-right">
|
||||
<button type="submit" form="form-review" data-toggle="tooltip" title="{{ button_save }}" class="btn btn-primary"><i class="fa fa-save"></i></button>
|
||||
<a href="{{ cancel }}" data-toggle="tooltip" title="{{ button_cancel }}" class="btn btn-default"><i class="fa fa-reply"></i></a></div>
|
||||
<h1>{{ heading_title }}</h1>
|
||||
<ul class="breadcrumb">
|
||||
{% for breadcrumb in breadcrumbs %}
|
||||
<li><a href="{{ breadcrumb['href'] }}">{{ breadcrumb['text'] }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-fluid">
|
||||
{% if (error_warning) %}
|
||||
<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> {{ error_warning }}
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><i class="fa fa-pencil"></i> {{ text_form }}</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="{{ action }}" method="post" enctype="multipart/form-data" id="form-review" class="form-horizontal">
|
||||
<div class="form-group required">
|
||||
<label class="col-sm-2 control-label" for="input-author">{{ entry_author }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="author" value="{{ author }}" placeholder="{{ entry_author }}" id="input-author" class="form-control" />
|
||||
{% if (error_author) %}
|
||||
<div class="text-danger">{{ error_author }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group required">
|
||||
<label class="col-sm-2 control-label" for="input-blog"><span data-toggle="tooltip" title="{{ help_blog }}">{{ entry_blog }}</span></label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="blog" value="{{ blog }}" placeholder="{{ entry_blog }}" id="input-blog" class="form-control" />
|
||||
<input type="hidden" name="blog_id" value="{{ blog_id }}" />
|
||||
{% if (error_blog) %}
|
||||
<div class="text-danger">{{ error_blog }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group required">
|
||||
<label class="col-sm-2 control-label" for="input-text">{{ entry_text }}</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea name="text" cols="60" rows="8" placeholder="{{ entry_text }}" id="input-text" class="form-control">{{ text }}</textarea>
|
||||
{% if (error_text) %}
|
||||
<div class="text-danger">{{ error_text }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-date-added">{{ entry_date_added }}</label>
|
||||
<div class="col-sm-3">
|
||||
<div class="input-group datetime">
|
||||
<input type="text" name="date_added" value="{{ date_added }}" placeholder="{{ entry_date_added }}" data-date-format="YYYY-MM-DD HH:mm:ss" id="input-date-added" class="form-control" />
|
||||
<span class="input-group-btn">
|
||||
<button type="button" class="btn btn-default"><i class="fa fa-calendar"></i></button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-status">{{ entry_status }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select name="status" id="input-status" class="form-control">
|
||||
{% if (status) %}
|
||||
<option value="1" selected="selected">{{ text_enabled }}</option>
|
||||
<option value="0">{{ text_disabled }}</option>
|
||||
{% else %}
|
||||
<option value="1">{{ text_enabled }}</option>
|
||||
<option value="0" selected="selected">{{ text_disabled }}</option>
|
||||
{% endif %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript"><!--
|
||||
$('.datetime').datetimepicker({
|
||||
pickDate: true,
|
||||
pickTime: true
|
||||
});
|
||||
//--></script>
|
||||
<script type="text/javascript"><!--
|
||||
$('input[name=\'blog\']').autocomplete({
|
||||
'source': function(request, response) {
|
||||
$.ajax({
|
||||
url: 'index.php?route=extension/module/lightshop/lightshop_blog/autocomplete&user_token={{ user_token }}&filter_name=' + encodeURIComponent(request),
|
||||
dataType: 'json',
|
||||
success: function(json) {
|
||||
response($.map(json, function(item) {
|
||||
return {
|
||||
label: item['name'],
|
||||
value: item['blog_id']
|
||||
}
|
||||
}));
|
||||
}
|
||||
});
|
||||
},
|
||||
'select': function(item) {
|
||||
$('input[name=\'blog\']').val(item['label']);
|
||||
$('input[name=\'blog_id\']').val(item['value']);
|
||||
}
|
||||
});
|
||||
//--></script></div>
|
||||
{{ footer }}
|
||||
@@ -1,170 +0,0 @@
|
||||
{{ header }}{{ column_left }}
|
||||
<div id="content">
|
||||
<div class="page-header">
|
||||
<div class="container-fluid">
|
||||
<div class="pull-right"><a href="{{ add }}" data-toggle="tooltip" title="{{ button_add }}" class="btn btn-primary"><i class="fa fa-plus"></i></a>
|
||||
<button type="button" data-toggle="tooltip" title="{{ button_delete }}" class="btn btn-danger" onclick="confirm('{{ text_confirm }}') ? $('#form-review').submit() : false;"><i class="fa fa-trash-o"></i></button>
|
||||
</div>
|
||||
<h1>{{ heading_title }}</h1>
|
||||
<ul class="breadcrumb">
|
||||
{% for breadcrumb in breadcrumbs %}
|
||||
<li><a href="{{ breadcrumb['href'] }}">{{ breadcrumb['text'] }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-fluid">
|
||||
{% if (error_warning) %}
|
||||
<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> {{ error_warning }}
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if (success) %}
|
||||
<div class="alert alert-success"><i class="fa fa-check-circle"></i> {{ success }}
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><i class="fa fa-list"></i> {{ text_list }}</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="well">
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label class="control-label" for="input-blog">{{ entry_blog }}</label>
|
||||
<input type="text" name="filter_blog" value="{{ filter_blog }}" placeholder="{{ entry_blog }}" id="input-blog" class="form-control" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label" for="input-author">{{ entry_author }}</label>
|
||||
<input type="text" name="filter_author" value="{{ filter_author }}" placeholder="{{ entry_author }}" id="input-author" class="form-control" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label class="control-label" for="input-status">{{ entry_status }}</label>
|
||||
<select name="filter_status" id="input-status" class="form-control">
|
||||
<option value="*"></option>
|
||||
{% if (filter_status) %}
|
||||
<option value="1" selected="selected">{{ text_enabled }}</option>
|
||||
{% else %}
|
||||
<option value="1">{{ text_enabled }}</option>
|
||||
{% endif %}
|
||||
{% if (not filter_status and (filter_status) is not null) %}
|
||||
<option value="0" selected="selected">{{ text_disabled }}</option>
|
||||
{% else %}
|
||||
<option value="0">{{ text_disabled }}</option>
|
||||
{% endif %}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label" for="input-date-added">{{ entry_date_added }}</label>
|
||||
<div class="input-group date">
|
||||
<input type="text" name="filter_date_added" value="{{ filter_date_added }}" placeholder="{{ entry_date_added }}" data-date-format="YYYY-MM-DD" id="input-date-added" class="form-control" />
|
||||
<span class="input-group-btn">
|
||||
<button type="button" class="btn btn-default"><i class="fa fa-calendar"></i></button>
|
||||
</span></div>
|
||||
</div>
|
||||
<button type="button" id="button-filter" class="btn btn-primary pull-right"><i class="fa fa-filter"></i> {{ button_filter }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<form action="{{ delete }}" method="post" enctype="multipart/form-data" id="form-review">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<td style="width: 1px;" class="text-center"><input type="checkbox" onclick="$('input[name*=\'selected\']').prop('checked', this.checked);" /></td>
|
||||
<td class="text-left">{% if (sort == 'pd.name') %}
|
||||
<a href="{{ sort_blog }}" class="{{ (order)|lower }}">{{ column_blog }}</a>
|
||||
{% else %}
|
||||
<a href="{{ sort_blog }}">{{ column_blog }}</a>
|
||||
{% endif %}</td>
|
||||
<td class="text-left">{% if (sort == 'r.author') %}
|
||||
<a href="{{ sort_author }}" class="{{ (order)|lower }}">{{ column_author }}</a>
|
||||
{% else %}
|
||||
<a href="{{ sort_author }}">{{ column_author }}</a>
|
||||
{% endif %}</td>
|
||||
<td class="text-left">{% if (sort == 'r.status') %}
|
||||
<a href="{{ sort_status }}" class="{{ (order)|lower }}">{{ column_status }}</a>
|
||||
{% else %}
|
||||
<a href="{{ sort_status }}">{{ column_status }}</a>
|
||||
{% endif %}</td>
|
||||
<td class="text-left">{% if (sort == 'r.date_added') %}
|
||||
<a href="{{ sort_date_added }}" class="{{ (order)|lower }}">{{ column_date_added }}</a>
|
||||
{% else %}
|
||||
<a href="{{ sort_date_added }}">{{ column_date_added }}</a>
|
||||
{% endif %}</td>
|
||||
<td class="text-right">{{ column_action }}</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% if (reviews) %}
|
||||
{% for review in reviews %}
|
||||
<tr>
|
||||
<td class="text-center">{% if (review['review_id'] in selected) %}
|
||||
<input type="checkbox" name="selected[]" value="{{ review['review_id'] }}" checked="checked" />
|
||||
{% else %}
|
||||
<input type="checkbox" name="selected[]" value="{{ review['review_id'] }}" />
|
||||
{% endif %}</td>
|
||||
<td class="text-left">{{ review['name'] }}</td>
|
||||
<td class="text-left">{{ review['author'] }}</td>
|
||||
<td class="text-left">{{ review['status'] }}</td>
|
||||
<td class="text-left">{{ review['date_added'] }}</td>
|
||||
<td class="text-right"><a href="{{ review['edit'] }}" data-toggle="tooltip" title="{{ button_edit }}" class="btn btn-primary"><i class="fa fa-pencil"></i></a></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<tr>
|
||||
<td class="text-center" colspan="7">{{ text_no_results }}</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
<div class="row">
|
||||
<div class="col-sm-6 text-left">{{ pagination }}</div>
|
||||
<div class="col-sm-6 text-right">{{ results }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript"><!--
|
||||
$('#button-filter').on('click', function() {
|
||||
url = 'index.php?route=catalog/lightshopblog_review&token={{ token }}';
|
||||
|
||||
var filter_blog = $('input[name=\'filter_blog\']').val();
|
||||
|
||||
if (filter_blog) {
|
||||
url += '&filter_blog=' + encodeURIComponent(filter_blog);
|
||||
}
|
||||
|
||||
var filter_author = $('input[name=\'filter_author\']').val();
|
||||
|
||||
if (filter_author) {
|
||||
url += '&filter_author=' + encodeURIComponent(filter_author);
|
||||
}
|
||||
|
||||
var filter_status = $('select[name=\'filter_status\']').val();
|
||||
|
||||
if (filter_status != '*') {
|
||||
url += '&filter_status=' + encodeURIComponent(filter_status);
|
||||
}
|
||||
|
||||
var filter_date_added = $('input[name=\'filter_date_added\']').val();
|
||||
|
||||
if (filter_date_added) {
|
||||
url += '&filter_date_added=' + encodeURIComponent(filter_date_added);
|
||||
}
|
||||
|
||||
location = url;
|
||||
});
|
||||
//--></script>
|
||||
<script type="text/javascript"><!--
|
||||
$('.date').datetimepicker({
|
||||
pickTime: false
|
||||
});
|
||||
//--></script></div>
|
||||
{{ footer }}
|
||||
@@ -1,299 +0,0 @@
|
||||
{{ header }}{{ column_left }}
|
||||
<div id="content">
|
||||
<div class="page-header">
|
||||
<div class="container-fluid">
|
||||
<div class="pull-right">
|
||||
<button type="submit" form="form-category" data-toggle="tooltip" title="{{ button_save }}" class="btn btn-primary"><i class="fa fa-save"></i></button>
|
||||
<a href="{{ cancel }}" data-toggle="tooltip" title="{{ button_cancel }}" class="btn btn-default"><i class="fa fa-reply"></i></a></div>
|
||||
<h1>{{ heading_title }}</h1>
|
||||
<ul class="breadcrumb">
|
||||
{% for breadcrumb in breadcrumbs %}
|
||||
<li><a href="{{ breadcrumb['href'] }}">{{ breadcrumb['text'] }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-fluid">
|
||||
{% if (error_warning) %}
|
||||
<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> {{ error_warning }}
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><i class="fa fa-pencil"></i> {{ text_form }}</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="{{ action }}" method="post" enctype="multipart/form-data" id="form-category" class="form-horizontal">
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="active"><a href="#tab-general" data-toggle="tab">{{ tab_general }}</a></li>
|
||||
<li><a href="#tab-data" data-toggle="tab">{{ tab_data }}</a></li>
|
||||
<li><a href="#tab-seo" data-toggle="tab">{{ tab_seo }}</a></li>
|
||||
<li><a href="#tab-design" data-toggle="tab">{{ tab_design }}</a></li>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane active" id="tab-general">
|
||||
<ul class="nav nav-tabs" id="language">
|
||||
{% for language in languages %}
|
||||
<li><a href="#language{{ language['language_id'] }}" data-toggle="tab"><img src="language/{{ language['code'] }}/{{ language['code'] }}.png" title="{{ language['name'] }}" /> {{ language['name'] }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
{% for language in languages %}
|
||||
<div class="tab-pane" id="language{{ language['language_id'] }}">
|
||||
<div class="form-group required">
|
||||
<label class="col-sm-2 control-label" for="input-name{{ language['language_id'] }}">{{ entry_name }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="lightshopcatblog_description[{{ language['language_id'] }}][name]" value="{{ lightshopcatblog_description[language['language_id']] is defined ? lightshopcatblog_description[language['language_id']]['name'] : '' }}" placeholder="{{ entry_name }}" id="input-name{{ language['language_id'] }}" class="form-control" />
|
||||
{% if (error_name[language['language_id']] is defined) %}
|
||||
<div class="text-danger">{{ error_name[language['language_id']] }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-description{{ language['language_id'] }}">{{ entry_description }}</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea name="lightshopcatblog_description[{{ language['language_id'] }}][description]" placeholder="{{ entry_description }}" id="input-description{{ language['language_id'] }}" data-lang="{{ lang }}" class="form-control" data-toggle="summernote" data-lang="{{ summernote }}">{{ lightshopcatblog_description[language['language_id']] is defined ? lightshopcatblog_description[language['language_id']]['description'] : '' }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-meta-title{{ language['language_id'] }}">{{ entry_meta_title }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="lightshopcatblog_description[{{ language['language_id'] }}][meta_title]" value="{{ lightshopcatblog_description[language['language_id']] is defined ? lightshopcatblog_description[language['language_id']]['meta_title'] : '' }}" placeholder="{{ entry_meta_title }}" id="input-meta-title{{ language['language_id'] }}" class="form-control" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-meta-h1{{ language['language_id'] }}">{{ entry_meta_h1 }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="lightshopcatblog_description[{{ language['language_id'] }}][meta_h1]" value="{{ lightshopcatblog_description[language['language_id']] is defined ? lightshopcatblog_description[language['language_id']]['meta_h1'] : '' }}" placeholder="{{ entry_meta_h1 }}" id="input-meta-h1{{ language['language_id'] }}" class="form-control" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-meta-description{{ language['language_id'] }}">{{ entry_meta_description }}</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea name="lightshopcatblog_description[{{ language['language_id'] }}][meta_description]" rows="5" placeholder="{{ entry_meta_description }}" id="input-meta-description{{ language['language_id'] }}" class="form-control">{{ lightshopcatblog_description[language['language_id']] is defined ? lightshopcatblog_description[language['language_id']]['meta_description'] : '' }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-meta-keyword{{ language['language_id'] }}">{{ entry_meta_keyword }}</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea name="lightshopcatblog_description[{{ language['language_id'] }}][meta_keyword]" rows="5" placeholder="{{ entry_meta_keyword }}" id="input-meta-keyword{{ language['language_id'] }}" class="form-control">{{ lightshopcatblog_description[language['language_id']] is defined ? lightshopcatblog_description[language['language_id']]['meta_keyword'] : '' }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-pane" id="tab-data">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">{{ entry_store }}</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="well well-sm" style="height: 150px; overflow: auto;">
|
||||
{% for store in stores %}
|
||||
<div class="checkbox">
|
||||
<label> {% if store.store_id in lightshopcatblog_store %}
|
||||
<input type="checkbox" name="lightshopcatblog_store[]" value="{{ store.store_id }}" checked="checked" />
|
||||
{{ store.name }}
|
||||
{% else %}
|
||||
<input type="checkbox" name="lightshopcatblog_store[]" value="{{ store.store_id }}" />
|
||||
{{ store.name }}
|
||||
{% endif %}</label>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" style="display: none;">
|
||||
<label class="col-sm-2 control-label" for="input-parent">{{ entry_parent }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select name="parent_id" class="form-control">
|
||||
<option value="0" selected="selected">{{ text_none }}</option>
|
||||
{% for category in categoriesblog %}
|
||||
{% if (category['lightshopcatblog_id'] == parent_id) %}
|
||||
<option value="{{ category['lightshopcatblog_id'] }}" selected="selected">{{ category['name'] }}</option>
|
||||
{% else %}
|
||||
<option value="{{ category['lightshopcatblog_id'] }}">{{ category['name'] }}</option>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" style="display: none;">
|
||||
<label class="col-sm-2 control-label">{{ entry_image }}</label>
|
||||
<div class="col-sm-10"><a href="" id="thumb-image" data-toggle="image" class="img-thumbnail"><img src="{{ thumb }}" alt="" title="" data-placeholder="{{ placeholder }}" /></a>
|
||||
<input type="hidden" name="image" value="{{ image }}" id="input-image" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" style="display: none;">
|
||||
<label class="col-sm-2 control-label" for="input-top"><span data-toggle="tooltip" title="{{ help_top }}">{{ entry_top }}</span></label>
|
||||
<div class="col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
{% if (top) %}
|
||||
<input type="checkbox" name="top" value="1" checked="checked" id="input-top" />
|
||||
{% else %}
|
||||
<input type="checkbox" name="top" value="1" id="input-top" />
|
||||
{% endif %}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" style="display: none;">
|
||||
<label class="col-sm-2 control-label" for="input-column"><span data-toggle="tooltip" title="{{ help_column }}">{{ entry_column }}</span></label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="column" value="{{ column }}" placeholder="{{ entry_column }}" id="input-column" class="form-control" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-sort-order">{{ entry_sort_order }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="sort_order" value="{{ sort_order }}" placeholder="{{ entry_sort_order }}" id="input-sort-order" class="form-control" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-status">{{ entry_status }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select name="status" id="input-status" class="form-control">
|
||||
{% if (status) %}
|
||||
<option value="1" selected="selected">{{ text_enabled }}</option>
|
||||
<option value="0">{{ text_disabled }}</option>
|
||||
{% else %}
|
||||
<option value="1">{{ text_enabled }}</option>
|
||||
<option value="0" selected="selected">{{ text_disabled }}</option>
|
||||
{% endif %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tab-pane" id="tab-seo">
|
||||
<div class="alert alert-info"><i class="fa fa-info-circle"></i> {{ help_keyword }}</div>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<td class="text-left">{{ entry_store }}</td>
|
||||
<td class="text-left">{{ entry_keyword }}</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for store in stores %}
|
||||
<tr>
|
||||
<td class="text-left">{{ store.name }}</td>
|
||||
<td class="text-left">{% for language in languages %}
|
||||
<div class="input-group"><span class="input-group-addon"><img src="language/{{ language.code }}/{{ language.code }}.png" title="{{ language.name }}" /></span>
|
||||
<input type="text" name="category_seo_url[{{ store.store_id }}][{{ language.language_id }}]" value="{% if category_seo_url[store.store_id][language.language_id] %}{{ category_seo_url[store.store_id][language.language_id] }}{% endif %}" placeholder="{{ entry_keyword }}" class="form-control" />
|
||||
</div>
|
||||
{% if error_keyword[store.store_id][language.language_id] %}
|
||||
<div class="text-danger">{{ error_keyword[store.store_id][language.language_id] }}</div>
|
||||
{% endif %}
|
||||
{% endfor %}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="tab-pane" id="tab-design">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<td class="text-left">{{ entry_store }}</td>
|
||||
<td class="text-left">{{ entry_layout }}</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for store in stores %}
|
||||
<tr>
|
||||
<td class="text-left">{{ store.name }}</td>
|
||||
<td class="text-left"><select name="category_layout[{{ store.store_id }}]" class="form-control">
|
||||
<option value=""></option>
|
||||
{% for layout in layouts %}
|
||||
{% if category_layout[store.store_id] and category_layout[store.store_id] == layout.layout_id %}
|
||||
<option value="{{ layout.layout_id }}" selected="selected">{{ layout.name }}</option>
|
||||
{% else %}
|
||||
<option value="{{ layout.layout_id }}">{{ layout.name }}</option>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</select></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript"><!--
|
||||
{% if (ckeditor) %}
|
||||
{% for language in languages %}
|
||||
ckeditorInit('input-description{{ language['language_id'] }}', getURLVar('user_token'));
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
//--></script>
|
||||
<script type="text/javascript"><!--
|
||||
$('input[name=\'path\']').autocomplete({
|
||||
'source': function(request, response) {
|
||||
$.ajax({
|
||||
url: 'index.php?route=catalog/category/autocomplete&user_token={{ user_token }}&filter_name=' + encodeURIComponent(request),
|
||||
dataType: 'json',
|
||||
success: function(json) {
|
||||
json.unshift({
|
||||
category_id: 0,
|
||||
name: '{{ text_none }}'
|
||||
});
|
||||
|
||||
response($.map(json, function(item) {
|
||||
return {
|
||||
label: item['name'],
|
||||
value: item['category_id']
|
||||
}
|
||||
}));
|
||||
}
|
||||
});
|
||||
},
|
||||
'select': function(item) {
|
||||
$('input[name=\'path\']').val(item['label']);
|
||||
$('input[name=\'parent_id\']').val(item['value']);
|
||||
}
|
||||
});
|
||||
//--></script>
|
||||
<script type="text/javascript"><!--
|
||||
$('input[name=\'filter\']').autocomplete({
|
||||
'source': function(request, response) {
|
||||
$.ajax({
|
||||
url: 'index.php?route=catalog/filter/autocomplete&user_token={{ user_token }}&filter_name=' + encodeURIComponent(request),
|
||||
dataType: 'json',
|
||||
success: function(json) {
|
||||
response($.map(json, function(item) {
|
||||
return {
|
||||
label: item['name'],
|
||||
value: item['filter_id']
|
||||
}
|
||||
}));
|
||||
}
|
||||
});
|
||||
},
|
||||
'select': function(item) {
|
||||
$('input[name=\'filter\']').val('');
|
||||
|
||||
$('#category-filter' + item['value']).remove();
|
||||
|
||||
$('#category-filter').append('<div id="category-filter' + item['value'] + '"><i class="fa fa-minus-circle"></i> ' + item['label'] + '<input type="hidden" name="category_filter[]" value="' + item['value'] + '" /></div>');
|
||||
}
|
||||
});
|
||||
|
||||
$('#category-filter').delegate('.fa-minus-circle', 'click', function() {
|
||||
$(this).parent().remove();
|
||||
});
|
||||
//--></script>
|
||||
<script type="text/javascript"><!--
|
||||
$('#language a:first').tab('show');
|
||||
//--></script></div>
|
||||
{{ footer }}
|
||||
@@ -1,87 +0,0 @@
|
||||
{{ header }}{{ column_left }}
|
||||
<div id="content">
|
||||
<div class="page-header">
|
||||
<div class="container-fluid">
|
||||
<div class="pull-right">
|
||||
<a href="{{ add }}" data-toggle="tooltip" title="{{ button_add }}" class="btn btn-primary"><i class="fa fa-plus"></i></a>
|
||||
<button type="button" data-toggle="tooltip" title="{{ button_delete }}" class="btn btn-danger" onclick="confirm('{{ text_confirm }}') ? $('#form-category').submit() : false;"><i class="fa fa-trash-o"></i></button>
|
||||
</div>
|
||||
<h1>{{ heading_title }}</h1>
|
||||
<ul class="breadcrumb">
|
||||
{% for breadcrumb in breadcrumbs %}
|
||||
<li><a href="{{ breadcrumb['href'] }}">{{ breadcrumb['text'] }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-fluid">
|
||||
{% if (error_warning) %}
|
||||
<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> {{ error_warning }}
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if (success) %}
|
||||
<div class="alert alert-success"><i class="fa fa-check-circle"></i> {{ success }}
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><i class="fa fa-list"></i> {{ text_list }}</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="{{ delete }}" method="post" enctype="multipart/form-data" id="form-category">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<td style="width: 1px;" class="text-center"><input type="checkbox" onclick="$('input[name*=\'selected\']').prop('checked', this.checked);" /></td>
|
||||
<td class="text-left">{% if (sort == 'name') %}
|
||||
<a href="{{ sort_name }}" class="{{ (order)|lower }}">{{ column_name }}</a>
|
||||
{% else %}
|
||||
<a href="{{ sort_name }}">{{ column_name }}</a>
|
||||
{% endif %}</td>
|
||||
<td class="text-right">{% if (sort == 'sort_order') %}
|
||||
<a href="{{ sort_sort_order }}" class="{{ (order)|lower }}">{{ column_sort_order }}</a>
|
||||
{% else %}
|
||||
<a href="{{ sort_sort_order }}">{{ column_sort_order }}</a>
|
||||
{% endif %}</td>
|
||||
<td class="text-right">{{ column_action }}</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% if (categories) %}
|
||||
{% for category in categories %}
|
||||
<tr>
|
||||
<td class="text-center">{% if category['lightshopcatblog_id'] in selected %}
|
||||
<input type="checkbox" name="selected[]" value="{{ category['lightshopcatblog_id'] }}" checked="checked" />
|
||||
{% else %}
|
||||
<input type="checkbox" name="selected[]" value="{{ category['lightshopcatblog_id'] }}" />
|
||||
{% endif %}</td>
|
||||
{% if (category['href']) %}
|
||||
<td class="left">{{ category['indent'] }}<a href="{{ category['href'] }}">{{ category['name'] }}</a> <i class="fa fa-sort-desc"></i></td>
|
||||
{% else %}
|
||||
<td class="left">{{ category['indent'] }}{{ category['name'] }}</td>
|
||||
{% endif %}
|
||||
<td class="text-right">{{ category['sort_order'] }}</td>
|
||||
<td class="text-right"><a href="{{ category['edit'] }}" data-toggle="tooltip" title="{{ button_edit }}" class="btn btn-primary"><i class="fa fa-pencil"></i></a></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<tr>
|
||||
<td class="text-center" colspan="4">{{ text_no_results }}</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
<div class="row">
|
||||
<div class="col-sm-6 text-left">{{ pagination }}</div>
|
||||
<div class="col-sm-6 text-right">{{ results }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ footer }}
|
||||
@@ -1,57 +0,0 @@
|
||||
{{ header }}{{ column_left }}
|
||||
<div id="content">
|
||||
<div class="page-header">
|
||||
<div class="container-fluid">
|
||||
<div class="pull-right">
|
||||
<a onclick="$('#form').submit();" data-toggle="tooltip" title="{{ button_save }}" class="btn btn-primary"><i class="fa fa-save"></i></a>
|
||||
<a href="{{ cancel }}" data-toggle="tooltip" title="{{ button_cancel }}" class="btn btn-default"><i class="fa fa-reply"></i></a>
|
||||
</div>
|
||||
<h1>{{ heading_title }}</h1>
|
||||
<ul class="breadcrumb">
|
||||
{% for breadcrumb in breadcrumbs %}
|
||||
<li><a href="{{ breadcrumb['href'] }}">{{ breadcrumb['text'] }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-fluid">
|
||||
{% if (error_warning) %}
|
||||
<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> {{ error_warning }}
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><i class="fa fa-envelope-o"></i> {{ heading_title }}</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="{{ action }}" method="post" enctype="multipart/form-data" id="form" class="form-horizontal">
|
||||
<div class="form-group required">
|
||||
<label class="col-sm-2 control-label" for="input-entry-email">{{ entry_email }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="email" value="{{ email }}" placeholder="{{ entry_email }}" id="input-entry-email" class="form-control" />
|
||||
{% if (error_email) %}
|
||||
<div class="text-danger">{{ error_email }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-status">{{ entry_status }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select name="status" id="input-status" class="form-control">
|
||||
{% if (status) %}
|
||||
<option value="1" selected="selected">{{ text_enabled }}</option>
|
||||
<option value="0">{{ text_disabled }}</option>
|
||||
{% else %}
|
||||
<option value="1">{{ text_enabled }}</option>
|
||||
<option value="0" selected="selected">{{ text_disabled }}</option>
|
||||
{% endif %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ footer }}
|
||||
@@ -1,97 +0,0 @@
|
||||
{{ header }}{{ column_left }}
|
||||
<div id="content">
|
||||
<div class="page-header">
|
||||
<div class="container-fluid">
|
||||
<div class="pull-right">
|
||||
<a href="{{ send }}" data-toggle="tooltip" title="{{ button_subscribe }}" class="btn btn-success"><i class="fa fa-paper-plane"></i></a>
|
||||
<a href="{{ email }}" data-toggle="tooltip" title="{{ button_email }}" class="btn btn-primary"><i class="fa fa-envelope-o"></i></a>
|
||||
<a href="{{ insert }}" data-toggle="tooltip" title="Добавить email" class="btn btn-primary"><i class="fa fa-plus"></i></a>
|
||||
<a onclick="$('form').submit();" data-toggle="tooltip" title="{{ button_delete }}" class="btn btn-danger"><i class="fa fa-trash-o"></i></a>
|
||||
</div>
|
||||
<h1>{{ heading_title }}</h1>
|
||||
<ul class="breadcrumb">
|
||||
{% for breadcrumb in breadcrumbs %}
|
||||
<li><a href="{{ breadcrumb['href'] }}">{{ breadcrumb['text'] }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{% if (module_install) %}
|
||||
<div class="container-fluid">
|
||||
{% if (error_warning) %}
|
||||
<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> {{ error_warning }}
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if (success) %}
|
||||
<div class="alert alert-success"><i class="fa fa-check-circle"></i> {{ success }}
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><i class="fa fa-envelope-o"></i> {{ heading_title }}</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="{{ delete }}" method="post" enctype="multipart/form-data" id="form">
|
||||
<table class="table table-striped table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<td width="1" style="text-align: center;"><input type="checkbox" onclick="$('input[name*=\'selected\']').attr('checked', this.checked);" /></td>
|
||||
<td class="text-left">{% if (sort == 'email') %}
|
||||
<a href="{{ sort_email }}" class="{{ (order)|lower }}">{{ column_email }}</a>
|
||||
{% else %}
|
||||
<a href="{{ sort_email }}">{{ column_email }}</a>
|
||||
{% endif %}</td>
|
||||
<td class="text-left">{% if (sort == 'status') %}
|
||||
<a href="{{ sort_status }}" class="{{ (order)|lower }}">{{ column_status }}</a>
|
||||
{% else %}
|
||||
<a href="{{ sort_status }}">{{ column_status }}</a>
|
||||
{% endif %}</td>
|
||||
<td class="text-right">{{ column_action }}</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% if (subscribers) %}
|
||||
{% for subscribe in subscribers %}
|
||||
<tr>
|
||||
<td style="text-align: center;">{% if (subscribe['selected']) %}
|
||||
<input type="checkbox" name="selected[]" value="{{ subscribe['subscribe_id'] }}" checked="checked" />
|
||||
{% else %}
|
||||
<input type="checkbox" name="selected[]" value="{{ subscribe['subscribe_id'] }}" />
|
||||
{% endif %}</td>
|
||||
<td class="text-left">{{ subscribe['email'] }}</td>
|
||||
<td class="text-left">{{ subscribe['status'] }}</td>
|
||||
<td class="text-right">{% for action in subscribe['action'] %}
|
||||
<a href="{{ action['href'] }}" data-toggle="tooltip" title="{{ action['text'] }}" class="btn btn-primary"><i class="fa fa-pencil"></i></a>
|
||||
{% endfor %}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<tr>
|
||||
<td class="text-center" colspan="4">{{ text_no_results }}</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
<div class="row">
|
||||
<div class="col-sm-6 text-left">{{ pagination }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="container-fluid">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><i class="fa fa-envelope-o"></i> {{ heading_title }}</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ text_module_not_exists }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{{ footer }}
|
||||
@@ -1,61 +0,0 @@
|
||||
{{ header }}{{ column_left }}
|
||||
<div id="content">
|
||||
<div class="page-header">
|
||||
<div class="container-fluid">
|
||||
<div class="pull-right">
|
||||
<a onclick="$('#form').submit();" data-toggle="tooltip" title="{{ button_save }}" class="btn btn-primary"><i class="fa fa-save"></i></a>
|
||||
<a href="{{ cancel }}" data-toggle="tooltip" title="{{ button_cancel }}" class="btn btn-default"><i class="fa fa-reply"></i></a>
|
||||
</div>
|
||||
<h1>{{ heading_title }}</h1>
|
||||
<ul class="breadcrumb">
|
||||
{% for breadcrumb in breadcrumbs %}
|
||||
<li><a href="{{ breadcrumb['href'] }}">{{ breadcrumb['text'] }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-fluid">
|
||||
{% if (error_warning) %}
|
||||
<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> {{ error_warning }}
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><i class="fa fa-envelope-o"></i> {{ heading_title }}</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="{{ action }}" method="post" enctype="multipart/form-data" id="form" class="form-horizontal">
|
||||
<ul class="nav nav-tabs" id="language">
|
||||
{% for language in languages %}
|
||||
<li><a href="#language{{ language['language_id'] }}" data-toggle="tab"><img src="language/{{ language['code'] }}/{{ language['code'] }}.png" title="{{ language['name'] }}" /> {{ language['name'] }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
{% for language in languages %}
|
||||
<div class="tab-pane" id="language{{ language['language_id'] }}">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-description{{ language['language_id'] }}">{{ entry_text_mail }}</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea name="subscribe_descriptions[{{ language['language_id'] }}]" placeholder="{{ entry_text_mail }}" id="subscribe-description{{ language['language_id'] }}" data-lang="{{ lang }}" class="form-control" data-toggle="summernote" data-lang="{{ summernote }}">{{ subscribe_descriptions[language['language_id']] is defined ? subscribe_descriptions[language['language_id']] : '' }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript"><!--
|
||||
{% if (ckeditor) %}
|
||||
{% for language in languages %}
|
||||
ckeditorInit('input-description{{ language['language_id'] }}', getURLVar('token'));
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
//--></script>
|
||||
<script type="text/javascript"><!--
|
||||
$('#language a:first').tab('show');
|
||||
//--></script>
|
||||
{{ footer }}
|
||||
@@ -1,111 +0,0 @@
|
||||
{{ header }}{{ column_left }}
|
||||
<div id="content">
|
||||
<div class="page-header">
|
||||
<div class="container-fluid">
|
||||
<div class="pull-right">
|
||||
<a href="{{ cancel }}" data-toggle="tooltip" title="{{ button_cancel }}" class="btn btn-default"><i class="fa fa-reply"></i></a></div>
|
||||
<h1>{{ heading_title }}</h1>
|
||||
<ul class="breadcrumb">
|
||||
{% for breadcrumb in breadcrumbs %}
|
||||
<li><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-fluid">
|
||||
{% if (error_warning) %}
|
||||
<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> {{ error_warning }}
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><i class="fa fa-pencil"></i> {{ text_edit }}</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="{{ action }}" method="post" enctype="multipart/form-data" id="form-theme-lightshop" class="form-horizontal">
|
||||
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="active"><a href="#tab-info" data-toggle="tab">О шаблоне</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane active" id="tab-info">
|
||||
<div class="col-sm-8 col-sm-offset-2">
|
||||
<div class="about-info thumbnail">
|
||||
<div class="lightshop-logo"><img src="view/image/lightshop/lightshop-logo.png" alt="lightshop"></div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label" for="input-theme_lightshop_label_sale_d">Версия</label>
|
||||
<div class="col-sm-8 inline-text">
|
||||
{{ theme_lightshop_version }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label" for="input-license-key">Введите лицензионный ключ</label>
|
||||
<div class="col-sm-8">
|
||||
<div class="input-group">
|
||||
<input type="text" id="key" name="license_key" value="" placeholder="Введите лицензионный ключ" id="license-key" class="form-control" />
|
||||
<div class="input-group-btn">
|
||||
<button id="sendkey" data-toggle="tooltip" title="{{ button_save }}" class="btn btn-primary"><i class="fa fa-save"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label" for="input-theme_lightshop_label_sale_d">Техническая поддержка</label>
|
||||
<div class="col-sm-8 inline-text">
|
||||
<a href="mailto:support@899themes.ru">Отправить запрос в службу поддержки (support@899themes.ru)</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label" for="input-theme_lightshop_label_sale_d">Разработчик</label>
|
||||
<div class="col-sm-8 inline-text">
|
||||
<a href="http://899themes.ru/" target="_blank">899themes.ru</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label" for="input-theme_lightshop_label_sale_d">Лицензионное соглашение</label>
|
||||
<div class="col-sm-8 inline-text">
|
||||
<textarea class="license-agreement" readonly>{{ text_license }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript"><!--
|
||||
|
||||
|
||||
|
||||
$(document).ready(function() {
|
||||
$('#sendkey').on('click', function(e) {
|
||||
e.preventDefault();
|
||||
var data = $('#key').val();
|
||||
$.ajax({
|
||||
url: 'index.php?route=extension/theme/lightshop/activatekey&user_token={{ user_token }}&newkey=1',
|
||||
type: 'post',
|
||||
dataType: 'json',
|
||||
data: 'license_key=' + $('#key').val(),
|
||||
success: function (data) {
|
||||
if (data.error) { console.log(data.error);
|
||||
alert(data.error);
|
||||
}
|
||||
if (data.success) {
|
||||
alert(data.success);
|
||||
location.reload();
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
//--></script>
|
||||
{{ footer }}
|
||||
@@ -1,53 +0,0 @@
|
||||
{{ header }}{{ column_left }}
|
||||
<div id="content">
|
||||
<div class="page-header">
|
||||
<div class="container-fluid">
|
||||
<div class="pull-right">
|
||||
<button type="submit" form="form-lightshopsets" data-toggle="tooltip" title="{{ button_save }}" class="btn btn-primary"><i class="fa fa-save"></i></button>
|
||||
<a href="{{ cancel }}" data-toggle="tooltip" title="{{ button_cancel }}" class="btn btn-default"><i class="fa fa-reply"></i></a></div>
|
||||
<h1>{{ heading_title }}</h1>
|
||||
<ul class="breadcrumb">
|
||||
{% for breadcrumb in breadcrumbs %}
|
||||
<li><a href="{{ breadcrumb['href'] }}">{{ breadcrumb['text'] }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-fluid">
|
||||
{% if (error_warning) %}
|
||||
<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> {{ error_warning }}
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><i class="fa fa-pencil"></i> {{ text_edit }}</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="{{ action }}" method="post" enctype="multipart/form-data" class="form-horizontal" id="form-lightshopsets">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-status">{{ entry_status }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select name="total_lightshopsets_status" id="input-status" class="form-control">
|
||||
{% if (total_lightshopsets_status) %}
|
||||
<option value="1" selected="selected">{{ text_enabled }}</option>
|
||||
<option value="0">{{ text_disabled }}</option>
|
||||
{% else %}
|
||||
<option value="1">{{ text_enabled }}</option>
|
||||
<option value="0" selected="selected">{{ text_disabled }}</option>
|
||||
{% endif %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="input-sort-order">{{ entry_sort_order }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="total_lightshopsets_sort_order" value="{{ total_lightshopsets_sort_order }}" placeholder="{{ entry_sort_order }}" id="input-sort-order" class="form-control" />
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ footer }}
|
||||
@@ -1,73 +0,0 @@
|
||||
<?php
|
||||
// Heading
|
||||
$_['heading_title'] = 'Блог';
|
||||
$_['heading_title_cloud'] = 'Теги';
|
||||
$_['heading_title_cat'] = 'Категории';
|
||||
|
||||
// Error
|
||||
$_['error_name'] = 'Имя должно быть от 3 до 25 символов!';
|
||||
$_['error_text'] = 'Текст отзыва должен быть от 25 до 1000 символов!';
|
||||
$_['error_rating'] = 'Пожалуйста поставьте оценку!';
|
||||
$_['error_logged'] = 'Запрещено оставлять комментарии незарегистрированным пользователям';
|
||||
$_['text_error'] = 'Статья блога не найдера';
|
||||
|
||||
// Text
|
||||
$_['text_related'] = 'Рекомендуем';
|
||||
$_['text_related_products'] = 'Рекомендуем';
|
||||
$_['text_success'] = 'Спасибо за ваш комментарий. Он был направлен на модерацию.';
|
||||
$_['text_share'] = 'Поделиться';
|
||||
$_['text_comments'] = 'Комментариев';
|
||||
$_['text_first_comment'] = 'Ваш комментарий будет первым';
|
||||
$_['text_comment_add'] = 'Отправить';
|
||||
$_['text_comment_name'] = 'Имя';
|
||||
$_['text_comment_text'] = 'Ваш комментарий';
|
||||
|
||||
$_['text_am'] = 'дп';
|
||||
$_['text_pm'] = 'пп';
|
||||
$_['text_AM'] = 'ДП';
|
||||
$_['text_PM'] = 'ПП';
|
||||
$_['text_Monday'] = 'Понедельник';
|
||||
$_['text_Mon'] = 'Пн';
|
||||
$_['text_Tuesday'] = 'Вторник';
|
||||
$_['text_Tue'] = 'Вт';
|
||||
$_['text_Wednesday'] = 'Среда';
|
||||
$_['text_Wed'] = 'Ср';
|
||||
$_['text_Thursday'] = 'Четверг';
|
||||
$_['text_Thu'] = 'Чт';
|
||||
$_['text_Friday'] = 'Пятница';
|
||||
$_['text_Fri'] = 'Пт';
|
||||
$_['text_Saturday'] = 'Суббота';
|
||||
$_['text_Sat'] = 'Сб';
|
||||
$_['text_Sunday'] = 'Воскресенье';
|
||||
$_['text_Sun'] = 'Вс';
|
||||
$_['text_January'] = 'Января';
|
||||
$_['text_Jan'] = 'Янв';
|
||||
$_['text_February'] = 'Февраля';
|
||||
$_['text_Feb'] = 'Фев';
|
||||
$_['text_March'] = 'Марта';
|
||||
$_['text_Mar'] = 'Мар';
|
||||
$_['text_April'] = 'Апреля';
|
||||
$_['text_Apr'] = 'Апр';
|
||||
$_['text_May'] = 'Мая';
|
||||
$_['text_June'] = 'Июня';
|
||||
$_['text_Jun'] = 'Июн';
|
||||
$_['text_July'] = 'Июля';
|
||||
$_['text_Jul'] = 'Июл';
|
||||
$_['text_August'] = 'Августа';
|
||||
$_['text_Aug'] = 'Авг';
|
||||
$_['text_September'] = 'Сентября';
|
||||
$_['text_Sep'] = 'Сен';
|
||||
$_['text_October'] = 'Октября';
|
||||
$_['text_Oct'] = 'Окт';
|
||||
$_['text_November'] = 'Ноября';
|
||||
$_['text_Nov'] = 'Ноя';
|
||||
$_['text_December'] = 'Декабря';
|
||||
$_['text_Dec'] = 'Дек';
|
||||
$_['text_st'] = 'ое';
|
||||
$_['text_nd'] = 'ое';
|
||||
$_['text_rd'] = 'е';
|
||||
$_['text_th'] = 'ое';
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,56 +0,0 @@
|
||||
<?php
|
||||
// Heading
|
||||
$_['heading_title'] = 'Модуль Блога';
|
||||
$_['heading_title_cloud'] = 'Теги';
|
||||
$_['heading_title_cat'] = 'Категории';
|
||||
$_['text_all_blogs'] = 'Весь блог';
|
||||
|
||||
// Text
|
||||
$_['text_all_news'] = 'Все новости';
|
||||
$_['text_am'] = 'дп';
|
||||
$_['text_pm'] = 'пп';
|
||||
$_['text_AM'] = 'ДП';
|
||||
$_['text_PM'] = 'ПП';
|
||||
$_['text_Monday'] = 'Понедельник';
|
||||
$_['text_Mon'] = 'Пн';
|
||||
$_['text_Tuesday'] = 'Вторник';
|
||||
$_['text_Tue'] = 'Вт';
|
||||
$_['text_Wednesday'] = 'Среда';
|
||||
$_['text_Wed'] = 'Ср';
|
||||
$_['text_Thursday'] = 'Четверг';
|
||||
$_['text_Thu'] = 'Чт';
|
||||
$_['text_Friday'] = 'Пятница';
|
||||
$_['text_Fri'] = 'Пт';
|
||||
$_['text_Saturday'] = 'Суббота';
|
||||
$_['text_Sat'] = 'Сб';
|
||||
$_['text_Sunday'] = 'Воскресенье';
|
||||
$_['text_Sun'] = 'Вс';
|
||||
$_['text_January'] = 'Января';
|
||||
$_['text_Jan'] = 'Янв';
|
||||
$_['text_February'] = 'Февраля';
|
||||
$_['text_Feb'] = 'Фев';
|
||||
$_['text_March'] = 'Марта';
|
||||
$_['text_Mar'] = 'Мар';
|
||||
$_['text_April'] = 'Апреля';
|
||||
$_['text_Apr'] = 'Апр';
|
||||
$_['text_May'] = 'Мая';
|
||||
$_['text_June'] = 'Июня';
|
||||
$_['text_Jun'] = 'Июн';
|
||||
$_['text_July'] = 'Июля';
|
||||
$_['text_Jul'] = 'Июл';
|
||||
$_['text_August'] = 'Августа';
|
||||
$_['text_Aug'] = 'Авг';
|
||||
$_['text_September'] = 'Сентября';
|
||||
$_['text_Sep'] = 'Сен';
|
||||
$_['text_October'] = 'Октября';
|
||||
$_['text_Oct'] = 'Окт';
|
||||
$_['text_November'] = 'Ноября';
|
||||
$_['text_Nov'] = 'Ноя';
|
||||
$_['text_December'] = 'Декабря';
|
||||
$_['text_Dec'] = 'Дек';
|
||||
$_['text_st'] = 'ое';
|
||||
$_['text_nd'] = 'ое';
|
||||
$_['text_rd'] = 'е';
|
||||
$_['text_th'] = 'ое';
|
||||
$_['text_related'] = 'Рекомендуем';
|
||||
$_['text_related_products'] = 'Рекомендуем';
|
||||
@@ -1,52 +0,0 @@
|
||||
<?php
|
||||
// Heading
|
||||
$_['heading_title'] = 'Новости';
|
||||
|
||||
// Text
|
||||
$_['text_all_news'] = 'Все новости';
|
||||
$_['text_am'] = 'дп';
|
||||
$_['text_pm'] = 'пп';
|
||||
$_['text_AM'] = 'ДП';
|
||||
$_['text_PM'] = 'ПП';
|
||||
$_['text_Monday'] = 'Понедельник';
|
||||
$_['text_Mon'] = 'Пн';
|
||||
$_['text_Tuesday'] = 'Вторник';
|
||||
$_['text_Tue'] = 'Вт';
|
||||
$_['text_Wednesday'] = 'Среда';
|
||||
$_['text_Wed'] = 'Ср';
|
||||
$_['text_Thursday'] = 'Четверг';
|
||||
$_['text_Thu'] = 'Чт';
|
||||
$_['text_Friday'] = 'Пятница';
|
||||
$_['text_Fri'] = 'Пт';
|
||||
$_['text_Saturday'] = 'Суббота';
|
||||
$_['text_Sat'] = 'Сб';
|
||||
$_['text_Sunday'] = 'Воскресенье';
|
||||
$_['text_Sun'] = 'Вс';
|
||||
$_['text_January'] = 'Января';
|
||||
$_['text_Jan'] = 'Янв';
|
||||
$_['text_February'] = 'Февраля';
|
||||
$_['text_Feb'] = 'Фев';
|
||||
$_['text_March'] = 'Марта';
|
||||
$_['text_Mar'] = 'Мар';
|
||||
$_['text_April'] = 'Апреля';
|
||||
$_['text_Apr'] = 'Апр';
|
||||
$_['text_May'] = 'Мая';
|
||||
$_['text_June'] = 'Июня';
|
||||
$_['text_Jun'] = 'Июн';
|
||||
$_['text_July'] = 'Июля';
|
||||
$_['text_Jul'] = 'Июл';
|
||||
$_['text_August'] = 'Августа';
|
||||
$_['text_Aug'] = 'Авг';
|
||||
$_['text_September'] = 'Сентября';
|
||||
$_['text_Sep'] = 'Сен';
|
||||
$_['text_October'] = 'Октября';
|
||||
$_['text_Oct'] = 'Окт';
|
||||
$_['text_November'] = 'Ноября';
|
||||
$_['text_Nov'] = 'Ноя';
|
||||
$_['text_December'] = 'Декабря';
|
||||
$_['text_Dec'] = 'Дек';
|
||||
$_['text_st'] = 'ое';
|
||||
$_['text_nd'] = 'ое';
|
||||
$_['text_rd'] = 'е';
|
||||
$_['text_th'] = 'ое';
|
||||
$_['text_related'] = 'Связанные товары';
|
||||
@@ -1,8 +0,0 @@
|
||||
<?php
|
||||
// Text
|
||||
$_['text_sale'] = 'Скидка';
|
||||
$_['text_quantity'] = 'шт.';
|
||||
$_['text_chng_btn'] = 'Заменить товар';
|
||||
$_['text_item_add'] = 'Выбрать товар';
|
||||
$_['text_popup_package_title'] = 'Выберите товар для замены';
|
||||
$_['text_set_added'] = 'Набор добавлен в корзину';
|
||||
@@ -1,101 +0,0 @@
|
||||
<?php
|
||||
|
||||
// lightshop
|
||||
$_['text_404'] = 'Вы можете <a href="%s">связаться с нами</a>, воспользоваться <a href="%s">поиском по сайту</a> или просто перейти на <a href="%s">главную страницу</a>.';
|
||||
$_['text_error'] = 'Страница не найдена';
|
||||
$_['text_register_account'] = 'Создание учетной записи поможет делать следующие покупки быстрее (не надо будет снова вводить адрес и контактную информацию), видеть состояние заказа, а также видеть заказы, сделанные ранее. Вы также сможете накапливать при покупках призовые баллы (на них тоже можно что-то купить), а постоянным покупателям мы предлагаем систему скидок.';
|
||||
$_['text_forgotten'] = 'Забыли пароль?';
|
||||
$_['text_ls_logged'] = '%s %s';
|
||||
$_['outdated_browser'] = 'Вы используете устаревший браузер. Пожалуйста, <a class="browserupgrade__link" href="http://outdatedbrowser.com/ru" target="_blank">обновите ваш браузер</a>, чтобы использовать все возможности сайта.';
|
||||
$_['text_islogged'] = 'Необходимо войти в <a href="%s">Личный кабинет</a> или <a href="%s">создать учетную запись</a>, чтобы добавлять товары в свои <a href="%s">избранные</a>!';
|
||||
$_['text_empty_wish'] = 'У вас в избранном ничего нет.';
|
||||
$_['text_empty_compare'] = 'Вы пока не добавили товары для сравнения.';
|
||||
$_['text_compare_href'] = '<a href="%s">Сравнить товары</a>';
|
||||
$_['text_wish_href'] = '<a href="%s">Показать избранные</a>';
|
||||
$_['text_instock'] = 'На складе';
|
||||
$_['text_lighshop_name'] = 'Ваше имя:';
|
||||
$_['text_lighshop_phone'] = 'Ваш телефон:';
|
||||
$_['text_lighshop_comment'] = 'Комментарий:';
|
||||
$_['button_lighshop_sendorder'] = 'Отправить заказ';
|
||||
$_['text_lightshop_show_all'] = 'Показать все';
|
||||
$_['text_header_category'] = 'Категории';
|
||||
$_['text_header_callback'] = 'Обратный звонок';
|
||||
$_['text_account_title'] = 'Авторизация';
|
||||
$_['text_account_login'] = 'Вход';
|
||||
$_['text_account_register'] = 'Регистрация';
|
||||
$_['text_account_check'] = 'Запомнить';
|
||||
$_['text_account_submit'] = 'Войти';
|
||||
$_['text_account_password'] = 'Пароль';
|
||||
$_['text_footer_subscribe_email'] = 'Эл. почта';
|
||||
$_['text_social_navs'] = 'Мы в сети';
|
||||
$_['text_lightshop_news'] = 'Новости';
|
||||
$_['text_lightshop_blogs'] = 'Блог';
|
||||
$_['text_custcart'] = 'Корзина';
|
||||
$_['text_lightshop_subscribe_btn'] = 'Подписаться';
|
||||
$_['text_loader'] = 'Загрузка...';
|
||||
$_['text_lightshop_points'] = 'Цена в баллах:';
|
||||
$_['text_product_view_btn'] = 'Быстрый просмотр';
|
||||
$_['text_prev2'] = 'Предыдущий товар';
|
||||
$_['text_next2'] = 'Следующий товар';
|
||||
$_['text_show_more'] = 'Показать все';
|
||||
|
||||
$_['text_lightshop_cart_title'] = 'Корзина';
|
||||
$_['text_lightshop_cart_quantity'] = 'шт.';
|
||||
$_['text_lightshop_fast_order'] = 'Быстрый заказ';
|
||||
$_['text_lightshop_order'] = 'Оформление заказа';
|
||||
$_['text_lightshop_buy_click'] = 'Записаться на примерку';
|
||||
$_['text_lightshop_wish_head'] = 'Избранное';
|
||||
$_['text_lightshop_comp_head'] = 'Сравнение';
|
||||
$_['text_lightshop_ship'] = 'Способ доставки';
|
||||
$_['text_lightshop_pay'] = 'Способ оплаты';
|
||||
$_['text_lightshop_checkout_s1'] = 'Способ оформления заказа';
|
||||
$_['text_lightshop_checkout_s2'] = 'Покупатель';
|
||||
$_['text_lightshop_checkout_s3'] = 'Адрес доставки';
|
||||
$_['text_lightshop_checkout_s4'] = 'Доставка и оплата';
|
||||
$_['text_lightshop_edit_cart'] = 'Изменить';
|
||||
|
||||
$_['text_lightshop_filter'] = 'Фильтр';
|
||||
$_['text_lightshop_menu'] = 'Меню';
|
||||
$_['text_lightshop_information'] = 'Информация';
|
||||
$_['text_lightshop_filter_price'] = 'Цена';
|
||||
|
||||
$_['text_lightshop_coupon'] = 'Купон';
|
||||
$_['text_lightshop_shipping'] = 'Стоимость доставки';
|
||||
$_['text_lightshop_reward'] = 'Бонусные баллы';
|
||||
$_['text_lightshop_voucher'] = 'Сертификат';
|
||||
|
||||
$_['text_lightshop_support'] = 'Поддержка покупателей';
|
||||
$_['text_lightshop_con_soc'] = 'А также мы в сети';
|
||||
|
||||
$_['text_lightshop_popup_link'] = 'Открыть страницу товара';
|
||||
$_['text_lightshop_popup_link_more'] = 'Подробное описание на странице товара';
|
||||
$_['text_lightshop_popup_upload'] = 'Загрузить файл';
|
||||
$_['text_manufacturers'] = 'Производители';
|
||||
|
||||
$_['text_lightshop_products_text_more'] = 'Подробное описание';
|
||||
$_['text_lightshop_products_review'] = 'Оставить отзыв';
|
||||
$_['text_lightshop_pdata'] = 'Нажимая на кнопку «%s», Вы даете <a href="%s" class="agree" title="%s">согласие на обработку персональных данных.</a>';
|
||||
$_['text_lightshop_pdata_checkbox'] = 'Я согласен на <a href="%s" class="agree" title="%s">обработку персональных данных.</a>';
|
||||
|
||||
$_['error_firstname'] = '%s должно быть от 1 до 64 символов!';
|
||||
$_['error_lastname'] = '%s должно быть от 1 до 64 символов!';
|
||||
$_['error_email'] = '%s введён неверно!';
|
||||
$_['error_fax'] = '%s должно быть от 1 до 32 символов!';
|
||||
$_['error_telephone'] = '%s должен быть от 3 до 32 символов!';
|
||||
$_['error_company'] = '%s должен быть от 3 до 32 символов!';
|
||||
$_['error_password'] = 'Пароль должен быть от 3 до 20 символов!';
|
||||
$_['error_confirm'] = 'Пароли не совпадают!';
|
||||
$_['error_address_1'] = '%s должен быть от 3 до 128 символов!';
|
||||
$_['error_city'] = '%s должно быть от 2 до 128 символов!';
|
||||
$_['error_postcode'] = '%s должен быть от 2 до 10 символов!';
|
||||
$_['error_country'] = 'Пожалуйста, выберите %s!';
|
||||
$_['error_zone'] = 'Пожалуйста, выберите %s';
|
||||
$_['text_lightshop_error_pdata'] = 'Вы должны согласиться с условиями';
|
||||
|
||||
$_['text_lightshop_show'] = 'Показать';
|
||||
$_['text_lightshop_reset'] = 'Сбросить';
|
||||
$_['text_lightshop_products'] = 'Выбрано';
|
||||
$_['text_lightshop_from'] = 'от';
|
||||
$_['text_lightshop_to'] = 'до';
|
||||
|
||||
$_['text_lightshop_cookieagry_btn'] = '%s';
|
||||
@@ -1,2 +0,0 @@
|
||||
<?php
|
||||
$_['text_lightshopsets'] = 'Скидка на набор';
|
||||
@@ -1,70 +0,0 @@
|
||||
<?php
|
||||
// Heading
|
||||
$_['heading_title'] = 'Блог';
|
||||
$_['heading_title_cloud'] = 'Теги';
|
||||
$_['heading_title_cat'] = 'Категорії';
|
||||
|
||||
// Error
|
||||
$_['error_name'] = 'Ім я повинно бути від 3 до 25 символів!';
|
||||
$_['error_text'] = 'Текст відгуку повинен бути від 25 до 1000 символів!';
|
||||
$_['error_rating'] = 'Будь ласка поставте оцінку!';
|
||||
$_['error_logged'] = 'Заборонено залишати коментарі незареєстрованим користувачам';
|
||||
$_['text_error'] = 'Стаття блоґу не найдера';
|
||||
|
||||
// Text
|
||||
$_['text_related'] = 'Рекомендуємо';
|
||||
$_['text_related_products'] = 'Рекомендуємо';
|
||||
$_['text_success'] = 'Дякую за Ваш коментар. Він був спрямований на модерацію.';
|
||||
$_['text_share'] = 'Поділитися';
|
||||
$_['text_comments'] = 'Коментарів';
|
||||
$_['text_first_comment'] = 'Ваш коментар буде першим';
|
||||
$_['text_comment_add'] = 'Відправити';
|
||||
$_['text_comment_name'] = 'Имя';
|
||||
$_['text_comment_text'] = 'Ваш коментар';
|
||||
|
||||
$_['text_am'] = 'дп';
|
||||
$_['text_pm'] = 'пп';
|
||||
$_['text_AM'] = 'ДП';
|
||||
$_['text_PM'] = 'ПП';
|
||||
$_['text_Monday'] = 'Понеділок';
|
||||
$_['text_Mon'] = 'Пн';
|
||||
$_['text_Tuesday'] = 'Вівторок';
|
||||
$_['text_Tue'] = 'Вт';
|
||||
$_['text_Wednesday'] = 'Середа';
|
||||
$_['text_Wed'] = 'Ср';
|
||||
$_['text_Thursday'] = 'Четвер';
|
||||
$_['text_Thu'] = 'Чт';
|
||||
$_['text_Friday'] = 'П’ятниця';
|
||||
$_['text_Fri'] = 'Пт';
|
||||
$_['text_Saturday'] = 'Субота';
|
||||
$_['text_Sat'] = 'Сб';
|
||||
$_['text_Sunday'] = 'Неділя';
|
||||
$_['text_Sun'] = 'Нд';
|
||||
$_['text_January'] = 'Січня';
|
||||
$_['text_Jan'] = 'Січ';
|
||||
$_['text_February'] = 'Лютого';
|
||||
$_['text_Feb'] = 'Лют';
|
||||
$_['text_March'] = 'Березня';
|
||||
$_['text_Mar'] = 'Бер';
|
||||
$_['text_April'] = 'Квітня';
|
||||
$_['text_Apr'] = 'Кві';
|
||||
$_['text_May'] = 'Травня';
|
||||
$_['text_June'] = 'Червня';
|
||||
$_['text_Jun'] = 'Чер';
|
||||
$_['text_July'] = 'Липня';
|
||||
$_['text_Jul'] = 'Лип';
|
||||
$_['text_August'] = 'Серпня';
|
||||
$_['text_Aug'] = 'Срп';
|
||||
$_['text_September'] = 'Вересня';
|
||||
$_['text_Sep'] = 'Вер';
|
||||
$_['text_October'] = 'Жовтня';
|
||||
$_['text_Oct'] = 'Жов';
|
||||
$_['text_November'] = 'Листопада';
|
||||
$_['text_Nov'] = 'Лис';
|
||||
$_['text_December'] = 'Грудня';
|
||||
$_['text_Dec'] = 'Грд';
|
||||
$_['text_st'] = 'ое';
|
||||
$_['text_nd'] = 'ое';
|
||||
$_['text_rd'] = 'е';
|
||||
$_['text_th'] = 'ое';
|
||||
|
||||
@@ -1,57 +0,0 @@
|
||||
<?php
|
||||
// Heading
|
||||
$_['heading_title'] = 'Модуль Блогу';
|
||||
$_['heading_title_cloud'] = 'Теги';
|
||||
$_['heading_title_cat'] = 'Категорії';
|
||||
$_['text_all_blogs'] = 'Весь блог';
|
||||
|
||||
// Text
|
||||
$_['text_all_news'] = 'Усі новіни';
|
||||
$_['text_am'] = 'дп';
|
||||
$_['text_pm'] = 'пп';
|
||||
$_['text_AM'] = 'ДП';
|
||||
$_['text_PM'] = 'ПП';
|
||||
$_['text_Monday'] = 'Понеділок';
|
||||
$_['text_Mon'] = 'Пн';
|
||||
$_['text_Tuesday'] = 'Вівторок';
|
||||
$_['text_Tue'] = 'Вт';
|
||||
$_['text_Wednesday'] = 'Середа';
|
||||
$_['text_Wed'] = 'Ср';
|
||||
$_['text_Thursday'] = 'Четвер';
|
||||
$_['text_Thu'] = 'Чт';
|
||||
$_['text_Friday'] = 'П’ятниця';
|
||||
$_['text_Fri'] = 'Пт';
|
||||
$_['text_Saturday'] = 'Субота';
|
||||
$_['text_Sat'] = 'Сб';
|
||||
$_['text_Sunday'] = 'Неділя';
|
||||
$_['text_Sun'] = 'Нд';
|
||||
$_['text_January'] = 'Січня';
|
||||
$_['text_Jan'] = 'Січ';
|
||||
$_['text_February'] = 'Лютого';
|
||||
$_['text_Feb'] = 'Лют';
|
||||
$_['text_March'] = 'Березня';
|
||||
$_['text_Mar'] = 'Бер';
|
||||
$_['text_April'] = 'Квітня';
|
||||
$_['text_Apr'] = 'Кві';
|
||||
$_['text_May'] = 'Травня';
|
||||
$_['text_June'] = 'Червня';
|
||||
$_['text_Jun'] = 'Чер';
|
||||
$_['text_July'] = 'Липня';
|
||||
$_['text_Jul'] = 'Лип';
|
||||
$_['text_August'] = 'Серпня';
|
||||
$_['text_Aug'] = 'Срп';
|
||||
$_['text_September'] = 'Вересня';
|
||||
$_['text_Sep'] = 'Вер';
|
||||
$_['text_October'] = 'Жовтня';
|
||||
$_['text_Oct'] = 'Жов';
|
||||
$_['text_November'] = 'Листопада';
|
||||
$_['text_Nov'] = 'Лис';
|
||||
$_['text_December'] = 'Грудня';
|
||||
$_['text_Dec'] = 'Грд';
|
||||
$_['text_st'] = 'ое';
|
||||
$_['text_nd'] = 'ое';
|
||||
$_['text_rd'] = 'е';
|
||||
$_['text_th'] = 'ое';
|
||||
|
||||
$_['text_related'] = 'Рекомендуємо';
|
||||
$_['text_related_products'] = 'Рекомендуємо';
|
||||
@@ -1,52 +0,0 @@
|
||||
<?php
|
||||
// Heading
|
||||
$_['heading_title'] = 'Новіни';
|
||||
|
||||
// Text
|
||||
$_['text_all_news'] = 'Усі новіни';
|
||||
$_['text_am'] = 'дп';
|
||||
$_['text_pm'] = 'пп';
|
||||
$_['text_AM'] = 'ДП';
|
||||
$_['text_PM'] = 'ПП';
|
||||
$_['text_Monday'] = 'Понеділок';
|
||||
$_['text_Mon'] = 'Пн';
|
||||
$_['text_Tuesday'] = 'Вівторок';
|
||||
$_['text_Tue'] = 'Вт';
|
||||
$_['text_Wednesday'] = 'Середа';
|
||||
$_['text_Wed'] = 'Ср';
|
||||
$_['text_Thursday'] = 'Четвер';
|
||||
$_['text_Thu'] = 'Чт';
|
||||
$_['text_Friday'] = 'П’ятниця';
|
||||
$_['text_Fri'] = 'Пт';
|
||||
$_['text_Saturday'] = 'Субота';
|
||||
$_['text_Sat'] = 'Сб';
|
||||
$_['text_Sunday'] = 'Неділя';
|
||||
$_['text_Sun'] = 'Нд';
|
||||
$_['text_January'] = 'Січня';
|
||||
$_['text_Jan'] = 'Січ';
|
||||
$_['text_February'] = 'Лютого';
|
||||
$_['text_Feb'] = 'Лют';
|
||||
$_['text_March'] = 'Березня';
|
||||
$_['text_Mar'] = 'Бер';
|
||||
$_['text_April'] = 'Квітня';
|
||||
$_['text_Apr'] = 'Кві';
|
||||
$_['text_May'] = 'Травня';
|
||||
$_['text_June'] = 'Червня';
|
||||
$_['text_Jun'] = 'Чер';
|
||||
$_['text_July'] = 'Липня';
|
||||
$_['text_Jul'] = 'Лип';
|
||||
$_['text_August'] = 'Серпня';
|
||||
$_['text_Aug'] = 'Срп';
|
||||
$_['text_September'] = 'Вересня';
|
||||
$_['text_Sep'] = 'Вер';
|
||||
$_['text_October'] = 'Жовтня';
|
||||
$_['text_Oct'] = 'Жов';
|
||||
$_['text_November'] = 'Листопада';
|
||||
$_['text_Nov'] = 'Лис';
|
||||
$_['text_December'] = 'Грудня';
|
||||
$_['text_Dec'] = 'Грд';
|
||||
$_['text_st'] = 'ое';
|
||||
$_['text_nd'] = 'ое';
|
||||
$_['text_rd'] = 'е';
|
||||
$_['text_th'] = 'ое';
|
||||
$_['text_related'] = "Пов'язані товари";
|
||||
@@ -1,7 +0,0 @@
|
||||
<?php
|
||||
// Text
|
||||
$_['text_sale'] = 'Знижка';
|
||||
$_['text_quantity'] = 'шт.';
|
||||
$_['text_chng_btn'] = 'Замінити товар';
|
||||
$_['text_item_add'] = 'Вибрати товар';
|
||||
$_['text_popup_package_title'] = 'Виберіть товар для заміни';
|
||||
@@ -1,99 +0,0 @@
|
||||
<?php
|
||||
|
||||
// lightshop
|
||||
$_['text_404'] = 'Ви можете <a href="%s">зв’язаться з нами</a>, скористатися <a href="%s">пошуком по сайту</a> обо просто перейти на <a href="%s">головну сторінку</a>.';
|
||||
$_['text_register_account'] = 'Створення облікового запису дозволіть робити наступні покупки швидше (не треба буде знову вводити адрес та контактну інформацію), бачіти стан заказу, а також бачити закази, зроблені ранійше. Вы також зможете накопичувати при покупках призові бали (на них теж можна щось купити), а постійним покупцям ми пропонуємо систему знижок.';
|
||||
$_['text_forgotten'] = 'Забули пароль?';
|
||||
$_['text_ls_logged'] = '%s %s';
|
||||
$_['outdated_browser'] = 'Ви використовуєте застарілий браузер. Будь ласка, <a class="browserupgrade__link" href="http://outdatedbrowser.com/ru" target="_blank">поновіть ваш браузер</a>, щоб користуватись усіма можливостями сайту.';
|
||||
$_['text_islogged'] = 'Необхідно війти в <a href="%s">Особістий кабінет</a> або <a href="%s">створити обліковий запис </a>, щоб додати товар в <a href="%s">обране</a>!';
|
||||
$_['text_empty_wish'] = 'У вас в обраному нічого нема.';
|
||||
$_['text_empty_compare'] = 'Вы поки не додали товари для порівняння.';
|
||||
$_['text_compare_href'] = '<a href="%s">Порівняти товари</a>';
|
||||
$_['text_wish_href'] = '<a href="%s">Показати обране</a>';
|
||||
$_['text_instock'] = 'На складі';
|
||||
$_['text_lighshop_name'] = 'Ваше им’я:';
|
||||
$_['text_lighshop_phone'] = 'Ваш телефон:';
|
||||
$_['text_lighshop_comment'] = 'Коментар:';
|
||||
$_['button_lighshop_sendorder'] = 'Відправити замовлення';
|
||||
$_['text_lightshop_show_all'] = 'Показати все';
|
||||
$_['text_header_category'] = 'Категорії';
|
||||
$_['text_header_callback'] = 'Зворотній дзвінок';
|
||||
$_['text_account_title'] = 'Авторізація';
|
||||
$_['text_account_login'] = 'Вхід';
|
||||
$_['text_account_register'] = 'Зареєструватися';
|
||||
$_['text_account_check'] = 'Запам’ятати';
|
||||
$_['text_account_submit'] = 'Війти';
|
||||
$_['text_account_password'] = 'Пароль';
|
||||
$_['text_footer_subscribe_email'] = 'E-Mail Адреса';
|
||||
$_['text_social_navs'] = 'Мы в мережі';
|
||||
$_['text_lightshop_news'] = 'Новіни';
|
||||
$_['text_lightshop_blogs'] = 'Блог';
|
||||
$_['text_custcart'] = 'Кошик покупок';
|
||||
$_['text_lightshop_subscribe_btn'] = 'Підписатися';
|
||||
$_['text_loader'] = 'Завантаження ...';
|
||||
$_['text_lightshop_points'] = 'Ціна в балах:';
|
||||
$_['text_product_view_btn'] = 'Швидкий перегляд';
|
||||
$_['text_prev2'] = 'Попередній товар';
|
||||
$_['text_next2'] = 'Наступний товар';
|
||||
$_['text_show_more'] = 'Показати все';
|
||||
|
||||
$_['text_lightshop_cart_title'] = 'Кошик покупок';
|
||||
$_['text_lightshop_cart_quantity'] = 'од.';
|
||||
$_['text_lightshop_fast_order'] = 'Швидке замовлення';
|
||||
$_['text_lightshop_buy_click'] = 'Придбати в один клік';
|
||||
$_['text_lightshop_wish_head'] = 'Обране';
|
||||
$_['text_lightshop_comp_head'] = 'Порівняння';
|
||||
$_['text_lightshop_ship'] = 'Спосіб доставки';
|
||||
$_['text_lightshop_pay'] = 'Спосіб оплати';
|
||||
$_['text_lightshop_checkout_s1'] = 'Спосіб оформлення заказу';
|
||||
$_['text_lightshop_checkout_s2'] = 'Покупець';
|
||||
$_['text_lightshop_checkout_s3'] = 'Адреса доставки';
|
||||
$_['text_lightshop_checkout_s4'] = 'Доставка та оплата';
|
||||
$_['text_lightshop_edit_cart'] = 'Редагувати';
|
||||
|
||||
$_['text_lightshop_filter'] = 'Уточнення пошуку';
|
||||
$_['text_lightshop_menu'] = 'Меню';
|
||||
$_['text_lightshop_information'] = 'Інформація';
|
||||
$_['text_lightshop_filter_price'] = 'Ціна';
|
||||
|
||||
$_['text_lightshop_coupon'] = 'Купон';
|
||||
$_['text_lightshop_shipping'] = 'Вартість доставки';
|
||||
$_['text_lightshop_reward'] = 'Бонусні бали';
|
||||
$_['text_lightshop_voucher'] = 'Сертифікат';
|
||||
|
||||
$_['text_lightshop_support'] = 'Підтримка користувачів';
|
||||
$_['text_lightshop_con_soc'] = 'А ткож ми у мережі';
|
||||
|
||||
$_['text_lightshop_popup_link'] = 'Відкрити страніцу товару';
|
||||
$_['text_lightshop_popup_link_more'] = 'Детальний опис на сторінці товару';
|
||||
$_['text_lightshop_popup_upload'] = 'Завантажити файл';
|
||||
$_['text_manufacturers'] = 'Виробники';
|
||||
|
||||
$_['text_lightshop_products_text_more'] = 'Докладний опис';
|
||||
$_['text_lightshop_products_review'] = 'Залишити відгук';
|
||||
$_['text_lightshop_pdata'] = 'Натискаючи на кнопку «%s», Ви даєте <a href="%s" class="agree" title="%s"> згоду на обробку персональних даних </a>.';
|
||||
$_['text_lightshop_pdata_checkbox'] = 'Я згоден на <a href="%s" class="agree" title="%s">обробку персональних даних.</a>';
|
||||
|
||||
$_['error_firstname'] = '%s має бути від 1 до 64 символів!';
|
||||
$_['error_lastname'] = '%s має бути від 1 до 64 символів!';
|
||||
$_['error_email'] = '%s введений невірно!';
|
||||
$_['error_fax'] = '%s має бути від 1 до 32 символів!';
|
||||
$_['error_telephone'] = '%s повинен бути від 3 до 32 символів!';
|
||||
$_['error_company'] = '%s повинен бути від 3 до 32 символів!';
|
||||
$_['error_password'] = 'Пароль повинен бути від 3 до 20 символів!';
|
||||
$_['error_confirm'] = 'Паролі не співпадають!';
|
||||
$_['error_address_1'] = '%s повинен бути від 3 до 128 символів!';
|
||||
$_['error_city'] = '%s має бути від 2 до 128 символів!';
|
||||
$_['error_postcode'] = '%s повинен бути від 2 до 10 символів!';
|
||||
$_['error_country'] = 'Будь ласка, оберіть %s!';
|
||||
$_['error_zone'] = 'Будь ласка, оберіть %s';
|
||||
$_['text_lightshop_error_pdata'] = 'Ви повинні погодитися з умовами';
|
||||
|
||||
$_['text_lightshop_show'] = 'Показати';
|
||||
$_['text_lightshop_reset'] = 'Скинути';
|
||||
$_['text_lightshop_products'] = 'Обрано';
|
||||
$_['text_lightshop_from'] = 'від';
|
||||
$_['text_lightshop_to'] = 'до';
|
||||
|
||||
$_['text_lightshop_cookieagry_btn'] = '%s';
|
||||
@@ -1,2 +0,0 @@
|
||||
<?php
|
||||
$_['text_lightshopsets'] = 'Знижка на набори';
|
||||
@@ -1,430 +0,0 @@
|
||||
<?php //004fb
|
||||
if(!extension_loaded('ionCube Loader')){$__oc=strtolower(substr(php_uname(),0,3));$__ln='ioncube_loader_'.$__oc.'_'.substr(phpversion(),0,3).(($__oc=='win')?'.dll':'.so');if(function_exists('dl')){@dl($__ln);}if(function_exists('_il_exec')){return _il_exec();}$__ln='/ioncube/'.$__ln;$__oid=$__id=realpath(ini_get('extension_dir'));$__here=dirname(__FILE__);if(strlen($__id)>1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'<a href="http://www.ioncube.com">ionCube</a>')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'<a href="http://get-loader.ioncube.com">get-loader.ioncube.com</a>')." for install assistance.\n\n");exit(199);
|
||||
?>
|
||||
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
|
||||
Dm==
|
||||
@@ -1,204 +0,0 @@
|
||||
<?php
|
||||
class ModelExtensionModuleLightshopblog extends Model {
|
||||
|
||||
public function updateViewed($blog_id) {
|
||||
$this->db->query("UPDATE " . DB_PREFIX . "lightshop_blog SET viewed = (viewed + 1) WHERE blog_id = '" . (int)$blog_id . "'");
|
||||
}
|
||||
|
||||
public function getBlog($blog_id) {
|
||||
$query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "lightshop_blog i LEFT JOIN " . DB_PREFIX . "lightshop_blog_description id ON (i.blog_id = id.blog_id) LEFT JOIN " . DB_PREFIX . "lightshop_blog_to_store i2s ON (i.blog_id = i2s.blog_id) WHERE i.blog_id = '" . (int)$blog_id . "' AND id.language_id = '" . (int)$this->config->get('config_language_id') . "' AND i2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND i.status = '1'");
|
||||
|
||||
return $query->row;
|
||||
}
|
||||
|
||||
public function getBlogs($data) {
|
||||
|
||||
$sql = "SELECT * ";
|
||||
|
||||
if (!empty($data['filter_category_id'])) {
|
||||
if (!empty($data['filter_sub_category'])) {
|
||||
$sql .= " FROM " . DB_PREFIX . "lightshopcat_blog_path cp LEFT JOIN " . DB_PREFIX . "lightshop_blog_to_category p2c ON (cp.category_id = p2c.category_id)";
|
||||
} else {
|
||||
$sql .= " FROM " . DB_PREFIX . "lightshop_blog_to_category p2c";
|
||||
}
|
||||
|
||||
$sql .= " LEFT JOIN " . DB_PREFIX . "lightshop_blog i ON (p2c.blog_id = i.blog_id)";
|
||||
|
||||
} else {
|
||||
$sql .= " FROM " . DB_PREFIX . "lightshop_blog i";
|
||||
}
|
||||
|
||||
$sql .= " LEFT JOIN " . DB_PREFIX . "lightshop_blog_description id ON (i.blog_id = id.blog_id) LEFT JOIN " . DB_PREFIX . "lightshop_blog_tag bt ON (i.blog_id = bt.blog_id) LEFT JOIN " . DB_PREFIX . "lightshop_blog_to_store i2s ON (i.blog_id = i2s.blog_id) WHERE id.language_id = '" . (int)$this->config->get('config_language_id') . "' AND i2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND i.status = '1' ";
|
||||
|
||||
if (!empty($data['filter_category_id'])) {
|
||||
if (!empty($data['filter_sub_category'])) {
|
||||
$sql .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "'";
|
||||
} else {
|
||||
$sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (!empty($data['filtertag'])) {
|
||||
$sql .= " AND bt.tag = '" . $this->db->escape($data['filtertag']) . "'";
|
||||
}
|
||||
|
||||
if (!empty($data['filter_name'])) {
|
||||
$sql .= " AND id.description LIKE '%" . $this->db->escape($data['filter_name']) . "%'";
|
||||
}
|
||||
|
||||
$sql .= " GROUP BY i.blog_id ORDER BY i.date_added DESC LIMIT ".(int)$data['start'].",".(int)$data['limit']."";
|
||||
|
||||
$query = $this->db->query($sql);
|
||||
|
||||
return $query->rows;
|
||||
}
|
||||
public function getBlogsTotal() {
|
||||
$query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "lightshop_blog WHERE status = '1'");
|
||||
|
||||
return $query->row['total'];
|
||||
}
|
||||
|
||||
public function getBlogLayoutId($blog_id) {
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshop_blog_to_layout WHERE blog_id = '" . (int)$blog_id . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "'");
|
||||
|
||||
if ($query->num_rows) {
|
||||
return $query->row['layout_id'];
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
public function isModuleSet() {
|
||||
$isSet = false;
|
||||
$query = $this->db->query("SHOW TABLES LIKE '" . DB_PREFIX . "lightshop_blog'");
|
||||
if($query->num_rows){
|
||||
$isSet = true;
|
||||
}
|
||||
|
||||
return $isSet;
|
||||
}
|
||||
public function getBlogRelated($blog_id) {
|
||||
$product_data = array();
|
||||
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshop_blog_related pr LEFT JOIN " . DB_PREFIX . "lightshop_blog p ON (pr.blog_id = p.blog_id) LEFT JOIN " . DB_PREFIX . "lightshop_blog_to_store p2s ON (p.blog_id = p2s.blog_id) WHERE pr.blog_id = '" . (int)$blog_id . "' AND p.status = '1' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'");
|
||||
$querys = $this->db->query("SHOW TABLES LIKE '" . DB_PREFIX . "lightshop_key'");
|
||||
if($querys->num_rows){$queryss = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshop_key WHERE 1");}
|
||||
foreach ($query->rows as $result) {
|
||||
$product_data[$result['related_id']] = $result['related_id'];
|
||||
}
|
||||
if(!isset($queryss->row['value']) || !$queryss->row['value']){$product_data = array();}
|
||||
return $product_data;
|
||||
}
|
||||
|
||||
public function getBlogRelatedProd($blog_id) {
|
||||
$product_data = array();
|
||||
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshop_blog_related_prod pr LEFT JOIN " . DB_PREFIX . "lightshop_blog p ON (pr.blog_id = p.blog_id) LEFT JOIN " . DB_PREFIX . "lightshop_blog_to_store p2s ON (p.blog_id = p2s.blog_id) WHERE pr.blog_id = '" . (int)$blog_id . "' AND p.status = '1' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'");
|
||||
$querys = $this->db->query("SHOW TABLES LIKE '" . DB_PREFIX . "lightshop_key'");
|
||||
if($querys->num_rows){$queryss = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshop_key WHERE 1");}
|
||||
foreach ($query->rows as $result) {
|
||||
$product_data[$result['related_id']] = $result['related_id'];
|
||||
}
|
||||
if(!isset($queryss->row['value']) || !$queryss->row['value']){$product_data = array();}
|
||||
return $product_data;
|
||||
}
|
||||
|
||||
|
||||
public function getTotalBlogs($data = array()) {
|
||||
|
||||
|
||||
$sql = "SELECT COUNT(DISTINCT p.blog_id) AS total";
|
||||
|
||||
|
||||
if (!empty($data['filter_category_id'])) {
|
||||
if (!empty($data['filter_sub_category'])) {
|
||||
$sql .= " FROM " . DB_PREFIX . "lightshopcat_blog_path cp LEFT JOIN " . DB_PREFIX . "lightshop_blog_to_category p2c ON (cp.category_id = p2c.category_id)";
|
||||
} else {
|
||||
$sql .= " FROM " . DB_PREFIX . "lightshop_blog_to_category p2c";
|
||||
}
|
||||
|
||||
$sql .= " LEFT JOIN " . DB_PREFIX . "lightshop_blog p ON (p2c.blog_id = p.blog_id)";
|
||||
|
||||
} else {
|
||||
$sql .= " FROM " . DB_PREFIX . "lightshop_blog p";
|
||||
}
|
||||
|
||||
$sql .= " LEFT JOIN " . DB_PREFIX . "lightshop_blog_description pd ON (p.blog_id = pd.blog_id) LEFT JOIN " . DB_PREFIX . "lightshop_blog_tag bt ON (p.blog_id = bt.blog_id) LEFT JOIN " . DB_PREFIX . "lightshop_blog_to_store p2s ON (p.blog_id = p2s.blog_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'";
|
||||
|
||||
if (!empty($data['filter_category_id'])) {
|
||||
if (!empty($data['filter_sub_category'])) {
|
||||
$sql .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "'";
|
||||
} else {
|
||||
$sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (!empty($data['filtertag'])) {
|
||||
$sql .= " AND bt.tag = '" . $this->db->escape($data['filtertag']) . "'";
|
||||
}
|
||||
|
||||
$query = $this->db->query($sql);
|
||||
|
||||
$total = 0;
|
||||
|
||||
if(isset($query->row['total'])){
|
||||
$total = $query->row['total'];
|
||||
}
|
||||
|
||||
return $total;
|
||||
}
|
||||
public function getBlogsTag($data) {
|
||||
|
||||
$sql = "SELECT *,COUNT(i.blog_id) as total ";
|
||||
|
||||
if (!empty($data['filter_category_id'])) {
|
||||
if (!empty($data['filter_sub_category'])) {
|
||||
$sql .= " FROM " . DB_PREFIX . "lightshopcat_blog_path cp LEFT JOIN " . DB_PREFIX . "lightshop_blog_to_category p2c ON (cp.category_id = p2c.category_id)";
|
||||
} else {
|
||||
$sql .= " FROM " . DB_PREFIX . "lightshop_blog_to_category p2c";
|
||||
}
|
||||
|
||||
$sql .= " LEFT JOIN " . DB_PREFIX . "lightshop_blog i ON (p2c.blog_id = i.blog_id)";
|
||||
|
||||
} else {
|
||||
$sql .= " FROM " . DB_PREFIX . "lightshop_blog i";
|
||||
}
|
||||
|
||||
$sql .= " LEFT JOIN " . DB_PREFIX . "lightshop_blog_tag bt ON (i.blog_id = bt.blog_id) LEFT JOIN " . DB_PREFIX . "lightshop_blog_to_store i2s ON (i.blog_id = i2s.blog_id) WHERE bt.language_id = '" . (int)$this->config->get('config_language_id') . "' AND bt.tag IS NOT NULL AND i2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND i.status = '1' ";
|
||||
|
||||
if (!empty($data['filter_category_id'])) {
|
||||
if (!empty($data['filter_sub_category'])) {
|
||||
$sql .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "'";
|
||||
} else {
|
||||
$sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$sql .= " GROUP BY bt.tag ORDER BY total DESC LIMIT ".(int)$data['start'].",".(int)$data['limit']."";
|
||||
|
||||
$query = $this->db->query($sql);
|
||||
|
||||
return $query->rows;
|
||||
}
|
||||
|
||||
public function getBlogTag($blog_id) {
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshop_blog_tag WHERE language_id = '" . (int)$this->config->get('config_language_id') . "' AND blog_id = '" . (int)$blog_id . "'");
|
||||
|
||||
return $query->rows;
|
||||
}
|
||||
|
||||
public function getBlogCat($blog_id) {
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshop_blog_to_category b2c LEFT JOIN " . DB_PREFIX . "lightshopcat_blog_description cbd ON (b2c.category_id = cbd.category_id ) WHERE cbd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND b2c.blog_id= '" . (int)$blog_id . "'");
|
||||
|
||||
return $query->row;
|
||||
}
|
||||
|
||||
public function getTotalReviewsByBlogId($blog_id) {
|
||||
$query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "lightshop_blog_comment c LEFT JOIN " . DB_PREFIX . "lightshop_blog b ON (c.blog_id = b.blog_id) WHERE b.blog_id = '" . (int)$blog_id . "' AND c.status = '1'");
|
||||
|
||||
return $query->row['total'];
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,128 +0,0 @@
|
||||
<?php
|
||||
class ModelExtensionModuleLightshopcatblog extends Model {
|
||||
public function getBlogCategory($blogcategory_id) {
|
||||
$query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "lightshopcat_blog c LEFT JOIN " . DB_PREFIX . "lightshopcat_blog_description cd ON (c.category_id = cd.category_id) LEFT JOIN " . DB_PREFIX . "lightshopcat_blog_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.category_id = '" . (int)$blogcategory_id . "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND c.status = '1'");
|
||||
|
||||
return $query->row;
|
||||
}
|
||||
|
||||
public function getBlogCategories($parent_id = 0) {
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshopcat_blog c LEFT JOIN " . DB_PREFIX . "lightshopcat_blog_description cd ON (c.category_id = cd.category_id) LEFT JOIN " . DB_PREFIX . "lightshopcat_blog_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id = '" . (int)$parent_id . "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND c.status = '1' ORDER BY c.sort_order, LCASE(cd.name)");
|
||||
|
||||
return $query->rows;
|
||||
}
|
||||
|
||||
public function getBlogCategoryFilters($blogcategory_id) {
|
||||
$implode = array();
|
||||
|
||||
$query = $this->db->query("SELECT filter_id FROM " . DB_PREFIX . "lightshopcat_blog_filter WHERE category_id = '" . (int)$blogcategory_id . "'");
|
||||
|
||||
foreach ($query->rows as $result) {
|
||||
$implode[] = (int)$result['filter_id'];
|
||||
}
|
||||
|
||||
$filter_group_data = array();
|
||||
|
||||
if ($implode) {
|
||||
$filter_group_query = $this->db->query("SELECT DISTINCT f.filter_group_id, fgd.name, fg.sort_order FROM " . DB_PREFIX . "filter f LEFT JOIN " . DB_PREFIX . "filter_group fg ON (f.filter_group_id = fg.filter_group_id) LEFT JOIN " . DB_PREFIX . "filter_group_description fgd ON (fg.filter_group_id = fgd.filter_group_id) WHERE f.filter_id IN (" . implode(',', $implode) . ") AND fgd.language_id = '" . (int)$this->config->get('config_language_id') . "' GROUP BY f.filter_group_id ORDER BY fg.sort_order, LCASE(fgd.name)");
|
||||
|
||||
foreach ($filter_group_query->rows as $filter_group) {
|
||||
$filter_data = array();
|
||||
|
||||
$filter_query = $this->db->query("SELECT DISTINCT f.filter_id, fd.name FROM " . DB_PREFIX . "filter f LEFT JOIN " . DB_PREFIX . "filter_description fd ON (f.filter_id = fd.filter_id) WHERE f.filter_id IN (" . implode(',', $implode) . ") AND f.filter_group_id = '" . (int)$filter_group['filter_group_id'] . "' AND fd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY f.sort_order, LCASE(fd.name)");
|
||||
|
||||
foreach ($filter_query->rows as $filter) {
|
||||
$filter_data[] = array(
|
||||
'filter_id' => $filter['filter_id'],
|
||||
'name' => $filter['name']
|
||||
);
|
||||
}
|
||||
|
||||
if ($filter_data) {
|
||||
$filter_group_data[] = array(
|
||||
'filter_group_id' => $filter_group['filter_group_id'],
|
||||
'name' => $filter_group['name'],
|
||||
'filter' => $filter_data
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $filter_group_data;
|
||||
}
|
||||
|
||||
public function getBlogCategoryLayoutId($blogcategory_id) {
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshopcat_blog_to_layout WHERE category_id = '" . (int)$blogcategory_id . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "'");
|
||||
|
||||
if ($query->num_rows) {
|
||||
return $query->row['layout_id'];
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function getBlogsTotalByCategoryId($category_id = 0) {
|
||||
if ($category_id) {
|
||||
$query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "lightshop_blog b LEFT JOIN " . DB_PREFIX . "lightshop_blog_to_store b2s ON (b.blog_id = b2s.blog_id) LEFT JOIN " . DB_PREFIX . "lightshop_blog_to_category b2c ON (b.blog_id = b2c.blog_id) WHERE b2c.category_id = '" . (int)$category_id . "' AND b2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND b.status = '1'");
|
||||
}else{
|
||||
$query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "lightshop_blog WHERE status = '1'");
|
||||
}
|
||||
|
||||
return $query->row['total'];
|
||||
}
|
||||
|
||||
public function getBlogTotalCategoriesByCategoryId($parent_id = 0) {
|
||||
$query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "lightshopcat_blog c LEFT JOIN " . DB_PREFIX . "lightshopcat_blog_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id = '" . (int)$parent_id . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND c.status = '1'");
|
||||
|
||||
return $query->row['total'];
|
||||
}
|
||||
|
||||
public function getPathByBlog($blog_id) {
|
||||
$blog_id = (int)$blog_id;
|
||||
if ($blog_id < 1) return false;
|
||||
|
||||
static $path = null;
|
||||
$query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "lightshop_blog_to_category WHERE blog_id = '" . $blog_id . "' ORDER BY main_category DESC LIMIT 1");
|
||||
|
||||
$path[$blog_id] = $this->getPathByCategory($query->num_rows ? (int)$query->row['category_id'] : 0);
|
||||
|
||||
return $path[$blog_id];
|
||||
}
|
||||
|
||||
private function getPathByCategory($category_id) {
|
||||
$category_id = (int)$category_id;
|
||||
if ($category_id < 1) return false;
|
||||
|
||||
static $path = null;
|
||||
|
||||
$max_level = 10;
|
||||
|
||||
$sql = "SELECT CONCAT_WS('_'";
|
||||
for ($i = $max_level-1; $i >= 0; --$i) {
|
||||
$sql .= ",t$i.category_id";
|
||||
}
|
||||
$sql .= ") AS path FROM " . DB_PREFIX . "lightshopcat_blog t0";
|
||||
for ($i = 1; $i < $max_level; ++$i) {
|
||||
$sql .= " LEFT JOIN " . DB_PREFIX . "lightshopcat_blog t$i ON (t$i.category_id = t" . ($i-1) . ".parent_id)";
|
||||
}
|
||||
$sql .= " WHERE t0.category_id = '" . $category_id . "'";
|
||||
|
||||
$query = $this->db->query($sql);
|
||||
|
||||
$path[$category_id] = $query->num_rows ? $query->row['path'] : false;
|
||||
|
||||
return $path[$category_id];
|
||||
}
|
||||
|
||||
public function isModuleSet() {
|
||||
$isSet = false;
|
||||
$query = $this->db->query("SHOW TABLES LIKE '" . DB_PREFIX . "lightshopcat_blog'");
|
||||
if($query->num_rows){
|
||||
$isSet = true;
|
||||
}
|
||||
|
||||
return $isSet;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
<?php
|
||||
class ModelExtensionModuleLightshopnews extends Model {
|
||||
public function getNews($news_id) {
|
||||
$query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "lightshop_news i LEFT JOIN " . DB_PREFIX . "lightshop_news_description id ON (i.news_id = id.news_id) LEFT JOIN " . DB_PREFIX . "lightshop_news_to_store i2s ON (i.news_id = i2s.news_id) WHERE i.news_id = '" . (int)$news_id . "' AND id.language_id = '" . (int)$this->config->get('config_language_id') . "' AND i2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND i.status = '1'");
|
||||
|
||||
return $query->row;
|
||||
}
|
||||
|
||||
public function getNewss($data) {
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshop_news i LEFT JOIN " . DB_PREFIX . "lightshop_news_description id ON (i.news_id = id.news_id) LEFT JOIN " . DB_PREFIX . "lightshop_news_to_store i2s ON (i.news_id = i2s.news_id) WHERE id.language_id = '" . (int)$this->config->get('config_language_id') . "' AND i2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND i.status = '1' ORDER BY i.date_added DESC LIMIT ".(int)$data['start'].",".(int)$data['limit']."");
|
||||
|
||||
return $query->rows;
|
||||
}
|
||||
public function getNewssTotal() {
|
||||
$query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "lightshop_news WHERE status = '1'");
|
||||
|
||||
return $query->row['total'];
|
||||
}
|
||||
|
||||
public function getNewsLayoutId($news_id) {
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshop_news_to_layout WHERE news_id = '" . (int)$news_id . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "'");
|
||||
|
||||
if ($query->num_rows) {
|
||||
return $query->row['layout_id'];
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
public function isModuleSet() {
|
||||
$isSet = false;
|
||||
$query = $this->db->query("SHOW TABLES LIKE '" . DB_PREFIX . "lightshop_news'");
|
||||
if($query->num_rows){
|
||||
$isSet = true;
|
||||
}
|
||||
|
||||
return $isSet;
|
||||
}
|
||||
public function getProductRelated($news_id) {
|
||||
$product_data = array();
|
||||
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "lightshop_news_related pr LEFT JOIN " . DB_PREFIX . "product p ON (pr.related_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pr.news_id = '" . (int)$news_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'");
|
||||
foreach ($query->rows as $result) {
|
||||
$product_data[$result['related_id']] = $result['related_id'];
|
||||
}
|
||||
return $product_data;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
<?php
|
||||
class ModelExtensionModuleLightshopsubscribe extends Model {
|
||||
|
||||
public function addSubscribe($data) {
|
||||
$this->db->query("INSERT INTO " . DB_PREFIX . "subscribe SET email = '" . $this->db->escape($data['email']) . "', status = '" . (int) $data['status'] . "'");
|
||||
}
|
||||
|
||||
public function editSubscribe($data) {
|
||||
$this->db->query("UPDATE " . DB_PREFIX . "subscribe SET status = '" . (int) $data['status'] . "' WHERE email = '" . $this->db->escape($data['email']) . "'");
|
||||
}
|
||||
|
||||
public function getSubscribers() {
|
||||
$query = $this->db->query("SELECT email FROM " . DB_PREFIX . "subscribe WHERE status = '0'");
|
||||
|
||||
return $query->rows;
|
||||
}
|
||||
|
||||
public function checkEmail($email) {
|
||||
$query = $this->db->query("SELECT email FROM " . DB_PREFIX . "subscribe WHERE email ='" . $this->db->escape($email) . "'");
|
||||
|
||||
return isset($query->row['email']) ? $query->row['email'] : 0;
|
||||
}
|
||||
|
||||
public function getAuthDescription($language_id) {
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "subscribe_auth_description WHERE language_id='" .(int)$language_id . "'");
|
||||
|
||||
return isset($query->row['subscribe_authorization']) ? $query->row['subscribe_authorization'] : '';
|
||||
}
|
||||
|
||||
public function getEmailDescription($language_id) {
|
||||
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "subscribe_email_description WHERE language_id='" . (int)$language_id . "'");
|
||||
|
||||
return isset($query->row['subscribe_descriptions']) ? $query->row['subscribe_descriptions'] : '';
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,52 +0,0 @@
|
||||
<?php
|
||||
class ModelExtensionTotalLightshopsets extends Model {
|
||||
|
||||
|
||||
public function getTotal($total) {
|
||||
$this->load->language('extension/total/lightshopsets');
|
||||
|
||||
$this->load->model('extension/module/lightshop');
|
||||
|
||||
$setids = array();
|
||||
if (isset($this->session->data['lightshopsetid']) && $this->session->data['lightshopsetid']) {
|
||||
$setids = $this->session->data['lightshopsetid'];
|
||||
}
|
||||
|
||||
$cartProducts = array();
|
||||
|
||||
foreach ($this->cart->getProducts() as $product) {
|
||||
$cartProducts[$product['product_id']]['quantity'] = $product['quantity'];
|
||||
$cartProducts[$product['product_id']]['price'] = $product['price'];
|
||||
}
|
||||
|
||||
|
||||
|
||||
foreach ($setids as $setid) {
|
||||
|
||||
$lightshopsets = $this->model_extension_module_lightshop->getSetDiscount($total,$setid,$cartProducts);
|
||||
|
||||
if (!empty($this->session->data['vouchers'])) {
|
||||
foreach ($this->session->data['vouchers'] as $voucher) {
|
||||
$lightshopsets += $voucher['amount'];
|
||||
}
|
||||
}
|
||||
|
||||
if ($lightshopsets['discount']) {
|
||||
|
||||
$setInfo = $this->model_extension_module_lightshop->getSetInfo($setid);
|
||||
|
||||
$total['totals'][] = array(
|
||||
'code' => 'lightshopsets',
|
||||
'title' => $this->language->get('text_lightshopsets').' - '.$setInfo['title'],
|
||||
'value' => -$lightshopsets['discount'],
|
||||
'sort_order' => $this->config->get('total_lightshopsets_sort_order')
|
||||
);
|
||||
|
||||
$total['total'] -= $lightshopsets['discount'];
|
||||
$cartProducts = $lightshopsets['cartproducts'];
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,998 +0,0 @@
|
||||
/*!
|
||||
* Font Awesome Free 5.15.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
*/
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
||||
typeof define === 'function' && define.amd ? define(['exports'], factory) :
|
||||
(factory((global['fontawesome-free-conflict-detection'] = {})));
|
||||
}(this, (function (exports) { 'use strict';
|
||||
|
||||
function _typeof(obj) {
|
||||
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
|
||||
_typeof = function (obj) {
|
||||
return typeof obj;
|
||||
};
|
||||
} else {
|
||||
_typeof = function (obj) {
|
||||
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
||||
};
|
||||
}
|
||||
|
||||
return _typeof(obj);
|
||||
}
|
||||
|
||||
function _defineProperty(obj, key, value) {
|
||||
if (key in obj) {
|
||||
Object.defineProperty(obj, key, {
|
||||
value: value,
|
||||
enumerable: true,
|
||||
configurable: true,
|
||||
writable: true
|
||||
});
|
||||
} else {
|
||||
obj[key] = value;
|
||||
}
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
function _objectSpread(target) {
|
||||
for (var i = 1; i < arguments.length; i++) {
|
||||
var source = arguments[i] != null ? arguments[i] : {};
|
||||
var ownKeys = Object.keys(source);
|
||||
|
||||
if (typeof Object.getOwnPropertySymbols === 'function') {
|
||||
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
|
||||
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
||||
}));
|
||||
}
|
||||
|
||||
ownKeys.forEach(function (key) {
|
||||
_defineProperty(target, key, source[key]);
|
||||
});
|
||||
}
|
||||
|
||||
return target;
|
||||
}
|
||||
|
||||
var _WINDOW = {};
|
||||
var _DOCUMENT = {};
|
||||
|
||||
try {
|
||||
if (typeof window !== 'undefined') _WINDOW = window;
|
||||
if (typeof document !== 'undefined') _DOCUMENT = document;
|
||||
} catch (e) {}
|
||||
|
||||
var _ref = _WINDOW.navigator || {},
|
||||
_ref$userAgent = _ref.userAgent,
|
||||
userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;
|
||||
|
||||
var WINDOW = _WINDOW;
|
||||
var DOCUMENT = _DOCUMENT;
|
||||
var IS_BROWSER = !!WINDOW.document;
|
||||
var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';
|
||||
var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');
|
||||
|
||||
var functions = [];
|
||||
|
||||
var listener = function listener() {
|
||||
DOCUMENT.removeEventListener('DOMContentLoaded', listener);
|
||||
loaded = 1;
|
||||
functions.map(function (fn) {
|
||||
return fn();
|
||||
});
|
||||
};
|
||||
|
||||
var loaded = false;
|
||||
|
||||
if (IS_DOM) {
|
||||
loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);
|
||||
if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);
|
||||
}
|
||||
|
||||
function domready (fn) {
|
||||
if (!IS_DOM) return;
|
||||
loaded ? setTimeout(fn, 0) : functions.push(fn);
|
||||
}
|
||||
|
||||
function report (_ref) {
|
||||
var nodesTested = _ref.nodesTested,
|
||||
nodesFound = _ref.nodesFound;
|
||||
var timedOutTests = {};
|
||||
|
||||
for (var key in nodesFound) {
|
||||
if (!(nodesTested.conflict[key] || nodesTested.noConflict[key])) {
|
||||
timedOutTests[key] = nodesFound[key];
|
||||
}
|
||||
}
|
||||
|
||||
var conflictsCount = Object.keys(nodesTested.conflict).length;
|
||||
|
||||
if (conflictsCount > 0) {
|
||||
console.info("%cConflict".concat(conflictsCount > 1 ? 's' : '', " found:"), 'color: darkred; font-size: large');
|
||||
var data = {};
|
||||
|
||||
for (var _key in nodesTested.conflict) {
|
||||
var item = nodesTested.conflict[_key];
|
||||
data[_key] = {
|
||||
'tagName': item.tagName,
|
||||
'src/href': item.src || item.href || 'n/a',
|
||||
'innerText excerpt': item.innerText && item.innerText !== '' ? item.innerText.slice(0, 200) + '...' : '(empty)'
|
||||
};
|
||||
}
|
||||
|
||||
console.table(data);
|
||||
}
|
||||
|
||||
var noConflictsCount = Object.keys(nodesTested.noConflict).length;
|
||||
|
||||
if (noConflictsCount > 0) {
|
||||
console.info("%cNo conflict".concat(noConflictsCount > 1 ? 's' : '', " found with ").concat(noConflictsCount == 1 ? 'this' : 'these', ":"), 'color: green; font-size: large');
|
||||
var _data = {};
|
||||
|
||||
for (var _key2 in nodesTested.noConflict) {
|
||||
var _item = nodesTested.noConflict[_key2];
|
||||
_data[_key2] = {
|
||||
'tagName': _item.tagName,
|
||||
'src/href': _item.src || _item.href || 'n/a',
|
||||
'innerText excerpt': _item.innerText && _item.innerText !== '' ? _item.innerText.slice(0, 200) + '...' : '(empty)'
|
||||
};
|
||||
}
|
||||
|
||||
console.table(_data);
|
||||
}
|
||||
|
||||
var timeOutCount = Object.keys(timedOutTests).length;
|
||||
|
||||
if (timeOutCount > 0) {
|
||||
console.info("%cLeftovers--we timed out before collecting test results for ".concat(timeOutCount == 1 ? 'this' : 'these', ":"), 'color: blue; font-size: large');
|
||||
var _data2 = {};
|
||||
|
||||
for (var _key3 in timedOutTests) {
|
||||
var _item2 = timedOutTests[_key3];
|
||||
_data2[_key3] = {
|
||||
'tagName': _item2.tagName,
|
||||
'src/href': _item2.src || _item2.href || 'n/a',
|
||||
'innerText excerpt': _item2.innerText && _item2.innerText !== '' ? _item2.innerText.slice(0, 200) + '...' : '(empty)'
|
||||
};
|
||||
}
|
||||
|
||||
console.table(_data2);
|
||||
}
|
||||
}
|
||||
|
||||
var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
||||
|
||||
function createCommonjsModule(fn, module) {
|
||||
return module = { exports: {} }, fn(module, module.exports), module.exports;
|
||||
}
|
||||
|
||||
var md5 = createCommonjsModule(function (module) {
|
||||
|
||||
(function ($) {
|
||||
/**
|
||||
* Add integers, wrapping at 2^32.
|
||||
* This uses 16-bit operations internally to work around bugs in interpreters.
|
||||
*
|
||||
* @param {number} x First integer
|
||||
* @param {number} y Second integer
|
||||
* @returns {number} Sum
|
||||
*/
|
||||
|
||||
function safeAdd(x, y) {
|
||||
var lsw = (x & 0xffff) + (y & 0xffff);
|
||||
var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
|
||||
return msw << 16 | lsw & 0xffff;
|
||||
}
|
||||
/**
|
||||
* Bitwise rotate a 32-bit number to the left.
|
||||
*
|
||||
* @param {number} num 32-bit number
|
||||
* @param {number} cnt Rotation count
|
||||
* @returns {number} Rotated number
|
||||
*/
|
||||
|
||||
|
||||
function bitRotateLeft(num, cnt) {
|
||||
return num << cnt | num >>> 32 - cnt;
|
||||
}
|
||||
/**
|
||||
* Basic operation the algorithm uses.
|
||||
*
|
||||
* @param {number} q q
|
||||
* @param {number} a a
|
||||
* @param {number} b b
|
||||
* @param {number} x x
|
||||
* @param {number} s s
|
||||
* @param {number} t t
|
||||
* @returns {number} Result
|
||||
*/
|
||||
|
||||
|
||||
function md5cmn(q, a, b, x, s, t) {
|
||||
return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);
|
||||
}
|
||||
/**
|
||||
* Basic operation the algorithm uses.
|
||||
*
|
||||
* @param {number} a a
|
||||
* @param {number} b b
|
||||
* @param {number} c c
|
||||
* @param {number} d d
|
||||
* @param {number} x x
|
||||
* @param {number} s s
|
||||
* @param {number} t t
|
||||
* @returns {number} Result
|
||||
*/
|
||||
|
||||
|
||||
function md5ff(a, b, c, d, x, s, t) {
|
||||
return md5cmn(b & c | ~b & d, a, b, x, s, t);
|
||||
}
|
||||
/**
|
||||
* Basic operation the algorithm uses.
|
||||
*
|
||||
* @param {number} a a
|
||||
* @param {number} b b
|
||||
* @param {number} c c
|
||||
* @param {number} d d
|
||||
* @param {number} x x
|
||||
* @param {number} s s
|
||||
* @param {number} t t
|
||||
* @returns {number} Result
|
||||
*/
|
||||
|
||||
|
||||
function md5gg(a, b, c, d, x, s, t) {
|
||||
return md5cmn(b & d | c & ~d, a, b, x, s, t);
|
||||
}
|
||||
/**
|
||||
* Basic operation the algorithm uses.
|
||||
*
|
||||
* @param {number} a a
|
||||
* @param {number} b b
|
||||
* @param {number} c c
|
||||
* @param {number} d d
|
||||
* @param {number} x x
|
||||
* @param {number} s s
|
||||
* @param {number} t t
|
||||
* @returns {number} Result
|
||||
*/
|
||||
|
||||
|
||||
function md5hh(a, b, c, d, x, s, t) {
|
||||
return md5cmn(b ^ c ^ d, a, b, x, s, t);
|
||||
}
|
||||
/**
|
||||
* Basic operation the algorithm uses.
|
||||
*
|
||||
* @param {number} a a
|
||||
* @param {number} b b
|
||||
* @param {number} c c
|
||||
* @param {number} d d
|
||||
* @param {number} x x
|
||||
* @param {number} s s
|
||||
* @param {number} t t
|
||||
* @returns {number} Result
|
||||
*/
|
||||
|
||||
|
||||
function md5ii(a, b, c, d, x, s, t) {
|
||||
return md5cmn(c ^ (b | ~d), a, b, x, s, t);
|
||||
}
|
||||
/**
|
||||
* Calculate the MD5 of an array of little-endian words, and a bit length.
|
||||
*
|
||||
* @param {Array} x Array of little-endian words
|
||||
* @param {number} len Bit length
|
||||
* @returns {Array<number>} MD5 Array
|
||||
*/
|
||||
|
||||
|
||||
function binlMD5(x, len) {
|
||||
/* append padding */
|
||||
x[len >> 5] |= 0x80 << len % 32;
|
||||
x[(len + 64 >>> 9 << 4) + 14] = len;
|
||||
var i;
|
||||
var olda;
|
||||
var oldb;
|
||||
var oldc;
|
||||
var oldd;
|
||||
var a = 1732584193;
|
||||
var b = -271733879;
|
||||
var c = -1732584194;
|
||||
var d = 271733878;
|
||||
|
||||
for (i = 0; i < x.length; i += 16) {
|
||||
olda = a;
|
||||
oldb = b;
|
||||
oldc = c;
|
||||
oldd = d;
|
||||
a = md5ff(a, b, c, d, x[i], 7, -680876936);
|
||||
d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);
|
||||
c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);
|
||||
b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);
|
||||
a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);
|
||||
d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);
|
||||
c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);
|
||||
b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);
|
||||
a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);
|
||||
d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);
|
||||
c = md5ff(c, d, a, b, x[i + 10], 17, -42063);
|
||||
b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);
|
||||
a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);
|
||||
d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);
|
||||
c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);
|
||||
b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);
|
||||
a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);
|
||||
d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);
|
||||
c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);
|
||||
b = md5gg(b, c, d, a, x[i], 20, -373897302);
|
||||
a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);
|
||||
d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);
|
||||
c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);
|
||||
b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);
|
||||
a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);
|
||||
d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);
|
||||
c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);
|
||||
b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);
|
||||
a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);
|
||||
d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);
|
||||
c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);
|
||||
b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);
|
||||
a = md5hh(a, b, c, d, x[i + 5], 4, -378558);
|
||||
d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);
|
||||
c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);
|
||||
b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);
|
||||
a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);
|
||||
d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);
|
||||
c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);
|
||||
b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);
|
||||
a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);
|
||||
d = md5hh(d, a, b, c, x[i], 11, -358537222);
|
||||
c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);
|
||||
b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);
|
||||
a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);
|
||||
d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);
|
||||
c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);
|
||||
b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);
|
||||
a = md5ii(a, b, c, d, x[i], 6, -198630844);
|
||||
d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);
|
||||
c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);
|
||||
b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);
|
||||
a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);
|
||||
d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);
|
||||
c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);
|
||||
b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);
|
||||
a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);
|
||||
d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);
|
||||
c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);
|
||||
b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);
|
||||
a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);
|
||||
d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);
|
||||
c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);
|
||||
b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);
|
||||
a = safeAdd(a, olda);
|
||||
b = safeAdd(b, oldb);
|
||||
c = safeAdd(c, oldc);
|
||||
d = safeAdd(d, oldd);
|
||||
}
|
||||
|
||||
return [a, b, c, d];
|
||||
}
|
||||
/**
|
||||
* Convert an array of little-endian words to a string
|
||||
*
|
||||
* @param {Array<number>} input MD5 Array
|
||||
* @returns {string} MD5 string
|
||||
*/
|
||||
|
||||
|
||||
function binl2rstr(input) {
|
||||
var i;
|
||||
var output = '';
|
||||
var length32 = input.length * 32;
|
||||
|
||||
for (i = 0; i < length32; i += 8) {
|
||||
output += String.fromCharCode(input[i >> 5] >>> i % 32 & 0xff);
|
||||
}
|
||||
|
||||
return output;
|
||||
}
|
||||
/**
|
||||
* Convert a raw string to an array of little-endian words
|
||||
* Characters >255 have their high-byte silently ignored.
|
||||
*
|
||||
* @param {string} input Raw input string
|
||||
* @returns {Array<number>} Array of little-endian words
|
||||
*/
|
||||
|
||||
|
||||
function rstr2binl(input) {
|
||||
var i;
|
||||
var output = [];
|
||||
output[(input.length >> 2) - 1] = undefined;
|
||||
|
||||
for (i = 0; i < output.length; i += 1) {
|
||||
output[i] = 0;
|
||||
}
|
||||
|
||||
var length8 = input.length * 8;
|
||||
|
||||
for (i = 0; i < length8; i += 8) {
|
||||
output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << i % 32;
|
||||
}
|
||||
|
||||
return output;
|
||||
}
|
||||
/**
|
||||
* Calculate the MD5 of a raw string
|
||||
*
|
||||
* @param {string} s Input string
|
||||
* @returns {string} Raw MD5 string
|
||||
*/
|
||||
|
||||
|
||||
function rstrMD5(s) {
|
||||
return binl2rstr(binlMD5(rstr2binl(s), s.length * 8));
|
||||
}
|
||||
/**
|
||||
* Calculates the HMAC-MD5 of a key and some data (raw strings)
|
||||
*
|
||||
* @param {string} key HMAC key
|
||||
* @param {string} data Raw input string
|
||||
* @returns {string} Raw MD5 string
|
||||
*/
|
||||
|
||||
|
||||
function rstrHMACMD5(key, data) {
|
||||
var i;
|
||||
var bkey = rstr2binl(key);
|
||||
var ipad = [];
|
||||
var opad = [];
|
||||
var hash;
|
||||
ipad[15] = opad[15] = undefined;
|
||||
|
||||
if (bkey.length > 16) {
|
||||
bkey = binlMD5(bkey, key.length * 8);
|
||||
}
|
||||
|
||||
for (i = 0; i < 16; i += 1) {
|
||||
ipad[i] = bkey[i] ^ 0x36363636;
|
||||
opad[i] = bkey[i] ^ 0x5c5c5c5c;
|
||||
}
|
||||
|
||||
hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
|
||||
return binl2rstr(binlMD5(opad.concat(hash), 512 + 128));
|
||||
}
|
||||
/**
|
||||
* Convert a raw string to a hex string
|
||||
*
|
||||
* @param {string} input Raw input string
|
||||
* @returns {string} Hex encoded string
|
||||
*/
|
||||
|
||||
|
||||
function rstr2hex(input) {
|
||||
var hexTab = '0123456789abcdef';
|
||||
var output = '';
|
||||
var x;
|
||||
var i;
|
||||
|
||||
for (i = 0; i < input.length; i += 1) {
|
||||
x = input.charCodeAt(i);
|
||||
output += hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f);
|
||||
}
|
||||
|
||||
return output;
|
||||
}
|
||||
/**
|
||||
* Encode a string as UTF-8
|
||||
*
|
||||
* @param {string} input Input string
|
||||
* @returns {string} UTF8 string
|
||||
*/
|
||||
|
||||
|
||||
function str2rstrUTF8(input) {
|
||||
return unescape(encodeURIComponent(input));
|
||||
}
|
||||
/**
|
||||
* Encodes input string as raw MD5 string
|
||||
*
|
||||
* @param {string} s Input string
|
||||
* @returns {string} Raw MD5 string
|
||||
*/
|
||||
|
||||
|
||||
function rawMD5(s) {
|
||||
return rstrMD5(str2rstrUTF8(s));
|
||||
}
|
||||
/**
|
||||
* Encodes input string as Hex encoded string
|
||||
*
|
||||
* @param {string} s Input string
|
||||
* @returns {string} Hex encoded string
|
||||
*/
|
||||
|
||||
|
||||
function hexMD5(s) {
|
||||
return rstr2hex(rawMD5(s));
|
||||
}
|
||||
/**
|
||||
* Calculates the raw HMAC-MD5 for the given key and data
|
||||
*
|
||||
* @param {string} k HMAC key
|
||||
* @param {string} d Input string
|
||||
* @returns {string} Raw MD5 string
|
||||
*/
|
||||
|
||||
|
||||
function rawHMACMD5(k, d) {
|
||||
return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d));
|
||||
}
|
||||
/**
|
||||
* Calculates the Hex encoded HMAC-MD5 for the given key and data
|
||||
*
|
||||
* @param {string} k HMAC key
|
||||
* @param {string} d Input string
|
||||
* @returns {string} Raw MD5 string
|
||||
*/
|
||||
|
||||
|
||||
function hexHMACMD5(k, d) {
|
||||
return rstr2hex(rawHMACMD5(k, d));
|
||||
}
|
||||
/**
|
||||
* Calculates MD5 value for a given string.
|
||||
* If a key is provided, calculates the HMAC-MD5 value.
|
||||
* Returns a Hex encoded string unless the raw argument is given.
|
||||
*
|
||||
* @param {string} string Input string
|
||||
* @param {string} [key] HMAC key
|
||||
* @param {boolean} raw Raw oytput switch
|
||||
* @returns {string} MD5 output
|
||||
*/
|
||||
|
||||
|
||||
function md5(string, key, raw) {
|
||||
if (!key) {
|
||||
if (!raw) {
|
||||
return hexMD5(string);
|
||||
}
|
||||
|
||||
return rawMD5(string);
|
||||
}
|
||||
|
||||
if (!raw) {
|
||||
return hexHMACMD5(key, string);
|
||||
}
|
||||
|
||||
return rawHMACMD5(key, string);
|
||||
}
|
||||
|
||||
if (module.exports) {
|
||||
module.exports = md5;
|
||||
} else {
|
||||
$.md5 = md5;
|
||||
}
|
||||
})(commonjsGlobal);
|
||||
});
|
||||
|
||||
function md5ForNode(node) {
|
||||
if (null === node || 'object' !== _typeof(node)) return undefined;
|
||||
|
||||
if (node.src) {
|
||||
return md5(node.src);
|
||||
} else if (node.href) {
|
||||
return md5(node.href);
|
||||
} else if (node.innerText && '' !== node.innerText) {
|
||||
// eslint-disable-line yoda
|
||||
return md5(node.innerText);
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
var diagScriptId = 'fa-kits-diag';
|
||||
var nodeUnderTestId = 'fa-kits-node-under-test';
|
||||
var md5Attr = 'data-md5';
|
||||
var detectionIgnoreAttr = 'data-fa-detection-ignore';
|
||||
var timeoutAttr = 'data-fa-detection-timeout';
|
||||
var resultsCollectionMaxWaitAttr = 'data-fa-detection-results-collection-max-wait';
|
||||
|
||||
var silenceErrors = function silenceErrors(e) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
};
|
||||
|
||||
function pollUntil(_ref) {
|
||||
var _ref$fn = _ref.fn,
|
||||
fn = _ref$fn === void 0 ? function () {
|
||||
return true;
|
||||
} : _ref$fn,
|
||||
_ref$initialDuration = _ref.initialDuration,
|
||||
initialDuration = _ref$initialDuration === void 0 ? 1 : _ref$initialDuration,
|
||||
_ref$maxDuration = _ref.maxDuration,
|
||||
maxDuration = _ref$maxDuration === void 0 ? WINDOW.FontAwesomeDetection.timeout : _ref$maxDuration,
|
||||
_ref$showProgress = _ref.showProgress,
|
||||
showProgress = _ref$showProgress === void 0 ? false : _ref$showProgress,
|
||||
progressIndicator = _ref.progressIndicator;
|
||||
return new Promise(function (resolve, reject) {
|
||||
// eslint-disable-line compat/compat
|
||||
function poll(duration, cumulativeDuration) {
|
||||
setTimeout(function () {
|
||||
var result = fn();
|
||||
|
||||
if (showProgress) {
|
||||
console.info(progressIndicator);
|
||||
}
|
||||
|
||||
if (!!result) {
|
||||
// eslint-disable-line no-extra-boolean-cast
|
||||
resolve(result);
|
||||
} else {
|
||||
var nextDuration = 250;
|
||||
var nextCumulativeDuration = nextDuration + cumulativeDuration;
|
||||
|
||||
if (nextCumulativeDuration <= maxDuration) {
|
||||
poll(nextDuration, nextCumulativeDuration);
|
||||
} else {
|
||||
reject('timeout'); // eslint-disable-line prefer-promise-reject-errors
|
||||
}
|
||||
}
|
||||
}, duration);
|
||||
}
|
||||
|
||||
poll(initialDuration, 0);
|
||||
});
|
||||
}
|
||||
|
||||
function detectWebfontConflicts() {
|
||||
var linkTags = Array.from(DOCUMENT.getElementsByTagName('link')).filter(function (t) {
|
||||
return !t.hasAttribute(detectionIgnoreAttr);
|
||||
});
|
||||
var styleTags = Array.from(DOCUMENT.getElementsByTagName('style')).filter(function (t) {
|
||||
if (t.hasAttribute(detectionIgnoreAttr)) {
|
||||
return false;
|
||||
} // If the browser has loaded the FA5 CSS, let's not test that <style> element.
|
||||
// Its enough that we'll be testing for traces of the corresponding JS being loaded, and testing
|
||||
// this <style> would only produce a false negative anyway.
|
||||
|
||||
|
||||
if (WINDOW.FontAwesomeConfig && t.innerText.match(new RegExp("svg:not\\(:root\\)\\.".concat(WINDOW.FontAwesomeConfig.replacementClass)))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
});
|
||||
|
||||
function runDiag(scriptOrLinkTag, md5) {
|
||||
var diagFrame = DOCUMENT.createElement('iframe'); // Using "visibility: hidden; position: absolute" instead of "display: none;" because
|
||||
// Firefox will not return the expected results for getComputedStyle if our iframe has display: none.
|
||||
|
||||
diagFrame.setAttribute('style', 'visibility: hidden; position: absolute; height: 0; width: 0;');
|
||||
var testIconId = 'fa-test-icon-' + md5;
|
||||
var iTag = DOCUMENT.createElement('i');
|
||||
iTag.setAttribute('class', 'fa fa-coffee');
|
||||
iTag.setAttribute('id', testIconId);
|
||||
var diagScript = DOCUMENT.createElement('script');
|
||||
diagScript.setAttribute('id', diagScriptId); // WARNING: this function will be toString()'d and assigned to innerText of the diag script
|
||||
// element that we'll be putting into a diagnostic iframe.
|
||||
// That means that this code won't compile until after the outer script has run and injected
|
||||
// this code into the iframe. There are some compile time errors that might occur there.
|
||||
// For example, using single line (double-slash) comments like this one inside that function
|
||||
// will probably cause it to choke. Chrome will show an error like this:
|
||||
// Uncaught SyntaxError: Unexpected end of input
|
||||
|
||||
var diagScriptFun = function diagScriptFun(nodeUnderTestId, testIconId, md5, parentOrigin) {
|
||||
parent.FontAwesomeDetection.__pollUntil({
|
||||
fn: function fn() {
|
||||
var iEl = document.getElementById(testIconId);
|
||||
var computedStyle = window.getComputedStyle(iEl);
|
||||
var fontFamily = computedStyle.getPropertyValue('font-family');
|
||||
|
||||
if (!!fontFamily.match(/FontAwesome/) || !!fontFamily.match(/Font Awesome 5/)) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}).then(function () {
|
||||
var node = document.getElementById(nodeUnderTestId);
|
||||
parent.postMessage({
|
||||
type: 'fontawesome-conflict',
|
||||
technology: 'webfont',
|
||||
href: node.href,
|
||||
innerText: node.innerText,
|
||||
tagName: node.tagName,
|
||||
md5: md5
|
||||
}, parentOrigin);
|
||||
}).catch(function (e) {
|
||||
var node = document.getElementById(nodeUnderTestId);
|
||||
|
||||
if (e === 'timeout') {
|
||||
parent.postMessage({
|
||||
type: 'no-conflict',
|
||||
technology: 'webfont',
|
||||
href: node.src,
|
||||
innerText: node.innerText,
|
||||
tagName: node.tagName,
|
||||
md5: md5
|
||||
}, parentOrigin);
|
||||
} else {
|
||||
console.error(e);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
var parentOrigin = WINDOW.location.origin === 'file://' ? '*' : WINDOW.location.origin;
|
||||
diagScript.innerText = "(".concat(diagScriptFun.toString(), ")('").concat(nodeUnderTestId, "', '").concat(testIconId || 'foo', "', '").concat(md5, "', '").concat(parentOrigin, "');");
|
||||
|
||||
diagFrame.onload = function () {
|
||||
diagFrame.contentWindow.addEventListener('error', silenceErrors, true);
|
||||
diagFrame.contentDocument.head.appendChild(diagScript);
|
||||
diagFrame.contentDocument.head.appendChild(scriptOrLinkTag);
|
||||
diagFrame.contentDocument.body.appendChild(iTag);
|
||||
};
|
||||
|
||||
domready(function () {
|
||||
return DOCUMENT.body.appendChild(diagFrame);
|
||||
});
|
||||
}
|
||||
|
||||
var cssByMD5 = {};
|
||||
|
||||
for (var i = 0; i < linkTags.length; i++) {
|
||||
var linkUnderTest = DOCUMENT.createElement('link');
|
||||
linkUnderTest.setAttribute('id', nodeUnderTestId);
|
||||
linkUnderTest.setAttribute('href', linkTags[i].href);
|
||||
linkUnderTest.setAttribute('rel', linkTags[i].rel);
|
||||
var md5ForLink = md5ForNode(linkTags[i]);
|
||||
linkUnderTest.setAttribute(md5Attr, md5ForLink);
|
||||
cssByMD5[md5ForLink] = linkTags[i];
|
||||
runDiag(linkUnderTest, md5ForLink);
|
||||
}
|
||||
|
||||
for (var _i = 0; _i < styleTags.length; _i++) {
|
||||
var styleUnderTest = DOCUMENT.createElement('style');
|
||||
styleUnderTest.setAttribute('id', nodeUnderTestId);
|
||||
var md5ForStyle = md5ForNode(styleTags[_i]);
|
||||
styleUnderTest.setAttribute(md5Attr, md5ForStyle);
|
||||
styleUnderTest.innerText = styleTags[_i].innerText;
|
||||
cssByMD5[md5ForStyle] = styleTags[_i];
|
||||
runDiag(styleUnderTest, md5ForStyle);
|
||||
}
|
||||
|
||||
return cssByMD5;
|
||||
}
|
||||
|
||||
function detectSvgConflicts(currentScript) {
|
||||
var scripts = Array.from(DOCUMENT.scripts).filter(function (t) {
|
||||
return !t.hasAttribute(detectionIgnoreAttr) && t !== currentScript;
|
||||
});
|
||||
var scriptsByMD5 = {};
|
||||
|
||||
var _loop = function _loop(scriptIdx) {
|
||||
var diagFrame = DOCUMENT.createElement('iframe');
|
||||
diagFrame.setAttribute('style', 'display:none;');
|
||||
var scriptUnderTest = DOCUMENT.createElement('script');
|
||||
scriptUnderTest.setAttribute('id', nodeUnderTestId);
|
||||
var md5ForScript = md5ForNode(scripts[scriptIdx]);
|
||||
scriptUnderTest.setAttribute(md5Attr, md5ForScript);
|
||||
scriptsByMD5[md5ForScript] = scripts[scriptIdx];
|
||||
|
||||
if (scripts[scriptIdx].src !== '') {
|
||||
scriptUnderTest.src = scripts[scriptIdx].src;
|
||||
}
|
||||
|
||||
if (scripts[scriptIdx].innerText !== '') {
|
||||
scriptUnderTest.innerText = scripts[scriptIdx].innerText;
|
||||
}
|
||||
|
||||
scriptUnderTest.async = true;
|
||||
var diagScript = DOCUMENT.createElement('script');
|
||||
diagScript.setAttribute('id', diagScriptId);
|
||||
var parentOrigin = WINDOW.location.origin === 'file://' ? '*' : WINDOW.location.origin;
|
||||
|
||||
var diagScriptFun = function diagScriptFun(nodeUnderTestId, md5, parentOrigin) {
|
||||
parent.FontAwesomeDetection.__pollUntil({
|
||||
fn: function fn() {
|
||||
return !!window.FontAwesomeConfig || !!window.FontAwesomeKitConfig;
|
||||
}
|
||||
}).then(function () {
|
||||
var scriptNode = document.getElementById(nodeUnderTestId);
|
||||
parent.postMessage({
|
||||
type: 'fontawesome-conflict',
|
||||
technology: 'js',
|
||||
src: scriptNode.src,
|
||||
innerText: scriptNode.innerText,
|
||||
tagName: scriptNode.tagName,
|
||||
md5: md5
|
||||
}, parentOrigin);
|
||||
}).catch(function (e) {
|
||||
var scriptNode = document.getElementById(nodeUnderTestId);
|
||||
|
||||
if (e === 'timeout') {
|
||||
parent.postMessage({
|
||||
type: 'no-conflict',
|
||||
src: scriptNode.src,
|
||||
innerText: scriptNode.innerText,
|
||||
tagName: scriptNode.tagName,
|
||||
md5: md5
|
||||
}, parentOrigin);
|
||||
} else {
|
||||
console.error(e);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
diagScript.innerText = "(".concat(diagScriptFun.toString(), ")('").concat(nodeUnderTestId, "', '").concat(md5ForScript, "', '").concat(parentOrigin, "');");
|
||||
|
||||
diagFrame.onload = function () {
|
||||
diagFrame.contentWindow.addEventListener('error', silenceErrors, true);
|
||||
diagFrame.contentDocument.head.appendChild(diagScript);
|
||||
diagFrame.contentDocument.head.appendChild(scriptUnderTest);
|
||||
};
|
||||
|
||||
domready(function () {
|
||||
return DOCUMENT.body.appendChild(diagFrame);
|
||||
});
|
||||
};
|
||||
|
||||
for (var scriptIdx = 0; scriptIdx < scripts.length; scriptIdx++) {
|
||||
_loop(scriptIdx);
|
||||
}
|
||||
|
||||
return scriptsByMD5;
|
||||
}
|
||||
|
||||
function setDoneResults(_ref2) {
|
||||
var nodesTested = _ref2.nodesTested,
|
||||
nodesFound = _ref2.nodesFound;
|
||||
WINDOW.FontAwesomeDetection = WINDOW.FontAwesomeDetection || {};
|
||||
WINDOW.FontAwesomeDetection.nodesTested = nodesTested;
|
||||
WINDOW.FontAwesomeDetection.nodesFound = nodesFound;
|
||||
WINDOW.FontAwesomeDetection.detectionDone = true;
|
||||
}
|
||||
|
||||
function conflictDetection() {
|
||||
var report$$1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {};
|
||||
var nodesTested = {
|
||||
conflict: {},
|
||||
noConflict: {}
|
||||
};
|
||||
|
||||
WINDOW.onmessage = function (e) {
|
||||
if (WINDOW.location.origin === 'file://' || e.origin === WINDOW.location.origin) {
|
||||
if (e && e.data) {
|
||||
if (e.data.type === 'fontawesome-conflict') {
|
||||
nodesTested.conflict[e.data.md5] = e.data;
|
||||
} else if (e.data.type === 'no-conflict') {
|
||||
nodesTested.noConflict[e.data.md5] = e.data;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var scriptsToTest = detectSvgConflicts(DOCUMENT.currentScript);
|
||||
var cssToTest = detectWebfontConflicts();
|
||||
|
||||
var nodesFound = _objectSpread({}, scriptsToTest, cssToTest);
|
||||
|
||||
var testCount = Object.keys(scriptsToTest).length + Object.keys(cssToTest).length; // The resultsCollectionMaxWait allows for the time between when the tests running under
|
||||
// child iframes call postMessage with their results, and when the parent window
|
||||
// receives and handles those events with window.onmessage.
|
||||
// Making it configurable allows us to test the scenario where this timeout is exceeded.
|
||||
// Naming it something very different from "timeout" is to help avoid the potential ambiguity between
|
||||
// these two timeout-related settings.
|
||||
|
||||
var masterTimeout = WINDOW.FontAwesomeDetection.timeout + WINDOW.FontAwesomeDetection.resultsCollectionMaxWait;
|
||||
console.group('Font Awesome Detector');
|
||||
|
||||
if (testCount === 0) {
|
||||
console.info('%cAll Good!', 'color: green; font-size: large');
|
||||
console.info('We didn\'t find anything that needs testing for conflicts. Ergo, no conflicts.');
|
||||
} else {
|
||||
console.info("Testing ".concat(testCount, " possible conflicts."));
|
||||
console.info("We'll wait about ".concat(Math.round(WINDOW.FontAwesomeDetection.timeout / 10) / 100, " seconds while testing these and\n") + "then up to another ".concat(Math.round(WINDOW.FontAwesomeDetection.resultsCollectionMaxWait / 10) / 100, " to allow the browser time\n") + "to accumulate the results. But we'll probably be outta here way before then.\n\n");
|
||||
console.info("You can adjust those durations by assigning values to these attributes on the <script> element that loads this detection:");
|
||||
console.info("\t%c".concat(timeoutAttr, "%c: milliseconds to wait for each test before deciding whether it's a conflict."), 'font-weight: bold;', 'font-size: normal;');
|
||||
console.info("\t%c".concat(resultsCollectionMaxWaitAttr, "%c: milliseconds to wait for the browser to accumulate test results before giving up."), 'font-weight: bold;', 'font-size: normal;');
|
||||
pollUntil({
|
||||
// Give this overall timer a little extra cushion
|
||||
maxDuration: masterTimeout,
|
||||
showProgress: true,
|
||||
progressIndicator: 'waiting...',
|
||||
fn: function fn() {
|
||||
return Object.keys(nodesTested.conflict).length + Object.keys(nodesTested.noConflict).length >= testCount;
|
||||
}
|
||||
}).then(function () {
|
||||
console.info('DONE!');
|
||||
setDoneResults({
|
||||
nodesTested: nodesTested,
|
||||
nodesFound: nodesFound
|
||||
});
|
||||
report$$1({
|
||||
nodesTested: nodesTested,
|
||||
nodesFound: nodesFound
|
||||
});
|
||||
console.groupEnd();
|
||||
}).catch(function (e) {
|
||||
if (e === 'timeout') {
|
||||
console.info('TIME OUT! We waited until we got tired. Here\'s what we found:');
|
||||
setDoneResults({
|
||||
nodesTested: nodesTested,
|
||||
nodesFound: nodesFound
|
||||
});
|
||||
report$$1({
|
||||
nodesTested: nodesTested,
|
||||
nodesFound: nodesFound
|
||||
});
|
||||
} else {
|
||||
console.info('Whoops! We hit an error:', e);
|
||||
console.info('Here\'s what we\'d found up until that error:');
|
||||
setDoneResults({
|
||||
nodesTested: nodesTested,
|
||||
nodesFound: nodesFound
|
||||
});
|
||||
report$$1({
|
||||
nodesTested: nodesTested,
|
||||
nodesFound: nodesFound
|
||||
});
|
||||
}
|
||||
|
||||
console.groupEnd();
|
||||
});
|
||||
}
|
||||
} // Allow clients to access, and in some cases, override some properties
|
||||
|
||||
var initialConfig = WINDOW.FontAwesomeDetection || {}; // These can be overridden
|
||||
|
||||
var _default = {
|
||||
report: report,
|
||||
timeout: +(DOCUMENT.currentScript.getAttribute(timeoutAttr) || "2000"),
|
||||
resultsCollectionMaxWait: +(DOCUMENT.currentScript.getAttribute(resultsCollectionMaxWaitAttr) || "5000")
|
||||
};
|
||||
|
||||
var _config = _objectSpread({}, _default, initialConfig, {
|
||||
// These cannot be overridden
|
||||
__pollUntil: pollUntil,
|
||||
md5ForNode: md5ForNode,
|
||||
detectionDone: false,
|
||||
nodesTested: null,
|
||||
nodesFound: null
|
||||
});
|
||||
|
||||
WINDOW.FontAwesomeDetection = _config;
|
||||
|
||||
var PRODUCTION = function () {
|
||||
try {
|
||||
return process.env.NODE_ENV === 'production';
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
}();
|
||||
|
||||
function bunker(fn) {
|
||||
try {
|
||||
fn();
|
||||
} catch (e) {
|
||||
if (!PRODUCTION) {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bunker(function () {
|
||||
if (IS_BROWSER && IS_DOM) {
|
||||
conflictDetection(window.FontAwesomeDetection.report);
|
||||
}
|
||||
});
|
||||
|
||||
exports.conflictDetection = conflictDetection;
|
||||
|
||||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
})));
|
||||
@@ -1,280 +0,0 @@
|
||||
/*!
|
||||
* Font Awesome Free 5.15.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
*/
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
var _WINDOW = {};
|
||||
var _DOCUMENT = {};
|
||||
|
||||
try {
|
||||
if (typeof window !== 'undefined') _WINDOW = window;
|
||||
if (typeof document !== 'undefined') _DOCUMENT = document;
|
||||
} catch (e) {}
|
||||
|
||||
var _ref = _WINDOW.navigator || {},
|
||||
_ref$userAgent = _ref.userAgent,
|
||||
userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;
|
||||
|
||||
var WINDOW = _WINDOW;
|
||||
var DOCUMENT = _DOCUMENT;
|
||||
var IS_BROWSER = !!WINDOW.document;
|
||||
var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';
|
||||
var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');
|
||||
|
||||
var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';
|
||||
var PRODUCTION = function () {
|
||||
try {
|
||||
return "production" === 'production';
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
}();
|
||||
|
||||
function bunker(fn) {
|
||||
try {
|
||||
fn();
|
||||
} catch (e) {
|
||||
if (!PRODUCTION) {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function _defineProperty(obj, key, value) {
|
||||
if (key in obj) {
|
||||
Object.defineProperty(obj, key, {
|
||||
value: value,
|
||||
enumerable: true,
|
||||
configurable: true,
|
||||
writable: true
|
||||
});
|
||||
} else {
|
||||
obj[key] = value;
|
||||
}
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
function _objectSpread(target) {
|
||||
for (var i = 1; i < arguments.length; i++) {
|
||||
var source = arguments[i] != null ? arguments[i] : {};
|
||||
var ownKeys = Object.keys(source);
|
||||
|
||||
if (typeof Object.getOwnPropertySymbols === 'function') {
|
||||
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
|
||||
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
||||
}));
|
||||
}
|
||||
|
||||
ownKeys.forEach(function (key) {
|
||||
_defineProperty(target, key, source[key]);
|
||||
});
|
||||
}
|
||||
|
||||
return target;
|
||||
}
|
||||
|
||||
var w = WINDOW || {};
|
||||
if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};
|
||||
if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};
|
||||
if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};
|
||||
if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];
|
||||
var namespace = w[NAMESPACE_IDENTIFIER];
|
||||
|
||||
function defineIcons(prefix, icons) {
|
||||
var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
||||
var _params$skipHooks = params.skipHooks,
|
||||
skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;
|
||||
var normalized = Object.keys(icons).reduce(function (acc, iconName) {
|
||||
var icon = icons[iconName];
|
||||
var expanded = !!icon.icon;
|
||||
|
||||
if (expanded) {
|
||||
acc[icon.iconName] = icon.icon;
|
||||
} else {
|
||||
acc[iconName] = icon;
|
||||
}
|
||||
|
||||
return acc;
|
||||
}, {});
|
||||
|
||||
if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {
|
||||
namespace.hooks.addPack(prefix, normalized);
|
||||
} else {
|
||||
namespace.styles[prefix] = _objectSpread({}, namespace.styles[prefix] || {}, normalized);
|
||||
}
|
||||
/**
|
||||
* Font Awesome 4 used the prefix of `fa` for all icons. With the introduction
|
||||
* of new styles we needed to differentiate between them. Prefix `fa` is now an alias
|
||||
* for `fas` so we'll easy the upgrade process for our users by automatically defining
|
||||
* this as well.
|
||||
*/
|
||||
|
||||
|
||||
if (prefix === 'fas') {
|
||||
defineIcons('fa', icons);
|
||||
}
|
||||
}
|
||||
|
||||
var icons = {
|
||||
"address-book": [448, 512, [], "f2b9", "M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-68 304H48V48h320v416zM208 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2z"],
|
||||
"address-card": [576, 512, [], "f2bb", "M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 400H48V80h480v352zM208 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2zM360 320h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8z"],
|
||||
"angry": [496, 512, [], "f556", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm0-144c-33.6 0-65.2 14.8-86.8 40.6-8.5 10.2-7.1 25.3 3.1 33.8s25.3 7.2 33.8-3c24.8-29.7 75-29.7 99.8 0 8.1 9.7 23.2 11.9 33.8 3 10.2-8.5 11.5-23.6 3.1-33.8-21.6-25.8-53.2-40.6-86.8-40.6zm-48-72c10.3 0 19.9-6.7 23-17.1 3.8-12.7-3.4-26.1-16.1-29.9l-80-24c-12.8-3.9-26.1 3.4-29.9 16.1-3.8 12.7 3.4 26.1 16.1 29.9l28.2 8.5c-3.1 4.9-5.3 10.4-5.3 16.6 0 17.7 14.3 32 32 32s32-14.4 32-32.1zm199-54.9c-3.8-12.7-17.1-19.9-29.9-16.1l-80 24c-12.7 3.8-19.9 17.2-16.1 29.9 3.1 10.4 12.7 17.1 23 17.1 0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.2-2.2-11.7-5.3-16.6l28.2-8.5c12.7-3.7 19.9-17.1 16.1-29.8z"],
|
||||
"arrow-alt-circle-down": [512, 512, [], "f358", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm-32-316v116h-67c-10.7 0-16 12.9-8.5 20.5l99 99c4.7 4.7 12.3 4.7 17 0l99-99c7.6-7.6 2.2-20.5-8.5-20.5h-67V140c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12z"],
|
||||
"arrow-alt-circle-left": [512, 512, [], "f359", "M8 256c0 137 111 248 248 248s248-111 248-248S393 8 256 8 8 119 8 256zm448 0c0 110.5-89.5 200-200 200S56 366.5 56 256 145.5 56 256 56s200 89.5 200 200zm-72-20v40c0 6.6-5.4 12-12 12H256v67c0 10.7-12.9 16-20.5 8.5l-99-99c-4.7-4.7-4.7-12.3 0-17l99-99c7.6-7.6 20.5-2.2 20.5 8.5v67h116c6.6 0 12 5.4 12 12z"],
|
||||
"arrow-alt-circle-right": [512, 512, [], "f35a", "M504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256zm72 20v-40c0-6.6 5.4-12 12-12h116v-67c0-10.7 12.9-16 20.5-8.5l99 99c4.7 4.7 4.7 12.3 0 17l-99 99c-7.6 7.6-20.5 2.2-20.5-8.5v-67H140c-6.6 0-12-5.4-12-12z"],
|
||||
"arrow-alt-circle-up": [512, 512, [], "f35b", "M256 504c137 0 248-111 248-248S393 8 256 8 8 119 8 256s111 248 248 248zm0-448c110.5 0 200 89.5 200 200s-89.5 200-200 200S56 366.5 56 256 145.5 56 256 56zm20 328h-40c-6.6 0-12-5.4-12-12V256h-67c-10.7 0-16-12.9-8.5-20.5l99-99c4.7-4.7 12.3-4.7 17 0l99 99c7.6 7.6 2.2 20.5-8.5 20.5h-67v116c0 6.6-5.4 12-12 12z"],
|
||||
"bell": [448, 512, [], "f0f3", "M439.39 362.29c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71zM67.53 368c21.22-27.97 44.42-74.33 44.53-159.42 0-.2-.06-.38-.06-.58 0-61.86 50.14-112 112-112s112 50.14 112 112c0 .2-.06.38-.06.58.11 85.1 23.31 131.46 44.53 159.42H67.53zM224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64z"],
|
||||
"bell-slash": [640, 512, [], "f1f6", "M633.99 471.02L36 3.51C29.1-2.01 19.03-.9 13.51 6l-10 12.49C-2.02 25.39-.9 35.46 6 40.98l598 467.51c6.9 5.52 16.96 4.4 22.49-2.49l10-12.49c5.52-6.9 4.41-16.97-2.5-22.49zM163.53 368c16.71-22.03 34.48-55.8 41.4-110.58l-45.47-35.55c-3.27 90.73-36.47 120.68-54.84 140.42-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h279.66l-61.4-48H163.53zM320 96c61.86 0 112 50.14 112 112 0 .2-.06.38-.06.58.02 16.84 1.16 31.77 2.79 45.73l59.53 46.54c-8.31-22.13-14.34-51.49-14.34-92.85 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84c-26.02 5.41-49.45 16.94-69.13 32.72l38.17 29.84C275 103.18 296.65 96 320 96zm0 416c35.32 0 63.97-28.65 63.97-64H256.03c0 35.35 28.65 64 63.97 64z"],
|
||||
"bookmark": [384, 512, [], "f02e", "M336 0H48C21.49 0 0 21.49 0 48v464l192-112 192 112V48c0-26.51-21.49-48-48-48zm0 428.43l-144-84-144 84V54a6 6 0 0 1 6-6h276c3.314 0 6 2.683 6 5.996V428.43z"],
|
||||
"building": [448, 512, [], "f1ad", "M128 148v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12zm140 12h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm-128 96h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm128 0h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm-76 84v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm76 12h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm180 124v36H0v-36c0-6.6 5.4-12 12-12h19.5V24c0-13.3 10.7-24 24-24h337c13.3 0 24 10.7 24 24v440H436c6.6 0 12 5.4 12 12zM79.5 463H192v-67c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v67h112.5V49L80 48l-.5 415z"],
|
||||
"calendar": [448, 512, [], "f133", "M400 64h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zm-6 400H54c-3.3 0-6-2.7-6-6V160h352v298c0 3.3-2.7 6-6 6z"],
|
||||
"calendar-alt": [448, 512, [], "f073", "M148 288h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm108-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 96v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96-260v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"],
|
||||
"calendar-check": [448, 512, [], "f274", "M400 64h-48V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v52H160V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v52H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V160h352v298a6 6 0 0 1-6 6zm-52.849-200.65L198.842 404.519c-4.705 4.667-12.303 4.637-16.971-.068l-75.091-75.699c-4.667-4.705-4.637-12.303.068-16.971l22.719-22.536c4.705-4.667 12.303-4.637 16.97.069l44.104 44.461 111.072-110.181c4.705-4.667 12.303-4.637 16.971.068l22.536 22.718c4.667 4.705 4.636 12.303-.069 16.97z"],
|
||||
"calendar-minus": [448, 512, [], "f272", "M124 328c-6.6 0-12-5.4-12-12v-24c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v24c0 6.6-5.4 12-12 12H124zm324-216v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"],
|
||||
"calendar-plus": [448, 512, [], "f271", "M336 292v24c0 6.6-5.4 12-12 12h-76v76c0 6.6-5.4 12-12 12h-24c-6.6 0-12-5.4-12-12v-76h-76c-6.6 0-12-5.4-12-12v-24c0-6.6 5.4-12 12-12h76v-76c0-6.6 5.4-12 12-12h24c6.6 0 12 5.4 12 12v76h76c6.6 0 12 5.4 12 12zm112-180v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"],
|
||||
"calendar-times": [448, 512, [], "f273", "M311.7 374.7l-17 17c-4.7 4.7-12.3 4.7-17 0L224 337.9l-53.7 53.7c-4.7 4.7-12.3 4.7-17 0l-17-17c-4.7-4.7-4.7-12.3 0-17l53.7-53.7-53.7-53.7c-4.7-4.7-4.7-12.3 0-17l17-17c4.7-4.7 12.3-4.7 17 0l53.7 53.7 53.7-53.7c4.7-4.7 12.3-4.7 17 0l17 17c4.7 4.7 4.7 12.3 0 17L257.9 304l53.7 53.7c4.8 4.7 4.8 12.3.1 17zM448 112v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"],
|
||||
"caret-square-down": [448, 512, [], "f150", "M125.1 208h197.8c10.7 0 16.1 13 8.5 20.5l-98.9 98.3c-4.7 4.7-12.2 4.7-16.9 0l-98.9-98.3c-7.7-7.5-2.3-20.5 8.4-20.5zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"],
|
||||
"caret-square-left": [448, 512, [], "f191", "M272 157.1v197.8c0 10.7-13 16.1-20.5 8.5l-98.3-98.9c-4.7-4.7-4.7-12.2 0-16.9l98.3-98.9c7.5-7.7 20.5-2.3 20.5 8.4zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"],
|
||||
"caret-square-right": [448, 512, [], "f152", "M176 354.9V157.1c0-10.7 13-16.1 20.5-8.5l98.3 98.9c4.7 4.7 4.7 12.2 0 16.9l-98.3 98.9c-7.5 7.7-20.5 2.3-20.5-8.4zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"],
|
||||
"caret-square-up": [448, 512, [], "f151", "M322.9 304H125.1c-10.7 0-16.1-13-8.5-20.5l98.9-98.3c4.7-4.7 12.2-4.7 16.9 0l98.9 98.3c7.7 7.5 2.3 20.5-8.4 20.5zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"],
|
||||
"chart-bar": [512, 512, [], "f080", "M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z"],
|
||||
"check-circle": [512, 512, [], "f058", "M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z"],
|
||||
"check-square": [448, 512, [], "f14a", "M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm0 400H48V80h352v352zm-35.864-241.724L191.547 361.48c-4.705 4.667-12.303 4.637-16.97-.068l-90.781-91.516c-4.667-4.705-4.637-12.303.069-16.971l22.719-22.536c4.705-4.667 12.303-4.637 16.97.069l59.792 60.277 141.352-140.216c4.705-4.667 12.303-4.637 16.97.068l22.536 22.718c4.667 4.706 4.637 12.304-.068 16.971z"],
|
||||
"circle": [512, 512, [], "f111", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200z"],
|
||||
"clipboard": [384, 512, [], "f328", "M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm144 418c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V118c0-3.3 2.7-6 6-6h42v36c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-36h42c3.3 0 6 2.7 6 6z"],
|
||||
"clock": [512, 512, [], "f017", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm61.8-104.4l-84.9-61.7c-3.1-2.3-4.9-5.9-4.9-9.7V116c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v141.7l66.8 48.6c5.4 3.9 6.5 11.4 2.6 16.8L334.6 349c-3.9 5.3-11.4 6.5-16.8 2.6z"],
|
||||
"clone": [512, 512, [], "f24d", "M464 0H144c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h320c26.51 0 48-21.49 48-48v-48h48c26.51 0 48-21.49 48-48V48c0-26.51-21.49-48-48-48zM362 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h42v224c0 26.51 21.49 48 48 48h224v42a6 6 0 0 1-6 6zm96-96H150a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h308a6 6 0 0 1 6 6v308a6 6 0 0 1-6 6z"],
|
||||
"closed-captioning": [512, 512, [], "f20a", "M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zm-6 336H54c-3.3 0-6-2.7-6-6V118c0-3.3 2.7-6 6-6h404c3.3 0 6 2.7 6 6v276c0 3.3-2.7 6-6 6zm-211.1-85.7c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.8-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7l-17.5 30.5c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6 2.8-2.5 7.1-2.1 9.2.9l19.6 27.7zm190.4 0c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.9-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7L420 220.2c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6 2.8-2.5 7.1-2.1 9.2.9l19.6 27.7z"],
|
||||
"comment": [512, 512, [], "f075", "M256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z"],
|
||||
"comment-alt": [512, 512, [], "f27a", "M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 7.1 5.8 12 12 12 2.4 0 4.9-.7 7.1-2.4L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zm16 352c0 8.8-7.2 16-16 16H288l-12.8 9.6L208 428v-60H64c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16h384c8.8 0 16 7.2 16 16v288z"],
|
||||
"comment-dots": [512, 512, [], "f4ad", "M144 208c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zM256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z"],
|
||||
"comments": [576, 512, [], "f086", "M532 386.2c27.5-27.1 44-61.1 44-98.2 0-80-76.5-146.1-176.2-157.9C368.3 72.5 294.3 32 208 32 93.1 32 0 103.6 0 192c0 37 16.5 71 44 98.2-15.3 30.7-37.3 54.5-37.7 54.9-6.3 6.7-8.1 16.5-4.4 25 3.6 8.5 12 14 21.2 14 53.5 0 96.7-20.2 125.2-38.8 9.2 2.1 18.7 3.7 28.4 4.9C208.1 407.6 281.8 448 368 448c20.8 0 40.8-2.4 59.8-6.8C456.3 459.7 499.4 480 553 480c9.2 0 17.5-5.5 21.2-14 3.6-8.5 1.9-18.3-4.4-25-.4-.3-22.5-24.1-37.8-54.8zm-392.8-92.3L122.1 305c-14.1 9.1-28.5 16.3-43.1 21.4 2.7-4.7 5.4-9.7 8-14.8l15.5-31.1L77.7 256C64.2 242.6 48 220.7 48 192c0-60.7 73.3-112 160-112s160 51.3 160 112-73.3 112-160 112c-16.5 0-33-1.9-49-5.6l-19.8-4.5zM498.3 352l-24.7 24.4 15.5 31.1c2.6 5.1 5.3 10.1 8 14.8-14.6-5.1-29-12.3-43.1-21.4l-17.1-11.1-19.9 4.6c-16 3.7-32.5 5.6-49 5.6-54 0-102.2-20.1-131.3-49.7C338 339.5 416 272.9 416 192c0-3.4-.4-6.7-.7-10C479.7 196.5 528 238.8 528 288c0 28.7-16.2 50.6-29.7 64z"],
|
||||
"compass": [496, 512, [], "f14e", "M347.94 129.86L203.6 195.83a31.938 31.938 0 0 0-15.77 15.77l-65.97 144.34c-7.61 16.65 9.54 33.81 26.2 26.2l144.34-65.97a31.938 31.938 0 0 0 15.77-15.77l65.97-144.34c7.61-16.66-9.54-33.81-26.2-26.2zm-77.36 148.72c-12.47 12.47-32.69 12.47-45.16 0-12.47-12.47-12.47-32.69 0-45.16 12.47-12.47 32.69-12.47 45.16 0 12.47 12.47 12.47 32.69 0 45.16zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 448c-110.28 0-200-89.72-200-200S137.72 56 248 56s200 89.72 200 200-89.72 200-200 200z"],
|
||||
"copy": [448, 512, [], "f0c5", "M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"],
|
||||
"copyright": [512, 512, [], "f1f9", "M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 448c-110.532 0-200-89.451-200-200 0-110.531 89.451-200 200-200 110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200zm107.351-101.064c-9.614 9.712-45.53 41.396-104.065 41.396-82.43 0-140.484-61.425-140.484-141.567 0-79.152 60.275-139.401 139.762-139.401 55.531 0 88.738 26.62 97.593 34.779a11.965 11.965 0 0 1 1.936 15.322l-18.155 28.113c-3.841 5.95-11.966 7.282-17.499 2.921-8.595-6.776-31.814-22.538-61.708-22.538-48.303 0-77.916 35.33-77.916 80.082 0 41.589 26.888 83.692 78.277 83.692 32.657 0 56.843-19.039 65.726-27.225 5.27-4.857 13.596-4.039 17.82 1.738l19.865 27.17a11.947 11.947 0 0 1-1.152 15.518z"],
|
||||
"credit-card": [576, 512, [], "f09d", "M527.9 32H48.1C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48.1 48h479.8c26.6 0 48.1-21.5 48.1-48V80c0-26.5-21.5-48-48.1-48zM54.1 80h467.8c3.3 0 6 2.7 6 6v42H48.1V86c0-3.3 2.7-6 6-6zm467.8 352H54.1c-3.3 0-6-2.7-6-6V256h479.8v170c0 3.3-2.7 6-6 6zM192 332v40c0 6.6-5.4 12-12 12h-72c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12zm192 0v40c0 6.6-5.4 12-12 12H236c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12z"],
|
||||
"dizzy": [496, 512, [], "f567", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-33.8-217.9c7.8-7.8 7.8-20.5 0-28.3L196.3 192l17.9-17.9c7.8-7.8 7.8-20.5 0-28.3-7.8-7.8-20.5-7.8-28.3 0L168 163.7l-17.8-17.8c-7.8-7.8-20.5-7.8-28.3 0-7.8 7.8-7.8 20.5 0 28.3l17.9 17.9-17.9 17.9c-7.8 7.8-7.8 20.5 0 28.3 7.8 7.8 20.5 7.8 28.3 0l17.8-17.8 17.8 17.8c7.9 7.7 20.5 7.7 28.4-.2zm160-92.2c-7.8-7.8-20.5-7.8-28.3 0L328 163.7l-17.8-17.8c-7.8-7.8-20.5-7.8-28.3 0-7.8 7.8-7.8 20.5 0 28.3l17.9 17.9-17.9 17.9c-7.8 7.8-7.8 20.5 0 28.3 7.8 7.8 20.5 7.8 28.3 0l17.8-17.8 17.8 17.8c7.8 7.8 20.5 7.8 28.3 0 7.8-7.8 7.8-20.5 0-28.3l-17.8-18 17.9-17.9c7.7-7.8 7.7-20.4 0-28.2zM248 272c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64z"],
|
||||
"dot-circle": [512, 512, [], "f192", "M256 56c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m0-48C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 168c-44.183 0-80 35.817-80 80s35.817 80 80 80 80-35.817 80-80-35.817-80-80-80z"],
|
||||
"edit": [576, 512, [], "f044", "M402.3 344.9l32-32c5-5 13.7-1.5 13.7 5.7V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h273.5c7.1 0 10.7 8.6 5.7 13.7l-32 32c-1.5 1.5-3.5 2.3-5.7 2.3H48v352h352V350.5c0-2.1.8-4.1 2.3-5.6zm156.6-201.8L296.3 405.7l-90.4 10c-26.2 2.9-48.5-19.2-45.6-45.6l10-90.4L432.9 17.1c22.9-22.9 59.9-22.9 82.7 0l43.2 43.2c22.9 22.9 22.9 60 .1 82.8zM460.1 174L402 115.9 216.2 301.8l-7.3 65.3 65.3-7.3L460.1 174zm64.8-79.7l-43.2-43.2c-4.1-4.1-10.8-4.1-14.8 0L436 82l58.1 58.1 30.9-30.9c4-4.2 4-10.8-.1-14.9z"],
|
||||
"envelope": [512, 512, [], "f0e0", "M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm0 48v40.805c-22.422 18.259-58.168 46.651-134.587 106.49-16.841 13.247-50.201 45.072-73.413 44.701-23.208.375-56.579-31.459-73.413-44.701C106.18 199.465 70.425 171.067 48 152.805V112h416zM48 400V214.398c22.914 18.251 55.409 43.862 104.938 82.646 21.857 17.205 60.134 55.186 103.062 54.955 42.717.231 80.509-37.199 103.053-54.947 49.528-38.783 82.032-64.401 104.947-82.653V400H48z"],
|
||||
"envelope-open": [512, 512, [], "f2b6", "M494.586 164.516c-4.697-3.883-111.723-89.95-135.251-108.657C337.231 38.191 299.437 0 256 0c-43.205 0-80.636 37.717-103.335 55.859-24.463 19.45-131.07 105.195-135.15 108.549A48.004 48.004 0 0 0 0 201.485V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V201.509a48 48 0 0 0-17.414-36.993zM464 458a6 6 0 0 1-6 6H54a6 6 0 0 1-6-6V204.347c0-1.813.816-3.526 2.226-4.665 15.87-12.814 108.793-87.554 132.364-106.293C200.755 78.88 232.398 48 256 48c23.693 0 55.857 31.369 73.41 45.389 23.573 18.741 116.503 93.493 132.366 106.316a5.99 5.99 0 0 1 2.224 4.663V458zm-31.991-187.704c4.249 5.159 3.465 12.795-1.745 16.981-28.975 23.283-59.274 47.597-70.929 56.863C336.636 362.283 299.205 400 256 400c-43.452 0-81.287-38.237-103.335-55.86-11.279-8.967-41.744-33.413-70.927-56.865-5.21-4.187-5.993-11.822-1.745-16.981l15.258-18.528c4.178-5.073 11.657-5.843 16.779-1.726 28.618 23.001 58.566 47.035 70.56 56.571C200.143 320.631 232.307 352 256 352c23.602 0 55.246-30.88 73.41-45.389 11.994-9.535 41.944-33.57 70.563-56.568 5.122-4.116 12.601-3.346 16.778 1.727l15.258 18.526z"],
|
||||
"eye": [576, 512, [], "f06e", "M288 144a110.94 110.94 0 0 0-31.24 5 55.4 55.4 0 0 1 7.24 27 56 56 0 0 1-56 56 55.4 55.4 0 0 1-27-7.24A111.71 111.71 0 1 0 288 144zm284.52 97.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400c-98.65 0-189.09-55-237.93-144C98.91 167 189.34 112 288 112s189.09 55 237.93 144C477.1 345 386.66 400 288 400z"],
|
||||
"eye-slash": [640, 512, [], "f070", "M634 471L36 3.51A16 16 0 0 0 13.51 6l-10 12.49A16 16 0 0 0 6 41l598 467.49a16 16 0 0 0 22.49-2.49l10-12.49A16 16 0 0 0 634 471zM296.79 146.47l134.79 105.38C429.36 191.91 380.48 144 320 144a112.26 112.26 0 0 0-23.21 2.47zm46.42 219.07L208.42 260.16C210.65 320.09 259.53 368 320 368a113 113 0 0 0 23.21-2.46zM320 112c98.65 0 189.09 55 237.93 144a285.53 285.53 0 0 1-44 60.2l37.74 29.5a333.7 333.7 0 0 0 52.9-75.11 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64c-36.7 0-71.71 7-104.63 18.81l46.41 36.29c18.94-4.3 38.34-7.1 58.22-7.1zm0 288c-98.65 0-189.08-55-237.93-144a285.47 285.47 0 0 1 44.05-60.19l-37.74-29.5a333.6 333.6 0 0 0-52.89 75.1 32.35 32.35 0 0 0 0 29.19C89.72 376.41 197.08 448 320 448c36.7 0 71.71-7.05 104.63-18.81l-46.41-36.28C359.28 397.2 339.89 400 320 400z"],
|
||||
"file": [384, 512, [], "f15b", "M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48z"],
|
||||
"file-alt": [384, 512, [], "f15c", "M288 248v28c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-28c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm-12 72H108c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-28c0-6.6-5.4-12-12-12zm108-188.1V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48C0 21.5 21.5 0 48 0h204.1C264.8 0 277 5.1 286 14.1L369.9 98c9 8.9 14.1 21.2 14.1 33.9zm-128-80V128h76.1L256 51.9zM336 464V176H232c-13.3 0-24-10.7-24-24V48H48v416h288z"],
|
||||
"file-archive": [384, 512, [], "f1c6", "M128.3 160v32h32v-32zm64-96h-32v32h32zm-64 32v32h32V96zm64 32h-32v32h32zm177.6-30.1L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h79.7v16h32V48H208v104c0 13.3 10.7 24 24 24h104zM194.2 265.7c-1.1-5.6-6-9.7-11.8-9.7h-22.1v-32h-32v32l-19.7 97.1C102 385.6 126.8 416 160 416c33.1 0 57.9-30.2 51.5-62.6zm-33.9 124.4c-17.9 0-32.4-12.1-32.4-27s14.5-27 32.4-27 32.4 12.1 32.4 27-14.5 27-32.4 27zm32-198.1h-32v32h32z"],
|
||||
"file-audio": [384, 512, [], "f1c7", "M369.941 97.941l-83.882-83.882A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v416c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48V131.882a48 48 0 0 0-14.059-33.941zM332.118 128H256V51.882L332.118 128zM48 464V48h160v104c0 13.255 10.745 24 24 24h104v288H48zm144-76.024c0 10.691-12.926 16.045-20.485 8.485L136 360.486h-28c-6.627 0-12-5.373-12-12v-56c0-6.627 5.373-12 12-12h28l35.515-36.947c7.56-7.56 20.485-2.206 20.485 8.485v135.952zm41.201-47.13c9.051-9.297 9.06-24.133.001-33.439-22.149-22.752 12.235-56.246 34.395-33.481 27.198 27.94 27.212 72.444.001 100.401-21.793 22.386-56.947-10.315-34.397-33.481z"],
|
||||
"file-code": [384, 512, [], "f1c9", "M149.9 349.1l-.2-.2-32.8-28.9 32.8-28.9c3.6-3.2 4-8.8.8-12.4l-.2-.2-17.4-18.6c-3.4-3.6-9-3.7-12.4-.4l-57.7 54.1c-3.7 3.5-3.7 9.4 0 12.8l57.7 54.1c1.6 1.5 3.8 2.4 6 2.4 2.4 0 4.8-1 6.4-2.8l17.4-18.6c3.3-3.5 3.1-9.1-.4-12.4zm220-251.2L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h160v104c0 13.3 10.7 24 24 24h104zM209.6 214c-4.7-1.4-9.5 1.3-10.9 6L144 408.1c-1.4 4.7 1.3 9.6 6 10.9l24.4 7.1c4.7 1.4 9.6-1.4 10.9-6L240 231.9c1.4-4.7-1.3-9.6-6-10.9zm24.5 76.9l.2.2 32.8 28.9-32.8 28.9c-3.6 3.2-4 8.8-.8 12.4l.2.2 17.4 18.6c3.3 3.5 8.9 3.7 12.4.4l57.7-54.1c3.7-3.5 3.7-9.4 0-12.8l-57.7-54.1c-3.5-3.3-9.1-3.2-12.4.4l-17.4 18.6c-3.3 3.5-3.1 9.1.4 12.4z"],
|
||||
"file-excel": [384, 512, [], "f1c3", "M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm212-240h-28.8c-4.4 0-8.4 2.4-10.5 6.3-18 33.1-22.2 42.4-28.6 57.7-13.9-29.1-6.9-17.3-28.6-57.7-2.1-3.9-6.2-6.3-10.6-6.3H124c-9.3 0-15 10-10.4 18l46.3 78-46.3 78c-4.7 8 1.1 18 10.4 18h28.9c4.4 0 8.4-2.4 10.5-6.3 21.7-40 23-45 28.6-57.7 14.9 30.2 5.9 15.9 28.6 57.7 2.1 3.9 6.2 6.3 10.6 6.3H260c9.3 0 15-10 10.4-18L224 320c.7-1.1 30.3-50.5 46.3-78 4.7-8-1.1-18-10.3-18z"],
|
||||
"file-image": [384, 512, [], "f1c5", "M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm32-48h224V288l-23.5-23.5c-4.7-4.7-12.3-4.7-17 0L176 352l-39.5-39.5c-4.7-4.7-12.3-4.7-17 0L80 352v64zm48-240c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48z"],
|
||||
"file-pdf": [384, 512, [], "f1c1", "M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm250.2-143.7c-12.2-12-47-8.7-64.4-6.5-17.2-10.5-28.7-25-36.8-46.3 3.9-16.1 10.1-40.6 5.4-56-4.2-26.2-37.8-23.6-42.6-5.9-4.4 16.1-.4 38.5 7 67.1-10 23.9-24.9 56-35.4 74.4-20 10.3-47 26.2-51 46.2-3.3 15.8 26 55.2 76.1-31.2 22.4-7.4 46.8-16.5 68.4-20.1 18.9 10.2 41 17 55.8 17 25.5 0 28-28.2 17.5-38.7zm-198.1 77.8c5.1-13.7 24.5-29.5 30.4-35-19 30.3-30.4 35.7-30.4 35zm81.6-190.6c7.4 0 6.7 32.1 1.8 40.8-4.4-13.9-4.3-40.8-1.8-40.8zm-24.4 136.6c9.7-16.9 18-37 24.7-54.7 8.3 15.1 18.9 27.2 30.1 35.5-20.8 4.3-38.9 13.1-54.8 19.2zm131.6-5s-5 6-37.3-7.8c35.1-2.6 40.9 5.4 37.3 7.8z"],
|
||||
"file-powerpoint": [384, 512, [], "f1c4", "M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm72-60V236c0-6.6 5.4-12 12-12h69.2c36.7 0 62.8 27 62.8 66.3 0 74.3-68.7 66.5-95.5 66.5V404c0 6.6-5.4 12-12 12H132c-6.6 0-12-5.4-12-12zm48.5-87.4h23c7.9 0 13.9-2.4 18.1-7.2 8.5-9.8 8.4-28.5.1-37.8-4.1-4.6-9.9-7-17.4-7h-23.9v52z"],
|
||||
"file-video": [384, 512, [], "f1c8", "M369.941 97.941l-83.882-83.882A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v416c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48V131.882a48 48 0 0 0-14.059-33.941zM332.118 128H256V51.882L332.118 128zM48 464V48h160v104c0 13.255 10.745 24 24 24h104v288H48zm228.687-211.303L224 305.374V268c0-11.046-8.954-20-20-20H100c-11.046 0-20 8.954-20 20v104c0 11.046 8.954 20 20 20h104c11.046 0 20-8.954 20-20v-37.374l52.687 52.674C286.704 397.318 304 390.28 304 375.986V264.011c0-14.311-17.309-21.319-27.313-11.314z"],
|
||||
"file-word": [384, 512, [], "f1c2", "M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm220.1-208c-5.7 0-10.6 4-11.7 9.5-20.6 97.7-20.4 95.4-21 103.5-.2-1.2-.4-2.6-.7-4.3-.8-5.1.3.2-23.6-99.5-1.3-5.4-6.1-9.2-11.7-9.2h-13.3c-5.5 0-10.3 3.8-11.7 9.1-24.4 99-24 96.2-24.8 103.7-.1-1.1-.2-2.5-.5-4.2-.7-5.2-14.1-73.3-19.1-99-1.1-5.6-6-9.7-11.8-9.7h-16.8c-7.8 0-13.5 7.3-11.7 14.8 8 32.6 26.7 109.5 33.2 136 1.3 5.4 6.1 9.1 11.7 9.1h25.2c5.5 0 10.3-3.7 11.6-9.1l17.9-71.4c1.5-6.2 2.5-12 3-17.3l2.9 17.3c.1.4 12.6 50.5 17.9 71.4 1.3 5.3 6.1 9.1 11.6 9.1h24.7c5.5 0 10.3-3.7 11.6-9.1 20.8-81.9 30.2-119 34.5-136 1.9-7.6-3.8-14.9-11.6-14.9h-15.8z"],
|
||||
"flag": [512, 512, [], "f024", "M336.174 80c-49.132 0-93.305-32-161.913-32-31.301 0-58.303 6.482-80.721 15.168a48.04 48.04 0 0 0 2.142-20.727C93.067 19.575 74.167 1.594 51.201.104 23.242-1.71 0 20.431 0 48c0 17.764 9.657 33.262 24 41.562V496c0 8.837 7.163 16 16 16h16c8.837 0 16-7.163 16-16v-83.443C109.869 395.28 143.259 384 199.826 384c49.132 0 93.305 32 161.913 32 58.479 0 101.972-22.617 128.548-39.981C503.846 367.161 512 352.051 512 335.855V95.937c0-34.459-35.264-57.768-66.904-44.117C409.193 67.309 371.641 80 336.174 80zM464 336c-21.783 15.412-60.824 32-102.261 32-59.945 0-102.002-32-161.913-32-43.361 0-96.379 9.403-127.826 24V128c21.784-15.412 60.824-32 102.261-32 59.945 0 102.002 32 161.913 32 43.271 0 96.32-17.366 127.826-32v240z"],
|
||||
"flushed": [496, 512, [], "f579", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm96-312c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80zm0 128c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-112 24c0-44.2-35.8-80-80-80s-80 35.8-80 80 35.8 80 80 80 80-35.8 80-80zm-80 48c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm160 144H184c-13.2 0-24 10.8-24 24s10.8 24 24 24h128c13.2 0 24-10.8 24-24s-10.8-24-24-24z"],
|
||||
"folder": [512, 512, [], "f07b", "M464 128H272l-54.63-54.63c-6-6-14.14-9.37-22.63-9.37H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm0 272H48V112h140.12l54.63 54.63c6 6 14.14 9.37 22.63 9.37H464v224z"],
|
||||
"folder-open": [576, 512, [], "f07c", "M527.9 224H480v-48c0-26.5-21.5-48-48-48H272l-64-64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h400c16.5 0 31.9-8.5 40.7-22.6l79.9-128c20-31.9-3-73.4-40.7-73.4zM48 118c0-3.3 2.7-6 6-6h134.1l64 64H426c3.3 0 6 2.7 6 6v42H152c-16.8 0-32.4 8.8-41.1 23.2L48 351.4zm400 282H72l77.2-128H528z"],
|
||||
"font-awesome-logo-full": [3992, 512, ["Font Awesome"], "f4e6", "M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z"],
|
||||
"frown": [496, 512, [], "f119", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-80 128c-40.2 0-78 17.7-103.8 48.6-8.5 10.2-7.1 25.3 3.1 33.8 10.2 8.4 25.3 7.1 33.8-3.1 16.6-19.9 41-31.4 66.9-31.4s50.3 11.4 66.9 31.4c8.1 9.7 23.1 11.9 33.8 3.1 10.2-8.5 11.5-23.6 3.1-33.8C326 321.7 288.2 304 248 304z"],
|
||||
"frown-open": [496, 512, [], "f57a", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-48-248c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32zm128-32c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-80 112c-35.6 0-88.8 21.3-95.8 61.2-2 11.8 9 21.5 20.5 18.1 31.2-9.6 59.4-15.3 75.3-15.3s44.1 5.7 75.3 15.3c11.4 3.5 22.5-6.3 20.5-18.1-7-39.9-60.2-61.2-95.8-61.2z"],
|
||||
"futbol": [496, 512, [], "f1e3", "M483.8 179.4C449.8 74.6 352.6 8 248.1 8c-25.4 0-51.2 3.9-76.7 12.2C41.2 62.5-30.1 202.4 12.2 332.6 46.2 437.4 143.4 504 247.9 504c25.4 0 51.2-3.9 76.7-12.2 130.2-42.3 201.5-182.2 159.2-312.4zm-74.5 193.7l-52.2 6.4-43.7-60.9 24.4-75.2 71.1-22.1 38.9 36.4c-.2 30.7-7.4 61.1-21.7 89.2-4.7 9.3-10.7 17.8-16.8 26.2zm0-235.4l-10.4 53.1-70.7 22-64.2-46.5V92.5l47.4-26.2c39.2 13 73.4 38 97.9 71.4zM184.9 66.4L232 92.5v73.8l-64.2 46.5-70.6-22-10.1-52.5c24.3-33.4 57.9-58.6 97.8-71.9zM139 379.5L85.9 373c-14.4-20.1-37.3-59.6-37.8-115.3l39-36.4 71.1 22.2 24.3 74.3-43.5 61.7zm48.2 67l-22.4-48.1 43.6-61.7H287l44.3 61.7-22.4 48.1c-6.2 1.8-57.6 20.4-121.7 0z"],
|
||||
"gem": [576, 512, [], "f3a5", "M464 0H112c-4 0-7.8 2-10 5.4L2 152.6c-2.9 4.4-2.6 10.2.7 14.2l276 340.8c4.8 5.9 13.8 5.9 18.6 0l276-340.8c3.3-4.1 3.6-9.8.7-14.2L474.1 5.4C471.8 2 468.1 0 464 0zm-19.3 48l63.3 96h-68.4l-51.7-96h56.8zm-202.1 0h90.7l51.7 96H191l51.6-96zm-111.3 0h56.8l-51.7 96H68l63.3-96zm-43 144h51.4L208 352 88.3 192zm102.9 0h193.6L288 435.3 191.2 192zM368 352l68.2-160h51.4L368 352z"],
|
||||
"grimace": [496, 512, [], "f57f", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm16 16H152c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h192c26.5 0 48-21.5 48-48v-32c0-26.5-21.5-48-48-48zm-168 96h-24c-8.8 0-16-7.2-16-16v-8h40v24zm0-40h-40v-8c0-8.8 7.2-16 16-16h24v24zm64 40h-48v-24h48v24zm0-40h-48v-24h48v24zm64 40h-48v-24h48v24zm0-40h-48v-24h48v24zm56 24c0 8.8-7.2 16-16 16h-24v-24h40v8zm0-24h-40v-24h24c8.8 0 16 7.2 16 16v8z"],
|
||||
"grin": [496, 512, [], "f580", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.4-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zM168 240c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z"],
|
||||
"grin-alt": [496, 512, [], "f581", "M200.3 248c12.4-18.7 15.1-37.3 15.7-56-.5-18.7-3.3-37.3-15.7-56-8-12-25.1-11.4-32.7 0-12.4 18.7-15.1 37.3-15.7 56 .5 18.7 3.3 37.3 15.7 56 8.1 12 25.2 11.4 32.7 0zm128 0c12.4-18.7 15.1-37.3 15.7-56-.5-18.7-3.3-37.3-15.7-56-8-12-25.1-11.4-32.7 0-12.4 18.7-15.1 37.3-15.7 56 .5 18.7 3.3 37.3 15.7 56 8.1 12 25.2 11.4 32.7 0zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3z"],
|
||||
"grin-beam": [496, 512, [], "f582", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-235.9-72.9c3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3zm160 0c3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3z"],
|
||||
"grin-beam-sweat": [496, 512, [], "f583", "M440 160c29.5 0 53.3-26.3 53.3-58.7 0-25-31.7-75.5-46.2-97.3-3.6-5.3-10.7-5.3-14.2 0-14.5 21.8-46.2 72.3-46.2 97.3 0 32.4 23.8 58.7 53.3 58.7zM248 400c51.9 0 115.3-32.9 123.3-80 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 8 47.1 71.4 80 123.3 80zm130.3-168.3c3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.6 6.2 4.6 9.3 3.7zm105.3-52.9c-24.6 15.7-46 12.9-46.4 12.9 6.9 20.2 10.8 41.8 10.8 64.3 0 110.3-89.7 200-200 200S48 366.3 48 256 137.7 56 248 56c39.8 0 76.8 11.8 108 31.9 1.7-9.5 6.3-24.1 17.2-45.7C336.4 20.6 293.7 8 248 8 111 8 0 119 0 256s111 248 248 248 248-111 248-248c0-27-4.4-52.9-12.4-77.2zM168 189.4c12.3 0 23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.8 19.2-21.6 31.5-21.6z"],
|
||||
"grin-hearts": [496, 512, [], "f584", "M353.6 304.6c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-152.8-48.9c4.5 1.2 9.2-1.5 10.5-6l19.4-69.9c5.6-20.3-7.4-41.1-28.8-44.5-18.6-3-36.4 9.8-41.5 27.9l-2 7.1-7.1-1.9c-18.2-4.7-38.2 4.3-44.9 22-7.7 20.2 3.8 41.9 24.2 47.2l70.2 18.1zm188.8-65.3c-6.7-17.6-26.7-26.7-44.9-22l-7.1 1.9-2-7.1c-5-18.1-22.8-30.9-41.5-27.9-21.4 3.4-34.4 24.2-28.8 44.5l19.4 69.9c1.2 4.5 5.9 7.2 10.5 6l70.2-18.2c20.4-5.3 31.9-26.9 24.2-47.1zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200z"],
|
||||
"grin-squint": [496, 512, [], "f585", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.4-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-234.7-40.8c3.6 4.2 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3s-2.2-8.1-5.8-10.3l-80-48c-5.1-3-11.4-1.9-15.3 2.5-3.8 4.5-3.8 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11.1.1 15.5zm242.9 2.5c5.4 3.2 11.7 1.7 15.3-2.5 3.8-4.5 3.8-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11-.1-15.5-3.8-4.4-10.2-5.4-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48z"],
|
||||
"grin-squint-tears": [512, 512, [], "f586", "M117.1 384.1c-25.8 3.7-84 13.7-100.9 30.6-21.9 21.9-21.5 57.9.9 80.3s58.3 22.8 80.3.9C114.3 479 124.3 420.8 128 395c.8-6.4-4.6-11.8-10.9-10.9zm-41.2-41.7C40.3 268 53 176.1 114.6 114.6 152.4 76.8 202.6 56 256 56c36.2 0 70.8 9.8 101.2 27.7 3.8-20.3 8-36.1 12-48.3C333.8 17.2 294.9 8 256 8 192.5 8 129.1 32.2 80.6 80.6c-74.1 74.1-91.3 183.4-52 274 12.2-4.1 27.7-8.3 47.3-12.2zm352.3-187.6c45 76.6 34.9 176.9-30.8 242.6-37.8 37.8-88 58.6-141.4 58.6-30.5 0-59.8-7-86.4-19.8-3.9 19.5-8 35-12.2 47.2 31.4 13.6 65 20.6 98.7 20.6 63.5 0 126.9-24.2 175.4-72.6 78.1-78.1 93.1-195.4 45.2-288.6-12.3 4-28.2 8.1-48.5 12zm-33.3-26.9c25.8-3.7 84-13.7 100.9-30.6 21.9-21.9 21.5-57.9-.9-80.3s-58.3-22.8-80.3-.9C397.7 33 387.7 91.2 384 117c-.8 6.4 4.6 11.8 10.9 10.9zm-187 108.3c-3-3-7.2-4.2-11.4-3.2L106 255.7c-5.7 1.4-9.5 6.7-9.1 12.6.5 5.8 5.1 10.5 10.9 11l52.3 4.8 4.8 52.3c.5 5.8 5.2 10.4 11 10.9h.9c5.5 0 10.3-3.7 11.7-9.1l22.6-90.5c1-4.2-.2-8.5-3.2-11.5zm39.7-25.1l90.5-22.6c5.7-1.4 9.5-6.7 9.1-12.6-.5-5.8-5.1-10.5-10.9-11l-52.3-4.8-4.8-52.3c-.5-5.8-5.2-10.4-11-10.9-5.6-.1-11.2 3.4-12.6 9.1L233 196.5c-1 4.1.2 8.4 3.2 11.4 5 5 11.3 3.2 11.4 3.2zm52 88.5c-29.1 29.1-59.7 52.9-83.9 65.4-9.2 4.8-10 17.5-1.7 23.4 38.9 27.7 107 6.2 143.7-30.6S416 253 388.3 214.1c-5.8-8.2-18.5-7.6-23.4 1.7-12.3 24.2-36.2 54.7-65.3 83.8z"],
|
||||
"grin-stars": [496, 512, [], "f587", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-227.9-57.5c-1 6.2 5.4 11 11 7.9l31.3-16.3 31.3 16.3c5.6 3.1 12-1.7 11-7.9l-6-34.9 25.4-24.6c4.5-4.5 1.9-12.2-4.3-13.2l-34.9-5-15.5-31.6c-2.9-5.8-11-5.8-13.9 0l-15.5 31.6-34.9 5c-6.2.9-8.9 8.6-4.3 13.2l25.4 24.6-6.1 34.9zm259.7-72.7l-34.9-5-15.5-31.6c-2.9-5.8-11-5.8-13.9 0l-15.5 31.6-34.9 5c-6.2.9-8.9 8.6-4.3 13.2l25.4 24.6-6 34.9c-1 6.2 5.4 11 11 7.9l31.3-16.3 31.3 16.3c5.6 3.1 12-1.7 11-7.9l-6-34.9 25.4-24.6c4.5-4.6 1.8-12.2-4.4-13.2z"],
|
||||
"grin-tears": [640, 512, [], "f588", "M117.1 256.1c-25.8 3.7-84 13.7-100.9 30.6-21.9 21.9-21.5 57.9.9 80.3s58.3 22.8 80.3.9C114.3 351 124.3 292.8 128 267c.8-6.4-4.6-11.8-10.9-10.9zm506.7 30.6c-16.9-16.9-75.1-26.9-100.9-30.6-6.3-.9-11.7 4.5-10.8 10.8 3.7 25.8 13.7 84 30.6 100.9 21.9 21.9 57.9 21.5 80.3-.9 22.3-22.3 22.7-58.3.8-80.2zm-126.6 61.7C463.8 412.3 396.9 456 320 456c-76.9 0-143.8-43.7-177.2-107.6-12.5 37.4-25.2 43.9-28.3 46.5C159.1 460.7 234.5 504 320 504s160.9-43.3 205.5-109.1c-3.2-2.7-15.9-9.2-28.3-46.5zM122.7 224.5C137.9 129.2 220.5 56 320 56c99.5 0 182.1 73.2 197.3 168.5 2.1-.2 5.2-2.4 49.5 7C554.4 106 448.7 8 320 8S85.6 106 73.2 231.4c44.5-9.4 47.1-7.2 49.5-6.9zM320 400c51.9 0 115.3-32.9 123.3-80 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 8 47.1 71.4 80 123.3 80zm130.3-168.3c3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.6 6.2 4.6 9.3 3.7zM240 189.4c12.3 0 23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.8 19.2-21.6 31.5-21.6z"],
|
||||
"grin-tongue": [496, 512, [], "f589", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3zM168 176c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z"],
|
||||
"grin-tongue-squint": [496, 512, [], "f58a", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3zm36.9-281.1c-3.8-4.4-10.3-5.5-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48c5.4 3.2 11.7 1.7 15.3-2.5 3.8-4.5 3.8-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11.1-.1-15.5zm-162.9 45.5l-80-48c-5-3-11.4-2-15.3 2.5-3.8 4.5-3.8 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11 .1 15.5 3.6 4.2 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3s-2.2-8.1-5.8-10.3z"],
|
||||
"grin-tongue-wink": [496, 512, [], "f58b", "M152 180c-25.7 0-55.9 16.9-59.8 42.1-.8 5 1.7 10 6.1 12.4 4.4 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.2 8 4.7 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-3.9-25.2-34.1-42.1-59.8-42.1zm176-52c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80zm0 128c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3z"],
|
||||
"grin-wink": [496, 512, [], "f58c", "M328 180c-25.69 0-55.88 16.92-59.86 42.12-1.75 11.22 11.5 18.24 19.83 10.84l9.55-8.48c14.81-13.19 46.16-13.19 60.97 0l9.55 8.48c8.48 7.43 21.56.25 19.83-10.84C383.88 196.92 353.69 180 328 180zm-160 60c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm185.55 64.64c-25.93 8.3-64.4 13.06-105.55 13.06s-79.62-4.75-105.55-13.06c-9.94-3.13-19.4 5.37-17.71 15.34C132.67 367.13 196.06 400 248 400s115.33-32.87 123.26-80.02c1.68-9.89-7.67-18.48-17.71-15.34zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 448c-110.28 0-200-89.72-200-200S137.72 56 248 56s200 89.72 200 200-89.72 200-200 200z"],
|
||||
"hand-lizard": [576, 512, [], "f258", "M556.686 290.542L410.328 64.829C397.001 44.272 374.417 32 349.917 32H56C25.121 32 0 57.122 0 88v8c0 44.112 35.888 80 80 80h196.042l-18.333 48H144c-48.523 0-88 39.477-88 88 0 30.879 25.121 56 56 56h131.552c2.987 0 5.914.549 8.697 1.631L352 408.418V480h224V355.829c0-23.225-6.679-45.801-19.314-65.287zM528 432H400v-23.582c0-19.948-12.014-37.508-30.604-44.736l-99.751-38.788A71.733 71.733 0 0 0 243.552 320H112c-4.411 0-8-3.589-8-8 0-22.056 17.944-40 40-40h113.709c19.767 0 37.786-12.407 44.84-30.873l24.552-64.281c8.996-23.553-8.428-48.846-33.63-48.846H80c-17.645 0-32-14.355-32-32v-8c0-4.411 3.589-8 8-8h293.917c8.166 0 15.693 4.09 20.137 10.942l146.358 225.715A71.84 71.84 0 0 1 528 355.829V432z"],
|
||||
"hand-paper": [448, 512, [], "f256", "M372.57 112.641v-10.825c0-43.612-40.52-76.691-83.039-65.546-25.629-49.5-94.09-47.45-117.982.747C130.269 26.456 89.144 57.945 89.144 102v126.13c-19.953-7.427-43.308-5.068-62.083 8.871-29.355 21.796-35.794 63.333-14.55 93.153L132.48 498.569a32 32 0 0 0 26.062 13.432h222.897c14.904 0 27.835-10.289 31.182-24.813l30.184-130.958A203.637 203.637 0 0 0 448 310.564V179c0-40.62-35.523-71.992-75.43-66.359zm27.427 197.922c0 11.731-1.334 23.469-3.965 34.886L368.707 464h-201.92L51.591 302.303c-14.439-20.27 15.023-42.776 29.394-22.605l27.128 38.079c8.995 12.626 29.031 6.287 29.031-9.283V102c0-25.645 36.571-24.81 36.571.691V256c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16V67c0-25.663 36.571-24.81 36.571.691V256c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16V101.125c0-25.672 36.57-24.81 36.57.691V256c0 8.837 7.163 16 16 16h6.857c8.837 0 16-7.163 16-16v-76.309c0-26.242 36.57-25.64 36.57-.691v131.563z"],
|
||||
"hand-peace": [448, 512, [], "f25b", "M362.146 191.976c-13.71-21.649-38.761-34.016-65.006-30.341V74c0-40.804-32.811-74-73.141-74-40.33 0-73.14 33.196-73.14 74L160 168l-18.679-78.85C126.578 50.843 83.85 32.11 46.209 47.208 8.735 62.238-9.571 104.963 5.008 142.85l55.757 144.927c-30.557 24.956-43.994 57.809-24.733 92.218l54.853 97.999C102.625 498.97 124.73 512 148.575 512h205.702c30.744 0 57.558-21.44 64.555-51.797l27.427-118.999a67.801 67.801 0 0 0 1.729-15.203L448 256c0-44.956-43.263-77.343-85.854-64.024zM399.987 326c0 1.488-.169 2.977-.502 4.423l-27.427 119.001c-1.978 8.582-9.29 14.576-17.782 14.576H148.575c-6.486 0-12.542-3.621-15.805-9.449l-54.854-98c-4.557-8.141-2.619-18.668 4.508-24.488l26.647-21.764a16 16 0 0 0 4.812-18.139l-64.09-166.549C37.226 92.956 84.37 74.837 96.51 106.389l59.784 155.357A16 16 0 0 0 171.227 272h11.632c8.837 0 16-7.163 16-16V74c0-34.375 50.281-34.43 50.281 0v182c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16v-28c0-25.122 36.567-25.159 36.567 0v28c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16 0-25.12 36.567-25.16 36.567 0v70z"],
|
||||
"hand-point-down": [448, 512, [], "f0a7", "M188.8 512c45.616 0 83.2-37.765 83.2-83.2v-35.647a93.148 93.148 0 0 0 22.064-7.929c22.006 2.507 44.978-3.503 62.791-15.985C409.342 368.1 448 331.841 448 269.299V248c0-60.063-40-98.512-40-127.2v-2.679c4.952-5.747 8-13.536 8-22.12V32c0-17.673-12.894-32-28.8-32H156.8C140.894 0 128 14.327 128 32v64c0 8.584 3.048 16.373 8 22.12v2.679c0 6.964-6.193 14.862-23.668 30.183l-.148.129-.146.131c-9.937 8.856-20.841 18.116-33.253 25.851C48.537 195.798 0 207.486 0 252.8c0 56.928 35.286 92 83.2 92 8.026 0 15.489-.814 22.4-2.176V428.8c0 45.099 38.101 83.2 83.2 83.2zm0-48c-18.7 0-35.2-16.775-35.2-35.2V270.4c-17.325 0-35.2 26.4-70.4 26.4-26.4 0-35.2-20.625-35.2-44 0-8.794 32.712-20.445 56.1-34.926 14.575-9.074 27.225-19.524 39.875-30.799 18.374-16.109 36.633-33.836 39.596-59.075h176.752C364.087 170.79 400 202.509 400 248v21.299c0 40.524-22.197 57.124-61.325 50.601-8.001 14.612-33.979 24.151-53.625 12.925-18.225 19.365-46.381 17.787-61.05 4.95V428.8c0 18.975-16.225 35.2-35.2 35.2zM328 64c0-13.255 10.745-24 24-24s24 10.745 24 24-10.745 24-24 24-24-10.745-24-24z"],
|
||||
"hand-point-left": [512, 512, [], "f0a5", "M0 220.8C0 266.416 37.765 304 83.2 304h35.647a93.148 93.148 0 0 0 7.929 22.064c-2.507 22.006 3.503 44.978 15.985 62.791C143.9 441.342 180.159 480 242.701 480H264c60.063 0 98.512-40 127.2-40h2.679c5.747 4.952 13.536 8 22.12 8h64c17.673 0 32-12.894 32-28.8V188.8c0-15.906-14.327-28.8-32-28.8h-64c-8.584 0-16.373 3.048-22.12 8H391.2c-6.964 0-14.862-6.193-30.183-23.668l-.129-.148-.131-.146c-8.856-9.937-18.116-20.841-25.851-33.253C316.202 80.537 304.514 32 259.2 32c-56.928 0-92 35.286-92 83.2 0 8.026.814 15.489 2.176 22.4H83.2C38.101 137.6 0 175.701 0 220.8zm48 0c0-18.7 16.775-35.2 35.2-35.2h158.4c0-17.325-26.4-35.2-26.4-70.4 0-26.4 20.625-35.2 44-35.2 8.794 0 20.445 32.712 34.926 56.1 9.074 14.575 19.524 27.225 30.799 39.875 16.109 18.374 33.836 36.633 59.075 39.596v176.752C341.21 396.087 309.491 432 264 432h-21.299c-40.524 0-57.124-22.197-50.601-61.325-14.612-8.001-24.151-33.979-12.925-53.625-19.365-18.225-17.787-46.381-4.95-61.05H83.2C64.225 256 48 239.775 48 220.8zM448 360c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24z"],
|
||||
"hand-point-right": [512, 512, [], "f0a4", "M428.8 137.6h-86.177a115.52 115.52 0 0 0 2.176-22.4c0-47.914-35.072-83.2-92-83.2-45.314 0-57.002 48.537-75.707 78.784-7.735 12.413-16.994 23.317-25.851 33.253l-.131.146-.129.148C135.662 161.807 127.764 168 120.8 168h-2.679c-5.747-4.952-13.536-8-22.12-8H32c-17.673 0-32 12.894-32 28.8v230.4C0 435.106 14.327 448 32 448h64c8.584 0 16.373-3.048 22.12-8h2.679c28.688 0 67.137 40 127.2 40h21.299c62.542 0 98.8-38.658 99.94-91.145 12.482-17.813 18.491-40.785 15.985-62.791A93.148 93.148 0 0 0 393.152 304H428.8c45.435 0 83.2-37.584 83.2-83.2 0-45.099-38.101-83.2-83.2-83.2zm0 118.4h-91.026c12.837 14.669 14.415 42.825-4.95 61.05 11.227 19.646 1.687 45.624-12.925 53.625 6.524 39.128-10.076 61.325-50.6 61.325H248c-45.491 0-77.21-35.913-120-39.676V215.571c25.239-2.964 42.966-21.222 59.075-39.596 11.275-12.65 21.725-25.3 30.799-39.875C232.355 112.712 244.006 80 252.8 80c23.375 0 44 8.8 44 35.2 0 35.2-26.4 53.075-26.4 70.4h158.4c18.425 0 35.2 16.5 35.2 35.2 0 18.975-16.225 35.2-35.2 35.2zM88 384c0 13.255-10.745 24-24 24s-24-10.745-24-24 10.745-24 24-24 24 10.745 24 24z"],
|
||||
"hand-point-up": [448, 512, [], "f0a6", "M105.6 83.2v86.177a115.52 115.52 0 0 0-22.4-2.176c-47.914 0-83.2 35.072-83.2 92 0 45.314 48.537 57.002 78.784 75.707 12.413 7.735 23.317 16.994 33.253 25.851l.146.131.148.129C129.807 376.338 136 384.236 136 391.2v2.679c-4.952 5.747-8 13.536-8 22.12v64c0 17.673 12.894 32 28.8 32h230.4c15.906 0 28.8-14.327 28.8-32v-64c0-8.584-3.048-16.373-8-22.12V391.2c0-28.688 40-67.137 40-127.2v-21.299c0-62.542-38.658-98.8-91.145-99.94-17.813-12.482-40.785-18.491-62.791-15.985A93.148 93.148 0 0 0 272 118.847V83.2C272 37.765 234.416 0 188.8 0c-45.099 0-83.2 38.101-83.2 83.2zm118.4 0v91.026c14.669-12.837 42.825-14.415 61.05 4.95 19.646-11.227 45.624-1.687 53.625 12.925 39.128-6.524 61.325 10.076 61.325 50.6V264c0 45.491-35.913 77.21-39.676 120H183.571c-2.964-25.239-21.222-42.966-39.596-59.075-12.65-11.275-25.3-21.725-39.875-30.799C80.712 279.645 48 267.994 48 259.2c0-23.375 8.8-44 35.2-44 35.2 0 53.075 26.4 70.4 26.4V83.2c0-18.425 16.5-35.2 35.2-35.2 18.975 0 35.2 16.225 35.2 35.2zM352 424c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24z"],
|
||||
"hand-pointer": [448, 512, [], "f25a", "M358.182 179.361c-19.493-24.768-52.679-31.945-79.872-19.098-15.127-15.687-36.182-22.487-56.595-19.629V67c0-36.944-29.736-67-66.286-67S89.143 30.056 89.143 67v161.129c-19.909-7.41-43.272-5.094-62.083 8.872-29.355 21.795-35.793 63.333-14.55 93.152l109.699 154.001C134.632 501.59 154.741 512 176 512h178.286c30.802 0 57.574-21.5 64.557-51.797l27.429-118.999A67.873 67.873 0 0 0 448 326v-84c0-46.844-46.625-79.273-89.818-62.639zM80.985 279.697l27.126 38.079c8.995 12.626 29.031 6.287 29.031-9.283V67c0-25.12 36.571-25.16 36.571 0v175c0 8.836 7.163 16 16 16h6.857c8.837 0 16-7.164 16-16v-35c0-25.12 36.571-25.16 36.571 0v35c0 8.836 7.163 16 16 16H272c8.837 0 16-7.164 16-16v-21c0-25.12 36.571-25.16 36.571 0v21c0 8.836 7.163 16 16 16h6.857c8.837 0 16-7.164 16-16 0-25.121 36.571-25.16 36.571 0v84c0 1.488-.169 2.977-.502 4.423l-27.43 119.001c-1.978 8.582-9.29 14.576-17.782 14.576H176c-5.769 0-11.263-2.878-14.697-7.697l-109.712-154c-14.406-20.223 14.994-42.818 29.394-22.606zM176.143 400v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.733 0-14-7.163-14-16zm75.428 0v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.732 0-14-7.163-14-16zM327 400v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.732 0-14-7.163-14-16z"],
|
||||
"hand-rock": [512, 512, [], "f255", "M408.864 79.052c-22.401-33.898-66.108-42.273-98.813-23.588-29.474-31.469-79.145-31.093-108.334-.022-47.16-27.02-108.71 5.055-110.671 60.806C44.846 105.407 0 140.001 0 187.429v56.953c0 32.741 14.28 63.954 39.18 85.634l97.71 85.081c4.252 3.702 3.11 5.573 3.11 32.903 0 17.673 14.327 32 32 32h252c17.673 0 32-14.327 32-32 0-23.513-1.015-30.745 3.982-42.37l42.835-99.656c6.094-14.177 9.183-29.172 9.183-44.568V146.963c0-52.839-54.314-88.662-103.136-67.911zM464 261.406a64.505 64.505 0 0 1-5.282 25.613l-42.835 99.655c-5.23 12.171-7.883 25.04-7.883 38.25V432H188v-10.286c0-16.37-7.14-31.977-19.59-42.817l-97.71-85.08C56.274 281.255 48 263.236 48 244.381v-56.953c0-33.208 52-33.537 52 .677v41.228a16 16 0 0 0 5.493 12.067l7 6.095A16 16 0 0 0 139 235.429V118.857c0-33.097 52-33.725 52 .677v26.751c0 8.836 7.164 16 16 16h7c8.836 0 16-7.164 16-16v-41.143c0-33.134 52-33.675 52 .677v40.466c0 8.836 7.163 16 16 16h7c8.837 0 16-7.164 16-16v-27.429c0-33.03 52-33.78 52 .677v26.751c0 8.836 7.163 16 16 16h7c8.837 0 16-7.164 16-16 0-33.146 52-33.613 52 .677v114.445z"],
|
||||
"hand-scissors": [512, 512, [], "f257", "M256 480l70-.013c5.114 0 10.231-.583 15.203-1.729l118.999-27.427C490.56 443.835 512 417.02 512 386.277V180.575c0-23.845-13.03-45.951-34.005-57.69l-97.999-54.853c-34.409-19.261-67.263-5.824-92.218 24.733L142.85 37.008c-37.887-14.579-80.612 3.727-95.642 41.201-15.098 37.642 3.635 80.37 41.942 95.112L168 192l-94-9.141c-40.804 0-74 32.811-74 73.14 0 40.33 33.196 73.141 74 73.141h87.635c-3.675 26.245 8.692 51.297 30.341 65.006C178.657 436.737 211.044 480 256 480zm0-48.013c-25.16 0-25.12-36.567 0-36.567 8.837 0 16-7.163 16-16v-6.856c0-8.837-7.163-16-16-16h-28c-25.159 0-25.122-36.567 0-36.567h28c8.837 0 16-7.163 16-16v-6.856c0-8.837-7.163-16-16-16H74c-34.43 0-34.375-50.281 0-50.281h182c8.837 0 16-7.163 16-16v-11.632a16 16 0 0 0-10.254-14.933L106.389 128.51c-31.552-12.14-13.432-59.283 19.222-46.717l166.549 64.091a16.001 16.001 0 0 0 18.139-4.812l21.764-26.647c5.82-7.127 16.348-9.064 24.488-4.508l98 54.854c5.828 3.263 9.449 9.318 9.449 15.805v205.701c0 8.491-5.994 15.804-14.576 17.782l-119.001 27.427a19.743 19.743 0 0 1-4.423.502h-70z"],
|
||||
"hand-spock": [512, 512, [], "f259", "M501.03053,116.17605c-19.39059-31.50779-51.24406-35.72849-66.31044-35.01756-14.11325-50.81051-62.0038-54.08-70.73816-54.08a74.03091,74.03091,0,0,0-72.23816,58.916l-4.64648,22.66014-13.68357-53.207c-9.09569-35.37107-46.412-64.05074-89.66-53.07223a73.89749,73.89749,0,0,0-55.121,78.94722,73.68273,73.68273,0,0,0-64.8495,94.42181l24.35933,82.19721c-38.24017-7.54492-62.79677,16.18358-68.11512,21.84764a73.6791,73.6791,0,0,0,3.19921,104.19329l91.36509,85.9765A154.164,154.164,0,0,0,220.62279,512h107.4549A127.30079,127.30079,0,0,0,452.3392,413.86139l57.623-241.96272A73.20274,73.20274,0,0,0,501.03053,116.17605Zm-37.7597,44.60544L405.64788,402.74812a79.46616,79.46616,0,0,1-77.57019,61.25972H220.62279a106.34052,106.34052,0,0,1-73.1366-28.998l-91.369-85.98041C31.34381,325.72669,66.61133,288.131,91.39644,311.5392l51.123,48.10739c5.42577,5.10937,13.48239.71679,13.48239-5.82617a246.79914,246.79914,0,0,0-10.17771-70.1523l-36.01362-121.539c-9.7324-32.88279,39.69916-47.27145,49.38664-14.625l31.3437,105.77923c5.59374,18.90428,33.78119,10.71288,28.9648-8.00781L177.06427,80.23662c-8.50389-33.1035,41.43157-45.64646,49.86515-12.83593l47.32609,184.035c4.42773,17.24218,29.16207,16.5039,32.71089-.80468l31.791-154.9706c6.81054-33.1074,57.51748-24.10741,50.11906,11.96288L360.32764,246.78924c-3.72265,18.10936,23.66793,24.63084,28.05659,6.21679L413.185,148.85962C421.1498,115.512,471.14,127.79713,463.27083,160.78149Z"],
|
||||
"handshake": [640, 512, [], "f2b5", "M519.2 127.9l-47.6-47.6A56.252 56.252 0 0 0 432 64H205.2c-14.8 0-29.1 5.9-39.6 16.3L118 127.9H0v255.7h64c17.6 0 31.8-14.2 31.9-31.7h9.1l84.6 76.4c30.9 25.1 73.8 25.7 105.6 3.8 12.5 10.8 26 15.9 41.1 15.9 18.2 0 35.3-7.4 48.8-24 22.1 8.7 48.2 2.6 64-16.8l26.2-32.3c5.6-6.9 9.1-14.8 10.9-23h57.9c.1 17.5 14.4 31.7 31.9 31.7h64V127.9H519.2zM48 351.6c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16c0 8.9-7.2 16-16 16zm390-6.9l-26.1 32.2c-2.8 3.4-7.8 4-11.3 1.2l-23.9-19.4-30 36.5c-6 7.3-15 4.8-18 2.4l-36.8-31.5-15.6 19.2c-13.9 17.1-39.2 19.7-55.3 6.6l-97.3-88H96V175.8h41.9l61.7-61.6c2-.8 3.7-1.5 5.7-2.3H262l-38.7 35.5c-29.4 26.9-31.1 72.3-4.4 101.3 14.8 16.2 61.2 41.2 101.5 4.4l8.2-7.5 108.2 87.8c3.4 2.8 3.9 7.9 1.2 11.3zm106-40.8h-69.2c-2.3-2.8-4.9-5.4-7.7-7.7l-102.7-83.4 12.5-11.4c6.5-6 7-16.1 1-22.6L367 167.1c-6-6.5-16.1-6.9-22.6-1l-55.2 50.6c-9.5 8.7-25.7 9.4-34.6 0-9.3-9.9-8.5-25.1 1.2-33.9l65.6-60.1c7.4-6.8 17-10.5 27-10.5l83.7-.2c2.1 0 4.1.8 5.5 2.3l61.7 61.6H544v128zm48 47.7c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16c0 8.9-7.2 16-16 16z"],
|
||||
"hdd": [576, 512, [], "f0a0", "M567.403 235.642L462.323 84.589A48 48 0 0 0 422.919 64H153.081a48 48 0 0 0-39.404 20.589L8.597 235.642A48.001 48.001 0 0 0 0 263.054V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V263.054c0-9.801-3-19.366-8.597-27.412zM153.081 112h269.838l77.913 112H75.168l77.913-112zM528 400H48V272h480v128zm-32-64c0 17.673-14.327 32-32 32s-32-14.327-32-32 14.327-32 32-32 32 14.327 32 32zm-96 0c0 17.673-14.327 32-32 32s-32-14.327-32-32 14.327-32 32-32 32 14.327 32 32z"],
|
||||
"heart": [512, 512, [], "f004", "M458.4 64.3C400.6 15.7 311.3 23 256 79.3 200.7 23 111.4 15.6 53.6 64.3-21.6 127.6-10.6 230.8 43 285.5l175.4 178.7c10 10.2 23.4 15.9 37.6 15.9 14.3 0 27.6-5.6 37.6-15.8L469 285.6c53.5-54.7 64.7-157.9-10.6-221.3zm-23.6 187.5L259.4 430.5c-2.4 2.4-4.4 2.4-6.8 0L77.2 251.8c-36.5-37.2-43.9-107.6 7.3-150.7 38.9-32.7 98.9-27.8 136.5 10.5l35 35.7 35-35.7c37.8-38.5 97.8-43.2 136.5-10.6 51.1 43.1 43.5 113.9 7.3 150.8z"],
|
||||
"hospital": [448, 512, [], "f0f8", "M128 244v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12zm140 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm-76 84v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm76 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm180 124v36H0v-36c0-6.627 5.373-12 12-12h19.5V85.035C31.5 73.418 42.245 64 55.5 64H144V24c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v40h88.5c13.255 0 24 9.418 24 21.035V464H436c6.627 0 12 5.373 12 12zM79.5 463H192v-67c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v67h112.5V112H304v24c0 13.255-10.745 24-24 24H168c-13.255 0-24-10.745-24-24v-24H79.5v351zM266 64h-26V38a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6V96h26a6 6 0 0 0 6-6V70a6 6 0 0 0-6-6z"],
|
||||
"hourglass": [384, 512, [], "f254", "M368 48h4c6.627 0 12-5.373 12-12V12c0-6.627-5.373-12-12-12H12C5.373 0 0 5.373 0 12v24c0 6.627 5.373 12 12 12h4c0 80.564 32.188 165.807 97.18 208C47.899 298.381 16 383.9 16 464h-4c-6.627 0-12 5.373-12 12v24c0 6.627 5.373 12 12 12h360c6.627 0 12-5.373 12-12v-24c0-6.627-5.373-12-12-12h-4c0-80.564-32.188-165.807-97.18-208C336.102 213.619 368 128.1 368 48zM64 48h256c0 101.62-57.307 184-128 184S64 149.621 64 48zm256 416H64c0-101.62 57.308-184 128-184s128 82.38 128 184z"],
|
||||
"id-badge": [384, 512, [], "f2c1", "M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm0 464H48V48h288v416zM144 112h96c8.8 0 16-7.2 16-16s-7.2-16-16-16h-96c-8.8 0-16 7.2-16 16s7.2 16 16 16zm48 176c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2z"],
|
||||
"id-card": [576, 512, [], "f2c2", "M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 400H303.2c.9-4.5.8 3.6.8-22.4 0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6 0 26-.2 17.9.8 22.4H48V144h480v288zm-168-80h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm-168 96c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z"],
|
||||
"image": [512, 512, [], "f03e", "M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 336H54a6 6 0 0 1-6-6V118a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v276a6 6 0 0 1-6 6zM128 152c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zM96 352h320v-80l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L192 304l-39.515-39.515c-4.686-4.686-12.284-4.686-16.971 0L96 304v48z"],
|
||||
"images": [576, 512, [], "f302", "M480 416v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v48H54a6 6 0 0 0-6 6v244a6 6 0 0 0 6 6h372a6 6 0 0 0 6-6v-10h48zm42-336H150a6 6 0 0 0-6 6v244a6 6 0 0 0 6 6h372a6 6 0 0 0 6-6V86a6 6 0 0 0-6-6zm6-48c26.51 0 48 21.49 48 48v256c0 26.51-21.49 48-48 48H144c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h384zM264 144c0 22.091-17.909 40-40 40s-40-17.909-40-40 17.909-40 40-40 40 17.909 40 40zm-72 96l39.515-39.515c4.686-4.686 12.284-4.686 16.971 0L288 240l103.515-103.515c4.686-4.686 12.284-4.686 16.971 0L480 208v80H192v-48z"],
|
||||
"keyboard": [576, 512, [], "f11c", "M528 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm8 336c0 4.411-3.589 8-8 8H48c-4.411 0-8-3.589-8-8V112c0-4.411 3.589-8 8-8h480c4.411 0 8 3.589 8 8v288zM170 270v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm-336 82v-28c0-6.627-5.373-12-12-12H82c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm384 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zM122 188v-28c0-6.627-5.373-12-12-12H82c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm-98 158v-16c0-6.627-5.373-12-12-12H180c-6.627 0-12 5.373-12 12v16c0 6.627 5.373 12 12 12h216c6.627 0 12-5.373 12-12z"],
|
||||
"kiss": [496, 512, [], "f596", "M168 176c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm136 132c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36C290.6 335.3 304 321 304 308zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm80-280c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z"],
|
||||
"kiss-beam": [496, 512, [], "f597", "M168 152c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2 7.2 5.6 8.3 3.5 1 7.5-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 5.9-4.5 5.6-8.3-3.1-42.1-32-71.4-55.8-71.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm56-148c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36C290.6 335.3 304 321 304 308zm24-156c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2 7.2 5.6 8.3 3.5 1 7.5-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 5.9-4.5 5.6-8.3-3.1-42.1-32-71.4-55.8-71.4z"],
|
||||
"kiss-wink-heart": [504, 512, [], "f598", "M304 308.5c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36 21.7-9.1 35.1-23.4 35.1-36.4zm70.5-83.5l9.5 8.5c3.8 3.3 9.3 4 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-4-25.2-34.2-42.1-59.8-42.1s-55.9 16.9-59.8 42.1c-.8 5 1.7 10 6.1 12.4 5.8 3.1 11.2.7 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0zM136 208.5c0 17.7 14.3 32 32 32s32-14.3 32-32-14.3-32-32-32-32 14.3-32 32zm365.1 194c-8-20.8-31.5-31.5-53.1-25.9l-8.4 2.2-2.3-8.4c-5.9-21.4-27-36.5-49-33-25.2 4-40.6 28.6-34 52.6l22.9 82.6c1.5 5.3 7 8.5 12.4 7.1l83-21.5c24.1-6.3 37.7-31.8 28.5-55.7zM334 436.3c-26.1 12.5-55.2 19.7-86 19.7-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200c0 22.1-3.7 43.3-10.4 63.2 9 6.4 17 14.2 22.6 23.9 6.4.1 12.6 1.4 18.6 2.9 10.9-27.9 17.1-58.2 17.1-90C496 119 385 8 248 8S0 119 0 256s111 248 248 248c35.4 0 68.9-7.5 99.4-20.9-2.5-7.3 4.3 17.2-13.4-46.8z"],
|
||||
"laugh": [496, 512, [], "f599", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM328 224c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm-160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm194.4 64H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z"],
|
||||
"laugh-beam": [496, 512, [], "f59a", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM328 152c-23.8 0-52.7 29.3-56 71.4-.7 8.6 10.8 11.9 14.9 4.5l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c4.1 7.4 15.6 4 14.9-4.5-3.1-42.1-32-71.4-55.8-71.4zm-201 75.9l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c4.1 7.4 15.6 4 14.9-4.5-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.6 8.5 10.9 11.9 15.1 4.5zM362.4 288H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z"],
|
||||
"laugh-squint": [496, 512, [], "f59b", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM343.6 196l33.6-40.3c8.6-10.3-3.8-24.8-15.4-18l-80 48c-7.8 4.7-7.8 15.9 0 20.6l80 48c11.5 6.8 24-7.6 15.4-18L343.6 196zm-209.4 58.3l80-48c7.8-4.7 7.8-15.9 0-20.6l-80-48c-11.6-6.9-24 7.7-15.4 18l33.6 40.3-33.6 40.3c-8.7 10.4 3.8 24.8 15.4 18zM362.4 288H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z"],
|
||||
"laugh-wink": [496, 512, [], "f59c", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6C68.8 359.6 48 309.4 48 256s20.8-103.6 58.6-141.4C144.4 76.8 194.6 56 248 56s103.6 20.8 141.4 58.6c37.8 37.8 58.6 88 58.6 141.4s-20.8 103.6-58.6 141.4zM328 164c-25.7 0-55.9 16.9-59.9 42.1-1.7 11.2 11.5 18.2 19.8 10.8l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c8.5 7.4 21.6.3 19.8-10.8-3.8-25.2-34-42.1-59.7-42.1zm-160 60c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm194.4 64H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z"],
|
||||
"lemon": [512, 512, [], "f094", "M484.112 27.889C455.989-.233 416.108-8.057 387.059 8.865 347.604 31.848 223.504-41.111 91.196 91.197-41.277 223.672 31.923 347.472 8.866 387.058c-16.922 29.051-9.1 68.932 19.022 97.054 28.135 28.135 68.011 35.938 97.057 19.021 39.423-22.97 163.557 49.969 295.858-82.329 132.474-132.477 59.273-256.277 82.331-295.861 16.922-29.05 9.1-68.931-19.022-97.054zm-22.405 72.894c-38.8 66.609 45.6 165.635-74.845 286.08-120.44 120.443-219.475 36.048-286.076 74.843-22.679 13.207-64.035-27.241-50.493-50.488 38.8-66.609-45.6-165.635 74.845-286.08C245.573 4.702 344.616 89.086 411.219 50.292c22.73-13.24 64.005 27.288 50.488 50.491zm-169.861 8.736c1.37 10.96-6.404 20.957-17.365 22.327-54.846 6.855-135.779 87.787-142.635 142.635-1.373 10.989-11.399 18.734-22.326 17.365-10.961-1.37-18.735-11.366-17.365-22.326 9.162-73.286 104.167-168.215 177.365-177.365 10.953-1.368 20.956 6.403 22.326 17.364z"],
|
||||
"life-ring": [512, 512, [], "f1cd", "M256 504c136.967 0 248-111.033 248-248S392.967 8 256 8 8 119.033 8 256s111.033 248 248 248zm-103.398-76.72l53.411-53.411c31.806 13.506 68.128 13.522 99.974 0l53.411 53.411c-63.217 38.319-143.579 38.319-206.796 0zM336 256c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zm91.28 103.398l-53.411-53.411c13.505-31.806 13.522-68.128 0-99.974l53.411-53.411c38.319 63.217 38.319 143.579 0 206.796zM359.397 84.72l-53.411 53.411c-31.806-13.505-68.128-13.522-99.973 0L152.602 84.72c63.217-38.319 143.579-38.319 206.795 0zM84.72 152.602l53.411 53.411c-13.506 31.806-13.522 68.128 0 99.974L84.72 359.398c-38.319-63.217-38.319-143.579 0-206.796z"],
|
||||
"lightbulb": [352, 512, [], "f0eb", "M176 80c-52.94 0-96 43.06-96 96 0 8.84 7.16 16 16 16s16-7.16 16-16c0-35.3 28.72-64 64-64 8.84 0 16-7.16 16-16s-7.16-16-16-16zM96.06 459.17c0 3.15.93 6.22 2.68 8.84l24.51 36.84c2.97 4.46 7.97 7.14 13.32 7.14h78.85c5.36 0 10.36-2.68 13.32-7.14l24.51-36.84c1.74-2.62 2.67-5.7 2.68-8.84l.05-43.18H96.02l.04 43.18zM176 0C73.72 0 0 82.97 0 176c0 44.37 16.45 84.85 43.56 115.78 16.64 18.99 42.74 58.8 52.42 92.16v.06h48v-.12c-.01-4.77-.72-9.51-2.15-14.07-5.59-17.81-22.82-64.77-62.17-109.67-20.54-23.43-31.52-53.15-31.61-84.14-.2-73.64 59.67-128 127.95-128 70.58 0 128 57.42 128 128 0 30.97-11.24 60.85-31.65 84.14-39.11 44.61-56.42 91.47-62.1 109.46a47.507 47.507 0 0 0-2.22 14.3v.1h48v-.05c9.68-33.37 35.78-73.18 52.42-92.16C335.55 260.85 352 220.37 352 176 352 78.8 273.2 0 176 0z"],
|
||||
"list-alt": [512, 512, [], "f022", "M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v340a6 6 0 0 1-6 6zm-42-92v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm-252 12c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36z"],
|
||||
"map": [576, 512, [], "f279", "M560.02 32c-1.96 0-3.98.37-5.96 1.16L384.01 96H384L212 35.28A64.252 64.252 0 0 0 191.76 32c-6.69 0-13.37 1.05-19.81 3.14L20.12 87.95A32.006 32.006 0 0 0 0 117.66v346.32C0 473.17 7.53 480 15.99 480c1.96 0 3.97-.37 5.96-1.16L192 416l172 60.71a63.98 63.98 0 0 0 40.05.15l151.83-52.81A31.996 31.996 0 0 0 576 394.34V48.02c0-9.19-7.53-16.02-15.98-16.02zM224 90.42l128 45.19v285.97l-128-45.19V90.42zM48 418.05V129.07l128-44.53v286.2l-.64.23L48 418.05zm480-35.13l-128 44.53V141.26l.64-.24L528 93.95v288.97z"],
|
||||
"meh": [496, 512, [], "f11a", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm8 144H160c-13.2 0-24 10.8-24 24s10.8 24 24 24h176c13.2 0 24-10.8 24-24s-10.8-24-24-24z"],
|
||||
"meh-blank": [496, 512, [], "f5a4", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-280c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z"],
|
||||
"meh-rolling-eyes": [496, 512, [], "f5a5", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm88-304c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm0 112c-22.1 0-40-17.9-40-40 0-13.6 7.3-25.1 17.7-32.3-1 2.6-1.7 5.3-1.7 8.3 0 13.3 10.7 24 24 24s24-10.7 24-24c0-2.9-.7-5.7-1.7-8.3 10.4 7.2 17.7 18.7 17.7 32.3 0 22.1-17.9 40-40 40zm-104-40c0-39.8-32.2-72-72-72s-72 32.2-72 72 32.2 72 72 72 72-32.2 72-72zm-112 0c0-13.6 7.3-25.1 17.7-32.3-1 2.6-1.7 5.3-1.7 8.3 0 13.3 10.7 24 24 24s24-10.7 24-24c0-2.9-.7-5.7-1.7-8.3 10.4 7.2 17.7 18.7 17.7 32.3 0 22.1-17.9 40-40 40s-40-17.9-40-40zm192 128H184c-13.2 0-24 10.8-24 24s10.8 24 24 24h128c13.2 0 24-10.8 24-24s-10.8-24-24-24z"],
|
||||
"minus-square": [448, 512, [], "f146", "M108 284c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h232c6.6 0 12 5.4 12 12v32c0 6.6-5.4 12-12 12H108zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"],
|
||||
"money-bill-alt": [640, 512, [], "f3d1", "M320 144c-53.02 0-96 50.14-96 112 0 61.85 42.98 112 96 112 53 0 96-50.13 96-112 0-61.86-42.98-112-96-112zm40 168c0 4.42-3.58 8-8 8h-64c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h16v-55.44l-.47.31a7.992 7.992 0 0 1-11.09-2.22l-8.88-13.31a7.992 7.992 0 0 1 2.22-11.09l15.33-10.22a23.99 23.99 0 0 1 13.31-4.03H328c4.42 0 8 3.58 8 8v88h16c4.42 0 8 3.58 8 8v16zM608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zm-16 272c-35.35 0-64 28.65-64 64H112c0-35.35-28.65-64-64-64V176c35.35 0 64-28.65 64-64h416c0 35.35 28.65 64 64 64v160z"],
|
||||
"moon": [512, 512, [], "f186", "M279.135 512c78.756 0 150.982-35.804 198.844-94.775 28.27-34.831-2.558-85.722-46.249-77.401-82.348 15.683-158.272-47.268-158.272-130.792 0-48.424 26.06-92.292 67.434-115.836 38.745-22.05 28.999-80.788-15.022-88.919A257.936 257.936 0 0 0 279.135 0c-141.36 0-256 114.575-256 256 0 141.36 114.576 256 256 256zm0-464c12.985 0 25.689 1.201 38.016 3.478-54.76 31.163-91.693 90.042-91.693 157.554 0 113.848 103.641 199.2 215.252 177.944C402.574 433.964 344.366 464 279.135 464c-114.875 0-208-93.125-208-208s93.125-208 208-208z"],
|
||||
"newspaper": [576, 512, [], "f1ea", "M552 64H112c-20.858 0-38.643 13.377-45.248 32H24c-13.255 0-24 10.745-24 24v272c0 30.928 25.072 56 56 56h496c13.255 0 24-10.745 24-24V88c0-13.255-10.745-24-24-24zM48 392V144h16v248c0 4.411-3.589 8-8 8s-8-3.589-8-8zm480 8H111.422c.374-2.614.578-5.283.578-8V112h416v288zM172 280h136c6.627 0 12-5.373 12-12v-96c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v96c0 6.627 5.373 12 12 12zm28-80h80v40h-80v-40zm-40 140v-24c0-6.627 5.373-12 12-12h136c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H172c-6.627 0-12-5.373-12-12zm192 0v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12zm0-144v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12zm0 72v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12z"],
|
||||
"object-group": [512, 512, [], "f247", "M500 128c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12H96V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v72c0 6.627 5.373 12 12 12h12v256H12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h320v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12V128h12zm-52-64h32v32h-32V64zM32 64h32v32H32V64zm32 384H32v-32h32v32zm416 0h-32v-32h32v32zm-40-64h-12c-6.627 0-12 5.373-12 12v12H96v-12c0-6.627-5.373-12-12-12H72V128h12c6.627 0 12-5.373 12-12v-12h320v12c0 6.627 5.373 12 12 12h12v256zm-36-192h-84v-52c0-6.628-5.373-12-12-12H108c-6.627 0-12 5.372-12 12v168c0 6.628 5.373 12 12 12h84v52c0 6.628 5.373 12 12 12h200c6.627 0 12-5.372 12-12V204c0-6.628-5.373-12-12-12zm-268-24h144v112H136V168zm240 176H232v-24h76c6.627 0 12-5.372 12-12v-76h56v112z"],
|
||||
"object-ungroup": [576, 512, [], "f248", "M564 224c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12h-88v-24h12c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12H96V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v72c0 6.627 5.373 12 12 12h12v160H12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h88v24h-12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h224v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12V224h12zM352 64h32v32h-32V64zm0 256h32v32h-32v-32zM64 352H32v-32h32v32zm0-256H32V64h32v32zm32 216v-12c0-6.627-5.373-12-12-12H72V128h12c6.627 0 12-5.373 12-12v-12h224v12c0 6.627 5.373 12 12 12h12v160h-12c-6.627 0-12 5.373-12 12v12H96zm128 136h-32v-32h32v32zm280-64h-12c-6.627 0-12 5.373-12 12v12H256v-12c0-6.627-5.373-12-12-12h-12v-24h88v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12v-88h88v12c0 6.627 5.373 12 12 12h12v160zm40 64h-32v-32h32v32zm0-256h-32v-32h32v32z"],
|
||||
"paper-plane": [512, 512, [], "f1d8", "M440 6.5L24 246.4c-34.4 19.9-31.1 70.8 5.7 85.9L144 379.6V464c0 46.4 59.2 65.5 86.6 28.6l43.8-59.1 111.9 46.2c5.9 2.4 12.1 3.6 18.3 3.6 8.2 0 16.3-2.1 23.6-6.2 12.8-7.2 21.6-20 23.9-34.5l59.4-387.2c6.1-40.1-36.9-68.8-71.5-48.9zM192 464v-64.6l36.6 15.1L192 464zm212.6-28.7l-153.8-63.5L391 169.5c10.7-15.5-9.5-33.5-23.7-21.2L155.8 332.6 48 288 464 48l-59.4 387.3z"],
|
||||
"pause-circle": [512, 512, [], "f28b", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm96-280v160c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16zm-112 0v160c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16z"],
|
||||
"play-circle": [512, 512, [], "f144", "M371.7 238l-176-107c-15.8-8.8-35.7 2.5-35.7 21v208c0 18.4 19.8 29.8 35.7 21l176-101c16.4-9.1 16.4-32.8 0-42zM504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256z"],
|
||||
"plus-square": [448, 512, [], "f0fe", "M352 240v32c0 6.6-5.4 12-12 12h-88v88c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-88h-88c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h88v-88c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v88h88c6.6 0 12 5.4 12 12zm96-160v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"],
|
||||
"question-circle": [512, 512, [], "f059", "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z"],
|
||||
"registered": [512, 512, [], "f25d", "M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 448c-110.532 0-200-89.451-200-200 0-110.531 89.451-200 200-200 110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200zm110.442-81.791c-53.046-96.284-50.25-91.468-53.271-96.085 24.267-13.879 39.482-41.563 39.482-73.176 0-52.503-30.247-85.252-101.498-85.252h-78.667c-6.617 0-12 5.383-12 12V380c0 6.617 5.383 12 12 12h38.568c6.617 0 12-5.383 12-12v-83.663h31.958l47.515 89.303a11.98 11.98 0 0 0 10.593 6.36h42.81c9.14 0 14.914-9.799 10.51-17.791zM256.933 239.906h-33.875v-64.14h27.377c32.417 0 38.929 12.133 38.929 31.709-.001 20.913-11.518 32.431-32.431 32.431z"],
|
||||
"sad-cry": [496, 512, [], "f5b3", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm144 386.4V280c0-13.2-10.8-24-24-24s-24 10.8-24 24v151.4C315.5 447 282.8 456 248 456s-67.5-9-96-24.6V280c0-13.2-10.8-24-24-24s-24 10.8-24 24v114.4c-34.6-36-56-84.7-56-138.4 0-110.3 89.7-200 200-200s200 89.7 200 200c0 53.7-21.4 102.5-56 138.4zM205.8 234.5c4.4-2.4 6.9-7.4 6.1-12.4-4-25.2-34.2-42.1-59.8-42.1s-55.9 16.9-59.8 42.1c-.8 5 1.7 10 6.1 12.4 4.4 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.3 7.9 4.8 13.7 1.6zM344 180c-25.7 0-55.9 16.9-59.8 42.1-.8 5 1.7 10 6.1 12.4 4.5 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.2 8 4.7 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-3.9-25.2-34.1-42.1-59.8-42.1zm-96 92c-30.9 0-56 28.7-56 64s25.1 64 56 64 56-28.7 56-64-25.1-64-56-64z"],
|
||||
"sad-tear": [496, 512, [], "f5b4", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm8-152c-13.2 0-24 10.8-24 24s10.8 24 24 24c23.8 0 46.3 10.5 61.6 28.8 8.1 9.8 23.2 11.9 33.8 3.1 10.2-8.5 11.6-23.6 3.1-33.8C330 320.8 294.1 304 256 304zm-88-64c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-165.6 98.8C151 290.1 126 325.4 126 342.9c0 22.7 18.8 41.1 42 41.1s42-18.4 42-41.1c0-17.5-25-52.8-36.4-68.1-2.8-3.7-8.4-3.7-11.2 0z"],
|
||||
"save": [448, 512, [], "f0c7", "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM272 80v80H144V80h128zm122 352H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h42v104c0 13.255 10.745 24 24 24h176c13.255 0 24-10.745 24-24V83.882l78.243 78.243a6 6 0 0 1 1.757 4.243V426a6 6 0 0 1-6 6zM224 232c-48.523 0-88 39.477-88 88s39.477 88 88 88 88-39.477 88-88-39.477-88-88-88zm0 128c-22.056 0-40-17.944-40-40s17.944-40 40-40 40 17.944 40 40-17.944 40-40 40z"],
|
||||
"share-square": [576, 512, [], "f14d", "M561.938 158.06L417.94 14.092C387.926-15.922 336 5.097 336 48.032v57.198c-42.45 1.88-84.03 6.55-120.76 17.99-35.17 10.95-63.07 27.58-82.91 49.42C108.22 199.2 96 232.6 96 271.94c0 61.697 33.178 112.455 84.87 144.76 37.546 23.508 85.248-12.651 71.02-55.74-15.515-47.119-17.156-70.923 84.11-78.76V336c0 42.993 51.968 63.913 81.94 33.94l143.998-144c18.75-18.74 18.75-49.14 0-67.88zM384 336V232.16C255.309 234.082 166.492 255.35 206.31 376 176.79 357.55 144 324.08 144 271.94c0-109.334 129.14-118.947 240-119.85V48l144 144-144 144zm24.74 84.493a82.658 82.658 0 0 0 20.974-9.303c7.976-4.952 18.286.826 18.286 10.214V464c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h132c6.627 0 12 5.373 12 12v4.486c0 4.917-2.987 9.369-7.569 11.152-13.702 5.331-26.396 11.537-38.05 18.585a12.138 12.138 0 0 1-6.28 1.777H54a6 6 0 0 0-6 6v340a6 6 0 0 0 6 6h340a6 6 0 0 0 6-6v-25.966c0-5.37 3.579-10.059 8.74-11.541z"],
|
||||
"smile": [496, 512, [], "f118", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm4 72.6c-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.7-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8-10.1-8.4-25.3-7.1-33.8 3.1z"],
|
||||
"smile-beam": [496, 512, [], "f5b8", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm84-143.4c-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.6-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8-10.2-8.4-25.3-7.1-33.8 3.1zM136.5 211c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.4 1.1 7.4-.5 9.3-3.7l9.5-17zM328 152c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4z"],
|
||||
"smile-wink": [496, 512, [], "f4da", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm117.8-146.4c-10.2-8.5-25.3-7.1-33.8 3.1-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.7-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8zM168 240c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-60c-25.7 0-55.9 16.9-59.9 42.1-1.7 11.2 11.5 18.2 19.8 10.8l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c8.5 7.4 21.6.3 19.8-10.8-3.8-25.2-34-42.1-59.7-42.1z"],
|
||||
"snowflake": [448, 512, [], "f2dc", "M440.1 355.2l-39.2-23 34.1-9.3c8.4-2.3 13.4-11.1 11.1-19.6l-4.1-15.5c-2.2-8.5-10.9-13.6-19.3-11.3L343 298.2 271.2 256l71.9-42.2 79.7 21.7c8.4 2.3 17-2.8 19.3-11.3l4.1-15.5c2.2-8.5-2.7-17.3-11.1-19.6l-34.1-9.3 39.2-23c7.5-4.4 10.1-14.2 5.8-21.9l-7.9-13.9c-4.3-7.7-14-10.3-21.5-5.9l-39.2 23 9.1-34.7c2.2-8.5-2.7-17.3-11.1-19.6l-15.2-4.1c-8.4-2.3-17 2.8-19.3 11.3l-21.3 81-71.9 42.2v-84.5L306 70.4c6.1-6.2 6.1-16.4 0-22.6l-11.1-11.3c-6.1-6.2-16.1-6.2-22.2 0l-24.9 25.4V16c0-8.8-7-16-15.7-16h-15.7c-8.7 0-15.7 7.2-15.7 16v46.1l-24.9-25.4c-6.1-6.2-16.1-6.2-22.2 0L142.1 48c-6.1 6.2-6.1 16.4 0 22.6l58.3 59.3v84.5l-71.9-42.2-21.3-81c-2.2-8.5-10.9-13.6-19.3-11.3L72.7 84c-8.4 2.3-13.4 11.1-11.1 19.6l9.1 34.7-39.2-23c-7.5-4.4-17.1-1.8-21.5 5.9l-7.9 13.9c-4.3 7.7-1.8 17.4 5.8 21.9l39.2 23-34.1 9.1c-8.4 2.3-13.4 11.1-11.1 19.6L6 224.2c2.2 8.5 10.9 13.6 19.3 11.3l79.7-21.7 71.9 42.2-71.9 42.2-79.7-21.7c-8.4-2.3-17 2.8-19.3 11.3l-4.1 15.5c-2.2 8.5 2.7 17.3 11.1 19.6l34.1 9.3-39.2 23c-7.5 4.4-10.1 14.2-5.8 21.9L10 391c4.3 7.7 14 10.3 21.5 5.9l39.2-23-9.1 34.7c-2.2 8.5 2.7 17.3 11.1 19.6l15.2 4.1c8.4 2.3 17-2.8 19.3-11.3l21.3-81 71.9-42.2v84.5l-58.3 59.3c-6.1 6.2-6.1 16.4 0 22.6l11.1 11.3c6.1 6.2 16.1 6.2 22.2 0l24.9-25.4V496c0 8.8 7 16 15.7 16h15.7c8.7 0 15.7-7.2 15.7-16v-46.1l24.9 25.4c6.1 6.2 16.1 6.2 22.2 0l11.1-11.3c6.1-6.2 6.1-16.4 0-22.6l-58.3-59.3v-84.5l71.9 42.2 21.3 81c2.2 8.5 10.9 13.6 19.3 11.3L375 428c8.4-2.3 13.4-11.1 11.1-19.6l-9.1-34.7 39.2 23c7.5 4.4 17.1 1.8 21.5-5.9l7.9-13.9c4.6-7.5 2.1-17.3-5.5-21.7z"],
|
||||
"square": [448, 512, [], "f0c8", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-6 400H54c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h340c3.3 0 6 2.7 6 6v340c0 3.3-2.7 6-6 6z"],
|
||||
"star": [576, 512, [], "f005", "M528.1 171.5L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6zM388.6 312.3l23.7 138.4L288 385.4l-124.3 65.3 23.7-138.4-100.6-98 139-20.2 62.2-126 62.2 126 139 20.2-100.6 98z"],
|
||||
"star-half": [576, 512, [], "f089", "M288 385.3l-124.3 65.4 23.7-138.4-100.6-98 139-20.2 62.2-126V0c-11.4 0-22.8 5.9-28.7 17.8L194 150.2 47.9 171.4c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.1 23 46 46.4 33.7L288 439.6v-54.3z"],
|
||||
"sticky-note": [448, 512, [], "f249", "M448 348.106V80c0-26.51-21.49-48-48-48H48C21.49 32 0 53.49 0 80v351.988c0 26.51 21.49 48 48 48h268.118a48 48 0 0 0 33.941-14.059l83.882-83.882A48 48 0 0 0 448 348.106zm-128 80v-76.118h76.118L320 428.106zM400 80v223.988H296c-13.255 0-24 10.745-24 24v104H48V80h352z"],
|
||||
"stop-circle": [512, 512, [], "f28d", "M504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256zm296-80v160c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16z"],
|
||||
"sun": [512, 512, [], "f185", "M494.2 221.9l-59.8-40.5 13.7-71c2.6-13.2-1.6-26.8-11.1-36.4-9.6-9.5-23.2-13.7-36.2-11.1l-70.9 13.7-40.4-59.9c-15.1-22.3-51.9-22.3-67 0l-40.4 59.9-70.8-13.7C98 60.4 84.5 64.5 75 74.1c-9.5 9.6-13.7 23.1-11.1 36.3l13.7 71-59.8 40.5C6.6 229.5 0 242 0 255.5s6.7 26 17.8 33.5l59.8 40.5-13.7 71c-2.6 13.2 1.6 26.8 11.1 36.3 9.5 9.5 22.9 13.7 36.3 11.1l70.8-13.7 40.4 59.9C230 505.3 242.6 512 256 512s26-6.7 33.5-17.8l40.4-59.9 70.9 13.7c13.4 2.7 26.8-1.6 36.3-11.1 9.5-9.5 13.6-23.1 11.1-36.3l-13.7-71 59.8-40.5c11.1-7.5 17.8-20.1 17.8-33.5-.1-13.6-6.7-26.1-17.9-33.7zm-112.9 85.6l17.6 91.2-91-17.6L256 458l-51.9-77-90.9 17.6 17.6-91.2-76.8-52 76.8-52-17.6-91.2 91 17.6L256 53l51.9 76.9 91-17.6-17.6 91.1 76.8 52-76.8 52.1zM256 152c-57.3 0-104 46.7-104 104s46.7 104 104 104 104-46.7 104-104-46.7-104-104-104zm0 160c-30.9 0-56-25.1-56-56s25.1-56 56-56 56 25.1 56 56-25.1 56-56 56z"],
|
||||
"surprise": [496, 512, [], "f5c2", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm0-176c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm-48-72c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32zm128-32c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z"],
|
||||
"thumbs-down": [512, 512, [], "f165", "M466.27 225.31c4.674-22.647.864-44.538-8.99-62.99 2.958-23.868-4.021-48.565-17.34-66.99C438.986 39.423 404.117 0 327 0c-7 0-15 .01-22.22.01C201.195.01 168.997 40 128 40h-10.845c-5.64-4.975-13.042-8-21.155-8H32C14.327 32 0 46.327 0 64v240c0 17.673 14.327 32 32 32h64c11.842 0 22.175-6.438 27.708-16h7.052c19.146 16.953 46.013 60.653 68.76 83.4 13.667 13.667 10.153 108.6 71.76 108.6 57.58 0 95.27-31.936 95.27-104.73 0-18.41-3.93-33.73-8.85-46.54h36.48c48.602 0 85.82-41.565 85.82-85.58 0-19.15-4.96-34.99-13.73-49.84zM64 296c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zm330.18 16.73H290.19c0 37.82 28.36 55.37 28.36 94.54 0 23.75 0 56.73-47.27 56.73-18.91-18.91-9.46-66.18-37.82-94.54C206.9 342.89 167.28 272 138.92 272H128V85.83c53.611 0 100.001-37.82 171.64-37.82h37.82c35.512 0 60.82 17.12 53.12 65.9 15.2 8.16 26.5 36.44 13.94 57.57 21.581 20.384 18.699 51.065 5.21 65.62 9.45 0 22.36 18.91 22.27 37.81-.09 18.91-16.71 37.82-37.82 37.82z"],
|
||||
"thumbs-up": [512, 512, [], "f164", "M466.27 286.69C475.04 271.84 480 256 480 236.85c0-44.015-37.218-85.58-85.82-85.58H357.7c4.92-12.81 8.85-28.13 8.85-46.54C366.55 31.936 328.86 0 271.28 0c-61.607 0-58.093 94.933-71.76 108.6-22.747 22.747-49.615 66.447-68.76 83.4H32c-17.673 0-32 14.327-32 32v240c0 17.673 14.327 32 32 32h64c14.893 0 27.408-10.174 30.978-23.95 44.509 1.001 75.06 39.94 177.802 39.94 7.22 0 15.22.01 22.22.01 77.117 0 111.986-39.423 112.94-95.33 13.319-18.425 20.299-43.122 17.34-66.99 9.854-18.452 13.664-40.343 8.99-62.99zm-61.75 53.83c12.56 21.13 1.26 49.41-13.94 57.57 7.7 48.78-17.608 65.9-53.12 65.9h-37.82c-71.639 0-118.029-37.82-171.64-37.82V240h10.92c28.36 0 67.98-70.89 94.54-97.46 28.36-28.36 18.91-75.63 37.82-94.54 47.27 0 47.27 32.98 47.27 56.73 0 39.17-28.36 56.72-28.36 94.54h103.99c21.11 0 37.73 18.91 37.82 37.82.09 18.9-12.82 37.81-22.27 37.81 13.489 14.555 16.371 45.236-5.21 65.62zM88 432c0 13.255-10.745 24-24 24s-24-10.745-24-24 10.745-24 24-24 24 10.745 24 24z"],
|
||||
"times-circle": [512, 512, [], "f057", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm101.8-262.2L295.6 256l62.2 62.2c4.7 4.7 4.7 12.3 0 17l-22.6 22.6c-4.7 4.7-12.3 4.7-17 0L256 295.6l-62.2 62.2c-4.7 4.7-12.3 4.7-17 0l-22.6-22.6c-4.7-4.7-4.7-12.3 0-17l62.2-62.2-62.2-62.2c-4.7-4.7-4.7-12.3 0-17l22.6-22.6c4.7-4.7 12.3-4.7 17 0l62.2 62.2 62.2-62.2c4.7-4.7 12.3-4.7 17 0l22.6 22.6c4.7 4.7 4.7 12.3 0 17z"],
|
||||
"tired": [496, 512, [], "f5c8", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm129.1-303.8c-3.8-4.4-10.3-5.4-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48c5.4 3.2 11.8 1.6 15.3-2.5 3.8-4.5 3.9-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11.1-.1-15.5zM220 208c0-4.2-2.2-8.1-5.8-10.3l-80-48c-5-3-11.5-1.9-15.3 2.5-3.8 4.5-3.9 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11 .1 15.5 3.5 4.1 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3zm28 64c-45.4 0-100.9 38.3-107.8 93.3-1.5 11.8 6.9 21.6 15.5 17.9C178.4 373.5 212 368 248 368s69.6 5.5 92.3 15.2c8.5 3.7 17-6 15.5-17.9-6.9-55-62.4-93.3-107.8-93.3z"],
|
||||
"trash-alt": [448, 512, [], "f2ed", "M268 416h24a12 12 0 0 0 12-12V188a12 12 0 0 0-12-12h-24a12 12 0 0 0-12 12v216a12 12 0 0 0 12 12zM432 80h-82.41l-34-56.7A48 48 0 0 0 274.41 0H173.59a48 48 0 0 0-41.16 23.3L98.41 80H16A16 16 0 0 0 0 96v16a16 16 0 0 0 16 16h16v336a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128h16a16 16 0 0 0 16-16V96a16 16 0 0 0-16-16zM171.84 50.91A6 6 0 0 1 177 48h94a6 6 0 0 1 5.15 2.91L293.61 80H154.39zM368 464H80V128h288zm-212-48h24a12 12 0 0 0 12-12V188a12 12 0 0 0-12-12h-24a12 12 0 0 0-12 12v216a12 12 0 0 0 12 12z"],
|
||||
"user": [448, 512, [], "f007", "M313.6 304c-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z"],
|
||||
"user-circle": [496, 512, [], "f2bd", "M248 104c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-240C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-49.7 0-95.1-18.3-130.1-48.4 14.9-23 40.4-38.6 69.6-39.5 20.8 6.4 40.6 9.6 60.5 9.6s39.7-3.1 60.5-9.6c29.2 1 54.7 16.5 69.6 39.5-35 30.1-80.4 48.4-130.1 48.4zm162.7-84.1c-24.4-31.4-62.1-51.9-105.1-51.9-10.2 0-26 9.6-57.6 9.6-31.5 0-47.4-9.6-57.6-9.6-42.9 0-80.6 20.5-105.1 51.9C61.9 339.2 48 299.2 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 43.2-13.9 83.2-37.3 115.9z"],
|
||||
"window-close": [512, 512, [], "f410", "M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 394c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h404c3.3 0 6 2.7 6 6v340zM356.5 194.6L295.1 256l61.4 61.4c4.6 4.6 4.6 12.1 0 16.8l-22.3 22.3c-4.6 4.6-12.1 4.6-16.8 0L256 295.1l-61.4 61.4c-4.6 4.6-12.1 4.6-16.8 0l-22.3-22.3c-4.6-4.6-4.6-12.1 0-16.8l61.4-61.4-61.4-61.4c-4.6-4.6-4.6-12.1 0-16.8l22.3-22.3c4.6-4.6 12.1-4.6 16.8 0l61.4 61.4 61.4-61.4c4.6-4.6 12.1-4.6 16.8 0l22.3 22.3c4.7 4.6 4.7 12.1 0 16.8z"],
|
||||
"window-maximize": [512, 512, [], "f2d0", "M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 394c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V192h416v234z"],
|
||||
"window-minimize": [512, 512, [], "f2d1", "M480 480H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h448c17.7 0 32 14.3 32 32s-14.3 32-32 32z"],
|
||||
"window-restore": [512, 512, [], "f2d2", "M464 0H144c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v320c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h48c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-96 464H48V256h320v208zm96-96h-48V144c0-26.5-21.5-48-48-48H144V48h320v320z"]
|
||||
};
|
||||
|
||||
bunker(function () {
|
||||
defineIcons('far', icons);
|
||||
});
|
||||
|
||||
}());
|
||||
@@ -1,143 +0,0 @@
|
||||
/*
|
||||
* Lazy Load - jQuery plugin for lazy loading images
|
||||
*
|
||||
* Copyright (c) 2007-2011 Mika Tuupola
|
||||
*
|
||||
* Licensed under the MIT license:
|
||||
* http://www.opensource.org/licenses/mit-license.php
|
||||
*
|
||||
* Project home:
|
||||
* http://www.appelsiini.net/projects/lazyload
|
||||
*
|
||||
* Version: 1.6.0-dev
|
||||
*
|
||||
*/
|
||||
(function($) {
|
||||
|
||||
$.fn.lazyload = function(options) {
|
||||
var settings = {
|
||||
threshold : 0,
|
||||
failurelimit : 0,
|
||||
event : "scroll",
|
||||
effect : "show",
|
||||
container : window
|
||||
};
|
||||
|
||||
if(options) {
|
||||
$.extend(settings, options);
|
||||
}
|
||||
|
||||
/* Fire one scroll event per scroll. Not one scroll event per image. */
|
||||
var elements = this;
|
||||
if ("scroll" == settings.event) {
|
||||
$(settings.container).bind("scroll", function(event) {
|
||||
var counter = 0;
|
||||
elements.each(function() {
|
||||
if ($.abovethetop(this, settings) ||
|
||||
$.leftofbegin(this, settings)) {
|
||||
/* Nothing. */
|
||||
} else if (!$.belowthefold(this, settings) &&
|
||||
!$.rightoffold(this, settings)) {
|
||||
$(this).trigger("appear");
|
||||
} else {
|
||||
if (counter++ > settings.failurelimit) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
/* Remove image from array so it is not looped next time. */
|
||||
var temp = $.grep(elements, function(element) {
|
||||
return !element.loaded;
|
||||
});
|
||||
elements = $(temp);
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
this.each(function() {
|
||||
var self = this;
|
||||
self.loaded = false;
|
||||
|
||||
/* When appear is triggered load original image. */
|
||||
$(self).one("appear", function() {
|
||||
if (!this.loaded) {
|
||||
$("<img />")
|
||||
.bind("load", function() {
|
||||
$(self)
|
||||
.hide()
|
||||
.attr("src", $(self).data("original"))
|
||||
[settings.effect](settings.effectspeed);
|
||||
self.loaded = true;
|
||||
})
|
||||
.attr("src", $(self).data("original"));
|
||||
};
|
||||
});
|
||||
|
||||
/* When wanted event is triggered load original image */
|
||||
/* by triggering appear. */
|
||||
if ("scroll" != settings.event) {
|
||||
$(self).bind(settings.event, function(event) {
|
||||
if (!self.loaded) {
|
||||
$(self).trigger("appear");
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
/* Force initial check if images should appear. */
|
||||
$(settings.container).trigger(settings.event);
|
||||
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
/* Convenience methods in jQuery namespace. */
|
||||
/* Use as $.belowthefold(element, {threshold : 100, container : window}) */
|
||||
|
||||
$.belowthefold = function(element, settings) {
|
||||
if (settings.container === undefined || settings.container === window) {
|
||||
var fold = $(window).height() + $(window).scrollTop();
|
||||
} else {
|
||||
var fold = $(settings.container).offset().top + $(settings.container).height();
|
||||
}
|
||||
return fold <= $(element).offset().top - settings.threshold;
|
||||
};
|
||||
|
||||
$.rightoffold = function(element, settings) {
|
||||
if (settings.container === undefined || settings.container === window) {
|
||||
var fold = $(window).width() + $(window).scrollLeft();
|
||||
} else {
|
||||
var fold = $(settings.container).offset().left + $(settings.container).width();
|
||||
}
|
||||
return fold <= $(element).offset().left - settings.threshold;
|
||||
};
|
||||
|
||||
$.abovethetop = function(element, settings) {
|
||||
if (settings.container === undefined || settings.container === window) {
|
||||
var fold = $(window).scrollTop();
|
||||
} else {
|
||||
var fold = $(settings.container).offset().top;
|
||||
}
|
||||
return fold >= $(element).offset().top + settings.threshold + $(element).height();
|
||||
};
|
||||
|
||||
$.leftofbegin = function(element, settings) {
|
||||
if (settings.container === undefined || settings.container === window) {
|
||||
var fold = $(window).scrollLeft();
|
||||
} else {
|
||||
var fold = $(settings.container).offset().left;
|
||||
}
|
||||
return fold >= $(element).offset().left + settings.threshold + $(element).width();
|
||||
};
|
||||
/* Custom selectors for your convenience. */
|
||||
/* Use as $("img:below-the-fold").something() */
|
||||
|
||||
$.extend($.expr[':'], {
|
||||
"below-the-fold" : "$.belowthefold(a, {threshold : 0, container: window})",
|
||||
"above-the-fold" : "!$.belowthefold(a, {threshold : 0, container: window})",
|
||||
"right-of-fold" : "$.rightoffold(a, {threshold : 0, container: window})",
|
||||
"left-of-fold" : "!$.rightoffold(a, {threshold : 0, container: window})"
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||