mirror of
https://github.com/getgrav/grav-plugin-admin.git
synced 2025-11-02 11:26:04 +01:00
Show any configuration item Grav finds under user/config, if there is an associated blueprint provided
Also, organize current system/site/info files under a common config.html.twig. Delete info/site/system twig files. Preserve BC by setting the template of system/site/info to "config", in the pages.
This commit is contained in:
@@ -335,6 +335,15 @@ class Admin
|
|||||||
$obj = User::load(preg_replace('|users/|', '', $type));
|
$obj = User::load(preg_replace('|users/|', '', $type));
|
||||||
$obj->merge($post);
|
$obj->merge($post);
|
||||||
|
|
||||||
|
$data[$type] = $obj;
|
||||||
|
} elseif (preg_match('|config/|', $type)) {
|
||||||
|
$type = preg_replace('|config/|', '', $type);
|
||||||
|
$blueprints = $this->blueprints("config/{$type}");
|
||||||
|
$config = $this->grav['config'];
|
||||||
|
$obj = new Data\Data($config->get($type), $blueprints);
|
||||||
|
$obj->merge($post);
|
||||||
|
$file = CompiledYamlFile::instance($this->grav['locator']->findResource("config://{$type}.yaml"));
|
||||||
|
$obj->file($file);
|
||||||
$data[$type] = $obj;
|
$data[$type] = $obj;
|
||||||
} else {
|
} else {
|
||||||
throw new \RuntimeException("Data type '{$type}' doesn't exist!");
|
throw new \RuntimeException("Data type '{$type}' doesn't exist!");
|
||||||
@@ -706,6 +715,29 @@ class Admin
|
|||||||
return $languages;
|
return $languages;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the configuration files found
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function configurations()
|
||||||
|
{
|
||||||
|
$configurations = [];
|
||||||
|
$path = $this->grav['locator']->findResource('user://config');
|
||||||
|
|
||||||
|
/** @var \DirectoryIterator $directory */
|
||||||
|
foreach (new \DirectoryIterator($path) as $file) {
|
||||||
|
if ($file->isDir() || $file->isDot() || $file->getBasename()[0] == '.') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$configurations[] = basename($file->getBasename(), '.yaml');
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return $configurations;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the languages available in the site
|
* Return the languages available in the site
|
||||||
*
|
*
|
||||||
|
|||||||
0
pages/admin/config.md
Normal file
0
pages/admin/config.md
Normal file
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: PHP Info
|
title: PHP Info
|
||||||
|
template: config
|
||||||
access:
|
access:
|
||||||
admin.settings: true
|
admin.settings: true
|
||||||
admin.super: true
|
admin.super: true
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Site Settings
|
title: Site Settings
|
||||||
|
template: config
|
||||||
access:
|
access:
|
||||||
admin.settings: true
|
admin.settings: true
|
||||||
admin.super: true
|
admin.super: true
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Configuration
|
title: Configuration
|
||||||
|
template: config
|
||||||
access:
|
access:
|
||||||
admin.configuration: true
|
admin.configuration: true
|
||||||
admin.super: true
|
admin.super: true
|
||||||
|
|||||||
72
themes/grav/templates/config.html.twig
Normal file
72
themes/grav/templates/config.html.twig
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
{% extends 'partials/base.html.twig' %}
|
||||||
|
|
||||||
|
{% set config_slug = uri.basename %}
|
||||||
|
{% set isInfo = (config_slug == 'info') %}
|
||||||
|
|
||||||
|
{% set title = "PLUGIN_ADMIN.CONFIGURATION"|tu ~ ": " ~ ("PLUGIN_ADMIN." ~ config_slug|upper)|tu %}
|
||||||
|
|
||||||
|
{% if not isInfo %}
|
||||||
|
{% set data = admin.data('config/' ~ config_slug) %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% block stylesheets %}
|
||||||
|
{% do assets.addCss(theme_url~'/css/codemirror/codemirror.css') %}
|
||||||
|
{{ parent() }}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block javascripts %}
|
||||||
|
{% do assets.addJs(theme_url~'/js/codemirror-compressed.js') %}
|
||||||
|
{% do assets.addJs(theme_url~'/js/mdeditor.js') %}
|
||||||
|
{{ parent() }}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block titlebar %}
|
||||||
|
<div class="button-bar">
|
||||||
|
<a class="button" href="{{ base_url }}"><i class="fa fa-reply"></i> {{ "PLUGIN_ADMIN.BACK"|tu }}</a>
|
||||||
|
<button class="button" type="submit" name="task" value="save" form="blueprints"><i class="fa fa-check"></i> {{ "PLUGIN_ADMIN.SAVE"|tu }}</button>
|
||||||
|
</div>
|
||||||
|
<h1><i class="fa fa-fw fa-wrench"></i> {{ "PLUGIN_ADMIN.CONFIGURATION"|tu }} - {{ ("PLUGIN_ADMIN." ~ config_slug|upper)|tu }}</h1>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block content_top %}
|
||||||
|
<div class="alert notice">{{ "PLUGIN_ADMIN.SAVE_LOCATION"|tu }}: <b>{{ data.file.filename|replace({(base_path):''}) }}</b></div>
|
||||||
|
<ul class="tab-bar">
|
||||||
|
<li {% if config_slug == 'system' %}class="active"{% endif %}>
|
||||||
|
{% if config_slug == 'system' %}<span>{% else %}<a href="{{ base_url_relative }}/config/system">{% endif %}
|
||||||
|
{{ "PLUGIN_ADMIN.SYSTEM"|tu }}
|
||||||
|
{% if config_slug == 'system' %}</span>{% else %}</a>{% endif %}
|
||||||
|
</li>
|
||||||
|
<li {% if config_slug == 'site' %}class="active"{% endif %}>
|
||||||
|
{% if config_slug == 'site' %}<span>{% else %}<a href="{{ base_url_relative }}/config/site">{% endif %}
|
||||||
|
{{ "PLUGIN_ADMIN.SITE"|tu }}
|
||||||
|
{% if config_slug == 'site' %}</span>{% else %}</a>{% endif %}
|
||||||
|
</li>
|
||||||
|
|
||||||
|
{% for configuration in admin.configurations %}
|
||||||
|
{% if configuration != 'system' and configuration != 'site' and admin.data('config/' ~ configuration).blueprints.fields is not empty %}
|
||||||
|
<li {% if config_slug == configuration %}class="active"{% endif %}>
|
||||||
|
{% if config_slug == configuration %}<span>{% else %}<a href="{{ base_url_relative }}/config/{{configuration}}">{% endif %}
|
||||||
|
{{ configuration|tu|capitalize }}
|
||||||
|
{% if config_slug == configuration %}</span>{% else %}</a>{% endif %}
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
<li {% if config_slug == 'info' %}class="active"{% endif %}>
|
||||||
|
{% if config_slug == 'info' %}<span>{% else %}<a href="{{ base_url_relative }}/config/info">{% endif %}
|
||||||
|
{{ "PLUGIN_ADMIN.INFO"|tu }}
|
||||||
|
{% if config_slug == 'info' %}</span>{% else %}</a>{% endif %}
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
{% if isInfo %}
|
||||||
|
<div id="phpinfo">
|
||||||
|
{{ admin.phpinfo }}
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
|
{% include 'partials/blueprints.html.twig' with { blueprints: data.blueprints, data: data } %}
|
||||||
|
{% endif %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
{% extends 'partials/base.html.twig' %}
|
|
||||||
|
|
||||||
{% block titlebar %}
|
|
||||||
<div class="button-bar">
|
|
||||||
<a class="button" href="{{ base_url }}"><i class="fa fa-reply"></i> {{ "PLUGIN_ADMIN.BACK"|tu }}</a>
|
|
||||||
</div>
|
|
||||||
<h1><i class="fa fa-fw fa-wrench"></i> {{ "PLUGIN_ADMIN.CONFIGURATION"|tu }} - {{ "PLUGIN_ADMIN.PHP_INFO"|tu }}</h1>
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block content_top %}
|
|
||||||
<ul class="tab-bar">
|
|
||||||
<li><a href="{{ base_url_relative }}/system">System</a></li>
|
|
||||||
<li><a href="{{ base_url_relative }}/site">Site</a></li>
|
|
||||||
<li class="active"><span>Info</span></li>
|
|
||||||
</ul>
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
<div id="phpinfo">
|
|
||||||
{{ admin.phpinfo }}
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
<a href="{{ base_url_relative }}"><i class="fa fa-fw fa-th"></i> {{ "PLUGIN_ADMIN.DASHBOARD"|tu }}</a>
|
<a href="{{ base_url_relative }}"><i class="fa fa-fw fa-th"></i> {{ "PLUGIN_ADMIN.DASHBOARD"|tu }}</a>
|
||||||
</li>
|
</li>
|
||||||
{% if authorize(['admin.configuration', 'admin.super']) %}
|
{% if authorize(['admin.configuration', 'admin.super']) %}
|
||||||
<li class="{{ (location == 'system' or location == 'site') ? 'selected' : '' }}">
|
<li class="{{ (location == 'system' or location == 'site' or location == 'config') ? 'selected' : '' }}">
|
||||||
<a href="{{ base_url_relative }}/system"><i class="fa fa-fw fa-wrench"></i> {{ "PLUGIN_ADMIN.CONFIGURATION"|tu }}</a>
|
<a href="{{ base_url_relative }}/system"><i class="fa fa-fw fa-wrench"></i> {{ "PLUGIN_ADMIN.CONFIGURATION"|tu }}</a>
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@@ -1,38 +0,0 @@
|
|||||||
{% extends 'partials/base.html.twig' %}
|
|
||||||
|
|
||||||
{% set title = "PLUGIN_ADMIN.CONFIGURATION"|tu ~ ": " ~ "PLUGIN_ADMIN.SITE"|tu %}
|
|
||||||
|
|
||||||
{% set data = admin.data('site') %}
|
|
||||||
|
|
||||||
{% block stylesheets %}
|
|
||||||
{% do assets.addCss(theme_url~'/css/codemirror/codemirror.css') %}
|
|
||||||
{{ parent() }}
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block javascripts %}
|
|
||||||
{% do assets.addJs(theme_url~'/js/codemirror-compressed.js') %}
|
|
||||||
{% do assets.addJs(theme_url~'/js/mdeditor.js') %}
|
|
||||||
{{ parent() }}
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block titlebar %}
|
|
||||||
<div class="button-bar">
|
|
||||||
<a class="button" href="{{ base_url }}"><i class="fa fa-reply"></i> {{ "PLUGIN_ADMIN.BACK"|tu }}</a>
|
|
||||||
<button class="button" type="submit" name="task" value="save" form="blueprints"><i class="fa fa-check"></i> Save</button>
|
|
||||||
</div>
|
|
||||||
<h1><i class="fa fa-fw fa-wrench"></i> {{ "PLUGIN_ADMIN.CONFIGURATION"|tu }} - {{ "PLUGIN_ADMIN.SITE"|tu }}</h1>
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block content_top %}
|
|
||||||
<div class="alert notice">{{ "PLUGIN_ADMIN.SAVE_LOCATION"|tu }}: <b>{{ data.file.filename|replace({(base_path):''}) }}</b></div>
|
|
||||||
<ul class="tab-bar">
|
|
||||||
<li><a href="{{ base_url_relative }}/system">{{ "PLUGIN_ADMIN.SYSTEM"|tu }}</a></li>
|
|
||||||
<li class="active"><span>{{ "PLUGIN_ADMIN.SITE"|tu }}</span></li>
|
|
||||||
<li><a href="{{ base_url_relative }}/info">{{ "PLUGIN_ADMIN.INFO"|tu }}</a></li>
|
|
||||||
</ul>
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
{% include 'partials/blueprints.html.twig' with { blueprints: data.blueprints, data: data } %}
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
{% extends 'partials/base.html.twig' %}
|
|
||||||
|
|
||||||
{% set title = "PLUGIN_ADMIN.CONFIGURATION"|tu ~ ": " ~ "PLUGIN_ADMIN.SYSTEM"|tu %}
|
|
||||||
|
|
||||||
{% set data = admin.data('system') %}
|
|
||||||
|
|
||||||
{% block stylesheets %}
|
|
||||||
{% do assets.addCss(theme_url~'/css/codemirror/codemirror.css') %}
|
|
||||||
{{ parent() }}
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block javascripts %}
|
|
||||||
{% do assets.addJs(theme_url~'/js/codemirror-compressed.js') %}
|
|
||||||
{% do assets.addJs(theme_url~'/js/mdeditor.js') %}
|
|
||||||
{{ parent() }}
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block titlebar %}
|
|
||||||
<div class="button-bar">
|
|
||||||
<a class="button" href="{{ base_url }}"><i class="fa fa-reply"></i> {{ "PLUGIN_ADMIN.BACK"|tu }}</a>
|
|
||||||
<button class="button" type="submit" name="task" value="save" form="blueprints"><i class="fa fa-check"></i> {{ "PLUGIN_ADMIN.SAVE"|tu }}</button>
|
|
||||||
</div>
|
|
||||||
<h1><i class="fa fa-fw fa-wrench"></i> {{ "PLUGIN_ADMIN.CONFIGURATION"|tu }} - {{ "PLUGIN_ADMIN.SYSTEM"|tu }}</h1>
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block content_top %}
|
|
||||||
<div class="alert notice">{{ "PLUGIN_ADMIN.SAVE_LOCATION"|tu }}: <b>{{ data.file.filename|replace({(base_path):''}) }}</b></div>
|
|
||||||
<ul class="tab-bar">
|
|
||||||
<li class="active"><span>{{ "PLUGIN_ADMIN.SYSTEM"|tu }}</span></li>
|
|
||||||
<li><a href="{{ base_url_relative }}/site">{{ "PLUGIN_ADMIN.SITE"|tu }}</a></li>
|
|
||||||
<li><a href="{{ base_url_relative }}/info">{{ "PLUGIN_ADMIN.INFO"|tu }}</a></li>
|
|
||||||
</ul>
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
{% include 'partials/blueprints.html.twig' with { blueprints: data.blueprints, data: data } %}
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user