23 ноября 2014, 20:49 Спасибо за быстрый ответ. А что даст проверка на контекст и новое условие media_source? Как я понимаю, при отправке с фронта, tickets назначает реальную папку (id ресурсу) только после отправки и сохранения ресурса, плагин срабатывает раньше, а в это время пути к картинкам ведут еще на нулевой ресурс assets/images/tickets/0/имяфайла.png По вашей подсказке сделал срабатывание плагина только для авторизованных в mgr, что в моем случае частично решает проблему (обычные пользователи, отправляют статьи на проверку (плагин не срабатывает и не прописывает «кривые пути»), а уже менеджер заходит в админку проверяет, публикует и сохраняет (срабатывает плагин и прописывает корректный путь)) if($modx->context->get('key') == 'mgr') { $tv = $modx->getOption('TV',$scriptProperties,'firstImage'); $img = $resource->GetTVValue($tv); if(empty($img)) { $def_img ='template/default.png'; $media_source = '/assets/images/tickets/'; $text = $resource->content; if (preg_match_all( '|<img.*?src=[\'"](.*?)[\'"].*?>|i',$text , $matches )!=0) {$img = $matches[1][0];} else {$img = $def_img;} $img = str_replace($media_source, '', $img); $resource->setTVValue($tv,$img); } }Решение получается не универсальное, куда копать дальше? Есть ли возможность запустить плагин после срабатывания tickets ( когда пути уже ведут на реальный, а не на нулевой ресурс) Вопросы / Вывод картинок в анонсах статьях 9 0
23 ноября 2014, 12:50 Здравствуйте, нашелся маленький недочет. Если добавлять ресурс с фронта. То путь до картинки подтягивает к 0 папке (ресурсу). Картинкам в Tickets уже после отправки прописывается реальный id, а сначала он 0. Если знаете, подскажите пожалуйста как исправить. Сейчас приходится заходить в админку, удалять путь к картинке и заново сохранять, чтобы опять сработал плагин и прописался нормальный путь. Вопросы / Вывод картинок в анонсах статьях 9 0
09 ноября 2014, 14:40 Василий, прошу прошения, пишу в выходной и с глупыми вопросами. В первый вызов страница не из кэша, получается что стили подключены дважды, самим сниппетом и мной, а вот после попадания в cache остаются только те, которые подключил я сам. Само по себе это не страшно, но в первый раз некрасиво. Вопросы / После включения cache у pdoPage пропадает код... 8 0
09 ноября 2014, 12:08 Василий, это можно как либо обойти, сейчас подключаю вручную, но это неправильно. Ладно бы, дело было только в star_rating, но Tickets и pdoTools два основных компонента на сайте. Изначально вызывал не кешированный pdoPage, что тоже быстро, но он же с кэшем просто сказка (почти в два раза быстрее быстрого). Куда копать, чтобы Tickets подключил стили и скрипты в связке с кэшируемым pdoPage и они попали в итоговый cache. Вопросы / После включения cache у pdoPage пропадает код... 8 0
07 ноября 2014, 21:35 Попытался вообще убрать все подключаемые файлы js, ситуация не изменилась. Без cache все отлично, как только попадает в кэш, летят все стили, подключаемые автоматически Tckets и star_rating. Если их добавь в ручную то все ОК. Как то это не правильно, да и не подключается TicketsConfig. В общем ничего не изменилось. Уже несколько дней бьюсь, пока безрезультатно. Вопросы / После включения cache у pdoPage пропадает код... 8 0
06 ноября 2014, 16:05 Полностью с вами согласен, решение кривое, но решение. Если найдете правильное решение, напишите пожалуйста, может пригодиться многим. Вопросы / <optiongroup> в секциях Tickets 8 0
06 ноября 2014, 14:05 Здравствуйте. Ответить точно я не могу, но могу привести свой пример. У меня в форме есть доп. поля (tv, например поле model ) которые пользователь заполняет сам, я их не подцепляю. Вот пример вызова, обратите внимание на &allowedFields=`longtitle,fullname,model,introtext,avtor` [[!TicketForm? &requiredFields=`longtitle,model,introtext` &allowedFields=`longtitle,fullname,model,introtext,avtor` &redirectUnpublished=`63` &parents=`[[!get?]]` &tplFormCreate=`tpl.Tickets.form.create1` ]]В шаблоне формы tpl.Tickets.form.create1 участок отвечающий за model. Сделал, абсолютно также как остальные стандартные поля. <div class="form-group"> <label for="ticket-model">[[%ticket_model]]</label> <input type="text" class="form-control" placeholder="[[%ticket_model]]" name="model" value="" maxlength="50" id="ticket-model"/> <span class="error"></span> </div>Ну и добавил подпись в словарь. Все работает и введенные поля (tv) успешно отправляет. И еще, если не получается решить простым способом, попробуйте сделать ваш select необязательным полем, создайте скрытый input и подставляйте выбранное значение из select яваскриптом в этот input, а его уже и отправляйте. Сам не пробовал, но должно получится. В данном случае, какая разница, заполнил поле пользователь или скрипт. Вопросы / <optiongroup> в секциях Tickets 8 0
04 ноября 2014, 21:53 Здравствуйте. Если я вас правильно понял, то вот костыли. 1. форму для публикации тиккета выводим так (понятно, что используемые и необходимые поля у каждого свои ) [!TicketForm? &requiredFields=`longtitle,introtext` &allowedFields=`longtitle,fullname,introtext` &redirectUnpublished=`ваш id` &parents=`[[!get?]]` &tplFormCreate=`tpl.Tickets.form.create1` ]]2. сниппет [!get?]] <?php return $_GET[parentcat];3. часть шаблона tpl.Tickets.form.create1 отвечающая за выбор категории (рекомендую изначально сделать копию оригинального шаблона (например тот же tpl.Tickets.form.create1) и уже туда добавлять код) <script> window.onload = function() {$("#parentcat [value='[[!get?]]']").attr("selected", "selected");} </script> <form action="" id="ticketFormcat" method="get" > <div class="form-group"> <label for="ticket-sections">Ваше название</label> <select name="parentcat" class="form-control" id="parentcat" onchange="if (this.selectedIndex) this.form.submit ()"> <option value="" ></option> [[pdoMenu? &parents=`0` &level=`1` &firstClass=`` &lastClass=`` &hereClass=`` &outerClass=`` &tplOuter=`@INLINE [[+wrapper]]` &tpl=`@INLINE <option value="[[+id]]">[[+menutitle]]</option>` ]] </select> </div> </form>Принцип работы У сниппета TicketForm есть возможность выбора родителя откуда выводить: &parents Вот туда мы будем подставлять значение из выбранного селекта (категории). Мы выбираем селект (категории — выводимый с помощью pdoMenu), форма отправляется по выбору селекта (onchange=«if (this.selectedIndex) this.form.submit ()»). Сниппет [[!get?]] ловит отправленное значение (id) формы (id категории), по выбранному нами селекту (категории) и подставляет его в TicketForm &parents=`[[!get?]]`. Так, как после автоматической отправки формы, по выбору селекта страница перезагружается и он сбрасывается, то скриптом $("#parentcat [value='[[!get?]]']").attr(«selected», «selected»); устанавливаем выбранное значение, чтобы не путать пользователя. Как следует, не потестил, но пока вроде работает. К сожалению это всего лишь костыли и решение достаточно кривое, но как сделать более красиво я не знаю. Нужно просить у Василия, и если он сочтет нужным и выкроит время, то будет счастье и появится такая возможность из коробки. Приветствуются любые правки, переделки и оптимизация. Вопросы / <optiongroup> в секциях Tickets 8 0
04 ноября 2014, 15:38 Большое спасибо, ваше решение однозначно лучше. Единственное, добавил правило OnDocFormSave, иначе не срабатывало (тиккеты уже опубликованы, открывал и пересохранял их чтобы сработал плагин). Вопросы / Вывод картинок в анонсах статьях 9 0
20 сентября 2014, 22:59 unihost 264 руб (виртуальный — мастер+) 0.0011010: Created inline chunk 0.3912332: Total time 6 291 456: Memory usageadminvps 6$ (виртуальный — Standart) 0.0007169: Created inline chunk 0.1967750: Total time 4 194 304: Memory usage Хостинг / Новый тест скорости хостинга для MODX 180 0
21 июня 2014, 21:10 Спасибо, обновился и гадость пропала. Но, нашелся плагин Core Services который перед закрывающимся тегом body добавляет ссылки на всякие нехорошие сайты. Удалил его, надеюсь на этом бой с гадостью завершен. Странно, только одно, стояла версия modx 2.2.11, значит в ней тоже дыры Безопасность / Вирус stat.rolledwil.biz 10 0
YaSmartCaptcha - защитите ваши формы от спама умной капчей от Яндекс Вообще не понял о чем речь) В системной настройке service_js сейчас указана ссылка smartcaptcha.cloud.yandex.ru/captcha.js Я предложил очистить эту настройку, тогда компонент н...
mxBackup — обезличенные копии MODX в пару кликов Ещё нет, я там разом почти полтора десятка пакетов выложил модератор, вероятно, а шоке.
Gallery3x 3.4.0 - вставка галерей прямо из визуального редактора (CKEditor и TinyMCE RTE) Здравствуйте. Есть консольный скрипт Вот почитайте: docs.ivan345.com/books/gallery3x/page/import-ms2galleryphp
[mSync] Новая версия синхронизации с 1С Всем привет. В какой то момент начали сыпаться ошибки: Error 23000 executing statement: INSERT INTO `modx_msync_products` (`product_id`, `uuid_1c`) VALUES ...
Checkbox для модального окна Они не отключены, они платные, чтобы писали только те, кому действительно очень надо. Когда бесплатно люди начинают думать, что я им должен.
[SendIt 2.6.0] Анализ поведения пользователя для защиты от спама (невидимая капча)... Здравствуйте. Делаю личный кабинет на Sendit и со сбросом пароля возникли проблемы. Можете подсказать, в чем ошибка? Список вопросов в одноименном разделе на modx.pro пока пуст, и,...
Minishop + честный знак (продажа маркированной продукции) В нашем случае мы решили убрать всю логику по маркировке сайта.
А что даст проверка на контекст и новое условие media_source?
Как я понимаю, при отправке с фронта, tickets назначает реальную папку (id ресурсу) только после отправки и сохранения ресурса, плагин срабатывает раньше, а в это время пути к картинкам ведут еще на нулевой ресурс assets/images/tickets/0/имяфайла.png
По вашей подсказке сделал срабатывание плагина только для авторизованных в mgr, что в моем случае частично решает проблему (обычные пользователи, отправляют статьи на проверку (плагин не срабатывает и не прописывает «кривые пути»), а уже менеджер заходит в админку проверяет, публикует и сохраняет (срабатывает плагин и прописывает корректный путь))
Решение получается не универсальное, куда копать дальше?
Есть ли возможность запустить плагин после срабатывания tickets ( когда пути уже ведут на реальный, а не на нулевой ресурс)
Картинкам в Tickets уже после отправки прописывается реальный id, а сначала он 0. Если знаете, подскажите пожалуйста как исправить.
Сейчас приходится заходить в админку, удалять путь к картинке и заново сохранять, чтобы опять сработал плагин и прописался нормальный путь.
В первый вызов страница не из кэша, получается что стили подключены дважды, самим сниппетом и мной, а вот после попадания в cache остаются только те, которые подключил я сам.
Само по себе это не страшно, но в первый раз некрасиво.
Изначально вызывал не кешированный pdoPage, что тоже быстро, но он же с кэшем просто сказка (почти в два раза быстрее быстрого).
Куда копать, чтобы Tickets подключил стили и скрипты в связке с кэшируемым pdoPage и они попали в итоговый cache.
У меня в форме есть доп. поля (tv, например поле model ) которые пользователь заполняет сам, я их не подцепляю.
Вот пример вызова, обратите внимание на &allowedFields=`longtitle,fullname,model,introtext,avtor`
В шаблоне формы tpl.Tickets.form.create1 участок отвечающий за model. Сделал, абсолютно также как остальные стандартные поля.
Ну и добавил подпись в словарь.
Все работает и введенные поля (tv) успешно отправляет.
И еще, если не получается решить простым способом, попробуйте сделать ваш select необязательным полем, создайте скрытый input и подставляйте выбранное значение из select яваскриптом в этот input, а его уже и отправляйте. Сам не пробовал, но должно получится. В данном случае, какая разница, заполнил поле пользователь или скрипт.
1. форму для публикации тиккета выводим так (понятно, что используемые и необходимые поля у каждого свои )
2. сниппет [!get?]]
3. часть шаблона tpl.Tickets.form.create1 отвечающая за выбор категории (рекомендую изначально сделать копию оригинального шаблона (например тот же tpl.Tickets.form.create1) и уже туда добавлять код)
Принцип работы
У сниппета TicketForm есть возможность выбора родителя откуда выводить: &parents Вот туда мы будем подставлять значение из выбранного селекта (категории). Мы выбираем селект (категории — выводимый с помощью pdoMenu), форма отправляется по выбору селекта (onchange=«if (this.selectedIndex) this.form.submit ()»). Сниппет [[!get?]] ловит отправленное значение (id) формы (id категории), по выбранному нами селекту (категории) и подставляет его в TicketForm &parents=`[[!get?]]`. Так, как после автоматической отправки формы, по выбору селекта страница перезагружается и он сбрасывается, то скриптом $("#parentcat [value='[[!get?]]']").attr(«selected», «selected»); устанавливаем выбранное значение, чтобы не путать пользователя.
Как следует, не потестил, но пока вроде работает.
К сожалению это всего лишь костыли и решение достаточно кривое, но как сделать более красиво я не знаю. Нужно просить у Василия, и если он сочтет нужным и выкроит время, то будет счастье и появится такая возможность из коробки.
Приветствуются любые правки, переделки и оптимизация.
adminvps 6$ (виртуальный — Standart)