Compare commits

...

3 Commits

12 changed files with 161 additions and 180 deletions

View File

@ -1,62 +1,83 @@
2023.05.13
- require dotclea r2.26
- require php 8.1
- use define php_min
- fix dump() method
licenseBootstrap 2023.08.14
===========================================================
* Require Dotclear 2.27
* Require PHP 8.1
* Upgrade to Dotclear 2.27 stable
* Move third party repository
* Use Dotclear style for CHANGELOG
2023.04.22
- require dotclea r2.26
- require php 8.1
- add plugin Uninstaller features
- use latest helper namespace
- fix nullsafe warnings
licenseBootstrap 2023.05.13
===========================================================
* require dotclea r2.26
* require php 8.1
* use define php_min
* fix dump() method
2023.03.25
- require dotclea r2.26
- require php 8.1
- use namespace
licenseBootstrap 2023.04.22
===========================================================
* require dotclea r2.26
* require php 8.1
* add plugin Uninstaller features
* use latest helper namespace
* fix nullsafe warnings
2022.12.22
- add wtfpl license
- use SVG icon
- use anonymous function
- use abstract plugin id
- change serialize stuff into json stuff
- fix pacKman behavoir dis|enable
- fix autoload
- fix permissions
- fix install
licenseBootstrap 2023.03.25
===========================================================
* require dotclea r2.26
* require php 8.1
* use namespace
2022.11.20
- fix compatibility with Dotclear 2.24 (required)
licenseBootstrap 2022.12.22
===========================================================
* add wtfpl license
* use SVG icon
* use anonymous function
* use abstract plugin id
* change serialize stuff into json stuff
* fix pacKman behavoir dis|enable
* fix autoload
* fix permissions
* fix install
2021.09.10
- clean up code
- Tested for Dotclear 2.19
licenseBootstrap 2022.11.20
===========================================================
* fix compatibility with Dotclear 2.24 (required)
2013.12.01
- Fix install
- Fix user info
licenseBootstrap 2021.09.10
===========================================================
* clean up code
* Tested for Dotclear 2.19
2013.10.29
- Fix full license bug
- Fix french help and support links
licenseBootstrap 2013.12.01
===========================================================
* Fix install
* Fix user info
2013.10.28
- Switched to DC 2.6
- New icon
- Add dashboard icon
- Clean up code and (again) lighter admin interface
licenseBootstrap 2013.10.29
===========================================================
* Fix full license bug
* Fix french help and support links
2013.05.11
- Fixed page title and messages and contents
licenseBootstrap 2013.10.28
===========================================================
* Switched to DC 2.6
* New icon
* Add dashboard icon
* Clean up code and (again) lighter admin interface
0.3 - 2010.06.05
- Switched to DC 2.2
- Changed admin interface (easy, light, fast)
licenseBootstrap 2013.05.11
===========================================================
* Fixed page title and messages and contents
0.2 - 2009.11.09
- Changed lots of things
licenseBootstrap 0.3 - 2010.06.05
===========================================================
* Switched to DC 2.2
* Changed admin interface (easy, light, fast)
0.1 - 2009.10.09
- First lab release
licenseBootstrap 0.2 - 2009.11.09
===========================================================
* Changed lots of things
licenseBootstrap 0.1 - 2009.10.09
===========================================================
* First lab release

View File

