Add $dropIndex parameter to Pico::getPageUrl() method

This allows one to prevent Pico from removing the last "index" path component. Example use case: Pico's official admin plugin. We must distinguish between "content/sub.md" and "content/sub/index.md", otherwise it wouldn't be possible to edit both pages.
This commit is contained in:
Daniel Rudolf 2016-07-14 00:24:06 +02:00
parent 848e28b7e6
commit aa1bc077a7
No known key found for this signature in database
GPG Key ID: A061F02CD8DE4538

View File

@ -1424,9 +1424,11 @@ class Pico
* @param string $page identifier of the page to link to * @param string $page identifier of the page to link to
* @param array|string $queryData either an array containing properties to * @param array|string $queryData either an array containing properties to
* create a URL-encoded query string from, or a already encoded string * create a URL-encoded query string from, or a already encoded string
* @param boolean $dropIndex when the last path component is "index",
* then passing TRUE (default) leads to removing this path component
* @return string URL * @return string URL
*/ */
public function getPageUrl($page, $queryData = null) public function getPageUrl($page, $queryData = null, $dropIndex = true)
{ {
if (is_array($queryData)) { if (is_array($queryData)) {
$queryData = http_build_query($queryData, '', '&'); $queryData = http_build_query($queryData, '', '&');
@ -1438,11 +1440,13 @@ class Pico
} }
// drop "index" // drop "index"
if ($page === 'index') { if ($dropIndex) {
$page = ''; if ($page === 'index') {
} elseif (($pagePathLength = strrpos($page, '/')) !== false) { $page = '';
if (substr($page, $pagePathLength + 1) === 'index') { } elseif (($pagePathLength = strrpos($page, '/')) !== false) {
$page = substr($page, 0, $pagePathLength); if (substr($page, $pagePathLength + 1) === 'index') {
$page = substr($page, 0, $pagePathLength);
}
} }
} }