Микроформаты¶
В платформе Tygh применены так называемые микроформаты для задания определенной функциональности html элементам.
Микроформат представляет из себя набор CSS классов, по типу применения объединенных в группы. Существует несколько групп микроформатов, рассмотрим их по отдельности.
- Формы
- Другие html элементы
- Ссылки
- Нотификации
- Остальные элементы
- Попапы
- Комбинации элементов
- Табы
- Вспомогательные микроформаты
- Locations
- Подсказки
- Сортируемый список элементов [ADMIN]
- Quick menu
- Image gallery
- Design & Translate Mode
- Quantity input
- Node cloning
- File uploader [ADMIN]
- Wrappers
- Pagination
- Products ajax-updated content
- Customization mode
- Переключение блоков
- Deprecated
Формы¶
Валидатор¶
Формат записи:
<label class="cm-email cm-required" for="elm_id">Field name:</label>
<input type="text" name="test" value="Y" id="elm_id" />
Для валидатора форм обязательно наличие элемента label, назначенного на валидируемый элемент с помощью параметра for. CSS класс у лейбла задает микроформат, классы можно комбинировать. У лейбла должно быть описание, даже если он скрытый, т.к. это описание подставляется в сообщение о некорректно введенном поле. В сообщениях могут использоваться следующие плейсхолдеры:
[field] — заменяется на описание лейбла, если в функцию формирования сообщения передается 1 параметр, например:
var msg = 'The field [field] is not valid'; _formMessage(msg, lbl);
[field2] — заменяется на описание основного и дополнительного лейблов, если в функцию формирования сообщения передается 2 параметра, например:
var msg = 'The field [field1] do not match field [field2]'; _formMessage(msg, lbl, lbl2);
[extra] — дополнительные данные, которые нужно добавить в сообщение:
var msg = 'The field [field] should be set to the following format: [extra]'; var extra = '1AB-CF5'; _formMessage(msg, lbl, null, extra);
Список микроформатов:
cm-required— элемент обязательно должен быть заполнен. Если стоит на чекбоксе — чекбокс должен быть отмечен.cm-email— значение элемента должно быть валидным email-адресом.cm-phone— значение элемента должно быть валидным телефонным номером.cm-zipcode— значение элемента должно быть валидным почтовым индексом. У каждой страны формат индекса свой, поэтому паттерн должен задаваться в таблице со странами, но пока вручную — через метод$.ceFormValidator('setZipcode', {...}). Например:<script type="text/javascript"> Tygh.$.ceFormValidator('setZipcode', { US: { regexp: /^(\d{5})(-\d{4})?$/, format: '01342 (01342-5678)' }, CA: { regexp: /^(\w{3} ?\w{3})$/, format: 'K1A OB1 (K1AOB1)' }, RU: { regexp: /^(\d{6})?$/, format: '123456' } }); </script>
cm-value-integer— вешается на элемент формы (input, textarea, etc...). При вводе значения оно проверяется на целочисленность.cm-value-decimal— вешается на элемент формы (input, textarea, etc...). При вводе значения оно проверяется на соответствие формату числа с десятичной точкой.cm-integer— значение элемента должно быть целым числом.cm-password— назначается обязательно на пару элементов, их значения должны совпадать.cm-multiple— хотя бы одно значение элементаselectдолжно быть выбрано.cm-all— выбирает все опции элементаselectперед отправкой формы.cm-multiple-checkboxes— при отправке формы хотя бы один чекбокс из группы должен быть выбран.cm-multiple-radios— при отправке формы хотя бы один радиобаттон из группы должен быть выбран.cm-regexp— проверяет введеное значение на соответствие регулярному выражению. Регулярное выражение и сообщение об ошибке задаются через data-аттрибутыdata-ca-regexpиdata-ca-message. Например:<label for="a" class="cm-regexp" data-ca-regexp="^[A-Za-z]+$" data-ca-message="Please, use alphabetical symbols only"><input type="input" id="a" value="" />
cm-numeric— проверяет значение на число, с помощью плагина autoNumeriс (документация по плагину).
Добавление валидаторов:
Валидатор можно добавить через метод $.ceFormValidator('registerValidator', {}). В массиве параметров передается название микроформата, сообщение об ошибке и функция-обработчик значения. Если функция возвращает false — отображается сообщение об ошибке.
Пример:
<script>
$.ceFormValidator('registerValidator', {
class_name: 'cm-gc-validate-amount',
message: _.tr('text_gift_cert_amount_alert'),
func: function(id) {
var max = parseInt((parseFloat(max_amount) / parseFloat(_.currencies.secondary.coefficient))*100)/100;
var min = parseInt((parseFloat(min_amount) / parseFloat(_.currencies.secondary.coefficient))*100)/100;
var amount = parseFloat($('#' + id).val());
if ((amount <= max) && (amount >= min)) {
return true;
}
return false;
}
});
</script>
Отправка форм¶
Формат записи:
<form class="cm-ajax">
</form>
CSS класс у тега form задает микроформат, классы можно комбинировать.
cm-ajax— форма будет отправляться AJAX’ом. Для корректной работы необходимо наличие в форме скрытого элемента с именемresult_ids.<input type="hidden" name="result_ids" value="id1, id2" />
cm-ajax-full-render— используется вместе сcm-ajaxи возращает всю страницу.cm-no-ajax— если повесить этот класс на кнопку submit формы, то при нажатии ее форма будет отослана обычным образом, даже если на форме висит классcm-ajax.
Для форм имеется возможность задать pre-call и post-call и ajax-callback (только для AJAX) функции. Для этого в документе необходимо повесить обработчик на событие, имя которого задается по правилам:
Pre-call (вызывается до проверки полей формы):
ce.formpre_имя_формы. В обработчик передается объект формы и элемент, который вызвал отсылку формы. Обработчик должен возвращатьtrue/false. Если вернетсяfalse— форма не будет отправлена.Post-call (вызывается после проверки полей формы):
ce.formpost_имя_формы. В обработчик передается объект формы и элемент, который вызвал отсылку формы. Обработчик должен возвращвтьtrue/false. Если вернетсяfalse— форма не будет отправлена.Ajax-callback (вызывается после отсылки формы и получения ответа на ajax-запрос):
ce.formajaxpost_имя_формы. В обработчик передаются пришедшие данные и параметры отсылки запроса.... <script> $.ceEvent('on', 'ce.formpre_upload_form', function(form, clicked_elm) { ... }); $.ceEvent('on', 'ce.formpost_upload_form', function(form, clicked_elm) { ... }); $.ceEvent('on', 'ce.formajaxpost_upload_form', function(data, params) { ... }); </script>
cm-check-changesперед покиданием формы выполняет проверку на наличие несохранённых изменений. В случае наличия таковых показывается предупреждение о несохраненных данных. Автоматически назначается на все формы с методомpostв панели администратора.if (_.area == 'A') { frms.filter('[method=post]').addClass('cm-check-changes');
cm-disable-empty— навешивается на форму. При отправке формы необязательные пустые поля не передаются. Используется, например, в поиске продуктов, чтобы не передавалось большое количество незаданных параметров.cm-disable-empty-files— навешивается на форму. При отправке формы необязательные пустые поля для указания файлов не передаются.cm-failed-field— автоматически навешивается на поля после отправки формы для подсветки некоректно введеных данных.cm-no-hide-input— позволяет отправлять пустое значение инпута, даже если на форму установлен классcm-disable-empty.cm-trim— формат вешается на label. Из конца значения связанного с ним инпута удаляются пробельные символы при проверке полей на валидность.cm-field-container— вешается на контейнер с элементами. Сообщение о неправильно заполненном поле выводится после этого контейнера (пример: чекбокс с текстом, если не обернуть их контейнером — сообщение о неправильно заполненном поле выведется сразу после чекбокса, подвинув текст).cm-reload-form— при изменении значения элемента, который используетcm-reload-form, форма переинициализируется.
Другое¶
cm-reset-link— При клике на элементе с таким классом будут восстановлены значения по умолчанию в форме. Используется в форме поиска продуктов.cm-select-text— При клике на элементе с таким классом будет выделено содержимое полей, которые поддерживают методselect, т.е. textarea, input. Используется для удобства копирования в буфер.cm-field-prefix (cm-field-suffix)— в CS-Cart: когда объект недоступен для редактирования, все инпуты, селекты и т.п. удаляются и вместо них отображаются текстовые значения. Если у элемента есть префикс или суффикс (например, цена) — то его (префикс/суффикс) нужно обернуть в соответствующий микроформат, чтобы он корректно отобразился в таком случае.
Пикеры¶
cm-ajax-content-input— используется в пикере, когда пишется, например, поисковый запрос. С задержкой в 500 мс после того, как был прекращён ввод, отправляет AJAX-запрос для автодополнения. Загрузка контента выполняется в контейнер, указанный в атрибутеdata-ca-target-idэлемента, а паттерном для запроса является параметрvalue. Пример: смена вендора через пикер в шапке в Multi-vendor.cm-ajax-content-more— когда данный элемент становится видимым (например, в большом выпадающем списке), загружается дополнительный контент. Пример: смена вендора, когда вендоров много, через пикер в шапке в Multi-Vendor.cm-cancel— при использовании пикеров, если нажимаем на кнопку с этим микроформатом, то все поля пикера сбрасываются до состояния по умолчанию.cm-clone— используется для добавления элементов в пикер без его закрытия (т.е. без AJAX-запроса). К примеру, в промо-акциях, при добавлении несольких продуктов/категорий в список из пикера. Вешается непосресдственно на пустую строчку, которая клонируется при добавлении нового элемента.cm-dialog-opener— навешивается на элемент, который должен открывать диалог. Вdata-ca-target-id-параметре указывается контейнер, в который диалог будет загружен. Пример: Products -> Categories. Ссылка Edit selected имеет данный класс.cm-dialog-closer— навешивается на элемент, который должен закрывать диалог. Если навешен на элемент, который отправляет форму, то закрытие диалога срабатывает только после проверки формы. Пример: кнопка “Отмена” в пикерах.cm-form-dialog-opener— навешивается на форму или элемент, который ее отправляет, если результат нужно показать в диалоге. Параметры принимает те же, что и *cm-dialog-opener.cm-form-dialog-closer— навешивается на форму или элемент, который ее отправляет, если форма отображается в диалоге и диалог нужно закрыть после отправки.cm-dialog-keep-in-place— не перемещать элемент, контент которого отображается в диалоге, в body.cm-dialog-auto-open— открывает автоматически диалог при заходе на страницу. Используется в панели администратора, в welcome screen.cm-dialog-auto-size— используется вместе сcm-dialog-opener, ширина и высота диалога будут зависеть от контента.cm-dialog-auto-width— используется вместе с *cm-dialog-opener, ширина диалога определяется контентом.cm-js-item— при добавлении элемента на форму из пикера (например, добавление продукта к подарочному сертификату) этот класс устанавливается на контейнер, в котором находится добавленный элемент.cm-picker-options— если данный класс установлен, то при переносе продукта из пикера, будут получены его (продукта) опции.<tbody id="{$data_id}" class="{if !$item_ids}hidden{/if} cm-picker-options">
cm-dialog-switch-avail— сбрасывает все выбранные checkbox в диалоге.
Отправка формы по клику на любом НЕ input[type=submit] элементе¶
Формат записи:
<input type="radio" name="a" value="b" class="cm-submit" data-ca-dispatch="dispatch[controller.mode]" data-ca-target-form="form_name" />
Параметры:
data-ca-dispatch— dispatch, на который будет отсылаться форма (обязательное поле)data-ca-target-form— id или имя формы, которая будет отсылаться. Если не указано — отошлется форма, которой принадлежит элементу.
Отправка формы в новое или родительское окошко¶
Формат записи:
<input type="submit" name="a" value="b" class="cm-new-window" />
<input type="submit" name="a" value="b" class="cm-parent-window" />
CSS класс у тэга input задает микроформат, классы можно комбинировать.
cm-new-window— при клике будет открыто новое окошко и форма пошлется туда.cm-parent-window— при клике форма пошлется в родительское окно.
Запрет отправки формы¶
Формат записи:
<input type="submit" name="a" value="b" class="cm-no-submit" />
CSS класс у тэга input задает микроформат, классы можно комбинировать.
cm-no-submit— по клику на элементе форма, которой принадлежит этот элемент, отсылаться не будет.
Пропуск валидации полей в форме¶
Формат записи:
<input type="submit" name="a" value="b" class="cm-skip-validation" />
CSS класс у тэга input задает микроформат, классы можно комбинировать.
cm-skip-validation— по клику на элементе форма, которой принадлежит этот элемент, отошлется без валидации значений элементов.
Манипуляция чекбоксами¶
Формат записи:
<input type="checkbox" name="check_all" value="Y" class="cm-check-items" />
...
<input type="checkbox" name="product_ids[]l" value="1" class="cm-item" />
<input type="checkbox" name="product_ids[]l" value="2" class="cm-item" />
<a class="cm-check-items on">Check all</a>/<a class="cm-check-items off">Uncheck all</a>
Существует 2 типа манипуляций чекбоксами:
- С помощью главного чекбокса
- С помощью ссылок
Управляющий элемент должен обязательно иметь имя “check_all” и класс check-items. Если управляющий элемент — ссылка, то указываются еще классы on и off — включают и выключают все чекбоксы.
cm-on— вешается на ссылку для манипуляции чекбоксами. Включает все чекбоксы при нажатии на ссылку.cm-off— вешается на ссылку для манипуляции чекбоксами. Выключает все чекбоксы при нажатии на ссылку. Использование не обязательно, т.к. флаг отметить всё/выключить всё, устанавливается только на основе наличия классаcm-on.
Управляемые элементы должны иметь класс item.
На кнопку, отправляющую форму можно навесить класс cm-process-items. В этом случае, при нажатии на кнопку, соответствующая группа чекбоксов будет проверена на включенность и если ни одного не включено, выведется сообщение.
Если в форме есть несколько групп чекбоксов, которыми нужно управлять отдельно, то к классам cm-check-items, cm-item и cm-process-items нужно добавить уникальные суффиксы, например:
<input type="checkbox" name="check_all" value="Y" class="cm-check-items-group" />
...
<input type="checkbox" name="product_ids[]l" value="1" class="cm-item-group" />
cm-no-change— если у не отмеченного чекбокса отсутствует этот микроформат, то в качестве его (чекбокса) значения будет использоваться строкаunchecked, а если данный класс навешен, то будет использоваться пустая строка – ‘’. Если же данный микроформат не назначен на отмеченный чекбокс, то значением будет являться содержимое атрибутаvalue.
Скрытие форм¶
cm-hide-inputs— поля с данным классом будут отображаться в виде текста, а не инпут элемента. Это используется в MVE для правки формы данных, которая отображается вендорам, т. е. поля, которые они не могут редактировать, отображаются текстом.cm-hide-save-button— вешается на таб, в котором нужно скрыть кнопки с классом.
Другие html элементы¶
Ссылки¶
Для ссылок доступен микроформат, позволяющий выполнять AJAX-запрос при клике по ней. Формат записи такой ссылки:
<a href="index.php?dispatch=products.update&product_id=15" class="cm-ajax" data-ca-target-id="id1, id2, idn">Run</a>
Параметр data-ca-target-id содержит айдишники тэгов, перечисленные через запятую, для апдейта запрошенным содержимым.
Чтобы проскролить до нужного элемента можно в параметре data-ca-scroll передать id.
Чтобы при AJAX-запросе отобразить оверлей над определенными элементами, можно передать селектор в параметр data-ca-overlay.
CSS класс у тэга a задает микроформат, классы можно комбинировать.
cm-ajax— при клике будет выполняться AJAX-запросcm-comet— форма обновляется с использованием моделиComet. Пример: форма бэкапа базы данных.cm-delete-row— при клике на элемент содержащий данный класс, удаляется ближайший родительский элементtr. Используется для удаления строки в таблице.cm-row-item— Навешивается на строку в таблице. Используется для идентификации контейнера совместно сcm-delete-row.cm-ajax-cache— позволяет кэшировать AJAX-запросы, нужно использовать совместно сcm-ajax.cm-ajax-force— отключает запрет повторного выполненияjsкода из ajax респонса, нужно использовать совместно сcm-ajax.cm-external-click— кликает по элементу с известнымid. ID элемента по которому нужно кликнуть указывается в параметреdata-ca-external-click-idссылки.
<a class="cm-external-click" data-ca-external-click-id="external_elm">Push me</a>
cm-external-focus— при клике на элементе передаёт фокус элементу, указанному в *data-ca-external-focus-id-параметре.cm-smart-position— используется для позиционирования контейнеров (например, списка переключения валюты в админке).cm-post— позволяет при клике на ссылку отправить запрос методомPOST. Используется, например, для удаления объекта: форму там делать неудобно — достаточно просто добавить ссылкуobject.delete?object_id=11с этим микроформатом.cm-scroll— при клике на элементе скороллится до элемента, описанного в виде селектора вdata-ca-scroll.
<a class="cm-scroll" data-ca-scroll=".cm-pagination">Up</a>
Нотификации¶
cm-notification-close— вешается на кнопку закрытия нотификации. При нажатии нотификация удаляется.cm-notification-close-ajax— вешается на кнопку закрытия нотификации. При нажатии отсылается AJAX-запрос на удаление нотификации. Используется совместно с *cm-notification-close.cm-auto-hide— вешается на контейнер конкретной нотификации. Нотофикаци с данным классом будет автоматически спрятана через определенный промежуток времени. Таймаут задаётся из Settings → Appearance.cm-notification-container— контейнер, куда добавляются нотификации.cm-notification-content— контейнер конкретной нотификации. Также контейнер должен содержать data-аттрибут с идентификатором нотификации —data-ca-notification-key.cm-notification-content-extended— контейнер конкретной нотификации расширенного типа (отображается по середине экрана). Также контейнер должен содержать data-аттрибут с идентификатором нотификации — *data-ca-notification-key.
Остальные элементы¶
cm-confirm— при клике будет запрошено подтвержение на совершение действия. При наличии аттрибутаdata-ca-confirm-textтекст запроса будет взят из значения этого аттрибута.cm-skip-confirmation— вешается на элемент и позволяет пропускать подтверждение на совершение действия, связанного с сотоянием элемента.cm-noscript— данный элемент будет показан только если включена поддержка яваскрипта в браузереcm-focus— устанавливает фокус на элементах с этим классом при загрузке страницы. Пример: форма входа – фокус устанавливается на поле ввода логина.cm-opacity— вешается на удалённую строку таблицы, делая её полупрозрачной. Пример: склонированная и затем удалённая «строка» для добавления изображения к продукту. Удаление со страницы будет произведено при перезагрузке, а до тех пор строка будет полупрозрачной.cm-uploaded-image— устанавливается на div с загруженным изображением. Используется для подсчёта количества загруженных изображений.cm-wysiwyg— навешивается на textarea. Представляет редактор для расширенного форматирования текста.cm-autocomplete-off— убирает с поля возможность автозаполнения. Используется для поля ввода пароля.
Попапы¶
Для попапов доступен микроформат popup-box, который позволяет закрывать попап при клике вне его обасти.
Формат записи:
<div class="cm-popup-box">
...
</div>
Чтобы скрыть попап при нажатии на какой-либо элемент находящийся внутри попапа, нужно задать класс cm-popup-switch для данного элемента.
Формат записи:
<div class="cm-popup-box">
<strong class="hand cm-popup-switch">Close</strong>
...
</div>
cm-select-option— используется в админке для popup bootstrap.cm-popover— инициализирует popover bootstrap (http://getbootstrap.com/2.3.2/javascript.html#popovers).
Комбинации элементов¶
cm-combination— используется для скрытия/отображения контейнера с отображением состояния контейнера. Используется, например, для кнопки advanced search в админке, для деревьев (категории, страницы) и т.п. Под отображением состояния понимается показывание различной картинки в зависимости от состояния контейнера. Возможны 2 варианта.
Вариант 1¶
<img src="" id="on_cat" class="cm-combination" />
<img src="" id="off_cat" class="cm-combination" />
<a href="#" id="sw_cat" class="cm-combination">
...
<div id="cat">
</div>
Для группировки используется ID контейнера, дополнительные элементы используют этот ID с различными префиксами. Существуют 3 типа префиксов:
on_— отображает контейнер при клике;off_— скрывает контейнер при клике; (минус обычно)sw_— для элемента (ссылки обычно), переключающей состояние контейнера при каждом клике
Вариант 2¶
<a href="#" id="sw_cat" class="open cm-combination">
...
<div id="cat">
</div>
Тут картинки меняются путем смены класса у переключателя (см. sw_ выше).
cm-combo-on— (depricated) раньше для картинки, отображающей контейнер (плюс обычно).cm-combo-off— (depricated) вместо него используется класс open. Показывает, что блок раскрыт. Раньше для картинки, скрывающей контейнер (минус обычно)
Вместо cm-combo-on/cm-combo-off используется класс open, который определяет раскрыт или закрыт блок. С помощью данного класса теперь изменяется вид иконок.
cm-combo-checkbox— значение данного чекбокса в случае, если он выбран, будет занесено как вариант в комбо-бокс с классомcm-combo-select(например, выбор доступных лэйаутов в админке, на каждый из которых навешен этот класс, а затем выбор активного). Последняя отключённая опция остаётся в комбо-боксе. Пример: Settings: Appearance → Products list layouts settings.cm-combo-select— в комбо-бокс с таким классом будут загружены опции всех чекнутых элементов с классомcm-combo-checkbox(например, выбор доступных лэйаутов в админке, а затем выбор активного в селекте с этим классом). Последняя отключённая опция остаётся в комбо-боксе. См.combo-checkbox.cm-toggle-checkbox— вешается на чекбокс, который должен управлять состоянием активности других контролов (все они должны иметь классcm-toggle-element).cm-toggle-element— вешается на элемент, состоянием активности которого должен управлять чекбокс с классомcm-toggle-checkbox.cm-uncheck— используется вместе с cm-combination, переключает состояние checkbox, который определяется с помощьюid cm-combination.cm-switch-availability— переключает состяниеinputэлементов (checkbox, radio, text), которые связаны сcm-switch-availabilityчерезid = "sw_elem", гдеelem—idэлемента, в котором расположены checkbox и radio.
Если нужно, чтобы элемент, по которому кликаем (на котором висит cm-switch-availability), переключал, когда он активен (checked="checked") нужно использовать cm-switch-inverse.
Если нужно, чтобы скрывался/раскрывался блок с checkbox и radio, нужно использовать cm-switch-visibility.
Если используется не для checkbox и radio, то за состояние отвечает cm-switched.
Формат записи:
<input type="checkbox" id="sw_company_redirect" checked="checked" class="cm-switch-availability cm-switch-inverse cm-switch-visibility" />
cm-select-with-input-key— связывает селект с текстовым полем. При изменении значения в селекте, его значение заносится в текстовое поле и поле становится disabled. Используется в локациях при выборе dispatch.
Переключение нескольких комбинаций¶
Для переключения нескольких комбинаций (например отображение/скрытие всех элементов дерева) используется микроформат cm-combinations.
<img src="" id="on_cat" class="cm-combinations" />
<img src="" id="off_cat" class="cm-combinations hidden" />
ID в данном случае используется ТОЛЬКО для группировки этих двух элементов. Так же существует возможность группировать комбинации (например, несколько деревьев на странице) — нужно добавить суффикс:
<img src="" id="on_abc" class="cm-combinations-a" />
<img src="" id="off_abc" class="cm-combinations-a hidden" />
...
<img src="" id="on_cat" class="cm-combination-a" />
<img src="" id="off_cat" class="cm-combination-a" />
<a href="#" id="sw_cat" class="cm-combination-a">
...
<div id="cat">
</div>
В этом случае при нажатии на верхние картинки будут открыты/закрыты комбинации только из группы “a”.
Сохранение состояния¶
cm-save-state— для сохранения состояния контейнера нужно на каждый элемент, открывающий/закрывающий его, навесить классcm-save-state. В этом случае будет ставиться кука, завязанная на IDD этого элемента при изменении его состояния. Состояние по-умолчанию — “контейнер скрыт”. Если нужно состояние по-умолчанию — “контейнер отображается”, то дополнительно надо навешивать микроформатcm-ss-reverse. Проверять выставленность куки и скрывать элементы надо в темплейте.cm-save-fields— значениея полей контейнера с таким классом будут сериализованы в массив и восстановлены после AJAX-запроса, если контейнер обновился.
Табы¶
cm-js— в смарти и внутри него генерируется список с самими табами.При клике на таб автоматически ищется див с ID равнымcontent_ + idтаба , т.е. в нашем случаеcontent_description, и показывается, параллельно скрываются все соседние дивы в контейнере.сm-active— cтавится на таб с классомcm-jsпри его выборе или в шаблоне. Таб с таким классом делается активным. В случае, если у него (таба) пустой контент и есть классcm-ajax, содержимое загружается через AJAX.cm-toggle-button— прячет кнопки для пустого таба. Пример: переход в админке на таб, в котором нечего сохранять и кнопки Save или Save and close неактуальны.cm-j-tabs— Контейнер для табовcm-js. Используется для поиска контейнеров с табами и их инициализации.cm-tabs-content— Устанавливается на таб, в котором можно скрывать кнопки сохранения (cm-hide-save-button).cm-toggle-button— Вешается на див. Если выбран таб, в котором есть данный див и у таба стоит классcm-hide-save-button, этот див будет скрыт.
Вспомогательные микроформаты¶
cm-skip-avail-switch— при использовании функцииswitchAvailability(включает/выключает все элменты внутри заданного). Если у элемента стоит этот класс, то он не включается обратно.cm-skip-check-items— вешается на форму и позволяет при смене страницы пропускать проверку на изменение состояния дочерних элементов формы.cm-track— устанавливается на контейнер с табами. После отправки будет открыт последний активный таб.cm-save-and-close— добавляет скрытое поле с параметромreturn_to_list. Используется для кнопки Save and close.cm-promo-popup— вызывает popup в free mode, о том, что необходима полная версия.cm-update-for-all-icon— активирует шаринг для витрины. Поля редактирования становятся активными.cm-sticky-scroll— фиксирует блок, в котором используется. Вdata-ce-topуказывается расстояние, относительно верхнего края страницы, начала фиксации. Вdata-ce-paddingуказывается расстояние от верхнего края страницы при фиксации.Примечание
Пример: при прокрутке окна на 100px панель станет фиксированной на расстоянии 20px от верхнего его края.
cm-range-slider— инициализирует ползунок выбора диапазона (jQuery UI Slider).cm-colorpicker— инициализирует пикер цветов (http://bgrins.github.io/spectrum/).cm-j-tabs-disable-convertation— отключает конвертацию табов в аккордион на мобильных устройствах. При добавлении этого микроформата к табам обязательно нужно добавить микроформат дла контента :cm-j-content-disable-convertation.cm-j-content-disable-convertation— отключает конвертацию контента табов в аккордион на мобильных устройствах.
Locations¶
cm-location-*- все классыcm-location-*используются для объединения селектов стран и штатов в группы, чтобы при изменении страны перестраивались штаты соответствующего селекта. Класс вешается наselecbox/inputсо странами/штатами, а так же на label для элемента zipcode — чтобы объединить его в ту же группу.cm-country— ипользуется совместно сcm-location-*для указания на selectbox стран.cm-state— ипользуется совместно сcm-location-*для указания на selectbox и input штатов.
Подсказки¶
Для отображения в input поле или textarea поле внутренней подсказки, необходимо добавить к этому элементу класс cm-hint. И добавить подсказку в поле value. При получении фокуса этим полем подсказка исчезнет. Если поле останется пустым и фокус пропадет, то оно снова будет заполнено подсказкой. Если в поле показана подсказка, то к имени поля добавляется префикс hint_. При вводе текста этот префикс удаляется. Пример:
<input type="text" name="field" id="a" size="20" value="Please, input your name here" class="input-text cm-hint" />
cm-hint-focused— указывает на то, что фокус в поле ввода и подсказка скрыта. Взаимоисключающий характер при взаимодействии сcm-hint(указывает на то, что в данном поле не надо отображать внутреннюю подсказку). Пример: поле Track my order(s) в кастомерке.cm-tooltip— вешается на элемент, которому нужна всплывающая подсказка. Текст указывается в атрибутеtitle.
Сортируемый список элементов [ADMIN]¶
Данный список можно увидеть например на странице редактирования валют, при перетаскивании строки у нее меняется позиция.
cm-sortable— контейнер, в котором можно перемещать строки cm-sortable-row (например, список валют в админке).cm-sortable-id-*— идентификатор конкретной строки в контейнереcm-sortable. Значение послеcm-sortable-id-передаётся в запросе и используется для сохранения изменений.cm-sortable-row— навешивается на строку в таблице, которую нужно перемещать. Строка должна быть в контейнереcm-sortable.
Image gallery¶
cm-image-gallery— инициализирует галерею изображений.cm-previewer— вешается на ссылку, например, под изображением и при нажатии открывает большую по размеру картинку. Переход на другую страницу при этом не происходит. Картинка указывается в параметреhref.
<a id="det_img_link_1553_140" data-ca-image-id="preview[product_images]" class="cm-previewer" href="/professional/images/detailed/0/detailed_image_1386.jpg" title="img.jpg">
<img class=" " id="det_img_1553_140" src="/professional/images/thumbnails/0/120/img.jpg" width="120" alt="img" border="0" />
</a>
cm-thumbnails-mini— устанавливается на картинку в минигалерее в детальной странице продукта. Используется для идентификации миниатюры как таковой, а также для установки класса active при клике на изображение (со всех элементов с классомcm-thumbnails-miniснимается классactive).
Design & Translate Mode¶
cm-cur-template— устанавливаестся на текущий шаблон при редактировании его в Design mode. Затем используется для идентификации смены редактируемого шаблона. Используется в Design mode only.cm-item-modified— устанавливается на изменённый в Design mode шаблон. Если в редакторе происходит переход в другой шаблон (в дереве шаблонов в левой части редактора) и навешен этот класс, то будет показано сообщение о наличии изменений.cm-lang-link— вешается на ссылку, при клике на которую происходит смена языка. Язык указывается в атрибуте name (формат короткий – две буквы).cm-select-list— навешивается на выпадающий список для выбора языка. Используется как контейнер для элементов с классомcm-lang-link. Пример: список с языками, когда открыто окно для перевода фразы в Translate mode.cm-live-edit— вешается на элемент, которому можно задать перевод в Translate mode.
Quantity input¶
cm-decrease— должен использоваться в контейнере *cm-value-changer. Навешивается на ссылку, которая должна уменьшать значение инпута. Уменьшает значение инпута на1. Значение всегда выставляется больше или равное нулю. Значение, не являющееся типомintegerбудет заменено на0. Пример: стрелки вверх/вниз вокруг поля quantity в пользовательской части.cm-increase— должен использоваться в контейнереcm-value-changer. Навешивается на элемент, по клике на которому должно увеличиваться значение инпута. Увеличивает значение инпута на1.Значение, не являющееся типом integer будет заменено на0.cm-value-changer— родительский контейнер для инпута и кнопок с классами cm-increase и cm-decrease. Пример: поле quantity у продукта в кастомерке.
Node cloning¶
cm-first-sibling— строку с данным классом нельзя удалить, значек удаления дизейблится.cm-image-field— при клонировании элементов, в которых есть изображения, отвечает за выбор регулярного выражения, чтобы был верный инкремент номера изображения. Пример: клонирование опций продукта. У каждой опции могут быть изображения. На поля, связанные с изображениями навешен этот класс.
File uploader [ADMIN]¶
cm-fu-file— в загрузчке файлов вешается на блок с загруженным файлом (в блоке имя и крестик для удаления). Если файла нет, то блок прячется. В противном случае, отображается.cm-fu-no-file— вешается на элемент, который предоставляет возможность загрузки файлов. В качестве примера может служить любой загрузчик файлов.cm-instant-upload— вешается на элемент, при клике на который вызывается диалог выбора файла и тут же начинается его загрузка. Должен сопровождаться обязательным data-аттрибутомdata-ca-href(URL для загрузки). А так же необязательными —data-ca-target-id(id элементов, содержание которых нужно обновить после AJAX-запроса) иdata-ca-placeholder(id элемента img, куда нужно вставить URL к загруженному файлу — в этом случае ajax-запрос должен возвращать параметрplaceholderс URL картинки).
Wrappers¶
cm-hidden-wrapper— устанавливаестся на wrapper, который нужно спрятать при отсутствии контента. т. е. если содержимое блока пустое – wrapper не отображается.
Pagination¶
cm-history— информация о предыдущем состоянии после нажатия на ссылку с таким форматом будет храниться в плагине истории в jQuery. Пример: products pagination.cm-pagination-container— контейнер, в котором располагаются результаты выборки с навигацией по страницам. Используется для скроллинга после AJAX-запросаcm-back-link— возращает на предыдущую страницу, работает через history.
Products ajax-updated content¶
cm-reload— при смене опций навешивается на изменённый блок. Затем обновляются все элементы, имеющие данный класс. Пример из common/product_data.tpl.
{********************** Price *********************}
{capture name="price_`$obj_id`"}
<span class="cm-reload-{$obj_prefix}{$obj_id} price-update" id="price_update_{$obj_prefix}{$obj_id}">
...
Таким образом, каждый раз при обновлении при смене опции цена будет обновлятся.
Customization mode¶
cm-template-box— навешивается на контейнер, который представлен некоторым шаблоном в Customization mode. Используется для работы с шаблоном и определения уровня вложенности шаблонов.cm-template-icon— навешивается на иконку для редактирования шаблона при включённом Customization mode. При наведении на неё мыши, подсвечивается область действия шаблона (черезcm-template-over). При покидании подсветка снимается.cm-template-over— устанавливается на контейнер, который отображается с помощью выделенного шаблона (курсор наведён на иконку шаблона –{{cm-template-icon). Используется для подсветки области выделенного шаблона, когда Storefront в Customization mode.
Переключение блоков¶
Иногда требуется возможность дисейблить элементы, в зависимости от какого-то переключателя. Для этого существует набор микроформатов cm-bs-* (block switch). Для его правильной работы нужна следующая разметка:
content
— overlay
<div class="cm-bs-container">
<input type="radio" class="cm-bs-trigger">
<div class="cm-bs-block">
content2
<div class="cm-bs-off"></div> — overlay
</div>
</div>
</div>
cm-bs-group— обозначает группу блоков, таких групп может быть несколько и блоки внутри них будут переключаться отдельно.cm-bs-container— контейнер, который содержит в себе переключатель и контент, который нужно отображать/дисейблить.cm-bs-trigger— вешается на переключатель (radio button).cm-bs-block— вешается на блок, внутри которого находится контент, который нужно отображать/дисейблить.сm-bs-off— оверлей, отобразающийся поверх задисейбленного контента.
Deprecated¶
cm-check-items-group cm-dashed-box сm-display-radio cm-img-preview cm-item-group cm-picker cm-picker-value сm-picker-value-description cm-picker-options-container cm-popup-bg cm-popup-content-footer cm-product-details cm-tabs cm-block-*
cm-sortable-items (удалили 3.0.x) cm-group-box (удалили 3.0.x) cm-decline-group (удалили 3.0.x) cm-list-box (удалили 3.0.x)
cm-buttons-floating (удалили 4.0.x) cm-buttons-placeholder (удалили 4.0.x)
cm-delete-file (удалили 4.0.x) cm-download (удалили 4.0.x) cm-passed (удалили 4.0.x)
cm-cur-item (удалили 4.0.x) cm-generate-image (удалили 4.2.x)