diff --git a/CHANGELOG.md b/CHANGELOG.md index c0c59b96..36654307 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ * Unified JSON twig templates * Better error handling for 500 Internal Server Errors, when Fetch fails. * Reworked the `file` field. All files get uploaded via Ajax and are stored upon Save. This improves the Save task tremendously as now there is no longer the need of waiting for the files to finish uploading. Fully backward compatible, `file` field now includes also a `limit` and `filesize` option in the blueprints. The former determines how many files are allowed to be uploaded when in combination with `multiple: true` (default: 10), the latter determines the file size limit (in MB) allowed for each file (default: 5MB) + * Added a new `filepicker` field, which allows to pick any file from an ajax-powered select box. The `pagemediaselect` field now internally uses the `filepicker` field to live-reload the available files, and to show image previews. 1. [](#bugfix) * Curl fix for invalid cert errors with News Feed * Avoid requiring `admin.super` for ajax calls [#739](https://github.com/getgrav/grav-plugin-admin/issues/739) diff --git a/classes/controller.php b/classes/controller.php index 05473c99..3c935356 100644 --- a/classes/controller.php +++ b/classes/controller.php @@ -349,10 +349,13 @@ class AdminController } $data = $this->view == 'pages' ? $this->admin->page(true) : $this->prepareData([]); - $settings = $data->blueprints()->schema()->getProperty($this->post['name']); - $folder = $settings['folder']; + if (isset($settings['folder'])) { + $folder = $settings['folder']; + } else { + $folder = '@self'; + } // Do not use self@ outside of pages if ($this->view != 'pages' && in_array($folder, ['@self', 'self@'])) { diff --git a/themes/grav/templates/forms/fields/pagemediaselect/pagemediaselect.html.twig b/themes/grav/templates/forms/fields/pagemediaselect/pagemediaselect.html.twig index e00234fd..4945c552 100644 --- a/themes/grav/templates/forms/fields/pagemediaselect/pagemediaselect.html.twig +++ b/themes/grav/templates/forms/fields/pagemediaselect/pagemediaselect.html.twig @@ -1,41 +1,2 @@ -{% extends "forms/field.html.twig" %} +{% extends "forms/fields/filepicker/filepicker.html.twig" %} -{% set options = {'': 'No file'} %} -{% set files = admin.page.media.all %} -{% for index, media in files %} - {% set option = {(index): index} %} - {% set options = options|merge(option) %} -{% endfor %} - -{% block global_attributes %} - data-grav-selectize="{{ (field.selectize is defined ? field.selectize : {})|json_encode()|e('html_attr') }}" - data-grav-field="select" - data-grav-disabled="{{ files is empty ? 'true' : 'false' }}" - data-grav-default="{{ field.default|json_encode()|e('html_attr') }}" -{% endblock %} - -{% block input %} - {% if theme or plugin %} - The "pagemediaselect" field cannot be used in Themes or Plugins Blueprints. It's intended to be used for Pages blueprints. - Use the "file" type instead. - {% else %} -
- -
- {% if files is empty %}Add files through the page media, or by dropping them in the page folder{% endif %} - {% endif %} -{% endblock %}