+1.13
135 читателей, 229 топиков

TV type SELECT не сохраняет значения

EVO 1.1b-d7.0.18
есть TV type select, значения берутся из multiTV
@EVAL return $modx->runSnippet('multiTV',array('docid'=>'3','tvName'=>'kurs','display'=>'all'));
значений около 20.
проблема такая — при выборе значения из выпадающего списка значения не сохраняются или сохраняются только если выбрать из первых пяти, точную закономерность не выявил…
Подскажите в чем может быть проблема?

[EVO] evoAutoFolder - плагин создания дерева папок по id ресурсов

Доброго времени суток!

Представляю свой первый плагин для modx evo, я новичок в разработке, это мой первый опыт разработки для modx, мой первый пост здесь, первый опыт работы с github и git'ом вообще, поэтому прошу сильно не ругать.

Предыстория

Имеется несколько сайтов с большим количеством ресурсов (более 10000) и для каждого ресурса загружается большое количество файлов и изображений.

Проблемы:
— менеджеры имеют доступ ко всем файлам через KCFinder
— менеджеры путаются в папках и файлах

Проблемы вроде бы решил плагином kcAutoFolder от Pathologic, но kcAutoFolder работает либо с изображениями, либо с файлами, а требуется и с тем, и с другим. Также kcAutoFolder создал большое количество папок в 'assets/images' и сервер начал тормозить, еще начал крашиться KCFinder при попытке отобразить дерево папок. Также нет разделения доступа к папкам и т.д.

Было принято решение писать свой плагин. Назвал я его evoAutoFolder, он решил все описанные проблемы. Плагин был написан для себя, но решил поделиться, вдруг окажется кому-то полезным.

Основные возможности:

— В папке 'assets/uploads' создает папки по id ресурсов с учетом иерархии
— Для новых ресурсов создается папка в 'assets/uploads' по дате, при сохранении ресурса папка переименовывается на id и перемещается в папку родительского ресурса
— KCFinder смотрит только в созданную папку и папки других ресурсов в нём не видны (разделение доступа к папкам)
— При перемещении ресурса плагин перемещает папку ресурса с учетом вложенных папок дочерних ресурсов в папку нового родителя
— При перемещении ресурса плагин автоматически заменяет пути у всех TV ресурса и также заменяет пути у всех TV дочерних ресурсов
— При очистке корзины плагин удаляет папки удаленных ресурсов
— Плагин создает для каждого ресурса папки images, files и т.д.
— Превью изображений и файлов создаются в папке ресурса и подцепляются KCFinder'ом

Сам плагин и описание выложил на гитхабе

Возможно изобрел велосипед, но если бы я нашел более легкое решение, несомненно бы воспользовался им. Жду Ваших комментариев! Всем удачи!

UPD 23.03.2016

Реализовано дублирование. При дублировании ресурса, дублируется папка, все его дочерние элементы и переписываются все TV. У себя потестил, вроде все норм. Обновил исходники на гитхаб.

UPD 22.02.2017

Накатил на MODX Evolution 1.2.1-d9.1.0, работает.
MODX от Дмитрия ставил чистый и все галочки по дэфолту.

[EVO] globalPlaceholders - модуль глобальных плейсхолдеров, tv и настроек.

Всем доброго времени суток.
Мне наконец надоело заниматься заполнением глобальных настроек через базу и разные быстрые решения. Было решено пошустрому собрать модуль + плагин для редактирования статичных данных которые часто раскиданы по чанкам и разным страницам. В общем собрал все в одно место. Настройка может подменять и плейсхолдер и тв. Редактируется удаляется переименуется все из модуля.

Весь код находится на гите. Предложения и вопросы можно тут а можно и в разделе ошибок на гитхабе.

Модуль работает на версиях 5.2 и выше. В остальном я думаю никаких ограничений нет, но я не ручаюсь т.к. не тестил на других сборках.

Что может модуль:
1) создавать новые настройки в базе system_settings с префиксом global_
2) редактировать эти настройки из модуля.
3) рассовывать настройки по разным группам.
4) присваивать настройкам разные типы редактирования (чекбокс, изображение, файл и т.д.). Селекты как обычно поддерживают стандартный вариант заполнения значений (1||2||3 и 1==имя1||2==имя2). В дальнейшем наполнится возможными типами редактирования.
5) естественно возможность удалять настройки с префиксом global_
6) Есть возможность при помощи плагина подменять [* и [+ на значение настройки. (пример есть настройка global_sitePhone, при выставлении параметров подмены будет доступен в качестве [*sitePhone*] и [+sitePhone+]. Если значение является массивом то доступ к нему как к массиву можно получить через [(sitePhone)]). Удобно если нужно перевести старый проект на этот модуль а вычищать и менять все вызовы тв на вызовы настройки нет желания, как мне :)

Планируется добавить поддержку мультитв и множественного изображения.

Что могут плагины
gPHParser:
1) Парсит глобальные настройки с префиксом global_ отчищает их от шелухи и кладет на место уже без префикса.
2) Раскладывает настройки в зависимости от выбранных типов доступности (плейсхолдер — gPH, ТВ — gTV, настройка — по умолчанию всегда)
3) Если включен frontEditor в настройках то оборачивает все текстовые настройки в div для указания что этот текст можно править.

