Новости Joomla

Вышли релизы Joomla 6.1 и Joomla 5.4.5: новые возможности и стабильность

Релиз Joomla 6.1.0

Проект Joomla! объявил о доступности Joomla 6.1 [Nyota] — новой минорной версии шестой серии, а также о выпуске релиза исправлений ошибок Joomla 5.4.5. Релиз 6.1 приносит ряд долгожданных функций, повышающих удобство управления контентом и защиту от спама.

👩‍💻 Компонент "CS Афиши" для Joomla.

👩‍💻 Компонент "CS Афиши" для Joomla.

Расширение "CS Афиши" позволяет выводить список мероприятий, фильтровать их по датам, поиск по заголовкам и описанию.

В состав пакета расширений входят:
- Компонент "CS Афиши"
- Модуль "Календарь событий"
- Модуль "Предстоящие события"
- Библиотека "ImgResize"

Расширение "CS Афиши" позволяет выводить список мероприятий, фильтровать их по датам, поиск по заголовкам и описанию.

Модуль "Календарь событий" отображает предстоящие и прошедшие мероприятие на календаре, с отображением мероприятий на конкретную дату во всплывающем окне.

Модуль "Предстоящие события" показывает список предстоящий событий по порядку их наступления.

P.S. Расширение платное, но плата символическая, чисто для отработки приема платежей. Ключи без ограничения по времени, купившие сейчас - смогут обновляться без ограничений.

Разработчик - участник нашего сообщества Дмитрий Денисов (@codersite).

Страница расширения
Демо

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

fbr

  • Завсегдатай
  • 1689
  • 211 / 7
Есть модуль
В модуле много настроек

Задача:
После сохранения, запустить php-скрипт, который выполняет определенные операции, используя сохраненные параметры.
Причем, это должно происходить не при стандартной процедуре сохранения, а по выбору администратора.

Что я сделал:
Создал свой тип поля, тупо вставив кнопку "Сохранить"
Код: php
<?php
defined('_JEXEC') or die('Restricted access');
jimport('joomla.form.formfield');
 
class JFormFieldFbr extends JFormField {

    public function getInput() {
    
        $str_save = 'Joomla.submitbutton(\'module.apply\')';
        
        $getButton = '<a onclick="'. $str_save .'" class="btn btn-success">Создать файл</a>';
        
            return $getButton;
    }

}
?>

Теперь я могу сохранять модуль собственной кнопкой! :)
И на этом пока все ... Мозги остановились.

Подскажите, плз :

1. Тем ли путем я пошел? Если нет - куда идти?
2. Где живет Joomla.submitbutton('module.apply')?
3. Ну и сабж - куда и как прикрутить свой скрипт?

Спасибо)
« Последнее редактирование: 20.06.2015, 17:02:44 от fbr »
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Ну вообще функционал модуля не подразумевает такие вещи изначально. Но мне приходилось делать это. Вкратце я писал AJAX запрос на другой скрипт, который будет эти параметры обрабатывать. Много подводных камней. Task может быть 'modules.apply' и 'modules.save' вместо 'module.apply' и 'module.save' на фронте и в админке они отличаются (это насколько я помню, можете проверить). Проблемы с безопасностью могут быть( потому что нельзя передать и проверить токен формы из бекенда на  фронт и наоборот т.к. разные сессии). В отдельном скрипте я делал проверку:

Код: php
...
  $apptype = isset($_POST['apptype'])? $_POST['apptype'] : '';
  $app = JFactory::getApplication($apptype);
  $app->initialise();
  JSession::checktoken();
...

Но лучше написать плагин и AJAX запрос к этому плагину через админку или фронт в зависимости от того где редактируется модуль.
интернет-блог: http://websiteprog.ru
*

fbr

  • Завсегдатай
  • 1689
  • 211 / 7
.. Проблемы с безопасностью могут быть( потому что нельзя передать и проверить токен формы из бекенда на  фронт и наоборот т.к. разные сессии)...

Все происходит в админке. Фронта нет вообще.

Может мы Неправильно друг друга поняли. Поясню.

В настоящий момент скрипт запускается с фронта при обновлении страницы. Но когда на странице выведено 2 модуля этого типа  - возникает конфликт.
И я хочу от этого уйти, запуская скрипт из админки своей кнопкой.
*

fbr

  • Завсегдатай
  • 1689
  • 211 / 7
Вот пример, из менеджера шаблонов:

Код: html4strict
<button onclick="Joomla.submitbutton('template.less')" class="btn btn-small">
<span class="icon-play"></span> Компилировать LESS
</button>

Где все это живет?
Нужно нечто подобное сделать у себя в модуле: по клику Сохранить+запуск скрипта

*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
по выбору пользователя
Пользователь имеет доступ к админке?

P.S. Лучше набросить простенький компонент, который будет выполнять желаемые действия.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

fbr

  • Завсегдатай
  • 1689
  • 211 / 7
Да, именно для администратора это и делается!
Извиняюсь, что обозвал пользователями ))

