В Joomla расширениях есть такая замечательная функция, как автообновление. Вы устанавливаете себе к примеру плагин CTRL+S, через какое-то время, автор выпускает новую версию, и в административной панели Joomla у всех, кто поставил расширения, появляется сообщение, о том, что вышла новая версия этого плагина. Один клик и установлена новая версия. Реализовано это при помощи серверов обновлений. Такой сервер обновлений можно сделать легко самому - это всего лишь xml файл. Но такой файл нужно постоянно редактировать, вносить новые версии, следить чтобы в нем не было ошибок. Гораздо удобние было бы автоматизировать этот процесс. Не зная предмета и уже имеющихся решений, кто-то возьмется написать такую систему с нуля. Тут нет ничего сложного. Мы же, используем готовое решение Akeeba Release System(далее ARS). Это отличный компанент, который позволяет развернуть на основе Joomla CMS полноценный сервер обновлений, но и является файловым хранилищем для того, чтобы расшаривать какие угодно файлы для ваших статей.

У меня возникла необходимость сделать сервер обновлений для моих Joomla разработок. И я его получил, вместе с отличной системой выпуска релизов, о которой всегда мечтал.

Akeeba - это вообще неплохая компания, которая выпускает качественные php продукты и это не реклама,  ее бекапер и Admin Tools, своего рода авангард в своей области применения.

В плане настроек компанент довольно неодназначен, поэтому сейчас постараемся разобраться в его структуре. Скачать компанент можно тут, а полная документация доступна на официальном сайте разработчика

Русификатор качаем тут

После установки, вы вероятно не увидите компонент в списке меню Компоненты. Это из-за плагина sh404sef - Akeeba Release System. Его нужно включить, тогда плагин появится в меню.

Компанент работает с физическими папками на диске, поэтому надо зайти по FTP на сервер и создать папку, где будут хранится нужные нам файлы. Таких папок может быть сколько угодно, и вложенность у них тоже может быть любая. Единственное ограничение, папка не может находится ниже домашней директории сайта. Это ограничение самой Joomla.

Я создал дерево папок в media,  media/releases/joomla/plugins. У Joomla должны быть права на чтение этой папки. У ARS есть возможность заливать в нее файлы прямо из админки Joomla, поэтому права можно дать еще и на запись.

Далее переходим на страницу компонента ARS. Переходим во вкладку категории и жмем Создать. Далее заполняем все, как на рисунке. Поясню лишь некоторые пункты.

akeeba release system создание категории

  • Тип папки - обычный или BleedingEdge, второй используется когда система хранит лишь diff'ы файлов. Подобно тому, как это делает git. Я его не использовал, но в нем есть свои плюсы.
  • файлы папки - тут прописываете полный путь от корня сайта.
  • Show unauthorised links - показывать папку не авторизованным пользователям. лучше поставить Да. Эта настройка встречается во всех элементах ARS, н езабывайте про нее. Я больше не буду упоминать про нее. 

Жмем Сохранить и закрыть. Далее переходим во вкладку Выпуски(Releases). Это основная единица этого компонента. И пусть вас не обманывает, то что здесь вы не подключаете к нему никаких файлов. Дело в том, что в релиз могут входить не только сам zip архив с вашим расширением, но и сопутствующая документация, русификаторы, файлы с иконками, архив с демо и т.п. вещи. В одном релизе их может быть сколь угодно.

akeeba release system создание релиза

  • Категория - выбираем категорию из предыдущего шага.
  • Версия - версия вашего расширения, тут может быть что угодно. Не обязательно 3 цифры. К примеру 1.0.1.Satble Другое дело для Joomla расширений все же, нужно использовать именно такую нотацию:[major].[minor].[patch]
  • Алиас - нужен для генерации красивых ссылок SEF плагином
  • Зрелость - на данный момент Joomla поддерживает только Stable, все остальные игнорируются. Однако, как уже писалось выше, компанент ARS можно использовать не только для Joomla расширений, но и для каких угодно релизов. даже если вы пишите по windows

Жмем Сохранить и закрыть

Далее переходим в объекты. Вот в них мы уже прикрепляем файлы к релизу. В моем случае - это только один zip архив, однако у вас могут быть несколько файлов. Все эти файлы необходимо через FTP или через компонент(Akeeba Release System – Загрузить и управлять файлами) загрузить в созданную на первом этапе папку. Для каждого файла надо создать отдельный объект и прикрепить его к релизу(выпуску).

akeeba release system создание объекта 

 

 

  • Выпуск - выбираем созданный на предыдущем шаге релиз.
  • Заголовок  - просто название, какое угодно
  • Алиас - можно оставить пустым, оно заполнится автоматически из поля Заголовок
  • Тип - файл
  • Название файла - выбираем из выпадающего списка свой файл.

Настройки Размер файла, Подпись MD5, Подпись SHA1, Кол-во просмотров - можно оставить пустыми, они заполнятся автоматически при сохранении

Настройки справа пока трогать не будем. К ним мы вернемся когда будем создавать канал обновлений.

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

Это все, что необходимо сделать для того, чтобы на сайте можно было расшаривать файлы в статьях

Но нам необходим помимо этого автоматический сервер обновлений. Для этого необходимо создать канал обновлений. Переходим из главной панели компонента ARS во вкладку Каналы обновления.

