mirror of
https://github.com/avecms/AVE.cms.git
synced 2026-08-01 08:45:44 +00:00
119 lines
30 KiB
Twig
119 lines
30 KiB
Twig
{% extends '@adminx/main.twig' %}
|
||
{% block title %}{{ catalog.rubric_title }} · Каталог{% endblock %}
|
||
{% macro rows(items, can_manage, level) %}
|
||
{% set level = level|default(0) %}
|
||
{% for item in items %}
|
||
<li class="catalog-tree-item{{ item.status ? '' : ' is-inactive' }}" data-catalog-item data-id="{{ item.id }}" data-parent-id="{{ item.parent_id }}" data-position="{{ item.position }}" data-level="{{ level }}" data-filter-count="{{ item.filters_use|length }}" style="--catalog-indent:{{ level > 10 ? 280 : level * 28 }}px">
|
||
<div class="catalog-tree-row" data-catalog-builder-item="{{ item.id }}">
|
||
<button class="catalog-drag" type="button" aria-label="Перетащить раздел" data-tooltip="Перетащить раздел вместе с подразделами" data-catalog-drag-handle{{ can_manage ? '' : ' disabled' }}><i class="ti ti-grip-vertical"></i></button>
|
||
<span class="catalog-tree-position" data-tooltip="Позиция внутри уровня">{{ item.position + 1 }}</span>
|
||
<div class="catalog-tree-name"><b>{{ item.name }}</b><small>#{{ item.id }}{% if item.document_id %} · документ #{{ item.document_id }}{% endif %}</small></div>
|
||
<div class="catalog-tree-meta"><span class="badge badge-gray" data-catalog-level-badge>уровень {{ level + 1 }}</span><span class="catalog-tree-count" data-tooltip="Поля / фильтры">{{ item.fields_use|length }} / {{ item.filters_use|length }}</span></div>
|
||
<div class="catalog-tree-status"><span data-catalog-item-status-label>{{ item.status ? 'активен' : 'скрыт' }}</span><label class="switch" data-tooltip="{{ item.status ? 'Скрыть раздел' : 'Включить раздел' }}"><input type="checkbox" data-catalog-item-status="{{ item.id }}"{{ item.status ? ' checked' : '' }} aria-label="{{ item.status ? 'Скрыть раздел' : 'Включить раздел' }}"></label></div>
|
||
{% if can_manage %}<div class="catalog-tree-actions"><button class="btn btn-ghost btn-icon btn-sm catalog-action-level" type="button" data-catalog-item-indent="-1" data-tooltip="Поднять на уровень выше"{{ level == 0 ? ' disabled' : '' }}><i class="ti ti-arrow-left"></i></button><button class="btn btn-ghost btn-icon btn-sm catalog-action-level" type="button" data-catalog-item-indent="1" data-tooltip="Сделать подразделом"><i class="ti ti-arrow-right"></i></button><button class="btn btn-ghost btn-icon btn-sm catalog-action-sibling" type="button" data-catalog-item-sibling="{{ item.id }}" data-tooltip="Добавить рядом"><i class="ti ti-row-insert-bottom"></i></button><button class="btn btn-ghost btn-icon btn-sm catalog-action-child" type="button" data-catalog-item-child="{{ item.id }}" data-tooltip="Добавить подраздел"><i class="ti ti-subtask"></i></button><button class="btn btn-ghost btn-icon btn-sm catalog-action-edit" type="button" data-catalog-item-edit="{{ item.id }}" data-tooltip="Редактировать"><i class="ti ti-edit"></i></button><button class="btn btn-ghost btn-icon btn-sm catalog-action-delete" type="button" data-catalog-item-delete="{{ item.id }}" data-tooltip="Удалить"><i class="ti ti-trash"></i></button></div>{% endif %}
|
||
</div>
|
||
</li>
|
||
{% if item.children %}{{ _self.rows(item.children, can_manage, level + 1) }}{% endif %}
|
||
{% endfor %}
|
||
{% endmacro %}
|
||
{% block content %}
|
||
<nav class="breadcrumbs" aria-label="Хлебные крошки"><a href="{{ ADMINX_BASE }}/">Главная</a><i class="ti ti-chevron-right"></i><a href="{{ ADMINX_BASE }}/catalog">Каталог</a><i class="ti ti-chevron-right"></i><span>{{ catalog.rubric_title }}</span></nav>
|
||
<div class="page-header"><div class="between"><div><h1>{{ catalog.rubric_title }}</h1><p class="text-secondary" style="margin-top:5px">{{ catalog.field_title }} · <span class="mono">#{{ catalog.field_id }}</span></p></div>{% if can_manage %}<button class="btn btn-primary" type="button" data-catalog-item-new><i class="ti ti-plus"></i>Добавить раздел</button>{% endif %}</div></div>
|
||
|
||
<div class="tabs catalog-page-tabs" role="tablist"><button class="tab is-active" type="button" data-catalog-page-tab="structure"><i class="ti ti-list-tree"></i>Структура <span class="tab-count">{{ flat|length }}</span></button><button class="tab" type="button" data-catalog-page-tab="settings"><i class="ti ti-settings"></i>Настройки</button></div>
|
||
|
||
<section data-catalog-page-panel="structure">
|
||
<div class="section-header catalog-panel-header"><div class="section-icon"><i class="ti ti-list-tree"></i></div><div><div class="section-eyebrow">Структура</div><h2>Разделы каталога</h2><p class="section-desc">Порядок и вложенность используются в каталожном поле документа.</p></div></div>
|
||
<div class="card catalog-card">
|
||
<div class="catalog-section-head"><div class="catalog-section-title"><span class="icon-tile catalog-head-icon" style="--tile-bg:var(--violet-100);--tile-fg:var(--violet-600)"><i class="ti ti-list-tree"></i></span><div><h2>Дерево разделов</h2><p class="text-secondary">Перетаскивайте строки за маркер слева.</p></div></div><div class="catalog-tree-tools"><label class="input-wrap catalog-tree-search"><i class="ti ti-search"></i><input class="input" type="search" placeholder="Найти раздел" data-catalog-tree-search></label>{% if can_manage %}<button class="btn btn-secondary" type="button" data-catalog-recompile-all><i class="ti ti-refresh"></i>Пересобрать фильтры</button>{% endif %}</div></div>
|
||
<ol class="catalog-tree" data-catalog-tree>{{ _self.rows(tree, can_manage, 0) }}</ol>
|
||
{% if not tree %}<div class="empty-state">Разделов пока нет.</div>{% endif %}
|
||
</div>
|
||
</section>
|
||
|
||
<section data-catalog-page-panel="settings" hidden>
|
||
<div class="section-header catalog-panel-header"><div class="section-icon"><i class="ti ti-settings"></i></div><div><div class="section-eyebrow">Поведение</div><h2>Настройки каталога</h2><p class="section-desc">Связь структуры с документами, полями и публичными фильтрами.</p></div></div>
|
||
<form class="card catalog-card" id="catalogSettingsForm" data-base="{{ ADMINX_BASE }}" data-rubric="{{ catalog.rubric_id }}" data-field="{{ catalog.field_id }}">
|
||
<input type="hidden" name="_csrf" value="{{ csrf_token }}">
|
||
<div class="catalog-section-head"><div class="catalog-section-title"><span class="icon-tile catalog-head-icon" style="--tile-bg:var(--blue-100);--tile-fg:var(--blue-600)"><i class="ti ti-adjustments"></i></span><div><h2>Основное поведение</h2><p class="text-secondary">Настройки сохраняются в нативном хранилище каталога.</p></div></div></div>
|
||
<div class="catalog-card-body"><div class="form-grid">
|
||
<label class="field col-3"><span class="field-label">Назначение каталога</span><select class="select" name="purpose"><option value="content"{{ settings.purpose == 'content' ? ' selected' : '' }}>Обычный каталог</option>{% if products_available %}<option value="commerce"{{ settings.purpose == 'commerce' ? ' selected' : '' }}>Товарный каталог</option>{% endif %}</select><span class="field-hint">{% if products_available %}Товарный режим включает коммерческий индекс, цены, остатки, варианты и фиды.{% else %}Товарный режим доступен после установки модуля «Товары».{% endif %}</span></label>
|
||
<label class="field col-3"><span class="field-label">Запрос фильтра</span><select class="select" name="request_id"><option value="0">Не выбран</option>{% for item in request_options %}<option value="{{ item.id }}"{{ settings.request_id == item.id ? ' selected' : '' }}>{{ item.title ?: item.alias }}{% if item.alias and item.alias != item.title %} · {{ item.alias }}{% endif %} (#{{ item.id }})</option>{% endfor %}</select><span class="field-hint">Запрос, который формирует выдачу и условия фильтрации.</span></label>
|
||
<label class="field col-3"><span class="field-label">Навигация в шапке</span><select class="select" name="navi_id"><option value="0">Не связана</option>{% for item in navigation_options %}<option value="{{ item.id }}"{{ settings.navi_id == item.id ? ' selected' : '' }}>{{ item.title ?: item.alias }}{% if item.alias and item.alias != item.title %} · {{ item.alias }}{% endif %} (#{{ item.id }})</option>{% endfor %}</select><span class="field-hint">Дополнительные ссылки и подборки перед разделами каталога.</span></label>
|
||
<label class="field col-3"><span class="field-label">Рубрика разделов</span><select class="select" name="rub_cat_id"><option value="0">Не выбрана</option>{% for item in rubric_options %}<option value="{{ item.id }}"{{ settings.rub_cat_id == item.id ? ' selected' : '' }}>{{ item.title ?: item.alias }}{% if item.alias and item.alias != item.title %} · {{ item.alias }}{% endif %} (#{{ item.id }})</option>{% endfor %}</select><span class="field-hint">Рубрика документов, связанных с разделами каталога.</span></label>
|
||
</div>
|
||
{% if products_available %}<section class="catalog-commerce-fields" data-catalog-commerce-fields><div class="catalog-behavior-head"><span class="icon-tile catalog-behavior-icon is-green"><i class="ti ti-shopping-bag"></i></span><h3>Поля товарного представления</h3></div><div class="form-grid">{% set commerce_fields={'product_title_field_id':'Название товара','product_article_field_id':'Артикул','product_price_field_id':'Цена','product_old_price_field_id':'Старая цена','product_stock_field_id':'Остаток','product_images_field_id':'Изображения'} %}{% for key,label in commerce_fields %}<label class="field col-4"><span class="field-label">{{ label }}</span><select class="select" name="{{ key }}"><option value="0">Не назначено</option>{% for group in field_groups %}{% for field in group.items %}<option value="{{ field.id }}"{{ attribute(settings,key) == field.id ? ' selected' : '' }}>{{ field.title ?: field.alias }} · #{{ field.id }}</option>{% endfor %}{% endfor %}</select></label>{% endfor %}</div></section>
|
||
<section class="catalog-product-card-settings" data-catalog-commerce-fields>
|
||
<div class="catalog-behavior-head"><span class="icon-tile catalog-behavior-icon is-blue"><i class="ti ti-layout-cards"></i></span><div><h3>Карточка товара</h3><p class="text-secondary text-sm">Единый вид для главной страницы и разделов товарного каталога.</p></div></div>
|
||
<div class="catalog-product-card-layout">
|
||
<div class="form-grid catalog-product-card-values">
|
||
<label class="field col-12"><span class="field-label">Представление</span><select class="select" name="product_card_template_id"><option value="0">Стандартное файловое</option>{% for template in card_template_options %}<option value="{{ template.id }}"{{ settings.product_card_template_id == template.id ? ' selected' : '' }}>{{ template.title }} · {{ template.code }}{% if not template.is_published %} · черновик{% else %} · v{{ template.version }}{% endif %}</option>{% endfor %}</select><span class="field-hint"><a href="{{ ADMINX_BASE }}/catalog/card-templates">Редактировать представления карточек</a>. На сайте используется только опубликованная версия.</span></label>
|
||
<label class="field col-6"><span class="field-label">Фотографий в слайдере</span><select class="select" name="product_card[max_images]">{% for count in 1..5 %}<option value="{{ count }}"{{ settings.product_card.max_images == count ? ' selected' : '' }}>{{ count }}</option>{% endfor %}</select></label>
|
||
<label class="field col-6"><span class="field-label">Бесплатная доставка от</span><div class="catalog-product-card-price"><input class="input" type="number" min="0" step="1000" name="product_card[delivery_threshold]" value="{{ settings.product_card.delivery_threshold|number_format(0, '.', '') }}"><span>₽</span></div></label>
|
||
</div>
|
||
<div class="catalog-product-card-options">
|
||
{% set card_options={'show_badges':'Бейджи','show_article':'Артикул','show_stock':'Наличие','show_category':'Раздел','show_delivery':'Доставка','show_buy_button':'Кнопка покупки'} %}
|
||
{% for key,label in card_options %}<div class="catalog-product-card-option"><span>{{ label }}</span><label class="switch"><input type="checkbox" name="product_card[{{ key }}]" value="1"{{ attribute(settings.product_card,key) ? ' checked' : '' }} aria-label="{{ label }}"></label></div>{% endfor %}
|
||
</div>
|
||
</div>
|
||
<div class="catalog-toggle-row catalog-product-comparison-option">
|
||
<span><b>Расчётная старая цена +25%</b><small>Если старая цена товара не заполнена, витрина покажет цену на 25% выше текущей. Данные товара не изменяются.</small></span>
|
||
<label class="switch"><input type="checkbox" name="product_card[show_comparison_price]" value="1"{{ settings.product_card.show_comparison_price ? ' checked' : '' }} aria-label="Использовать расчётную старую цену"></label>
|
||
</div>
|
||
</section>{% endif %}
|
||
{% if filter_templates_available %}<section class="catalog-product-card-settings catalog-filter-template-settings">
|
||
<div class="catalog-behavior-head"><span class="icon-tile catalog-behavior-icon is-amber"><i class="ti ti-adjustments-horizontal"></i></span><div><h3>Представление фильтров</h3><p class="text-secondary text-sm">Новый Twig-вывод включается отдельно. Текущий режим сохраняет публичный HTML без изменений.</p></div></div>
|
||
<div class="form-grid">
|
||
<label class="field col-5"><span class="field-label">Шаблон</span><select class="select" name="filter_template_id"><option value="0">Не выбран</option>{% for template in filter_template_options %}<option value="{{ template.id }}"{{ settings.filter_template_id == template.id ? ' selected' : '' }}>{{ template.title }} · {{ template.code }}{% if template.is_published %} · v{{ template.version }}{% else %} · черновик{% endif %}</option>{% endfor %}</select><span class="field-hint"><a href="{{ ADMINX_BASE }}/catalog/filter-templates">Редактировать шаблоны фильтров</a></span></label>
|
||
<label class="field col-4"><span class="field-label">Режим вывода</span><select class="select" name="filter_template_mode"><option value="legacy"{{ settings.filter_template_mode == 'legacy' ? ' selected' : '' }}>Текущий публичный вывод</option><option value="preview"{{ settings.filter_template_mode == 'preview' ? ' selected' : '' }}>Только предпросмотр</option><option value="native"{{ settings.filter_template_mode == 'native' ? ' selected' : '' }}>Опубликованный Twig</option></select><span class="field-hint">«Предпросмотр» не меняет сайт.</span></label>
|
||
<label class="field col-3"><span class="field-label">Нулевые значения</span><select class="select" name="filter_template[zero_behavior]"><option value="show"{{ settings.filter_template.zero_behavior == 'show' ? ' selected' : '' }}>Показывать</option><option value="disable"{{ settings.filter_template.zero_behavior == 'disable' ? ' selected' : '' }}>Отключать</option><option value="hide"{{ settings.filter_template.zero_behavior == 'hide' ? ' selected' : '' }}>Скрывать</option></select></label>
|
||
<div class="field col-12 catalog-toggle-row"><span><b>Показывать количество товаров</b><small>В Twig значение доступно как <code>option.count</code>.</small></span><label class="switch"><input type="checkbox" name="filter_template[show_counts]" value="1"{{ settings.filter_template.show_counts ? ' checked' : '' }} aria-label="Показывать количество товаров"></label></div>
|
||
</div>
|
||
</section>{% endif %}
|
||
{% set behavior_groups = [
|
||
{'title':'Документы','icon':'ti-file-settings','tone':'blue','items':[
|
||
{'name':'doc_fileds','label':'Ограничивать поля по разделу','hint':'В документе доступны только назначенные разделу поля.'},
|
||
{'name':'doc_parent','label':'Раздел задаёт родителя','hint':'Связанный документ становится родителем элемента.'},
|
||
{'name':'save_names','label':'Сохранять названия разделов','hint':'Имена разделов записываются вместе с их идентификаторами.'}
|
||
]},
|
||
{'title':'Иерархия','icon':'ti-hierarchy-2','tone':'violet','items':[
|
||
{'name':'recursive','label':'Сохранять цепочку родителей','hint':'Значение включает все вышестоящие разделы.'},
|
||
{'name':'item_parent','label':'Синхронизировать родителей','hint':'Перемещение раздела обновляет родителя документа.'},
|
||
{'name':'sort_parent','label':'Учитывать родителя при сортировке','hint':'Порядок рассчитывается отдельно внутри каждого уровня.'}
|
||
]},
|
||
{'title':'Публичная выдача','icon':'ti-adjustments-horizontal','tone':'amber','items':[
|
||
{'name':'filters_use','label':'Использовать фильтры','hint':'Для разделов компилируются публичные фильтры каталога.'}
|
||
]}
|
||
] %}
|
||
<div class="catalog-behavior-grid">{% for group in behavior_groups %}<section class="catalog-behavior-group"><div class="catalog-behavior-head"><span class="icon-tile catalog-behavior-icon is-{{ group.tone }}"><i class="ti {{ group.icon }}"></i></span><h3>{{ group.title }}</h3></div><div class="catalog-behavior-list">{% for item in group.items %}<div class="catalog-behavior-row"><span><b>{{ item.label }}</b><small>{{ item.hint }}</small></span><label class="switch"><input type="checkbox" name="{{ item.name }}" value="1"{{ attribute(settings,item.name) == 1 ? ' checked' : '' }} aria-label="{{ item.label }}"></label></div>{% endfor %}</div></section>{% endfor %}</div>
|
||
</div>
|
||
<div class="catalog-settings-grid">
|
||
<section class="catalog-default-column"><h3>Поля по умолчанию</h3><p class="text-secondary text-sm">Назначаются новым разделам.</p><div class="catalog-field-groups catalog-default-groups">{% for group in field_groups %}<section class="catalog-field-group" data-catalog-settings-group="fields_default[]"><div class="catalog-field-group-head"><div class="catalog-field-group-title"><span class="icon-tile catalog-field-group-icon"><i class="ti ti-category-2"></i></span><span class="catalog-field-group-copy"><small>Группа полей</small><b>{{ group.title }}</b></span></div><div class="catalog-field-group-meta"><span>{{ group.items|length }}</span><span class="badge badge-gray" data-catalog-settings-selected>Включено: 0</span></div></div><div class="catalog-check-list">{% for field in group.items %}<div class="catalog-choice-row"><span class="catalog-choice-copy"><b>{{ field.title ?: field.alias }}</b><small>{{ field.alias ?: 'field_' ~ field.id }} · #{{ field.id }}</small></span><label class="switch"><input type="checkbox" name="fields_default[]" value="{{ field.id }}"{{ field.id in settings.fields_default_ids ? ' checked' : '' }} aria-label="Использовать поле {{ field.title ?: field.alias }}"></label></div>{% endfor %}</div></section>{% endfor %}</div></section>
|
||
<section class="catalog-default-column"><h3>Фильтры по умолчанию</h3><p class="text-secondary text-sm">Применяются к новым разделам.</p><div class="catalog-field-groups catalog-default-groups">{% for group in field_groups %}<section class="catalog-field-group" data-catalog-settings-group="filters_default[]"><div class="catalog-field-group-head"><div class="catalog-field-group-title"><span class="icon-tile catalog-field-group-icon"><i class="ti ti-filter"></i></span><span class="catalog-field-group-copy"><small>Группа фильтров</small><b>{{ group.title }}</b></span></div><div class="catalog-field-group-meta"><span>{{ group.items|length }}</span><span class="badge badge-gray" data-catalog-settings-selected>Включено: 0</span></div></div><div class="catalog-filter-list">{% for field in group.items %}<div class="catalog-filter-row"><span class="catalog-choice-copy"><b>{{ field.title ?: field.alias }}</b><small>{{ field.alias ?: 'field_' ~ field.id }} · #{{ field.id }}</small></span><label class="switch"><input type="checkbox" name="filters_default[]" value="{{ field.id }}"{{ field.id in settings.filters_default_ids ? ' checked' : '' }} aria-label="Использовать фильтр {{ field.title ?: field.alias }}"></label><select class="select select-sm" name="filter_style[{{ field.id }}]">{% for value,label in field.filter_options %}<option value="{{ value }}"{{ attribute(settings.filter_styles,field.id) == value ? ' selected' : '' }}>{{ label }}</option>{% endfor %}</select></div>{% endfor %}</div></section>{% endfor %}</div></section>
|
||
</div>
|
||
{% if can_manage %}<div class="catalog-form-footer"><span class="catalog-save-state" data-catalog-settings-state aria-live="polite"></span><button class="btn btn-primary" type="submit"><i class="ti ti-device-floppy"></i>Сохранить настройки</button></div>{% endif %}
|
||
</form>
|
||
</section>
|
||
|
||
{% if can_manage %}<aside class="drawer drawer-right drawer-xl catalog-drawer" id="catalogItemDrawer" role="dialog" aria-modal="true" hidden>
|
||
<div class="drawer-header"><div><h3 data-catalog-drawer-title>Раздел каталога</h3><p class="text-secondary text-sm">Свойства, поля документа и фильтры.</p></div><button class="btn btn-ghost btn-icon" type="button" data-close-drawer aria-label="Закрыть"><i class="ti ti-x"></i></button></div>
|
||
<form id="catalogItemForm" class="drawer-body catalog-item-form" data-base="{{ ADMINX_BASE }}" data-rubric="{{ catalog.rubric_id }}" data-field="{{ catalog.field_id }}"><input type="hidden" name="_csrf" value="{{ csrf_token }}"><input type="hidden" name="id" value=""><input type="hidden" name="filters_order" value="">
|
||
<div class="tabs catalog-drawer-tabs"><button class="tab is-active" type="button" data-catalog-drawer-tab="main">Основное</button><button class="tab" type="button" data-catalog-drawer-tab="fields">Поля <span class="tab-count" data-catalog-fields-count>0</span></button><button class="tab" type="button" data-catalog-drawer-tab="filters">Фильтры <span class="tab-count" data-catalog-filters-count>0</span></button></div>
|
||
<section data-catalog-drawer-panel="main"><div class="form-grid"><label class="field col-12"><span class="field-label">Название</span><input class="input" type="text" name="name" maxlength="255" required><span class="field-error" data-error="name"></span></label><label class="field col-6"><span class="field-label">Родитель</span><select class="select" name="parent_id"><option value="0">Верхний уровень</option>{% for item in flat %}<option value="{{ item.id }}" data-level="{{ item.level }}">{{ item.name }}</option>{% endfor %}</select></label><div class="field col-6"><span class="field-label">Связанный документ</span><input type="hidden" name="document_id" value=""><div class="catalog-document-picker"><button class="catalog-document-value" type="button" data-catalog-document-pick><i class="ti ti-file-search"></i><span data-catalog-document-label>Документ не выбран</span></button><button class="btn btn-ghost btn-icon" type="button" data-catalog-document-clear data-tooltip="Убрать связь" aria-label="Убрать связанный документ"><i class="ti ti-x"></i></button></div></div><div class="field col-12 catalog-toggle-row"><span><b>Раздел активен</b><small>Доступен в поле документа и на сайте.</small></span><label class="switch"><input type="checkbox" name="status" value="1" aria-label="Раздел активен"></label></div></div></section>
|
||
<section data-catalog-drawer-panel="fields" hidden>
|
||
<div class="catalog-choice-head catalog-fields-grid"><span>Поле</span><span>Тип</span><span>Включено</span></div>
|
||
<div class="catalog-field-groups">{% for group in field_groups %}<section class="catalog-field-group" data-catalog-field-group="fields"><div class="catalog-field-group-head"><div class="catalog-field-group-title"><span class="icon-tile catalog-field-group-icon"><i class="ti ti-category-2"></i></span><span class="catalog-field-group-copy"><small>Группа полей</small><b>{{ group.title }}</b></span></div><div class="catalog-field-group-meta"><span>Всего: {{ group.items|length }}</span><span class="badge badge-blue" data-catalog-group-selected>Включено: 0</span></div></div><div class="catalog-check-list">{% for field in group.items %}<div class="catalog-choice-row catalog-fields-grid"><span class="catalog-choice-copy"><b>{{ field.title ?: field.alias }}</b><small>{{ field.alias ?: 'field_' ~ field.id }} · #{{ field.id }}</small></span><span class="catalog-field-type"><b>{{ field.type_title }}</b><small>{{ field.type }}</small></span><label class="switch"><input type="checkbox" name="fields_use[]" value="{{ field.id }}" aria-label="Использовать поле {{ field.title ?: field.alias }}"></label></div>{% endfor %}</div></section>{% endfor %}</div>
|
||
</section>
|
||
<section data-catalog-drawer-panel="filters" hidden>
|
||
<div class="catalog-condition-toolbar" data-catalog-condition-toolbar>
|
||
<div class="catalog-condition-toolbar-title"><span class="icon-tile"><i class="ti ti-code-dots"></i></span><span><b>Условия запроса</b><small data-catalog-condition-request>{% if settings.request_id %}Запрос #{{ settings.request_id }}{% else %}Запрос фильтра не выбран{% endif %}</small></span></div>
|
||
<div class="catalog-condition-toolbar-actions"><span class="text-secondary" data-catalog-condition-summary></span><button class="btn btn-ghost btn-sm" type="button" data-catalog-filter-order disabled><i class="ti ti-arrows-sort"></i>Порядок</button><button class="btn btn-ghost btn-sm" type="button" data-catalog-filter-recompile disabled><i class="ti ti-refresh"></i>Пересобрать</button><button class="btn btn-secondary btn-sm" type="button" data-catalog-conditions-sync disabled><i class="ti ti-code-plus"></i>Создать недостающие</button></div>
|
||
</div>
|
||
<div class="catalog-choice-head catalog-filters-grid"><span>Поле</span><span>Тип</span><span>Представление</span><span>Условие</span><span>Включено</span></div>
|
||
<div class="catalog-field-groups">{% for group in field_groups %}<section class="catalog-field-group" data-catalog-field-group="filters"><div class="catalog-field-group-head"><div class="catalog-field-group-title"><span class="icon-tile catalog-field-group-icon"><i class="ti ti-filter"></i></span><span class="catalog-field-group-copy"><small>Группа фильтров</small><b>{{ group.title }}</b></span></div><div class="catalog-field-group-meta"><span>Доступно: {{ group.items|length }}</span><span class="badge badge-blue" data-catalog-group-selected>Включено: 0</span></div></div><div class="catalog-filter-list">{% for field in group.items %}<div class="catalog-filter-row catalog-filters-grid"><span class="catalog-choice-copy"><b>{{ field.title ?: field.alias }}</b><small>{{ field.alias ?: 'field_' ~ field.id }} · #{{ field.id }}</small></span><span class="catalog-field-type"><b>{{ field.type_title }}</b><small>{{ field.type }}</small></span><select class="select select-sm" name="filter_style[{{ field.id }}]">{% for value,label in field.filter_options %}<option value="{{ value }}">{{ label }}</option>{% endfor %}</select><div class="catalog-condition-cell" data-catalog-condition-field="{{ field.id }}"><span class="badge badge-gray" data-catalog-condition-status>Не включён</span><button class="btn btn-ghost btn-icon catalog-condition-view" type="button" data-catalog-condition-view="{{ field.id }}" data-tooltip="Просмотреть условие" aria-label="Просмотреть условие" hidden><i class="ti ti-code"></i></button><button class="btn btn-ghost btn-icon catalog-condition-sync" type="button" data-catalog-condition-sync="{{ field.id }}" data-tooltip="Синхронизировать условие" aria-label="Синхронизировать условие" hidden><i class="ti ti-refresh"></i></button></div><label class="switch"><input type="checkbox" name="filters_use[]" value="{{ field.id }}" aria-label="Использовать фильтр {{ field.title ?: field.alias }}"></label></div>{% endfor %}</div></section>{% endfor %}</div>
|
||
</section>
|
||
</form>
|
||
<div class="drawer-footer"><button class="btn btn-ghost" type="button" data-close-drawer>Закрыть</button><span class="catalog-save-state" data-catalog-item-state aria-live="polite"></span><button class="btn btn-primary" type="submit" form="catalogItemForm"><i class="ti ti-device-floppy"></i>Сохранить</button></div>
|
||
</aside>{% endif %}
|
||
{% endblock %}
|