Новости 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 Гость просматривают эту тему.
  • 375 Ответов
  • 174815 Просмотров
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Re: Документация по компонентам
« Ответ #120 : 25.04.2006, 17:17:24 »
С сортировкой получилось, если нужно будет, то поделюсь..))
а в каком виде? через request или js?

Подскажите как.
избавиться от POST.
 ::) извини, забыл сказать о его такой особенности...

или дописывать в history некую фикцию (типа якобы посещённой ранее страницы).
« Последнее редактирование: 25.04.2006, 17:19:18 от userxp »
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3

Re: Документация по компонентам
« Ответ #121 : 25.04.2006, 17:28:14 »
а в каком виде? через request или js?

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

избавиться от POST.
или дописывать в history некую фикцию (типа якобы посещённой ранее страницы).

Думаю от POST избавляться уже поздно(( Нехочу лопатить все по новой, а если в форме просто POST меняю на GET, то значения передаются, но не работает...это нужно смотреть..опять..
А вот про фикцию, которую нужно дописывать в историю, можно подробнее?))
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Re: Документация по компонентам
« Ответ #122 : 25.04.2006, 17:33:14 »
а это через нелюбимый js :)

зы.
тут надо подумать. я не пробовал.

history - это массив history[n].
history.length - размер массива.
соотв. history.current (или next|previous|toString)
« Последнее редактирование: 25.04.2006, 17:41:23 от userxp »
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3

Re: Документация по компонентам
« Ответ #123 : 11.05.2006, 11:11:16 »
После небольшого отдыха...возвращаюсь...к тому на чем закончил.)) Думаю на js делать не буду, не сильно знаком я с js. А вот про избавление от POST можно поподробнее?)
Начал я от него избавляться, но что-то не получается. А именно не подставляется task из формы.

Код
<?php
   echo "<form action=\"index.php?option=$option&task=resultForm\" method=\"GET\">";
?>

Если через POST, то все нормально, а если GET, то после $option сразу идут переменные из формы, а &task=resultForm теряется. Как побороть? И можно ли еще как-нибудь с POSTом, но без js?

Re: Документация по компонентам
« Ответ #124 : 11.05.2006, 11:28:11 »
Код
<?php
   echo "<form action=\"index.php?option=" .$option ."&task=resultForm\" method=\"GET\">";
?>

Re: Документация по компонентам
« Ответ #125 : 11.05.2006, 11:40:54 »
Код
<?php
   echo "<form action=\"index.php?option=" .$option ."&task=resultForm\" method=\"GET\">";
?>

Не-а не выходит, в ссылку передается без $task (option=com_component&model=25&prise=3000)
Вот так получилось, только не знаю правильно ли так делать?

Код
<?php
$q= 'resultForm';
echo "<form action=\"index.php?option=$option\" method=\"GET\">";
?>
<input type = 'hidden' name = 'option' value = '<?php echo $option; ?>'/>
<input type = 'hidden' name = 'task' value = '<?php echo $q; ?>'/>
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Re: Документация по компонентам
« Ответ #126 : 11.05.2006, 13:18:06 »
ну получаешь в GET-е два раза $option... зачем?

хотя... 
зы. я задумался...
« Последнее редактирование: 11.05.2006, 13:21:41 от userxp »
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3

Re: Документация по компонентам
« Ответ #127 : 11.05.2006, 16:03:10 »
ну получаешь в GET-е два раза $option... зачем?

Да вроде один $option))
По поводу этого...я посмотрел...в исходниках..многие так делают. По крайней мере с этим я как то уверен...а вот то что сделал я...то есть передаю..$task это ничего страшного? Ну я имею ввиду безопасность и все такое. А то я думаю еще что так делать политически не корректно...или я не прав?))
« Последнее редактирование: 11.05.2006, 16:05:11 от Quexx »
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Re: Документация по компонентам
« Ответ #128 : 11.05.2006, 17:05:08 »
а чем хуже $task того же $option или $view или чего-то другого?
если он тебе нужен - передаёшь, не нужен - не передаёшь :)