Плагин вызывается по событию onParseDocument, подмена обрабатывается только один раз, при первом проходе парсера. В последующие проходы парсера они доступны уже во всех положенных местах.

gPHFrontEditor:
1) Добавляет скрипты на страницу для активации фронтэдитора.
2) Активирует доступные к редактированию изображения ссылки видео.
3) Сохраняет новые данные после редактирования.
4) Скидывает кеш страниц т.к. редактор виден обычным пользователям. (нужно сделать сброс кеша исключительно данной страницы ибо выходит немного накладно)

Плагин вызывается по событию onWebPageInit, сброс кеша происходит по событию onWebPageComplete.

Немного скриншотов.




Ссылка на видео

Кому интересно можете покопаться на гите)

UPD 10/03

Создавать настройку с пустым именем нельзя.
Группа назначается автоматом если группа не была выбрана и новая не была указана.
Имена настроек транслитируются на английскую раскладку.
Добавлен ричтекст. Ричтекст рендерится на основании дефолтного. Если у вас в настройках выставлено отсутствие ричтекста то будет выводится большая текстареа.
Поправлены небольшие баги. Проведены небольшие доработки кода.
Добавлен префикс в плагин. Теперь можно не перезаписывать существующие плейсхолдеры и тв. По дефолту префикс «g.»

UPD 10/03

Поправил багу с пересохранением значения ричтекста.
Добавил поддержку разделения настроек по табам исходя из группы.

UPD 15/03

Добавлена запись глобальной настройки вида g_[%option_name%] для доступа к настройке без плагина.
Добавлена настройка позиции для группирования настроек.
Поправлены баги с сохранением текста содержащего переносы строк в базу. (Будет еще допиливаться для сохранения переносов т.к. сейчас они просто вытираются)
Добавлен пользовательский шаблон для вывода настройки, в пользовательском шаблоне не выводится имя настройки а только описание.

UPD 27/03

Сделал простенький фронтенд редактор для настроек. Редактор может править тексты (рич, инпуты, текстареа) работать с тегом видео, изображения, ссылки. Т.е. можно менять изображения текста видео ссылки на файлы и видео прям на живую с фронта.
Немного поправил код плагинов и модуля.
Добавил обработку переносов строки для текстареа. Теперь на фронте они как br а в самой текстареа как \r\n.

UPD 30/03

Полностью убран конфиг модуля. Вместо него теперь полноценная страница настройки в модуле.
Поправлены мелкие недочеты с логикой и всякие мелочи типа общей группы.
Добавлен евент OnWebPageComplete в котором скидывается кеш. Сделано для того чтобы веб пользователь не видел скешированную после плагина страницу (потом переделаю во что-то более путное).
Добавлены конфиги в установочные файлы. Теперь модуль и плагины доступны в Extras в качестве одного пакета.

mm_ddMultipleFields: Новые возможности, вошедшие в modx v1.1

  1. Дополнительные элементы управления:
    Дополнительные элементы управления
    • Очистка всех значений
    • Сброс значений на исходные
    • Пакетное заполнение (для изображений)
    • Копирование строки
    • Копирование строки
  2. Возможность пакетного заполнения изображениями
    Возможность пакетного заполнения изображениями
  3. Дополнительные опции (параметр $options в формате массива или строки JSON)
    • sortable: включение/отключение возможности сортировки (по умолчанию включен)
    • showIndex: отображение номера строки ((по умолчанию включен))
    • btnToggleRaw: кнопка RAW — включения/выключения оригинального поля, что дает возможность скопировать и вставить все значение.
  4. Возможность копирования/экспорта (простейший вариант, пока) посредством отображения кнопки RAW
    Возможность копирования/экспорта
    После вставки значения, необходимо нажать кнопку ⎌ — сброс для применения и дальнейшего редактирования
  5. Подсказки в заголовках столбцов.
    Подсказки в заголовках
    Подсказки добавляются после двух двоеточий в параметре $columnsTitle
    mm_ddMultipleFields('gallery', '', '', 'image,text,text', 'Изображение,Название::Название будет использовано в теге alt,Описание');
    

  6. Для типа поля select, возможность указать значение по умолчанию.
    Пример Yes — по умолчанию:
    '[['','No selected'],['0','No'],['1','Yes',1]]'


