sitepages_parse_views = array( 'sitepages/custom_frontpage' ); // an example of how to register and respond to the get_keywords trigger register_plugin_hook('get_keywords', 'sitepages', 'sitepages_keyword_hook'); // grab the list of keywords and their views from plugins if ($keywords = trigger_plugin_hook('get_keywords', 'sitepages', NULL, array())) { $CONFIG->sitepages_keywords = $keywords; } register_action("sitepages/add", FALSE, $CONFIG->pluginspath . "sitepages/actions/add.php"); register_action("sitepages/addfront", FALSE, $CONFIG->pluginspath . "sitepages/actions/addfront.php"); register_action("sitepages/addmeta", FALSE, $CONFIG->pluginspath . "sitepages/actions/addmeta.php"); register_action("sitepages/edit", FALSE, $CONFIG->pluginspath . "sitepages/actions/edit.php"); register_action("sitepages/delete", FALSE, $CONFIG->pluginspath . "sitepages/actions/delete.php"); } /** * Registers the sitepages subtype to the right class. * * @return unknown_type */ function sitepages_runonce() { return add_subtype('object', 'sitepages_page', 'ElggSitePage'); } /** * Override the index if requested. * * @return TRUE on override */ function sitepages_custom_index() { // context is checked by the extended metatags view to print out its custom CSS $context = get_context(); set_context('sitepages:front'); if ($contents = elgg_view('sitepages/custom_frontpage')) { page_draw(FALSE, $contents); set_context($context); // return TRUE to tell index.php we've got its content right here. return TRUE; } set_context($context); return NULL; } /** * Page setup. Adds admin controls to the admin panel. */ function sitepages_pagesetup(){ if (get_context() == 'admin' && isadminloggedin()) { global $CONFIG; add_submenu_item(elgg_echo('sitepages'), $CONFIG->wwwroot . 'pg/sitepages/edit/front'); } } /** * * @param unknown_type $expage * @return unknown_type * * //@todo is this needed? */ function sitepages_url($expage) { global $CONFIG; return $CONFIG->url . 'pg/sitepages/'; } /** * Serve out views for site pages. * * @param unknown_type $page * @return unknown_type */ function sitepages_page_handler($page) { global $CONFIG; // for the owner block. if ($logged_in_guid = get_loggedin_userid()) { set_page_owner($logged_in_guid); } // sanity checking. // on bad params we'll forward so people will bookmark the correct URLs // @todo valid page names need to be pulled out into some sort of config var or admin option. $default_page = 'About'; $action = isset($page[0]) ? $page[0] : FALSE; $page_type = isset($page[1]) ? $page[1] : FALSE; switch ($action) { case 'edit': $title = elgg_echo('sitepages'); $content = sitepages_get_edit_section_content($page_type); break; case 'read': $title = elgg_echo('sitepages:' . strtolower($page_type)); $content = sitepages_get_page_content($page_type); break; default: forward("{$CONFIG->site->url}pg/sitepages/read/$default_page"); break; } page_draw($title, $content); } function sitepages_parse_view($hook, $entity_type, $return_value, $params) { global $CONFIG; if (in_array($params['view'], $CONFIG->sitepages_parse_views)) { $keywords = $CONFIG->sitepages_keywords; $view_options = array( 'view' => $params['view'] ); foreach ($keywords as $keyword => $info) { if ($content = elgg_view($info['view'], $view_options)) { $return_value = str_replace("[[$keyword]]", $content, $return_value); } } } return $return_value; } /** * Register some default keywords. * * @param unknown_type $hook * @param unknown_type $entity_type * @param unknown_type $return_value * @param unknown_type $params * @return unknown_type */ function sitepages_keyword_hook($hook, $entity_type, $return_value, $params) { $return_value['login_box'] = array( 'view' => 'account/forms/login', 'description' => elgg_echo('sitepages:keywords:login_box') ); $return_value['site_stats'] = array( 'view' => 'this/doesnt/exist/yet', 'description' => elgg_echo('sitepages:keywords:site_stats') ); return $return_value; } register_elgg_event_handler('init', 'system', 'sitepages_init'); register_elgg_event_handler('pagesetup', 'system', 'sitepages_pagesetup');