diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c6b451..e1bf851 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +2.3 - 2023.07.29 +* require Dotclear 2.27 +* require PHP 7.4+ +* use new svg icon +* update to Dotclear 2.27-dev + 2.2.1 - 2023.05.13 * require dotclear 2.26 * cleanup for dc2.26 stable diff --git a/README.md b/README.md index 1ba5caf..3a68886 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [![Release](https://img.shields.io/github/v/release/JcDenis/moreCSS)](https://github.com/JcDenis/moreCSS/releases) [![Date](https://img.shields.io/github/release-date/JcDenis/moreCSS)](https://github.com/JcDenis/moreCSS/releases) [![Issues](https://img.shields.io/github/issues/JcDenis/moreCSS)](https://github.com/JcDenis/moreCSS/issues) -[![Dotclear](https://img.shields.io/badge/dotclear-v2.26-blue.svg)](https://fr.dotclear.org/download) +[![Dotclear](https://img.shields.io/badge/dotclear-v2.27-blue.svg)](https://fr.dotclear.org/download) [![Dotaddict](https://img.shields.io/badge/dotaddict-official-green.svg)](https://plugins.dotaddict.org/dc2/details/moreCSS) [![License](https://img.shields.io/github/license/JcDenis/moreCSS)](https://github.com/JcDenis/moreCSS/blob/master/LICENSE) @@ -19,8 +19,9 @@ without editing it. _moreCSS_ requires: - * content admin permissions to manage CSS - * Dotclear 2.26 + * content admin permissions to manage CSS + * Dotclear 2.27 + * PHP 7.4+ ## USAGE diff --git a/_define.php b/_define.php index 83e1651..589e7aa 100644 --- a/_define.php +++ b/_define.php @@ -10,7 +10,7 @@ * @copyright Jean-Christian Denis * @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html */ -if (!defined('DC_RC_PATH') || is_null(dcCore::app()->auth)) { +if (!defined('DC_RC_PATH')) { return null; } @@ -18,9 +18,9 @@ $this->registerModule( 'Style sheet', 'Another CSS stylesheet for the active theme', 'Osku and contributors', - '2.2.1', + '2.3', [ - 'requires' => [['core', '2.26']], + 'requires' => [['core', '2.27']], 'permissions' => dcCore::app()->auth->makePermissions([ dcCore::app()->auth::PERMISSION_CONTENT_ADMIN, ]), diff --git a/dcstore.xml b/dcstore.xml index 57409e3..a54588e 100644 --- a/dcstore.xml +++ b/dcstore.xml @@ -2,11 +2,11 @@ Style sheet - 2.2.1 + 2.3 Osku and contributors Another CSS stylesheet for the active theme - https://github.com/JcDenis/moreCSS/releases/download/v2.2.1/plugin-moreCSS.zip - 2.26 + https://github.com/JcDenis/moreCSS/releases/download/v2.3/plugin-moreCSS.zip + 2.27 https://plugins.dotaddict.org/dc2/details/moreCSS http://forum.dotclear.org/viewtopic.php?id=44908 diff --git a/src/Backend.php b/src/Backend.php index 9b53c85..fc8ef90 100644 --- a/src/Backend.php +++ b/src/Backend.php @@ -14,44 +14,34 @@ declare(strict_types=1); namespace Dotclear\Plugin\moreCSS; -use dcAdmin; use dcCore; -use dcFavorites; -use dcNsProcess; -use dcPage; +use Dotclear\Core\Process; +use Dotclear\Core\Backend\{ + Favorites, + Menus +}; -class Backend extends dcNsProcess +class Backend extends Process { public static function init(): bool { - static::$init = defined('DC_CONTEXT_ADMIN'); - - return static::$init; + return self::status(My::checkContext(My::BACKEND)); } public static function process(): bool { - if (!static::$init || is_null(dcCore::app()->auth) || is_null(dcCore::app()->blog) || is_null(dcCore::app()->adminurl)) { + if (!self::status()) { return false; } - dcCore::app()->menu[dcAdmin::MENU_BLOG]->addItem( - My::name(), - dcCore::app()->adminurl->get('admin.plugin.' . My::id()), - [dcPage::getPF(My::id() . '/icon.svg')], - preg_match('/' . preg_quote((string) dcCore::app()->adminurl->get('admin.plugin.' . My::id())) . '(&.*)?$/', $_SERVER['REQUEST_URI']), - dcCore::app()->auth->check(dcCore::app()->auth->makePermissions([dcCore::app()->auth::PERMISSION_CONTENT_ADMIN]), dcCore::app()->blog->id) - ); + My::addBackendMenuItem(Menus::MENU_BLOG); - dcCore::app()->addBehavior('adminDashboardFavoritesV2', function (dcFavorites $favs): void { - if (is_null(dcCore::app()->auth) || is_null(dcCore::app()->adminurl)) { - return; - } + dcCore::app()->addBehavior('adminDashboardFavoritesV2', function (Favorites $favs): void { $favs->register(My::id(), [ 'title' => My::name(), - 'url' => dcCore::app()->adminurl->get('admin.plugin.' . My::id()), - 'small-icon' => [dcPage::getPF(My::id() . '/icon.svg')], - 'large-icon' => [dcPage::getPF(My::id() . '/icon.svg')], + 'url' => My::manageUrl(), + 'small-icon' => My::icons(), + 'large-icon' => My::icons(), 'permissions' => dcCore::app()->auth->makePermissions([dcCore::app()->auth::PERMISSION_CONTENT_ADMIN]), ]); }); diff --git a/src/Frontend.php b/src/Frontend.php index 26f8724..617cc65 100644 --- a/src/Frontend.php +++ b/src/Frontend.php @@ -15,28 +15,23 @@ declare(strict_types=1); namespace Dotclear\Plugin\moreCSS; use dcCore; -use dcNsProcess; use dcUtils; +use Dotclear\Core\Process; -class Frontend extends dcNsProcess +class Frontend extends Process { public static function init(): bool { - static::$init = defined('DC_RC_PATH'); - - return static::$init; + return self::status(My::checkContext(My::FRONTEND)); } public static function process(): bool { - if (!static::$init || is_null(dcCore::app()->blog) || !dcCore::app()->blog->settings->get('themes')->get('morecss_active')) { + if (!self::status() || !dcCore::app()->blog->settings->get('themes')->get('morecss_active')) { return false; } dcCore::app()->addBehavior('publicHeadContent', function (): void { - if (is_null(dcCore::app()->blog)) { - return; - } $css = (string) base64_decode((string) dcCore::app()->blog->settings->get('themes')->get('morecss_min')); if (!empty($css)) { echo dcUtils::cssLoad( diff --git a/src/Install.php b/src/Install.php index 3918d4f..0339cc9 100644 --- a/src/Install.php +++ b/src/Install.php @@ -15,22 +15,19 @@ declare(strict_types=1); namespace Dotclear\Plugin\moreCSS; use dcCore; -use dcNsProcess; +use Dotclear\Core\Process; use Exception; -class Install extends dcNsProcess +class Install extends Process { public static function init(): bool { - static::$init = defined('DC_CONTEXT_ADMIN') - && dcCore::app()->newVersion(My::id(), dcCore::app()->plugins->moduleInfo(My::id(), 'version')); - - return static::$init; + return self::status(My::checkContext(My::INSTALL)); } public static function process(): bool { - if (!static::$init || is_null(dcCore::app()->blog)) { + if (!self::status() || is_null(dcCore::app()->blog)) { return false; } diff --git a/src/Manage.php b/src/Manage.php index 45423c9..4f4de29 100644 --- a/src/Manage.php +++ b/src/Manage.php @@ -15,8 +15,11 @@ declare(strict_types=1); namespace Dotclear\Plugin\moreCSS; use dcCore; -use dcNsProcess; -use dcPage; +use Dotclear\Core\Process; +use Dotclear\Core\Backend\{ + Notices, + Page +}; use Dotclear\Helper\Html\Form\{ Checkbox, Form, @@ -29,22 +32,16 @@ use Dotclear\Helper\Html\Form\{ use Dotclear\Helper\Html\Html; use Exception; -class Manage extends dcNsProcess +class Manage extends Process { public static function init(): bool { - static::$init = defined('DC_CONTEXT_ADMIN') - && !is_null(dcCore::app()->auth) && !is_null(dcCore::app()->blog) - && dcCore::app()->auth->check(dcCore::app()->auth->makePermissions([ - dcCore::app()->auth::PERMISSION_CONTENT_ADMIN, - ]), dcCore::app()->blog->id); - - return static::$init; + return self::status(My::checkContext(My::MANAGE)); } public static function process(): bool { - if (!static::$init || is_null(dcCore::app()->blog) || is_null(dcCore::app()->adminurl)) { + if (!self::status()) { return false; } @@ -68,12 +65,10 @@ class Manage extends dcNsProcess $css_min = str_replace([' , ', ' ,', ', '], ',', $css_min); $s->put('morecss_min', base64_encode($css_min)); - dcPage::addSuccessNotice( + Notices::addSuccessNotice( __('Configuration successfully updated.') ); - dcCore::app()->adminurl->redirect( - 'admin.plugin.' . My::id() - ); + My::redirect(); } catch (Exception $e) { dcCore::app()->error->add($e->getMessage()); } @@ -84,28 +79,28 @@ class Manage extends dcNsProcess public static function render(): void { - if (!static::$init || is_null(dcCore::app()->auth) || is_null(dcCore::app()->auth->user_prefs) || is_null(dcCore::app()->blog)) { + if (!self::status()) { return; } $s = dcCore::app()->blog->settings->get('themes'); - dcPage::openModule( + Page::openModule( My::name(), ( dcCore::app()->auth->user_prefs->get('interface')->get('colorsyntax') ? - dcPage::jsJson('dotclear_colorsyntax', ['colorsyntax' => dcCore::app()->auth->user_prefs->get('interface')->get('colorsyntax')]) . - dcPage::jsLoadCodeMirror(dcCore::app()->auth->user_prefs->get('interface')->get('colorsyntax_theme')) + Page::jsJson('dotclear_colorsyntax', ['colorsyntax' => dcCore::app()->auth->user_prefs->get('interface')->get('colorsyntax')]) . + Page::jsLoadCodeMirror(dcCore::app()->auth->user_prefs->get('interface')->get('colorsyntax_theme')) : '' ) ); echo - dcPage::breadcrumb([ + Page::breadcrumb([ Html::escapeHTML(dcCore::app()->blog->name) => '', My::name() => '', ]) . - dcPage::notices() . + Notices::getNotices() . (new Form('file-form'))->method('post')->action(dcCore::app()->admin->getPageURL())->fields([ (new Para())->items([ @@ -125,11 +120,11 @@ class Manage extends dcNsProcess if (dcCore::app()->auth->user_prefs->get('interface')->get('colorsyntax')) { echo - dcPage::jsJson('theme_editor_mode', ['mode' => 'css']) . - dcPage::jsModuleLoad('themeEditor/js/mode.js') . - dcPage::jsRunCodeMirror('editor', 'morecss', 'dotclear', dcCore::app()->auth->user_prefs->get('interface')->get('colorsyntax_theme')); + Page::jsJson('theme_editor_mode', ['mode' => 'css']) . + Page::jsLoad(dcCore::app()->blog->getPF('themeEditor/js/mode.js')) . + Page::jsRunCodeMirror('editor', 'morecss', 'dotclear', dcCore::app()->auth->user_prefs->get('interface')->get('colorsyntax_theme')); } - dcPage::closeModule(); + Page::closeModule(); } } diff --git a/src/My.php b/src/My.php index fae9e31..010702c 100644 --- a/src/My.php +++ b/src/My.php @@ -15,35 +15,17 @@ declare(strict_types=1); namespace Dotclear\Plugin\moreCSS; use dcCore; +use Dotclear\Module\MyPlugin; /** * This module definitions. */ -class My +class My extends MyPlugin { - /** - * This module id. - */ - public static function id(): string + public static function checkCustomContext(int $context): ?bool { - return basename(dirname(__DIR__)); - } - - /** - * This module name. - */ - public static function name(): string - { - $name = dcCore::app()->plugins->moduleInfo(self::id(), 'name'); - - return __(is_string($name) ? $name : self::id()); - } - - /** - * This module path. - */ - public static function path(): string - { - return dirname(__DIR__); + return in_array($context, [My::BACKEND, My::MENU]) ? + dcCore::app()->auth->check(dcCore::app()->auth->makePermissions([dcCore::app()->auth::PERMISSION_CONTENT_ADMIN]), dcCore::app()->blog->id) + : null; } } diff --git a/src/Prepend.php b/src/Prepend.php index c2ebcf7..0e65772 100644 --- a/src/Prepend.php +++ b/src/Prepend.php @@ -15,20 +15,18 @@ declare(strict_types=1); namespace Dotclear\Plugin\moreCSS; use dcCore; -use dcNsProcess; +use Dotclear\Core\Process; -class Prepend extends dcNsProcess +class Prepend extends Process { public static function init(): bool { - static::$init = defined('DC_RC_PATH'); - - return static::$init; + return self::status(My::checkContext(My::PREPEND)); } public static function process(): bool { - if (!static::$init) { + if (!self::status()) { return false; } @@ -37,9 +35,6 @@ class Prepend extends dcNsProcess 'morecss.css', '^morecss\.css(.*?)$', function (string $args): void { - if (is_null(dcCore::app()->blog)) { - return; - } header('Content-Type: text/css; charset=UTF-8'); echo "/* CSS for plugin moreCss */ \n"; diff --git a/src/Uninstall.php b/src/Uninstall.php index 64d3e05..a33d25c 100644 --- a/src/Uninstall.php +++ b/src/Uninstall.php @@ -15,21 +15,19 @@ declare(strict_types=1); namespace Dotclear\Plugin\moreCSS; use dcCore; -use dcNsProcess; +use Dotclear\Core\Process; use Dotclear\Plugin\Uninstaller\Uninstaller; -class Uninstall extends dcNsProcess +class Uninstall extends Process { public static function init(): bool { - static::$init = defined('DC_CONTEXT_ADMIN'); - - return static::$init; + return self::status(My::checkContext(My::UNINSTALL)); } public static function process(): bool { - if (!static::$init || !dcCore::app()->plugins->moduleExists('Uninstaller')) { + if (!self::status() || !dcCore::app()->plugins->moduleExists('Uninstaller')) { return false; }