src/Component/Core/Admin/Menu/MainMenuBuilder.php line 13

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace BitBag\OpenMarketplace\Component\Core\Admin\Menu;
  4. use Knp\Menu\ItemInterface;
  5. use Knp\Menu\Util\MenuManipulator;
  6. use Sylius\Bundle\UiBundle\Menu\Event\MenuBuilderEvent;
  7. final class MainMenuBuilder
  8. {
  9.     public function buildMenu(MenuBuilderEvent $menuBuilderEvent): void
  10.     {
  11.         $menu $menuBuilderEvent->getMenu();
  12.         $this->addStatisticsAndAnalyzingSection($menu);
  13.         $this->addMarketplaceSection($menu);
  14.         $this->buildCatalog($menu);
  15.         $this->buildSales($menu);
  16.         $this->buildConfiguration($menu);
  17.     }
  18.     private function addMarketplaceSection(ItemInterface $menu): void
  19.     {
  20.         $mvmRootMenuItem =
  21.             $menu
  22.                 ->addChild('marketplace')
  23.                 ->setLabel('open_marketplace.ui.marketplace');
  24.         $mvmRootMenuItem
  25.             ->addChild('open_marketplace_product_listings', [
  26.                 'route' => 'open_marketplace_admin_product_listing_index',
  27.             ])
  28.             ->setLabel('open_marketplace.ui.product_listings')
  29.             ->setLabelAttribute('icon''list');
  30.         $mvmRootMenuItem
  31.             ->addChild('vendors', [
  32.                 'route' => 'open_marketplace_admin_vendor_index',
  33.             ])
  34.             ->setLabel('open_marketplace.ui.vendors')
  35.             ->setLabelAttribute('icon''users');
  36.         $mvmRootMenuItem
  37.             ->addChild('conversations', ['route' => 'open_marketplace_admin_messaging_conversation_index'])
  38.             ->setLabel('open_marketplace.ui.menu.conversations')
  39.             ->setLabelAttribute('icon''inbox');
  40.         $mvmRootMenuItem
  41.             ->addChild('conversations_category', ['route' => 'open_marketplace_admin_messaging_conversation_category_index'])
  42.             ->setLabel('open_marketplace.ui.menu.conversation_categories')
  43.             ->setLabelAttribute('icon''inbox');
  44.         $mvmRootMenuItem
  45.             ->addChild('app.seller_plans', ['route' => 'app_admin_seller_plan_index'])
  46.             ->setLabel('app.ui.seller_plans')
  47.             ->setLabelAttribute('icon''gem');
  48.         $mvmRootMenuItem
  49.             ->addChild('app.subscriptions', ['route' => 'app_admin_subscription_index'])
  50.             ->setLabel('app.ui.subscriptions')
  51.             ->setLabelAttribute('icon''credit card');
  52.         $manipulator = new MenuManipulator();
  53.         $manipulator->moveChildToPosition($menu$mvmRootMenuItem0);
  54.     }
  55.     private function addStatisticsAndAnalyzingSection(ItemInterface $menu): void
  56.     {
  57.         $statsAnalyzingItem =
  58.             $menu
  59.                 ->addChild('statistics_analyzing')
  60.                 ->setLabel('app.stats.statistics_analyzing');
  61.         $statsAnalyzingItem
  62.             ->addChild('analytics', [
  63.                 'route' => 'app_admin_analytics_index',
  64.             ])
  65.             ->setLabel('app.stats.analytics')
  66.             ->setLabelAttribute('icon''chart line');
  67.         $statsAnalyzingItem
  68.             ->addChild('statistics', [
  69.                 'route' => 'app_admin_statistics_index',
  70.             ])
  71.             ->setLabel('app.stats.statistics')
  72.             ->setLabelAttribute('icon''chart bar');
  73.         $statsAnalyzingItem
  74.             ->addChild('impression_analytics', [
  75.                 'route' => 'app_admin_impression_analytics_index',
  76.             ])
  77.             ->setLabel('app.stats.impression_analytics')
  78.             ->setLabelAttribute('icon''chart line');
  79.         $manipulator = new MenuManipulator();
  80.         $manipulator->moveChildToPosition($menu$statsAnalyzingItem2);
  81.     }
  82.     private function buildCatalog(ItemInterface $menu): void
  83.     {
  84.         $catalog $menu->getChild('catalog');
  85.         $catalog?->addChild('app.tag', ['route' => 'app_admin_tag_index'])
  86.             ->setLabel('app.ui.tags')
  87.             ->setLabelAttribute('icon''tags');
  88.     }
  89.     private function buildSales(ItemInterface $menu): void
  90.     {
  91.         $sales $menu->getChild('sales');
  92.         $sales?->addChild('app.rfq', ['route' => 'app_admin_rfq_index'])
  93.             ->setLabel('app.ui.rfq')
  94.             ->setLabelAttribute('icon''handshake');
  95.         $sales?->addChild('app.inquiry', ['route' => 'app_admin_inquiry_index'])
  96.             ->setLabel('app.ui.inquiry')
  97.             ->setLabelAttribute('icon''question circle');
  98.     }
  99.     private function buildConfiguration(ItemInterface $menu): void
  100.     {
  101.         $configuration $menu->getChild('configuration');
  102.         $configuration?->addChild('app.email_configuration', ['route' => 'app_admin_email_configuration_index'])
  103.             ->setLabel('app.ui.email_configuration')
  104.             ->setLabelAttribute('icon''envelope outline');
  105.         $configuration?->addChild('app.email_scheduler', ['route' => 'app_admin_email_scheduler_index'])
  106.             ->setLabel('app.ui.email_scheduler')
  107.             ->setLabelAttribute('icon''calendar times outline');
  108.     }
  109. }