Fixed permissions field with nested permissions

This commit is contained in:
Matias Griese
2019-11-11 20:30:18 +02:00
parent abaa5f1730
commit c30b2f2d1c
3 changed files with 15 additions and 5 deletions

View File

@@ -1,3 +1,9 @@
# v1.10.0-rc.2
## mm/dd/2019
1. [](#bugfix)
* Fixed `permissions` field with nested permissions
# v1.10.0-rc.1 # v1.10.0-rc.1
## 11/06/2019 ## 11/06/2019

View File

@@ -5,6 +5,7 @@ namespace Grav\Plugin\Admin\Twig;
use Grav\Common\Data\Data; use Grav\Common\Data\Data;
use Grav\Common\Grav; use Grav\Common\Grav;
use Grav\Common\Page\Interfaces\PageInterface; use Grav\Common\Page\Interfaces\PageInterface;
use Grav\Common\Utils;
use Grav\Common\Yaml; use Grav\Common\Yaml;
use Grav\Common\Language\Language; use Grav\Common\Language\Language;
use Twig\Extension\AbstractExtension; use Twig\Extension\AbstractExtension;
@@ -34,6 +35,7 @@ class AdminTwigExtension extends AbstractExtension
new TwigFilter('fromYaml', [$this, 'fromYamlFilter']), new TwigFilter('fromYaml', [$this, 'fromYamlFilter']),
new TwigFilter('adminNicetime', [$this, 'adminNicetimeFilter']), new TwigFilter('adminNicetime', [$this, 'adminNicetimeFilter']),
new TwigFilter('nested', [$this, 'nestedFilter']), new TwigFilter('nested', [$this, 'nestedFilter']),
new TwigFilter('flatten', [$this, 'flattenFilter']),
]; ];
} }
@@ -64,6 +66,11 @@ class AdminTwigExtension extends AbstractExtension
return $current; return $current;
} }
public function flattenFilter($array)
{
return Utils::arrayFlattenDotNotation($array);
}
public function cloneFunc($obj) public function cloneFunc($obj)
{ {
return clone $obj; return clone $obj;

View File

@@ -7,15 +7,13 @@
{% import _self as macro %} {% import _self as macro %}
{% set value = (value is null ? field.default : value) %}
{% set value = (value is same as(false) ? 0 : value) %}
{% block global_attributes %} {% block global_attributes %}
data-grav-disabled="{{ originalValue is null ? 'true' : 'false' }}" data-grav-disabled="{{ originalValue is null ? 'true' : 'false' }}"
data-grav-default="{{ field.default|json_encode()|e('html_attr') }}" data-grav-default="{{ field.default|json_encode()|e('html_attr') }}"
{% endblock %} {% endblock %}
{% block input %} {% block input %}
{% set value = value|flatten %}
<div class="permissions-container"> <div class="permissions-container">
{% set permissions = admin.getPermissions %} {% set permissions = admin.getPermissions %}
{% for index_existing_permission, value_existing_permission in value %} {% for index_existing_permission, value_existing_permission in value %}
@@ -26,8 +24,7 @@
{% for permission, type in permissions %} {% for permission, type in permissions %}
<div class="permission-container"> <div class="permission-container">
{% set permission_segments = permission|split('.') %} {% set permission_value = value[permission] ?? null %}
{% set permission_value = value[permission_segments[0]][permission_segments[1]] %}
{% if permission_value in ['on', 'true', 1] %} {% if permission_value in ['on', 'true', 1] %}
{% set permission_value = 'true' %} {% set permission_value = 'true' %}
{% endif %} {% endif %}