зы. а ты каким браузером пробовал?
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3

Re: Документация по компонентам
« Ответ #129 : 11.05.2006, 18:10:19 »
а чем хуже $task того же $option или $view или чего-то другого?
если он тебе нужен - передаёшь, не нужен - не передаёшь :)

Мысль понял..)))) Значит буду пользовать..)) 10Х))

зы. а ты каким браузером пробовал?

Пробовал и 2 раза не передавалось? Если ты это имел ввиду, то пробовал Лисой 1.5.0.1; IE 6; Опера 8.5. А вот POST как я уже писал не работает в IE, он просто не запоминает данные. Лиса запоминает при возврате назад выскакивает табличка, что мол подтвердите старые данные  когда-то переданные формой. Жмешь окей переходишь, отмену остаешься на месте (все наверное видели).., так что у юзера просто нет выбора, вот если бы в IE так было, то от POSTа бы не уходил.
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Re: Документация по компонентам
« Ответ #130 : 11.05.2006, 18:32:33 »
А вот POST как я уже писал не работает в IE, он просто не запоминает данные.
ты немножко путаешь передачу параметров по POST и возврат взад.
одно другому не мешает.
дело в том, что в принципе, глюк здесь прав.
данные переданные по POST, НЕ ДОЛЖНЫ быть сохранены при возврате.
это нарушение безопастности.
ибо при непроизвольном (со чужой стороны) "откате" по хистори можно "стыбрить данные".
в частности ещё и из-за этого пароли шифруются в md5.

или я не прав?
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3

Re: Документация по компонентам
« Ответ #131 : 11.05.2006, 18:42:21 »
ты немножко путаешь передачу параметров по POST и возврат взад.
одно другому не мешает.
дело в том, что в принципе, глюк здесь прав.
данные переданные по POST, НЕ ДОЛЖНЫ быть сохранены при возврате.
это нарушение безопастности.
ибо при непроизвольном (со чужой стороны) "откате" по хистори можно "стыбрить данные".
в частности ещё и из-за этого пароли шифруются в md5.
или я не прав?

Да вроде как прав..)) Но в данном случае...мне нужно возвращаться назад. Данные я никакие не шифрую...просто нужно и все..)) Значит приходим к выводу, что метод POST, без js не для моего случая? В данном случае лучше пользовать GET? Или я что-то не допонял?)))

*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Re: Документация по компонентам
« Ответ #132 : 11.05.2006, 18:51:47 »
всё правильно.
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

PyKaB

  • Захожу иногда
  • 88
  • 19 / 13
Re: Документация по компонентам
« Ответ #133 : 16.05.2006, 19:54:25 »
в toolbar.****.html.php использую mosMenuBar:custom. Например:
Код
mosMenuBar::custom('save','save.png','save_f2.png','Сохранить',false);
Как обеспечит возможность использовать переменные из языкового файла вместо слова Сохранить? Не понятно в каком месте подключается toolbar.****.html.php => не ясно где в каком месте подключать языковой файл...
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Документация по компонентам
« Ответ #134 : 16.05.2006, 20:10:02 »
Не понятно в каком месте подключается toolbar.****.html.php => не ясно где в каком месте подключать языковой файл...
toolbar.****.html.php подключается из toolbar.****.php,  а тот, в свою очередь, вызывается в файле: administrator/modules/mod_toolbar.php...

если тебе необходимо использовать русские языковые константы, то лучше их подключить в файле toolbar.****.php
*

PyKaB

  • Захожу иногда
  • 88
  • 19 / 13
Re: Документация по компонентам
« Ответ #135 : 16.05.2006, 20:18:57 »
ок. спасибо ))
*

PyKaB

  • Захожу иногда
  • 88
  • 19 / 13
Re: Документация по компонентам
« Ответ #136 : 19.05.2006, 15:18:49 »
не прошло.... подключаю языковой в toolbar.***.php - в меню работает,а в теле - нет....

теперь еще и запрос не работает....
Код
         $querry = 'DELETE FROM #__aurora_radio WHERE '.implode($fordelarr,' or ');
         $database->setQuery($querry);
