aboutsummaryrefslogtreecommitdiff
path: root/mod/pages
diff options
context:
space:
mode:
Diffstat (limited to 'mod/pages')
-rw-r--r--mod/pages/actions/annotations/page/delete.php20
-rw-r--r--mod/pages/actions/pages/delete.php35
-rw-r--r--mod/pages/actions/pages/edit.php44
-rw-r--r--mod/pages/images/pages.gifbin3098 -> 2766 bytes
-rw-r--r--mod/pages/images/pages_lrg.gifbin11394 -> 10234 bytes
-rw-r--r--mod/pages/languages/en.php42
-rw-r--r--mod/pages/lib/pages.php83
-rw-r--r--mod/pages/manifest.xml13
-rw-r--r--mod/pages/pages/pages/edit.php (renamed from mod/pages/edit.php)22
-rw-r--r--mod/pages/pages/pages/friends.php (renamed from mod/pages/friends.php)6
-rw-r--r--mod/pages/pages/pages/history.php (renamed from mod/pages/history.php)16
-rw-r--r--mod/pages/pages/pages/new.php (renamed from mod/pages/new.php)1
-rw-r--r--mod/pages/pages/pages/owner.php (renamed from mod/pages/index.php)14
-rw-r--r--mod/pages/pages/pages/revision.php (renamed from mod/pages/revision.php)7
-rw-r--r--mod/pages/pages/pages/view.php (renamed from mod/pages/view.php)26
-rw-r--r--mod/pages/pages/pages/world.php (renamed from mod/pages/world.php)10
-rw-r--r--mod/pages/start.php164
-rw-r--r--mod/pages/upgrades/2012061800.php49
-rw-r--r--mod/pages/views/default/annotation/page.php20
-rw-r--r--mod/pages/views/default/forms/pages/edit.php39
-rw-r--r--mod/pages/views/default/input/write_access.php35
-rw-r--r--mod/pages/views/default/object/page_top.php75
-rw-r--r--mod/pages/views/default/pages/group_module.php17
-rw-r--r--mod/pages/views/default/pages/icon.php2
-rw-r--r--mod/pages/views/default/pages/input/parent.php37
-rw-r--r--mod/pages/views/default/pages/sidebar.php14
-rw-r--r--mod/pages/views/default/pages/sidebar/history.php1
-rw-r--r--mod/pages/views/default/pages/sidebar/navigation.php6
-rw-r--r--mod/pages/views/default/river/object/page/create.php30
-rw-r--r--mod/pages/views/default/widgets/pages/content.php3
30 files changed, 623 insertions, 208 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
index 2e4ee761a..7efcb7278 100644
--- a/mod/pages/images/pages.gif
+++ b/mod/pages/images/pages.gif
Binary files differ
diff --git a/mod/pages/images/pages_lrg.gif b/mod/pages/images/pages_lrg.gif
index 2e41e4739..234a52672 100644
--- a/mod/pages/images/pages_lrg.gif
+++ b/mod/pages/images/pages_lrg.gif
Binary files differ
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 079155190..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(),
- 'text' => $page->title,
- 'href' => $page->getURL(),
- ));
+ $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(),
- 'text' => $child->title,
- 'href' => $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 d851edea3..cecc4053b 100644
--- a/mod/pages/friends.php
+++ b/mod/pages/pages/pages/friends.php
@@ -7,12 +7,14 @@
$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 6a89e6092..7de74a3b4 100644
--- a/mod/pages/index.php
+++ b/mod/pages/pages/pages/owner.php
@@ -7,7 +7,7 @@
$owner = elgg_get_page_owner_entity();
if (!$owner) {
-
+ forward('', '404');
}
// access check for closed groups
@@ -17,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) {
@@ -33,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 479ec1c93..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 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 82f3a2ba9..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,17 +25,23 @@ 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
+ // 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');
elgg_register_entity_type('object', 'page_top');
@@ -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,49 +78,52 @@ 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':
- include "$base_dir/index.php";
+ include "$base_dir/owner.php";
break;
case 'friends':
include "$base_dir/friends.php";
@@ -131,7 +141,7 @@ function pages_page_handler($page) {
include "$base_dir/edit.php";
break;
case 'group':
- include "$base_dir/index.php";
+ include "$base_dir/owner.php";
break;
case 'history':
set_input('guid', $page[1]);
@@ -142,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;
}
/**
@@ -158,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";
}
/**
@@ -168,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";
}
/**
@@ -181,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;
}
@@ -196,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;
}
@@ -211,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
@@ -222,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;
}
@@ -235,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 aca75b625..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('navigation/menu/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('page/components/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('page/components/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 {