translater/src/BackendBehaviors.php

87 lines
2.5 KiB
PHP
Raw Normal View History

2023-03-14 23:26:31 +00:00
<?php
/**
* @brief translater, a plugin for Dotclear 2
*
* @package Dotclear
* @subpackage Plugin
*
* @author Jean-Christian Denis & contributors
*
* @copyright Jean-Christian Denis
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
*/
declare(strict_types=1);
namespace Dotclear\Plugin\translater;
use adminModulesList;
use dcCore;
use Dotclear\Helper\Html\Form\Submit;
2023-04-07 21:32:00 +00:00
use Dotclear\Helper\Html\Html;
2023-03-14 23:26:31 +00:00
class BackendBehaviors
{
/** @var Translater Translater instance */
private static $translater = null;
/**
* Create instance of Translater once
*
* @return Translater Translater instance
*/
private static function translater(): Translater
{
if (!is_a(self::$translater, Translater::class)) {
self::$translater = new Translater(false);
}
return self::$translater;
}
/**
* Add button to go to module translation
*
* @param adminModulesList $list adminModulesList instance
* @param string $id Module id
* @param array $prop Module properties
*
* @return string HTML submit button
*/
public static function adminModulesGetActions(adminModulesList $list, string $id, array $prop): ?string
{
if ($list->getList() != $prop['type'] . '-activate'
|| !self::translater()->getSetting($prop['type'] . '_menu')
2023-03-19 23:21:13 +00:00
|| !dcCore::app()->auth?->isSuperAdmin()
2023-03-14 23:26:31 +00:00
) {
return null;
}
if (self::translater()->hide_default
2023-03-14 23:26:31 +00:00
&& in_array($id, My::defaultDistribModules($prop['type']))
) {
return null;
}
2023-04-07 21:32:00 +00:00
return (new Submit(['translater[' . Html::escapeHTML($id) . ']', null]))->value(__('Translate'))->render();
2023-03-14 23:26:31 +00:00
}
/**
* Redirect to module translation
*
* @param adminModulesList $list adminModulesList instance
* @param array $modules Selected modules ids
* @param string $type List type (plugin|theme)
*/
public static function adminModulesDoActions(adminModulesList $list, array $modules, string $type): void
{
if (empty($_POST['translater']) || !is_array($_POST['translater'])) {
return;
}
2023-03-19 23:21:13 +00:00
dcCore::app()->adminurl?->redirect(
2023-03-14 23:26:31 +00:00
My::id(),
['part' => 'module', 'type' => $type, 'module' => key($_POST['translater'])],
'#module-lang'
);
}
}