diff options
Diffstat (limited to 'mod/pages/lib')
-rw-r--r-- | mod/pages/lib/pages.php | 71 |
1 files changed, 68 insertions, 3 deletions
diff --git a/mod/pages/lib/pages.php b/mod/pages/lib/pages.php index 943383fd7..e3ed3c822 100644 --- a/mod/pages/lib/pages.php +++ b/mod/pages/lib/pages.php @@ -6,10 +6,10 @@ /** * Prepare the add/edit form variables * - * @param ElggOobject $page + * @param ElggObject $page * @return array */ -function pages_prepare_form_vars($page = null) { +function pages_prepare_form_vars($page = null, $parent_guid = 0) { // input names => defaults $values = array( @@ -21,11 +21,12 @@ function pages_prepare_form_vars($page = null) { 'container_guid' => elgg_get_page_owner_guid(), 'guid' => null, 'entity' => $page, + 'parent_guid' => $parent_guid, ); if ($page) { foreach (array_keys($values) as $field) { - $values[$field] = $file->$field; + $values[$field] = $page->$field; } } @@ -39,3 +40,67 @@ function pages_prepare_form_vars($page = null) { return $values; } + +/** + * Register the navigation menu + * + * @param ElggEntity $container Container entity for the pages + */ +function pages_register_navigation_tree($container) { + if (!$container) { + return; + } + + $top_pages = elgg_get_entities(array( + 'type' => 'object', + 'subtype' => 'page_top', + 'container_guid' => $container->getGUID, + )); + + foreach ($top_pages as $page) { + elgg_register_menu_item('pages_nav', array( + 'name' => $page->getGUID(), + 'title' => $page->title, + 'url' => $page->getURL(), + )); + + $stack = array(); + array_push($stack, $page); + while (count($stack) > 0) { + $parent = array_pop($stack); + $children = elgg_get_entities_from_metadata(array( + 'type' => 'object', + 'subtype' => 'page', + 'metadata_name' => 'parent_guid', + 'metadata_value' => $parent->getGUID(), + )); + + foreach ($children as $child) { + elgg_register_menu_item('pages_nav', array( + 'name' => $child->getGUID(), + 'title' => $child->title, + 'url' => $child->getURL(), + 'parent_name' => $parent->getGUID(), + )); + array_push($stack, $child); + } + } + } +} + +/** + * Return the correct sidebar for a given entity + * + * @param ElggObject $entity + */ +function pages_get_entity_sidebar(ElggObject $entity, $fulltree = 0) { + $body = ""; + + $children = elgg_get_entities_from_metadata(array('metadata_names' => 'parent_guid', 'metadata_values' => $entity->guid, 'limit' => 9999)); + $body .= elgg_view('pages/sidebar/sidebarthis', array('entity' => $entity, + 'children' => $children, + 'fulltree' => $fulltree)); + //$body = elgg_view('pages/sidebar/wrapper', array('body' => $body)); + + return $body; +} |