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

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

Macik
#35753 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

Dit bericht is bewerkt door Macik (2012-10-31 14:43, 12 jaren ago)