diff --git a/admin.yaml b/admin.yaml index 56a68435..ac728230 100644 --- a/admin.yaml +++ b/admin.yaml @@ -25,6 +25,7 @@ session: warnings: delete_page: true edit_mode: normal +frontend_preview_target: inline show_github_msg: true pages_list_display_field: title google_fonts: false diff --git a/blueprints.yaml b/blueprints.yaml index e42152a1..1e3934c4 100644 --- a/blueprints.yaml +++ b/blueprints.yaml @@ -137,6 +137,16 @@ form: expert: Expert help: Auto will use blueprint if available, if none found, it will use "Expert" mode. + frontend_preview_target: + type: select + label: Preview pages target + size: medium + default: inline + options: + inline: Inine in Admin + _blank: New tab + _self: Current tab + pages.show_parents: type: select size: medium diff --git a/classes/admin.php b/classes/admin.php index a104d8b8..bcc9ac0e 100644 --- a/classes/admin.php +++ b/classes/admin.php @@ -1792,8 +1792,14 @@ class Admin return false; } + /** + * Return HTTP_REFERRER if set + * + * @return null + */ public function getReferrer() { - return $_SERVER['HTTP_REFERER']; + $referrer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null; + return $referrer; } } diff --git a/themes/grav/templates/pages.html.twig b/themes/grav/templates/pages.html.twig index 6f112f4e..aff39558 100644 --- a/themes/grav/templates/pages.html.twig +++ b/themes/grav/templates/pages.html.twig @@ -41,12 +41,19 @@ {{ parent() }} {% endblock %} -{% set preview_html = (base_url|rtrim('/') ~ '/preview' ~ (context.home ? '' : context.route)) ?: '/' %} -{% set preview_link = context.routable ? ' ' : '' %} +{% if config.plugins.admin.frontend_preview_target != 'inline' %} + {% set preview_html = (base_url_relative_frontend|rtrim('/') ~ (context.home ? '' : context.route)) ?: '/' %} + {% set preview_target = config.plugins.admin.frontend_pages_target %} + {% set preview_link = context.routable ? ' ' : '' %} +{% else %} + {% set preview_html = (base_url|rtrim('/') ~ '/preview' ~ (context.home ? '' : context.route)) ?: '/' %} + {% set preview_link = context.routable ? ' ' : '' %} +{% endif %} {% macro loop(page, depth, twig_vars) %} - {% set separator = twig_vars['config'].system.param_sep %} - {% set display_field = twig_vars['config'].plugins.admin.pages_list_display_field %} + {% set config = twig_vars['config'] %} + {% set separator = config.system.param_sep %} + {% set display_field = config.plugins.admin.pages_list_display_field %} {% set base_url = twig_vars['base_url_relative'] %} {% set base_url_relative_frontend = twig_vars['base_url_relative_frontend'] %} {% set base_url_simple = twig_vars['base_url_simple'] %} @@ -95,8 +102,14 @@

{{ p.header.routes.default ?: p.route }} {{ p.template() }}

- {% set preview_html = (base_url|rtrim('/') ~ '/preview' ~ (p.home ? '' : p.route)) ?: '/' %} - {% set preview_link = p.routable ? ' ' : '' %} + {% if config.plugins.admin.frontend_preview_target != 'inline' %} + {% set preview_target = config.plugins.admin.frontend_pages_target %} + {% set preview_html = (base_url_relative_frontend|rtrim('/') ~ (p.home ? '' : p.route)) ?: '/' %} + {% set preview_link = p.routable ? ' ' : '' %} + {% else %} + {% set preview_html = (base_url|rtrim('/') ~ '/preview' ~ (p.home ? '' : p.route)) ?: '/' %} + {% set preview_link = p.routable ? ' ' : '' %} + {% endif %} {{ preview_link|raw }} {% if warn %} diff --git a/themes/grav/templates/preview.html.twig b/themes/grav/templates/preview.html.twig index 2017f35c..115ecaef 100644 --- a/themes/grav/templates/preview.html.twig +++ b/themes/grav/templates/preview.html.twig @@ -2,11 +2,13 @@ {% set route = admin.route == '' ? '' : '/' ~ admin.route %} {% set preview_link = base_url_relative_frontend|rtrim('/') ~ route %} +{% set preview_html = (base_url|rtrim('/') ~ '/preview' ~ (context.home ? '' : context.route)) ?: '/' %} +{% set admin_route = '/' ~ admin.route %} +{% set back_link = base_url|rtrim('/') ~ '/pages' ~ page.find(admin_route).rawRoute() %} {% block titlebar %} -
- {{ "PLUGIN_ADMIN.BACK"|tu }} + {{ "PLUGIN_ADMIN.BACK"|tu }} {{ "PLUGIN_ADMIN.OPEN_NEW_TAB"|tu }}

{{ "PLUGIN_ADMIN.PREVIEW"|tu }}: /{{ admin.route }}