где итоговый запрос получается вида
Код
DELETE FROM #__aurora_radio WHERE id=1 or id=3
он даже в режиме отладкт не пишется  >:(

[вложение удалено Администратором]
« Последнее редактирование: 19.05.2006, 15:43:50 от PyKaB »
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Документация по компонентам
« Ответ #137 : 19.05.2006, 16:11:56 »
не прошло.... подключаю языковой в toolbar.***.php - в меню работает,а в теле - нет....
ну включи и там и там... только через require_once

теперь еще и запрос не работает....
а где ты там вызываешь метод query? ведь setQuery просто устанавливает текст запроса, а не выполняет его...

вот что должно быть:
Код
 $querry = 'DELETE FROM #__aurora_radio WHERE '.implode($fordelarr,' or ');
 $database->setQuery($querry);
 $database->query();

*

PyKaB

  • Захожу иногда
  • 88
  • 19 / 13
Re: Документация по компонентам
« Ответ #138 : 19.05.2006, 16:20:54 »
точно )) а я уж пытался для этих целей приспособить от безысходности loadresult ))
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Документация по компонентам
« Ответ #139 : 19.05.2006, 16:25:12 »
точно )) а я уж пытался для этих целей приспособить от безысходности loadresult ))
query — просто выполняет запрос, а loadresult — выполняет запрос и возвращает 1 значение из 1-й колонки 1-й строки (например можно использовать для select count(*) ...)
*

PyKaB

  • Захожу иногда
  • 88
  • 19 / 13
Re: Документация по компонентам
« Ответ #140 : 19.05.2006, 16:30:37 »
спасибо - разобрался уже )) только получается, что loadresult и loadobjectlist выполняют только запросы select...так мне кажеться...delete то они не выполняют точно )))
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Re: Документация по компонентам
« Ответ #141 : 19.05.2006, 16:38:03 »
Борис, ты не прав :)


function loadResult() {
	
if (!(
$cur $this->query())) {
	
	
return 
null;
	
}
	
$ret null;
	
if (
$row mysql_fetch_row$cur )) {
	
	
$ret $row[0];
	
}
	
mysql_free_result$cur );
	
return 
$ret;
}


запрос будет выполнен в любом случае ;)
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

PyKaB

  • Захожу иногда
  • 88
  • 19 / 13
Re: Документация по компонентам
« Ответ #142 : 19.05.2006, 16:52:45 »
похоже на правду....даже очень, поэтому проверил еще раз.
поставил сначала $database->query(); - заработало, написал $database->loadResult(); - не заработало.... может версии разные. сейчас гляну как у меня это выглядит в database.php

Re: Документация по компонентам
« Ответ #143 : 19.05.2006, 16:59:07 »
Цитировать
а зачем считать? есть сегодня, есть dropdate - в базу пишешь сегодня+dropdate
и раз в день сравниваешь с текущей датой.
можно вообще не удалять, а делать выборку из базы только по актуальным датам.

Вот тут не совсем понятно. У меня есть сегодняшняя дата и она записывается в базу как 2006.05.19 тип поля date, а dropdate записывается просто как число int. Мне просто показалось, что с датами муторнее. Значит если я поле dropdate сделаю тип date и буду в него заливать дату 2006.05.19 + 30 дней, результат этого сложения каждый раз сравнивать с текущей датой и при равенстве уже посылать запрос на удаление? Я думал про это, но вот как к дате прибавить просто число? Ну и по второму варианту как всетаки высчитать сутки...и по прошествии суток, из базы брать число отнимать от него 1 и записывать снова?
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Re: Документация по компонентам
« Ответ #144 : 19.05.2006, 17:12:04 »
да нифига не муторней :)
тебе нужно записать не dropdate, а дату истечения "публикации". один раз, при первом заполнении.
потом выполняешь запрос, где в SELECT пишешь WHERE дата_истечения > (или равна) $date
всё, что меньше текущей даты, отпадёт и не будет попадать в перечень.
это самый простой вариант.
единственное, что нужно будет сделать - это при выборке привести дату к одинаковому формату.
« Последнее редактирование: 19.05.2006, 17:14:58 от userxp »
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3

