<?php /** * Elgg pages widget edit * * @package ElggPages */ $page_owner = elgg_get_page_owner_entity(); if (!$page_owner instanceof ElggGroup) { // set default value if (!isset($vars['entity']->pages_num)) { $vars['entity']->pages_num = 4; } $params = array('name' => 'params[pages_num]', 'value' => $vars['entity']->pages_num, 'options' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)); $dropdown = elgg_view('input/dropdown', $params); echo '<div>'; echo elgg_echo('pages:num') . ':'; echo $dropdown; echo '</div>'; } else { $widget = elgg_extract('entity', $vars); $page_selector = theme_haarlem_pages_get_widget_selector($widget->getOwnerEntity()); $page_selector = array_reverse($page_selector, true); $page_selector[''] = elgg_echo('theme_haarlem_intranet:widgets:pages:edit:main_page:select'); $page_selector = array_reverse($page_selector, true); echo '<div>'; echo elgg_echo('theme_haarlem_intranet:widgets:pages:edit:main_page'); echo elgg_view('input/dropdown', array('name' => 'params[main_page]', 'options_values' => $page_selector, 'value' => $widget->main_page, 'class' => 'mls')); echo '</div>'; }
/** * Get a page selector for in widgets * * @param ElggEntity $container the container to get the pages for * @param int $depth used for indentation * * @return array|false */ function theme_haarlem_pages_get_widget_selector(ElggEntity $container, $depth = 0) { if (empty($container) || !elgg_instanceof($container)) { return false; } if ($depth == 0) { $ordered = elgg_get_entities(array('type' => 'object', 'subtype' => 'page_top', 'container_guid' => $container->getGUID(), 'limit' => false)); } else { $ordered = elgg_get_entities_from_metadata(array('type' => 'object', 'subtype' => 'page', 'metadata_name' => 'parent_guid', 'metadata_value' => $container->getGUID(), 'limit' => false)); } if (empty($ordered)) { return false; } $result = array(); foreach ($ordered as $order => $page) { // add this page $result[$page->getGUID()] = trim(str_repeat('-', $depth) . ' ' . $page->title); // invalidate cache for OOM // @todo find a better way for this _elgg_invalidate_cache_for_entity($page->getGUID()); // append children $children = theme_haarlem_pages_get_widget_selector($page, $depth + 1); if (!empty($children)) { $result += $children; unset($children); } } unset($ordered); return $result; }