Skip to content

Commit

Permalink
Add "menu_title" admin view widget.
Browse files Browse the repository at this point in the history
  • Loading branch information
Igor Nikolaev committed Nov 26, 2020
1 parent 4f77d90 commit 93611a0
Show file tree
Hide file tree
Showing 6 changed files with 101 additions and 5 deletions.
66 changes: 66 additions & 0 deletions Admin/View/MenuTitleWidget.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
<?php declare(strict_types=1);
/**
* @author Igor Nikolaev <[email protected]>
* @copyright Copyright (c) 2020, Darvin Studio
* @link https://www.darvin-studio.ru
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

namespace Darvin\MenuBundle\Admin\View;

use Darvin\AdminBundle\Security\Permissions\Permission;
use Darvin\AdminBundle\View\Widget\Widget\AbstractWidget;
use Darvin\MenuBundle\Configuration\MenuConfigurationInterface;
use Darvin\MenuBundle\Entity\Menu\Item;

/**
* Menu title admin view widget
*/
class MenuTitleWidget extends AbstractWidget
{
/**
* @var \Darvin\MenuBundle\Configuration\MenuConfigurationInterface
*/
private $menuConfig;

/**
* @param \Darvin\MenuBundle\Configuration\MenuConfigurationInterface $menuConfig Menu config
*/
public function __construct(MenuConfigurationInterface $menuConfig)
{
$this->menuConfig = $menuConfig;
}

/**
* {@inheritDoc}
*/
protected function createContent(object $entity, array $options): ?string
{
/** @var \Darvin\MenuBundle\Entity\Menu\Item $item */
$item = $entity;

if ($this->menuConfig->hasMenu($item->getMenu())) {
return $this->menuConfig->getMenu($item->getMenu())->getTitle();
}

return $item->getMenu();
}

/**
* {@inheritDoc}
*/
protected function getAllowedEntityClasses(): iterable
{
yield Item::class;
}

/**
* {@inheritDoc}
*/
protected function getRequiredPermissions(): iterable
{
yield Permission::VIEW;
}
}
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -123,3 +123,5 @@ equals to
```

but in the last case alias may be defined in runtime.

7.1.2: Add "menu_title" admin view widget.
10 changes: 10 additions & 0 deletions Configuration/MenuConfiguration.php
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,16 @@ public function getMenu(string $alias): Menu
return $menus[$alias];
}

/**
* {@inheritDoc}
*/
public function hasMenu(string $alias): bool
{
$menus = $this->getMenus();

return isset($menus[$alias]);
}

/**
* {@inheritDoc}
*/
Expand Down
7 changes: 7 additions & 0 deletions Configuration/MenuConfigurationInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,13 @@ interface MenuConfigurationInterface
*/
public function getMenu(string $alias): Menu;

/**
* @param string $alias Menu alias
*
* @return bool
*/
public function hasMenu(string $alias): bool;

/**
* @return \Darvin\MenuBundle\Configuration\Menu[]
*
Expand Down
5 changes: 3 additions & 2 deletions Resources/config/admin/menu/item.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,16 @@ view:
index:
fields:
menuTitle:
size: sm
size: sm
widget: menu_title
position:
type: position
enabled:
type: checkbox
showChildren:
type: checkbox
slugMapItem:
size: xxxl
size: xxxl
widget: slug_map_item_link
image:
size: xxs
Expand Down
16 changes: 13 additions & 3 deletions Resources/config/services/admin.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@ parameters:

darvin_menu.admin.menu_item_sorter.class: Darvin\MenuBundle\Admin\Sorter\MenuItemSorter

darvin_menu.admin.slug_map_item_link_view_widget.class: Darvin\MenuBundle\Admin\View\SlugMapItemLinkWidget
darvin_menu.admin.view.widget.menu_title.class: Darvin\MenuBundle\Admin\View\MenuTitleWidget

darvin_menu.admin.view.widget.slug_map_item_link.class: Darvin\MenuBundle\Admin\View\SlugMapItemLinkWidget

services:
darvin_menu.admin.form_type.menu:
Expand Down Expand Up @@ -72,8 +74,16 @@ services:
- '@darvin_menu.slug_map.object_loader'
- '@darvin_utils.tree.sorter'

darvin_menu.admin.slug_map_item_link_view_widget:
class: '%darvin_menu.admin.slug_map_item_link_view_widget.class%'
darvin_menu.admin.view.widget.menu_title:
class: '%darvin_menu.admin.view.widget.menu_title.class%'
parent: darvin_admin.view.widget.abstract
arguments:
- '@darvin_menu.configuration.menu'
tags:
- { name: darvin_admin.view_widget }

darvin_menu.admin.view.widget.slug_map_item_link:
class: '%darvin_menu.admin.view.widget.slug_map_item_link.class%'
parent: darvin_admin.view.widget.abstract
arguments:
- '@darvin_admin.entity_namer'
Expand Down

0 comments on commit 93611a0

Please sign in to comment.