Добавление персональных данных к спискам в Plesk
Plesk SDK API позволяет добавлять персональные данные к спискам объектов Plesk (таких как домены, тарифные планы и так далее).
Примечание: Это API работает только для страниц Zend (страниц, URL-адреса которых содержат /admin
или /smb
)
Чтобы добавлять данные в списки, которые уже существуют в графическом интерфейсе Plesk GUI, создайте абстрактный класс pm_Hook_SimpleList. Он содержит следующие методы:
-
isEnabled($controller, $action, $activeList) – определяет, какие списки будут обрабатываться хуком.
-
getDataProvider($controller, $action, $activeList, $data) – расширяет или заменяет оригинальный поставщик данных. Поставщик данных может быть массивом или экземпляром Zend_Db_Select.
Примечание: Вы не можете изменить тип $data из массива на Zend_Db_Select и наоборот. Этот метод в первую очередь используется для добавления и/или удаления строк в наборе данных.
-
getData($controller, $action, $activeList, $data) – расширяет или заменяет оригинальный набор данных перед тем, как отправить его клиенту. Этот метод в основном используется для небольших изменений, таких как фильтрация и сортировка данных на текущей странице.
Мы настоятельно рекомендуем вам использовать префикс (например, ext<YourExtensionId>) для именования полей.
-
getColumns($controller, $action, $activeList) – описывает колонки, которые будут добавлены к списку.
Колонки определяются аналогично методу pm_View_List_Simple::setColumns().
По умолчанию новая колонке будет добавлена в конце списка. Чтобы определить местоположение новой колонки, вы можете указать значения параметров insertBefore или insertAfter в определении колонки. Эти параметры могут принимать следующие значения:
- Положительное целое число – номер колонки с начала списка.
- Отрицательное целое число – номер колонки с конца списка.
- Строка – свойство dataIndex существующей колонки.
-
getColumnsOverride($controller, $action, $activeList) – описывает способ, которым будут изменены некоторые существующие колонки.
Примеры
Определение того, какой список будет управляться хуком
src/plib/hooks/SimpleList.php
<?php
class Modules_<YourExtensionName>_SimpleList extends pm_Hook_SimpleList
{
public function isEnabled($controller, $action, $activeList)
{
// Modify only domains lists
return $controller === 'domain' && $action === 'list'
|| $controller === 'customer' && $action === 'domains'
|| $controller === 'reseller' && $action === 'domains';
}
}
Скрытие всех доменов, принадлежащих клиенту Ganesh Kamala
src/plib/hooks/SimpleList.php
<?php
class Modules_<YourExtensionName>_SimpleList extends pm_Hook_SimpleList
{
public function getDataProvider($controller, $action, $activeList, $data)
{
// Hide all domains for client with id 5
$data->where('c.id <> ?', 5);
return $data;
}
}
Увеличение значений в колонке „Использование диска“
src/plib/hooks/SimpleList.php
<?php
class Modules_<YourExtensionName>_SimpleList extends pm_Hook_SimpleList
{
public function getData($controller, $action, $activeList, $data)
{
foreach ($data as &$row) {
$row['realSize'] += 1048576;
}
return $data;
}
}
Изменение названия колонки с «Подписчик» на «Владелец»
src/plib/hooks/SimpleList.php
<?php
class Modules_<YourExtensionName>_SimpleList extends pm_Hook_SimpleList
{
...
public function getColumnsOverride($controller, $action, $activeList)
{
return [
'ownerName' => [
'title' => 'Owner',
],
];
}
...
}
Скрытие колонки „Дата создания“
src/plib/hooks/SimpleList.php
<?php
class Modules_<YourExtensionName>_SimpleList extends pm_Hook_SimpleList
{
...
public function getColumnsOverride($controller, $action, $activeList)
{
return [
'setupDate' => [
'isVisible' => false,
],
];
}
...
}
Добавление четвертой справа колонки с названием „Random“, содержащей случайные числа от 0 до 100
src/plib/hooks/SimpleList.php
<?php
class Modules_<YourExtensionName>_SimpleList extends pm_Hook_SimpleList
{
...
public function getData($controller, $action, $activeList, $data)
{
foreach ($data as &$row) {
$row['extHookSimplelistRand'] = rand(0, 100);
}
return $data;
}
public function getColumns($controller, $action, $activeList)
{
return [
'extHookSimplelistRand' => [
'title' => 'Random',
'insertBefore' => -3,
],
];
}
...
}
Вы можете найти пример расширения, иллюстрирующий этот подход, здесь.