From f26b515bd2e8b9b1438f86dcf75207a1367eeabf Mon Sep 17 00:00:00 2001 From: Flavio Copes Date: Thu, 18 May 2017 11:12:23 +0200 Subject: [PATCH 1/3] Remove unpublished pages from the translated languages, move into untranslated list Refs https://github.com/getgrav/grav-plugin-sitemap/issues/43 --- system/src/Grav/Common/Page/Page.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/system/src/Grav/Common/Page/Page.php b/system/src/Grav/Common/Page/Page.php index a3fc3dc5e1..a535c90bf2 100644 --- a/system/src/Grav/Common/Page/Page.php +++ b/system/src/Grav/Common/Page/Page.php @@ -192,6 +192,10 @@ public function translatedLanguages() $route = $aPage->slug(); } + if (!$aPage->published()) { + continue; + } + $translatedLanguages[$language] = $route; } } From 558327a1f9a2d0b7df94d905388cb5ef5a1457f7 Mon Sep 17 00:00:00 2001 From: Flavio Copes Date: Thu, 18 May 2017 11:12:53 +0200 Subject: [PATCH 2/3] Add missing part --- system/src/Grav/Common/Page/Page.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/system/src/Grav/Common/Page/Page.php b/system/src/Grav/Common/Page/Page.php index a535c90bf2..077ac299ec 100644 --- a/system/src/Grav/Common/Page/Page.php +++ b/system/src/Grav/Common/Page/Page.php @@ -216,7 +216,13 @@ public function untranslatedLanguages() foreach ($languages as $language) { $path = $this->path . DS . $this->folder . DS . $filename . '.' . $language . '.md'; - if (!file_exists($path)) { + if (file_exists($path)) { + $aPage = new Page(); + $aPage->init(new \SplFileInfo($path), $language . '.md'); + if (!$aPage->published()) { + $untranslatedLanguages[] = $language; + } + } else { $untranslatedLanguages[] = $language; } } From 073c9e9e26b43633812ef4a06878f1647b88a3c4 Mon Sep 17 00:00:00 2001 From: Flavio Copes Date: Thu, 18 May 2017 12:17:35 +0200 Subject: [PATCH 3/3] Add flags to avoid breaking changes --- system/src/Grav/Common/Page/Page.php | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/system/src/Grav/Common/Page/Page.php b/system/src/Grav/Common/Page/Page.php index 077ac299ec..c177a6a843 100644 --- a/system/src/Grav/Common/Page/Page.php +++ b/system/src/Grav/Common/Page/Page.php @@ -172,9 +172,12 @@ protected function processFrontmatter() /** * Return an array with the routes of other translated languages + * + * @param bool $onlyPublished only return published translations + * * @return array the page translated languages */ - public function translatedLanguages() + public function translatedLanguages($onlyPublished = false) { $filename = substr($this->name, 0, -(strlen($this->extension()))); $config = Grav::instance()['config']; @@ -192,7 +195,7 @@ public function translatedLanguages() $route = $aPage->slug(); } - if (!$aPage->published()) { + if ($onlyPublished && !$aPage->published()) { continue; } @@ -205,9 +208,12 @@ public function translatedLanguages() /** * Return an array listing untranslated languages available + * + * @param bool $includeUnpublished also list unpublished translations + * * @return array the page untranslated languages */ - public function untranslatedLanguages() + public function untranslatedLanguages($includeUnpublished = false) { $filename = substr($this->name, 0, -(strlen($this->extension()))); $config = Grav::instance()['config']; @@ -219,7 +225,7 @@ public function untranslatedLanguages() if (file_exists($path)) { $aPage = new Page(); $aPage->init(new \SplFileInfo($path), $language . '.md'); - if (!$aPage->published()) { + if ($includeUnpublished && !$aPage->published()) { $untranslatedLanguages[] = $language; } } else {