Новости Joomla

SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla

SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla

👩‍💻 SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla.Компонент - менеджер цифровых проектов для Joomla! CMS. Компонент обеспечивает создание каталога цифровых проектов и предоставляет возможность скачивания, в том числе с использованием лицензионных ключей.👩‍💻 v.2.5.0. Что нового?Схемы структур данных для серверов обновлений. Теперь с SW JProjects вы может создавать сервер обновлений не только для расширений Joomla, но и свои собственные. Например, вам нужно, чтобы структура данных сервера обновлений была другая и формат должен быть, например, не XML, а JSON. Формирование структуры данных для сервера обновлений расширений Joomla вынесено в отдельный плагин. Вы можете создать свой собственный плагин и реализовать в нём нужную вам структуру данных, добавив или наоборот исключив отображаемые данные. Сервер обновлений в компоненте по-прежнему отображает информацию о списке проектов и их версиях, о конкретном проекте и его changelog.Можно выбрать схему данных сервера обновлений глобально для всего компонента, выбрать другую схему данных для категории проектов, а так же выбрать схему в каждом проекте.

Разработчикам в качестве образца можно посмотреть плагин схемы данных для Joomla в составе компонента или же плагин-образец JSON-схемы на GitHub.
Группа плагинов swjprojects. Для нужд компонента создана группа плагинов swjprojects. В частности, в этой группе находится плагин структуры данных Joomla расширений для сервера обновлений.Изменение языковых констант. Изменены некоторые языковые константы в панели администратора. Если вы делали переопределение констант - переопределите их снова.👩‍💻 Joomla 6. Внесены изменения для корректной установки и работы компонента на Joomla 6. Компонент успешно протестирован на Joomla 6-beta2.Минимальная версия Joomla - 5. Подняты минимальные системные требования: Joomla 5.0.0 и PHP 8.1.
- Страница расширения👉 Плагин-образец кастомной JSON-схемы данных для сервера обновлений на GitHub.- GitHub расширения- Документация на GitHub- Joomla Extensions Directory#joomla #расширения

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

👩‍💻 Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод triggerEvent(), с помощью которого раньше вызывались события для плагинов. Теперь чтобы в своём коде вызвать событие для плагина и получить от него результаты нужно:- создать объект класса события- передать в него параметры

