Вставка компонентов Активного списка
Plesk SDK API позволяет встраивать информацию (в настоящий момент только персональные услуги) в некоторые элементы существующих объектов Активного списка. Для этого необходимо создать интерфейс pm_Hook_ActiveList. Он содержит следующие методы:
-
getItemServices($controller, $action, $itemId) возвращает массив параметров конфигурации службы, которые будут встроены в элемент с
id=$itemId
списка на странице/$contorller/$action
. Параметры конфигурации службы:-
title
— название службы. -
icon
— значок службы. -
link
— ссылка на службу (необязательный параметр). -
toolbar
— массив инструментов службы (необязательный параметр). -
messages
— массив сообщений службы (необязательный параметр).
-
Чтобы проиллюстрировать этот подход, Plesk предлагает следующий пример проекта: https://github.com/plesk/ext-active-list-hook
Пример: Добавление персональных услуг в активный список «Сайты и домены»
src/plib/hooks/ActiveList.php
<?php
class Modules_<YourExtensionName>_ActiveList extends pm_Hook_ActiveList
{
public function getItemServices($controller, $action, $itemId)
{
if ($controller !== 'web' || ($action !== 'view' && $action !== 'overview')) {
return [];
}
return [
[
'icon' => pm_Context::getBaseUrl() . 'images/icon-service1.png',
'title' => pm_Locale::lmsg('service1Title'),
'link' => pm_Context::getActionUrl('service1', 'index') . '/id/' . $itemId,
'toolbar' => [
[
'title' => pm_Locale::lmsg('action1Title'),
'link' => pm_Context::getActionUrl('service1', 'action1') . '/id/' . $itemId,
],
[
'title' => pm_Locale::lmsg('action2Title'),
'link' => pm_Context::getActionUrl('service1', 'action2') . '/id/' . $itemId,
],
],
],
[
'icon' => pm_Context::getBaseUrl() . 'images/icon-service2.png',
'title' => pm_Locale::lmsg('service2Title'),
'link' => pm_Context::getActionUrl('service2', 'index') . '/id/' . $itemId,
'toolbar' => [
[
'title' => pm_Locale::lmsg('action3Title'),
'link' => pm_Context::getActionUrl('service2', 'action3') . '/id/' . $itemId,
],
],
'messages' => [
[
'icon' => pm_Context::getBaseUrl() . 'images/attention.png',
'info' => pm_Locale::lmsg('serviceMessage1'),
'noEscape' => true,
],
],
],
];
}
}