@ -1,15 +1,14 @@
# README
[![Release](https://img.shields.io/github/v/release/JcDenis/licenseBootstrap)](https://github.com/JcDenis/licenseBootstrap/releases)
[![Date](https://img.shields.io/github/release-date/JcDenis/licenseBootstrap)](https://github.com/JcDenis/licenseBootstrap/releases)
[![Issues](https://img.shields.io/github/issues/JcDenis/licenseBootstrap)](https://github.com/JcDenis/licenseBootstrap/issues)
[![Dotclear](https://img.shields.io/badge/dotclear-v2.26-blue.svg)](https://fr.dotclear.org/download)
[![Dotaddict](https://img.shields.io/badge/dotaddict-official-green.svg)](https://plugins.dotaddict.org/dc2/details/licenseBootstrap)
[![License](https://img.shields.io/github/license/JcDenis/licenseBootstrap)](https://github.com/JcDenis/licenseBootstrap/blob/master/LICENSE)
[![Release](https://img.shields.io/badge/release-2023.08.15-a2cbe9.svg)](https://git.dotclear.watch/JcDenis/licenseBootstrap/releases)
[![Date](https://img.shields.io/badge/date-2023.08.14-c44d58.svg)](https://git.dotclear.watch/JcDenis/licenseBootstrap/releases)
[![Dotclear](https://img.shields.io/badge/dotclear-v2.27-137bbb.svg)](https://fr.dotclear.org/download)
[![Dotaddict](https://img.shields.io/badge/dotaddict-official-9ac123.svg)](https://plugins.dotaddict.org/dc2/details/licenseBootstrap)
[![License](https://img.shields.io/github/license/JcDenis/licenseBootstrap)](https://git.dotclear.watch/JcDenis/licenseBootstrap/blob/master/LICENSE)
## WHAT IS LICENSEBOOTSTRAP ?
licenseBootstrap is a plugins for the open-source
_licenseBootstrap_ is a plugins for the open-source
web publishing software called Dotclear.
It help super admin to add license to their
@ -17,15 +16,15 @@ themes and plugins from Dotclear administration pages.
## REQUIREMENTS
licenseBootstrap requires:
_licenseBootstrap_ requires:
* Super administrator permissions
* Dotclear 2.26
* Php >= 8.1
* Super administrator permissions
* Dotclear 2.26
* Php 8.1+
## USAGE
First install licenseBootstrap, mannualy from a zip package or from
First install _licenseBootstrap_, mannualy from a zip package or from
Dotaddict repository. (See Dotclear's documentation to know how do this)
Go to ''plugins manager'', expand licenseBootstrap information then
@ -34,18 +33,18 @@ go to ''configure plugin'', fill in form.
Once it's done you can manage your modules license from menu
''License bootstrap'' on sidebar or you can add dashboard icon.
By default, licenseBootstrap uses old style code blocs,
By default, _licenseBootstrap_ uses old style code blocs,
if you want a modern style you should use a more recent plugin
like the one called ''improve''.
## LINKS
* License : [GNU GPL v2](https://www.gnu.org/licenses/old-licenses/lgpl-2.0.html)
* Source & contribution : [GitHub Page](https://github.com/licenseBootstrap)
* Packages & details : [Dotaddict Page](https://plugins.dotaddict.org/dc2/details/licenseBootstrap)
* License : [GNU GPL v2](https://www.gnu.org/licenses/old-licenses/lgpl-2.0.html)
* Source & contribution : [Gitea Page](https://git.dotclear.watch/JcDenis/licenseBootstrap) or [GitHub Page](https://github.com/JcDenis/licenseBootstrap)
* Packages & details: [Gitea Page](https://git.dotclear.watch/JcDenis/licenseBootstrap/releases) or [Dotaddict Page](https://plugins.dotaddict.org/dc2/details/licenseBootstrap)
## CONTRIBUTORS
* Jean-Christian Denis
* Jean-Christian Denis (author)
You are welcome to contribute to this code.
You are welcome to contribute to this code.

View File

@ -18,7 +18,7 @@ $this->registerModule(
'License bootstrap',
'Add license to your plugins and themes',
'Jean-Christian Denis',
'2023.05.13',
'2023.08.15',
[
'requires' => [
['php', '8.1'],
@ -26,8 +26,8 @@ $this->registerModule(
],
'permissions' => null,
'type' => 'plugin',
'support' => 'https://github.com/JcDenis/' . basename(__DIR__),
'details' => 'https://plugins.dotaddict.org/dc2/details/' . basename(__DIR__),
'repository' => 'https://raw.githubusercontent.com/JcDenis/' . basename(__DIR__) . '/master/dcstore.xml',
'support' => 'https://git.dotclear.watch/JcDenis/' . basename(__DIR__) . '/issues',
'details' => 'https://git.dotclear.watch/JcDenis/' . basename(__DIR__) . '/src/branch/master/README.md',
'repository' => 'https://git.dotclear.watch/JcDenis/' . basename(__DIR__) . '/raw/branch/master/dcstore.xml',
]
);

View File

@ -2,12 +2,12 @@
<modules xmlns:da="http://dotaddict.org/da/">
<module id="licenseBootstrap">
<name>License bootstrap</name>
<version>2023.05.13</version>
<version>2023.08.15</version>
<author>Jean-Christian Denis</author>
<desc>Add license to your plugins and themes</desc>
<file>https://github.com/JcDenis/licenseBootstrap/releases/download/v2023.05.13/plugin-licenseBootstrap.zip</file>
<file>https://git.dotclear.watch/JcDenis/licenseBootstrap/releases/download/v2023.08.15/plugin-licenseBootstrap.zip</file>
<da:dcmin>2.26</da:dcmin>
<da:details>https://plugins.dotaddict.org/dc2/details/licenseBootstrap</da:details>
<da:support>https://github.com/JcDenis/licenseBootstrap</da:support>
<da:details>https://git.dotclear.watch/JcDenis/licenseBootstrap/src/branch/master/README.md</da:details>
<da:support>https://git.dotclear.watch/JcDenis/licenseBootstrap/issues</da:support>
</module>
</modules>

View File

@ -14,37 +14,37 @@ declare(strict_types=1);
namespace Dotclear\Plugin\licenseBootstrap;
use dcAdmin;
use dcCore;
use dcFavorites;
use dcNsProcess;
use dcPage;
use Dotclear\Core\Backend\Favorites;
use Dotclear\Core\Process;
class Backend extends dcNsProcess
class Backend extends Process
{
public static function init(): bool
{
static::$init = defined('DC_CONTEXT_ADMIN')
&& dcCore::app()->auth?->isSuperAdmin();
return static::$init;
return self::status(My::checkContext(My::BACKEND));
}
public static function process(): bool
{
if (!static::$init) {
if (!self::status()) {
return false;
}
My::addBackendMenuItem();
dcCore::app()->addBehaviors([
'adminDashboardFavoritesV2' => function (dcFavorites $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'),
//'permissions' => dcCore::app()->auth->isSuperAdmin(),
]);
'adminDashboardFavoritesV2' => function (Favorites $favs): void {
$favs->register(
My::id(),
[
'title' => My::name(),
'url' => My::manageUrl(),
'small-icon' => My::icons(),
'large-icon' => My::icons(),
//'permissions' => null,
]
);
},
'packmanBeforeCreatePackage' => function ($module) {
if (Settings::init()->behavior_packman) {
@ -53,14 +53,6 @@ class Backend extends dcNsProcess
},
]);
dcCore::app()->menu[dcAdmin::MENU_PLUGINS]->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?->isSuperAdmin()
);
return true;
}
}

View File

@ -15,8 +15,8 @@ declare(strict_types=1);
namespace Dotclear\Plugin\licenseBootstrap;
use dcCore;
use dcPage;
use dcNsProcess;
use Dotclear\Core\Backend\Notices;
use Dotclear\Core\Process;
use Dotclear\Helper\Html\Form\{
Checkbox,
Div,
@ -29,19 +29,16 @@ use Dotclear\Helper\Html\Form\{
};
use Exception;
class Config extends dcNsProcess
class Config extends Process
{
public static function init(): bool
{
static::$init == defined('DC_CONTEXT_ADMIN')
&& dcCore::app()->auth?->isSuperAdmin();
return static::$init;
return self::status(My::checkContext(My::CONFIG));
}
public static function process(): bool
{
if (!static::$init) {
if (!self::status()) {
return false;
}
@ -68,10 +65,10 @@ class Config extends dcNsProcess
$s->writeSetting('license_name', Utils::getName($license_name));
$s->writeSetting('license_head', Utils::encode($license_head));
dcPage::addSuccessNotice(
Notices::addSuccessNotice(
__('Configuration has been successfully updated.')
);
dcCore::app()->adminurl?->redirect('admin.plugins', [
dcCore::app()->admin->url->redirect('admin.plugins', [
'module' => My::id(),
'conf' => '1',
'redir' => dcCore::app()->admin->__get('list')->getRedir(),
@ -85,7 +82,7 @@ class Config extends dcNsProcess
public static function render(): void
{
if (!static::$init) {
if (!self::status()) {
return;
}

View File

@ -16,22 +16,19 @@ namespace Dotclear\Plugin\licenseBootstrap;
use dcCore;
use dcNamespace;
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) {
if (!self::status()) {
return false;
}

View File

@ -15,9 +15,12 @@ declare(strict_types=1);
namespace Dotclear\Plugin\licenseBootstrap;
use dcCore;
use dcPage;
use dcThemes;
use dcNsProcess;
use Dotclear\Core\Backend\{
Notices,
Page
};
use Dotclear\Core\Process;
use Dotclear\Helper\Html\Html;
use Dotclear\Helper\Html\Form\{
Checkbox,
@ -31,19 +34,16 @@ use Dotclear\Helper\File\Path;
use Dotclear\Helper\Network\Http;
use Exception;
class Manage extends dcNsProcess
class Manage extends Process
{
public static function init(): bool
{
static::$init = defined('DC_CONTEXT_ADMIN')
&& dcCore::app()->auth?->isSuperAdmin();
return static::$init;
return self::status(My::checkContext(My::MANAGE));
}
public static function process(): bool
{
if (!static::$init) {
if (!self::status()) {
return false;
}
@ -75,13 +75,14 @@ class Manage extends dcNsProcess
Utils::addLicense($module);
}
dcPage::addSuccessNotice(
Notices::addSuccessNotice(
__('License successfully added.')
);
Http::redirect(
empty($_POST['redir']) ?
dcCore::app()->admin->getPageURL() : $_POST['redir']
);
if (empty($_POST['redir'])) {
My::redirect();
} else {
Http::redirect($_POST['redir']);
};
} catch(Exception $e) {
dcCore::app()->error->add($e->getMessage());
}
@ -91,28 +92,28 @@ class Manage extends dcNsProcess
public static function render(): void
{
if (!static::$init) {
if (!self::status()) {
return;
}
$m = self::loadModules();
# Display
dcPage::openModule(
Page::openModule(
My::name(),
dcPage::jsPageTabs() .
dcPage::jsModuleLoad(My::id() . '/js/licensebootstrap.js') .
Page::jsPageTabs() .
My::jsLoad('licensebootstrap') .
# --BEHAVIOR-- licenseBootstrapAdminHeader
dcCore::app()->callBehavior('licenseBootstrapAdminHeader')
);
echo
dcPage::breadcrumb([
Page::breadcrumb([
__('Plugins') => '',
My::name() => '',
]) .
dcPage::notices();
Notices::getNotices();
self::displayModulesList(
$m['plugins']->getModules(),
@ -126,9 +127,9 @@ class Manage extends dcNsProcess
__('Installed themes')
);
dcPage::helpBlock('licenseBootstrap');
Page::helpBlock('licenseBootstrap');
dcPage::closeModule();
Page::closeModule();
}
private static function displayModulesList(array $modules, string $type, string $title): void
@ -185,6 +186,7 @@ class Manage extends dcNsProcess
'<p class="checkboxes-helpers"></p>' .
(new Para())->items([
(new Hidden(['redir'], empty($_REQUEST['redir']) ? '' : Html::escapeHTML($_REQUEST['redir']))),
(new Hidden(['process'], 'Plugin')),
(new Hidden(['p'], My::id())),
(new Hidden(['type'], $type)),
(new Hidden(['action'], 'addlicense')),

View File

@ -15,38 +15,19 @@ declare(strict_types=1);
namespace Dotclear\Plugin\licenseBootstrap;
use dcCore;
use Dotclear\Module\MyPlugin;
/**
* This module definitions.
*/
class My
class My extends MyPlugin
{
/** @var string Licenses default templates folder name */
public const TEMPLATE_FOLDER = 'licenses';
/**
* This module id.
*/
public static function id(): string
protected 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 $context === My::INSTALL ? null :
defined('DC_CONTEXT_ADMIN') && dcCore::app()->auth->isSuperAdmin();
}
}

View File

@ -14,8 +14,6 @@ declare(strict_types=1);
namespace Dotclear\Plugin\licenseBootstrap;
use dcCore;
class Settings
{
/** @var Settings self instance */
@ -53,7 +51,7 @@ class Settings
*/
public function __construct()
{
$s = dcCore::app()->blog?->settings->get(My::id());
$s = My::settings();
$this->hide_distrib = (bool) ($s?->get('hide_distrib') ?? false);
$this->overwrite = (bool) ($s?->get('overwrite') ?? false);
@ -91,8 +89,8 @@ class Settings
public function writeSetting(string $key, mixed $value): bool
{
if (property_exists($this, $key) && settype($value, gettype($this->{$key})) === true) {
dcCore::app()->blog?->settings->get(My::id())->drop($key);
dcCore::app()->blog?->settings->get(My::id())->put($key, $value, gettype($this->{$key}), '', true, true);
My::settings()->drop($key);
My::settings()->put($key, $value, gettype($this->{$key}), '', true, true);
return true;
}

View File

@ -15,21 +15,19 @@ declare(strict_types=1);
namespace Dotclear\Plugin\licenseBootstrap;
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;
}

View File

@ -34,10 +34,6 @@ class Utils
*/
public static function addLicense(array $module): void
{
if (is_null(dcCore::app()->auth)) {
return;
}
$s = Settings::init();
# --BEHAVIOR-- licenseBootstrapBeforeAddLicense