mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-09-05 04:03:26 +00:00
Fix complicated method.
This commit is contained in:
@@ -54,10 +54,28 @@ class Breadcrumbs extends AbstractExtension
|
||||
|
||||
// loop for actual breadcrumb:
|
||||
$arr = config(sprintf('bc.%s', $name));
|
||||
$breadcrumbs = [];
|
||||
|
||||
if (null === $arr) {
|
||||
throw new FireflyException(sprintf('No breadcrumbs for route "%s".', $name));
|
||||
}
|
||||
$breadcrumbs = $this->getBreadcrumbs($arr);
|
||||
|
||||
return $this->getHtml($breadcrumbs);
|
||||
|
||||
},
|
||||
['is_safe' => ['html']]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $arr
|
||||
*
|
||||
* @return array
|
||||
* @throws FireflyException
|
||||
*/
|
||||
private function getBreadcrumbs(array $arr)
|
||||
{
|
||||
$breadcrumbs = [];
|
||||
$hasParent = true;
|
||||
$loop = 0;
|
||||
while (true === $hasParent && $loop < 30) {
|
||||
@@ -74,9 +92,18 @@ class Breadcrumbs extends AbstractExtension
|
||||
}
|
||||
$loop++; // safety catch
|
||||
}
|
||||
// reverse order
|
||||
$breadcrumbs = array_reverse($breadcrumbs);
|
||||
|
||||
// reverse order
|
||||
return array_reverse($breadcrumbs);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $breadcrumbs
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
private function getHtml(array $breadcrumbs): string
|
||||
{
|
||||
// get HTML
|
||||
$html = '<ol class="breadcrumb float-sm-right">';
|
||||
foreach ($breadcrumbs as $index => $breadcrumb) {
|
||||
@@ -95,9 +122,7 @@ class Breadcrumbs extends AbstractExtension
|
||||
$html .= sprintf('<li class="%1$s"><a href="%2$s" title="%3$s">%3$s</a></li>', $class, $route, trans($breadcrumb['title']));
|
||||
}
|
||||
$html .= '</ol>';
|
||||
|
||||
return $html;
|
||||
},
|
||||
['is_safe' => ['html']]
|
||||
);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user