akeeba release system главная панель

Тут создается канал, который будет прописан в теге <updateserver> в манифесте расширения.

akeeba release system создаем канал обновления

Если раньше ARS было все равно какие релизы вы выкладываете, то эти настройки исключительно для продуктов Joomla

  • Название канала - название для себя
  • Алиас - sef плагин компонента генерирует url канала на основе этого значения
  • Тип расширения - выбираем тот тип расширений, который у нас  
  • Образец названия пакета - я так и не понял зачем он нужен, вполне можно оставить пустым
  • Элемент - вот тут внимательно, если ваш плагин называется plg_pluginname, то сюда нужно написать pluginame. Подробнее
  • Район веб сайта - для плагинов это всегда Лицевая часть. У остальных по разному. Должно совпадать с тем, что у вас прописано в манифесте.
  • Папка - актуально только для плагинов. Папка, к которой относится плагин (system,content и т.д.).
  • ID ... - если вашему расширению повезло и оно попало в JED, то можно вставить сюда его ID

жмем Сохранить и закрыть

Еще для нормальной работы канала, нам потребуется создать среду (несколько сред). Среда - это та система (в нашем случае Joomla) и ее версия, какую поддерживает ваше расширения. Это может быть и windows и другая CMS. К примеру если у нас плагин работает только в Joomla 2.5, то среда будет такой

akeeba release system создание среды 

Для версии Joomla 3.x создаем отдельную среду. Третьих версий было много и надо учесть их все.

akeeba release system создание среды для Joomla 3x

В составе пакета ARS нет такой иконки - ars-joomla3.x.png. Можете взять ее с этого сайта и залить в media/com_ars/environments/

Теперь нужно вернутся в Объекты и кликнуть по нашему объекту в столбце - Заголовок и перейти в его редактирование. Теперь будем редактировать правую часть. 

akeeba release system редактирование объекта, правая часть

Выбираем ту среду, которую поддерживает наше расширение. Если у вас несколько версий расширения для каждой версии Joomla (обычно это версия для Joomla 1.x и отдельная версия для Jooomla 2.5-3.x) то для каждой среды нужно создать отдельный объект, с поддержкой именно той среды.

Обновить канал - выбираем созданный нами ранее канал.

Вот и все. Переходим в Каналы обновления - и у нашего канала копируем ссылку на него.

 akeeba release system - ссылка на канал обновления

эту ссылку вставляем в манифест вашего расширения. К примеру так 

<updateservers>
	<server type="extension" priority="1" name="plg_ctrls CTRL+S Handler"><![CDATA[http://xdan.ru/index.php?option=com_ars&view=update&task=stream&format=xml&id=1&dummy=extension.xml]]></server>
</updateservers>

Вот и все, когда вы создадите новый выпуск и прикрепите к нему новую версию объекта, то у всех пользователей по всему миру, в их Joomla административной панели, появится сообщение о новой версии вашего расширения.

Успехов Вам!

UPD ARS довольно странно работает, или я чего-то не понял, но она не позволяет качать файл через канал обновлений не авторизованным пользователям. И если попытаться обновить к примеру плагин, через Joomla, то система выдаст ошибку 403. Это безусловно как-то можно настроить, но я не нашел как. Поэтому исправил "руками": открываем файл /components/com_ars/models/downloads.php и комментируем в нем несколько строк, которые отвечают за эту самую проверку. У меня это 47-61 строки.

/*
// If the user is a guest and I wanted to show it to him, tell the controller to fire the redirect
if (JFactory::getUser()->guest && $items[0]->show_unauth_links && $items[0]->cat_show_unauth && $items[0]->rel_show_unauth)
{
	$return = -1;
	return $return;
}

// Additional check on item access level. I removed that from the model to allow
// item listing to unauthorized users
if (!in_array($items[0]->access, JFactory::getUser()->getAuthorisedViewLevels()))
{
	return $null;
}
*/

 

Оставлять комментарии могут только зарегистрированные пользователи

Комментарии  

Gruz
# Gruz 24.09.2015 12:44
Фишка BleedingEdge в том, что он автоматически создаёт Releases и Items, когда их заливают, скажем, по FTP в репозиторий. Уменьшает ручную работу по заливке нового файла.
Gizmo
# Gizmo 09.01.2016 11:31
Как вы заставили работать этот режим? Не в какую не видит файлы...
voland
# voland 18.02.2016 01:49
У меня никак не получается заставить скачивать файл (кнопка скачать сейчас имеет путь http://joomla15/files-cat/components/rusbuttons.zip), когда файл находится в http://joomla15/arsrepo/rusbutton/rusbuttons23.zip
Это я пока на локалке пробую.
В чем тут может быть проблема? Повторил настройку согласна мануала (сменил тип пункта меню).

И еще - в выпуске нет названия, то есть подразумевается что для каждого расширения надо делать категорию, но у категории нет родителя. Этот момент с точки зрения логики не очевиден.
voland
# voland 18.02.2016 02:04
Как обычно - задашь вопрос и вскоре найдешь ответ
https://www.akeebabackup.com/support/akeeba-release-system/23986-404-errors-on-download-links-after-upgrade.html

Осталась строчка в .htaccess от 1.5