
Плагины и кастомизация
Плагины (добавление полей)
easyComm позволяет вам добавить дополнительные поля к объекту ecMessage, в том случае, если стандартных полей мало.
Механизм работы идентичен таковому в miniShop2 (тот, который использовался в версии 2.2 и ранее).
Подсказка
Этот механизм НЕ реализован в версии компонента для MODX 3! Добавлять свои поля описанных способом в MODX 3 не получится!
Рассмотрим добавление полей field1 и field2. Для этого необходимо:
Создать папку "myplugin" (можете задать любое имя) в 2 каталогах:
/core/components/easycomm/plugins/myplugin//assets/components/easycomm/plugins/myplugin/
В каталоге
/core/components/easycomm/plugins/myplugin/создать файлы:php<?php return array( 'xpdo_meta_map' => array( 'ecMessage' => require_once dirname(__FILE__) .'/ecmessage.map.inc.php' ) ,'manager' => array( 'ecMessage' => MODX_ASSETS_URL . 'components/easycomm/plugins/myplugin/ecmessage.js' ) );php<?php return array( 'fields' => array( 'field1' => NULL, 'field2' => NULL, ) ,'fieldMeta' => array( 'field1' => array( 'dbtype' => 'varchar' ,'precision' => '50' ,'phptype' => 'string' ,'null' => true ,'default' => NULL ), 'field2' => array( 'dbtype' => 'varchar' ,'precision' => '50' ,'phptype' => 'string' ,'null' => true ,'default' => NULL ) ) ,'indexes' => array( ) );В каталоге
/assets/components/easycomm/plugins/myplugin/создать файл:jseasyComm.plugin.myplugin = { getFields: function (config) { return { field1: { xtype: 'textfield', fieldLabel: _('ec_message_field1'), anchor: '99%' }, field2: { xtype: 'textfield', fieldLabel: _('ec_message_field2'), anchor: '99%' }, } } ,getColumns: function () { return { field1: { width:50, sortable:true, name: 'field1' }, field2: { width:50, sortable:true, name: 'field2' } } } };Создать поля в таблице
modx_ec_messages.Добавить записи в словари системы
ec_message_field1иec_message_field2(пространство имен easycomm).В системных настройках
ec_message_grid_fieldsиec_message_window_layoutпрописать добавленные поля. Про это ниже.Организовать работу с новыми полями на сайте, к примеру добавить в чанк с формой.
Внимание
Не забудьте про параметр allowedFields сниппета ecForm, необходимо добавить новые поля в этот параметр.
Кастомизация внешнего вида
Для управления отображением сообщений и цепочек в админке предусмотрены системные настройки:
- ec_message_grid_fields - список полей, доступных в таблице сообщений
- ec_message_window_layout - разметка окна редактирования сообщения
- ec_thread_grid_fields - список полей, доступных в таблице цепочек
- ec_thread_window_fields - список полей, доступных в окне редактирования цепочки
Те, что списки - это просто перечисление полей через запятую, например thread, subject, date, user_name, user_email, user_contacts, rating, text, reply_author, reply_text, ip.
Настройки ec_message_window_layout задается в более сложном формате. Значение по-умолчанию следующее:
{
"main": {
"name": "main",
"columns": {
"column0": ["user_name", "user_email"],
"column1": ["date","user_contacts"]
},
"fields": ["subject", "rating","text", "published" ]
},
"reply": {
"name": "reply",
"columns": { },
"fields": ["reply_author", "reply_text", "notify", "notify_date"]
},
"settings": {
"name": "settings",
"columns": { },
"fields": [ "thread", "ip", "extended"]
}
}Здесь мы располагаем поля на 3-х вкладках: main, reply, settings, а внутри вкладки main у нас еще есть 2 колонки. Механизм обработки этой настройки позволяет создать несколько вкладок и поместить поля на них, дополнительно поля можно разбить на колонки один раз на одной вкладке.
Если вы хотите добавить еще одну вкладку - не забудьте добавить ее заголовок в словари системы ec_message_tab_XXX.
