[pdoTools] 2.3.2 - автозагрузка модификаторов

Вот и подоспело очередное, уверен, горячо ожидаемое обновление pdoTools.

На этот раз я придумал, как можно иначе подключать Fenom, что дало возможность реализовать кучу встроенных модификаторов, а там где их не хватит — автозагрузку модификаторов из сниппетов.

Системная настройка pdotools_fenom_modifiers больше не нужна и удаляется при установке обновления. Если указанный модификатор не найден, то работа не останавливается, как раньше, и вы просто получаете ошибку в лог.

Следует учесть, что я реализовал не все фильтры MODX (но очень много), и не все из них работают точно так, как в MODX — поэтому потрудитесь прочитать документацию, прежде чем жаловаться, что у вас там опять что-то не того.

Ссылка на подробнейшую документацию отдельно, чтобы все заметили.

Итак, список всех модификаторов Fenom, чтобы вы могли оценить объём работы:
  • upper, up, strtoupper, ucase, uppercase
  • lower, low, strtolower, lcase, lowercase
  • date_format
  • date
  • truncate
  • escape, e
  • unescape
  • strip
  • length, len, strlen
  • iterable
  • replace
  • ereplace
  • match
  • ematch
  • split
  • esplit
  • join
  • in
  • md5
  • sha1
  • crc32
  • urldecode
  • urlencode
  • rawurldecode
  • base64_decode
  • base64_encode
  • http_build_query
  • print_r
  • var_dump, dump
  • nl2br
  • ellipsis
  • ucwords
  • ucfirst
  • htmlentities, htmlent
  • limit
  • esc, tag
  • notags, strip_tags, stripTags, striptags
  • stripmodxtags
  • cdata
  • reverse, strrev
  • wordwrap
  • wordwrapcut
  • fuzzydate
  • ismember, memberof, mo
  • isloggedin
  • isnotloggedin
  • url
  • lexicon
  • user, userinfo
  • resource
  • print
  • setPlaceholder, toPlaceholder
  • placeholder, fromPlaceholder
  • cssToHead
  • htmlToHead
  • htmlToBottom
  • jsToHead
  • jsToBottom
  • toJSON, json_encode
  • fromJSON, json_decode
  • option, setOption
  • getOption
Обратите внимание на модификаторы resource, user, config, placeholder — это доступ к ресурсам, юзерам и массивам плейсхолдеров и конфигурации системы.

Отдельно хочу отметить просто замечательный модификатор print, который печатает, экранирует и выводит любую переменную в теге pre.
{15 | resource | print}
{15 | resource : 'properties' | print}
{10 | user : 'extended' | print}
и вы получаете полностью распечатанный массив ресурса 15, потом его поля properties и extended юзера 10.
В общем, это крайне полезно для отладки при разработке сайта.

Обновляемся, пишем отзывы.
Василий Наумкин
26 марта 2016, 07:11
5
3 339
+17
Поблагодарить автора Отправить деньги

Комментарии: 13

Наумов Алексей
26 марта 2016, 11:02
+1
Обновился! print — работает))) Теперь pre ручками писать не нужно, спасибо!
Владимир
26 марта 2016, 11:59
0
paypal понес тебе «Спасибо»!
Павел Гвоздь
26 марта 2016, 12:13
+7
Василий, моё восхищение не передать словами!

Я однажды говорил тебе, что не могу уважать тебя из-за того, что ты употребляешь алкоголь, и помимо этого наговорил много других гадостей. Сейчас хочу публично попросить у тебя прощения! Я извиняюсь за те оскорбления, которые тебе высказал, и мне правда стыдно!

Во-истину говорят, что люди в нашей жизни не случайны. Ты, скорее всего сам того не подозревая, многое сделал для того, чтобы я переоценил своё отношение к разным вещам. В частности к отношениям с людьми, у которых несколько иное восприятие жизни, в отличие от меня. Не хорошее, и не плохое, а просто иное. Спасибо тебе за это! Я уважаю тебя, как человека, потому что ты хороший человек!

P.S.: Не этот пост всё поменял для меня, я уже давно вынашивал планы извиниться. Этот пост показался мне хорошим местом, где можно сделать это.
    Василий Наумкин
    26 марта 2016, 14:35
    +4
    Не хорошее, и не плохое, а просто иное
    Золотые слова, на здоровье!

    Никаких проблем. Та учётная запись, что оставляла нехорошие комментарии, давно отключена. А это пишет другая, хорошая учётная запись =)
      r5uY40
      29 марта 2016, 19:27
      -1
      Sorry, промахнулся на смартфоне. Безусловно плюсовал.
Сергей Шлоков
26 марта 2016, 12:28
0
Супер.

Вот тут опечатка
json_encode (fromJSON), json_decode (fromJSON)
Василий Столейков
26 марта 2016, 16:01
+2
Нет слов передать всё моё восхищение проделанной работой — это то чего очень не хватало!
Теперь MODX превратился из сказки в утопию… =)
Petro
01 апреля 2016, 01:59
0
Василий
Вот что заметил. Помогите понять почему так
У меня на странице есть вызов
[[!FormIt?
&hooks=`subscribe,redirect`
&submitVar=`btnsubscribe`
&redirectTo=`35`]]

Есть сниппет subscribe, который вызывает функцию subscription с определенного класса. В функции происходит обработка введенных данных и отправляется письмо. Текст для письма берется из чанка
$message = $this->modx->getChunk('subcribe', $array);

В чанке subcribe есть следующий код:
{if $_modx->config.cultureKey == 'uk'}
текст на русском языке; {$name}
{else}
текст на английском языке; {$name}
{/if}

И эта вся конструкция работает. В зависимости от того в каком контексте я заполняю форму, такой текст и отправляется.

Но если вызов сниппета FormIt я делаю таким
{$_modx->runSnippet('!FormIt', [
'hooks' => 'subscribe,redirect',
'submitVar' => 'btnsubscribe',
'redirectTo' => 35
])}
То тогда этот синтаксис Fenom уже не срабатывает, {$name} приходится заменять на [[+name]] и чанк разделять на два варианта (рус. и англ.). Вот хочется понять почему так. Объясните, пожалуйста
    Droug
    13 апреля 2016, 12:23
    +1
    Очень приближенно нужно вместо
    $message = $this->modx->getChunk('subcribe', $array);
    Написать что-то такое:
    $pdoTools = $this->modx->getService('pdoTools');
    $message = $pdoTools?$pdoTools->getChunk('subcribe', $array):$this->modx->getChunk('subcribe', $array);
      Petro
      15 апреля 2016, 19:29
      0
      спасибо
Владимир
19 августа 2016, 22:19
0
использую Jevix как модификатор, но по умолчанию он не вырезает переносы строки
к модификатору параметры &cfgSetAutoReplace=`[["±","©","©","®","©","©","®","
"],["±","©","©","®","©","©","®"," "]]`]]" добавить бы .., как бы это попроще сделать?

{if $_modx->resource.description?} 	
{set $articledescription = $_modx->resource.description | jevix}
{else} 
{set $articledescription = $_modx->runSnippet('!summary', [
'text' => $_modx->resource.content,
'len' => 150,
])}
<meta property="og:description" lang="{$_modx->config.cultureKey}" content="{$articledescription | jevix}" />
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.