aboutsummaryrefslogtreecommitdiff
path: root/mod/sitepages/start.php
diff options
context:
space:
mode:
Diffstat (limited to 'mod/sitepages/start.php')
-rw-r--r--mod/sitepages/start.php221
1 files changed, 180 insertions, 41 deletions
diff --git a/mod/sitepages/start.php b/mod/sitepages/start.php
index c6e119959..186738bab 100644
--- a/mod/sitepages/start.php
+++ b/mod/sitepages/start.php
@@ -1,72 +1,211 @@
<?php
/**
- * Elgg external pages editor
+ * Site Pages provides interfaces to create standard content-static pages
+ * and to customize the front page layout and content.
+ *
+ * Formerly implemented as "external pages" and "custom index."
+ *
+ * @package SitePages
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Curverider Ltd
+ * @copyright Curverider Ltd 2008-2010
+ * @link http://elgg.org/
+ *
+ * @todo Implement sticky pages
+ * @todo DRY up actions and views
*/
-
-require_once(dirname(__FILE__) . '/sitepages_functions.php');
+/**
+ * Start the site pages plugin.
+ */
function sitepages_init() {
+ require_once(dirname(__FILE__) . '/sitepages_functions.php');
global $CONFIG;
+
+ // register our subtype
+ run_function_once('sitepages_runonce');
+
// Register a page handler, so we can have nice URLs
- register_page_handler('sitepages','sitepages_page_handler');
-
+ register_page_handler('sitepages', 'sitepages_page_handler');
+
// Register a URL handler for external pages
- register_entity_url_handler('sitepages_url','object','sitepages');
-
- // extend views
+ register_entity_url_handler('sitepages_url', 'object', 'sitepages');
+
elgg_extend_view('footer/links', 'sitepages/footer_menu');
elgg_extend_view('metatags', 'sitepages/metatags');
-
+
// Replace the default index page if user has requested
- if (get_plugin_setting('ownfrontpage', 'externalpages') == 'yes'){
- register_plugin_hook('index','system','custom_index');
+ if (get_plugin_setting('ownfrontpage', 'sitepages') == 'yes') {
+ register_plugin_hook('index', 'system', 'sitepages_custom_index');
}
-
+
+ // parse views for keywords
+ register_plugin_hook('display', 'view', 'sitepages_parse_view');
+
+ // register the views we want to parse for the keyword replacement
+ // right now this is just the custom front page, but we can
+ // expand it to the other pages later.
+ $CONFIG->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");
+
}
-function custom_index() {
- if (!@include_once(dirname(__FILE__) . "/frontpage.php")) return false;
- return true;
+/**
+ * Registers the sitepages subtype to the right class.
+ *
+ * @return unknown_type
+ */
+function sitepages_runonce() {
+ return add_subtype('object', 'sitepages_page', 'ElggSitePage');
}
-
+
/**
- * Page setup. Adds admin controls to the admin panel.
+ * 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/');
+ 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/";
+ 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;
- if ($page[0]){
- switch ($page[0]){
- case "read": set_input('sitepages',$page[1]);
- include(dirname(__FILE__) . "/read.php");
- break;
- default : include($CONFIG->pluginspath . "sitepages/index.php");
+
+ // 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);
+ }
}
- }else{
- include($CONFIG->pluginspath . "sitepages/index.php");
}
+
+ return $return_value;
}
-
-// Initialise log browser
-register_elgg_event_handler('init','system','sitepages_init');
-register_elgg_event_handler('pagesetup','system','sitepages_pagesetup');
-
-// Register actions
-global $CONFIG;
-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"); \ No newline at end of file
+
+/**
+ * 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'); \ No newline at end of file