Модуль тянет из com_content. Так что наверное будет лишним писать свой
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Модуль тянет из com_content. Так что наверное будет лишним писать свой
Никаких проблем не вижу. Пока будете извращаться с AJAX и отдельным скриптом - затрата выдет такой же.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

fbr

  • Завсегдатай
  • 1689
  • 211 / 7
Мне почему-то кажется, что ключевой вопрос
Цитировать
2. Где живет Joomla.submitbutton('module.apply')?

т.е. выдернуть код сохранения, дописать свой и запускать на onclick
нет?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Мне почему-то кажется, что ключевой вопрос
т.е. выдернуть код сохранения, дописать свой и запускать на onclick
нет?
Хотите править ядро?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

fbr

  • Завсегдатай
  • 1689
  • 211 / 7
Хотите править ядро?
упаси Господи ...
Хочу посмотреть как работает, попытаться использовать тот же код у себя в модуле
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Понятно, вам нужна кнопка сохранения параметров модуля на фронте. Ну вобщем похожая задача. Посмотрите этот файл \components\com_config\view\modules\tmpl\default.php и default_options.php в последних версиях Joomla 3.4.x . Они отвечают за редактирования настроек модуля на фронте. Можете написать форму по подобию но вам ведь еще эти данные надо в своем скрипте где то обрабатывать я так понимаю? Значит отсылать AJAX запрос на отдельный скрипт или плагин который эти данные будет обрабатывать.

Вобщем это все голимые костыли на самом деле и модули для этого не предназначены. Пишите компонент.
интернет-блог: http://websiteprog.ru
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Сам не делал, чистая теория. Заглянул в модели компонента com_modules. Есть там событие onExtensionAfterSave. Наверное можно плагин группы extension сделать и обработать onExtensionAfterSave.
*

fbr

  • Завсегдатай
  • 1689
  • 211 / 7
Вобщем это все голимые костыли на самом деле и модули для этого не предназначены. Пишите компонент.

мда..
Надеялся что можно что-то вставить в onclick="..."
Видимо ошибался, все не так просто
*

fbr

  • Завсегдатай
  • 1689
  • 211 / 7
Сам не делал, чистая теория. Заглянул в модели компонента com_modules. Есть там событие onExtensionAfterSave. Наверное можно плагин группы extension сделать и обработать onExtensionAfterSave.
А вот это уже интересно! Посмотрю
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
О, кстатии да вариант и onExtensionBeforeSave есть событие. Не замечал, ну тогда вобще супер.  Пишите плагин.
интернет-блог: http://websiteprog.ru
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Посмотрел. Да, думаю, что плагин решит проблему.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

fbr

  • Завсегдатай
  • 1689
  • 211 / 7
Ребята, спасибо всем кто помогал))
Вариант с плагином на событие onExtensionAfterSave работает.

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

Код: php
// Файл плагина

defined( '_JEXEC' ) or die;

class plgExtensionFbr extends JPlugin {

  public function __construct( & $subject, $config ) {
parent::__construct( $subject, $config );
$this->loadLanguage();
  }

  public function onExtensionAfterSave($data, &$table, $isNew = 0) {
    // проверка на свой модуль
    if ( $table->module === 'mod_mymodule') {
    
      $mod_id = $table->id;
      $params = json_decode($table->get('params'));
      
      // проверка параметра разрешения на перезапись
      if ($params->rewrite_on) {
        require_once JPATH_SITE.'/modules/mod_mymodule/action.php';
      }
      
    }
    
  }
}

// Файл mod_mymodule/action.php

defined( '_JEXEC' ) or die;
// достаем нужные параметры модуля
$param_1 = $params->some_param;
$param_1 = $params->some_param2;

// обработка параметров

// создаем/перезаписываем файл
$fp = file_put_contents(__DIR__.'/css/settings'. $mod_id .'.css', $result_content);

И все же интересно,  где живет Joomla.submitbutton('module.apply')
Посмотреть бы одним глазком, чем он там занимается ..
« Последнее редактирование: 21.06.2015, 17:26:10 от fbr »
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Ничего интересного, просто отправляет форму с параметрами \media\system\js\core-uncompressed.js
интернет-блог: http://websiteprog.ru
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывести дату завершения публикации модуля publish_down

Автор theflame

Ответов: 7
Просмотров: 4909
Последний ответ 06.10.2017, 12:46:30
от NewUsers
вывести данные из модуля с формой Subform form field type

Автор Glog

Ответов: 19
Просмотров: 2596
Последний ответ 22.06.2017, 13:32:07
от Glog
Зависимость модуля от компонента и страницы

Автор Тренд

Ответов: 34
Просмотров: 3578
Последний ответ 16.06.2017, 19:48:39
от dmitry_stas
Подправить скрипт выбора города

Автор misteri27

Ответов: 8
Просмотров: 2209
Последний ответ 21.02.2017, 18:47:13
от misteri27
PHP скрипт для автоматической очистки таблиц в Базе Данных MySQL

Автор LovelyHost

Ответов: 46
Просмотров: 8500
Последний ответ 17.12.2016, 14:32:28
от vipiusss