Re: Документация по компонентам
« Ответ #145 : 19.05.2006, 17:46:28 »
Все равно не могу понять...или мы говорим об одном и томже...или ..не могу понять.)))

dropdate это и есть время истечения публикации, ну назвал я так поле)) то есть в базе вот так:

id  |     mydate        |      dropdate     |   
1       2006.05.19        2006.05.19+30

Цитировать
где в SELECT пишешь WHERE дата_истечения > (или равна) $date
Хотя нет..вроде понял...выводятся все даты, если они больше текущего числа..))

Тогда..да это будет простой..вариант. Теперь почему он мне не подходит.))

1. Нужно это будет удалять ..хотя вроде тоже понятно...(удалять все которые равны текущей дате).
2. Пользователю нужно будет выводить сколько осталось дней до конца истечения (Вот поэтому и решил отнимать по единице от простого числа, а не от даты), а тут придется..отнимать даты..хоть покажется смешным..но я не в курсе как ..))
3. И наконец последнее, опять смешное...я не в курсе как складывать число и дату..))

Какие есть соображения?
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Re: Документация по компонентам
« Ответ #146 : 19.05.2006, 18:14:57 »
для "сегодня": $now date ('Y-m-d H:i:s'time() + $mosConfig_offset 3600 );

для "даты истечения": $unpub date ('Y-m-d H:i:s'time() + ($mosConfig_offset $dropday_shift 24) * 3600);

$dropday_shift - сдвиг на кол-во дней

int strtotime ( string time [, int now] )

Первым параметром функции должна быть строка с датой на английском языке, которая будет преобразована в метку времени относительно метки времени, переданной в now, или текущего времени, если аргумент now опущен. В случае ошибки возвращается -1.

Функция strtotime() использует GNU формат даты, поэтому рекомендуется ознакомиться с руководством GNU Date Input Formats, где описывается синтаксис аргумента time.

Пример использования функции strtotime()
<?php
echo strtotime("now"), "\n";
echo 
strtotime("10 September 2000"), "\n";
echo 
strtotime("+1 day"), "\n";
echo 
strtotime("+1 week"), "\n";
echo 
strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo 
strtotime("next Thursday"), "\n";
echo 
strtotime("last Monday"), "\n";
?> 


ну или не храни в виде даты, а в виде целочисленного значения...
it's up to you
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3

Re: Документация по компонентам
« Ответ #147 : 19.05.2006, 18:22:21 »
Вот...дал над чем задуматься..!! Благодарствую! Буду работать...о достижениях доложу здесь))!

Re: Документация по компонентам
« Ответ #148 : 20.05.2006, 14:21:32 »
Вот тут еще нужна мысль..задумал еще сделать предпросмотр..Поясняю..Например форма отправки данных Юзер выбирает из селектов что то вводит сам и ему нужно посмотреть на эти данные до отправки их на сервер в базу. Например как на этом форуме. Как это можно сделать...меня интересует где в данном случае можно хранить данные..? Желательно не на сервере. Подскажите идеей.)) Заранее благодарен!

Ну можно и на сервере...только вот не пойму где данные хранить....создавать еще одну таблицу в БД и возвращать результаты уже из нее? Помоему что-то не то. Если все таки передавать в БД, то как ее потом вычещать? Руками бы не хотелоссь. Или не правильно мыслю?
« Последнее редактирование: 20.05.2006, 15:51:53 от Quexx »
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Re: Документация по компонентам
« Ответ #149 : 20.05.2006, 17:09:40 »
да тут вариантов...
1) можно открывать новое окно и там делать превью
2) можно в этом же (вопрос где) вставить любой элемент с уникалным id.
потом, используя это id, можно в этот тэг через свойство innerHTML писать всё, что угодно
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Документация по созданию user profile плагина для Joomla 1.6

Автор n_drey

Ответов: 13
Просмотров: 2802
Последний ответ 05.10.2011, 21:03:46
от n_drey