easyComm 1.1.0 beta - плагины для добавления полей
А тем временем я продолжаю развивать компонент easyComm и выпускаю еще одно большое обновление (пакет отправил в магазин на модерацию).
Что нового?
1. Система плагинов для добавления полей к сообщениям. Если вам мало тех полей, что есть сейчас — теперь их можно добавить через плагины и не боятся, что ваши добавления затрутся при обновлении пакета.
2. Доступна настройка внешнего вида окон редактирования сообщения и цепочки в админке + управление списком колонок для grid-ов.
Подробнее:
Сейчас для объекта ecMessage доступны следующие поля (это основные поля, не считая вспомогательных):
Если вам этого мало — теперь можно добавить любое количество своих полей. Механизм был честно подсмотрен у miniShop2 и взят оттуда практически без изменений, что бы вам не пришлось привыкать к чему то новому, а мне тратить уйму времени, что бы сделать то, что уже сделано. Поэтому если вы когда-то добавляли поля к miniShop2 — здесь все тоже самое!
Для добавления своих полей (в примере custom1 и custom2) нужно проделать 7 шагов:
1. Создать папку «myplugin» (можете задать любое имя) в каталогах
2. в каталоге /core/components/easycomm/plugins/myplugin/ создать файлы index.php:
и ecmessage.map.inc.php:
3. В каталоге /assets/components/easycomm/plugins/myplugin/ создать файл ecmessage.js:
4. Создать поля в таблице modx_ec_messages.
5. Добавить записи в словари системы ec_message_custom1 и ec_message_custom2 (пространство имен easycomm).
6. В системных настройках message_grid_fields и message_window_layout прописать добавленные поля. Про это ниже.
7. Организовать работу с новыми полями на frontend (добавить в форму и т.д).
Появились специальные настройки, отвечающие за отображение списка и окна редактирования сообщений и цепочек:
ec_thread_grid_fields. Поля, которые будут доступны в таблице цепочек. По умолчанию id, resource, name, title, count, rating_simple, rating_wilson. Если у вас на сайте что-то не используется, например рейтинг, вы просто убираете эти поля.
ec_thread_window_fields. Поля, которые доступны при редактировании и создании цепочки из админки. По-умолчанию resource, name, title, rating_simple, rating_wilson
ec_message_grid_fields. Поля, которые доступны в таблице сообщений, по-умолчанию id, thread, subject, date, user_name, user_email, user_contacts, rating, text, reply_author, reply_text, ip
ec_message_window_layout. Разметка окна редактирования сообщения. тут все сложнее. Это не просто список полей, а разметка для окна редактирования. Задается строкой в формате json. Позволяет поместить определенное поле на произвольную вкладку (tab) и разбить часть полей на колонки.
По-умолчанию эта настройка выглядит так:
Пример:
Здесь я убрал тему, рейтинг, контакты, а на место контактов поместил IP адрес.
Настройка ec_message_window_layout при этом выглядит так:
Что нового?
1. Система плагинов для добавления полей к сообщениям. Если вам мало тех полей, что есть сейчас — теперь их можно добавить через плагины и не боятся, что ваши добавления затрутся при обновлении пакета.
2. Доступна настройка внешнего вида окон редактирования сообщения и цепочки в админке + управление списком колонок для grid-ов.
Подробнее:
Система плагинов
Сейчас для объекта ecMessage доступны следующие поля (это основные поля, не считая вспомогательных):
user_name — автор,
user_email — почта,
user_contacts — контакты,
subject — тема сообщения,
date — дата сообщения,
text — текст
reply_author — автор ответа,
reply_text — текст ответа,
rating — оценка,
ip — IP адрес
Если вам этого мало — теперь можно добавить любое количество своих полей. Механизм был честно подсмотрен у miniShop2 и взят оттуда практически без изменений, что бы вам не пришлось привыкать к чему то новому, а мне тратить уйму времени, что бы сделать то, что уже сделано. Поэтому если вы когда-то добавляли поля к miniShop2 — здесь все тоже самое!
Для добавления своих полей (в примере custom1 и custom2) нужно проделать 7 шагов:
1. Создать папку «myplugin» (можете задать любое имя) в каталогах
/core/components/easycomm/plugins/myplugin/
/assets/components/easycomm/plugins/myplugin/
2. в каталоге /core/components/easycomm/plugins/myplugin/ создать файлы index.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'
)
);
и ecmessage.map.inc.php:
<?php
return array(
'fields' => array(
'custom1' => NULL,
'custom2' => NULL,
)
,'fieldMeta' => array(
'custom1' => array(
'dbtype' => 'varchar'
,'precision' => '50'
,'phptype' => 'string'
,'null' => true
,'default' => NULL
),
'custom2' => array(
'dbtype' => 'varchar'
,'precision' => '50'
,'phptype' => 'string'
,'null' => true
,'default' => NULL
)
)
,'indexes' => array(
)
);
3. В каталоге /assets/components/easycomm/plugins/myplugin/ создать файл ecmessage.js:
easyComm.plugin.myplugin = {
getFields: function(config) {
return {
custom1: {xtype: 'textfield', fieldLabel: _('ec_message_custom1'), anchor: '99%'},
custom2: {xtype: 'textfield', fieldLabel: _('ec_message_custom2'), anchor: '99%'},
}
}
,getColumns: function() {
return {
custom1: {width:50, sortable:true, name: 'custom1'},
custom2: {width:50, sortable:true, name: 'custom2'}
}
}
};
4. Создать поля в таблице modx_ec_messages.
5. Добавить записи в словари системы ec_message_custom1 и ec_message_custom2 (пространство имен easycomm).
6. В системных настройках message_grid_fields и message_window_layout прописать добавленные поля. Про это ниже.
7. Организовать работу с новыми полями на frontend (добавить в форму и т.д).
Настройка внешнего вида в админке
Появились специальные настройки, отвечающие за отображение списка и окна редактирования сообщений и цепочек:
ec_thread_grid_fields. Поля, которые будут доступны в таблице цепочек. По умолчанию id, resource, name, title, count, rating_simple, rating_wilson. Если у вас на сайте что-то не используется, например рейтинг, вы просто убираете эти поля.
ec_thread_window_fields. Поля, которые доступны при редактировании и создании цепочки из админки. По-умолчанию resource, name, title, rating_simple, rating_wilson
ec_message_grid_fields. Поля, которые доступны в таблице сообщений, по-умолчанию id, thread, subject, date, user_name, user_email, user_contacts, rating, text, reply_author, reply_text, ip
ec_message_window_layout. Разметка окна редактирования сообщения. тут все сложнее. Это не просто список полей, а разметка для окна редактирования. Задается строкой в формате json. Позволяет поместить определенное поле на произвольную вкладку (tab) и разбить часть полей на колонки.
По-умолчанию эта настройка выглядит так:
{
"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 колонки. Механизм обработки этой настройки весьма примитивен, в принципе большего он и не позволяет =) Но уже и это неплохо и позволяет без проблем настроить расположение полей так, как вам удобно.Пример:
Здесь я убрал тему, рейтинг, контакты, а на место контактов поместил IP адрес.
Настройка ec_message_window_layout при этом выглядит так:
{
"main":{
"name":"main",
"columns":{
"column0":[ "user_name","user_email"],
"column1":[ "date", "ip" ]
},
"fields":[ "custom1", "custom2","text","published" ]
},
"reply":{
"name":"reply",
"columns":{ },
"fields":[ "reply_author","reply_text", "notify","notify_date"]
},
"settings":{
"name":"settings",
"columns":{ },
"fields":[ "thread", "extended" ]
}
}
Комментарии: 8
После этого обновления думаю сделать легкий перерыв в добавлении новых функций. Все функции, которые я хотел, я сделал в easyComm, больше не знаю что делать. Буду только баги исправлять. И еще теперь нужно привести в порядок документацию и описание в магазине.
Скажите, а можно создать несколько рейтингов? Чтобы оценить параметр1, параметр2 и параметр3, а потом вывести среднее по каждому рейтингу?
Заранее благодарен.
Заранее благодарен.
Понял вопрос… ну скажем так, что пока что нет такой возможности… подумаю над этим!
Спасибо за ответ! Я почему написал — часто дается не одна общая оценка, а несколько (оперативность, вежливость, цена и т.д.) из которых потом по десятибалльной или пятибалльной системе вычисляется среднее общее.
Подумаю, идея то здравая…
А у меня такой вопрос, на вкладке ОТВЕТ есть поле АВТОР ОТВЕТА, если на сайте сидит ОДИН менеджер и отвечает от имени MANAGER, то, имхо, было бы удобно вынести параметр reply_author как системную настройку.
Я думал, что автор ответа — вообще далеко не всем нужная вещь и добавил скорее «чтобы было». Если он один — думаю проще всего прописать его в чанке вывода сообщения.
Блин, а до Чанка я как то не догадалась) тестила просто с готовыми
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.