From f6d910f226be258c88479a2ac7cb67e89cdc09eb Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Fri, 21 Apr 2017 22:18:36 -0600 Subject: [PATCH 01/10] Added support for `showModular` option in `Pages::getList()` --- system/blueprints/config/system.yaml | 3 ++- system/src/Grav/Common/Page/Pages.php | 15 +++++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/system/blueprints/config/system.yaml b/system/blueprints/config/system.yaml index 2badbf131..7c6b0fb0f 100644 --- a/system/blueprints/config/system.yaml +++ b/system/blueprints/config/system.yaml @@ -12,12 +12,13 @@ form: fields: home.alias: type: pages - size: medium + size: large classes: fancy label: PLUGIN_ADMIN.HOME_PAGE show_all: false show_modular: false show_root: false + show_slug: true help: PLUGIN_ADMIN.HOME_PAGE_HELP home.hide_in_urls: diff --git a/system/src/Grav/Common/Page/Pages.php b/system/src/Grav/Common/Page/Pages.php index 279d7024d..457701ce3 100644 --- a/system/src/Grav/Common/Page/Pages.php +++ b/system/src/Grav/Common/Page/Pages.php @@ -552,14 +552,17 @@ class Pages * Get list of route/title of all pages. * * @param Page $current - * @param int $level + * @param int $level * @param bool $rawRoutes * + * @param bool $showAll + * @param bool $showFullpath + * @param bool $showSlug + * @param bool $showModular + * @param bool $limitLevels * @return array - * - * @throws \RuntimeException */ - public function getList(Page $current = null, $level = 0, $rawRoutes = false, $showAll = true, $showFullpath = false, $showSlug = false, $limitLevels = false) + public function getList(Page $current = null, $level = 0, $rawRoutes = false, $showAll = true, $showFullpath = false, $showSlug = false, $showModular = false, $limitLevels = false) { if (!$current) { if ($level) { @@ -594,8 +597,8 @@ class Pages if ($limitLevels == false || ($level+1 < $limitLevels)) { foreach ($current->children() as $next) { - if ($showAll || $next->routable()) { - $list = array_merge($list, $this->getList($next, $level + 1, $rawRoutes, $showAll, $showFullpath, $showSlug, $limitLevels)); + if ($showAll || $next->routable() || ($next->modular() && $showModular)) { + $list = array_merge($list, $this->getList($next, $level + 1, $rawRoutes, $showAll, $showFullpath, $showSlug, $showModular, $limitLevels)); } } } From 34281a14a40b74c2936dbcf00bb2aa0e9cc02820 Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Fri, 21 Apr 2017 22:20:16 -0600 Subject: [PATCH 02/10] Updated changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c5e51b27f..47439d9c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ 1. [](#bugfix) * Allow multiple calls to `Themes::initTheme()` without throwing errors * Fixed querystrings in root pages with multi-lang enabled [#1436](https://github.com/getgrav/grav/issues/1436) + * Allow support for `Pages::getList()` with `show_modular` option [#1080](https://github.com/getgrav/grav-plugin-admin/issues/1080) # v1.2.3 ## 04/19/2017 From e5a522a2fe81d3c0439b33525ed7d2592e8963b8 Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Mon, 24 Apr 2017 15:00:31 -0600 Subject: [PATCH 03/10] Added `ignores` to install options for `Installer::sophisticatedInstall()` #1447 --- CHANGELOG.md | 2 ++ system/src/Grav/Common/GPM/Installer.php | 9 +++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 47439d9c6..b89d314d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ # v1.2.4 ## 04/xx/2017 +1. [](#improved) + * Added optional ignores for `Installer::sophisticatedInstall()` [#1447](https://github.com/getgrav/grav/issues/1447) 1. [](#bugfix) * Allow multiple calls to `Themes::initTheme()` without throwing errors * Fixed querystrings in root pages with multi-lang enabled [#1436](https://github.com/getgrav/grav/issues/1436) diff --git a/system/src/Grav/Common/GPM/Installer.php b/system/src/Grav/Common/GPM/Installer.php index 0e6352147..1f8a2626e 100644 --- a/system/src/Grav/Common/GPM/Installer.php +++ b/system/src/Grav/Common/GPM/Installer.php @@ -58,6 +58,7 @@ class Installer 'sophisticated' => false, 'theme' => false, 'install_path' => '', + 'ignores' => [], 'exclude_checks' => [self::EXISTS, self::NOT_FOUND, self::IS_LINK] ]; @@ -134,7 +135,7 @@ class Installer self::moveInstall($extracted, $install_path); } } else { - self::sophisticatedInstall($extracted, $install_path); + self::sophisticatedInstall($extracted, $install_path, $options['ignores']); } Folder::delete($tmp); @@ -280,11 +281,11 @@ class Installer * * @return bool */ - public static function sophisticatedInstall($source_path, $install_path) + public static function sophisticatedInstall($source_path, $install_path, $ignores = []) { foreach (new \DirectoryIterator($source_path) as $file) { - if ($file->isLink() || $file->isDot()) { + if ($file->isLink() || $file->isDot() || in_array($file->getBasename(),$ignores)) { continue; } @@ -296,7 +297,7 @@ class Installer if ($file->getBasename() == 'bin') { foreach (glob($path . DS . '*') as $bin_file) { - @chmod($bin_file, 0755); + @chmod($bin_file, 0755); } } } else { From e4ffc8d3decf8a1d140a78d914a312a56e8702ef Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Mon, 24 Apr 2017 15:31:57 -0600 Subject: [PATCH 04/10] Prepare for release --- CHANGELOG.md | 2 +- system/defines.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b89d314d9..5e4599da1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,5 @@ # v1.2.4 -## 04/xx/2017 +## 04/24/2017 1. [](#improved) * Added optional ignores for `Installer::sophisticatedInstall()` [#1447](https://github.com/getgrav/grav/issues/1447) diff --git a/system/defines.php b/system/defines.php index 6e79ce7cf..156371ba2 100644 --- a/system/defines.php +++ b/system/defines.php @@ -8,7 +8,7 @@ // Some standard defines define('GRAV', true); -define('GRAV_VERSION', '1.2.3'); +define('GRAV_VERSION', '1.2.4'); define('GRAV_TESTING', false); define('DS', '/'); From 2074c4933a0f86cd601b31beb340ded2f77d58d3 Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Mon, 24 Apr 2017 17:57:47 -0600 Subject: [PATCH 05/10] Force redirect/route matching from start of route #1446 --- CHANGELOG.md | 6 ++++++ system/src/Grav/Common/Page/Pages.php | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e4599da1..48dc6d2f5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +# v1.2.5 +## 04/xx/2017 + +1. [](#bugfix) + * Fix to force route/redirect matching from the start of the route by default [1446](https://github.com/getgrav/grav/issues/1446) + # v1.2.4 ## 04/24/2017 diff --git a/system/src/Grav/Common/Page/Pages.php b/system/src/Grav/Common/Page/Pages.php index 457701ce3..1ba80fdd4 100644 --- a/system/src/Grav/Common/Page/Pages.php +++ b/system/src/Grav/Common/Page/Pages.php @@ -405,7 +405,7 @@ class Pages $site_redirects = $config->get("site.redirects"); if (is_array($site_redirects)) { foreach ((array)$site_redirects as $pattern => $replace) { - $pattern = '#' . $pattern . '#'; + $pattern = '#^' . preg_quote(ltrim($pattern, '^')) . '#'; try { $found = preg_replace($pattern, $replace, $source_url); if ($found != $source_url) { @@ -421,7 +421,7 @@ class Pages $site_routes = $config->get("site.routes"); if (is_array($site_routes)) { foreach ((array)$site_routes as $pattern => $replace) { - $pattern = '#' . $pattern . '#'; + $pattern = '#^' . preg_quote(ltrim($pattern, '^')) . '#'; try { $found = preg_replace($pattern, $replace, $source_url); if ($found != $source_url) { From bb6175397c14a3955286e0f421677ac8177e2aa9 Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Mon, 24 Apr 2017 18:02:04 -0600 Subject: [PATCH 06/10] Vendor updates --- composer.lock | 76 +++++++++++++++++++++++++-------------------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/composer.lock b/composer.lock index 1066c3520..69a7a8267 100644 --- a/composer.lock +++ b/composer.lock @@ -900,16 +900,16 @@ }, { "name": "symfony/console", - "version": "v2.8.18", + "version": "v2.8.19", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "81508e6fac4476771275a3f4f53c3fee9b956bfa" + "reference": "86407ff20855a5eaa2a7219bd815e9c40a88633e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/81508e6fac4476771275a3f4f53c3fee9b956bfa", - "reference": "81508e6fac4476771275a3f4f53c3fee9b956bfa", + "url": "https://api.github.com/repos/symfony/console/zipball/86407ff20855a5eaa2a7219bd815e9c40a88633e", + "reference": "86407ff20855a5eaa2a7219bd815e9c40a88633e", "shasum": "" }, "require": { @@ -957,7 +957,7 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2017-03-04T11:00:12+00:00" + "time": "2017-04-03T20:37:06+00:00" }, { "name": "symfony/debug", @@ -1018,16 +1018,16 @@ }, { "name": "symfony/event-dispatcher", - "version": "v2.8.18", + "version": "v2.8.19", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "bb4ec47e8e109c1c1172145732d0aa468d967cd0" + "reference": "88b65f0ac25355090e524aba4ceb066025df8bd2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/bb4ec47e8e109c1c1172145732d0aa468d967cd0", - "reference": "bb4ec47e8e109c1c1172145732d0aa468d967cd0", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/88b65f0ac25355090e524aba4ceb066025df8bd2", + "reference": "88b65f0ac25355090e524aba4ceb066025df8bd2", "shasum": "" }, "require": { @@ -1074,7 +1074,7 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2017-02-21T08:33:48+00:00" + "time": "2017-04-03T20:37:06+00:00" }, { "name": "symfony/polyfill-iconv", @@ -1196,16 +1196,16 @@ }, { "name": "symfony/var-dumper", - "version": "v2.8.18", + "version": "v2.8.19", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "c51daca85371e30ce0e3dea99c7b08e2cb5dbf46" + "reference": "f8ff23ad5352f96e66c1df5468d492d2f37f3ac4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c51daca85371e30ce0e3dea99c7b08e2cb5dbf46", - "reference": "c51daca85371e30ce0e3dea99c7b08e2cb5dbf46", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/f8ff23ad5352f96e66c1df5468d492d2f37f3ac4", + "reference": "f8ff23ad5352f96e66c1df5468d492d2f37f3ac4", "shasum": "" }, "require": { @@ -1258,20 +1258,20 @@ "debug", "dump" ], - "time": "2017-02-20T13:37:30+00:00" + "time": "2017-03-12T16:01:59+00:00" }, { "name": "symfony/yaml", - "version": "v2.8.18", + "version": "v2.8.19", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "2a7bab3c16f6f452c47818fdd08f3b1e49ffcf7d" + "reference": "286d84891690b0e2515874717e49360d1c98a703" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/2a7bab3c16f6f452c47818fdd08f3b1e49ffcf7d", - "reference": "2a7bab3c16f6f452c47818fdd08f3b1e49ffcf7d", + "url": "https://api.github.com/repos/symfony/yaml/zipball/286d84891690b0e2515874717e49360d1c98a703", + "reference": "286d84891690b0e2515874717e49360d1c98a703", "shasum": "" }, "require": { @@ -1307,20 +1307,20 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2017-03-01T18:13:50+00:00" + "time": "2017-03-20T09:41:44+00:00" }, { "name": "twig/twig", - "version": "v1.33.0", + "version": "v1.33.2", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "05cf49921b13f6f01d3cfdf9018cfa7a8086fd5a" + "reference": "dd6ca96227917e1e85b41c7c3cc6507b411e0927" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/05cf49921b13f6f01d3cfdf9018cfa7a8086fd5a", - "reference": "05cf49921b13f6f01d3cfdf9018cfa7a8086fd5a", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/dd6ca96227917e1e85b41c7c3cc6507b411e0927", + "reference": "dd6ca96227917e1e85b41c7c3cc6507b411e0927", "shasum": "" }, "require": { @@ -1369,7 +1369,7 @@ "keywords": [ "templating" ], - "time": "2017-03-22T15:40:09+00:00" + "time": "2017-04-20T17:39:48+00:00" } ], "packages-dev": [ @@ -2911,7 +2911,7 @@ }, { "name": "symfony/browser-kit", - "version": "v3.2.6", + "version": "v3.2.7", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", @@ -2968,7 +2968,7 @@ }, { "name": "symfony/css-selector", - "version": "v3.2.6", + "version": "v3.2.7", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", @@ -3021,7 +3021,7 @@ }, { "name": "symfony/dom-crawler", - "version": "v3.2.6", + "version": "v3.2.7", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", @@ -3077,16 +3077,16 @@ }, { "name": "symfony/finder", - "version": "v3.2.6", + "version": "v3.2.7", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "92d7476d2df60cd851a3e13e078664b1deb8ce10" + "reference": "b20900ce5ea164cd9314af52725b0bb5a758217a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/92d7476d2df60cd851a3e13e078664b1deb8ce10", - "reference": "92d7476d2df60cd851a3e13e078664b1deb8ce10", + "url": "https://api.github.com/repos/symfony/finder/zipball/b20900ce5ea164cd9314af52725b0bb5a758217a", + "reference": "b20900ce5ea164cd9314af52725b0bb5a758217a", "shasum": "" }, "require": { @@ -3122,20 +3122,20 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2017-02-21T09:12:04+00:00" + "time": "2017-03-20T09:32:19+00:00" }, { "name": "symfony/process", - "version": "v3.2.6", + "version": "v3.2.7", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "68bfa8c83f24c0ac04ea7193bcdcda4519f41892" + "reference": "57fdaa55827ae14d617550ebe71a820f0a5e2282" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/68bfa8c83f24c0ac04ea7193bcdcda4519f41892", - "reference": "68bfa8c83f24c0ac04ea7193bcdcda4519f41892", + "url": "https://api.github.com/repos/symfony/process/zipball/57fdaa55827ae14d617550ebe71a820f0a5e2282", + "reference": "57fdaa55827ae14d617550ebe71a820f0a5e2282", "shasum": "" }, "require": { @@ -3171,7 +3171,7 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2017-03-04T12:23:14+00:00" + "time": "2017-03-27T18:07:02+00:00" }, { "name": "webmozart/assert", From 849130621a8929e6d56a0cd104e3f76ab90efb37 Mon Sep 17 00:00:00 2001 From: pfcloutier Date: Tue, 25 Apr 2017 06:42:27 -0400 Subject: [PATCH 07/10] Add more controls over HTML5 video attributes (autoplay, poster, loop controls) (#1442) --- .../Grav/Common/Page/Medium/VideoMedium.php | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/system/src/Grav/Common/Page/Medium/VideoMedium.php b/system/src/Grav/Common/Page/Medium/VideoMedium.php index 51690da0f..31e426549 100644 --- a/system/src/Grav/Common/Page/Medium/VideoMedium.php +++ b/system/src/Grav/Common/Page/Medium/VideoMedium.php @@ -30,6 +30,75 @@ class VideoMedium extends Medium ]; } + /** + * Allows to set or remove the HTML5 default controls + * + * @param bool $display + * @return $this + */ + public function controls($display = true) + { + if($display) + { + $this->attributes['controls'] = true; + } + else + { + unset($this->attributes['controls']); + } + return $this; + } + + /** + * Allows to set the video's poster image + * + * @param $urlImage + * @return $this + */ + public function poster($urlImage) + { + $this->attributes['poster'] = $urlImage; + return $this; + } + + /** + * Allows to set the loop attribute + * + * @param bool $status + * @return $this + */ + public function loop($status = false) + { + if($status) + { + $this->attributes['loop'] = true; + } + else + { + unset($this->attributes['loop']); + } + return $this; + } + + /** + * Allows to set the autoplay attribute + * + * @param bool $status + * @return $this + */ + public function autoplay($status = false) + { + if($status) + { + $this->attributes['autoplay'] = true; + } + else + { + unset($this->attributes['autoplay']); + } + return $this; + } + /** * Reset medium. * From 83ed2aac00f826077d21ba5bfc1aa9181ba4354d Mon Sep 17 00:00:00 2001 From: Flavio Copes Date: Tue, 25 Apr 2017 12:43:44 +0200 Subject: [PATCH 08/10] Changelog --- CHANGELOG.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 48dc6d2f5..e1ebd5ba4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,10 @@ # v1.2.5 ## 04/xx/2017 +1. [](#improved) + * Add more controls over HTML5 video attributes (autoplay, poster, loop controls) [#1442](https://github.com/getgrav/grav/pull/1442) 1. [](#bugfix) - * Fix to force route/redirect matching from the start of the route by default [1446](https://github.com/getgrav/grav/issues/1446) + * Fix to force route/redirect matching from the start of the route by default [#1446](https://github.com/getgrav/grav/issues/1446) # v1.2.4 ## 04/24/2017 @@ -13,7 +15,7 @@ * Allow multiple calls to `Themes::initTheme()` without throwing errors * Fixed querystrings in root pages with multi-lang enabled [#1436](https://github.com/getgrav/grav/issues/1436) * Allow support for `Pages::getList()` with `show_modular` option [#1080](https://github.com/getgrav/grav-plugin-admin/issues/1080) - + # v1.2.3 ## 04/19/2017 @@ -22,7 +24,7 @@ * Allow `user/accounts.yaml` overrides and implemented more robust theme initialization * improved `getList()` method to do more powerful things * Fix Typo in GPM [#1427](https://github.com/getgrav/grav/issues/1427) - + # v1.2.2 ## 04/11/2017 From c8345c661386bd2362baebd3b93d2a2fe538a4f7 Mon Sep 17 00:00:00 2001 From: Flavio Copes Date: Thu, 4 May 2017 09:50:46 +0200 Subject: [PATCH 09/10] Edit check for valid slug. Fix #1459 --- CHANGELOG.md | 1 + system/src/Grav/Common/Page/Page.php | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e1ebd5ba4..e2a8cb067 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ * Add more controls over HTML5 video attributes (autoplay, poster, loop controls) [#1442](https://github.com/getgrav/grav/pull/1442) 1. [](#bugfix) * Fix to force route/redirect matching from the start of the route by default [#1446](https://github.com/getgrav/grav/issues/1446) + * Edit check for valid slug [#1459](https://github.com/getgrav/grav/issues/1459) # v1.2.4 ## 04/24/2017 diff --git a/system/src/Grav/Common/Page/Page.php b/system/src/Grav/Common/Page/Page.php index 41e177cf0..c6cf85e77 100644 --- a/system/src/Grav/Common/Page/Page.php +++ b/system/src/Grav/Common/Page/Page.php @@ -1497,7 +1497,7 @@ class Page { if ($var !== null && $var !== "") { $this->slug = $var; - if (!preg_match('/^[a-z0-9][-a-z0-9]*$/', $this->slug)) { + if (!preg_match('/^[a-zA-Zа-яA-Я0-9][a-zA-Zа-яA-Я0-9_\-]*$/', $this->slug)) { Grav::instance()['log']->notice("Invalid slug set in YAML frontmatter: " . $this->rawRoute() . " => " . $this->slug); } } From 958557d2fee353735b81e8c4cf920d210c907240 Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Thu, 4 May 2017 06:47:57 -0600 Subject: [PATCH 10/10] Removed logging statement for invalid slug #1459 --- CHANGELOG.md | 1 + system/src/Grav/Common/Page/Page.php | 3 --- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e1ebd5ba4..1a1e655a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ 1. [](#improved) * Add more controls over HTML5 video attributes (autoplay, poster, loop controls) [#1442](https://github.com/getgrav/grav/pull/1442) + * Removed logging statement for invalid slug [#1459](https://github.com/getgrav/grav/issues/1459) 1. [](#bugfix) * Fix to force route/redirect matching from the start of the route by default [#1446](https://github.com/getgrav/grav/issues/1446) diff --git a/system/src/Grav/Common/Page/Page.php b/system/src/Grav/Common/Page/Page.php index 41e177cf0..fc3dc1d6c 100644 --- a/system/src/Grav/Common/Page/Page.php +++ b/system/src/Grav/Common/Page/Page.php @@ -1497,9 +1497,6 @@ class Page { if ($var !== null && $var !== "") { $this->slug = $var; - if (!preg_match('/^[a-z0-9][-a-z0-9]*$/', $this->slug)) { - Grav::instance()['log']->notice("Invalid slug set in YAML frontmatter: " . $this->rawRoute() . " => " . $this->slug); - } } if (empty($this->slug)) {