DocLister 2.3.9

Вялотекущая разработка DocLister продолжается, несмотря на жару и духоту, и я сегодня зарелизил версию 2.3.9 (вообще 2.3.8 и вчера, но пришлось сделать существенные правки в DLMenu).


Так как последний раз в новостях упоминалась 2.2.0, то изменений в общем-то не так мало накопилось, но большинство из них это исправления ошибок и оптимизации. Напишу о некоторых интересных.

Обратная пагинация
Включается параметром reversePagination=`1` и в результате ссылки на страницы выводятся в обратном порядке:


Благодаря этому старые записи остаются на одних и тех же страницах. А еще в пагинаторе были починены редиректы для несуществующих страниц.

Максимальное количество выводимых документов
Не знаю, где это может понадобиться, но почему бы и не сделать. Задается параметром maxDocs. При этом корректно работает пагинация. Тот кто предложил это улучшение вероятно давно забил на MODX и DocLister, тем не менее, задача была героически решена спустя несколько лет.

DLMenu, DLSitemap, DLBuildMenu, DLUsers
О новых сниппетах я уже подробно писал, а о старых DLBuildMenu и DLUsers напишу только то, что удалил их из комплекта, раз есть более удобные альтернативы.

Возможность переопределить методы checkAlias и getAlias в modResource
На одном сайте возникла проблема с импортом тысяч товаров, которые хранились, как это обычно бывает, в виде документов. Казалось, что дело в количестве товаров, и я уже думал, что быстро решу проблему своим модулем для импорта, где файл обрабатывается по частям через ajax, но не тут-то было: после пары тысяч товаров мой модуль тоже начал жутко тормозить и положил сервер. Мучился я долго, пока не выяснил, что тормоза создает проверка alias на дубликаты с последующим исправлением. Проверку я отключил, расширив modResource, а в конце импорта одним запросом сделал алиасы уникальными, дописав к ним id документа.

Убрано сообщение о том, что параметр tpl пуст
Часто хочется получить данные из DocLister без всяких обработок. После исправления это стало возможным:

$modx->runSnippet('DocLister', array(
    'idType' => 'parents',
    'parents' => 0,
    'tpl' => '',
    'saveDLObject' => '_DL'
));
$docs = $modx->getPlaceholder('_DL')->docsCollection()->toArray();


Изменена работа параметра &api
Если в параметре перечислить поля, то только они и будут выведены (если есть такая возможность). Раньше была какая-то неопределенность в этом всем. Опять же появилась возможность пропустить ненужные обработки, которые выполяются в этом режиме.

Дополнительный вариант вывода данных
Если в параметре JSONformat указать «simple», то в виде json будет выведен список документов и ничего больше.

Класс modManagers для работы с менеджерами
Теперь можно создавать, удалять и авторизовать менеджеров с фронтенда (: Поддержка класса добавлена в FormLister, так что можно написать собственную админку. Тем более, что в modResource появилась возможность присваивать документам группы с помощью метода setDocumentGroups.

Параметр sanitizeTags
Дополнительный параметр экстендера e, который позволяет экранировать тэги MODX при выводе документов через DocLister. Параметр появился после того, как я сделал в FormLister возможность откатить порчу данных в POST парсером в целях безопасности. В общем, если есть сомнения, что в выводе могут появиться MODX-тэги, используйте этот параметр.

Ну и еще для тех полутора человек, кто пользуется MODxAPI. После некоторых правок корректная работа методов setUserGroups, setDocumentGroups и класса modResource в целом возможна только при наличии UNIQUE-индексов в соответствующих таблицах. С версии Evo 1.3.4 все будет сразу, а пока можно добавить вручную (при необходимости):

ALTER TABLE `modx_site_tmplvar_contentvalues` ADD UNIQUE INDEX `ix_tvid_contentid` (`tmplvarid`,`contentid`);
ALTER TABLE `modx_member_groups` ADD UNIQUE INDEX `ix_group_member` (`user_group`,`member`);
ALTER TABLE `modx_web_groups` ADD UNIQUE INDEX `ix_group_user` (`webgroup`,`webuser`);
ALTER TABLE `modx_document_groups` ADD UNIQUE INDEX `ix_dg_id` (`document_group`,`document`);

8 комментариев

avatar
Похоже и те «полтора» вымерли, раз ни одного комментария ))))
avatar
Ага, поломку контроллера Onetable никто и не заметил.
avatar
Я как раз на неё нарвался. =) Пока искал причины да обновлялся вышла уже версия с исправлениями. Поэтому и написать не успел.

Не такие уж и полтора.
avatar
на данный момент у топика 12 плюсов, 6 закладок и 196 просмотров. Ни кто не «вымер», просто аж слов не хватает выразить автору топика благодарность :)
avatar
Это точно ))
avatar
Максимальное количество выводимых документов
Не знаю, где это может понадобиться, но почему бы и не сделать. Задается параметром maxDocs. При этом корректно работает пагинация. Тот кто предложил это улучшение вероятно давно забил на MODX и DocLister, тем не менее, задача была героически решена спустя несколько лет.

Я живой!!! И не забил)) просто у меня на гите другой ник.

Спасибо за доработку.

Это мне нужно было для ограничения вывода личных сообщений между веб-пользователями в их личных кабинетах (чтобы не забывали чистить старые сообщения)))

Может так же пригодиться в аналогичной ситуации для форума, если какой когда-то появится (Дмитрий как-то тему по форуму уже подымал).
  • paic
  • +1
avatar
Благодарствую за проделанную работу!
Я тут вообще редко отписываюсь, но слежу постоянно — так не переживай!
avatar
Я тоже жив! "задача была героически решена " — это повеселило ))
Спасибо за работу.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.