+1131.98
Рейтинг

Дмитрий

Плагин evoCollection - редактируем дочерние элементы (EVO)

Встала задача перекинуть сайт с самописным движком на MODX. Все бы ничего, но они привыкли к табличному представлению товаров, вот хотят чтобы также было и на MODX.
Гугл подсказал решение Евгения Борисова CResource, но с учетом того что он был написан достаточно давно, на новой версии он не запустился у меня.
Решил набросать свое решение, да че-та увлекся, и получился вполне себе приличный, хоть
Читать дальше →

Сниппет DLMenu для вывода меню с помощью DocLister

С Wayfinder все понятно и так; DLBuildMenu хорош как иллюстрация возможностей параметра prepare, но такой способ решения задачи привел к повышенному потреблению ресурсов, что уже не очень хорошо. К недостаткам DLBuildMenu можно отнести и некоторую сложность при переходе с Wayfinder. В общем, предлагаю свое решение, которое должно преуменьшить недостатки DLBuildMenu, сохранив гибкость в
Читать дальше →

Google-админка. Шаг 1

Это будет очень короткая заметка.

Иногда требуется периодически наполнять сайт данными из файлов csv/xls(x). Каждый раз, когда этот вопрос возникает, начинается серьезный разговор с заказчиком о форматах файлов и кодировках, о том, как пользоваться админкой (которая часто даром никому не нужна, прайс бы обновить по-быстрому) и прочих вещах.

Что можно сделать в такой фантастической ситуации? Ну, например, создать в Google spreadsheets (табличный редактор гугла) документ с доступом по ссылке. Настроить вместе с заказчиком колонки таблицы, которые менять нельзя никогда и никому. Исправить ваш любимый код импорта так, чтобы он вначале скачивал csv с документов гугла, а потом уже делал все остальное.


Читать дальше →

вывести Doclister в MultiTv

Здравствуйте. Задача следующая: на фронте есть 2 соседние вкладки с одинаковыми товарами (товары имеют изображение, заголовок и т.д.), которые разбиваются на подзаголовки. Схематично примерно так joxi.ru/Dr81vBEU6ye0m6

Я решил это делать через multitv, писать подзаголовок и писать id товаров для вывода через doclister, но столкнулся с проблемой во вложенном доклистере не выводятся поля типа pagetitle и т.д. Подскажите плз как это можно решить. Ну или решение глупое может есть какой более адекватный вариант?

RESPONSIVE filemanager для Modx Evo (upd. 23.07.17)

Есть такой достойный бесплатный web file manager — RESPONSIVE filemanager. Сайт официальный сайт.
Чем он лучше kcfinder? сразу спросите вы.
Да много чем. Адаптивный под разные экраны, всякие фичи с редактированием картинок, аяксы и прочие плюшки, фильтр, сортировка, можно скрыть нужные папки и тд… Проще посмотреть демо на офф. сайте. Там же почитать GREAT FEATURES. Я нашел только один
Читать дальше →

FastImageTV

