32 $this->hooks = $hooks;
33 $this->config = $config;
63 if (is_array($registered_items)) {
64 $items->merge($registered_items);
71 if (!isset(
$params[
'sort_by'])) {
72 $params[
'sort_by'] =
'priority';
78 $items = $this->hooks->trigger(
'register',
"menu:{$name}:{$entity->type}:{$entity->subtype}",
$params,
$items);
83 $items = $this->hooks->trigger(
'register',
"menu:{$name}:{$annotation->getType()}:{$annotation->getSubtype()}",
$params,
$items);
88 $items = $this->hooks->trigger(
'register',
"menu:{$name}:{$relationship->getType()}:{$relationship->getSubtype()}",
$params,
$items);
111 $builder->setSelected($selected_menu_item_name);
113 $params[
'menu'] = $builder->getMenu($sort_by);
114 $params[
'selected_item'] = $builder->getSelected();
119 $params[
'menu'] = $this->hooks->trigger(
'prepare',
"menu:{$name}:{$entity->type}:{$entity->subtype}",
$params,
$params[
'menu']);
124 $params[
'menu'] = $this->hooks->trigger(
'prepare',
"menu:{$name}:{$annotation->getType()}:{$annotation->getSubtype()}",
$params,
$params[
'menu']);
129 $params[
'menu'] = $this->hooks->trigger(
'prepare',
"menu:{$name}:{$relationship->getType()}:{$relationship->getSubtype()}",
$params,
$params[
'menu']);
152 if (
elgg_extract(
'prepare_vertical', $params) !==
true) {
156 $prepare =
function(
\ElggMenuItem $menu_item) use (&$prepare) {
157 $child_menu_vars = $menu_item->getChildMenuOptions();
158 if (empty($child_menu_vars[
'display'])) {
159 $child_menu_vars[
'display'] =
'toggle';
161 $menu_item->setChildMenuOptions($child_menu_vars);
163 foreach ($menu_item->getChildren() as $child_menu_item) {
164 $prepare($child_menu_item);
171 foreach ($section as $menu_item) {
172 $prepare($menu_item);
188 $selected_item =
elgg_extract(
'selected_item', $params);
193 $parent = $selected_item->getParent();
194 while ($parent instanceof \ElggMenuItem) {
195 $parent->setSelected();
196 $parent->addItemClass(
'elgg-has-selected-child');
197 $parent = $parent->getParent();
212 if (
elgg_extract(
'prepare_dropdown', $params) !==
true) {
224 'name' =>
'entity-menu-toggle',
225 'icon' =>
'ellipsis-v',
229 'display' =>
'dropdown',
230 'data-position' => json_encode([
231 'at' =>
'right bottom',
233 'collision' =>
'fit fit',
235 'class' =>
"elgg-{$menu_name}-dropdown-menu",
254 $item_contents_view =
elgg_extract(
'item_contents_view', $params,
'navigation/menu/elements/item/url');
256 $prepare =
function(
\ElggMenuItem $menu_item) use (&$prepare, $item_contents_view) {
257 if (!$menu_item->hasItemContentsView()) {
258 $menu_item->setItemContentsView($item_contents_view);
261 foreach ($menu_item->getChildren() as $child_menu_item) {
262 $prepare($child_menu_item);
269 foreach ($section as $menu_item) {
270 $prepare($menu_item);
291 $new_name =
implode(
'__', $names);
296 foreach ($names as
$name) {
303 $item->setSection($name);
305 $item->setData(
'menu_name', $name);
307 $all_items->add($item);
327 if (is_array($item)) {
336 $prepared_items->add($item);
339 return $prepared_items;
$params
Saves global plugin settings.
if(!$user||!$user->canDelete()) $name
$relationship
Elgg default relationship view.
elgg_extract($key, $array, $default=null, $strict=true)
Checks for $array[$key] and returns its value if it exists, else returns $default.