mirror of
https://github.com/getgrav/grav-plugin-admin.git
synced 2025-11-03 03:46:30 +01:00
Merge branch 'develop' into feature/admin-gpm-dependencies
This commit is contained in:
@@ -261,7 +261,7 @@ class Admin
|
|||||||
* @return Data\Data|null
|
* @return Data\Data|null
|
||||||
* @throws \RuntimeException
|
* @throws \RuntimeException
|
||||||
*/
|
*/
|
||||||
public function data($type, $post = array())
|
public function data($type, array $post = [])
|
||||||
{
|
{
|
||||||
static $data = [];
|
static $data = [];
|
||||||
|
|
||||||
@@ -270,7 +270,7 @@ class Admin
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!$post) {
|
if (!$post) {
|
||||||
$post = isset($_POST) ? $_POST : [];
|
$post = isset($_POST['data']) ? $_POST['data'] : [];
|
||||||
}
|
}
|
||||||
|
|
||||||
switch ($type) {
|
switch ($type) {
|
||||||
|
|||||||
@@ -52,6 +52,11 @@ class AdminController
|
|||||||
*/
|
*/
|
||||||
public $post;
|
public $post;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array|null
|
||||||
|
*/
|
||||||
|
public $data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Admin
|
* @var Admin
|
||||||
*/
|
*/
|
||||||
@@ -79,6 +84,10 @@ class AdminController
|
|||||||
$this->grav = $grav;
|
$this->grav = $grav;
|
||||||
$this->view = $view;
|
$this->view = $view;
|
||||||
$this->task = $task ? $task : 'display';
|
$this->task = $task ? $task : 'display';
|
||||||
|
if (isset($post['data'])) {
|
||||||
|
$this->data = $this->getPost($post['data']);
|
||||||
|
unset($post['data']);
|
||||||
|
}
|
||||||
$this->post = $this->getPost($post);
|
$this->post = $this->getPost($post);
|
||||||
$this->route = $route;
|
$this->route = $route;
|
||||||
$this->admin = $this->grav['admin'];
|
$this->admin = $this->grav['admin'];
|
||||||
@@ -1015,7 +1024,7 @@ class AdminController
|
|||||||
|
|
||||||
// Filter value and save it.
|
// Filter value and save it.
|
||||||
$this->post = ['enabled' => true];
|
$this->post = ['enabled' => true];
|
||||||
$obj = $this->prepareData();
|
$obj = $this->prepareData($this->post);
|
||||||
$obj->save();
|
$obj->save();
|
||||||
|
|
||||||
$this->post = ['_redirect' => 'plugins'];
|
$this->post = ['_redirect' => 'plugins'];
|
||||||
@@ -1041,7 +1050,7 @@ class AdminController
|
|||||||
|
|
||||||
// Filter value and save it.
|
// Filter value and save it.
|
||||||
$this->post = ['enabled' => false];
|
$this->post = ['enabled' => false];
|
||||||
$obj = $this->prepareData();
|
$obj = $this->prepareData($this->post);
|
||||||
$obj->save();
|
$obj->save();
|
||||||
|
|
||||||
$this->post = ['_redirect' => 'plugins'];
|
$this->post = ['_redirect' => 'plugins'];
|
||||||
@@ -1266,7 +1275,7 @@ class AdminController
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$data = $this->post;
|
$data = (array) $this->data;
|
||||||
|
|
||||||
if ($data['route'] == '/') {
|
if ($data['route'] == '/') {
|
||||||
$path = $this->grav['locator']->findResource('page://');
|
$path = $this->grav['locator']->findResource('page://');
|
||||||
@@ -1345,7 +1354,7 @@ class AdminController
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$data = $this->post;
|
$data = (array) $this->data;
|
||||||
|
|
||||||
$config = $this->grav['config'];
|
$config = $this->grav['config'];
|
||||||
|
|
||||||
@@ -1417,7 +1426,7 @@ class AdminController
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
// Handle standard data types.
|
// Handle standard data types.
|
||||||
$obj = $this->prepareData();
|
$obj = $this->prepareData($data);
|
||||||
$obj = $this->processFiles($obj);
|
$obj = $this->processFiles($obj);
|
||||||
$obj->validate();
|
$obj->validate();
|
||||||
$obj->filter();
|
$obj->filter();
|
||||||
@@ -1501,7 +1510,7 @@ class AdminController
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$data = $this->post;
|
$data = (array) $this->data;
|
||||||
$route = $data['route'] != '/' ? $data['route'] : '';
|
$route = $data['route'] != '/' ? $data['route'] : '';
|
||||||
$folder = ltrim($data['folder'], '_');
|
$folder = ltrim($data['folder'], '_');
|
||||||
if (!empty($data['modular'])) {
|
if (!empty($data['modular'])) {
|
||||||
@@ -1684,7 +1693,7 @@ class AdminController
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$data = $this->post;
|
$data = (array) $this->data;
|
||||||
$language = $data['lang'];
|
$language = $data['lang'];
|
||||||
|
|
||||||
if ($language) {
|
if ($language) {
|
||||||
@@ -1824,7 +1833,7 @@ class AdminController
|
|||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
protected function &getPost($post)
|
protected function getPost($post)
|
||||||
{
|
{
|
||||||
unset($post['task']);
|
unset($post['task']);
|
||||||
|
|
||||||
@@ -1874,10 +1883,10 @@ class AdminController
|
|||||||
*
|
*
|
||||||
* @return object
|
* @return object
|
||||||
*/
|
*/
|
||||||
protected function prepareData()
|
protected function prepareData(array $data)
|
||||||
{
|
{
|
||||||
$type = trim("{$this->view}/{$this->admin->route}", '/');
|
$type = trim("{$this->view}/{$this->admin->route}", '/');
|
||||||
$data = $this->admin->data($type, $this->post);
|
$data = $this->admin->data($type, $data);
|
||||||
|
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
@@ -1927,7 +1936,7 @@ class AdminController
|
|||||||
*/
|
*/
|
||||||
protected function preparePage(Page $page, $clean_header = false, $language = '')
|
protected function preparePage(Page $page, $clean_header = false, $language = '')
|
||||||
{
|
{
|
||||||
$input = $this->post;
|
$input = (array) $this->data;
|
||||||
|
|
||||||
if (isset($input['order'])) {
|
if (isset($input['order'])) {
|
||||||
$order = max(0, (int)isset($input['order']) ? $input['order'] : $page->value('order'));
|
$order = max(0, (int)isset($input['order']) ? $input['order'] : $page->value('order'));
|
||||||
|
|||||||
@@ -29,9 +29,12 @@ export default class ColorpickerField {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let target = field.closest(this.options.update);
|
let target = field.closest(this.options.update);
|
||||||
if (!target.lenght) {
|
if (!target.length) {
|
||||||
target = field.siblings(this.options.update);
|
target = field.siblings(this.options.update);
|
||||||
}
|
}
|
||||||
|
if (!target.length) {
|
||||||
|
target = field.parent('.g-colorpicker').find(this.options.update);
|
||||||
|
}
|
||||||
|
|
||||||
target.css({ backgroundColor });
|
target.css({ backgroundColor });
|
||||||
});
|
});
|
||||||
@@ -40,7 +43,7 @@ export default class ColorpickerField {
|
|||||||
|
|
||||||
attach() {
|
attach() {
|
||||||
body.on(FOCUSIN, this.selector, (event) => this.show(event, event.currentTarget));
|
body.on(FOCUSIN, this.selector, (event) => this.show(event, event.currentTarget));
|
||||||
body.on(MOUSEDOWN, '.g-colorpicker i', this.bound('iconClick'));
|
body.on(MOUSEDOWN, '.g-colorpicker, .g-colorpicker i', this.bound('iconClick'));
|
||||||
body.on('keydown', this.selector, (event) => {
|
body.on('keydown', this.selector, (event) => {
|
||||||
switch (event.keyCode) {
|
switch (event.keyCode) {
|
||||||
case 9: // tab
|
case 9: // tab
|
||||||
@@ -155,13 +158,11 @@ export default class ColorpickerField {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
iconClick(event, element) {
|
iconClick(event) {
|
||||||
event && event.preventDefault();
|
event && event.preventDefault();
|
||||||
|
|
||||||
let input = $(event.currentTarget).siblings('input');
|
let input = $(event.currentTarget).find('input');
|
||||||
input.focus();
|
setTimeout(() => input.focus(), 50);
|
||||||
|
|
||||||
this.show(event, input);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bodyMove(event) {
|
bodyMove(event) {
|
||||||
|
|||||||
@@ -20,13 +20,6 @@ export default class Form {
|
|||||||
}
|
}
|
||||||
}); */
|
}); */
|
||||||
|
|
||||||
// clear out any `noform` field from its name
|
|
||||||
this.form.on('submit', () => {
|
|
||||||
$('.no-form').attr('name', null);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
});
|
|
||||||
|
|
||||||
this._attachShortcuts();
|
this._attachShortcuts();
|
||||||
this._attachToggleables();
|
this._attachToggleables();
|
||||||
this._attachDisabledFields();
|
this._attachDisabledFields();
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
2
themes/grav/css-compiled/template.css
vendored
2
themes/grav/css-compiled/template.css
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
themes/grav/js/admin.min.js
vendored
2
themes/grav/js/admin.min.js
vendored
File diff suppressed because one or more lines are too long
@@ -11,11 +11,32 @@
|
|||||||
|
|
||||||
i {
|
i {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 10px;
|
top: 15px;
|
||||||
right: 10px;
|
right: 10px;
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.g-colorpicker-preview-wrap {
|
||||||
|
cursor: default;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
width: 43px;
|
||||||
|
height: 43px;
|
||||||
|
border-radius: 0 3px 3px 0;
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.2);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.g-colorpicker-preview {
|
||||||
|
position: absolute;
|
||||||
|
top: -1px;
|
||||||
|
right: -1px;
|
||||||
|
bottom: -1px;
|
||||||
|
left: -1px;
|
||||||
|
border-radius: 0 3px 3px 0;
|
||||||
|
}
|
||||||
|
|
||||||
&.light-text {
|
&.light-text {
|
||||||
input, i {
|
input, i {
|
||||||
color: $white;
|
color: $white;
|
||||||
@@ -31,7 +52,7 @@
|
|||||||
.cp-wrapper {
|
.cp-wrapper {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
width: 173px;
|
width: 173px;
|
||||||
height: 205px;
|
height: 208px;
|
||||||
background: white;
|
background: white;
|
||||||
border: solid 1px #CCC;
|
border: solid 1px #CCC;
|
||||||
box-shadow: 0 0 20px rgba(0, 0, 0, .2);
|
box-shadow: 0 0 20px rgba(0, 0, 0, .2);
|
||||||
@@ -234,3 +255,7 @@
|
|||||||
border-top-left-radius: 0;
|
border-top-left-radius: 0;
|
||||||
border-bottom-left-radius: 0;
|
border-bottom-left-radius: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.g-colorpicker-preview-wrap {
|
||||||
|
background-image: url(data:image/jpeg;base64,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);
|
||||||
|
}
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
{% block contents %}
|
{% block contents %}
|
||||||
<div class="form-label{% if not vertical %} block size-1-3{% endif %}">
|
<div class="form-label{% if not vertical %} block size-1-3{% endif %}">
|
||||||
{% if field.toggleable %}
|
{% if field.toggleable %}
|
||||||
<span class="checkboxes toggleable" data-grav-field="toggleable" data-grav-field-name="{{ field.name|fieldName }}">
|
<span class="checkboxes toggleable" data-grav-field="toggleable" data-grav-field-name="{{ (scope ~ field.name)|fieldName }}">
|
||||||
<input type="checkbox"
|
<input type="checkbox"
|
||||||
id="toggleable_{{ field.name }}"
|
id="toggleable_{{ field.name }}"
|
||||||
{% if toggleableChecked %}value="1"{% endif %}
|
{% if toggleableChecked %}value="1"{% endif %}
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
{% extends "forms/field.html.twig" %}
|
{% extends "forms/field.html.twig" %}
|
||||||
|
|
||||||
{% block global_attributes %}
|
{% block global_attributes %}
|
||||||
data-grav-array-name="{{ field.name|fieldName }}"
|
data-grav-array-name="{{ (scope ~ field.name)|fieldName }}"
|
||||||
data-grav-array-keyname="{{ field.placeholder_key|e|tu }}"
|
data-grav-array-keyname="{{ field.placeholder_key|e|tu }}"
|
||||||
data-grav-array-valuename="{{ field.placeholder_value|e|tu }}"
|
data-grav-array-valuename="{{ field.placeholder_value|e|tu }}"
|
||||||
{{ parent() }}
|
{{ parent() }}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% macro renderer(key, text, field) %}
|
{% macro renderer(key, text, field, scope) %}
|
||||||
<div class="form-row{% if field.value_only %} array-field-value_only{% endif %}"
|
<div class="form-row{% if field.value_only %} array-field-value_only{% endif %}"
|
||||||
data-grav-array-type="row">
|
data-grav-array-type="row">
|
||||||
{% if field.value_only != true %}
|
{% if field.value_only != true %}
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
<input
|
<input
|
||||||
data-grav-array-type="value"
|
data-grav-array-type="value"
|
||||||
type="text"
|
type="text"
|
||||||
name="{{ (field.name|fieldName) ~ '[' ~ key ~ ']' }}"
|
name="{{ ((scope ~ field.name)|fieldName) ~ '[' ~ key ~ ']' }}"
|
||||||
placeholder="{{ field.placeholder_value|e|tu }}"
|
placeholder="{{ field.placeholder_value|e|tu }}"
|
||||||
{% if field.disabled or isDisabledToggleable %}disabled="disabled"{% endif %}
|
{% if field.disabled or isDisabledToggleable %}disabled="disabled"{% endif %}
|
||||||
value={% if text == 'true' %}true{% elseif text == 'false' %}false{% else %}"{{ text|join(', ')|e }}"{% endif %} />
|
value={% if text == 'true' %}true{% elseif text == 'false' %}false{% else %}"{{ text|join(', ')|e }}"{% endif %} />
|
||||||
@@ -41,11 +41,11 @@
|
|||||||
{% if value|length %}
|
{% if value|length %}
|
||||||
{% for key, text in value -%}
|
{% for key, text in value -%}
|
||||||
{% if text is not iterable %}
|
{% if text is not iterable %}
|
||||||
{{ array_field.renderer(key, text, field) }}
|
{{ array_field.renderer(key, text, field, scope) }}
|
||||||
{% else %}
|
{% else %}
|
||||||
{# Backward compatibility for nested arrays (metas) which are not supported anymore #}
|
{# Backward compatibility for nested arrays (metas) which are not supported anymore #}
|
||||||
{% for subkey, subtext in text -%}
|
{% for subkey, subtext in text -%}
|
||||||
{{ array_field.renderer(key ~ ':' ~ subkey, subtext, field) }}
|
{{ array_field.renderer(key ~ ':' ~ subkey, subtext, field, scope) }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
@@ -60,7 +60,7 @@
|
|||||||
<input
|
<input
|
||||||
data-grav-array-type="value"
|
data-grav-array-type="value"
|
||||||
type="text"
|
type="text"
|
||||||
name="{{ field.name|fieldName }}"
|
name="{{ (scope ~ field.name)|fieldName }}"
|
||||||
{% if field.disabled or isDisabledToggleable %}disabled="disabled"{% endif %}
|
{% if field.disabled or isDisabledToggleable %}disabled="disabled"{% endif %}
|
||||||
placeholder="{{ field.placeholder_value|e|tu }}" />
|
placeholder="{{ field.placeholder_value|e|tu }}" />
|
||||||
<span data-grav-array-action="rem" class="fa fa-minus"></span>
|
<span data-grav-array-action="rem" class="fa fa-minus"></span>
|
||||||
|
|||||||
@@ -0,0 +1,38 @@
|
|||||||
|
{% extends "forms/field.html.twig" %}
|
||||||
|
{% set originalValue = originalValue is defined ? originalValue : value %}
|
||||||
|
{% set value = (value is null ? field.default : value) %}
|
||||||
|
{% set pattern = '^#([a-fA-F0-9]{6})|(rgba\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*((0.[0-9]+)|[01])\\s*\\))$' %}
|
||||||
|
|
||||||
|
{% block input %}
|
||||||
|
<div class="form-list-wrapper {{ field.size }}" data-type="collection">
|
||||||
|
<div class="g-colorpicker">
|
||||||
|
<input
|
||||||
|
data-grav-colorpicker="{{ {update: '.g-colorpicker-preview-wrap .g-colorpicker-preview'}|json_encode|e('html_attr') }}"
|
||||||
|
{# required attribute structures #}
|
||||||
|
name="{{ (scope ~ field.name)|fieldName }}"
|
||||||
|
value="{{ value|e('html_attr')|join(', ') }}"
|
||||||
|
type="text"
|
||||||
|
{# input attribute structures #}
|
||||||
|
{% block input_attributes %}
|
||||||
|
{% if field.classes is defined %}class="{{ field.classes }}" {% endif %}
|
||||||
|
{% if field.id is defined %}id="{{ field.id|e }}" {% endif %}
|
||||||
|
{% if field.style is defined %}style="{{ field.style|e }}" {% endif %}
|
||||||
|
{% if field.disabled %}disabled="disabled"{% endif %}
|
||||||
|
{% if field.placeholder %}placeholder="{{ field.placeholder }}"{% endif %}
|
||||||
|
{% if field.autofocus in ['on', 'true', 1] %}autofocus="autofocus"{% endif %}
|
||||||
|
{% if field.novalidate in ['on', 'true', 1] %}novalidate="novalidate"{% endif %}
|
||||||
|
{% if field.readonly in ['on', 'true', 1] %}readonly="readonly"{% endif %}
|
||||||
|
{% if field.autocomplete in ['on', 'off'] %}autocomplete="{{ field.autocomplete }}"{% endif %}
|
||||||
|
{% if field.validate.required in ['on', 'true', 1] %}required="required"{% endif %}
|
||||||
|
pattern="{{ field.validate.pattern|default(pattern)|raw }}"
|
||||||
|
{% if field.validate.message %}title="{{ field.validate.message|e|t }}"
|
||||||
|
{% elseif field.title is defined %}title="{{ field.title|e|t }}" {% endif %}
|
||||||
|
{% endblock %}
|
||||||
|
/>
|
||||||
|
<div class="g-colorpicker-preview-wrap">
|
||||||
|
<div class="g-colorpicker-preview" style="background-color: {{ value|e }}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
{% set value = (value is null ? field.default : value) %}
|
{% set value = (value is null ? field.default : value) %}
|
||||||
{% set name = scope ~ field.name %}
|
{% set name = field.name %}
|
||||||
{% set btnLabel = field.btnLabel is defined ? field.btnLabel : "PLUGIN_ADMIN.ADD_ITEM" %}
|
{% set btnLabel = field.btnLabel is defined ? field.btnLabel : "PLUGIN_ADMIN.ADD_ITEM" %}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
{% block global_attributes %}
|
{% block global_attributes %}
|
||||||
{{ parent() }}
|
{{ parent() }}
|
||||||
data-grav-field-name="{{ field.name|fieldName }}"
|
data-grav-field-name="{{ (scope ~ field.name)|fieldName }}"
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% macro spanToggle(input, length) %}
|
{% macro spanToggle(input, length) %}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
{% set form_id = form_id ? form_id : 'blueprints' %}
|
{% set form_id = form_id ? form_id : 'blueprints' %}
|
||||||
|
{% set scope = scope ?: 'data.' %}
|
||||||
|
|
||||||
<form id="{{ form_id }}" method="post" data-grav-form="{{ form_id }}" data-grav-keepalive="true">
|
<form id="{{ form_id }}" method="post" data-grav-form="{{ form_id }}" data-grav-keepalive="true">
|
||||||
{% for field in blueprints.fields %}
|
{% for field in blueprints.fields %}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
{% set form_id = form_id ? form_id : 'blueprints' %}
|
{% set form_id = form_id ? form_id : 'blueprints' %}
|
||||||
|
{% set scope = scope ?: 'data.' %}
|
||||||
|
|
||||||
<form id="{{ form_id }}" method="post" data-grav-form="{{ form_id }}" data-grav-keepalive="true">
|
<form id="{{ form_id }}" method="post" data-grav-form="{{ form_id }}" data-grav-keepalive="true">
|
||||||
{% for field in blueprints.fields %}
|
{% for field in blueprints.fields %}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
{% set form_id = form_id ? form_id : 'blueprints' %}
|
{% set form_id = form_id ? form_id : 'blueprints' %}
|
||||||
|
{% set scope = scope ?: 'data.' %}
|
||||||
|
|
||||||
<form id="{{ form_id }}" method="post" data-grav-form="{{ form_id }}" data-grav-keepalive="true">
|
<form id="{{ form_id }}" method="post" data-grav-form="{{ form_id }}" data-grav-keepalive="true">
|
||||||
{% for field in blueprints.fields %}
|
{% for field in blueprints.fields %}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
{% set form_id = form_id ? form_id : 'blueprints' %}
|
{% set form_id = form_id ? form_id : 'blueprints' %}
|
||||||
|
{% set scope = scope ?: 'data.' %}
|
||||||
|
|
||||||
{% set multipart = '' %}
|
{% set multipart = '' %}
|
||||||
{% for field in blueprints.fields %}
|
{% for field in blueprints.fields %}
|
||||||
|
|||||||
Reference in New Issue
Block a user