UPD (26.05.16).
Описанное выше разработано не студией DivanDesign и на момент написания не принято в репозитарий студии (см PR #2).

Разработка ведется и доступна в форках:
github.com/MrSwed/MODXEvo.plugin.ManagerManager.mm_ddMultipleFields — только mm_ddMultipleFields (Актуальная версия)
github.com/MrSwed/MODXEvo.plugin.ManagerManager — весь MM (также отличается от DivanDisign )

в основном репозитарии Modx — только то, что вошло на момент релиза
в ветке develop основного репозитария — исправления и дополнения.

Баргепорт репозитария: github.com/MrSwed/MODXEvo.plugin.ManagerManager.mm_ddMultipleFields/issues Сюда же принимаются Pull Requests

Документация разработки
github.com/MrSwed/MODXEvo.plugin.ManagerManager.mm_ddMultipleFields/wiki

Multi Choice - Переработка Choise TV для множества чекбоксов

Иногда нужно типовые параметры добавлять чекбоксами и не всегда знаешь сколько их будет и какие они. Давно не доходили руки, а вот теперь сделал переработку Диминого ChoiseTV под чекбоксы.

Собственно вот



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

moveMODX - перенос сайта MODX Evo с хостинга на хостинг

Так как собираю довольно много сайтов и всегда приходиться переносить с тестового хостинга на боевой. Решил наконец-то облегчить эту задачку. Создал скрипт автоматического переноса:)

Указываем ему данные: FTP + MySql и все остальное он делает сам:


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

[EVO] Новый шаблон для MODx - MODxPress

Всем привет. Решил выйти из ридонли.
Не для кого не секрет что админка Evo устарела еще 10 лет назад. По сему нужно что-то делать для комфортной работы с админкой на планшетах и мобилках. За день на коленке был собран новый шаблон для админки который по своему принципу очень похож на админку WordPress (да и по дизайну почти слизан с нее). Просьба не кидаться тапками, мол фу, WordPress… Админка у них явно удобней и выглядит лучше чем у нашего любимого Evo.





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

[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

EvoModal - всплывающее окна и горячие клавиши ))



Думаю вместо слов проще глянуть видео:
www.youtube.com/watch?v=8SxcnILzQa0

Пожелания по доработкам сюда:
github.com/extras-evolution/evomodal/

Скачать можно там же или установить через Репозиторий Extras.

[EVO] Новая версия модуля TSVshop 5.4

Рад объявить о выпуске новой версии TSVshop 5.4. Узнать подробнее и скачать можно по ссылке https://github.com/Serg28/tsvshop/releases/tag/v5.4

Новое:

  1. В TSVshop появилась возможность добавлять в корзину к товару (а также в письма клиенту и менежеру) произволные TV-параметры товара. Для этого нужно вставить в вызов TSVshop параметр &tvs с перечислением имен нужных TV-параметров, а выводить их в чанках с помощью плейсхолдера [+tv.имяtv+]. Например, чтобы вывести у товара TV с именем color, достатойно добавить в всех вызовах TSVshop паарметр &tvs=`color` и в чанке вставить [+tv.color+].
  2. Добавлен сниппет TSVshopLastViews, позволяющий отображать историю просмотренных товаров
  3. В сниппете TSVshop теперь добавлен новый режим: &act=`printorder`, который отвечает за печать накладной/товарного чека для пользователя (если это предусмотрено менеджером). Все что нужно – создать отдельную страницу в дереве документов и вставить в нее вызов TSVshop с параметром &act=`printorder`.
  4. В модуле в списке заказов и при просмотре конкретного заказа появилась кнопка Распечатать накладную (печать товарного чека/накладной), шаблон которой по умолчанию берется из файла assets/snippets/tsvshop/addons/sales/tpl/Shop_PrintOrder.tpl. Ту же самую функцию исполняет чанк Shop_PrintOrder, который идет в комплекте с модулем. Все описания плейсхолеров читайте в документации или в подсказках в режиме редактирования чанка Shop_PrintOrder.
  5. Теперь в поле E-mail отправителя (менеджера) можно задавать несколько адресов через запятую.
  6. Теперь почтовые настройки модуля TSVshop берутся из настроек МОДх, только некоторые настройки (почта менеджера, тема писем, имя отправителя) остались в настройках модуля.
  7. В сниппете TSVoffice
    1. Введена пагинация;
    2. Добавлена поддержка работы с плагином продажи файлов (если установлен плагин TSVshopDownloads, в личном кабинете автоматически появляются ссылки на купленные файлы, если заказ оплачен);

    3. Можно удалять свои неоплаченные заказы

  8. Исправления

    1. Решена проблема с отправкой писем – теперь они отправляются корректно.
    2. Исправлена ошибка, когда не срабатывали системные события при работе корзины в режиме AJAX.
    3. Переименованы названия некоторых полей в настройках почты: теперь поле E-mail отправителя: называется E-mail отправителя (менеджера).
    4. Добавлены/переименованы некоторые плейсхолдеры – смотрите документацию или подсказки в режиме редактирования.