use Joomla\CMS\Event\AbstractEvent;use Joomla\CMS\Factory;use Joomla\CMS\Plugin\PluginHelper;// Грузим плагины нужных группPluginHelper::importPlugin('system');// Создаём объект события$event = AbstractEvent::create('onAfterInitUniverse', [    'subject' => $this,    'data'    => $data, // какие-то данные    'article' => $article, // ещё материал вдовесок    'product' => $product, // и товаров подвезли]);// Триггерим событиеFactory::getApplication()->getDispatcher()->dispatch(    $event->getName(), // Тут можно строку передать 'onAfterInitUniverse'    $event);// Получаем результаты// В случае с AbstractEvent это может быть не 'result',// а что-то ещё - куда сами отдадите данные.// 2-й аргумент - значение по умолчанию, // если не получены результаты$results = $event->getArgument('result', []);
Плюсы такого подхода - вам не нужно запоминать порядок аргументов и проверять их наличие. Если вы написали свой класс события, то в плагине можно получать аргументы с помощью методов $event->getArticle(), $event->getData(), $event->getProduct() и подобными - реализуете сами под свои нужды. Если такой класс события написали, то создаёте экземпляр своего класса события и укажите его явно в аргументе eventClass
use Joomla\Component\MyComponent\Administrator\Event\MyCoolEvent;$event = MyCoolEvent::create('onAfterInitUniverse', [    'subject'    => $this,    'eventClass' => MyCoolEvent::class, // ваш класс события    'data'       => $data, // какие-то данные    'article'    => $article, // ещё материал вдовесок    'product'    => $product, // и товаров подвезли]);
Ожидаемо, что класс вашего события будет расширять AbsractEvent или другие классы событий Joomla.🙁 Есть неприятный нюанс - нельзя просто так вызывать событие и ничего не передать в аргументы. Аргумент subject обязательный. Но если вы всё-таки не хотите туда ничего передавать - передайте туда пустой stdClass или объект Joomla\registry\Registry.
@joomlafeed#joomla #php #webdev

0 Пользователей и 1 Гость просматривают эту тему.
  • 14 Ответов
  • 1227 Просмотров
*

asuran

  • Новичок
  • 5
  • 0 / 0
Здравствуйте!

Стоит задача сделать форму для регистрации большого количество людей. По моей задумке выглядеть это должно примерно так https://jsfiddle.net/asuran/kec8ag7d/embedded/result/
Для каждого человека несколько полей, есть кнопка для добавления новой строки. Регистрируется сразу несколько групп и все это потом отправляется. Данные из разных частей формы (делегации, участники и т.п.) могут попадать в разные таблицы БД. Также должна быть возможность потом открыть эту форму для редактирования.

Я сейчас умею создавать только простые формы - 1 контроллер, 1 модель, 1 таблица, 1 форма. Примерно понимаю как отправлять данные больше чем в одну таблицу из одной модели. Здесь как я понимаю нужно или как-то хитро составлять файл формы или выводить на страницу сразу несколько форм.

Подскажите, пожалуйста, как лучше запрогать требуемую форму, максимально используя api Joomla. Какие классы/функции использовать, какие переопределить?  ^-^
*

SeBun

  • BanMaster
  • 4030
  • 259 / 5
  • @SeBun48
Это даже не совет, это мое видение организации. Я бы сделал на манер журнала с листами. Пусть журнал - сама форма, страницы - поля формы. Работа формы обслуживается аяксом. В приведенном вами примере три группы, но их может быть больше. А сколько участников? Человек 20, 40? Поэтому я бы сделал одну форму и одну доп. таблицу в базе. Смотрите, как работает: вы открываете страницу, у вас только одна форма. Начинаете формировать группу, выбираете через select "лидеры", "сопровождающие", "участники" и т.д., эти данные могут быть заранее заданы в админке. Далее заполняете стандартные для всех поля, например ФИО, можете добавить доп. поля (пол, наличие собаки), и нажимаете добавить. Происходит аякс-запрос. Данные уходят в таблицу временных данных в базу, форма обновляется. Вы видите некую информацию, например "Участники: 1 чел", и чистые поля формы. Добавляете таким же образом следующего. Как только будет сформирована группа, нажимаете "Зарегистрировать" к примеру. И данные из временной таблицы переносятся в таблицу групп. Можно писать и не во временную, а сразу в основную, добавив, к примеру, какой то идентификатор, что бы знать, что группа не сформирована/сформирована. Как то так... По аналогии с журналом вы заполняете его страницы, а потом ложите журнал в шкаф.

По поводу организации таблиц в БД: вам потребуется таблица групп, таблица ролей ("лидеры", "сопровождающие", "участники"), таблица участников. Участники имеют роли и принадлежат группе. Группа имеет название или просто номер (тот же id).

Приведенный вами пример хорош, но когда вы его начнете заполнять, получится огромная форма с большим объемом отправляемых данных. А если ошибка? Забили человек 40, а потом сбой, и сидите забиваете по новому...

ИМХО  ::)
« Последнее редактирование: 07.05.2015, 09:28:40 от sebun »
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Я сейчас умею создавать только простые формы - 1 контроллер, 1 модель, 1 таблица, 1 форма. Примерно понимаю как отправлять данные больше чем в одну таблицу из одной модели. Здесь как я понимаю нужно или как-то хитро составлять файл формы или выводить на страницу сразу несколько форм.
Вам не особо поможет JForm ибо она заточена под работу с одной записью!
На самом деле такая форма делается очень просто, вы можете динамично добавлять поля в нужном вам количестве через JS!
Но потом вам нужно будет их обработать в цикле!
А дальше уже решать что нужно вам делать!
+ Судя по вашему функционалу вы уверенны что вам нужно создавать пользователей? Пользователи будут заходить в какие то разделы под своим логином и паролем, и после что то  редактировать/изменять/создавать? Если нет то вам не нужно все это делать! Ибо в той форме что вы показали нет ввода логина для юзера или пароля!
+ нужна будет сводная таблица в которой вы будете писать нестандартные поля типа "дата рождения", "номер паспорта", "фото" и т.д.

Происходит аякс-запрос. Данные уходят в таблицу временных данных в базу, форма обновляется.
Происходит эпик фейл ) Ибо файлы аяксом не отправляются )))
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Ибо файлы аяксом не отправляются )))
Почему нет? Есть же FormData().
Другое дело, целесообразно ли использовать AJAX?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

SeBun

  • BanMaster
  • 4030
  • 259 / 5
  • @SeBun48
