| 1 layout.class.inc | Layout::setAdditionalMenuItems($path) |
Set additional menu items based on the path provided.
File
- core/
modules/ layout/ includes/ layout.class.inc, line 778 - Class for loading, modifying, and executing a layout.
Class
- Layout
- Class representing a layout.
Code
function setAdditionalMenuItems($path) {
$item_exists = FALSE;
if (empty($this->additional_menu_items)) {
$item_exists = FALSE;
}
else {
foreach ($this->additional_menu_items as $item) {
if ($item->path === $path) {
$item_exists = TRUE;
}
}
}
if (!$item_exists) {
// Use an existing menu item if one exists at this path.
if ($existing_item = layout_menu_item_load_multiple_by_path($path)) {
$this->additional_menu_items[$path] = $existing_item;
}
// If this layout doesn't have a menu item, make one. If the path is
// provided by another module, no menu item is necessary.
elseif (layout_provides_path($path) === NULL) {
if (!isset($this->additional_menu_items[$path])) {
$menu_item_settings = array(
'path' => $path,
'name' => $this->name . '_' . system_transliterate_machine_name($path),
);
$this->additional_menu_items[$path] = new LayoutMenuItem($menu_item_settings);
}
else {
$this->additional_menu_items[$path]->path = $path;
}
}
else {
if (isset($this->additional_menu_items[$path])) {
$this->additional_menu_items[$path]->delete();
unset($this->additional_menu_items[$path]);
}
}
}
}