101 if (is_array($menu_item)) {
106 elgg_log(
"Unable to add menu item '{$menu_item_name}' to '$menu_name' menu",
'WARNING');
112 elgg_log(
'Second argument of elgg_register_menu_item() must be an instance of ' 113 .
'ElggMenuItem or an array of menu item factory options',
'ERROR');
147 foreach ($menus[$menu_name] as
$index => $menu_object) {
149 if ($menu_object instanceof
ElggMenuItem && $menu_object->getName() == $item_name) {
151 unset($menus[$menu_name][
$index]);
179 foreach ($menus[$menu_name] as $menu_object) {
181 if ($menu_object->getName() == $item_name) {
208 foreach ($menus[$menu_name] as
$index => $menu_object) {
210 if ($menu_object->getName() == $item_name) {
245 if (!empty($logged_in_user) && ($logged_in_user->guid !==
$owner->guid)) {
252 if (!
$owner || !
$owner->canWriteToContainer(0, $entity_type, $entity_subtype)) {
264 $href =
"$handler/$name/$owner->guid";
278 'icon' =>
$name ===
'add' ?
'plus' :
'',
281 'link_class' =>
'elgg-button elgg-button-action',
360 array_shift(
$params[
'segments']);
364 _elgg_services()->logger->error(
'"prepare, breadcrumbs" hook must return an array of breadcrumbs');
370 if (isset($breadcrumb[
'link'])) {
371 elgg_deprecated_notice(
"Breadcrumb [{$text}] requires 'href' instead of 'link' set in the configuration",
'3.0');
376 if (isset($breadcrumb[
'title'])) {
377 elgg_deprecated_notice(
"Breadcrumb [{$text}] requires 'text' instead of 'title' set in the configuration",
'3.0');
384 if (!isset($breadcrumb[
'name'])) {
407 if (empty($last_crumb[
'href'])) {
431 $entity_url = $link_self ? $entity->
getURL() :
false;
453 $collection_route =
"collection:$entity_type:$entity_subtype:friends";
455 $collection_route =
"collection:$entity_type:$entity_subtype:owner";
457 $collection_route =
"collection:$entity_type:$entity_subtype:group";
459 $collection_route =
"collection:$entity_type:$entity_subtype:all";
461 $collection_route =
"collection:$entity_type:$entity_subtype:container";
465 if ($parameters !==
false) {
479 $collection_url =
elgg_generate_url(
"collection:$entity_type:$entity_subtype:all");
496 if (!isset($selected)) {
508 'href' => (isset(
$vars[
'all_link'])) ?
$vars[
'all_link'] :
"$context/all",
509 'selected' => ($selected ==
'all'),
517 'href' => (isset($vars[
'mine_link'])) ? $vars[
'mine_link'] :
"$context/owner/{$user->username}",
518 'selected' => ($selected ==
'mine'),
524 'selected' => $selected,
581 $registered =
$menu->getItems(
'default');
582 if (empty($registered)) {
586 $has_selected =
false;
589 foreach ($registered as
$item) {
592 $item->setPriority($featured_index);
597 if ($item->getSelected()) {
598 $has_selected =
true;
602 if (!$has_selected) {
609 if ($item->getHref() == $current_url) {
617 foreach ($registered as $item) {
618 if ($is_selected($item)) {
619 $item->setSelected(
true);
627 $max_display_items = 5;
632 if ($max_display_items &&
$num_menu_items > ($max_display_items + 1)) {
633 $more = array_splice($registered, $max_display_items);
641 'icon_alt' =>
'angle-down',
645 foreach ($more as &$item) {
646 $item->setParentName(
'more');
649 $dropdown->setChildren($more);
651 $registered[] = $dropdown;
654 $menu->getSection(
'default')->fill($registered);
674 $menu = $hook->getValue();
677 $prepare =
function(
ElggMenuItem $menu_item) use (&$prepare) {
678 $child_menu_vars = $menu_item->getChildMenuOptions();
679 if (empty($child_menu_vars[
'display'])) {
680 $child_menu_vars[
'display'] =
'toggle';
682 $menu_item->setChildMenuOptions($child_menu_vars);
684 foreach ($menu_item->getChildren() as $child_menu_item) {
685 $prepare($child_menu_item);
692 $prepare($menu_item);
697 $selected_item = $hook->getParam(
'selected_item');
699 $parent = $selected_item->getParent();
700 while ($parent instanceof \ElggMenuItem) {
701 $parent->setSelected();
702 $parent->addItemClass(
'elgg-has-selected-child');
703 $parent = $parent->getParent();
731 elgg_deprecated_notice(
"Using 'handler' in entity menu parameters is deprecated. Use named routes instead.",
'3.0');
733 $edit_url =
"$handler/edit/{$entity->guid}";
750 if (
$entity->canEdit() && $edit_url) {
761 if (
$entity->canDelete() && $delete_url) {
767 'href' => $delete_url,
791 $menu = $hook->getValue();
794 $is_dropdown = $hook->getParam(
'dropdown',
true);
795 if ($is_dropdown ===
false) {
804 $menu->getSection(
'default')->fill([
806 'name' =>
'entity-menu-toggle',
807 'icon' =>
'ellipsis-v',
811 'display' =>
'dropdown',
812 'data-position' => json_encode([
813 'at' =>
'right bottom',
815 'collision' =>
'fit fit',
817 'class' =>
"elgg-{$hook->getParam('name')}-dropdown-menu",
836 $entity = $hook->getEntityParam();
841 $return = $hook->getValue();
846 'subtype' =>
$entity->getSubtype(),
847 'container_guid' =>
$entity->container_guid,
852 $previous_options[
'wheres'] = [
853 function (\Elgg\Database\QueryBuilder $qb, $main_alias) use (
$entity) {
863 $previous_options[
'order_by'] = [
864 new \Elgg\Database\Clauses\OrderByClause(
'time_created',
'DESC'),
865 new \Elgg\Database\Clauses\OrderByClause(
'guid',
'DESC'),
870 $previous = $previous[0];
872 'name' =>
'previous',
874 'entity' => $previous,
875 'href' => $previous->getUrl(),
876 'title' => $previous->getDisplayName(),
877 'icon' =>
'angle-double-left',
878 'link_class' =>
'elgg-button elgg-button-outline',
884 $next_options[
'wheres'] = [
885 function (\Elgg\Database\QueryBuilder $qb, $main_alias) use (
$entity) {
895 $next_options[
'order_by'] = [
896 new \Elgg\Database\Clauses\OrderByClause(
'time_created',
'ASC'),
897 new \Elgg\Database\Clauses\OrderByClause(
'guid',
'ASC'),
907 'href' =>
$next->getUrl(),
908 'title' =>
$next->getDisplayName(),
909 'icon_alt' =>
'angle-double-right',
910 'link_class' =>
'elgg-button elgg-button-outline',
942 'href' =>
"action/widgets/delete?widget_guid=$widget->guid",
944 'link_class' =>
'elgg-widget-delete-button',
945 'id' =>
"elgg-widget-delete-button-$widget->guid",
946 'data-elgg-widget-type' =>
$widget->handler,
954 'name' =>
'settings',
957 'href' =>
"#widget-edit-$widget->guid",
958 'link_class' =>
"elgg-widget-edit-button",
983 'name' =>
'register',
986 'link_class' =>
'registration_link',
991 'name' =>
'forgotpassword',
993 'text' =>
elgg_echo(
'user:password:lost'),
994 'link_class' =>
'forgot_link',
1063 'name' =>
'powered',
1065 'href' =>
'http://elgg.org',
1067 'section' =>
'meta',
1076 elgg_extend_view(
'navigation/menu/elements/item',
'navigation/menu/elements/item_deps');
1092 if (is_array($return_value)) {
1093 $return_value[] =
'navigation/menu/user_hover/contents';
1096 return $return_value;
1103 $events->registerHandler(
'init',
'system',
'_elgg_nav_init');
elgg_language_key_exists($key, $language= 'en')
Check if a given language key exists.
elgg_http_add_url_query_elements($url, array $elements)
Sets elements in a URL's query string.
elgg_is_logged_in()
Returns whether or not the user is currently logged in.
elgg_unregister_menu_item($menu_name, $item_name)
Remove an item from a menu.
if(!$user||!$user->canDelete()) $name
_elgg_login_menu_setup($hook, $type, $return, $params)
Add the register and forgot password links to login menu.
elgg_generate_action_url($action, array $query=[], $add_csrf_tokens=true)
Generate an action URL.
if(!($entity instanceof\ElggEntity)) $params
const ELGG_VALUE_INTEGER
Value types.
$CONFIG allow_registration
Is registration enabled?
elgg_get_menu_item($menu_name, $item_name)
Get a menu item registered for a menu.
_elgg_setup_vertical_menu(\Elgg\Hook $hook)
Prepare vertically stacked menu.
elgg_register_plugin_hook_handler($hook, $type, $callback, $priority=500)
_elgg_widget_menu_setup($hook, $type, $return, $params)
Widget menu is a set of widget controls.
_elgg_site_menu_setup($hook, $type, $menu, $params)
Set up the site menu.
elgg_echo($message_key, array $args=[], $language="")
Given a message key, returns an appropriately translated full-text string.
elgg_push_breadcrumb($text, $href=false)
Adds a breadcrumb to the breadcrumbs stack.
_elgg_has_rss_link()
Should the RSS view of this URL be linked to?
elgg_prepare_breadcrumbs($hook, $type, $breadcrumbs, $params)
Prepare breadcrumbs before display.
elgg_register_title_button($handler=null, $name= 'add', $entity_type= 'all', $entity_subtype= 'all')
Convenience function for registering a button to the title menu.
Base class for events and hooks.
elgg_get_entities(array $options=[])
Fetches/counts entities or performs a calculation on their properties.
elgg_set_config($name, $value)
Set an Elgg configuration value.
elgg_log($message, $level=\Psr\Log\LogLevel::NOTICE)
Log a message.
elgg_generate_url($name, array $parameters=[])
Generate a URL for named route.
elgg_get_breadcrumbs(array $breadcrumbs=null)
Returns all breadcrumbs as an array [ [ 'text' => 'Breadcrumb title', 'href' => '/path/to/page', ] ]
$breadcrumbs
Displays breadcrumbs.
elgg_trigger_plugin_hook($hook, $type, $params=null, $returnvalue=null)
elgg_get_context()
Get the current context.
elgg_deprecated_notice($msg, $dep_version, $backtrace_level=1)
Log a notice about deprecated use of a function, view, etc.
elgg_get_page_owner_entity()
Gets the owner entity for the current page.
elgg_register_ajax_view($view)
Register a view to be available for ajax calls.
elgg_get_site_url()
Get the URL for the current (or specified) site, ending with "/".
elgg_register_menu_item($menu_name, $menu_item)
Register an item for an Elgg menu.
elgg_extend_view($view, $view_extension, $priority=501)
Extends a view with another view.
if($item instanceof\ElggEntity) elseif($item instanceof\ElggRiverItem) elseif(is_callable([$item, 'getType']))
_elgg_entity_menu_setup($hook, $type, $return, $params)
Entity menu is list of links and info on any entity.
elgg_extract($key, $array, $default=null, $strict=true)
Checks for $array[$key] and returns its value if it exists, else returns $default.
elgg_get_registration_url(array $query=[], $fragment= '')
Returns site's registration URL Triggers a 'registration_url', 'site' plugin hook that can be used by...
if($container instanceof ElggGroup &&$container->guid!=elgg_get_page_owner_guid()) $key
elgg_get_filter_tabs($context=null, $selected=null, ElggUser $user=null, array $vars=[])
Returns default filter tabs (All, Mine, Friends) for the user.
elgg_push_entity_breadcrumbs(ElggEntity $entity, $link_self=true)
Resolves and pushes entity breadcrumbs based on named routes.
_elgg_config()
Get the Elgg config service.
elgg_get_version($human_readable=false)
Get the current Elgg version information.
_elgg_nav_init()
Navigation initialization.
_elgg_menu_transform_to_dropdown(\Elgg\Hook $hook)
Moves default menu items into a dropdown.
elgg_view_icon($name, $vars=[])
View an icon glyph.
_elgg_site_menu_init($hook, $type, $return, $params)
Init site menu.
_elgg_entity_navigation_menu_setup(\Elgg\Hook $hook)
Entity navigation menu is previous/next link for an entity.
elgg_get_excerpt($text, $num_chars=250)
Returns an excerpt.
_elgg_services()
Get the global service provider.
elgg_get_logged_in_user_entity()
Return the current logged in user, or null if no user is logged in.
getContainerEntity()
Get the container entity for this object.
_elgg_nav_public_pages($hook_name, $entity_type, $return_value, $params)
Extend public pages.
elgg_action_exists($action)
Check if an action is registered and its script exists.
elgg_generate_entity_url(ElggEntity $entity, $resource= 'view', $subresource=null, array $parameters=[])
Generate entity URL from a named route.
getURL()
Gets the URL for this entity.
elgg_push_collection_breadcrumbs($entity_type, $entity_subtype, ElggEntity $container=null, $friends=false)
Resolves and pushes collection breadcrumbs for a container.
elgg_pop_breadcrumb()
Removes last breadcrumb entry.
_elgg_rss_menu_setup($hook, $type, $return, $params)
Add the RSS link to the menu.
$entity
Outputs entity previous/next navigation elements.
if(empty($value)&&$value!==0 &&$value!== '0') $href
getDisplayName()
Get the entity's display name.
elgg_get_config($name, $default=null)
Get an Elgg configuration value.
elgg_is_menu_item_registered($menu_name, $item_name)
Check if a menu item has been registered.