Новые типы полей в конструкторе форм для версии (1.10.X)

+74
5.1K
Добрый день! Первым делом хотелось бы выразить благодарность всем, кто помог достичь отметки создания блога.

Возвращаясь к теме на форуме — Новые типы полей в конструктор форм, 1.10.1., где были обозначены вопросы о создании в компоненте Конструктор форм:
— возможности множественного выбор на чекбоксах;
— ввести зависимые поля;
— возможность определять полю или полю, с ссылкой, собственный CSS класс.
— загрузка файлов — загрузка файлов уже решенный вопрос не мной и он был исключен из ТЗ

Пользователь Anton Bogoradov, выступил заказчиком и материальным вдохновителем, данных вопросов, плюс разрешил выложить данную разработку в публичный доступ.

Все поставленные задачи были реализованы, а именно:

— при выборе Тип поляГруппа опций — внизу появляется дополнительное поле возможного значения — Множественный выбор? Да — Нет — при выборе — Да — поле при создании переходит в режим чекбоксов, осуществляющих множественный выбор (при редактировании поля возможен возврат к радиокнопкам);
Иллюстрация

— при выборе Тип поляВыпадающий список или Видимый список — также внизу, появляется возможность сделать его зависимым — Зависимый список? ДаНет;
Иллюстрация

При выборе — Да — появляются дополнительные поля — Родительский список, которые представляет собой вывод и показ уже созданных списков в форме, а также ниже — выбор Элемент родительского списка, из той формы которая будет назначена Родительской;
Иллюстрация

— под полем описание, добавлено поле CSS класс, т.е. для любого поля можно подключить свой класс, если данное поле является ссылкой, то класс передается ей;
Иллюстрация

— плюс старался реализовать по возможности затрагивая меньше файлов системы;

— поле — Конструктор форм — дополнительное скрытое поле — Форма отправлена со страницы. также есть в этом архиве.

внимание! Предварительно сделайте копии заменяемых или смерживаемых файлов!

Установка — Скачать архив — распаковать в корень с заменой (или смержив файлы, при наличии собственных изменений в онных).
+8
AtlantisWeb AtlantisWeb 11 лет назад #
- загрузка файлов - загрузка файлов уже решенный вопрос не мной и он был исключен из ТЗ

Выскажу свое мнение которое возможно поддержат многие, что было бы неплохо внести "загрузку файлов" в данную модификацию, что бы было все в одном.

За хак спасибо!
0
Anton Bogoradov Anton Bogoradov 11 лет назад #
Загрузка файлов реализована MaxiSoft, переходить ему дорогу смысла нет, тем более у него реализована отличная модификация доски.
+5
picaboo picaboo 11 лет назад #
при чем тут переход дороги, у него свое, у вас свое. может ваше решение будет лучше
+2
Anton Bogoradov Anton Bogoradov 11 лет назад #
Ну вот представьте ваша фирма вяжет веники и продаёт их по 50 рублей, а соседняя фирма для своей раскрутки решила отдавать веники бесплатно согласитесь обидно и врагов можно нажить, тут ведь дело не в конкуренции.
+2
picaboo picaboo 11 лет назад #
после того как автоваз продавал жигули 30 лет, действительно свинство со стороны мерседеса прийти в нашу страну и продавать мерседесы. smile

о какой конкуренции тут может идти речь, максисофт монополизировал и запатентовал загрузчик?
0
Anton Bogoradov Anton Bogoradov 11 лет назад #
Сравнили мёд с горчицой. В конкретно данном случае мы говорим об одной и той же разработке на базе одного и того же кода. Я лично для себя отчасти решения уже купил или собираюсь купить (то что есть) то чего нет я заказываю или делаю. Допустим модернизацию доски объявлений от Максима я координально переделывал под себя и загрузчик фото и слайдер и его реализацию доп полей.
Конструктор форм я заказывал переделку так как ещё не до конца разобрался в коде и структуре инстанта и предложил выложить его в клуб ибо не жалко. Так же было предложено выложить в клуб мою реализацию яндекс карт с указанием объекта для доски объявлений но MadMax пока хочет подождать с этим или просто нет времени
0
Anton Bogoradov Anton Bogoradov 11 лет назад #
Сос стороны мерседеса это не свинство. У каждой из марок есть свои плюсы и минусы и соответствующие им цены. Мерседес ведь свои машины не дарит в конце концов
0
CROSS ツ CROSS ツ 11 лет назад #
врагов можно нажить
но и приобрести сторонников
+3
AtlantisWeb AtlantisWeb 11 лет назад #
Ни в коем случае не хотел вас ни чем обидеть и не настаиваю, просто так было бы правильней.
Несколько довадов:
1) У максисофта данный хак только под версии 1.8-1.9(под 1.10 рассылка не приходила, значит нету)
2) Компаненты "Рецепты" тоже делало несколько человек(в том числе и я начал делать), но это не значит что идет война разработчиков и жесткий игнор и ддос сайтов ))
3) Более удобно когда все в одном.