Другое дело, целесообразно ли использовать AJAX?
В принципе да, можно отправлять каждого участника в таблицу, пока не наберется группа. Потом регистрировать группу. Как я и писал, только без аякса.
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Другое дело, целесообразно ли использовать AJAX?
не есть небольшая целесообразность ) Во первых не будет перезагрузки, во вторых если ошибка вдруг в введенных данных - не надо будет заботится о валидации и новой вставке их по полям после перезагрузки )

Почему нет? Есть же FormData().
Честно говоря первый раз слышу о FormData, и как раз тут пишу AJAX форму, в которой мне нужно отправлять файл ) Думаю пригодится )
« Последнее редактирование: 07.05.2015, 11:48:43 от Istaan »
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Писал уже неоднократно, гемор конечно. У formdata проблема с кроссбраузерностью, ie до 10 версии не поддерживает вообще (это вобще html5 приблуда). Но есть еще много плагинов кроссбраузерных вроде plupload, я бы советовал их юзать.
интернет-блог: http://websiteprog.ru
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Писал уже неоднократно, гемор конечно. У formdata проблема с кроссбраузерностью, ie до 10 версии не поддерживает вообще (это вобще html5 приблуда). Но есть еще много плагинов кроссбраузерных вроде plupload, я бы советовал их юзать.
Вот где собака зарыта ) Да пофиг! кто сейчас тот IE юзает ))
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Корпоративный сектор юзает. Причем во многих конторах есть даже правило использовать только ie, и юзеры не могут себе ничего другого поставить. Там просто интеграция с AD и групповыми политиками домена в ie. А так да, для обычного сайта можно и забить на него.
интернет-блог: http://websiteprog.ru
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
кто сейчас тот IE юзает ))
Вот я тоже так думал.
Недавно прикрутил форму добавления видео и pdf-файлов к VM 1.0 на Joostina(!) :o, с использованием JS, конечно. Все проверял, причесал, а заказчик говорит: не работает. Оказалось, что у него IE, и ни на что другое не согласится поменять :(.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Да сроки сжатые делаю пока как быстро ) а быстро через FormData ) если к ИЕ придолбутся, допилю )
*

asuran

  • Новичок
  • 5
  • 0 / 0
Всем спасибо за ответы! Не ожидал, что развернется такая дискуссия)

Вам не особо поможет JForm ибо она заточена под работу с одной записью!
Т.е. вы предлагаете полностью отказаться от JForm и собирать форму, грубо говоря, в HTML?
Правильно ли я понимаю, что без JForm, то станет невозможно работать через JControllerForm и JModelForm/JModelAdmin? До этого я использовал именно через них.

+ Судя по вашему функционалу вы уверенны что вам нужно создавать пользователей? Пользователи будут заходить в какие то разделы под своим логином и паролем, и после что то  редактировать/изменять/создавать? Если нет то вам не нужно все это делать! Ибо в той форме что вы показали нет ввода логина для юзера или пароля!

Совершенно верно: пользователи сначала проходят авторизацию и получают доступ к форме. Позже они могу внести в эту форму изменения.

Это даже не совет, это мое видение организации. Я бы сделал на манер журнала с листами. Пусть журнал - сама форма, страницы - поля формы. Работа формы обслуживается аяксом. В приведенном вами примере три группы, но их может быть больше. А сколько участников? Человек 20, 40? Поэтому я бы сделал одну форму и одну доп. таблицу в базе. Смотрите, как работает: вы открываете страницу, у вас только одна форма. Начинаете формировать группу, выбираете через select "лидеры", "сопровождающие", "участники" и т.д., эти данные могут быть заранее заданы в админке. Далее заполняете стандартные для всех поля, например ФИО, можете добавить доп. поля (пол, наличие собаки), и нажимаете добавить. Происходит аякс-запрос. Данные уходят в таблицу временных данных в базу, форма обновляется. Вы видите некую информацию, например "Участники: 1 чел", и чистые поля формы. Добавляете таким же образом следующего. Как только будет сформирована группа, нажимаете "Зарегистрировать" к примеру. И данные из временной таблицы переносятся в таблицу групп. Можно писать и не во временную, а сразу в основную, добавив, к примеру, какой то идентификатор, что бы знать, что группа не сформирована/сформирована. Как то так... По аналогии с журналом вы заполняете его страницы, а потом ложите журнал в шкаф.

По поводу организации таблиц в БД: вам потребуется таблица групп, таблица ролей ("лидеры", "сопровождающие", "участники"), таблица участников. Участники имеют роли и принадлежат группе. Группа имеет название или просто номер (тот же id).

