Пример реализации
Macik |
|
---|---|
Не первый раз при разработке расширений сталкиваюсь с необходимостью использовать в настройках плагинов поле с мультивыбором (сейчас доступен только Select с выбором одного значения). Посмотрел как устроен парсинг параметров при установке и настройке плагина - решил, что малой кровью дописать реализацию не выйдет. Надо править насколько файлов (extensions.php, admin.config.php, admin.extensions.php). Пока, как компромис, хочу реализовать такое в виде небольшого расширения (т.е. одного файла), который надо будет добавдять к собственному плагину, чтобы включить «мультивыбор» для указанного параметра. Вот только пока не рашил как выглядеть будет, как линейка чекбоксов или как список с мультивыбором и прокруткой. Может кто-то уже решал подобную задачу?
https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F |
|
Dit bericht is bewerkt door Macik (2012-10-31 14:44, 12 jaren ago) |
esclkm |
|
---|---|
решал - для плагина новостей) да и множественный выбор будет имет ряд проблем))) как и файловое поле в конфиге littledev.ru - мой маленький зарождающийся блог о котонти.
снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты |
Sergey |
|
---|---|
Уже выкладывал описание http://www.cotonti.com/datas/users/regularstructure-v4_205.pdf www.cotonti.mobi
|
Macik |
|
---|---|
#35620 Sergey: Масштабно (объем работ ого-го!). Но немного не о том, что я имел в виду.
Вот набросал - в виде отдельного плагина (extdev_multiselect). Цель С минимальными затратами дать возможность разработчику плагинов получить «Multiselect» в меню настроек своего плагина:
Как это работает Все что надо, чтобы получить «multiselect» параметр в своем плагине это добавить его как обычный текстовый параметр в Setup файл. Чтобы он опознался системой как «multiselect» параметр надо дать ему специальное имя вида: «varname_type», где `varname` это любое имя как у обычного параметра, а `type` это тип «multiselect» элемента.
Пример: Доступны 3 типа элементов UI (см.иллюстрацию): `simplelist`, `multiselect`, `checkboxlist`.
Как это использовать использовать можно двумя способами: 1. [сложный, но более гибкий] скопировать часть кода из файлов extdev_multiselect.rc.php и extdev_multiselect.admin.conf.php в свой плагин, исправив пару переменных . 2. [совсем простой] просто подключить параллельно со своим плагином, установив в настройках режим `global`. (естественно не забыв добавить нужные параметры в свой плагин или изменив старые).
Попробовать: Код на ГитХабе: https://github.com/macik/cot-extdev_multiselect
https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F |
esclkm |
|
---|---|
я за ввдение чеклистбокса и мультиселекта в коробку
littledev.ru - мой маленький зарождающийся блог о котонти.
снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты |
Alex300 |
|
---|---|
Я тоже за! С небольшим дополнением: стандартный мультиселект неудобен тем, что при большом количестве вариантов можно запутаться в том что уже выбрано, а что нет, т.к. расстояние между выбранными пунктами может быть большим. И стоит случайно кликнуть на какой нибудь пункт - выбор пропал - начинай сначала. Имело бы смысл внедрить что то вроде этого: http://quasipartikel.at/multiselect_original/ (в реализации возможны варианты, и не обязательно как в примере использовать jQueryUI) Добавлено 1 минуты спустя: Да, и за поддержку калбеков для возможности заполнения их возможными значениями )))) Есть миры, не здесь, там, где небеса горят, и моря засыпают, и реки дремлют; люди сделаны из дыма, а города – из песен. Где-то опасность, где-то несправедливость, даже где-то остыл чай. Идем Эйс, у нас много работы!...
...Sorry for my english... Бесплатные расширения для Cotonti: https://lily-software.com/free-scripts/ |
Moool13 |
|
---|---|
Плюсую, это намного удобнее. |
esclkm |
|
---|---|
категорически против - скриптовых вариантов - только стандартные элементы littledev.ru - мой маленький зарождающийся блог о котонти.
снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты |
Macik |
|
---|---|
По «юзабилити» вот какие мысли: 1. Если говорить о jQueryUI multiselect, то обратите внимание на более свежую версию: http://quasipartikel.at/multiselect/index.html (которая работает с UI версией 1.8.x)
2. Есть еще пара плагинов вариантов: преимущество последнего (хоть и выглядит он убого) в том, что он зависит только от jQuery и не надо тащить за собой jQueryUI. (это я к тому если тащить ткие штуки «в коробку»). По расширению функционала
Но! Если говорить о том, что стоит добавлять чеклистбокс и мультиселект в коробку, то на мой взгляд, стоит это сделать только в виде обычных элементов. И никакого навешивания на них всяких jQuery и прочих UI плагинов! Если уж хочется сделать красиво из коробки, то (imho) надо, как и писал выше, в «ядро» включить элементы с базовой функциональностью, и сделать плагин-расшитрение для UI, типа моего, который будет на этот элемент навышивать UI. Тогда, кому надо смогут безболезненно вырезать это UI не потеряв функционала (да и без jQuery работать сможет).
(в общем ESClkm меня опередил :) )
https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F |
esclkm |
|
---|---|
а как идет вывод значиений??? littledev.ru - мой маленький зарождающийся блог о котонти.
снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты |
Macik |
|
---|---|
Это вопрос ко мне? Не совсем понимаю о каких значениях речь. https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F |
esclkm |
|
---|---|
как идет протом вывод данной мульти имнпута : $cfg['configname'] =? littledev.ru - мой маленький зарождающийся блог о котонти.
снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты |
Macik |
|
---|---|
[если я правильно понял вопрос, то…] Внутри системы все это храниться как обычная тектовая переменная (текстовое поле ввода) из Setup файла. varname=01:text:default_list:selected_items:Description
default_list - это список всех доступных значений (разделенный запятыми) Таким образом (в моей реализации) $cfg['configname'] содержит список (выбранных) значений разделенный запятыми. ----- Изначально, я вообще хотел сделать этот механизм с минимальным внутренним кодом. Т.е. в идеале была мысль сделать все это просто навесив jQuery код (без хуков вообще). Но это не получилось, т.к. система при выводе конфиг-таблицы нигде не выводит дефолтные значения переменных. Поэтому пришлось «лезть» в хук admin.config.edit.loop. Потом еще пришлось admin.config.edit.first запользовать для фильтрации дублей из «simplelist». За то «simple list» работает и без jQuery. p.s. Сейчас понимаю, что можно было сделать проще: в admin.config.edit.loop - сделать только вывод скрытого поля со списком дефолтных значений переменной ($row['config_variants']), а далее дело техники и jQuery. https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F |
|
Dit bericht is bewerkt door Macik (2012-09-30 20:11, 12 jaren ago) |