Lots of cleanup and stuff.

This commit is contained in:
James Cole
2015-06-06 23:09:12 +02:00
parent 1a1f127993
commit 40b3097374
61 changed files with 361 additions and 323 deletions

View File

@@ -49,7 +49,10 @@ class General extends Twig_Extension
$this->getCurrencySymbol(),
$this->phpdate(),
$this->env(),
$this->activeRoute()
$this->activeRouteStrict(),
$this->activeRoutePartial(),
$this->activeRoutePartialWhat(),
];
}
@@ -188,31 +191,65 @@ class General extends Twig_Extension
}
/**
* Will return "active" when the current route matches the given argument
* exactly.
*
* @return Twig_SimpleFunction
*/
protected function activeRoute()
protected function activeRouteStrict()
{
return new Twig_SimpleFunction(
'activeRoute', function ($context) {
'activeRouteStrict', function () {
$args = func_get_args();
$route = $args[0]; // name of the route.
if (Route::getCurrentRoute()->getName() == $route) {
return 'active because-route-matches-strict';
}
return 'not-xxx-at-all';
}
);
}
/**
* Will return "active" when a part of the route matches the argument.
* ie. "accounts" will match "accounts.index".
*
* @return Twig_SimpleFunction
*/
protected function activeRoutePartial()
{
return new Twig_SimpleFunction(
'activeRoutePartial', function () {
$args = func_get_args();
$route = $args[0]; // name of the route.
if (!(strpos(Route::getCurrentRoute()->getName(), $route) === false)) {
return 'active because-route-matches-non-strict';
}
return 'not-xxx-at-all';
}
);
}
/**
* This function will return "active" when the current route matches the first argument (even partly)
* but, the variable $what has been set and matches the second argument.
*
* @return Twig_SimpleFunction
*/
protected function activeRoutePartialWhat()
{
return new Twig_SimpleFunction(
'activeRoutePartialWhat', function ($context) {
$args = func_get_args();
$route = $args[1];
$what = isset($args[2]) ? $args[2] : false;
$strict = isset($args[3]) ? $args[3] : false;
$route = $args[1]; // name of the route.
$what = $args[2]; // name of the route.
$activeWhat = isset($context['what']) ? $context['what'] : false;
// activeRoute
if (!($what === false)) {
if ($what == $activeWhat && Route::getCurrentRoute()->getName() == $route) {
return 'active because-active-what';
}
} else {
if (!$strict && !(strpos(Route::getCurrentRoute()->getName(), $route) === false)) {
return 'active because-route-matches-non-strict';
} else {
if ($strict && Route::getCurrentRoute()->getName() == $route) {
return 'active because-route-matches-strict';
}
}
if ($what == $activeWhat && !(strpos(Route::getCurrentRoute()->getName(), $route) === false)) {
return 'active because-route-matches-non-strict-what';
}
return 'not-xxx-at-all';