Приведенный вами пример хорош, но когда вы его начнете заполнять, получится огромная форма с большим объемом отправляемых данных. А если ошибка? Забили человек 40, а потом сбой, и сидите забиваете по новому...

ИМХО  ::)

Спасибо за развернутый ответ! Возможно мой пример не самый лучший с точки зрения юзабилити и проверки ошибок, но сроки сжатые, поэтому сейчас разбираться еще и с AJAX в Joomla не очень хочется...
Сейчас нужно как можно быстрее как-то начать отправлять данные, иметь возможность загрузить их потом обратно в эту же форму. При этом я пытаюсь разобраться как писать такой компонент максимально используя готовые классы/функции Joomla, понять, как такое вообще пишется.
*

SeBun

  • BanMaster
  • 4030
  • 259 / 5
  • @SeBun48
Сейчас нужно как можно быстрее как-то начать отправлять данные, иметь возможность загрузить их потом обратно в эту же форму. При этом я пытаюсь разобраться как писать такой компонент максимально используя готовые классы/функции Joomla, понять, как такое вообще пишется.
Тогда делайте без аякса. Маленькая формочка на одного человека, после того, как соберется вся группа, зарегистрируете группу... Я думаю другого решения и не будет. И в случае сбоя не придется кучу народа переписывать.
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Всем спасибо за ответы! Не ожидал, что развернется такая дискуссия)
Т.е. вы предлагаете полностью отказаться от JForm и собирать форму, грубо говоря, в HTML?
Правильно ли я понимаю, что без JForm, то станет невозможно работать через JControllerForm и JModelForm/JModelAdmin? До этого я использовал именно через них.
Ну если у вас будет форма в HTML то зачем вам нужен будет  JModelForm/JModelAdmin?) Но вы можете комбинировать все это ) Часть данных (которые одиночные поля) передавать через JForm, а остальные (динамичные поля) в модели/контроллере обработать и сохранить как нужно!


Совершенно верно: пользователи сначала проходят авторизацию и получают доступ к форме. Позже они могу внести в эту форму изменения.
Ну тогда все очень просто, создать динамичные поля(Которых вы сможете добавлять неограниченное количество), и в модели/контроллере отлавливать эти поля, обработать и посоздавать юзеров с рандомными именами и паролями!
*

asuran

  • Новичок
  • 5
  • 0 / 0
Ну если у вас будет форма в HTML то зачем вам нужен будет  JModelForm/JModelAdmin?) Но вы можете комбинировать все это ) Часть данных (которые одиночные поля) передавать через JForm, а остальные (динамичные поля) в модели/контроллере обработать и сохранить как нужно!

В моей примере что вы называете одиночными полями, а что динамичными? А JModelAdmin мне нужен хотя бы для того, чтобы потом выводить эту форму в админке компонента))

Ну тогда все очень просто, создать динамичные поля(Которых вы сможете добавлять неограниченное количество), и в модели/контроллере отлавливать эти поля, обработать и посоздавать юзеров с рандомными именами и паролями!

Совершенно не гарантируется, что пользователи, указанные в полях, были или будут зарегистрированы на сайте. Регистрация требуется только тому, кто будет эту форму заполнять, грубо говоря, "самому главному лидеру делегации". Возможно понадобится потом сделать какую-то связь с реальными пользователями, но это скорее задача на будущее)

Т.е. в итоге надо делать пользовательскую часть через JControllerLegacy, JModelLegacy и в них полностью самому прописывать методы сохранения и загрузки формы, правильно понял?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

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

Автор zeus07

Ответов: 0
Просмотров: 1072
Последний ответ 03.03.2017, 03:43:12
от zeus07
Ошибка в компоненте при передаче параметров в форму для редактирования на стороне сайта

Автор GuDeVic

Ответов: 66
Просмотров: 4271
Последний ответ 23.11.2016, 22:53:48
от GuDeVic
"Стереть" форму

Автор Wertos

Ответов: 2
Просмотров: 918
Последний ответ 22.07.2016, 16:21:27
от fsv
Не подгружаются данные в форму

Автор 32ops

Ответов: 12
Просмотров: 1598
Последний ответ 20.02.2016, 05:55:10
от 32ops
Меняю форму регистрации

Автор bigbaaaan

Ответов: 4
Просмотров: 992
Последний ответ 07.04.2015, 23:17:53
от bigbaaaan