Дополнительные поля в комментариях и премодерация
Задача: Организовать анонимные комментарии с премодерацией + 2 дополнительных текстовых поля.
доп поля в шаблоне формы:
скрин таблицы в базе: joxi.ru/YmEN6bnuJz1L26
подскажите пожалуйста как исправить ситуацию
доп поля в шаблоне формы:
<div class="form-group">
<label for="comment-plus">Достоинства</label>
<input type="text" name="comment-plus" value="" id="comment-plus" class="form-control" maxlength="200" />
</div>
<div class="form-group">
<label for="comment-minus">Недостатки</label>
<input type="text" name="comment-minus" value="" id="comment-minus" class="form-control" maxlength="200" />
</div>
плагин:<?php
if ($modx->event->name == 'OnBeforeCommentSave') {
$properties = array(
'comment-plus' => $modx->stripTags($_POST['comment-plus']),
'comment-minus' => $modx->stripTags($_POST['comment-minus'])
);
$modx->event->params['TicketComment']->set('properties', $properties);
}
Эта схема хорошо работает только для комментариев без премодерации. Если включаешь премодерацию — то информация из доп полей попадает в базу, но в момент публикации стирается.скрин таблицы в базе: joxi.ru/YmEN6bnuJz1L26
подскажите пожалуйста как исправить ситуацию
Комментарии: 15
Нужно выполнять этот код только, если $_POST['comment-plus'] и $_POST['comment-minus'] существуют.
Огромная вам благодарность.
не знал, что плагин выполняется при публикации из админки… получается я сам стирал эти поля.
добавил проверку, теперь работает.
не знал, что плагин выполняется при публикации из админки… получается я сам стирал эти поля.
добавил проверку, теперь работает.
<?php
if ($modx->event->name == 'OnBeforeCommentSave') {
if(!empty($_POST['comment-plus']) OR !empty($_POST['comment-minus'])){
$properties = array(
'comment-plus' => $modx->stripTags($_POST['comment-plus']),
'comment-minus' => $modx->stripTags($_POST['comment-minus'])
);
$modx->event->params['TicketComment']->set('properties', $properties);
};
}
Еще бы на isset проверить, т.к. так предупреждения генерируются на несуществующие элементы массива. По админке тут: github.com/bezumkin/Tickets/blob/master/assets/components/tickets/js/mgr/comment/comments.grid.js
добавил проверку, спасибо.
ExtJs темный лес к сожалению.
добавил строку:
получил в окне поле с Object: joxi.ru/BA0RK8pfPaaYmy
оно и понятно, там же json строка, которую нужно как-то извлечь… в общем что делать дальше не знаю.
ExtJs темный лес к сожалению.
добавил строку:
,{xtype:'textarea', fieldLabel: _('ticket_comment_properties'), name: 'properties', id:'tickets-'+this.ident+'-properties',anchor: '99%',hidden: config.record.createdby ? 1 : 0}
под 216 (https://github.com/bezumkin/Tickets/blob/master/assets/components/tickets/js/mgr/comment/comments.grid.js#L216)получил в окне поле с Object: joxi.ru/BA0RK8pfPaaYmy
оно и понятно, там же json строка, которую нужно как-то извлечь… в общем что делать дальше не знаю.
Попутный вопрос: Дополнительные поля в премодерируемых комментариях было-бы логично показывать модератору в админке.
Подскажите пожалуйста где код отвечающий за вывод формы комментария: joxi.ru/MAjpxg1IxJdLme
попробую разобраться и добавить туда свои поля.
или если есть готовый способ — будет супер.
Подскажите пожалуйста где код отвечающий за вывод формы комментария: joxi.ru/MAjpxg1IxJdLme
попробую разобраться и добавить туда свои поля.
или если есть готовый способ — будет супер.
Получилось сделать?
Спустя три года)))
Вопрос так и остался актуален! И за три года неужели его никто не решил?
Там надо расширять ExtJs. Готового способа нет. Но Tickets в открытом доступе исходники, поэтому можно делать все
в каком файле это все надо править?
Решение нашёл. В файле /assets/components/tickets/js/mgr/comment/comment.window.js добавляете дополнительное поле
, {
xtype: 'displayfield',
fieldLabel: 'Комментарий',
html: config.record.properties['comment-plus'],
anchor: '99%',
}
config.record.properties['comment-plus'] вместо comment-plus любой объект из поля properties в БД.
Здравствуйте! Андрей, подскажите пожалуйста, Вы плагин дописывали отдельным сниппетом и вызывали его в чанке создания комментария?
нет. плагин так и называется «плагин» смотри в дереве «элементов» в админке есть плагины. создаешь новый, пишешь код, потом галочкой отмечаешь событие на которое запускается этот плагин. в данном случае: OnBeforeCommentSave
Большое спасибо!
Здравствуйте!
Подскажите, пожалуйста, не смог понять как ни пытался )
На гитхабе есть файл info c таким содержимым
Подскажите, пожалуйста, не смог понять как ни пытался )
На гитхабе есть файл info c таким содержимым
/* Плагин с событием на OnBeforeCommentSave
https://modx.pro/help/4370
https://bezumkin.ru/sections/522/1540/ */
if ($modx->event->name == 'OnBeforeCommentSave') {
if(!empty($_POST['my_property_prop'])){
$properties = array(
'my_property' => $modx->stripTags($_POST['my_property_prop'])
);
} else {
$properties = array(
'my_property' => $modx->stripTags($_POST['my_property'])
);
}
$modx->event->params['TicketComment']->set('properties', $properties);
}
/* core/components/tickets/processors/mgr/comment/get.class.php
Костыль для функции cleanup() */
if (isset($comment['properties'])) {
foreach($comment['properties'] as $comment_key => $comment_value) {
$comment[$comment_key."_prop"] = $comment_value;
}
}
/* assets/components/tickets/js/mgr/comment/comment.window.js
Добавление нового поля в getFields */
{
xtype: 'textarea',
fieldLabel: _('comment'),
name: 'my_property_prop',
}
/* Вывод в чанке */
[[+properties.gender]]
Нигде в кодах не упоминается название поля gender но в выводе в чанк оно есть, не понимаю, как прописывать доп. поля, если у меня их, например два — title и dop ((( Голову сломал
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.