diff --git a/site/plugins/admin/app/Controllers/EntriesController.php b/site/plugins/admin/app/Controllers/EntriesController.php index c3b335df..6db1f69f 100644 --- a/site/plugins/admin/app/Controllers/EntriesController.php +++ b/site/plugins/admin/app/Controllers/EntriesController.php @@ -127,7 +127,7 @@ class EntriesController extends Controller if (count($fieldsets_list) > 0) { foreach ($fieldsets_list as $fieldset) { if ($fieldset['type'] == 'file' && $fieldset['extension'] == 'yaml') { - $fieldset_content = Parser::decode(Filesystem::read($fieldset['path']), 'yaml'); + $fieldset_content = $this->parser->decode(Filesystem::read($fieldset['path']), 'yaml'); if (isset($fieldset_content['sections']) && isset($fieldset_content['sections']['main']) && isset($fieldset_content['sections']['main']['fields'])) { $fieldsets[$fieldset['basename']] = $fieldset_content['title']; } @@ -281,7 +281,7 @@ class EntriesController extends Controller if (count($_fieldsets) > 0) { foreach ($_fieldsets as $fieldset) { if ($fieldset['type'] == 'file' && $fieldset['extension'] == 'yaml') { - $fieldset_content = Parser::decode(Filesystem::read($fieldset['path']), 'yaml'); + $fieldset_content = $this->parser->decode(Filesystem::read($fieldset['path']), 'yaml'); if (isset($fieldset_content['sections']) && isset($fieldset_content['sections']['main']) && isset($fieldset_content['sections']['main']['fields'])) { $fieldsets[$fieldset['basename']] = $fieldset_content['title']; } @@ -598,7 +598,7 @@ class EntriesController extends Controller // Fieldsets for current entry template $fieldsets_path = PATH['site'] . '/fieldsets/' . (isset($entry['fieldset']) ? $entry['fieldset'] : 'default') . '.yaml'; - $fieldsets = Parser::decode(Filesystem::read($fieldsets_path), 'yaml'); + $fieldsets = $this->parser->decode(Filesystem::read($fieldsets_path), 'yaml'); is_null($fieldsets) and $fieldsets = []; if ($type == 'source') { @@ -610,7 +610,7 @@ class EntriesController extends Controller 'i' => count($parts), 'last' => Arr::last($parts), 'id' => $this->getEntryID($query), - 'data' => Parser::encode($entry, 'frontmatter'), + 'data' => $this->parser->encode($entry, 'frontmatter'), 'type' => $type, 'menu_item' => 'entries', 'links' => [ @@ -752,12 +752,12 @@ class EntriesController extends Controller // Data from POST $data = $request->getParsedBody(); - $entry = Parser::decode($data['data'], 'frontmatter'); + $entry = $this->parser->decode($data['data'], 'frontmatter'); $entry['published_by'] = Session::get('uuid'); // Update entry - if (Filesystem::write(PATH['entries'] . '/' . $id . '/entry.md', Parser::encode($entry, 'frontmatter'))) { + if (Filesystem::write(PATH['entries'] . '/' . $id . '/entry.md', $this->parser->encode($entry, 'frontmatter'))) { $this->flash->addMessage('success', __('admin_message_entry_changes_saved')); } else { $this->flash->addMessage('error', __('admin_message_entry_changes_not_saved')); diff --git a/site/plugins/admin/app/Controllers/FieldsetsController.php b/site/plugins/admin/app/Controllers/FieldsetsController.php index 53b440be..cba7ddb1 100644 --- a/site/plugins/admin/app/Controllers/FieldsetsController.php +++ b/site/plugins/admin/app/Controllers/FieldsetsController.php @@ -95,7 +95,7 @@ class FieldsetsController extends Controller [ 'menu_item' => 'fieldsets', 'id' => $request->getQueryParams()['id'], - 'data' => Parser::encode($this->fieldsets->fetch($request->getQueryParams()['id']), 'yaml'), + 'data' => $this->parser->encode($this->fieldsets->fetch($request->getQueryParams()['id']), 'yaml'), 'links' => [ 'fieldsets' => [ 'link' => $this->router->pathFor('admin.fieldsets.index'), @@ -124,7 +124,7 @@ class FieldsetsController extends Controller $id = $request->getParsedBody()['id']; $data = $request->getParsedBody()['data']; - if ($this->fieldsets->update($request->getParsedBody()['id'], Parser::decode($data, 'yaml'))) { + if ($this->fieldsets->update($request->getParsedBody()['id'], $this->parser->decode($data, 'yaml'))) { $this->flash->addMessage('success', __('admin_message_fieldset_saved')); } else { $this->flash->addMessage('error', __('admin_message_fieldset_was_not_saved')); diff --git a/site/plugins/admin/app/Controllers/PluginsController.php b/site/plugins/admin/app/Controllers/PluginsController.php index 309a55ae..118edb7e 100644 --- a/site/plugins/admin/app/Controllers/PluginsController.php +++ b/site/plugins/admin/app/Controllers/PluginsController.php @@ -62,9 +62,9 @@ class PluginsController extends Controller $data = $request->getParsedBody(); // Update settings - $plugin_settings = Parser::decode(Filesystem::read(PATH['plugins'] . '/' . $data['plugin-key'] . '/' . 'settings.yaml'), 'yaml'); + $plugin_settings = $this->parser->decode(Filesystem::read(PATH['plugins'] . '/' . $data['plugin-key'] . '/' . 'settings.yaml'), 'yaml'); Arr::set($plugin_settings, 'enabled', ($data['plugin-status'] === 'true')); - Filesystem::write(PATH['plugins'] . '/' . $data['plugin-key'] . '/' . 'settings.yaml', Parser::encode($plugin_settings, 'yaml')); + Filesystem::write(PATH['plugins'] . '/' . $data['plugin-key'] . '/' . 'settings.yaml', $this->parser->encode($plugin_settings, 'yaml')); // Clear doctrine cache $this->cache->clear('doctrine'); @@ -72,4 +72,43 @@ class PluginsController extends Controller // Redirect to plugins index page return $response->withRedirect($this->router->pathFor('admin.plugins.index')); } + + /** + * Edit plugin + * + * @param Request $request PSR7 request + * @param Response $response PSR7 response + */ + public function edit(Request $request, Response $response) : Response + { + return $this->view->render( + $response, + 'plugins/admin/views/templates/extends/plugins/edit.html', + [ + 'menu_item' => 'plugins', + 'id' => $request->getQueryParams()['id'], + 'plugin_manifest' => $this->parser->decode(Filesystem::read(PATH['plugins'] . '/' . $request->getQueryParams()['id'] . '/plugin.yaml'), 'yaml'), + 'plugin_settings' => Filesystem::read(PATH['plugins'] . '/' . $request->getQueryParams()['id'] . '/settings.yaml'), + 'links' => [ + 'plugins' => [ + 'link' => $this->router->pathFor('admin.plugins.index'), + 'title' => __('admin_plugins'), + 'attributes' => ['class' => 'navbar-item'], + ], + 'fieldsets_editor' => [ + 'link' => $this->router->pathFor('admin.plugins.edit') . '?id=' . $request->getQueryParams()['id'], + 'title' => __('admin_plugin'), + 'attributes' => ['class' => 'navbar-item active'], + ], + ], + 'buttons' => [ + 'save_entry' => [ + 'link' => 'javascript:;', + 'title' => __('admin_save'), + 'attributes' => ['class' => 'js-save-form-submit float-right btn'], + ], + ], + ] + ); + } } diff --git a/site/plugins/admin/app/Controllers/SettingsController.php b/site/plugins/admin/app/Controllers/SettingsController.php index 735d72ed..84676e06 100644 --- a/site/plugins/admin/app/Controllers/SettingsController.php +++ b/site/plugins/admin/app/Controllers/SettingsController.php @@ -143,7 +143,7 @@ class SettingsController extends Controller Arr::set($data, 'entries.media.upload_images_width', (int) $data['entries']['media']['upload_images_width']); Arr::set($data, 'entries.media.upload_images_height', (int) $data['entries']['media']['upload_images_height']); - if (Filesystem::write(PATH['config']['site'] . '/settings.yaml', Parser::encode(array_merge($this->registry->get('settings'), $data), 'yaml'))) { + if (Filesystem::write(PATH['config']['site'] . '/settings.yaml', $this->parser->encode(array_merge($this->registry->get('settings'), $data), 'yaml'))) { $this->flash->addMessage('success', __('admin_message_settings_saved')); } else { $this->flash->addMessage('error', __('admin_message_settings_was_not_saved')); diff --git a/site/plugins/admin/app/Controllers/ThemesController.php b/site/plugins/admin/app/Controllers/ThemesController.php index 98905b1c..f75a8413 100644 --- a/site/plugins/admin/app/Controllers/ThemesController.php +++ b/site/plugins/admin/app/Controllers/ThemesController.php @@ -64,9 +64,9 @@ class ThemesController extends Controller $data = $request->getParsedBody(); // Update current theme settings - $theme_settings = Parser::decode(Filesystem::read(PATH['themes'] . '/' . $data['theme-id'] . '/' . 'settings.yaml'), 'yaml'); + $theme_settings = $this->parser->decode(Filesystem::read(PATH['themes'] . '/' . $data['theme-id'] . '/' . 'settings.yaml'), 'yaml'); Arr::set($theme_settings, 'enabled', ($data['theme-status'] === 'true')); - Filesystem::write(PATH['themes'] . '/' . $data['theme-id'] . '/' . 'settings.yaml', Parser::encode($theme_settings, 'yaml')); + Filesystem::write(PATH['themes'] . '/' . $data['theme-id'] . '/' . 'settings.yaml', $this->parser->encode($theme_settings, 'yaml')); // Get themes list $themes_list = $this->themes->getThemes(); @@ -82,16 +82,16 @@ class ThemesController extends Controller continue; } - $theme_settings = Parser::decode(Filesystem::read($theme_settings_file), 'yaml'); + $theme_settings = $this->parser->decode(Filesystem::read($theme_settings_file), 'yaml'); Arr::set($theme_settings, 'enabled', false); - Filesystem::write($theme_settings_file, Parser::encode($theme_settings, 'yaml')); + Filesystem::write($theme_settings_file, $this->parser->encode($theme_settings, 'yaml')); } } // Update theme in the site settings - $settings = Parser::decode(Filesystem::read(PATH['config']['site'] . '/settings.yaml'), 'yaml'); + $settings = $this->parser->decode(Filesystem::read(PATH['config']['site'] . '/settings.yaml'), 'yaml'); Arr::set($settings, 'theme', $data['theme-id']); - Filesystem::write(PATH['config']['site'] . '/settings.yaml', Parser::encode($settings, 'yaml')); + Filesystem::write(PATH['config']['site'] . '/settings.yaml', $this->parser->encode($settings, 'yaml')); // clear cache $this->cache->clear('doctrine'); diff --git a/site/plugins/admin/app/Controllers/UsersController.php b/site/plugins/admin/app/Controllers/UsersController.php index 4fd2f349..9f1e7091 100644 --- a/site/plugins/admin/app/Controllers/UsersController.php +++ b/site/plugins/admin/app/Controllers/UsersController.php @@ -67,7 +67,7 @@ class UsersController extends Controller $data = $request->getParsedBody(); if (Filesystem::has($_user_file = PATH['site'] . '/accounts/' . $data['username'] . '.yaml')) { - $user_file = Parser::decode(Filesystem::read($_user_file), 'yaml'); + $user_file = $this->parser->decode(Filesystem::read($_user_file), 'yaml', false); if (password_verify(trim($data['password']), $user_file['hashed_password'])) { Session::set('username', $user_file['username']); Session::set('role', $user_file['role']); @@ -135,7 +135,7 @@ class UsersController extends Controller // Create admin account if (Filesystem::write( PATH['site'] . '/accounts/' . $data['username'] . '.yaml', - Parser::encode([ + $this->parser->encode([ 'username' => $this->slugify->slugify($data['username']), 'hashed_password' => password_hash($data['password'], PASSWORD_BCRYPT), 'email' => $data['email'], diff --git a/site/plugins/admin/lang/en_US.yaml b/site/plugins/admin/lang/en_US.yaml index 93658cf8..19395936 100755 --- a/site/plugins/admin/lang/en_US.yaml +++ b/site/plugins/admin/lang/en_US.yaml @@ -252,3 +252,5 @@ admin_twig_charset: "Charset" admin_twig_cache: "Cache" admin_published_at: "Published at" admin_licence: "Licence" +admin_plugin: "Plugin" +admin_icon: "Icon" diff --git a/site/plugins/admin/routes/web.php b/site/plugins/admin/routes/web.php index 29e47392..dc9fe89e 100644 --- a/site/plugins/admin/routes/web.php +++ b/site/plugins/admin/routes/web.php @@ -43,6 +43,7 @@ $app->group('/' . $admin_route, function () use ($app) : void { // Plugins Controller $app->get('/plugins', 'PluginsController:index')->setName('admin.plugins.index'); + $app->get('/plugins/edit', 'PluginsController:edit')->setName('admin.plugins.edit'); $app->post('/plugins/update-status', 'PluginsController:pluginStatusProcess')->setName('admin.plugins.update-status'); // FieldsetsController diff --git a/site/plugins/admin/views/partials/base.html b/site/plugins/admin/views/partials/base.html index 17d87a5a..d8fe49ca 100644 --- a/site/plugins/admin/views/partials/base.html +++ b/site/plugins/admin/views/partials/base.html @@ -216,6 +216,13 @@ {% endif %} + {% if is_current_path('admin.plugins.index') or + is_current_path('admin.plugins.edit') %} +
{{ tr('admin_name') }}: | +{{ plugin_manifest.name }} | +
{{ tr('admin_version') }}: | +{{ plugin_manifest.version }} | +
{{ tr('admin_description') }}: | +{{ plugin_manifest.description }} | +
{{ tr('admin_icon') }}: | +{{ plugin_manifest.icon }} | +
{{ tr('admin_author_name') }}: | +{{ plugin_manifest.author.name }} | +
{{ tr('admin_author_email') }}: | +{{ plugin_manifest.author.email }} | +
{{ tr('admin_author_url') }}: | +{{ plugin_manifest.author.url }} | +
{{ tr('admin_homepage') }}: | +{{ plugin_manifest.homepage }} | +
{{ tr('admin_bugs') }}: | +{{ plugin_manifest.bugs }} | +
{{ tr('admin_license') }}: | +{{ plugin_manifest.license }} | +