BreadcrumbsHandler.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. namespace ModulesGarden\ProxmoxAddon\Core\UI\Helpers;
  3. use \ModulesGarden\ProxmoxAddon\Core\ServiceLocator;
  4. use \ModulesGarden\ProxmoxAddon\Core\Helper\BuildUrl;
  5. use \ModulesGarden\ProxmoxAddon\Core\App\Controllers\Instances\Addon\Config;
  6. /**
  7. * BreadcrumbsHandler
  8. *
  9. * @author Sławomir Miśkowicz <slawomir@modulesgarden.com>
  10. */
  11. class BreadcrumbsHandler
  12. {
  13. use \ModulesGarden\ProxmoxAddon\Core\Traits\IsAdmin;
  14. protected $breadcrumbs = [];
  15. public function __construct()
  16. {
  17. $this->loadDefault();
  18. }
  19. public function addBreadcrumb($url = null, $title = null, $order = null, $rawTitle = null)
  20. {
  21. $this->breadcrumbs[] = new \ModulesGarden\ProxmoxAddon\Core\UI\Helpers\Breadcrumb(
  22. $url, $title, $this->getOrder($order), $rawTitle);
  23. }
  24. public function loadDefault()
  25. {
  26. if (!$this->isAdmin())
  27. {
  28. $clientAreaName = ServiceLocator::call(Config::class)->getConfigValue('clientareaName', 'default');
  29. $url = BuildUrl::getUrl();
  30. $this->addBreadcrumb($url, $clientAreaName, null);
  31. }
  32. //todo AA
  33. if ($this->isAdmin())
  34. {
  35. return;
  36. }
  37. $router = new \ModulesGarden\ProxmoxAddon\Core\App\Controllers\Router();
  38. if ($router->getControllerMethod() !== 'index')
  39. {
  40. $url = BuildUrl::getUrl($router->getController(), $router->getControllerMethod());
  41. $this->addBreadcrumb($url, $router->getController() . '_' . $router->getControllerMethod(), null);
  42. }
  43. }
  44. public function getOrder($order = null)
  45. {
  46. if (is_int($order) && $order > 0)
  47. {
  48. return $order;
  49. }
  50. if (count($this->breadcrumbs) === 0)
  51. {
  52. return 100;
  53. }
  54. $last = end($this->breadcrumbs);
  55. return $last->getOrder() + 100;
  56. }
  57. public function getBreadcrumbs()
  58. {
  59. //sort
  60. $bcList = [];
  61. foreach ($this->breadcrumbs as $brc)
  62. {
  63. $bcDetails = $brc->getBreadcrumb();
  64. $bcList[$bcDetails['url']] = $bcDetails['title'];
  65. }
  66. return $bcList;
  67. }
  68. }