<?php
/**
- * Elgg external pages: add/edit
+ * Site pages save/edit
+ *
+ * @package SitePages
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Curverider Ltd <info@elgg.com>
+ * @copyright Curverider Ltd 2008-2010
+ * @link http://elgg.com/
+ *
*/
// Make sure we're logged as admin
admin_gatekeeper();
// Get input data
-$contents = get_input('sitepagescontent', '', false);
-$type = get_input('content_type');
-$tags = get_input('sitepagestags');
-$previous_guid = get_input('expage_guid');
+$content = get_input('sitepages_content', '', FALSE);
+$page_type = get_input('page_type');
+$tags = get_input('sitepages_tags');
+$tag_array = string_to_tag_array($tags);
-// Cache to the session
-$_SESSION['sitepages_content'] = $contents;
-$_SESSION['sitepagestype'] = $type;
-$_SESSION['sitepagestags'] = $tags;
-
-// Convert string of tags into a preformatted array
-$tagarray = string_to_tag_array($tags);
-
-// Make sure the content exists
-if (empty($contents)) {
- register_error(elgg_echo("sitepages:blank"));
- forward("mod/sitepages/add.php");
-
-// Otherwise, save the new external page
+// Cache to the session for sticky forms
+// @todo make these work.
+$_SESSION['sitepages_content'] = $content;
+$_SESSION['sitepages_type'] = $type;
+$_SESSION['sitepages_tags'] = $tags;
+
+if (!$sitepage = sitepages_get_sitepage_object($page_type)) {
+ $sitepage = sitepages_create_sitepage_object($page_type);
+}
+
+if (empty($content)) {
+ register_error(elgg_echo('sitepages:blank'));
} else {
- //remove the old external page
- if(get_entity($previous_guid)){
- delete_entity($previous_guid);
- }
-
- // Initialise a new ElggObject
- $sitepages = new ElggObject();
- // Tell the system what type of external page it is
- $sitepages->subtype = $type;
- // Set its owner to the current user
- $sitepages->owner_guid = $_SESSION['user']->getGUID();
- // For now, set its access to public
- $sitepages->access_id = 2;
- // Set its title and description appropriately
- $sitepages->title = $type;
- $sitepages->description = $contents;
- // Before we can set metadata, save
- if (!$sitepages->save()) {
- register_error(elgg_echo("sitepages:error"));
- forward("mod/sitepages/add.php");
- }
- // Now let's add tags. We can pass an array directly to the object property! Easy.
- if (is_array($tagarray)) {
- $sitepages->tags = $tagarray;
+ $sitepage->title = $type;
+ $sitepage->description = $content;
+ $sitepage->tags = $tag_array;
+
+ if (!$sitepage->save()) {
+ register_error(elgg_echo('sitepages:error'));
+ } else {
+ system_message(elgg_echo('sitepages:posted'));
+ // @todo this needs to be accurate for create or update.
+ add_to_river('river/sitepages/create', 'create', $_SESSION['user']->guid, $sitepages->guid);
}
- // Success message
- system_message(elgg_echo("sitepages:posted"));
- // add to river
- add_to_river('river/sitepages/create','create',$_SESSION['user']->guid,$sitepages->guid);
- // Remove the cache
- unset($_SESSION['sitepages_content']); unset($_SESSION['sitepagestitle']); unset($_SESSION['sitepagestags']);
-
- // Forward back to the page
- forward("pg/sitepages/index.php?type={$type}");
+
+ // @todo Good intensions...
+ unset($_SESSION['sitepages_content']);
+ unset($_SESSION['sitepagestitle']);
+ unset($_SESSION['sitepagestags']);
}
+
+forward($_SERVER['HTTP_REFERER']);
\ No newline at end of file
<?php
/**
- * Elgg front page: add/edit
+ * Site pages front page save/edit
+ *
+ * @package SitePages
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Curverider Ltd <info@elgg.com>
+ * @copyright Curverider Ltd 2008-2010
+ * @link http://elgg.com/
+ *
*/
-// Make sure we're logged as admin
admin_gatekeeper();
-// Get input data
-$frontContents = get_input('frontContents');
-$css = get_input('css');
-$previous_guid = get_input('front_guid');
-
-//remove the old front page
-if(get_entity($previous_guid)){
- delete_entity($previous_guid);
+$content = get_input('sitepages_content', '', FALSE);
+$css = get_input('css', '', FALSE);
+$loggedin_user_guid = get_loggedin_userid();
+
+// Cache to the session for sticky forms
+// @todo does nothing yet.
+$_SESSION['sitepages:content'] = $content;
+$_SESSION['sitepages:css'] = $css;
+
+if (!$sitepage = sitepages_get_sitepage_object('front')) {
+ $sitepage = sitepages_create_sitepage_object('front');
}
-//var_export($pageshell);exit;
+$sitepage->title = $css;
+$sitepage->description = $content;
-// Cache to the session
-$_SESSION['pageshell'] = $pageshell;
-$_SESSION['css'] = $css;
-
-// Initialise a new ElggObject
-$frontpage = new ElggObject();
-// Tell the system what type of external page it is
-$frontpage->subtype = "frontpage";
-// Set its owner to the current user
-$frontpage->owner_guid = $_SESSION['user']->getGUID();
-// Set its access to public
-$frontpage->access_id = 2;
-// Set its title and description appropriately
-$frontpage->title = $css;
-$frontpage->description = $frontContents;
-
-// Before we can set metadata, save
-if (!$frontpage->save()) {
+if ($sitepage->save()) {
+ system_message(elgg_echo("sitepages:posted"));
+ unset($_SESSION['sitepages:content']);
+ unset($_SESSION['sitepages:css']);
+} else {
register_error(elgg_echo("sitepages:error"));
- forward("pg/sitepages/index.php?type=front");
}
-// Success message
-system_message(elgg_echo("sitepages:posted"));
-
-// Remove the cache
-unset($_SESSION['css']); unset($_SESSION['pageshell']);
-
-
-// Forward back to the page
-forward("pg/sitepages/index.php?type=front");
+forward($_SERVER['HTTP_REFERER']);
\ No newline at end of file
<?php\r
/**\r
- * Elgg SEO: add/edit\r
+ * Site pages meta tags and desc page save/edit\r
+ *\r
+ * @package SitePages\r
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2\r
+ * @author Curverider Ltd <info@elgg.com>\r
+ * @copyright Curverider Ltd 2008-2010\r
+ * @link http://elgg.com/\r
+ *\r
*/\r
\r
-// Make sure we're logged as admin\r
admin_gatekeeper();\r
\r
-// Get input data\r
-$description = get_input('description', '', false);\r
-$metatags = get_input('metatags', '', false);\r
-$previous_guid = get_input('seo_guid');\r
- \r
-//remove the old front page\r
-if(get_entity($previous_guid)){\r
- delete_entity($previous_guid);\r
-}\r
+$description = get_input('description', '', FALSE);\r
+$metatags = get_input('metatags', '', FALSE);\r
\r
// Cache to the session\r
$_SESSION['description'] = $description;\r
$_SESSION['metatags'] = $metatags;\r
- \r
-// Initialise a new ElggObject\r
-$seo = new ElggObject();\r
-// Tell the system what type of external page it is\r
-$seo->subtype = "sitemeta";\r
-// Set its owner to the current user\r
-$seo->owner_guid = $_SESSION['user']->getGUID();\r
-// Set its access to public\r
-$seo->access_id = 2;\r
-// Set its title and description appropriately\r
-$seo->title = $metatags;\r
-$seo->description = $description;\r
- \r
-// Before we can set metadata, save\r
-if (!$seo->save()) {\r
- register_error(elgg_echo("sitepages:error"));\r
- forward("pg/sitepages/index.php?type=seo");\r
+\r
+if (!$sitepage = sitepages_get_sitepage_object('front')) {\r
+ $sitepage = sitepages_create_sitepage_object('front');\r
}\r
\r
-// Success message\r
-system_message(elgg_echo("sitepages:seocreated"));\r
+$sitepage->title = $metatags;\r
+$sitepage->description = $description;\r
+\r
+if ($sitepage->save()) {\r
+ system_message(elgg_echo("sitepages:seocreated"));\r
+ unset($_SESSION['description']); unset($_SESSION['metatags']);\r
+} else {\r
+ register_error(elgg_echo("sitepages:error"));\r
+}\r
\r
-// Remove the cache\r
-unset($_SESSION['description']); unset($_SESSION['metatags']);\r
- \r
- \r
-// Forward back to the page\r
-forward("pg/sitepages/index.php?type=seo");\r
+forward($_SERVER['HTTP_REFERER']);
\ No newline at end of file
+++ /dev/null
-<?php\r
-/**\r
- * Elgg custom frontpage\r
- */\r
-\r
-// Load Elgg engine will not include plugins\r
-require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");\r
- \r
-global $CONFIG;\r
- \r
-$page_contents = elgg_get_entities(array('type' => 'object', 'subtype' => 'frontpage', 'limit' => 1));\r
-if($page_contents){\r
- foreach($page_contents as $pc){\r
- $css = "<style>" . $pc->title . "</style>";\r
- $frontContents = $pc->description;\r
- }\r
-}\r
- \r
-// Set title\r
-$title = $CONFIG->sitename;\r
-\r
-?>\r
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">\r
-<head>\r
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />\r
- <meta name="ElggRelease" content="<?php echo $release; ?>" />\r
- <meta name="ElggVersion" content="<?php echo $version; ?>" />\r
- <title><?php echo $title; ?></title>\r
- <link REL="SHORTCUT ICON" HREF="<?php echo $CONFIG->wwwroot; ?>_graphics/favicon.ico">\r
-\r
- <script type="text/javascript" src="<?php echo $CONFIG->wwwroot; ?>vendors/jquery/jquery-1.4.min.js"></script> \r
- <script type="text/javascript" src="<?php echo $CONFIG->wwwroot; ?>vendors/jquery/jquery-ui-1.7.2.min.js"></script>\r
- <script type="text/javascript" src="<?php echo $CONFIG->wwwroot; ?>vendors/jquery/jquery.form.js"></script>\r
- <script type="text/javascript" src="<?php echo $CONFIG->wwwroot; ?>vendors/jquery/custom-form-elements.js"></script>\r
- <script type="text/javascript" src="<?php echo $CONFIG->wwwroot; ?>_css/js.php?lastcache=<?php echo $CONFIG->lastcache; ?>&js=initialise_elgg&viewtype=<?php echo $vars['view']; ?>"></script>\r
-\r
- <?php\r
- echo $feedref;\r
- //custom css - need to cache this. It is here instead of extending the main css\r
- //as we don't want it appearing anywhere else throughout the site, only the frontpage.\r
- echo $css; \r
- echo elgg_view('metatags',$vars);\r
- ?>\r
- <script type="text/javascript">\r
- jQuery(document).ready(function($) {\r
- });\r
- </script>\r
-\r
-<?php\r
- global $pickerinuse;\r
- if (isset($pickerinuse) && $pickerinuse == true) {\r
-?>\r
- <!-- only needed on pages where we have friends collections and/or the friends picker -->\r
- <script type="text/javascript" src="<?php echo $CONFIG->wwwroot; ?>vendors/jquery/jquery.easing.1.3.packed.js"></script>\r
- <script type="text/javascript" src="<?php echo $CONFIG->wwwroot; ?>_css/js.php?lastcache=<?php echo $vars['config']->lastcache; ?>&js=friendsPickerv1&viewtype=<?php echo $vars['view']; ?>"></script>\r
-<?php\r
- }\r
-?>\r
- <!-- include the default css file -->\r
- <link rel="stylesheet" href="<?php echo $CONFIG->wwwroot; ?>_css/css.css?lastcache=<?php echo $CONFIG->lastcache; ?>&viewtype=<?php echo $CONFIG->view; ?>" type="text/css" />\r
-</head>\r
-<body>\r
-<?php echo elgg_view('page_elements/elgg_topbar', $vars); ?>\r
-<?php echo elgg_view('page_elements/elgg_header', $vars); ?>\r
-<?php \r
- echo parse_frontpage($frontContents); \r
-?>\r
-<?php echo elgg_view('page_elements/elgg_footer', $vars); ?>\r
-<?php echo elgg_view('page_elements/html_end', $vars); ?>
\ No newline at end of file
+++ /dev/null
-<?php
-/**
- * Elgg Site pages
- */
-
-require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
-
-admin_gatekeeper();
-set_context('admin');
-$type = get_input('type'); //the type of page e.g about, terms etc
-if(!$type)
- $type = "front"; //default to the frontpage
-
-// Set admin user for user block
-set_page_owner($_SESSION['guid']);
-
-//display the title
-$title = elgg_view_title(elgg_echo('sitepages'));
-
-// Display the correct form
-if($type == "front")
- $edit = elgg_view('sitepages/forms/editfront');
-elseif($type == "seo")
- $edit = elgg_view('sitepages/forms/editmeta');
-else
- $edit = elgg_view('sitepages/forms/edit', array('type' => $type));
-
-if($type == "front")
- $area3 = elgg_view('sitepages/keywords'); //available keywords for the user
-else
- $area3 = "";
-
-// Display the menu
-$body = elgg_view('page_elements/elgg_content',array('body' => elgg_view('sitepages/menu', array('type' => $type)).$edit));
-
-// Display
-page_draw(elgg_echo('sitepages'),elgg_view_layout("one_column_with_sidebar", '', $title . $body, $area3));
\ No newline at end of file
<?php
+/**
+ * Language definitions for Site Pages
+ *
+ * @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/
+ */
- $english = array(
-
- /**
- * Menu items and titles
- */
-
- 'sitepages' => "Site pages",
- 'sitepages:frontpage' => "Frontpage",
- 'sitepages:about' => "About",
- 'sitepages:terms' => "Terms",
- 'sitepages:privacy' => "Privacy",
- 'sitepages:analytics' => "Analytics",
- 'sitepages:contact' => "Contact",
- 'sitepages:nopreview' => "No preview yet available",
- 'sitepages:preview' => "Preview",
- 'sitepages:notset' => "This page has not been set up yet.",
- 'sitepages:new' => "New page",
- 'sitepages:css' => "Stylesheet",
- 'sitepages:seo' => "Metatags",
- 'sitepages:metadescription' => "Meta description for search engines",
- 'sitepages:metatags' => "Meta tags for search engines (use a comma)",
- 'sitepages:seocreated' => "Your search engine information has been added",
- 'sitepages:frontContents' => "Frontpage contents",
- 'sitepages:ownfront' => "Construct your own frontpage for this network. (Note:you will need to know html and css)",
- 'sitepages:addcontent' => "You can add content here via your admin tools. Look for the external pages link under admin.",
- 'item:object:front' => 'Front page items',
-
- /**
- * Status messages
- */
-
- 'sitepages:posted' => "Your page was successfully posted.",
- 'sitepages:deleted' => "Your page was successfully deleted.",
-
- /**
- * Error messages
- */
-
- 'sitepages:deleteerror' => "There was a problem deleting the old page",
- 'sitepages:error' => "There has been an error, please try again and if the problem persists, contact the administrator",
-
- );
-
- add_translation("en",$english);
+$english = array(
+ /**
+ * Menu items and titles
+ */
+ 'sitepages' => "Site pages",
+ 'sitepages:frontpage' => "Frontpage",
+ 'sitepages:about' => "About",
+ 'sitepages:terms' => "Terms",
+ 'sitepages:privacy' => "Privacy",
+ 'sitepages:analytics' => "Analytics",
+ 'sitepages:contact' => "Contact",
+ 'sitepages:nopreview' => "No preview yet available",
+ 'sitepages:preview' => "Preview",
+ 'sitepages:notset' => "This page has not been set up yet.",
+ 'sitepages:new' => "New page",
+ 'sitepages:css' => "CSS",
+ 'sitepages:seo' => "Metatags",
+ 'sitepages:metadescription' => "Meta description for search engines",
+ 'sitepages:metatags' => "Meta tags for search engines (use a comma)",
+ 'sitepages:seocreated' => "Your search engine information has been added",
+ 'sitepages:front_content' => "Frontpage content",
+ 'sitepages:ownfront' => "Construct your own frontpage for this network. (Note:you will need to know html and css)",
+ 'sitepages:addcontent' => "You can add content here via your admin tools. Look for the external pages link under admin.",
+ 'item:object:front' => 'Front page items',
-?>
\ No newline at end of file
+ /**
+ * Status messages
+ */
+ 'sitepages:posted' => "Your page was successfully posted.",
+ 'sitepages:deleted' => "Your page was successfully deleted.",
+
+ /**
+ * Error messages
+ */
+ 'sitepages:deleteerror' => "There was a problem deleting the old page",
+ 'sitepages:error' => "There has been an error, please try again and if the problem persists, contact the administrator",
+);
+
+add_translation('en', $english);
\ No newline at end of file
+++ /dev/null
-<?php
-/**
- * Elgg read site page
- */
-
-// Load Elgg engine
-define('externalpage',true);
-require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
-
-// set some variables
-$type = get_input('sitepages');
-
-// Set the title appropriately
-$area1 = elgg_view_title(elgg_echo("sitepages:". strtolower($type)));
-
-//get contents
-$contents = elgg_get_entities(array('type' => 'object', 'subtype' => $type, 'limit' => 1));
-
-if($contents){
- foreach($contents as $c){
- $area1 .= elgg_view('page_elements/elgg_content',array('body' => $c->description));
- }
-}else{
- $area1 .= elgg_view('page_elements/elgg_content',array('body' => elgg_echo("sitepages:notset")));
-}
-
-// Display through the correct canvas area
-$body = elgg_view_layout("one_column_with_sidebar", "", $area1);
-
-// Display page
-page_draw($title,$body);
\ No newline at end of file
<?php\r
/**\r
- * This will hold the required keyword functions to display frontpage content\r
- **/\r
- \r
-function parse_frontpage($frontContents){\r
- echo htmlspecialchars_decode($frontContents, ENT_NOQUOTES);\r
+ * Helper functions for Site Pages.\r
+ *\r
+ * @package SitePages\r
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2\r
+ * @author Curverider Ltd\r
+ * @copyright Curverider Ltd 2008-2010\r
+ * @link http://elgg.org/\r
+ */\r
+\r
+\r
+function sitepages_parse_frontpage($contents){\r
+ echo htmlspecialchars_decode($contents, ENT_NOQUOTES);\r
+}\r
+\r
+/**\r
+ * Returns a single object that holds information about\r
+ * customizations for the $section site page. The object guid\r
+ * is stored as private data on the site entity. This allows the pages\r
+ * to still be searchable as standard entities.\r
+ *\r
+ * @param $type\r
+ * @return mixed ElggSitePage on success, FALSE on fail\r
+ */\r
+function sitepages_get_sitepage_object($page_type) {\r
+ global $CONFIG;\r
+\r
+ $page_guid = get_private_setting($CONFIG->site->getGUID(), "sitepages:$page_type");\r
+ $sitepage = get_entity($page_guid);\r
+\r
+ if ($sitepage instanceof ElggSitePage || $sitepage->page_type == $page_type) {\r
+ return $sitepage;\r
+ }\r
+\r
+ return FALSE;\r
+}\r
+\r
+/**\r
+ * Creates a site page object.\r
+ *\r
+ * @param str $page_type\r
+ * @return mixed ElggSitePage on success, FALSE on fail.\r
+ */\r
+function sitepages_create_sitepage_object($page_type) {\r
+ global $CONFIG;\r
+\r
+ $sitepage = new ElggSitePage();\r
+ $sitepage->page_type = $page_type;\r
+ $sitepage->access_id = ACCESS_PUBLIC;\r
+ $sitepage->save();\r
+\r
+ if ($sitepage->save() && set_private_setting($CONFIG->site->getGUID(), "sitepages:$page_type", $sitepage->getGUID())) {\r
+ return $sitepage;\r
+ }\r
+\r
+ return FALSE;\r
+}\r
+\r
+/**\r
+ * Assembles html for edit sections of site pages.\r
+ *\r
+ * @param str $section\r
+ * @return str html\r
+ */\r
+function sitepages_get_edit_section_content($page_type) {\r
+ set_context('admin');\r
+\r
+ $keywords = '';\r
+\r
+ $title = elgg_view_title(elgg_echo('sitepages'));\r
+ $menu = elgg_view('sitepages/menu', array('page_type' => $page_type));\r
+\r
+ switch ($page_type) {\r
+ case 'front':\r
+ $view = 'sitepages/forms/editfront';\r
+ $keywords = elgg_view('sitepages/keywords');\r
+ break;\r
+\r
+ case 'seo':\r
+ $view = 'sitepages/forms/editmeta';\r
+ break;\r
+\r
+ default:\r
+ $view = 'sitepages/forms/edit';\r
+ break;\r
+\r
+ }\r
+\r
+ $form .= elgg_view($view, array('page_type' => $page_type));\r
+ $body = $title . $menu . $form;\r
+\r
+ $content = elgg_view_layout('one_column_with_sidebar', '', $body, $keywords);\r
+ return $content;\r
+}\r
+\r
+/**\r
+ * Assembles html for displaying site pages\r
+ *\r
+ * @param string $page_type\r
+ * @return string Formatted html\r
+ */\r
+function sitepages_get_page_content($page_type) {\r
+ $body = elgg_view_title(elgg_echo("sitepages:". strtolower($page_type)));\r
+\r
+ $sitepage = sitepages_get_sitepage_object($page_type);\r
+\r
+ if ($sitepage) {\r
+ $body .= elgg_view('page_elements/elgg_content', array('body' => $sitepage->description));\r
+ } else {\r
+ $body .= elgg_view('page_elements/elgg_content', array('body' => elgg_echo('sitepages:notset')));\r
+ }\r
+\r
+ $content = elgg_view_layout('one_column_with_sidebar', '', $body);\r
+ return $content;\r
+}\r
+\r
+/**\r
+ * Utility object to store site page information.\r
+ */\r
+class ElggSitePage extends ElggObject {\r
+ public function initialise_attributes() {\r
+ parent::initialise_attributes();\r
+\r
+ $this->attributes['subtype'] = 'sitepages_page';\r
+ }\r
}
\ No newline at end of file
<?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
+++ /dev/null
-<?php
-/**
- * Elgg Analytics view
- */
-
-//get analytics content
-$contents = elgg_get_entities(array('type' => 'object', 'subtype' => 'analytics', 'limit' => 1));
-if($contents){
- foreach($contents as $c){
- echo $c->description;
- }
-}
-
+++ /dev/null
-<?php
-/**
- * Elgg sitepages CSS
- */
-?>
-
-/* IE6 */
-* html #front_left_tbl { width:676px !important; }
-* html #front_right_tbl { width:676px !important; }
\ No newline at end of file
--- /dev/null
+<?php
+/**
+ * Custom front page.
+ * This is in a view so we can parse it for keywords.
+ *
+ * @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/
+ */
+
+$object = sitepages_get_sitepage_object('front');
+
+if ($object) {
+ echo $object->description;
+}
\ No newline at end of file
<?php
+/**
+ * Edit non front or SEO site pages.
+ *
+ * @package Elggsitepages
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Curverider Ltd <info@elgg.com>
+ * @copyright Curverider Ltd 2008-2010
+ * @link http://elgg.com/
+ *
+ */
- /**
- * Elgg sitepages edit
- *
- * @package Elggsitepages
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd <info@elgg.com>
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
- *
- */
-
- //get the page type
- $type = $vars['type'];
-
- //action
- $action = "sitepages/add";
-
- //grab the required entity
- $page_contents = elgg_get_entities(array('type' => 'object', 'subtype' => $type, 'limit' => 1));
-
- if($page_contents){
- foreach($page_contents as $pc){
- $description = $pc->description;
- $tags = $pc->tags;
- $guid = $pc->guid;
- }
- }else {
- $tags = "";
- $description = "";
- }
-
- // set the required form variables
- $input_area = elgg_view('input/longtext', array('internalname' => 'sitepagescontent', 'value' => $description));
- $tag_input = elgg_view('input/tags', array('internalname' => 'sitepagestags', 'value' => $tags));
- $submit_input = elgg_view('input/submit', array('internalname' => 'submit', 'value' => elgg_echo('save')));
- $hidden_value = elgg_view('input/hidden', array('internalname' => 'content_type', 'value' => $type));
- $hidden_guid = elgg_view('input/hidden', array('internalname' => 'expage_guid', 'value' => $guid));
- $tag_label = elgg_echo('tags') . "<br/>";
-
- //type
- $type = $vars['type'];
- //set the url
- $url = $vars['url'] . "pg/sitepages/index.php?type=";
-
- if($type == 'about') {
- $external_page_title = elgg_echo('sitepages:about');
- }
- else if($type == 'terms') {
- $external_page_title = elgg_echo('sitepages:terms');
- }
- else if($type == 'privacy') {
- $external_page_title = elgg_echo('sitepages:privacy');
- }
- //preview link
- // echo "<div class=\"page_preview\"><a href=\"#preview\">" . elgg_echo('sitepages:preview') . "</a></div>";
-
- //construct the form
- $form_body = <<<EOT
+$page_type = $vars['page_type'];
+$action = 'sitepages/add';
- <h3 class='settings'>$external_page_title</h3>
- <p class='longtext_editarea'>$input_area</p>
- <p>
- $tag_label
- $tag_input
- </p>
- $hidden_value
- $hidden_guid
- <br />
- $submit_input
+if ($sitepages_object = sitepages_get_sitepage_object($page_type)) {
+ $tags = $sitepages_object->tags;
+ $description = $sitepages_object->description;
+ $guid = $sitepages_object->getGUID();
+} else {
+ $tags = array();
+ $description = '';
+ $guid = '';
+}
-EOT;
-?>
-<?php
- //display the form
- echo elgg_view('input/form', array('action' => "{$vars['url']}action/$action", 'body' => $form_body));
-?>
+// set the required form variables
+$input_area = elgg_view('input/longtext', array('internalname' => 'sitepages_content', 'value' => $description));
+$tag_input = elgg_view('input/tags', array('internalname' => 'sitepages_tags', 'value' => $tags));
+
+$submit_input = elgg_view('input/submit', array('internalname' => 'submit', 'value' => elgg_echo('save')));
+$hidden_value = elgg_view('input/hidden', array('internalname' => 'page_type', 'value' => $page_type));
+
+$tag_label = '<h3>' . elgg_echo('tags') . '</h3>';
+$external_page_title = elgg_echo("sitepages:$page_type");
+
+$form_body = <<<___EOT
+
+<h3 class='settings'>$external_page_title</h3>
+<p class='longtext_editarea'>$input_area</p>
+<p>
+ $tag_label
+ $tag_input
+</p>
+$hidden_value
+$hidden_guid
+<br />
+$submit_input
+
+___EOT;
-<!-- preview page contents -->
-<!--
-<div class="expage_preview">
-<a name="preview"></a>
-<h2>Preview</h2>
-<?php
- if($description)
- echo $description;
- else
- echo elgg_echo('sitepages:nopreview');
-?>
-</div>
--->
\ No newline at end of file
+echo elgg_view('input/form', array('action' => "{$vars['url']}action/$action", 'body' => $form_body));
\ No newline at end of file
<?php
/**
- * Elgg edit frontpage
+ * Edit form for the custom front page
+ *
+ * @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/
*/
-
-//action
-$action = "sitepages/addfront";
-
-//grab the required entity
-$page_contents = elgg_get_entities(array('type' => 'object', 'subtype' => 'frontpage', 'limit' => 1));
-
-if($page_contents){
- foreach($page_contents as $pc){
- $css = $pc->title;
- $frontContents = $pc->description;
- $guid = $pc->guid;
- }
-}else {
- $tags = "";
- $description = "";
+
+$action = 'sitepages/addfront';
+
+if ($sitepages_object = sitepages_get_sitepage_object('front')) {
+ $css = $sitepages_object->title;
+ $sitepages_content = $sitepages_object->description;
+ $guid = $sitepages_object->guid;
+} else {
+ $css = '';
+ $sitepages_content = '';
+ $guid = '';
}
-
+
// set the required form variables
$input_css = elgg_view('input/plaintext', array('internalname' => 'css', 'value' => $css));
-$input_pageshell = elgg_view('input/plaintext', array('internalname' => 'frontContents', 'value' => $frontContents));
+$input_sitepages_content = elgg_view('input/plaintext', array('internalname' => 'sitepages_content', 'value' => $sitepages_content));
$submit_input = elgg_view('input/submit', array('internalname' => 'submit', 'value' => elgg_echo('save')));
-$hidden_guid = elgg_view('input/hidden', array('internalname' => 'front_guid', 'value' => $guid));
-$pageshell = elgg_echo("sitepages:frontContents");
-$css = elgg_echo("sitepages:css");
-
+
+$pageshell_title = elgg_echo("sitepages:front_content");
+$css_title = elgg_echo("sitepages:css");
+
//preview link
-$preview = "<div class=\"page_preview\"><a href=\"#preview\">" . elgg_echo('sitepages:preview') . "</a></div>";
-
+// @todo this doesn't do anything.
+//$preview = "<div class=\"page_preview\"><a href=\"#preview\">" . elgg_echo('sitepages:preview') . "</a></div>";
+
//construct the form
-$form_body = <<<EOT
+$form_body = <<<___EOT
- <h3 class='settings'>$css</h3>
+ <h3 class='settings'>$css_title</h3>
<p class='longtext_editarea'>$input_css</p><br />
- <h3 class='settings'>$pageshell</h3>
- <p class='longtext_editarea'>$input_pageshell</p>
-
+ <h3 class='settings'>$pageshell_title</h3>
+ <p class='longtext_editarea'>$input_sitepages_content</p>
+
$hidden_guid
<br />
$submit_input
$preview
-EOT;
-?>
-<?php
- //display the form
- echo elgg_view('input/form', array('action' => "{$vars['url']}action/$action", 'body' => $form_body));
-?>
\ No newline at end of file
+___EOT;
+
+echo elgg_view('input/form', array('action' => "{$vars['url']}action/$action", 'body' => $form_body));
\ No newline at end of file
<?php\r
/**\r
- * Elgg edit frontpage\r
+ * Edit form for the custom meta tags and desc\r
+ *\r
+ * @package SitePages\r
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2\r
+ * @author Curverider Ltd\r
+ * @copyright Curverider Ltd 2008-2010\r
+ * @link http://elgg.org/\r
*/\r
- \r
-//action\r
-$action = "sitepages/addmeta";\r
- \r
-//grab the required entity\r
-$page_contents = elgg_get_entities(array('type' => 'object', 'subtype' => 'sitemeta', 'limit' => 1));\r
- \r
-if($page_contents){\r
- foreach($page_contents as $pc){\r
- $metatags = $pc->title;\r
- $description = $pc->description;\r
- $guid = $pc->guid;\r
- }\r
-}else { \r
- $metatags = "";\r
- $description = "";\r
+\r
+$action = 'sitepages/addmeta';\r
+\r
+if ($sitepages_object = sitepages_get_sitepage_object('front')) {\r
+ $meta_tags = $sitepages_object->title;\r
+ $meta_description = $sitepages_object->description;\r
+} else {\r
+ $meta_tags = '';\r
+ $meta_description = '';\r
}\r
- \r
-// set the required form variables\r
-$input_keywords = elgg_view('input/plaintext', array('internalname' => 'metatags', 'value' => $metatags));\r
-$input_description = elgg_view('input/plaintext', array('internalname' => 'description', 'value' => $description));\r
+\r
+$input_keywords = elgg_view('input/plaintext', array('internalname' => 'metatags', 'value' => $meta_tags));\r
+$input_description = elgg_view('input/plaintext', array('internalname' => 'description', 'value' => $meta_description));\r
$submit_input = elgg_view('input/submit', array('internalname' => 'submit', 'value' => elgg_echo('save')));\r
-$hidden_guid = elgg_view('input/hidden', array('internalname' => 'seo_guid', 'value' => $guid));\r
+\r
$description = elgg_echo("sitepages:metadescription");\r
$metatags = elgg_echo("sitepages:metatags");\r
- \r
-//construct the form\r
-$form_body = <<<EOT\r
+\r
+$form_body = <<<___EOT\r
\r
<h3 class='settings'>$description</h3>\r
<p class='longtext_editarea'>$input_description</p><br />\r
<h3 class='settings'>$metatags</h3>\r
<p class='longtext_editarea'>$input_keywords</p>\r
- \r
+\r
$hidden_guid\r
<br />\r
$submit_input\r
\r
-EOT;\r
-?>\r
-<?php\r
- //display the form\r
- echo elgg_view('input/form', array('action' => "{$vars['url']}action/$action", 'body' => $form_body));\r
-?>
\ No newline at end of file
+___EOT;\r
+\r
+//display the form\r
+echo elgg_view('input/form', array('action' => "{$vars['url']}action/$action", 'body' => $form_body));
\ No newline at end of file
<?php\r
/**\r
- * Available keywords, this will be pulled from activated plugin that expose a keyword function\r
- **/\r
-?>\r
-<div class="contentWrapper">\r
- <h3>Available keywords</h3>\r
- <ul>\r
- <li>{{element:loginbox}}</li>\r
- <li>{{element:stats}}</li>\r
- <li>{{object:blog}}</li>\r
- <li>{{group:4}}</li>\r
- </ul>\r
-</div>
\ No newline at end of file
+ * Lists available keywords\r
+ *\r
+ * @package SitePages\r
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2\r
+ * @author Curverider Ltd\r
+ * @copyright Curverider Ltd 2008-2010\r
+ * @link http://elgg.org/\r
+ */\r
+\r
+$keywords = $vars['config']->sitepages_keywords;\r
+$title = elgg_echo('sitepages:keywords_title');\r
+$instructions = elgg_echo('sitepages:keywords_instructions');\r
+\r
+$keywords_html = '';\r
+foreach ($keywords as $keyword => $info) {\r
+ $desc = htmlentities($info['description']);\r
+ $keywords_html .= "<li><acronym title=\"$desc\">[[$keyword]]</acronym></li>";\r
+}\r
+\r
+echo "\r
+<h3>$title</h3>\r
+<p>$instructions</p>\r
+<ul>\r
+ $keywords_html\r
+</ul>\r
+";
\ No newline at end of file
<?php
/**
- * Elgg Site pages menu
+ * Displays the tabbed menu for editing site pages.
+ *
+ * @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/
*/
-
-//type
-$type = $vars['type'];
-
-//set the url
-$url = $vars['url'] . "pg/sitepages/index.php?type=";
+
+$page_type = $vars['page_type'];
+$url = $vars['url'] . 'pg/sitepages/edit/';
?>
<div class="elgg_horizontal_tabbed_nav">
<ul>
- <li <?php if($type == 'front') echo "class = 'selected'"; ?>><a href="<?php echo $url; ?>front"><?php echo elgg_echo('sitepages:frontpage'); ?></a></li>
- <li <?php if($type == 'about') echo "class = 'selected'"; ?>><a href="<?php echo $url; ?>about"><?php echo elgg_echo('sitepages:about'); ?></a></li>
- <li <?php if($type == 'terms') echo "class = 'selected'"; ?>><a href="<?php echo $url; ?>terms"><?php echo elgg_echo('sitepages:terms'); ?></a></li>
- <li <?php if($type == 'privacy') echo "class = 'selected'"; ?>><a href="<?php echo $url; ?>privacy"><?php echo elgg_echo('sitepages:privacy'); ?></a></li>
- <li <?php if($type == 'seo') echo "class = 'selected'"; ?>><a href="<?php echo $url; ?>seo"><?php echo elgg_echo('sitepages:seo'); ?></a></li>
+ <li <?php if($page_type == 'front') echo "class = 'selected'"; ?>><a href="<?php echo $url; ?>front"><?php echo elgg_echo('sitepages:frontpage'); ?></a></li>
+ <li <?php if($page_type == 'about') echo "class = 'selected'"; ?>><a href="<?php echo $url; ?>about"><?php echo elgg_echo('sitepages:about'); ?></a></li>
+ <li <?php if($page_type == 'terms') echo "class = 'selected'"; ?>><a href="<?php echo $url; ?>terms"><?php echo elgg_echo('sitepages:terms'); ?></a></li>
+ <li <?php if($page_type == 'privacy') echo "class = 'selected'"; ?>><a href="<?php echo $url; ?>privacy"><?php echo elgg_echo('sitepages:privacy'); ?></a></li>
+ <li <?php if($page_type == 'seo') echo "class = 'selected'"; ?>><a href="<?php echo $url; ?>seo"><?php echo elgg_echo('sitepages:seo'); ?></a></li>
</ul>
</div>
\ No newline at end of file
<?php\r
/**\r
- * Meta tags\r
- **/\r
- \r
-$meta_details = elgg_get_entities(array('type' => 'object', 'subtype' => 'seo', 'limit' => 1));\r
-if($meta_details){\r
- foreach($meta_details as $md){\r
- $metatags = $md->title;\r
- $description = $md->description;\r
- }\r
+ * Add any additional defined metatags or CSS.\r
+ *\r
+ * @package SitePages\r
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2\r
+ * @author Curverider Ltd\r
+ * @copyright Curverider Ltd 2008-2010\r
+ * @link http://elgg.org/\r
+ */\r
+\r
+$meta_details = sitepages_get_sitepage_object('seo');\r
+\r
+if ($meta_details) {\r
+ $metatags = $meta_details->title;\r
+ $description = $meta_details->description;\r
+\r
+ echo <<<___END\r
+ <meta name="description" content="$description" />\r
+ <meta name="keywords" content="$metatags" />\r
+___END;\r
}\r
- \r
-?>\r
\r
-<meta name="description" content="<?php echo $description; ?>." />\r
-<meta name="keywords" content="<?php echo $metatags; ?>" />
\ No newline at end of file
+// only show on the custom front page.\r
+if (get_context() == 'sitepages:front') {\r
+ $custom_css = sitepages_get_sitepage_object('front');\r
+\r
+ if ($custom_css && $custom_css->title) {\r
+ echo "\r
+ <style>\r
+ {$custom_css->title}\r
+ </style>\r
+ ";\r
+ }\r
+}
\ No newline at end of file