From a6e78de197c2174abfcb27c95c6eabef4aed9a77 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Mon, 14 Oct 2019 11:11:00 +0300 Subject: [PATCH] Fixed multi-language saving issues with default language in `Flex Pages` --- CHANGELOG.md | 3 ++- system/src/Grav/Common/Page/Flex/PageStorage.php | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8d5060fff..da179e7b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,9 +17,10 @@ * Fixed fatal error if there are numeric folders in `Flex Pages` * Fixed error on missing `Flex` templates in if `Flex Objects` plugin isn't installed * Fixed `PageTranslateTrait::getAllLanguages()` and `getAllLanguages()` to include default language + * Fixed multi-language saving issues with default language in `Flex Pages` * Grav 1.7: Fixed PHP 7.1 compatibility issues * Selfupgrade CLI: Fixed broken selfupgrade assets reference [#2681](https://github.com/getgrav/grav/issues/2681) - + # v1.7.0-beta.10 ## 10/03/2019 diff --git a/system/src/Grav/Common/Page/Flex/PageStorage.php b/system/src/Grav/Common/Page/Flex/PageStorage.php index 3e25cbfbd..d7f61ae66 100644 --- a/system/src/Grav/Common/Page/Flex/PageStorage.php +++ b/system/src/Grav/Common/Page/Flex/PageStorage.php @@ -13,6 +13,7 @@ namespace Grav\Common\Page\Flex; use Grav\Common\Debugger; use Grav\Common\Grav; +use Grav\Common\Language\Language; use Grav\Framework\Flex\Storage\FolderStorage; use RocketTheme\Toolbox\ResourceLocator\UniformResourceLocator; @@ -25,6 +26,7 @@ class PageStorage extends FolderStorage protected $ignore_files; protected $ignore_folders; protected $ignore_hidden; + protected $include_default_lang_file_extension; protected $recurse; protected $base_path; @@ -44,6 +46,7 @@ class PageStorage extends FolderStorage $this->ignore_hidden = (bool)$config->get('system.pages.ignore_hidden'); $this->ignore_files = (array)$config->get('system.pages.ignore_files'); $this->ignore_folders = (array)$config->get('system.pages.ignore_folders'); + $this->include_default_lang_file_extension = $config->get('system.languages.include_default_lang_file_extension', true); $this->recurse = $options['recurse'] ?? true; $this->regex = '/(\.([\w\d_-]+))?\.md$/D'; } @@ -185,6 +188,17 @@ class PageStorage extends FolderStorage $template = $row['template'] ?? $meta['template'] ?? $keyMeta['template'] ?? ''; $lang = $row['lang'] ?? $meta['lang'] ?? $keyMeta['lang'] ?? ''; + // Handle default language, if it should be saved without language extension. + if ($lang && !$this->include_default_lang_file_extension && empty($meta['markdown'][$lang])) { + $grav = Grav::instance(); + + /** @var Language $langauge */ + $language = $grav['language']; + if ($lang === $language->getDefault()) { + $lang = ''; + } + } + $keys = [ 'key' => null, 'params' => null,