Аналог Revo-компонента FastUploadTV. Позволяет добавлять картинки в TV-параметры без вызова файлового менеджера. Разработку оплатил и разрешил поделиться с сообществом пользователь ilarion , за что ему спасибо. Также спасибо пользователю EGO , который до публикации этого топика наткнулся на компонент на гитхабе и прислал по этому случаю донат (:


Читать дальше →

Блокировка менеджера с ролью editor

Добрый день, может кто подскажет в чём проблема. В системе Modx Evo 1.0.15 (да и в других версиях тоже) есть в конфигурации возможность указать сколько попыток даётся на авторизацию в системе управления. И если менеджер не правильно вводит какое-то количество раз его блокирует, на время установленное в конфигурации Время блокирования (в минутах.)

Так вот заметил что по истечении времени которое установлено в графе Время блокирования, менеджер с ролью editor остаётся заблокированным и приходится его в ручную разблокировать. Получается что блокировка на какое-то время не работает. Блокирует пока не разблокируешь в ручную. Хотя если зайти то в графе время блокировки указано верно (заблокирован до ____) Но суть менеджер навечно заблокирован пока я его в ручную не разблокирую.

Может я что не так делаю или есть какие-то хитрые настройки?

MODX Evolution 1.1 (29.02.2016)

MODX Evolution 1.1 готов, хотя ничего нового для тех кто использует мою сборку(http://modx.com.ua) там нет :) но все равно приятно :)

Список изменений:
github.com/modxcms/evolution/blob/master/install/changelog.txt

Ошибки: 44
Рефактор: 35
Обновления, плюшки: 35
Коммитов: 322
Измененных файлов: 293
Приложили руки: 18 человек

Основная команда:
Dmytro Lukianenko (Dmi3yy) github.com/dmi3yy
Deesen (Deesen) github.com/deesen
Agel_Nash (AgelxNash) github.com/AgelxNash
Sergey Davydov (MrSwed) github.com/MrSwed
Kari Sцderholm (Haprog) github.com/Haprog
YAMA (yama) github.com/yama
Thomas Jakobi (Jako) github.com/Jako
and: Zevseg, Segr, TimGS, jasonabird, bossloper, Eoler, fourroses666, rpre, pmfx, kulmjens, MaXL-ru, janniconl, Fess7, esszett

А также: Zevseg, Segr, TimGS, jasonabird, bossloper, Eoler, fourroses666, rpre, pmfx, kulmjens, MaXL-ru, janniconl, Fess7,esszett

Официальная дата релиза: 29.02.2016 (красивая дата потому пару дней подождем:)


--------------------------------------------
Bugfixes:
--------------------------------------------
* [GitHub:#41a5bcd] Fixing #356 Loosing content in chunk after saving and already exists
* [GitHub:#6d799af] [#364] Fixed issue for renderFormElements to provide default text (Fixed to only set value if field_value is empty) 
* [GitHub:#90b1a91] Weblogin: - Retain remember me option …	
* [GitHub:#dcd9656] Fix script error in View manager logs	
* [GitHub:#3e6895d] Increase FileSource filebinding input field maxlength to prevent data loss
* [GitHub:#da4cf8a] Prevent PHP warning 'Key cannot be empty' …	
* [GitHub:#32f0d65] Fix #396 getUserDocGroups(true) always returns only one group name	
* [GitHub:#3cea34d] Weblogin: doesn't always clear $_SESSION['webDocgrpNames'] on logout	
* [GitHub:#1b0148e] Fix #394 error in description of CodeMirror …	
* [GitHub:#6cc4467] Fix/update confirmed working MODX version in CodeMirror plugin comment.	
* [GitHub:#1c2e755] Value of properties in GUID on module creation. This bug is active since 1.0.13. Seems to be that creating modules is not an everyday task
* [GitHub:#8530858] Maybe missing permission check in refresh_site.dynamic.php 	
* [GitHub:#21e1aad] ManagerManager: non-breaking space. It interferes with the use of the ddmultifield
* [GitHub:#aca2a22] Minor fix - MODxHost template	
* [GitHub:#30fd127] small calendar styles fix	
* [GitHub:#7dec05a] Choose language translate	
* [GitHub:#0dc2c0f] AjaxSarch Date format	
* [GitHub:#395898a] fix DBAPI update( for NULL)
* [GitHub:#5a554f7] fix session_keepalive	
* [GitHub:#dd25766] Ditto: Fix - Deprecated PHP Code "makeList"
* [GitHub:#75c9c0f] Fix - Slimming Paint rendering issue at Chrome …	
* [GitHub:#14a94c6] Fix error render the default setting in the TV type date	
* [GitHub:#cbce5e7] fix sendmail	
* [GitHub:#175a18e] checkCache fix	
* [GitHub:#9e09c4e] wayfinder config need include for multi use with other configs	
* [GitHub:#a5d63f5] DB dumps do not disable foreign key checks 
* [GitHub:#ef206b2] fix install with empty categoryes name	
* [GitHub:#f65f4ed] Avoid double matches …	
* [GitHub:#797bd91] fix emmet header footer for HTML5	
* [GitHub:#b631d61] fix bad SEO when using phpthumb #434 …	
* [GitHub:#ac0cec4] Fixing, TransAlias removes a dot in file's format …		
* [GitHub:#4bc76c5] #391 user/pw htmlspecialchars	
* [GitHub:#2dd47e0] #391 username/data htmlspecialchars	
* [GitHub:#93959ac] Avoid PHP-Error "File not found"	
* [GitHub:#640309d] fix render settings	
* [GitHub:#c7abc69] avoid php notice: undefined index…	
* [GitHub:#e7ea0f7] Avoid PHP-Error/Data-Loss if path not exists	
* [GitHub:#2bb4391] Issue #385	htmlspecialchars + windows-1251 	
* [GitHub:#62a22ba] icon message unread	
* [GitHub:#2772903] Problem with a plus-sign in email address with forgot manager password #428
* [GitHub:#ef7a06d] if: fix for check [*content*] Issue #480	
* [GitHub:#8845642] export.class.inc.php #417
* [GitHub:#9e0a1b9] makeUrl fails with site start and query string
* [GitHub:#92f6cda] Error counting published and unpublished comments in JOT #389

--------------------------------------------
Refactor:
--------------------------------------------
* [GitHub:#aa2baae] Refactor manager api class: added missing return values, updated checkHashAlgorithm, removed superfluos variables, added missing variables
* [GitHub:#dfb0ac4] Display TV name during install
* [GitHub:#6f26656] Refactor - $modx->evalSnippets()	
* [GitHub:#1cebc29] Refactor - $modx->getTagsFromContent()
* [GitHub:#6c098f5] Refactor - $modx->evalSnippets()	
* [GitHub:#4e8b8da] Refactor - $modx->mergeDocumentContent()	
* [GitHub:#2b56d5d] Update setup.sql Increase default max upload file size to 10MB	
* [GitHub:#fb2f868] Wayfinder: for local references - use original document fields separated by comma (useful for set active if it is current, titles, link attr)
* [GitHub:#e77c169] Wayfinder: &useWeblinkUrl=`0` now work, no longer need to write &useWeblinkUrl=`FALSE`
* [GitHub:#27ebbe6] Ditto: no "start=0" in links of ditto pagination depending on modx setting seostrict
* [GitHub:#fa0348f] now we can use custom frame files from theme see (https://github.com/dmi3yy/modx.evo.custom/tree/master/manager/media/style/D3X)
* [GitHub:#ca8bnow] you can change all action in theme without change in core		
* [GitHub:#a842303] refactor search.static	
* [GitHub:#c09c083] frameset to iframe	
* [GitHub:#ed5396e] use Mysqli by default	
* [GitHub:#1968b47] refactor MainMenu (https://github.com/modxcms/evolution/blob/develop/manager/frames/mainmenu.php)	
* [GitHub:#6211a79] refactor cache_sync class, add some code for AliasListingFolder	
* [GitHub:#7c6adaa] fix in postProcess	
* [GitHub:#295ad92] Workaround for deprecated preg_replace() with /e modifier …	
* [GitHub:#bdb542d] refactor BackTrace	
* [GitHub:#e612f72] refactor getLoginUserName	
* [GitHub:#03c5e28] refactor getLoginUserID	
* [GitHub:#816af9c] refactor getChunk	
* [GitHub:#93fa0fc] refactor runSnippet	
* [GitHub:#26f86d0] refactor makeUrl for AliasListingFolder	
* [GitHub:#7d3e99e] refactor logEvent	
* [GitHub:#a7fd270] refactor getChildIds for AliasListingFolder	
* [GitHub:#6f19c69] refactor getParentIds for AliasListngFolder	
* [GitHub:#fa86662] refactor executeParser for AliasListingFolder	
* [GitHub:#3c94596] refactor checkPublishStatus()	
* [GitHub:#758817d] "Show in menu" moved to new row …	
* [GitHub:#b229ca1] #444 (Installer & PHP 5.5+ )	
* [GitHub:#113ac4c] add php version in sysinfo	
* [GitHub:#de360bd] autoload_register to spl_autoload_register	
* [GitHub:#7fadc10] Create cache folder before creating .htaccess in it	

--------------------------------------------
Additional Improvements & Updates:
--------------------------------------------
* [GitHub:#a76c830] Add Ukrainian lang
* [GitHub:#0ca31ad] phpthumb: determination of the original image file extension	
* [GitHub:#46e8457] phpthumb: encode decode cyr filenames	
* [GitHub:#70d0c84] phpthumb: &q=96 makes no sense with png and gif
* [GitHub:#9b0a873] phpthumb: encode only returned filenames
* [GitHub:#bc501e0] phpthumb: larger nophoto image	
* [GitHub:#563934c] Update eform.inc.php fix adding slash by vericode for HTML5 inputs	
* [GitHub:#d2adb9d] eForm: Adding HTML5 input types	
* [GitHub:#7be7aca] Wayfinder. Set id of reference to original document ID if it is innerdoc
* [GitHub:#63e6414] Starting the installation with the language of the user's browser	
* [GitHub:#bc5a9eb] BreadCrumbs 1.0.5: add ignoreAliasVisible to BreadCrumbs
* [GitHub:#2e56507] Eform: add phone validate in Eform
* [GitHub:#89dc1ea] New - $modx->getField($field,$docid)	
* [GitHub:#0c3fd0b] New - $modx->getUltimateParentId($docid,$top)
* [GitHub:#956c9ae] Cross-references from ClipperCMS: [*pagetitle@17*], [*pagetitle@parent*], [*pagetitle@ultimateparent*] ([*pagetitle@uparent*]), [*pagetitle@ultimateparent(17)*], [*pagetitle@alias(alias/path)*],[*pagetitle@site_start*]
* [GitHub:#5ddb8df] allow using asterisk for assign TVs to all templates
* [GitHub:#2ed509b] Update file browser KCfinder to 2.5.4	
* [GitHub:#eae7e74] Update CodeMirror to 1.2b	
* [GitHub:#b7dc20f] the ability to pass arbitrary parameters in the snippet(so you can use them in the processing of events)
* [GitHub:#fcb6343] Wayfinder: add [+wf.iterator+]	
* [GitHub:#907a1f2] view customTV in Select when choice tv type	
* [GitHub:#1072d79] Add some events: OnMakePageCacheKey, OnDocFormUnDelete, onBeforeMoveDocument, onAfterMoveDocument, OnBeforeLoadDocumentObject, OnAfterLoadDocumentObject, OnBeforeLoadExtension, OnManagerMenuPrerender, OnDocFormTemplateRender, OnFileBrowserUpload, OnDocFormTemplateRender
* [GitHub:#2770263] ManagerManger(add mm_movecategorytotab)
* [GitHub:#] add AliasLiastingFolder in Setting -> Friendly URLs (tested with 1000000 documents, no more limits for documents)
* [GitHub:#07bac53] add function getCacheFolder	
* [GitHub:#9372391] add function setConditional	
* [GitHub:#09e0ba7] add function getTpl	
* [GitHub:#769617e] ctrl + S, cmd + S now save in Manager	
* [GitHub:#fe5a3e7] Add MODxAPI extend MODX Api		
* [GitHub:#bcbe26e] add DocLister (https://rtfm.modx.com/extras/evo/doclister/)	
* [GitHub:#1bb1710] add in DBAPI $modx->db->dataSeek	
* [GitHub:#3a1c634] update _get_snip_result	
* [GitHub:#97326f2] Added missing CSS-ID to "actionButtons"
* [GitHub:#95a9283] Add Extras module to core
* [GitHub:#0d95ec6] if: Added Expression "contains"	

[EVO] Кастомный TV в виде симпатичного переключателя состояния

В рамках работы над модулем интернет-магазина TSVshop появилась потребность сделать симпатичный Custom TV — switch переключатель состояния для документов MODx. Этот параметр работает как тумблер: либо включает, либо выключает значение. Соответственно, значение этого TV-параметра будет либо 1, либо 0.

Вот, решил поделиться с сообществом.

Вот как выглядит этот переключатель:

Внешний вид Switch customTv

Настройка совсем простая:

1) Размещаем содержимое архива в корень сайта
2) Создаем TV-параметр с произвольным названием и описанием.
3) Тип ввода — switch
4) Назначаем его нужному шаблону.
5) Все остальные поля оставляем пустыми

Скачать можно здесь: https://github.com/Serg28/switch-custom-tv/archive/master.zip

Прячем лишнее от менеджеров

Обычно я, когда даю доступ к готовому сайту, то создаю для этого пользователя с ограниченными правами, а пароль администратора даю, если попросят. Каких-то корыстных целей в этом нет, просто со стороны пользователя меньше возможностей что-нибудь поломать.
Несколько дней назад возникла проблема: заказчик потыкал в меню и посчитал оскорбительным, что у него нет прав. И действительно, если в Revo лишнее в меню скрывается от менеджера при настройке прав, то в Evo все видно, хоть и не работает. Решение очень простое:

/* 
Events: OnManagerMenuPrerender, OnManagerPageInit
Configuration:

&role=role;text;2 &hide=hide;textarea;user_management_title,
manager_permissions,
role_management_title,
elements,
reports,
bk_manager,
import_site,
export_site,
edit_settings,
new_module,
web_permissions
*/
$e = $modx->event;
$user = $modx->userLoggedIn();
$data = $modx->getUserInfo($user['id']);
if ($e->name == 'OnManagerMenuPrerender') {
	if ($data['role'] == $role) 
		if(isset($hide))
			foreach(explode(',',$hide) as $item) 
				unset($menu[trim($item)]);
	$e->output(serialize($menu));
}
if ($e->name == 'OnManagerPageInit') {
	if ($data['role'] == $role)
		if(isset($_REQUEST['a']) && $_REQUEST['a'] == 106)
			$modx->sendRedirect(MODX_MANAGER_URL.'index.php?a=2');
}

Плагин прячет для роли Editor лишние пункты меню (названия можно посмотреть в файле manager/frames/mainmenu.php), в том числе модуль Extras, и не дает смотреть страницу «Управление модулями». Портит дело только кнопка «Управление элементами» в дереве, ее нормально не удалить — но там и не пишется, что нет прав, так что пусть остается (: