Forums / National / Russian / Идеи / Произвольные элементы в настройках параметров плагинов (добавлено в #1058)

https://github.com/Cotonti/Cotonti/pull/1058

Macik
#1 2012-10-09 10:30

Тут в соседней теме поговорили о необходимости расширения набора типов полей в настройках плагинов.

Еще одна идея родилась: может не заморачиваться внесением в движок дополнительных элементов типа «multiselect», а вместо этого прописать простой механизм позволяющий плагинописателям самим определять, какой элемент выводить и как обрабатывать пришедшие от него параметры?

Т.е нечто вроде колбеков: var4=14:callback:cot_get_editors():markitup:Simple callback

Только с той разницей, что будет вызываться 2 функции - одна для формирования html кода элемента для отрисовки пользовательского элемента, а вторая будет вызываться для приема данных перед сохранением в базу.

На примере:

В plug.setup.php вводим переменную типа «user_def»:  plug_var=01:user_def:my_new_ui():def_value:Simple user defined UI parameter

В admin.config.php добавляем код для обработки типа «user_def» (по аналогии с callback), который вызовет функцию «my_new_ui_create()» для получения html кода нашего пользовательского элемента. 

А при записи в БД вместо $cfg_value = trim(cot_import($row['config_name'], 'P', 'NOC')); вызывать пользовательскую функцию «my_new_ui_import()» в которой автор плагина напишет необходимый код для обработки и фильтрации параметров. Хранить как и остальные значения просто текстом.

-----

Итого плюсы такого решения: 

  • минимальные доработки  admin.config.php (добавить 5-10 строк ) и configuration.php (добавить ~5 строк)
  • всю головную боль по реализации конкретного нового элемента берет на себя плагинописатель (для ленивых можно выложить примеры кода)
  • нет необходимости дальнейшего изменения кода, когда кто-то «захотел новый тип элементов ввода».

 

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
This post was edited by Macik (2012-10-31 14:43, 11 years ago)
esclkm
#2 2012-10-09 12:46

чтото аццкое вы сочиняете.

Мне интересно что будет на выходе)

littledev.ru - мой маленький зарождающийся блог о котонти.
снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты
Macik
#3 2012-10-09 14:31

Простой инструмент, который позволит плагинописателям (при необходимости) самим сформировать элементы настройки расширений. 

Добавлено 2 недели спустя:

Вот, дошли руки. Смотрим пул реквест: https://github.com/Cotonti/Cotonti/pull/1058

В качестве иллюстрации возможностей сделал простое расширение: https://github.com/macik/cot-extdev_custom

Выглядит так:

- в setup файле размещаем описание переменной с типом custom и именем пользовательской функции (в нашем примере color_select_input() ) для отрисовки элемента: 

color_select=10:custom:color_select_input():#aabbcc:Simple color setup

в функцию передаются имя переменой, ее значение, и следом прочие параметры указанные в setup файле. 

При записи в БД вызывается cot_import со значением фильтра равным имени переменной.

В общем кому интересно смотрите пример плагина там все просто, всего 2 файла (2 функции).

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
This post was edited by Macik (2012-10-23 20:19, 11 years ago)