тем более у него реализована отличная модификация доски.
Ни кто и не спорит что отличная и кому надо тот обязательно купит, а тут не доска а расширение функционала "конструктора форм" и ваше видение кода "загрузки кода" врятли кто посчитает плагиатом.
Олег Васильевич я Олег Васильевич я 11 лет назад #
Комментарий удален
+4
VopisUVD VopisUVD 11 лет назад #
куча изменений это радует! Плюс полюбому
Не радует что это хак...
Может брать целиком компонент и переделывать его чтоб можно было вместо старого поставить. А еще лучше чтоб раз отдается бесплатно и реализация достойная, то было бы включено в релиз!
+1
VopisUVD VopisUVD 11 лет назад #
Ну и для полного счастья еще бы самой форме присваивать id или class, либо обернуть всю форму в div
0
Anton Bogoradov Anton Bogoradov 11 лет назад #
А это уже идея smile тоже пока смущает вывод результатов в столбик хотелось бы обыграть.
0
VopisUVD VopisUVD 11 лет назад #
есть одна мыслишка...
Нужно добавить в конструктор форм еще 1 закладку "Стили" и в ней сделать автоматический список, в веденных имен классов, а под каждым именем вставить поле для ввода свойств css и чтоб эти свойства выводились перед формами либо формировался файл стилей и добавлялась строчка его подгрузки.

Это нам даст практически управление каждой формой в реальном времени и так как нам нужно!

Так же думаю что в вкладке можно добавить какие то стандартные шаблоны, тогда не будет сложностей у тех кто не изучил CSS на достаточном уровне.
0
Madmax Madmax 11 лет назад #
это уже точно на вкус и цвет ...
+3
AndroS AndroS 11 лет назад #
Суперхак, которого ждали на протяжении всего существования инстанта! Да еще и бесплатно! Круто, жирный плюс!
0
Скела Скела 11 лет назад #
плюс... но важная мысль остается за дверью.
Доп. поля нужны в первую очередь для создания правильного поиска или сортировки, что до сих пор в Instant не присутствует.. даже основной поиск, который работает по тегам не затрагивает данные из форм.
+7
googlebot googlebot 11 лет назад #
Немного доработал хак - добавил поле типа "Дата"
""

используется устаревший системный datepicker, тот же что в статьях дату публикации выставляет, и не сообразил как сделать проверку имеется ли в форме тип Дата, в итоге js и css datepicker-a грузится в любой форме, но работает.
anikw, извините если не к месту.
+6
googlebot googlebot 11 лет назад #
P.S. файлы тут.
0
lezginka.ru lezginka.ru 11 лет назад #
googlebot и anikw спасибо
0
Петр Петр 11 лет назад #
Блин, почему то тип поля появился, но не календарик не вылазит в предворительном вопросе как на скрине. В чем может быть проблема? версия 1.10.1
0
Петр Петр 11 лет назад #
с этим разобрался, не залил файл form.php в основной шаблон
Возник еще вопрос, как создать два поля дата? один вылазит календарь, у второго нет
0
VopisUVD VopisUVD 11 лет назад #
Вот все супер пупер, НО эта тема http://instantcms.ru/blogs/miniblog/filtruem-vse.html не дает мне покоя!!! Перелопатил все указанные там файлы, но тщетно структура то, поменяна... Помогите люди добрые в php мы не местные.
0
Fisco Fisco 11 лет назад #
Может я накосячил, но проблема в следующем:
Форма: Анкета пользователя. Сделал поле, Тип поля - Группа опций, Множественный выбор - Да. Когда открываешь анкету пользователя на сайте, это поле не отображается, видно только при редактировании своей анкеты пользователем.
Что я сделал не так?
0
Madmax Madmax 11 лет назад #
Только что, на чистой установке InstantCMS, установил дополнение - создал поле - Группа опций - множественный выбор - проверил, все работает как надо - выбрал "галочки" - сохранил, в профиле видны.
Возможно вам надо темплаты в своем шаблоне заменить (смержить) из архива.
0
Abreim Abreim 11 лет назад #
Спасибо!!! Нужное дело сделали!!! +
Возможно ли сделать, чтобы пользователь выбирал, кто может видеть то или иное поле? К примеру, в форме будет адрес и телефон. Нужно, чтобы их видел только админ и сам пользователь.
0
Madmax Madmax 11 лет назад #
И зачем такое скрытое поле?
Пользователь забывает часто свой телефон?
А Администратору он зачем?
0
Abreim Abreim 11 лет назад #
Пользователи будут участвовать в конкурсе и в анкете необходимо будет заполнить свои контакты.
0
Madmax Madmax 11 лет назад #
Так потом заполненное поле будет отправлено на e-mail - я так понимаю.
0
Abreim Abreim 11 лет назад #
Нет. Останется в профиле.
+2
Anton Bogoradov Anton Bogoradov 11 лет назад #
Тогда проще сделать поля с жёсткой привязкой к рофилю например клонировать поле icq и там уже пользователь сам решит кому показывать, а админ и так увидит.
0
Abreim Abreim 11 лет назад #
Спасибо! Попробую!
0
lokanaft lokanaft 11 лет назад #
"Зависимый список" при редактировании профиля как то обрабатывается яваскриптом, дабы скрыть его? К тому же сохраняются все значения, вне зависимости от выбранного родителя.
0
lokanaft lokanaft 11 лет назад #

