diff options
Diffstat (limited to 'mod/pages')
30 files changed, 622 insertions, 217 deletions
diff --git a/mod/pages/actions/annotations/page/delete.php b/mod/pages/actions/annotations/page/delete.php new file mode 100644 index 000000000..156b516d2 --- /dev/null +++ b/mod/pages/actions/annotations/page/delete.php @@ -0,0 +1,20 @@ +<?php +/** + * Remove a page (revision) annotation + * + * @package ElggPages + */ + +// Make sure we can get the annotations and entity in question +$annotation_id = (int) get_input('annotation_id'); +$annotation = elgg_get_annotation_from_id($annotation_id); +$entity = get_entity($annotation->entity_guid); + +if ($annotation && $entity->canEdit() && $annotation->canEdit()) { + $annotation->delete(); + system_message(elgg_echo("pages:revision:delete:success")); +} else { + register_error(elgg_echo("pages:revision:delete:failure")); +} + +forward("pages/history/{$annotation->entity_guid}");
\ No newline at end of file diff --git a/mod/pages/actions/pages/delete.php b/mod/pages/actions/pages/delete.php index 927da1299..fd5791e4d 100644 --- a/mod/pages/actions/pages/delete.php +++ b/mod/pages/actions/pages/delete.php @@ -9,8 +9,9 @@ $guid = get_input('guid'); $page = get_entity($guid); -if ($page) { - if ($page->canEdit()) { +if (elgg_instanceof($page, 'object', 'page') || elgg_instanceof($page, 'object', 'page_top')) { + // only allow owners and admin to delete + if (elgg_is_admin_logged_in() || elgg_get_logged_in_user_guid() == $page->getOwnerGuid()) { $container = get_entity($page->container_guid); // Bring all child elements forward @@ -20,11 +21,33 @@ if ($page) { 'metadata_value' => $page->getGUID() )); if ($children) { + $db_prefix = elgg_get_config('dbprefix'); + $subtype_id = (int)get_subtype_id('object', 'page_top'); + $newentity_cache = is_memcache_available() ? new ElggMemcache('new_entity_cache') : null; + foreach ($children as $child) { - $child->parent_guid = $parent; + if ($parent) { + $child->parent_guid = $parent; + } else { + // If no parent, we need to transform $child to a page_top + $child_guid = (int)$child->guid; + + update_data("UPDATE {$db_prefix}entities + SET subtype = $subtype_id WHERE guid = $child_guid"); + + elgg_delete_metadata(array( + 'guid' => $child_guid, + 'metadata_name' => 'parent_guid', + )); + + _elgg_invalidate_cache_for_entity($child_guid); + if ($newentity_cache) { + $newentity_cache->delete($child_guid); + } + } } } - + if ($page->delete()) { system_message(elgg_echo('pages:delete:success')); if ($parent) { @@ -33,9 +56,9 @@ if ($page) { } } if (elgg_instanceof($container, 'group')) { - forward("pg/pages/group/$container->guid/owner"); + forward("pages/group/$container->guid/all"); } else { - forward("pg/pages/owner/$container->username/"); + forward("pages/owner/$container->username"); } } } diff --git a/mod/pages/actions/pages/edit.php b/mod/pages/actions/pages/edit.php index 6950d4b2f..40215e02e 100644 --- a/mod/pages/actions/pages/edit.php +++ b/mod/pages/actions/pages/edit.php @@ -8,9 +8,10 @@ $variables = elgg_get_config('pages'); $input = array(); foreach ($variables as $name => $type) { - $input[$name] = get_input($name); if ($name == 'title') { - $input[$name] = strip_tags($input[$name]); + $input[$name] = htmlspecialchars(get_input($name, '', false), ENT_QUOTES, 'UTF-8'); + } else { + $input[$name] = get_input($name); } if ($type == 'tags') { $input[$name] = string_to_tag_array($input[$name]); @@ -47,7 +48,22 @@ if ($page_guid) { } if (sizeof($input) > 0) { + // don't change access if not an owner/admin + $user = elgg_get_logged_in_user_entity(); + $can_change_access = true; + + if ($user && $page) { + $can_change_access = $user->isAdmin() || $user->getGUID() == $page->owner_guid; + } + foreach ($input as $name => $value) { + if (($name == 'access_id' || $name == 'write_access_id') && !$can_change_access) { + continue; + } + if ($name == 'parent_guid') { + continue; + } + $page->$name = $value; } } @@ -55,7 +71,27 @@ if (sizeof($input) > 0) { // need to add check to make sure user can write to container $page->container_guid = $container_guid; -if ($parent_guid) { +if ($parent_guid && $parent_guid != $page_guid) { + // Check if parent isn't below the page in the tree + if ($page_guid) { + $tree_page = get_entity($parent_guid); + while ($tree_page->parent_guid > 0 && $page_guid != $tree_page->guid) { + $tree_page = get_entity($tree_page->parent_guid); + } + // If is below, bring all child elements forward + if ($page_guid == $tree_page->guid) { + $previous_parent = $page->parent_guid; + $children = elgg_get_entities_from_metadata(array( + 'metadata_name' => 'parent_guid', + 'metadata_value' => $page->getGUID() + )); + if ($children) { + foreach ($children as $child) { + $child->parent_guid = $previous_parent; + } + } + } + } $page->parent_guid = $parent_guid; } @@ -74,6 +110,6 @@ if ($page->save()) { forward($page->getURL()); } else { - register_error(elgg_echo('pages:error:no_save')); + register_error(elgg_echo('pages:error:notsaved')); forward(REFERER); } diff --git a/mod/pages/images/pages.gif b/mod/pages/images/pages.gif Binary files differindex 2e4ee761a..7efcb7278 100644 --- a/mod/pages/images/pages.gif +++ b/mod/pages/images/pages.gif diff --git a/mod/pages/images/pages_lrg.gif b/mod/pages/images/pages_lrg.gif Binary files differindex 2e41e4739..234a52672 100644 --- a/mod/pages/images/pages_lrg.gif +++ b/mod/pages/images/pages_lrg.gif diff --git a/mod/pages/languages/en.php b/mod/pages/languages/en.php index 1cb879edc..c204c1901 100644 --- a/mod/pages/languages/en.php +++ b/mod/pages/languages/en.php @@ -15,7 +15,7 @@ $english = array( 'pages:owner' => "%s's pages", 'pages:friends' => "Friends' pages", 'pages:all' => "All site pages", - 'pages:add' => "New page", + 'pages:add' => "Add a page", 'pages:group' => "Group pages", 'groups:enablepages' => 'Enable group pages', @@ -25,9 +25,20 @@ $english = array( 'pages:history' => "History", 'pages:view' => "View page", 'pages:revision' => "Revision", + 'pages:current_revision' => "Current Revision", + 'pages:revert' => "Revert", 'pages:navigation' => "Navigation", - 'pages:via' => "via pages", + 'pages:new' => "A new page", + 'pages:notification' => +'%s added a new page: + +%s +%s + +View and comment on the new page: +%s +', 'item:object:page_top' => 'Top-level pages', 'item:object:page' => 'Pages', 'pages:nogroup' => 'This group does not have any pages yet', @@ -38,22 +49,22 @@ $english = array( * River **/ - 'pages:river:create' => 'created the page', - 'pages:river:created' => "%s wrote", - 'pages:river:updated' => "%s updated", - 'pages:river:posted' => "%s posted", - 'pages:river:update' => "a page titled", - 'river:commented:object:page' => 'the page', - 'river:commented:object:page_top' => 'the page', + 'river:create:object:page' => '%s created a page %s', + 'river:create:object:page_top' => '%s created a page %s', + 'river:update:object:page' => '%s updated a page %s', + 'river:update:object:page_top' => '%s updated a page %s', + 'river:comment:object:page' => '%s commented on a page titled %s', + 'river:comment:object:page_top' => '%s commented on a page titled %s', /** * Form fields */ - 'pages:title' => 'Pages Title', - 'pages:description' => 'Your page entry', + 'pages:title' => 'Page title', + 'pages:description' => 'Page text', 'pages:tags' => 'Tags', - 'pages:access_id' => 'Access', + 'pages:parent_guid' => 'Parent page', + 'pages:access_id' => 'Read access', 'pages:write_access_id' => 'Write access', /** @@ -63,9 +74,12 @@ $english = array( 'pages:cantedit' => 'You cannot edit this page', 'pages:saved' => 'Page saved', 'pages:notsaved' => 'Page could not be saved', - 'pages:notitle' => 'You must specify a title for your page.', + 'pages:error:no_title' => 'You must specify a title for this page.', 'pages:delete:success' => 'The page was successfully deleted.', 'pages:delete:failure' => 'The page could not be deleted.', + 'pages:revision:delete:success' => 'The page revision was successfully deleted.', + 'pages:revision:delete:failure' => 'The page revision could not be deleted.', + 'pages:revision:not_found' => 'Cannot find this revision.', /** * Page @@ -102,4 +116,4 @@ $english = array( 'pages:backtoparent' => "Back to '%s'", ); -add_translation("en", $english);
\ No newline at end of file +add_translation("en", $english); diff --git a/mod/pages/lib/pages.php b/mod/pages/lib/pages.php index 72aad2aed..7f90d53d8 100644 --- a/mod/pages/lib/pages.php +++ b/mod/pages/lib/pages.php @@ -9,7 +9,7 @@ * @param ElggObject $page * @return array */ -function pages_prepare_form_vars($page = null, $parent_guid = 0) { +function pages_prepare_form_vars($page = null, $parent_guid = 0, $revision = null) { // input names => defaults $values = array( @@ -26,18 +26,26 @@ function pages_prepare_form_vars($page = null, $parent_guid = 0) { if ($page) { foreach (array_keys($values) as $field) { - $values[$field] = $page->$field; + if (isset($page->$field)) { + $values[$field] = $page->$field; + } } } if (elgg_is_sticky_form('page')) { - foreach (array_keys($values) as $field) { - $values[$field] = elgg_get_sticky_value('page', $field); + $sticky_values = elgg_get_sticky_values('page'); + foreach ($sticky_values as $key => $value) { + $values[$key] = $value; } } elgg_clear_sticky_form('page'); + // load the revision annotation if requested + if ($revision instanceof ElggAnnotation && $revision->entity_guid == $page->getGUID()) { + $values['description'] = $revision->value; + } + return $values; } @@ -62,11 +70,11 @@ function pages_prepare_parent_breadcrumbs($page) { } /** - * Register the navigation menu + * Produce the navigation tree * * @param ElggEntity $container Container entity for the pages */ -function pages_register_navigation_tree($container) { +function pages_get_navigation_tree($container) { if (!$container) { return; } @@ -75,14 +83,24 @@ function pages_register_navigation_tree($container) { 'type' => 'object', 'subtype' => 'page_top', 'container_guid' => $container->getGUID(), + 'limit' => 0, )); + if (!$top_pages) { + return; + } + + $tree = array(); + $depths = array(); + foreach ($top_pages as $page) { - elgg_register_menu_item('pages_nav', array( - 'name' => $page->getGUID(), + $tree[] = array( + 'guid' => $page->getGUID(), 'title' => $page->title, 'url' => $page->getURL(), - )); + 'depth' => 0, + ); + $depths[$page->guid] = 0; $stack = array(); array_push($stack, $page); @@ -93,17 +111,42 @@ function pages_register_navigation_tree($container) { 'subtype' => 'page', 'metadata_name' => 'parent_guid', 'metadata_value' => $parent->getGUID(), + 'limit' => 0, )); - - 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); + + if ($children) { + foreach ($children as $child) { + $tree[] = array( + 'guid' => $child->getGUID(), + 'title' => $child->title, + 'url' => $child->getURL(), + 'parent_guid' => $parent->getGUID(), + 'depth' => $depths[$parent->guid] + 1, + ); + $depths[$child->guid] = $depths[$parent->guid] + 1; + array_push($stack, $child); + } } } } + return $tree; +} + +/** + * Register the navigation menu + * + * @param ElggEntity $container Container entity for the pages + */ +function pages_register_navigation_tree($container) { + $pages = pages_get_navigation_tree($container); + if ($pages) { + foreach ($pages as $page) { + elgg_register_menu_item('pages_nav', array( + 'name' => $page['guid'], + 'text' => $page['title'], + 'href' => $page['url'], + 'parent_name' => $page['parent_guid'], + )); + } + } } diff --git a/mod/pages/manifest.xml b/mod/pages/manifest.xml index e19ed4de7..4cf999f45 100644 --- a/mod/pages/manifest.xml +++ b/mod/pages/manifest.xml @@ -3,13 +3,16 @@ <name>Pages</name> <author>Core developers</author> <version>1.8</version> - <description>Elgg Pages</description> + <category>bundled</category> + <category>content</category> + <category>widget</category> + <description>Collaborative editing tool. Enables users to create pages similar to a wiki without having to know wiki syntax.</description> <website>http://www.elgg.org</website> <copyright>See COPYRIGHT.txt</copyright> - <license>GNU Public License version 2</license> + <license>GNU General Public License version 2</license> <requires> - <type>elgg_version</type> - <version>2010030101</version> + <type>elgg_release</type> + <version>1.8</version> </requires> - <admin_interface>simple</admin_interface> + <activate_on_install>true</activate_on_install> </plugin_manifest> diff --git a/mod/pages/edit.php b/mod/pages/pages/pages/edit.php index 8e530084b..a925cdc55 100644 --- a/mod/pages/edit.php +++ b/mod/pages/pages/pages/edit.php @@ -7,15 +7,18 @@ gatekeeper(); -$page_guid = get_input('guid'); +$page_guid = (int)get_input('guid'); +$revision = (int)get_input('annotation_id'); $page = get_entity($page_guid); if (!$page) { - + register_error(elgg_echo('noaccess')); + forward(''); } $container = $page->getContainerEntity(); if (!$container) { - + register_error(elgg_echo('noaccess')); + forward(''); } elgg_set_page_owner_guid($container->getGUID()); @@ -26,7 +29,17 @@ elgg_push_breadcrumb(elgg_echo('edit')); $title = elgg_echo("pages:edit"); if ($page->canEdit()) { - $vars = pages_prepare_form_vars($page); + + if ($revision) { + $revision = elgg_get_annotation_from_id($revision); + if (!$revision || !($revision->entity_guid == $page_guid)) { + register_error(elgg_echo('pages:revision:not_found')); + forward(REFERER); + } + } + + $vars = pages_prepare_form_vars($page, $page->parent_guid, $revision); + $content = elgg_view_form('pages/edit', array(), $vars); } else { $content = elgg_echo("pages:noaccess"); @@ -34,7 +47,6 @@ if ($page->canEdit()) { $body = elgg_view_layout('content', array( 'filter' => '', - 'buttons' => '', 'content' => $content, 'title' => $title, )); diff --git a/mod/pages/friends.php b/mod/pages/pages/pages/friends.php index 51c07194f..cecc4053b 100644 --- a/mod/pages/friends.php +++ b/mod/pages/pages/pages/friends.php @@ -5,17 +5,16 @@ * @package ElggPages */ -$guid = get_input('guid'); - -elgg_set_page_owner_guid($guid); $owner = elgg_get_page_owner_entity(); if (!$owner) { - + forward('', '404'); } -elgg_push_breadcrumb($owner->name, "pg/pages/owner/$owner->username"); +elgg_push_breadcrumb($owner->name, "pages/owner/$owner->username"); elgg_push_breadcrumb(elgg_echo('friends')); +elgg_register_title_button(); + $title = elgg_echo('pages:friends'); $content = list_user_friends_objects($owner->guid, 'page_top', 10, false); diff --git a/mod/pages/history.php b/mod/pages/pages/pages/history.php index 5a31723cb..7f5fa4f4f 100644 --- a/mod/pages/history.php +++ b/mod/pages/pages/pages/history.php @@ -9,20 +9,20 @@ $page_guid = get_input('guid'); $page = get_entity($page_guid); if (!$page) { - + forward('', '404'); } $container = $page->getContainerEntity(); if (!$container) { - + forward('', '404'); } elgg_set_page_owner_guid($container->getGUID()); if (elgg_instanceof($container, 'group')) { - elgg_push_breadcrumb($container->name, "pg/pages/group/$container->guid/owner"); + elgg_push_breadcrumb($container->name, "pages/group/$container->guid/all"); } else { - elgg_push_breadcrumb($container->name, "pg/pages/owner/$container->username"); + elgg_push_breadcrumb($container->name, "pages/owner/$container->username"); } pages_prepare_parent_breadcrumbs($page); elgg_push_breadcrumb($page->title, $page->getURL()); @@ -30,11 +30,15 @@ elgg_push_breadcrumb(elgg_echo('pages:history')); $title = $page->title . ": " . elgg_echo('pages:history'); -$content = list_annotations($page_guid, 'page', 20, false); +$content = elgg_list_annotations(array( + 'guid' => $page_guid, + 'annotation_name' => 'page', + 'limit' => 20, + 'order_by' => "n_table.time_created desc" +)); $body = elgg_view_layout('content', array( 'filter' => '', - 'buttons' => '', 'content' => $content, 'title' => $title, 'sidebar' => elgg_view('pages/sidebar/navigation', array('page' => $page)), diff --git a/mod/pages/new.php b/mod/pages/pages/pages/new.php index 42a8e04e1..7cab2facb 100644 --- a/mod/pages/new.php +++ b/mod/pages/pages/pages/new.php @@ -30,7 +30,6 @@ $content = elgg_view_form('pages/edit', array(), $vars); $body = elgg_view_layout('content', array( 'filter' => '', - 'buttons' => '', 'content' => $content, 'title' => $title, )); diff --git a/mod/pages/index.php b/mod/pages/pages/pages/owner.php index ff5a78311..7de74a3b4 100644 --- a/mod/pages/index.php +++ b/mod/pages/pages/pages/owner.php @@ -5,12 +5,9 @@ * @package ElggPages */ -$guid = get_input('guid'); - -elgg_set_page_owner_guid($guid); $owner = elgg_get_page_owner_entity(); if (!$owner) { - + forward('', '404'); } // access check for closed groups @@ -20,11 +17,12 @@ $title = elgg_echo('pages:owner', array($owner->name)); elgg_push_breadcrumb($owner->name); +elgg_register_title_button(); + $content = elgg_list_entities(array( - 'types' => 'object', - 'subtypes' => 'page_top', + 'type' => 'object', + 'subtype' => 'page_top', 'container_guid' => elgg_get_page_owner_guid(), - 'limit' => $limit, 'full_view' => false, )); if (!$content) { @@ -36,11 +34,14 @@ if (elgg_get_page_owner_guid() == elgg_get_logged_in_user_guid()) { $filter_context = 'mine'; } +$sidebar = elgg_view('pages/sidebar/navigation'); +$sidebar .= elgg_view('pages/sidebar'); + $params = array( 'filter_context' => $filter_context, 'content' => $content, 'title' => $title, - 'sidebar' => elgg_view('pages/sidebar/navigation'), + 'sidebar' => $sidebar, ); if (elgg_instanceof($owner, 'group')) { diff --git a/mod/pages/revision.php b/mod/pages/pages/pages/revision.php index 1537e0355..66a36e4e7 100644 --- a/mod/pages/revision.php +++ b/mod/pages/pages/pages/revision.php @@ -27,9 +27,9 @@ if (!$container) { $title = $page->title . ": " . elgg_echo('pages:revision'); if (elgg_instanceof($container, 'group')) { - elgg_push_breadcrumb($container->name, "pg/pages/group/$container->guid/owner"); + elgg_push_breadcrumb($container->name, "pages/group/$container->guid/all"); } else { - elgg_push_breadcrumb($container->name, "pg/pages/owner/$container->username"); + elgg_push_breadcrumb($container->name, "pages/owner/$container->username"); } pages_prepare_parent_breadcrumbs($page); elgg_push_breadcrumb($page->title, $page->getURL()); @@ -38,14 +38,13 @@ elgg_push_breadcrumb(elgg_echo('pages:revision')); $content = elgg_view('object/page_top', array( 'entity' => $page, 'revision' => $annotation, - 'full' => true, + 'full_view' => true, )); $sidebar = elgg_view('pages/sidebar/history', array('page' => $page)); $body = elgg_view_layout('content', array( 'filter' => '', - 'buttons' => '', 'content' => $content, 'title' => $title, 'sidebar' => $sidebar, diff --git a/mod/pages/view.php b/mod/pages/pages/pages/view.php index 3a323cc23..e1c3fdbfd 100644 --- a/mod/pages/view.php +++ b/mod/pages/pages/pages/view.php @@ -8,7 +8,9 @@ $page_guid = get_input('guid'); $page = get_entity($page_guid); if (!$page) { - forward(); + register_error(elgg_echo('noaccess')); + $_SESSION['last_forward_from'] = current_page_url(); + forward(''); } elgg_set_page_owner_guid($page->getContainerGUID()); @@ -22,29 +24,29 @@ if (!$container) { $title = $page->title; if (elgg_instanceof($container, 'group')) { - elgg_push_breadcrumb($container->name, "pg/pages/group/$container->guid/owner"); + elgg_push_breadcrumb($container->name, "pages/group/$container->guid/all"); } else { - elgg_push_breadcrumb($container->name, "pg/pages/owner/$container->username"); + elgg_push_breadcrumb($container->name, "pages/owner/$container->username"); } pages_prepare_parent_breadcrumbs($page); elgg_push_breadcrumb($title); -$content = elgg_view_entity($page, true); +$content = elgg_view_entity($page, array('full_view' => true)); $content .= elgg_view_comments($page); -$buttons = ''; -if ($page->canEdit()) { - $url = "pg/pages/add/$page->guid"; - $buttons = elgg_view('output/url', array( - 'text' => elgg_echo('pages:newchild'), +// can add subpage if can edit this page and write to container (such as a group) +if ($page->canEdit() && $container->canWriteToContainer(0, 'object', 'page')) { + $url = "pages/add/$page->guid"; + elgg_register_menu_item('title', array( + 'name' => 'subpage', 'href' => $url, - 'class' => 'elgg-button-action', - )); + 'text' => elgg_echo('pages:newchild'), + 'link_class' => 'elgg-button elgg-button-action', + )); } $body = elgg_view_layout('content', array( 'filter' => '', - 'buttons' => $buttons, 'content' => $content, 'title' => $title, 'sidebar' => elgg_view('pages/sidebar/navigation'), diff --git a/mod/pages/world.php b/mod/pages/pages/pages/world.php index 2a7ea4be9..c130a6bd6 100644 --- a/mod/pages/world.php +++ b/mod/pages/pages/pages/world.php @@ -10,16 +10,22 @@ $title = elgg_echo('pages:all'); elgg_pop_breadcrumb(); elgg_push_breadcrumb(elgg_echo('pages')); +elgg_register_title_button(); + $content = elgg_list_entities(array( - 'types' => 'object', - 'subtypes' => 'page_top', + 'type' => 'object', + 'subtype' => 'page_top', 'full_view' => false, )); +if (!$content) { + $content = '<p>' . elgg_echo('pages:none') . '</p>'; +} $body = elgg_view_layout('content', array( 'filter_context' => 'all', 'content' => $content, 'title' => $title, + 'sidebar' => elgg_view('pages/sidebar'), )); echo elgg_view_page($title, $body); diff --git a/mod/pages/start.php b/mod/pages/start.php index ec5a8815b..f9c34cd85 100644 --- a/mod/pages/start.php +++ b/mod/pages/start.php @@ -16,7 +16,7 @@ function pages_init() { // register a library of helper functions elgg_register_library('elgg:pages', elgg_get_plugins_path() . 'pages/lib/pages.php'); - $item = new ElggMenuItem('pages', elgg_echo('pages'), 'pg/pages/all'); + $item = new ElggMenuItem('pages', elgg_echo('pages'), 'pages/all'); elgg_register_menu_item('site', $item); // Register a page handler, so we can have nice URLs @@ -25,16 +25,22 @@ function pages_init() { // Register a url handler elgg_register_entity_url_handler('object', 'page_top', 'pages_url'); elgg_register_entity_url_handler('object', 'page', 'pages_url'); - register_extender_url_handler('pages_revision_url', 'annotation', 'page'); + elgg_register_annotation_url_handler('page', 'pages_revision_url'); // Register some actions - $action_base = elgg_get_plugins_path() . 'pages/actions/pages'; - elgg_register_action("pages/edit", "$action_base/edit.php"); - elgg_register_action("pages/editwelcome", "$action_base/editwelcome.php"); - elgg_register_action("pages/delete", "$action_base/delete.php"); + $action_base = elgg_get_plugins_path() . 'pages/actions'; + elgg_register_action("pages/edit", "$action_base/pages/edit.php"); + elgg_register_action("pages/delete", "$action_base/pages/delete.php"); + elgg_register_action("annotations/page/delete", "$action_base/annotations/page/delete.php"); - // Extend some views - elgg_extend_view('css/screen', 'pages/css'); + // Extend the main css view + elgg_extend_view('css/elgg', 'pages/css'); + + // Register javascript needed for sidebar menu + $js_url = 'mod/pages/vendors/jquery-treeview/jquery.treeview.min.js'; + elgg_register_js('jquery-treeview', $js_url); + $css_url = 'mod/pages/vendors/jquery-treeview/jquery.treeview.css'; + elgg_register_css('jquery-treeview', $css_url); // Register entity type for search elgg_register_entity_type('object', 'page'); @@ -58,8 +64,9 @@ function pages_init() { 'title' => 'text', 'description' => 'longtext', 'tags' => 'tags', + 'parent_guid' => 'parent', 'access_id' => 'access', - 'write_access_id' => 'access', + 'write_access_id' => 'write_access', )); elgg_register_plugin_hook_handler('register', 'menu:owner_block', 'pages_owner_block_menu'); @@ -71,54 +78,54 @@ function pages_init() { // icon url override elgg_register_plugin_hook_handler('entity:icon:url', 'object', 'pages_icon_url_override'); + // entity menu + elgg_register_plugin_hook_handler('register', 'menu:entity', 'pages_entity_menu_setup'); + + // hook into annotation menu + elgg_register_plugin_hook_handler('register', 'menu:annotation', 'pages_annotation_menu_setup'); + // register ecml views to parse elgg_register_plugin_hook_handler('get_views', 'ecml', 'pages_ecml_views_hook'); + + elgg_register_event_handler('upgrade', 'system', 'pages_run_upgrades'); } /** * Dispatcher for pages. * URLs take the form of - * All pages: pg/pages/all - * User's pages: pg/pages/owner/<username> - * Friends' pages: pg/pages/friends/<username> - * View page: pg/pages/view/<guid>/<title> - * New page: pg/pages/add/<guid> (container: user, group, parent) - * Edit page: pg/pages/edit/<guid> - * History of page: pg/pages/history/<guid> - * Revision of page: pg/pages/revision/<id> - * Group pages: pg/pages/group/<guid>/owner + * All pages: pages/all + * User's pages: pages/owner/<username> + * Friends' pages: pages/friends/<username> + * View page: pages/view/<guid>/<title> + * New page: pages/add/<guid> (container: user, group, parent) + * Edit page: pages/edit/<guid> + * History of page: pages/history/<guid> + * Revision of page: pages/revision/<id> + * Group pages: pages/group/<guid>/all * * Title is ignored * * @param array $page + * @return bool */ function pages_page_handler($page) { elgg_load_library('elgg:pages'); - // add the jquery treeview files for navigation - $js_url = elgg_get_site_url() . 'mod/pages/vendors/jquery-treeview/jquery.treeview.min.js'; - elgg_register_js($js_url, 'jquery-treeview'); - $css_url = elgg_get_site_url() . 'mod/pages/vendors/jquery-treeview/jquery.treeview.css'; - elgg_register_css($css_url, 'jquery-treeview'); - if (!isset($page[0])) { $page[0] = 'all'; } - elgg_push_breadcrumb(elgg_echo('pages'), 'pg/pages/all'); + elgg_push_breadcrumb(elgg_echo('pages'), 'pages/all'); - $base_dir = elgg_get_plugins_path() . 'pages'; + $base_dir = elgg_get_plugins_path() . 'pages/pages/pages'; $page_type = $page[0]; switch ($page_type) { case 'owner': - $owner = get_user_by_username($page[1]); - set_input('guid', $owner->guid); - include "$base_dir/index.php"; + include "$base_dir/owner.php"; break; case 'friends': - set_input('username', $page[1]); include "$base_dir/friends.php"; break; case 'view': @@ -134,8 +141,7 @@ function pages_page_handler($page) { include "$base_dir/edit.php"; break; case 'group': - set_input('guid', $page[1]); - include "$base_dir/index.php"; + include "$base_dir/owner.php"; break; case 'history': set_input('guid', $page[1]); @@ -146,12 +152,12 @@ function pages_page_handler($page) { include "$base_dir/revision.php"; break; case 'all': - default: include "$base_dir/world.php"; break; + default: + return false; } - - return; + return true; } /** @@ -162,7 +168,7 @@ function pages_page_handler($page) { */ function pages_url($entity) { $title = elgg_get_friendly_title($entity->title); - return "pg/pages/view/$entity->guid/$title"; + return "pages/view/$entity->guid/$title"; } /** @@ -172,7 +178,7 @@ function pages_url($entity) { * @return string */ function pages_revision_url($annotation) { - return "pg/pages/revision/$annotation->id"; + return "pages/revision/$annotation->id"; } /** @@ -185,10 +191,12 @@ function pages_icon_url_override($hook, $type, $returnvalue, $params) { if (elgg_instanceof($entity, 'object', 'page_top') || elgg_instanceof($entity, 'object', 'page')) { switch ($params['size']) { + case 'topbar': + case 'tiny': case 'small': return 'mod/pages/images/pages.gif'; break; - case 'medium': + default: return 'mod/pages/images/pages_lrg.gif'; break; } @@ -200,12 +208,12 @@ function pages_icon_url_override($hook, $type, $returnvalue, $params) { */ function pages_owner_block_menu($hook, $type, $return, $params) { if (elgg_instanceof($params['entity'], 'user')) { - $url = "pg/pages/owner/{$params['entity']->username}"; + $url = "pages/owner/{$params['entity']->username}"; $item = new ElggMenuItem('pages', elgg_echo('pages'), $url); $return[] = $item; } else { if ($params['entity']->pages_enable != "no") { - $url = "pg/pages/group/{$params['entity']->guid}/owner"; + $url = "pages/group/{$params['entity']->guid}/all"; $item = new ElggMenuItem('pages', elgg_echo('pages:group'), $url); $return[] = $item; } @@ -215,6 +223,40 @@ function pages_owner_block_menu($hook, $type, $return, $params) { } /** + * Add links/info to entity menu particular to pages plugin + */ +function pages_entity_menu_setup($hook, $type, $return, $params) { + if (elgg_in_context('widgets')) { + return $return; + } + + $entity = $params['entity']; + $handler = elgg_extract('handler', $params, false); + if ($handler != 'pages') { + return $return; + } + + // remove delete if not owner or admin + if (!elgg_is_admin_logged_in() && elgg_get_logged_in_user_guid() != $entity->getOwnerGuid()) { + foreach ($return as $index => $item) { + if ($item->getName() == 'delete') { + unset($return[$index]); + } + } + } + + $options = array( + 'name' => 'history', + 'text' => elgg_echo('pages:history'), + 'href' => "pages/history/$entity->guid", + 'priority' => 150, + ); + $return[] = ElggMenuItem::factory($options); + + return $return; +} + +/** * Returns a more meaningful message * * @param unknown_type $hook @@ -226,12 +268,18 @@ function page_notify_message($hook, $entity_type, $returnvalue, $params) { $entity = $params['entity']; $to_entity = $params['to_entity']; $method = $params['method']; - if (($entity instanceof ElggEntity) && (($entity->getSubtype() == 'page_top') || ($entity->getSubtype() == 'page'))) { + + if (elgg_instanceof($entity, 'object', 'page') || elgg_instanceof($entity, 'object', 'page_top')) { $descr = $entity->description; $title = $entity->title; - $url = elgg_get_site_url() . "pg/view/" . $entity->guid; $owner = $entity->getOwnerEntity(); - return $owner->name . ' ' . elgg_echo("pages:via") . ': ' . $title . "\n\n" . $descr . "\n\n" . $entity->getURL(); + + return elgg_echo('pages:notification', array( + $owner->name, + $title, + $descr, + $entity->getURL() + )); } return null; } @@ -239,25 +287,37 @@ function page_notify_message($hook, $entity_type, $returnvalue, $params) { /** * Extend permissions checking to extend can-edit for write users. * - * @param unknown_type $hook - * @param unknown_type $entity_type - * @param unknown_type $returnvalue - * @param unknown_type $params + * @param string $hook + * @param string $entity_type + * @param bool $returnvalue + * @param array $params */ -function pages_write_permission_check($hook, $entity_type, $returnvalue, $params) -{ +function pages_write_permission_check($hook, $entity_type, $returnvalue, $params) { if ($params['entity']->getSubtype() == 'page' || $params['entity']->getSubtype() == 'page_top') { $write_permission = $params['entity']->write_access_id; $user = $params['user']; - if (($write_permission) && ($user)) { - // $list = get_write_access_array($user->guid); - $list = get_access_array($user->guid); // get_access_list($user->guid); - - if (($write_permission!=0) && (in_array($write_permission,$list))) { - return true; + if ($write_permission && $user) { + switch ($write_permission) { + case ACCESS_PRIVATE: + // Elgg's default decision is what we want + return; + break; + case ACCESS_FRIENDS: + $owner = $params['entity']->getOwnerEntity(); + if ($owner && $owner->isFriendsWith($user->guid)) { + return true; + } + break; + default: + $list = get_access_array($user->guid); + if (in_array($write_permission, $list)) { + // user in the access collection + return true; + } + break; } } } diff --git a/mod/pages/upgrades/2012061800.php b/mod/pages/upgrades/2012061800.php new file mode 100644 index 000000000..c21ccae3b --- /dev/null +++ b/mod/pages/upgrades/2012061800.php @@ -0,0 +1,49 @@ +<?php +/** + * Restore disappeared subpages. This is caused by its parent page being deleted + * when the parent page is a top level page. We take advantage of the fact that + * the parent_guid was deleted for the subpages. + * + * This upgrade script will no longer work once we have converted all pages to + * have the same entity subtype. + */ + + +/** + * Update subtype + * + * @param ElggObject $page + */ +function pages_2012061800($page) { + $dbprefix = elgg_get_config('dbprefix'); + $subtype_id = (int)get_subtype_id('object', 'page_top'); + $page_guid = (int)$page->guid; + update_data("UPDATE {$dbprefix}entities + SET subtype = $subtype_id WHERE guid = $page_guid"); + error_log("called"); + return true; +} + +$previous_access = elgg_set_ignore_access(true); + +$dbprefix = elgg_get_config('dbprefix'); +$name_metastring_id = get_metastring_id('parent_guid'); +if (!$name_metastring_id) { + return; +} + +// Looking for pages without metadata +$options = array( + 'type' => 'object', + 'subtype' => 'page', + 'wheres' => "NOT EXISTS ( + SELECT 1 FROM {$dbprefix}metadata md + WHERE md.entity_guid = e.guid + AND md.name_id = $name_metastring_id)" +); +$batch = new ElggBatch('elgg_get_entities_from_metadata', $options, 'pages_2012061800', 50, false); +elgg_set_ignore_access($previous_access); + +if ($batch->callbackResult) { + error_log("Elgg Pages upgrade (2012061800) succeeded"); +} diff --git a/mod/pages/views/default/annotation/page.php b/mod/pages/views/default/annotation/page.php index f7a7a78a1..ecb289092 100644 --- a/mod/pages/views/default/annotation/page.php +++ b/mod/pages/views/default/annotation/page.php @@ -21,6 +21,7 @@ if (!$owner) { $owner_link = elgg_view('output/url', array( 'href' => $owner->getURL(), 'text' => $owner->name, + 'is_trusted' => true, )); $date = elgg_view_friendly_time($annotation->time_created); @@ -28,6 +29,7 @@ $date = elgg_view_friendly_time($annotation->time_created); $title_link = elgg_view('output/url', array( 'href' => $annotation->getURL(), 'text' => $page->title, + 'is_trusted' => true, )); $subtitle = elgg_echo('pages:revision:subtitle', array($date, $owner_link)); @@ -37,4 +39,22 @@ $body = <<< HTML <p class="elgg-subtext">$subtitle</p> HTML; +if (!elgg_in_context('widgets')) { + $menu = elgg_view_menu('annotation', array( + 'annotation' => $annotation, + 'sort_by' => 'priority', + 'class' => 'elgg-menu-hz float-alt', + )); +} + +$body = <<<HTML +<div class="mbn"> + $menu + <h3>$title_link</h3> + <span class="elgg-subtext"> + $subtitle + </span> +</div> +HTML; + echo elgg_view_image_block($icon, $body);
\ No newline at end of file diff --git a/mod/pages/views/default/forms/pages/edit.php b/mod/pages/views/default/forms/pages/edit.php index abb6716fd..e14ff19ec 100644 --- a/mod/pages/views/default/forms/pages/edit.php +++ b/mod/pages/views/default/forms/pages/edit.php @@ -6,26 +6,55 @@ */ $variables = elgg_get_config('pages'); +$user = elgg_get_logged_in_user_entity(); +$entity = elgg_extract('entity', $vars); +$can_change_access = true; +if ($user && $entity) { + $can_change_access = ($user->isAdmin() || $user->getGUID() == $entity->owner_guid); +} + foreach ($variables as $name => $type) { + // don't show read / write access inputs for non-owners or admin when editing + if (($type == 'access' || $type == 'write_access') && !$can_change_access) { + continue; + } + + // don't show parent picker input for top or new pages. + if ($name == 'parent_guid' && (!$vars['parent_guid'] || !$vars['guid'])) { + continue; + } + + if ($type == 'parent') { + $input_view = "pages/input/$type"; + } else { + $input_view = "input/$type"; + } + ?> <div> - <label><?php echo elgg_echo("pages:$name") ?></label><br /> - <?php echo elgg_view("input/$type", array( + <label><?php echo elgg_echo("pages:$name") ?></label> + <?php + if ($type != 'longtext') { + echo '<br />'; + } + + echo elgg_view($input_view, array( 'name' => $name, 'value' => $vars[$name], + 'entity' => ($name == 'parent_guid') ? $vars['entity'] : null, )); ?> </div> <?php } -$cats = elgg_view('categories', $vars); +$cats = elgg_view('input/categories', $vars); if (!empty($cats)) { echo $cats; } -echo '<div>'; +echo '<div class="elgg-foot">'; if ($vars['guid']) { echo elgg_view('input/hidden', array( 'name' => 'page_guid', @@ -36,7 +65,7 @@ echo elgg_view('input/hidden', array( 'name' => 'container_guid', 'value' => $vars['container_guid'], )); -if ($vars['parent_guid']) { +if (!$vars['guid']) { echo elgg_view('input/hidden', array( 'name' => 'parent_guid', 'value' => $vars['parent_guid'], diff --git a/mod/pages/views/default/input/write_access.php b/mod/pages/views/default/input/write_access.php new file mode 100644 index 000000000..69277ca20 --- /dev/null +++ b/mod/pages/views/default/input/write_access.php @@ -0,0 +1,35 @@ +<?php +/** + * Write access + * + * Removes the public option found in input/access + * + * @uses $vars['value'] The current value, if any + * @uses $vars['options_values'] + * @uses $vars['name'] The name of the input field + * @uses $vars['entity'] Optional. The entity for this access control (uses write_access_id) + */ + +$options = get_write_access_array(); +unset($options[ACCESS_PUBLIC]); + +$defaults = array( + 'class' => 'elgg-input-access', + 'disabled' => FALSE, + 'value' => get_default_access(), + 'options_values' => $options, +); + +if (isset($vars['entity'])) { + $defaults['value'] = $vars['entity']->write_access_id; + unset($vars['entity']); +} + +$vars = array_merge($defaults, $vars); + +if ($vars['value'] == ACCESS_DEFAULT) { + $vars['value'] = get_default_access(); +} +$vars['value'] = ($vars['value'] == ACCESS_PUBLIC) ? ACCESS_LOGGED_IN : $vars['value']; + +echo elgg_view('input/dropdown', $vars); diff --git a/mod/pages/views/default/object/page_top.php b/mod/pages/views/default/object/page_top.php index 1e1e5251d..f35202993 100644 --- a/mod/pages/views/default/object/page_top.php +++ b/mod/pages/views/default/object/page_top.php @@ -4,13 +4,13 @@ * * @package ElggPages * - * @uses $vars['entity'] The page object - * @uses $vars['full'] Whether to display the full view - * @uses $vars['revision'] This parameter not supported by elgg_view_entity() + * @uses $vars['entity'] The page object + * @uses $vars['full_view'] Whether to display the full view + * @uses $vars['revision'] This parameter not supported by elgg_view_entity() */ -$full = elgg_extract('full', $vars, FALSE); +$full = elgg_extract('full_view', $vars, FALSE); $page = elgg_extract('entity', $vars, FALSE); $revision = elgg_extract('revision', $vars, FALSE); @@ -18,6 +18,13 @@ if (!$page) { return TRUE; } +// pages used to use Public for write access +if ($page->write_access_id == ACCESS_PUBLIC) { + // this works because this metadata is public + $page->write_access_id = ACCESS_LOGGED_IN; +} + + if ($revision) { $annotation = $revision; } else { @@ -31,13 +38,14 @@ $page_icon = elgg_view('pages/icon', array('annotation' => $annotation, 'size' = $editor = get_entity($annotation->owner_guid); $editor_link = elgg_view('output/url', array( - 'href' => "pg/pages/owner/$editor->username", + 'href' => "pages/owner/$editor->username", 'text' => $editor->name, + 'is_trusted' => true, )); $date = elgg_view_friendly_time($annotation->time_created); $editor_text = elgg_echo('pages:strapline', array($date, $editor_link)); -$tags = elgg_view('output/tags', array('tags' => $page->tags)); +$categories = elgg_view('output/categories', $vars); $comments_count = $page->countComments(); //only display if there are commments @@ -46,27 +54,32 @@ if ($comments_count != 0 && !$revision) { $comments_link = elgg_view('output/url', array( 'href' => $page->getURL() . '#page-comments', 'text' => $text, + 'is_trusted' => true, )); } else { $comments_link = ''; } -$history_link = elgg_view('output/url', array( - 'href' => "pg/pages/history/$page->guid", - 'text' => elgg_echo('pages:history'), -)); - -$metadata = elgg_view('layout/objects/list/metadata', array( - 'entity' => $page, - 'handler' => 'pages', - 'links' => array($history_link), -)); - -$subtitle = "$editor_text $categories $comments_link"; +$subtitle = "$editor_text $comments_link $categories"; // do not show the metadata and controls in widget view -if (elgg_in_context('widgets') || $revision) { - $metadata = ''; +if (!elgg_in_context('widgets')) { + // If we're looking at a revision, display annotation menu + if ($revision) { + $metadata = elgg_view_menu('annotation', array( + 'annotation' => $annotation, + 'sort_by' => 'priority', + 'class' => 'elgg-menu-hz float-alt', + )); + } else { + // Regular entity menu + $metadata = elgg_view_menu('entity', array( + 'entity' => $vars['entity'], + 'handler' => 'pages', + 'sort_by' => 'priority', + 'class' => 'elgg-menu-hz', + )); + } } if ($full) { @@ -74,19 +87,19 @@ if ($full) { $params = array( 'entity' => $page, - 'title' => false, 'metadata' => $metadata, 'subtitle' => $subtitle, - 'tags' => $tags, ); - $list_body = elgg_view('layout/objects/list/body', $params); - - $info = elgg_view_image_block($page_icon, $list_body); + $params = $params + $vars; + $summary = elgg_view('object/elements/summary', $params); - echo <<<HTML -$info -$body -HTML; + echo elgg_view('object/elements/full', array( + 'entity' => $page, + 'title' => false, + 'icon' => $page_icon, + 'summary' => $summary, + 'body' => $body, + )); } else { // brief view @@ -97,10 +110,10 @@ HTML; 'entity' => $page, 'metadata' => $metadata, 'subtitle' => $subtitle, - 'tags' => $tags, 'content' => $excerpt, ); - $list_body = elgg_view('layout/objects/list/body', $params); + $params = $params + $vars; + $list_body = elgg_view('object/elements/summary', $params); echo elgg_view_image_block($page_icon, $list_body); } diff --git a/mod/pages/views/default/pages/group_module.php b/mod/pages/views/default/pages/group_module.php index c41de043d..0d7df96ac 100644 --- a/mod/pages/views/default/pages/group_module.php +++ b/mod/pages/views/default/pages/group_module.php @@ -13,13 +13,11 @@ if ($group->pages_enable == "no") { } $all_link = elgg_view('output/url', array( - 'href' => "pg/pages/group/$group->guid/owner", + 'href' => "pages/group/$group->guid/all", 'text' => elgg_echo('link:view:all'), + 'is_trusted' => true, )); -$header = "<span class=\"group-widget-viewall\">$all_link</span>"; -$header .= '<h3>' . elgg_echo('pages:group') . '</h3>'; - elgg_push_context('widgets'); $options = array( @@ -38,9 +36,14 @@ if (!$content) { } $new_link = elgg_view('output/url', array( - 'href' => "pg/pages/add/$group->guid", + 'href' => "pages/add/$group->guid", 'text' => elgg_echo('pages:add'), + 'is_trusted' => true, )); -$content .= "<span class='elgg-widget-more'>$new_link</span>"; -echo elgg_view_module('info', '', $content, array('header' => $header)); +echo elgg_view('groups/profile/module', array( + 'title' => elgg_echo('pages:group'), + 'content' => $content, + 'all_link' => $all_link, + 'add_link' => $new_link, +)); diff --git a/mod/pages/views/default/pages/icon.php b/mod/pages/views/default/pages/icon.php index d3b749eb8..cba034ec4 100644 --- a/mod/pages/views/default/pages/icon.php +++ b/mod/pages/views/default/pages/icon.php @@ -21,5 +21,5 @@ if (!in_array($vars['size'], array('small', 'medium', 'large', 'tiny', 'master', ?> <a href="<?php echo $annotation->getURL(); ?>"> - <img src="<?php echo $entity->getIconURL($vars['size']); ?>" /> + <img alt="<?php echo $entity->title; ?>" src="<?php echo $entity->getIconURL($vars['size']); ?>" /> </a> diff --git a/mod/pages/views/default/pages/input/parent.php b/mod/pages/views/default/pages/input/parent.php new file mode 100644 index 000000000..c5ee3c3fb --- /dev/null +++ b/mod/pages/views/default/pages/input/parent.php @@ -0,0 +1,37 @@ +<?php +/** + * Parent picker + * + * @uses $vars['value'] The current value, if any + * @uses $vars['options_values'] + * @uses $vars['name'] The name of the input field + * @uses $vars['entity'] Optional. The child entity (uses container_guid) + */ + +elgg_load_library('elgg:pages'); + +if (empty($vars['entity'])) { + $container = elgg_get_page_owner_entity(); +} else { + $container = $vars['entity']->getContainerEntity(); +} + +$pages = pages_get_navigation_tree($container); +$options = array(); + +foreach ($pages as $page) { + $spacing = ""; + for ($i = 0; $i < $page['depth']; $i++) { + $spacing .= "--"; + } + $options[$page['guid']] = "$spacing " . $page['title']; +} + +$defaults = array( + 'class' => 'elgg-pages-input-parent-picker', + 'options_values' => $options, +); + +$vars = array_merge($defaults, $vars); + +echo elgg_view('input/dropdown', $vars); diff --git a/mod/pages/views/default/pages/sidebar.php b/mod/pages/views/default/pages/sidebar.php new file mode 100644 index 000000000..16fc12de0 --- /dev/null +++ b/mod/pages/views/default/pages/sidebar.php @@ -0,0 +1,14 @@ +<?php +/** + * Pages sidebar + */ + +echo elgg_view('page/elements/comments_block', array( + 'subtypes' => array('page', 'page_top'), + 'owner_guid' => elgg_get_page_owner_guid(), +)); + +echo elgg_view('page/elements/tagcloud_block', array( + 'subtypes' => array('page', 'page_top'), + 'owner_guid' => elgg_get_page_owner_guid(), +));
\ No newline at end of file diff --git a/mod/pages/views/default/pages/sidebar/history.php b/mod/pages/views/default/pages/sidebar/history.php index 7077edb9a..e0e8ed11a 100644 --- a/mod/pages/views/default/pages/sidebar/history.php +++ b/mod/pages/views/default/pages/sidebar/history.php @@ -14,6 +14,7 @@ if ($vars['page']) { 'limit' => 20, 'reverse_order_by' => true ); + elgg_push_context('widgets'); $content = elgg_list_annotations($options); } diff --git a/mod/pages/views/default/pages/sidebar/navigation.php b/mod/pages/views/default/pages/sidebar/navigation.php index fe017b1a7..65eb500c8 100644 --- a/mod/pages/views/default/pages/sidebar/navigation.php +++ b/mod/pages/views/default/pages/sidebar/navigation.php @@ -5,6 +5,11 @@ * @uses $vars['page'] Page object if manually setting selected item */ +// add the jquery treeview files for navigation +elgg_load_js('jquery-treeview'); +elgg_load_css('jquery-treeview'); + + $selected_page = elgg_extract('page', $vars, false); if ($selected_page) { $url = $selected_page->getURL(); @@ -51,4 +56,3 @@ if ($selected_page) { }); </script> - diff --git a/mod/pages/views/default/river/object/page/create.php b/mod/pages/views/default/river/object/page/create.php index 032046063..4c31def33 100644 --- a/mod/pages/views/default/river/object/page/create.php +++ b/mod/pages/views/default/river/object/page/create.php @@ -7,29 +7,7 @@ $object = $vars['item']->getObjectEntity(); $excerpt = strip_tags($object->description); $excerpt = elgg_get_excerpt($excerpt); -$params = array( - 'href' => $object->getURL(), - 'text' => $object->title, -); -$link = elgg_view('output/url', $params); - -$group_string = ''; -$container = $object->getContainerEntity(); -if ($container instanceof ElggGroup) { - $params = array( - 'href' => $container->getURL(), - 'text' => $container->name, - ); - $group_link = elgg_view('output/url', $params); - $group_string = elgg_echo('river:ingroup', array($group_link)); -} - -echo elgg_echo('pages:river:create'); - -echo " $link $group_string"; - -if ($excerpt) { - echo '<div class="elgg-river-content">'; - echo $excerpt; - echo '</div>'; -} +echo elgg_view('river/elements/layout', array( + 'item' => $vars['item'], + 'message' => $excerpt, +));
\ No newline at end of file diff --git a/mod/pages/views/default/widgets/pages/content.php b/mod/pages/views/default/widgets/pages/content.php index eea482273..f63777c09 100644 --- a/mod/pages/views/default/widgets/pages/content.php +++ b/mod/pages/views/default/widgets/pages/content.php @@ -20,10 +20,11 @@ $content = elgg_list_entities($options); echo $content; if ($content) { - $url = "pg/pages/owner/" . elgg_get_page_owner_entity()->username; + $url = "pages/owner/" . elgg_get_page_owner_entity()->username; $more_link = elgg_view('output/url', array( 'href' => $url, 'text' => elgg_echo('pages:more'), + 'is_trusted' => true, )); echo "<span class=\"elgg-widget-more\">$more_link</span>"; } else { |
