- A lot of bugfixes made for this release.
This commit is contained in:
1 parent
4e909b2840
commit
8df38b568c
13 files changed
+159
-71
No files matched your search
@@ -14,7 +14,7 @@ class UrlExtension implements Extension {
|
||||
|
||||
protected array $routesTarget;
|
||||
|
||||
public array $tokens = [ "url" , "route", "asset", "url.parameters" ];
|
||||
public array $tokens = [ "url" , "route", "asset", "url.current", "url.parameters" ];
|
||||
|
||||
public function __construct(Context $context, string $urlBase = "", string $assetToken = "") {
|
||||
$this->urlBase = trim($urlBase, "/");
|
||||
@@ -33,7 +33,10 @@ class UrlExtension implements Extension {
|
||||
|
||||
case "url":
|
||||
return "<?php echo \$picea->compiler->getExtensionFromToken('$token')->buildUrl($arguments) ?>";
|
||||
|
||||
|
||||
case "url.current":
|
||||
return "<?php echo \$picea->compiler->getExtensionFromToken('$token')->currentUrl($arguments) ?>";
|
||||
|
||||
case "url.parameters":
|
||||
return "<?php echo \$picea->compiler->getExtensionFromToken('$token')->setUrlParameters($arguments) ?>";
|
||||
}
|
||||
@@ -44,6 +47,7 @@ class UrlExtension implements Extension {
|
||||
public function register(Context $context) : void
|
||||
{
|
||||
$context->pushFunction("url", [ $this, 'buildUrl' ]);
|
||||
$context->pushFunction("current_url", [ $this, 'currentUrl' ]);
|
||||
$context->pushFunction("asset", [ $this, 'buildAssetUrl' ]);
|
||||
$context->pushFunction("route", [ $this, 'buildRouteUrl' ]);
|
||||
}
|
||||
@@ -58,6 +62,11 @@ class UrlExtension implements Extension {
|
||||
return $url . ( $parameters ? "?" . http_build_query($parameters) : "" );
|
||||
}
|
||||
|
||||
public function currentUrl(array $parameters = []) : string
|
||||
{
|
||||
return $this->buildUrl($this->uri(), $parameters);
|
||||
}
|
||||
|
||||
public function buildUrl(string $uri = "", array $parameters = []) : string
|
||||
{
|
||||
return $this->setUrlParameters($this->url() . "/" . ltrim($uri, "/"), $parameters);
|
||||
@@ -108,11 +117,7 @@ class UrlExtension implements Extension {
|
||||
$uri = explode('?', $uri, 2)[0];
|
||||
}
|
||||
|
||||
if ( ($base = $this->config['base'] ?? false) && ( stripos($uri, $base) === 0 ) ) {
|
||||
$uri = substr($uri, strlen($base));
|
||||
}
|
||||
|
||||
return '/' . ltrim($uri, '/');
|
||||
return '/' . ltrim(substr($uri, strlen($this->base())), '/');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -177,23 +182,23 @@ class UrlExtension implements Extension {
|
||||
if (strpos($item[1], "=") !== false) {
|
||||
list($variable, $default) = explode('=', $item[1]);
|
||||
}
|
||||
elseif (strpos($item[1], ":") !== false) {
|
||||
list($variable, ) = explode(':', $item[1]);
|
||||
}
|
||||
else {
|
||||
$variable = $item[1];
|
||||
}
|
||||
|
||||
|
||||
if ( array_key_exists($variable, $arguments) ) {
|
||||
$value = $arguments[ $item[1] ];
|
||||
}
|
||||
else if ( isset($default) ) {
|
||||
$value = ""; # $default;
|
||||
$value = $arguments[ $variable ];
|
||||
unset($arguments[ $variable ]);
|
||||
}
|
||||
else {
|
||||
$variable = $item[1];
|
||||
$value = $default ?? "";
|
||||
}
|
||||
|
||||
$search[ $item[0] ] = $value;
|
||||
|
||||
unset($arguments[ $item[1] ]);
|
||||
}
|
||||
|
||||
$route = str_replace(array_keys($search), array_values($search), $route);
|
||||
|
||||
Reference in new issue
Block a user