Решаем проблему очистки зависимых значений.

В form.class.php
Меняем:
Код PHP:
  1. // Заполняем массив ошибок
  2. $output['errors'][$field['id']] = $error;
  3. }
На:
Код PHP:
  1. // Заполняем массив ошибок
  2. $output['errors'][$field['id']] = $error;
  3. $form_fields[$field['id']] = $field;
  4. }
  5. foreach($output['values'] as $key => $value){
  6. if($form_fields[$key]['config']['list_is_depends']){
  7. if($output['values'][$form_fields[$key]['config']['list_parent']] != $form_fields[$key]['config']['list_parent_item']){
  8. unset($output['values'][$key]);
  9. unset($output['errors'][$key]);
  10. //$output['values'][$key] = '';
  11. //$output['errors'][$key] = '';
  12. }
  13. }
  14. }
+1
Madmax Madmax 11 лет назад #
Автор в отъезде, в Питере.
-2
Константин Г. Константин Г. 11 лет назад #
Как сделать чтобы поле видел тока админили человек с определенным ником? например если там номер телефона.
0
Noname Noname 11 лет назад #
еще не успел опробовать, но уже в предвкушении!++
по результатам отпишусь
0
Петр Петр 11 лет назад #
очень хочется увидеть функционал:
настраиваемые поля для определенной группы пользователей, т.е. чтобы некоторым группам пользователей не показывалось поле
+1
Роман Роман 11 лет назад #
Добавить бы этот хак в релиз
0
TEKAMA (техотдел) TEKAMA (техотдел) 11 лет назад #
Добрый день. При установки на 1.10.3 выдает ошибку Fatal error: Using $this when not in object context in D:\OpenServer\...\core\classes\db.class.php on line 329 . Не могу никак исправить ошибку. В чем может быть причина?
0
Malanas Malanas 10 лет назад #
Друзья, есть такие, кто решил проблему Fatal error: Using $this when not in object context in и реализовал множественный выбор в 1.10.3?
0
Роман Роман 10 лет назад #
Очень странно почему такое нужное дополнение не сделать в офф релизе... Неужели им никто не пользуется?
0
Петр Петр 11 лет назад #
Подскажите знающие, как сделать чтобы поля форм были в две колонки?
0
Def Def 10 лет назад #
друзья, для 1.10.3 это решение работает?
0
Александр Александр 7 лет назад #
А для 1.10.7 может кто смерживал и доделывал? Штука нужная, где бы взять
0
abasia abasia 5 лет назад #
Адаптация хака под ICMS 1.10.7 здесь, благодарим ideasdigger за реализацию. Если своих правок в используемых хаком системных файлах не было, то можно залить поверх системных, если что то меняли, то смержить.
0
abasia abasia 5 лет назад #
Подправил хак
Спойлер
0
Андрей Андрей 5 лет назад #
Саша, пока рано, там около 10 переменных надо ввести в лэнги.
сейчас закончу, пришлю тебе архив
0
abasia abasia 5 лет назад #
Понял, поспешил(((
0
Андрей Андрей 5 лет назад #
в файл languages\ru\admin\components\forms.php
$_LANG['AD_TYPE_HIDDEN_URL_PAGE'] = 'Скрытый URL текущей страницы';
$_LANG['AD_TYPE_DATENOW'] = 'Дата';
$_LANG['AD_MULT_CHOICE'] = 'Множественный выбор';
$_LANG['AD_DEP_LIST'] = 'Зависимый список';
$_LANG['AD_PARENT_LIST'] = 'Родительский список';
$_LANG['AD_PARENT_LIST_ITEM'] = 'Элемент родительского списка';
$_LANG['AD_INVISIBLE_FIELD'] = 'Это поле будет невидимо';
$_LANG['AD_ALLGROUPVIEW'] = 'Показывать всем группам';

в файл languages\ru\lang.php
$_LANG['CSSCLASS'] = 'CSS класс';

это надо добавить

и изменить файл admin\components\forms\backend.php, ссылка в следующем комменте
0
Андрей Андрей 5 лет назад #
0
abasia abasia 5 лет назад #
Что-то напутал я, прежний архив адаптированного хака, тут менять пока ничего не нужно.
+1
abasia abasia 5 лет назад #
Архив исправленного хака (поле "Дата" барахлило)+добавлено поле "Конфиденциальность", для стандартной ICMS 1.10.7, залить поверх или смержить.
+2
abasia abasia 5 лет назад #
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.