-
Notifications
You must be signed in to change notification settings - Fork 67
/
AbstractItemActionsMenu.php
129 lines (118 loc) · 5.42 KB
/
AbstractItemActionsMenu.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<?php
/**
* Routes.
*
* @copyright Zikula contributors (Zikula)
* @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License
* @author Zikula contributors <info@ziku.la>.
* @link https://ziku.la
* @link https://ziku.la
* @version Generated by ModuleStudio 1.2.0 (https://modulestudio.de).
*/
namespace Zikula\RoutesModule\Menu\Base;
use Knp\Menu\FactoryInterface;
use Knp\Menu\MenuItem;
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
use Symfony\Component\DependencyInjection\ContainerAwareTrait;
use Zikula\Common\Translator\TranslatorTrait;
use Zikula\UsersModule\Constant as UsersConstant;
use Zikula\RoutesModule\Entity\RouteEntity;
/**
* This is the item actions menu implementation class.
*/
class AbstractItemActionsMenu implements ContainerAwareInterface
{
use ContainerAwareTrait;
use TranslatorTrait;
/**
* Sets the translator.
*
* @param TranslatorInterface $translator Translator service instance
*/
public function setTranslator(/*TranslatorInterface */$translator)
{
$this->translator = $translator;
}
/**
* Builds the menu.
*
* @param FactoryInterface $factory Menu factory
* @param array $options List of additional options
*
* @return MenuItem The assembled menu
*/
public function menu(FactoryInterface $factory, array $options = [])
{
$menu = $factory->createItem('itemActions');
if (!isset($options['entity']) || !isset($options['area']) || !isset($options['context'])) {
return $menu;
}
$this->setTranslator($this->container->get('translator.default'));
$entity = $options['entity'];
$routeArea = $options['area'];
$context = $options['context'];
$permissionApi = $this->container->get('zikula_permissions_module.api.permission');
$currentUserApi = $this->container->get('zikula_users_module.current_user');
$entityDisplayHelper = $this->container->get('zikula_routes_module.entity_display_helper');
$menu->setChildrenAttribute('class', 'list-inline');
$currentUserId = $currentUserApi->isLoggedIn() ? $currentUserApi->get('uid') : UsersConstant::USER_ID_ANONYMOUS;
if ($entity instanceof RouteEntity) {
$component = 'ZikulaRoutesModule:Route:';
$instance = $entity->getKey() . '::';
$routePrefix = 'zikularoutesmodule_route_';
if ($routeArea == 'admin') {
$title = $this->__('Preview', 'zikularoutesmodule');
$menu->addChild($title, [
'route' => $routePrefix . 'display',
'routeParameters' => $entity->createUrlArgs()
]);
$menu[$title]->setLinkAttribute('target', '_blank');
$menu[$title]->setLinkAttribute('title', $this->__('Open preview page', 'zikularoutesmodule'));
$menu[$title]->setAttribute('icon', 'fa fa-search-plus');
}
if ($context != 'display') {
$title = $this->__('Details', 'zikularoutesmodule');
$menu->addChild($title, [
'route' => $routePrefix . $routeArea . 'display',
'routeParameters' => $entity->createUrlArgs()
]);
$menu[$title]->setLinkAttribute('title', str_replace('"', '', $entityDisplayHelper->getFormattedTitle($entity)));
$menu[$title]->setAttribute('icon', 'fa fa-eye');
}
if ($permissionApi->hasPermission($component, $instance, ACCESS_EDIT)) {
$title = $this->__('Edit', 'zikularoutesmodule');
$menu->addChild($title, [
'route' => $routePrefix . $routeArea . 'edit',
'routeParameters' => $entity->createUrlArgs()
]);
$menu[$title]->setLinkAttribute('title', $this->__('Edit this route', 'zikularoutesmodule'));
$menu[$title]->setAttribute('icon', 'fa fa-pencil-square-o');
$title = $this->__('Reuse', 'zikularoutesmodule');
$menu->addChild($title, [
'route' => $routePrefix . $routeArea . 'edit',
'routeParameters' => ['astemplate' => $entity->getKey()]
]);
$menu[$title]->setLinkAttribute('title', $this->__('Reuse for new route', 'zikularoutesmodule'));
$menu[$title]->setAttribute('icon', 'fa fa-files-o');
}
if ($permissionApi->hasPermission($component, $instance, ACCESS_DELETE)) {
$title = $this->__('Delete', 'zikularoutesmodule');
$menu->addChild($title, [
'route' => $routePrefix . $routeArea . 'delete',
'routeParameters' => $entity->createUrlArgs()
]);
$menu[$title]->setLinkAttribute('title', $this->__('Delete this route', 'zikularoutesmodule'));
$menu[$title]->setAttribute('icon', 'fa fa-trash-o');
}
if ($context == 'display') {
$title = $this->__('Back to overview', 'zikularoutesmodule');
$menu->addChild($title, [
'route' => $routePrefix . $routeArea . 'view'
]);
$menu[$title]->setLinkAttribute('title', $title);
$menu[$title]->setAttribute('icon', 'fa fa-reply');
}
}
return $menu;
}
}