Le fichier Config.php fait partie du processus reconnu par le gestionnaire de modules, il est donc automatiquement pris en compte dans l'administration si il existe.
- Il est placé dans le sous dossier
src
du module, - Il contient une classe du nom de
Config
, - Il est dans l'espace de nom PHP
Dotclear\Plugin\monPlugin
ouDotclear\Theme\monTheme
, - La classe doit étendre la classe Process,
- Les 3 méthodes
init()
etprocess()
etrender()
sont utilisées,
Cette classe simplifie la gestion de la configuration d'un module dans le sens où la partie construction de la page est déjà effectuée par le gestionnaire de modules. Seul le traitement des valeurs et le contenu du formulaire sont à la charge de la classe Config. Un lien vers cette page sera ajouté à la liste de plugins ou sur les thèmes de la page de gestion d'apparence du blog. Un lien sera également ajouté en bas de page principale de gestion du plugin si elle existe.
Exemple complet du fichier config du thème customCSS de la distribution :
<?php
namespace Dotclear\Theme\customCSS;
use dcCore;
use Dotclear\Core\Backend\Notices;
use Dotclear\Core\Process;
use Dotclear\Helper\File\Path;
use Dotclear\Helper\Html\Html;
use Dotclear\Helper\L10n;
use Exception;
use form;
class Config extends Process
{
public static function init(): bool
{
if (My::checkContext(My::CONFIG)) {
My::l10n('main');
dcCore::app()->admin->css_file = Path::real(dcCore::app()->blog->public_path) . '/custom_style.css';
if (!is_file(dcCore::app()->admin->css_file) && !is_writable(dirname(dcCore::app()->admin->css_file))) {
throw new Exception(
sprintf(
__('File %s does not exist and directory %s is not writable.'),
dcCore::app()->admin->css_file,
dirname(dcCore::app()->admin->css_file)
)
);
}
self::status(true);
}
return self::status();
}
public static function process(): bool
{
if (!self::status()) {
return false;
}
if (isset($_POST['css'])) {
@$fp = fopen(dcCore::app()->admin->css_file, 'wb');
fwrite($fp, $_POST['css']);
fclose($fp);
Notices::message(__('Style sheet upgraded.'), true, true);
}
return true;
}
public static function render(): void
{
if (!self::status()) {
return;
}
$css_content = is_file(dcCore::app()->admin->css_file) ? file_get_contents(dcCore::app()->admin->css_file) : '';
echo
'<p class="area"><label>' . __('Style sheet:') . '</label> ' .
form::textarea('css', 60, 20, Html::escapeHTML($css_content)) . '</p>';
}
}
Le contenu de ce document a été écrit suivant le code de la version 2.27 de Dotclear.
La discussion continue ailleurs
URL de rétrolien : https://dotclear.watch/trackback/27