Elgg  Version 6.2
navigation.php
Go to the documentation of this file.
1 <?php
83 function elgg_register_menu_item(string $menu_name, array|\ElggMenuItem $menu_item): void {
84  if (is_array($menu_item)) {
85  $menu_item = \ElggMenuItem::factory($menu_item);
86  }
87 
88  _elgg_services()->menus->registerMenuItem($menu_name, $menu_item);
89 }
90 
100 function elgg_unregister_menu_item(string $menu_name, string $item_name): ?\ElggMenuItem {
101  return _elgg_services()->menus->unregisterMenuItem($menu_name, $item_name);
102 }
103 
120 function elgg_register_title_button(string $name = 'add', string $entity_type = '', string $entity_subtype = ''): void {
121 
123  if (!$owner) {
124  // noone owns the page so this is probably an all site list page
126  }
127 
128  if ($name === 'add' && $owner instanceof \ElggUser) {
129  // make sure the add link goes to the current logged in user, not the page owner
130  $logged_in_user = elgg_get_logged_in_user_entity();
131  if (!empty($logged_in_user) && ($logged_in_user->guid !== $owner->guid)) {
132  // change the 'owner' for the link to the current logged in user
133  $owner = $logged_in_user;
134  }
135  }
136 
137  // do we have an owner and is the current user allowed to create content here
138  if (!$owner instanceof \ElggEntity || empty($entity_type) || empty($entity_subtype) || !$owner->canWriteToContainer(0, $entity_type, $entity_subtype)) {
139  return;
140  }
141 
142  $href = elgg_generate_url("{$name}:{$entity_type}:{$entity_subtype}", [
143  'guid' => $owner->guid,
144  ]);
145 
146  if (elgg_language_key_exists("{$name}:{$entity_type}:{$entity_subtype}")) {
147  $text = elgg_echo("{$name}:{$entity_type}:{$entity_subtype}");
148  } else {
149  $text = elgg_echo($name);
150  }
151 
152  // register the title menu item
153  elgg_register_menu_item('title', [
154  'name' => $name,
155  'icon' => $name === 'add' ? 'plus' : '',
156  'href' => $href,
157  'text' => $text,
158  'link_class' => 'elgg-button elgg-button-action',
159  ]);
160 }
if(! $user||! $user->canDelete()) $name
Definition: delete.php:22
$owner
Definition: upload.php:7
return[ 'admin/delete_admin_notices'=>['access'=> 'admin'], 'admin/menu/save'=>['access'=> 'admin'], 'admin/plugins/activate'=>['access'=> 'admin'], 'admin/plugins/activate_all'=>['access'=> 'admin'], 'admin/plugins/deactivate'=>['access'=> 'admin'], 'admin/plugins/deactivate_all'=>['access'=> 'admin'], 'admin/plugins/set_priority'=>['access'=> 'admin'], 'admin/security/security_txt'=>['access'=> 'admin'], 'admin/security/settings'=>['access'=> 'admin'], 'admin/security/regenerate_site_secret'=>['access'=> 'admin'], 'admin/site/cache/invalidate'=>['access'=> 'admin'], 'admin/site/flush_cache'=>['access'=> 'admin'], 'admin/site/icons'=>['access'=> 'admin'], 'admin/site/set_maintenance_mode'=>['access'=> 'admin'], 'admin/site/set_robots'=>['access'=> 'admin'], 'admin/site/theme'=>['access'=> 'admin'], 'admin/site/unlock_upgrade'=>['access'=> 'admin'], 'admin/site/settings'=>['access'=> 'admin'], 'admin/upgrade'=>['access'=> 'admin'], 'admin/upgrade/reset'=>['access'=> 'admin'], 'admin/user/ban'=>['access'=> 'admin'], 'admin/user/bulk/ban'=>['access'=> 'admin'], 'admin/user/bulk/delete'=>['access'=> 'admin'], 'admin/user/bulk/unban'=>['access'=> 'admin'], 'admin/user/bulk/validate'=>['access'=> 'admin'], 'admin/user/change_email'=>['access'=> 'admin'], 'admin/user/delete'=>['access'=> 'admin'], 'admin/user/login_as'=>['access'=> 'admin'], 'admin/user/logout_as'=>[], 'admin/user/makeadmin'=>['access'=> 'admin'], 'admin/user/resetpassword'=>['access'=> 'admin'], 'admin/user/removeadmin'=>['access'=> 'admin'], 'admin/user/unban'=>['access'=> 'admin'], 'admin/user/validate'=>['access'=> 'admin'], 'annotation/delete'=>[], 'avatar/upload'=>[], 'comment/save'=>[], 'diagnostics/download'=>['access'=> 'admin'], 'entity/chooserestoredestination'=>[], 'entity/delete'=>[], 'entity/mute'=>[], 'entity/restore'=>[], 'entity/subscribe'=>[], 'entity/trash'=>[], 'entity/unmute'=>[], 'entity/unsubscribe'=>[], 'login'=>['access'=> 'logged_out'], 'logout'=>[], 'notifications/mute'=>['access'=> 'public'], 'plugins/settings/remove'=>['access'=> 'admin'], 'plugins/settings/save'=>['access'=> 'admin'], 'plugins/usersettings/save'=>[], 'register'=>['access'=> 'logged_out', 'middleware'=>[\Elgg\Router\Middleware\RegistrationAllowedGatekeeper::class,],], 'river/delete'=>[], 'settings/notifications'=>[], 'settings/notifications/subscriptions'=>[], 'user/changepassword'=>['access'=> 'public'], 'user/requestnewpassword'=>['access'=> 'public'], 'useradd'=>['access'=> 'admin'], 'usersettings/save'=>[], 'widgets/add'=>[], 'widgets/delete'=>[], 'widgets/move'=>[], 'widgets/save'=>[],]
Definition: actions.php:73
$text
Definition: button.php:33
Elgg Menu Item.
static factory(array $options)
Create an ElggMenuItem from an associative array.
_elgg_services()
Get the global service provider.
Definition: elgglib.php:353
elgg_register_title_button(string $name='add', string $entity_type='', string $entity_subtype='')
Convenience function for registering a button to the title menu.
Definition: navigation.php:120
elgg_unregister_menu_item(string $menu_name, string $item_name)
Remove an item from a menu.
Definition: navigation.php:100
elgg_register_menu_item(string $menu_name, array|\ElggMenuItem $menu_item)
Elgg navigation library Functions for managing menus and other navigational elements.
Definition: navigation.php:83
elgg_language_key_exists(string $key, string $language='en')
Check if a given language key exists.
Definition: languages.php:44
elgg_echo(string $message_key, array $args=[], string $language='')
Elgg language module Functions to manage language and translations.
Definition: languages.php:17
if($item->getLinkClass()) $href
Definition: submit.php:22
elgg_generate_url(string $name, array $parameters=[])
Generate a URL for named route.
elgg_get_page_owner_entity()
Gets the owner entity for the current page.
Definition: pageowner.php:23
elgg_get_logged_in_user_entity()
Return the current logged in user, or null if no user is logged in.
Definition: sessions.php:24
if(! $menu)
Definition: navigation.php:20