aboutsummaryrefslogtreecommitdiff
path: root/mod/bookmarks
diff options
context:
space:
mode:
Diffstat (limited to 'mod/bookmarks')
-rw-r--r--mod/bookmarks/actions/bookmarks/add.php82
-rw-r--r--mod/bookmarks/actions/bookmarks/delete.php43
-rw-r--r--mod/bookmarks/actions/bookmarks/edit.php33
-rw-r--r--mod/bookmarks/actions/bookmarks/save.php90
-rw-r--r--mod/bookmarks/bookmarklet.php36
-rw-r--r--mod/bookmarks/graphics/bookmark.gifbin0 -> 576 bytes
-rw-r--r--mod/bookmarks/graphics/bookmarklet.gifbin0 -> 790 bytes
-rw-r--r--mod/bookmarks/languages/en.php45
-rw-r--r--mod/bookmarks/lib/bookmarks.php46
-rw-r--r--mod/bookmarks/manifest.xml27
-rw-r--r--mod/bookmarks/pages/add.php36
-rw-r--r--mod/bookmarks/pages/all.php36
-rw-r--r--mod/bookmarks/pages/bookmarks/add.php22
-rw-r--r--mod/bookmarks/pages/bookmarks/all.php33
-rw-r--r--mod/bookmarks/pages/bookmarks/bookmarklet.php36
-rw-r--r--mod/bookmarks/pages/bookmarks/edit.php30
-rw-r--r--mod/bookmarks/pages/bookmarks/friends.php (renamed from mod/bookmarks/pages/friends.php)16
-rw-r--r--mod/bookmarks/pages/bookmarks/owner.php50
-rw-r--r--mod/bookmarks/pages/bookmarks/view.php38
-rw-r--r--mod/bookmarks/pages/inbox.php28
-rw-r--r--mod/bookmarks/pages/owner.php39
-rw-r--r--mod/bookmarks/pages/view.php36
-rw-r--r--mod/bookmarks/start.php313
-rw-r--r--mod/bookmarks/views/default/bookmarks/bookmarklet.php40
-rw-r--r--mod/bookmarks/views/default/bookmarks/css.php3
-rw-r--r--mod/bookmarks/views/default/bookmarks/form.php133
-rw-r--r--mod/bookmarks/views/default/bookmarks/group_module.php47
-rw-r--r--mod/bookmarks/views/default/bookmarks/groupprofile_bookmarks.php34
-rw-r--r--mod/bookmarks/views/default/bookmarks/js.php12
-rw-r--r--mod/bookmarks/views/default/bookmarks/owner_block.php10
-rw-r--r--mod/bookmarks/views/default/bookmarks/sharing.php80
-rw-r--r--mod/bookmarks/views/default/bookmarks/sidebar.php14
-rw-r--r--mod/bookmarks/views/default/forms/bookmarks/save.php59
-rw-r--r--mod/bookmarks/views/default/object/bookmarks.php75
-rw-r--r--mod/bookmarks/views/default/river/object/bookmarks/annotate.php10
-rw-r--r--mod/bookmarks/views/default/river/object/bookmarks/create.php19
-rw-r--r--mod/bookmarks/views/default/widgets/bookmarks/content.php32
-rw-r--r--mod/bookmarks/views/default/widgets/bookmarks/edit.php28
-rw-r--r--mod/bookmarks/views/default/widgets/bookmarks/view.php65
-rw-r--r--mod/bookmarks/views/rss/object/bookmarks.php36
40 files changed, 872 insertions, 940 deletions
diff --git a/mod/bookmarks/actions/bookmarks/add.php b/mod/bookmarks/actions/bookmarks/add.php
deleted file mode 100644
index 7d8204ca5..000000000
--- a/mod/bookmarks/actions/bookmarks/add.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php
-/**
-* Elgg bookmarks add/save action
-*
-* @package ElggBookmarks
-*/
-
-gatekeeper();
-
-$title = strip_tags(get_input('title'));
-$guid = get_input('bookmark_guid',0);
-$description = get_input('description');
-$address = get_input('address');
-$access = get_input('access');
-$shares = get_input('shares',array());
-
-if (!$title || !$address) {
- register_error(elgg_echo('bookmarks:save:failed'));
- forward(REFERER);
-}
-
-// don't allow malicious code.
-// put this in a context of a link so HTMLawed knows how to filter correctly.
-$xss_test = "<a href=\"$address\"></a>";
-if ($xss_test != filter_tags($xss_test)) {
- register_error(elgg_echo('bookmarks:save:failed'));
- forward(REFERER);
-}
-
-$tags = get_input('tags');
-$tagarray = string_to_tag_array($tags);
-
-$new_bookmark = FALSE;
-if ($guid == 0) {
- $entity = new ElggObject;
- $entity->subtype = "bookmarks";
- $entity->owner_guid = $_SESSION['user']->getGUID();
- $entity->container_guid = (int)get_input('container_guid', $_SESSION['user']->getGUID());
-
- $new_bookmark = TRUE;
-
-} else {
-
- $canedit = false;
- if ($entity = get_entity($guid)) {
- if ($entity->canEdit()) {
- $canedit = true;
- }
- }
- if (!$canedit) {
- system_message(elgg_echo('notfound'));
- forward("pg/bookmarks");
- }
-
-}
-
-$entity->title = $title;
-$entity->address = $address;
-$entity->description = $description;
-$entity->access_id = $access;
-$entity->tags = $tagarray;
-
-if ($entity->save()) {
- $entity->clearRelationships();
- $entity->shares = $shares;
-
- if (is_array($shares) && sizeof($shares) > 0) {
- foreach($shares as $share) {
- $share = (int) $share;
- add_entity_relationship($entity->getGUID(), 'share', $share);
- }
- }
- system_message(elgg_echo('bookmarks:save:success'));
- //add to river
- if ($new_bookmark) {
- add_to_river('river/object/bookmarks/create','create',$_SESSION['user']->guid,$entity->guid);
- }
- forward($entity->getURL());
-} else {
- register_error(elgg_echo('bookmarks:save:failed'));
- forward("pg/bookmarks");
-}
diff --git a/mod/bookmarks/actions/bookmarks/delete.php b/mod/bookmarks/actions/bookmarks/delete.php
index 48b4a2dd8..2e9f41438 100644
--- a/mod/bookmarks/actions/bookmarks/delete.php
+++ b/mod/bookmarks/actions/bookmarks/delete.php
@@ -1,29 +1,24 @@
<?php
+/**
+ * Delete a bookmark
+ *
+ * @package Bookmarks
+ */
- /**
- * Elgg bookmarks delete action
- *
- * @package ElggBookmarks
- */
+$guid = get_input('guid');
+$bookmark = get_entity($guid);
- $guid = get_input('bookmark_guid',0);
- if ($entity = get_entity($guid)) {
-
- $container = get_entity($entity->container_guid);
- if ($entity->canEdit()) {
-
- if ($entity->delete()) {
-
- system_message(elgg_echo("bookmarks:delete:success"));
- forward("pg/bookmarks/owner/$container->username/");
-
- }
-
- }
-
+if (elgg_instanceof($bookmark, 'object', 'bookmarks') && $bookmark->canEdit()) {
+ $container = $bookmark->getContainerEntity();
+ if ($bookmark->delete()) {
+ system_message(elgg_echo("bookmarks:delete:success"));
+ if (elgg_instanceof($container, 'group')) {
+ forward("bookmarks/group/$container->guid/all");
+ } else {
+ forward("bookmarks/owner/$container->username");
}
-
- register_error(elgg_echo("bookmarks:delete:failed"));
- forward(REFERER);
+ }
+}
-?> \ No newline at end of file
+register_error(elgg_echo("bookmarks:delete:failed"));
+forward(REFERER);
diff --git a/mod/bookmarks/actions/bookmarks/edit.php b/mod/bookmarks/actions/bookmarks/edit.php
deleted file mode 100644
index 87de1c5e2..000000000
--- a/mod/bookmarks/actions/bookmarks/edit.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-/**
- * Elgg bookmarks edit action
- *
- */
-
-//set some required variables
-$guid = get_input('guid');
-$title = get_input('title');
-$address = get_input('address');
-$notes = get_input('notes');
-$access = get_input('access');
-$tags = get_input('tags');
-$tagarray = string_to_tag_array($tags);
-
-// Make sure we actually have permission to edit
-$bookmark = get_entity($guid);
-if ($bookmark->getSubtype() == "bookmarks" && $bookmark->canEdit()) {
- $bookmark->title = $title;
- $bookmark->description = $notes;
- $bookmark->address = $address;
- $bookmark->access_id = $access;
- $bookmark->tags = $tagarray;
- if ($bookmark->save()) {
- system_message(elgg_echo('bookmarks:edit:success'));
- } else {
- system_message(elgg_echo('bookmarks:edit:fail'));
- }
-}else{
- system_message(elgg_echo('bookmarks:edit:fail'));
-}
-$account = get_entity($bookmark->container_guid);
-forward("pg/bookmarks/" . $account->username); \ No newline at end of file
diff --git a/mod/bookmarks/actions/bookmarks/save.php b/mod/bookmarks/actions/bookmarks/save.php
new file mode 100644
index 000000000..46090b115
--- /dev/null
+++ b/mod/bookmarks/actions/bookmarks/save.php
@@ -0,0 +1,90 @@
+<?php
+/**
+* Elgg bookmarks save action
+*
+* @package Bookmarks
+*/
+
+$title = htmlspecialchars(get_input('title', '', false), ENT_QUOTES, 'UTF-8');
+$description = get_input('description');
+$address = get_input('address');
+$access_id = get_input('access_id');
+$tags = get_input('tags');
+$guid = get_input('guid');
+$share = get_input('share');
+$container_guid = get_input('container_guid', elgg_get_logged_in_user_guid());
+
+elgg_make_sticky_form('bookmarks');
+
+// don't use elgg_normalize_url() because we don't want
+// relative links resolved to this site.
+if ($address && !preg_match("#^((ht|f)tps?:)?//#i", $address)) {
+ $address = "http://$address";
+}
+
+if (!$title || !$address) {
+ register_error(elgg_echo('bookmarks:save:failed'));
+ forward(REFERER);
+}
+
+// see https://bugs.php.net/bug.php?id=51192
+$php_5_2_13_and_below = version_compare(PHP_VERSION, '5.2.14', '<');
+$php_5_3_0_to_5_3_2 = version_compare(PHP_VERSION, '5.3.0', '>=') &&
+ version_compare(PHP_VERSION, '5.3.3', '<');
+
+$validated = false;
+if ($php_5_2_13_and_below || $php_5_3_0_to_5_3_2) {
+ $tmp_address = str_replace("-", "", $address);
+ $validated = filter_var($tmp_address, FILTER_VALIDATE_URL);
+} else {
+ $validated = filter_var($address, FILTER_VALIDATE_URL);
+}
+if (!$validated) {
+ register_error(elgg_echo('bookmarks:save:failed'));
+ forward(REFERER);
+}
+
+if ($guid == 0) {
+ $bookmark = new ElggObject;
+ $bookmark->subtype = "bookmarks";
+ $bookmark->container_guid = (int)get_input('container_guid', $_SESSION['user']->getGUID());
+ $new = true;
+} else {
+ $bookmark = get_entity($guid);
+ if (!$bookmark->canEdit()) {
+ system_message(elgg_echo('bookmarks:save:failed'));
+ forward(REFERRER);
+ }
+}
+
+$tagarray = string_to_tag_array($tags);
+
+$bookmark->title = $title;
+$bookmark->address = $address;
+$bookmark->description = $description;
+$bookmark->access_id = $access_id;
+$bookmark->tags = $tagarray;
+
+if ($bookmark->save()) {
+
+ elgg_clear_sticky_form('bookmarks');
+
+ // @todo
+ if (is_array($shares) && sizeof($shares) > 0) {
+ foreach($shares as $share) {
+ $share = (int) $share;
+ add_entity_relationship($bookmark->getGUID(), 'share', $share);
+ }
+ }
+ system_message(elgg_echo('bookmarks:save:success'));
+
+ //add to river only if new
+ if ($new) {
+ add_to_river('river/object/bookmarks/create','create', elgg_get_logged_in_user_guid(), $bookmark->getGUID());
+ }
+
+ forward($bookmark->getURL());
+} else {
+ register_error(elgg_echo('bookmarks:save:failed'));
+ forward("bookmarks");
+}
diff --git a/mod/bookmarks/bookmarklet.php b/mod/bookmarks/bookmarklet.php
deleted file mode 100644
index a156cf035..000000000
--- a/mod/bookmarks/bookmarklet.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-/**
-* Elgg bookmarks plugin bookmarklet page
-*
-* @package ElggBookmarks
-*/
-
-// Start engine
-require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
-
-gatekeeper();
-
-// Get the current page's owner
-$page_owner = elgg_get_page_owner_entity();
-if ($page_owner === false || is_null($page_owner) && (get_loggedin_user())) {
- $page_owner = get_loggedin_user();
- set_page_owner($page_owner->getGUID());
-}
-
-// get the content area header
-$area1 = elgg_view('page/elements/content_header', array('context' => "mine", 'type' => 'bookmarks'));
-
-// List bookmarks
-$area2 = elgg_view_title(elgg_echo('bookmarks:bookmarklet'));
-$area2 .= elgg_view('bookmarks/bookmarklet', array('pg_owner' => $page_owner));
-
-// if logged in, get the bookmarklet
-$area3 = elgg_view("bookmarks/bookmarklet");
-
-// Format
-$content = $area1 . $area2 . $area3;
-$body = elgg_view_layout('one_sidebar', array('content' => $content));
-
-// Draw it
-echo elgg_view_page(elgg_echo('bookmarks:bookmarklet'),$body); \ No newline at end of file
diff --git a/mod/bookmarks/graphics/bookmark.gif b/mod/bookmarks/graphics/bookmark.gif
new file mode 100644
index 000000000..55c5e3e15
--- /dev/null
+++ b/mod/bookmarks/graphics/bookmark.gif
Binary files differ
diff --git a/mod/bookmarks/graphics/bookmarklet.gif b/mod/bookmarks/graphics/bookmarklet.gif
new file mode 100644
index 000000000..45b24709b
--- /dev/null
+++ b/mod/bookmarks/graphics/bookmarklet.gif
Binary files differ
diff --git a/mod/bookmarks/languages/en.php b/mod/bookmarks/languages/en.php
index 91f07d69b..970b39415 100644
--- a/mod/bookmarks/languages/en.php
+++ b/mod/bookmarks/languages/en.php
@@ -1,4 +1,7 @@
<?php
+/**
+ * Bookmarks English language file
+ */
$english = array(
@@ -6,40 +9,50 @@ $english = array(
* Menu items and titles
*/
'bookmarks' => "Bookmarks",
- 'bookmarks:add' => "Add bookmark",
+ 'bookmarks:add' => "Add a bookmark",
+ 'bookmarks:edit' => "Edit bookmark",
'bookmarks:owner' => "%s's bookmarks",
'bookmarks:friends' => "Friends' bookmarks",
'bookmarks:everyone' => "All site bookmarks",
- 'bookmarks:this' => "Bookmark this",
+ 'bookmarks:this' => "Bookmark this page",
'bookmarks:this:group' => "Bookmark in %s",
'bookmarks:bookmarklet' => "Get bookmarklet",
'bookmarks:bookmarklet:group' => "Get group bookmarklet",
'bookmarks:inbox' => "Bookmarks inbox",
'bookmarks:morebookmarks' => "More bookmarks",
'bookmarks:more' => "More",
- 'bookmarks:shareditem' => "Bookmarked item",
'bookmarks:with' => "Share with",
- 'bookmarks:new' => "A new bookmarked item",
- 'bookmarks:via' => "via bookmarks",
- 'bookmarks:address' => "Address of the resource to bookmark",
+ 'bookmarks:new' => "A new bookmark",
+ 'bookmarks:address' => "Address of the bookmark",
'bookmarks:none' => 'No bookmarks',
+ 'bookmarks:notification' =>
+'%s added a new bookmark:
+
+%s - %s
+%s
+
+View and comment on the new bookmark:
+%s
+',
+
'bookmarks:delete:confirm' => "Are you sure you want to delete this resource?",
- 'bookmarks:numbertodisplay' => 'Number of bookmarked items to display',
+ 'bookmarks:numbertodisplay' => 'Number of bookmarks to display',
'bookmarks:shared' => "Bookmarked",
'bookmarks:visit' => "Visit resource",
'bookmarks:recent' => "Recent bookmarks",
- 'bookmarks:river:created' => '%s bookmarked',
- 'bookmarks:river:annotate' => 'a comment on this bookmarked item',
+ 'river:create:object:bookmarks' => '%s bookmarked %s',
+ 'river:comment:object:bookmarks' => '%s commented on a bookmark %s',
+ 'bookmarks:river:annotate' => 'a comment on this bookmark',
'bookmarks:river:item' => 'an item',
- 'item:object:bookmarks' => 'Bookmarked items',
+ 'item:object:bookmarks' => 'Bookmarks',
'bookmarks:group' => 'Group bookmarks',
- 'groups:enablebookmarks' => 'Enable group bookmarks',
+ 'bookmarks:enablebookmarks' => 'Enable group bookmarks',
'bookmarks:nogroup' => 'This group does not have any bookmarks yet',
'bookmarks:more' => 'More bookmarks',
@@ -48,8 +61,7 @@ $english = array(
/**
* Widget and bookmarklet
*/
- 'bookmarks:widget:description' =>
- "This widget displays your latest bookmarks.",
+ 'bookmarks:widget:description' => "Display your latest bookmarks.",
'bookmarks:bookmarklet:description' =>
"The bookmarks bookmarklet allows you to share any resource you find on the web with your friends, or just bookmark it for yourself. To use it, simply drag the following button to your browser's links bar:",
@@ -65,14 +77,15 @@ $english = array(
*/
'bookmarks:save:success' => "Your item was successfully bookmarked.",
- 'bookmarks:delete:success' => "Your bookmarked item was successfully deleted.",
+ 'bookmarks:delete:success' => "Your bookmark was deleted.",
/**
* Error messages
*/
- 'bookmarks:save:failed' => "Your bookmarked item could not be saved. Make sure you've entered a title and address and then try again.",
- 'bookmarks:delete:failed' => "Your bookmarked item could not be deleted. Please try again.",
+ 'bookmarks:save:failed' => "Your bookmark could not be saved. Make sure you've entered a title and address and then try again.",
+ 'bookmarks:save:invalid' => "The address of the bookmark is invalid and could not be saved.",
+ 'bookmarks:delete:failed' => "Your bookmark could not be deleted. Please try again.",
);
add_translation('en', $english); \ No newline at end of file
diff --git a/mod/bookmarks/lib/bookmarks.php b/mod/bookmarks/lib/bookmarks.php
new file mode 100644
index 000000000..9a9dff18c
--- /dev/null
+++ b/mod/bookmarks/lib/bookmarks.php
@@ -0,0 +1,46 @@
+<?php
+/**
+ * Bookmarks helper functions
+ *
+ * @package Bookmarks
+ */
+
+/**
+ * Prepare the add/edit form variables
+ *
+ * @param ElggObject $bookmark A bookmark object.
+ * @return array
+ */
+function bookmarks_prepare_form_vars($bookmark = null) {
+ // input names => defaults
+ $values = array(
+ 'title' => get_input('title', ''), // bookmarklet support
+ 'address' => get_input('address', ''),
+ 'description' => '',
+ 'access_id' => ACCESS_DEFAULT,
+ 'tags' => '',
+ 'shares' => array(),
+ 'container_guid' => elgg_get_page_owner_guid(),
+ 'guid' => null,
+ 'entity' => $bookmark,
+ );
+
+ if ($bookmark) {
+ foreach (array_keys($values) as $field) {
+ if (isset($bookmark->$field)) {
+ $values[$field] = $bookmark->$field;
+ }
+ }
+ }
+
+ if (elgg_is_sticky_form('bookmarks')) {
+ $sticky_values = elgg_get_sticky_values('bookmarks');
+ foreach ($sticky_values as $key => $value) {
+ $values[$key] = $value;
+ }
+ }
+
+ elgg_clear_sticky_form('bookmarks');
+
+ return $values;
+}
diff --git a/mod/bookmarks/manifest.xml b/mod/bookmarks/manifest.xml
index 40842316c..b95af87f8 100644
--- a/mod/bookmarks/manifest.xml
+++ b/mod/bookmarks/manifest.xml
@@ -1,12 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
-<plugin_manifest>
- <field key="author" value="Curverider" />
- <field key="version" value="1.7" />
- <field key="description" value="Elgg bookmarks plugin." />
- <field key="website" value="http://www.elgg.org/" />
- <field key="copyright" value="(C) Curverider 2008-2010" />
- <field key="licence" value="GNU Public License version 2" />
- <field key="elgg_version" value="2010030101" />
- <field key="activate_on_install" value="true" />
- <field key="admin_interface" value="simple" />
+<plugin_manifest xmlns="http://www.elgg.org/plugin_manifest/1.8">
+ <name>Bookmarks</name>
+ <author>Core developers</author>
+ <version>1.8</version>
+ <category>bundled</category>
+ <category>content</category>
+ <category>widget</category>
+ <blurb>Add and comment on bookmarks.</blurb>
+ <description>Adds the ability for users to bookmark internal and external sites. Other users can then comment on the bookmarks.</description>
+ <website>http://www.elgg.org/</website>
+ <copyright>See COPYRIGHT.txt</copyright>
+ <license>GNU General Public License version 2</license>
+ <requires>
+ <type>elgg_release</type>
+ <version>1.8</version>
+ </requires>
+ <activate_on_install>true</activate_on_install>
</plugin_manifest>
diff --git a/mod/bookmarks/pages/add.php b/mod/bookmarks/pages/add.php
deleted file mode 100644
index 17e1e6fa4..000000000
--- a/mod/bookmarks/pages/add.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-/**
- * Elgg bookmarks plugin add bookmark page
- *
- * @package ElggBookmarks
- */
-
-gatekeeper();
-
-// Get the current page's owner
-$page_owner = page_owner_entity();
-if ($page_owner === false || is_null($page_owner)) {
- $page_owner = $_SESSION['user'];
- set_page_owner($page_owner->getGUID());
-}
-if ($page_owner instanceof ElggGroup)
- $container = $page_owner->guid;
-
-$area2 .= elgg_view_title(elgg_echo('bookmarks:this'), false);
-
-// If we've been given a bookmark to edit, grab it
-if ($this_guid = get_input('bookmark',0)) {
- $entity = get_entity($this_guid);
- if ($entity->canEdit()) {
- $area2 .= elgg_view('bookmarks/form',array('entity' => $entity, 'container_guid' => $container));
- }
-} else {
- $area2 .= elgg_view('bookmarks/form', array('container_guid' => $container));
-}
-
-// Format page
-$body = elgg_view_layout('two_column_left_sidebar', $area1, $area2);
-
-// Draw it
-page_draw(elgg_echo('bookmarks:add'),$body);
diff --git a/mod/bookmarks/pages/all.php b/mod/bookmarks/pages/all.php
deleted file mode 100644
index 2bde462ba..000000000
--- a/mod/bookmarks/pages/all.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-/**
- * Elgg bookmarks plugin everyone page
- *
- * @package ElggBookmarks
- */
-
-elgg_push_context('bookmarks');
-elgg_push_breadcrumb(elgg_echo('bookmarks'));
-
-$page_owner = elgg_get_page_owner_entity();
-if (!$page_owner) {
- $page_owner = get_loggedin_userid();
- elgg_set_page_owner_guid($page_owner);
-}
-
-$offset = (int)get_input('offset', 0);
-$content .= elgg_list_entities(array(
- 'type' => 'object',
- 'subtype' => 'bookmarks',
- 'limit' => 10,
- 'offset' => $offset,
- 'full_view' => false,
- 'view_toggle_type' => false
-));
-
-$title = elgg_echo('bookmarks:everyone');
-
-$body = elgg_view_layout('content', array(
- 'filter_context' => 'all',
- 'content' => $content,
- 'title' => $title
-));
-
-echo elgg_view_page($title, $body);
-elgg_pop_context(); \ No newline at end of file
diff --git a/mod/bookmarks/pages/bookmarks/add.php b/mod/bookmarks/pages/bookmarks/add.php
new file mode 100644
index 000000000..d80d4a4bc
--- /dev/null
+++ b/mod/bookmarks/pages/bookmarks/add.php
@@ -0,0 +1,22 @@
+<?php
+/**
+ * Add bookmark page
+ *
+ * @package Bookmarks
+ */
+
+$page_owner = elgg_get_page_owner_entity();
+
+$title = elgg_echo('bookmarks:add');
+elgg_push_breadcrumb($title);
+
+$vars = bookmarks_prepare_form_vars();
+$content = elgg_view_form('bookmarks/save', array(), $vars);
+
+$body = elgg_view_layout('content', array(
+ 'filter' => '',
+ 'content' => $content,
+ 'title' => $title,
+));
+
+echo elgg_view_page($title, $body); \ No newline at end of file
diff --git a/mod/bookmarks/pages/bookmarks/all.php b/mod/bookmarks/pages/bookmarks/all.php
new file mode 100644
index 000000000..5c6011ad9
--- /dev/null
+++ b/mod/bookmarks/pages/bookmarks/all.php
@@ -0,0 +1,33 @@
+<?php
+/**
+ * Elgg bookmarks plugin everyone page
+ *
+ * @package ElggBookmarks
+ */
+
+elgg_pop_breadcrumb();
+elgg_push_breadcrumb(elgg_echo('bookmarks'));
+
+elgg_register_title_button();
+
+$content = elgg_list_entities(array(
+ 'type' => 'object',
+ 'subtype' => 'bookmarks',
+ 'full_view' => false,
+ 'view_toggle_type' => false,
+));
+
+if (!$content) {
+ $content = elgg_echo('bookmarks:none');
+}
+
+$title = elgg_echo('bookmarks:everyone');
+
+$body = elgg_view_layout('content', array(
+ 'filter_context' => 'all',
+ 'content' => $content,
+ 'title' => $title,
+ 'sidebar' => elgg_view('bookmarks/sidebar'),
+));
+
+echo elgg_view_page($title, $body); \ No newline at end of file
diff --git a/mod/bookmarks/pages/bookmarks/bookmarklet.php b/mod/bookmarks/pages/bookmarks/bookmarklet.php
new file mode 100644
index 000000000..99866e385
--- /dev/null
+++ b/mod/bookmarks/pages/bookmarks/bookmarklet.php
@@ -0,0 +1,36 @@
+<?php
+/**
+* Elgg bookmarks plugin bookmarklet page
+*
+* @package Bookmarks
+*/
+
+gatekeeper();
+
+$container_guid = get_input('container_guid');
+$container = get_entity($container_guid);
+$page_owner = $container;
+
+if (elgg_instanceof($container, 'object')) {
+ $page_owner = $container->getContainerEntity();
+}
+
+elgg_set_page_owner_guid($page_owner->getGUID());
+
+$title = elgg_echo('bookmarks:bookmarklet');
+
+if ($page_owner instanceof ElggGroup) {
+ elgg_push_breadcrumb($page_owner->name, $page_owner->getURL());
+}
+
+elgg_push_breadcrumb($title);
+
+$content = elgg_view("bookmarks/bookmarklet");
+
+$body = elgg_view_layout('content', array(
+ 'content' => $content,
+ 'title' => $title,
+ 'filter' => false
+));
+
+echo elgg_view_page($title, $body); \ No newline at end of file
diff --git a/mod/bookmarks/pages/bookmarks/edit.php b/mod/bookmarks/pages/bookmarks/edit.php
new file mode 100644
index 000000000..93b143c36
--- /dev/null
+++ b/mod/bookmarks/pages/bookmarks/edit.php
@@ -0,0 +1,30 @@
+<?php
+/**
+ * Add bookmark page
+ *
+ * @package ElggBookmarks
+ */
+
+$bookmark_guid = get_input('guid');
+$bookmark = get_entity($bookmark_guid);
+
+if (!elgg_instanceof($bookmark, 'object', 'bookmarks') || !$bookmark->canEdit()) {
+ register_error(elgg_echo('bookmarks:unknown_bookmark'));
+ forward(REFERRER);
+}
+
+$page_owner = elgg_get_page_owner_entity();
+
+$title = elgg_echo('bookmarks:edit');
+elgg_push_breadcrumb($title);
+
+$vars = bookmarks_prepare_form_vars($bookmark);
+$content = elgg_view_form('bookmarks/save', array(), $vars);
+
+$body = elgg_view_layout('content', array(
+ 'filter' => '',
+ 'content' => $content,
+ 'title' => $title,
+));
+
+echo elgg_view_page($title, $body); \ No newline at end of file
diff --git a/mod/bookmarks/pages/friends.php b/mod/bookmarks/pages/bookmarks/friends.php
index 5c930434b..173996346 100644
--- a/mod/bookmarks/pages/friends.php
+++ b/mod/bookmarks/pages/bookmarks/friends.php
@@ -4,19 +4,20 @@
*
* @package ElggBookmarks
*/
-$guid = get_input('guid');
-elgg_set_page_owner_guid($guid);
-$owner = elgg_get_page_owner_entity();
+$page_owner = elgg_get_page_owner_entity();
+if (!$page_owner) {
+ forward('', '404');
+}
-elgg_push_context('bookmarks');
-elgg_push_breadcrumb(elgg_echo('bookmarks'), 'pg/bookmarks/all');
-elgg_push_breadcrumb($owner->name, "pg/bookmarks/owner/$owner->username");
+elgg_push_breadcrumb($page_owner->name, "bookmarks/owner/$page_owner->username");
elgg_push_breadcrumb(elgg_echo('friends'));
+elgg_register_title_button();
+
$title = elgg_echo('bookmarks:friends');
-$content = list_user_friends_objects($owner->guid, 'bookmarks', 10, false);
+$content = list_user_friends_objects($page_owner->guid, 'bookmarks', 10, false);
if (!$content) {
$content = elgg_echo('bookmarks:none');
}
@@ -30,4 +31,3 @@ $params = array(
$body = elgg_view_layout('content', $params);
echo elgg_view_page($title, $body);
-elgg_pop_context(); \ No newline at end of file
diff --git a/mod/bookmarks/pages/bookmarks/owner.php b/mod/bookmarks/pages/bookmarks/owner.php
new file mode 100644
index 000000000..b7b907916
--- /dev/null
+++ b/mod/bookmarks/pages/bookmarks/owner.php
@@ -0,0 +1,50 @@
+<?php
+/**
+ * Elgg bookmarks plugin everyone page
+ *
+ * @package Bookmarks
+ */
+
+$page_owner = elgg_get_page_owner_entity();
+if (!$page_owner) {
+ forward('', '404');
+}
+
+elgg_push_breadcrumb($page_owner->name);
+
+elgg_register_title_button();
+
+$content .= elgg_list_entities(array(
+ 'type' => 'object',
+ 'subtype' => 'bookmarks',
+ 'container_guid' => $page_owner->guid,
+ 'full_view' => false,
+ 'view_toggle_type' => false
+));
+
+if (!$content) {
+ $content = elgg_echo('bookmarks:none');
+}
+
+$title = elgg_echo('bookmarks:owner', array($page_owner->name));
+
+$filter_context = '';
+if ($page_owner->getGUID() == elgg_get_logged_in_user_guid()) {
+ $filter_context = 'mine';
+}
+
+$vars = array(
+ 'filter_context' => $filter_context,
+ 'content' => $content,
+ 'title' => $title,
+ 'sidebar' => elgg_view('bookmarks/sidebar'),
+);
+
+// don't show filter if out of filter context
+if ($page_owner instanceof ElggGroup) {
+ $vars['filter'] = false;
+}
+
+$body = elgg_view_layout('content', $vars);
+
+echo elgg_view_page($title, $body); \ No newline at end of file
diff --git a/mod/bookmarks/pages/bookmarks/view.php b/mod/bookmarks/pages/bookmarks/view.php
new file mode 100644
index 000000000..70a6a5bfe
--- /dev/null
+++ b/mod/bookmarks/pages/bookmarks/view.php
@@ -0,0 +1,38 @@
+<?php
+/**
+ * View a bookmark
+ *
+ * @package ElggBookmarks
+ */
+
+$bookmark = get_entity(get_input('guid'));
+if (!$bookmark) {
+ register_error(elgg_echo('noaccess'));
+ $_SESSION['last_forward_from'] = current_page_url();
+ forward('');
+}
+
+$page_owner = elgg_get_page_owner_entity();
+
+$crumbs_title = $page_owner->name;
+
+if (elgg_instanceof($page_owner, 'group')) {
+ elgg_push_breadcrumb($crumbs_title, "bookmarks/group/$page_owner->guid/all");
+} else {
+ elgg_push_breadcrumb($crumbs_title, "bookmarks/owner/$page_owner->username");
+}
+
+$title = $bookmark->title;
+
+elgg_push_breadcrumb($title);
+
+$content = elgg_view_entity($bookmark, array('full_view' => true));
+$content .= elgg_view_comments($bookmark);
+
+$body = elgg_view_layout('content', array(
+ 'content' => $content,
+ 'title' => $title,
+ 'filter' => '',
+));
+
+echo elgg_view_page($title, $body);
diff --git a/mod/bookmarks/pages/inbox.php b/mod/bookmarks/pages/inbox.php
deleted file mode 100644
index 061a51e18..000000000
--- a/mod/bookmarks/pages/inbox.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
- /**
- * Elgg bookmarks plugin inbox page
- *
- * @package ElggBookmarks
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd <info@elgg.com>
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.org/
- */
-
- // Start engine
- require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
-
- // List bookmarks
- $area2 = elgg_view_title(elgg_echo('bookmarks:inbox'));
- set_context('search');
- $area2 .= list_entities_from_relationship('share',page_owner(),true,'object','bookmarks');
- set_context('bookmarks');
-
- // Format page
- $body = elgg_view_layout('two_column_left_sidebar', $area1, $area2);
-
- // Draw it
- page_draw(elgg_echo('bookmarks:inbox'),$body);
-
-?> \ No newline at end of file
diff --git a/mod/bookmarks/pages/owner.php b/mod/bookmarks/pages/owner.php
deleted file mode 100644
index 1e45bc518..000000000
--- a/mod/bookmarks/pages/owner.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-/**
- * Elgg bookmarks plugin everyone page
- *
- * @package ElggBookmarks
- */
-
-elgg_push_context('bookmarks');
-elgg_push_breadcrumb(elgg_echo('bookmarks'), 'pg/bookmarks/all');
-
-$page_owner = elgg_get_page_owner_entity();
-if (!$page_owner) {
- $page_owner = get_loggedin_userid();
- elgg_set_page_owner_guid($page_owner);
-}
-
-elgg_push_breadcrumb($page_owner->name, "pg/bookmarks/owner/$page_owner->username");
-
-$offset = (int)get_input('offset', 0);
-$content .= elgg_list_entities(array(
- 'type' => 'object',
- 'subtype' => 'bookmarks',
- 'owner_guid' => $page_owner->guid,
- 'limit' => 10,
- 'offset' => $offset,
- 'full_view' => false,
- 'view_toggle_type' => false
-));
-
-$title = elgg_echo('bookmarks:owner', array($page_owner->name));
-
-$body = elgg_view_layout('content', array(
- 'filter_context' => 'mine',
- 'content' => $content,
- 'title' => $title
-));
-
-echo elgg_view_page($title, $body);
-elgg_pop_context(); \ No newline at end of file
diff --git a/mod/bookmarks/pages/view.php b/mod/bookmarks/pages/view.php
deleted file mode 100644
index 6b4b839b1..000000000
--- a/mod/bookmarks/pages/view.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-/**
- * View a bookmark
- *
- * @package ElggBookmarks
- */
-
-$bookmark = get_entity(get_input('guid'));
-
-elgg_set_page_owner_guid($bookmark->getContainerGUID());
-$owner = elgg_get_page_owner_entity();
-
-elgg_push_breadcrumb(elgg_echo('bookmarks'), 'pg/bookmarks/all');
-
-$crumbs_title = elgg_echo('blog:owned_blogs', array($owner->name));
-if (elgg_instanceof($owner, 'group')) {
- elgg_push_breadcrumb($crumbs_title, "pg/bookmarks/group/$owner->guid/owner");
-} else {
- elgg_push_breadcrumb($crumbs_title, "pg/bookmarks/owner/$owner->username");
-}
-
-$title = $bookmark->title;
-
-elgg_push_breadcrumb($title);
-
-$content = elgg_view_entity($bookmark, true);
-$content .= elgg_view_comments($bookmark);
-
-$body = elgg_view_layout('content', array(
- 'content' => $content,
- 'title' => $title,
- 'filter' => '',
- 'header' => '',
-));
-
-echo elgg_view_page($title, $body);
diff --git a/mod/bookmarks/start.php b/mod/bookmarks/start.php
index b7e2e5df9..caea43587 100644
--- a/mod/bookmarks/start.php
+++ b/mod/bookmarks/start.php
@@ -5,115 +5,100 @@
* @package ElggBookmarks
*/
-function bookmarks_init() {
- global $CONFIG;
-
- //add a tools menu option
- $item = new ElggMenuItem('bookmarks', elgg_echo('bookmarks'), 'pg/bookmarks/all');
- elgg_register_menu_item('site', $item);
-
- // Register a page handler, so we can have nice URLs
- register_page_handler('bookmarks', 'bookmarks_page_handler');
-
- // Add our CSS
- elgg_extend_view('css/screen', 'bookmarks/css');
-
- // Register granular notification for this type
- if (is_callable('register_notification_object')) {
- register_notification_object('object', 'bookmarks', elgg_echo('bookmarks:new'));
- }
-
- // Listen to notification events and supply a more useful message
- elgg_register_plugin_hook_handler('notify:entity:message', 'object', 'bookmarks_notify_message');
+elgg_register_event_handler('init', 'system', 'bookmarks_init');
- // Register a URL handler for shared items
- register_entity_url_handler('bookmark_url','object','bookmarks');
+/**
+ * Bookmark init
+ */
+function bookmarks_init() {
- // Shares widget
- elgg_register_widget_type('bookmarks',elgg_echo("bookmarks"),elgg_echo("bookmarks:widget:description"));
+ $root = dirname(__FILE__);
+ elgg_register_library('elgg:bookmarks', "$root/lib/bookmarks.php");
- // Register entity type
- register_entity_type('object','bookmarks');
+ // actions
+ $action_path = "$root/actions/bookmarks";
+ elgg_register_action('bookmarks/save', "$action_path/save.php");
+ elgg_register_action('bookmarks/delete', "$action_path/delete.php");
+ elgg_register_action('bookmarks/share', "$action_path/share.php");
- // Add group menu option
- add_group_tool_option('bookmarks',elgg_echo('bookmarks:enablebookmarks'),true);
+ // menus
+ elgg_register_menu_item('site', array(
+ 'name' => 'bookmarks',
+ 'text' => elgg_echo('bookmarks'),
+ 'href' => 'bookmarks/all'
+ ));
+ elgg_register_plugin_hook_handler('register', 'menu:page', 'bookmarks_page_menu');
elgg_register_plugin_hook_handler('register', 'menu:owner_block', 'bookmarks_owner_block_menu');
- // Extend Groups profile page
- elgg_extend_view('groups/tool_latest','bookmarks/group_bookmarks');
+ elgg_register_page_handler('bookmarks', 'bookmarks_page_handler');
- // Register profile menu hook
- elgg_register_plugin_hook_handler('profile_menu', 'profile', 'bookmarks_profile_menu');
-}
+ elgg_extend_view('css/elgg', 'bookmarks/css');
+ elgg_extend_view('js/elgg', 'bookmarks/js');
-/**
- * Sidebar menu for bookmarks
- *
- */
-function bookmarks_pagesetup() {
- global $CONFIG;
+ elgg_register_widget_type('bookmarks', elgg_echo('bookmarks'), elgg_echo('bookmarks:widget:description'));
- $page_owner = page_owner_entity();
+ if (elgg_is_logged_in()) {
+ $user_guid = elgg_get_logged_in_user_guid();
+ $address = urlencode(current_page_url());
- //add submenu options
- if (get_context() == "bookmarks") {
-
- if (isloggedin()) {
- // link to add bookmark form
- if ($page_owner instanceof ElggGroup) {
- if ($page_owner->isMember(get_loggedin_user())) {
- add_submenu_item(elgg_echo('bookmarks:add'), $CONFIG->wwwroot."pg/bookmarks/add/" . $page_owner->username);
- }
- } else {
- add_submenu_item(elgg_echo('bookmarks:add'), $CONFIG->wwwroot."pg/bookmarks/add/" . $_SESSION['user']->username);
- add_submenu_item(elgg_echo('bookmarks:inbox'),$CONFIG->wwwroot."pg/bookmarks/inbox/" . $_SESSION['user']->username);
- }
- if (page_owner()) {
- add_submenu_item(sprintf(elgg_echo('bookmarks:read'), $page_owner->name),$CONFIG->wwwroot."pg/bookmarks/owner/" . $page_owner->username);
- }
- if (!$page_owner instanceof ElggGroup) {
- add_submenu_item(elgg_echo('bookmarks:friends'),$CONFIG->wwwroot."pg/bookmarks/friends/" . $_SESSION['user']->username);
- }
- }
+ elgg_register_menu_item('extras', array(
+ 'name' => 'bookmark',
+ 'text' => elgg_view_icon('push-pin-alt'),
+ 'href' => "bookmarks/add/$user_guid?address=$address",
+ 'title' => elgg_echo('bookmarks:this'),
+ 'rel' => 'nofollow',
+ ));
+ }
+ // Register granular notification for this type
+ register_notification_object('object', 'bookmarks', elgg_echo('bookmarks:new'));
- if (!$page_owner instanceof ElggGroup) {
- add_submenu_item(elgg_echo('bookmarks:everyone'),$CONFIG->wwwroot."pg/bookmarks/all/");
- }
+ // Listen to notification events and supply a more useful message
+ elgg_register_plugin_hook_handler('notify:entity:message', 'object', 'bookmarks_notify_message');
- // Bookmarklet
- if ((isloggedin()) && (page_owner()) && (can_write_to_container(0, page_owner()))) {
+ // Register bookmarks view for ecml parsing
+ elgg_register_plugin_hook_handler('get_views', 'ecml', 'bookmarks_ecml_views_hook');
- $bmtext = elgg_echo('bookmarks:bookmarklet');
- if ($page_owner instanceof ElggGroup) {
- $bmtext = elgg_echo('bookmarks:bookmarklet:group');
- }
- add_submenu_item($bmtext, $CONFIG->wwwroot . "pg/bookmarks/bookmarklet/{$page_owner->username}/");
- }
+ // Register a URL handler for bookmarks
+ elgg_register_entity_url_handler('object', 'bookmarks', 'bookmark_url');
- }
-
- if ($page_owner instanceof ElggGroup && get_context() == 'groups') {
- if ($page_owner->bookmarks_enable != "no") {
- add_submenu_item(sprintf(elgg_echo("bookmarks:group"),$page_owner->name), $CONFIG->wwwroot . "pg/bookmarks/owner/" . $page_owner->username);
- }
- }
+ // Register entity type for search
+ elgg_register_entity_type('object', 'bookmarks');
+ // Groups
+ add_group_tool_option('bookmarks', elgg_echo('bookmarks:enablebookmarks'), true);
+ elgg_extend_view('groups/tool_latest', 'bookmarks/group_module');
}
/**
- * Bookmarks page handler
- * Expects URLs like:
- * pg/bookmarks/username/[friends||items||add||edit||bookmarklet]
+ * Dispatcher for bookmarks.
+ *
+ * URLs take the form of
+ * All bookmarks: bookmarks/all
+ * User's bookmarks: bookmarks/owner/<username>
+ * Friends' bookmarks: bookmarks/friends/<username>
+ * View bookmark: bookmarks/view/<guid>/<title>
+ * New bookmark: bookmarks/add/<guid> (container: user, group, parent)
+ * Edit bookmark: bookmarks/edit/<guid>
+ * Group bookmarks: bookmarks/group/<guid>/all
+ * Bookmarklet: bookmarks/bookmarklet/<guid> (user)
*
+ * Title is ignored
*
- * @param array $page From the page_handler function
- * @return true|false Depending on success
+ * @param array $page
+ * @return bool
*/
function bookmarks_page_handler($page) {
- global $CONFIG;
- // group usernames
+ elgg_load_library('elgg:bookmarks');
+
+ if (!isset($page[0])) {
+ $page[0] = 'all';
+ }
+
+ elgg_push_breadcrumb(elgg_echo('bookmarks'), 'bookmarks/all');
+
+ // old group usernames
if (substr_count($page[0], 'group:')) {
preg_match('/group\:([0-9]+)/i', $page[0], $matches);
$guid = $matches[1];
@@ -128,46 +113,56 @@ function bookmarks_page_handler($page) {
bookmarks_url_forwarder($page);
}
-
- $pages = dirname(__FILE__) . '/pages';
+ $pages = dirname(__FILE__) . '/pages/bookmarks';
switch ($page[0]) {
- case "read":
- case "view":
- set_input('guid', $page[1]);
- include "$pages/view.php";
- break;
- case "friends":
- set_input('username', $page[1]);
- include "$pages/friends.php";
- break;
case "all":
include "$pages/all.php";
break;
- case "inbox":
- set_input('username', $page[1]);
- include "$pages/inbox.php";
- break;
+
case "owner":
- set_input('username', $page[1]);
include "$pages/owner.php";
break;
+
+ case "friends":
+ include "$pages/friends.php";
+ break;
+
+ case "view":
+ set_input('guid', $page[1]);
+ include "$pages/view.php";
+ break;
+ case 'read': // Elgg 1.7 compatibility
+ register_error(elgg_echo("changebookmark"));
+ forward("bookmarks/view/{$page[1]}");
+ break;
+
case "add":
- set_input('username', $page[1]);
+ gatekeeper();
include "$pages/add.php";
break;
+
case "edit":
- set_input('bookmark', $page[1]);
- include "$pages/add.php";
+ gatekeeper();
+ set_input('guid', $page[1]);
+ include "$pages/edit.php";
+ break;
+
+ case 'group':
+ group_gatekeeper();
+ include "$pages/owner.php";
break;
+
case "bookmarklet":
- set_input('username', $page[1]);
+ set_input('container_guid', $page[1]);
include "$pages/bookmarklet.php";
break;
+
default:
return false;
}
+ elgg_pop_context();
return true;
}
@@ -185,22 +180,22 @@ function bookmarks_url_forwarder($page) {
switch ($page[1]) {
case "read":
- $url = "{$CONFIG->wwwroot}pg/bookmarks/view/{$page[2]}/{$page[3]}";
+ $url = "{$CONFIG->wwwroot}bookmarks/view/{$page[2]}/{$page[3]}";
break;
case "inbox":
- $url = "{$CONFIG->wwwroot}pg/bookmarks/inbox/{$page[0]}/";
+ $url = "{$CONFIG->wwwroot}bookmarks/inbox/{$page[0]}";
break;
case "friends":
- $url = "{$CONFIG->wwwroot}pg/bookmarks/friends/{$page[0]}/";
+ $url = "{$CONFIG->wwwroot}bookmarks/friends/{$page[0]}";
break;
case "add":
- $url = "{$CONFIG->wwwroot}pg/bookmarks/add/{$page[0]}/";
+ $url = "{$CONFIG->wwwroot}bookmarks/add/{$page[0]}";
break;
case "items":
- $url = "{$CONFIG->wwwroot}pg/bookmarks/owner/{$page[0]}/";
+ $url = "{$CONFIG->wwwroot}bookmarks/owner/{$page[0]}";
break;
case "bookmarklet":
- $url = "{$CONFIG->wwwroot}pg/bookmarks/bookmarklet/{$page[0]}/";
+ $url = "{$CONFIG->wwwroot}bookmarks/bookmarklet/{$page[0]}";
break;
}
@@ -219,20 +214,25 @@ function bookmark_url($entity) {
$title = $entity->title;
$title = elgg_get_friendly_title($title);
- return $CONFIG->url . "pg/bookmarks/view/" . $entity->getGUID() . "/" . $title;
+ return $CONFIG->url . "bookmarks/view/" . $entity->getGUID() . "/" . $title;
}
/**
* Add a menu item to an ownerblock
+ *
+ * @param string $hook
+ * @param string $type
+ * @param array $return
+ * @param array $params
*/
function bookmarks_owner_block_menu($hook, $type, $return, $params) {
if (elgg_instanceof($params['entity'], 'user')) {
- $url = "pg/bookmarks/owner/{$params['user']->username}";
+ $url = "bookmarks/owner/{$params['entity']->username}";
$item = new ElggMenuItem('bookmarks', elgg_echo('bookmarks'), $url);
$return[] = $item;
} else {
- if ($params['entity']->bookmarks_enable != "no") {
- $url = "pg/bookmarks/owner/{$params['entity']->username}";
+ if ($params['entity']->bookmarks_enable != 'no') {
+ $url = "bookmarks/group/{$params['entity']->guid}/all";
$item = new ElggMenuItem('bookmarks', elgg_echo('bookmarks:group'), $url);
$return[] = $item;
}
@@ -242,12 +242,12 @@ function bookmarks_owner_block_menu($hook, $type, $return, $params) {
}
/**
- * Returns a more meaningful message
+ * Returns the body of a notification message
*
- * @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 string $returnvalue
+ * @param array $params
*/
function bookmarks_notify_message($hook, $entity_type, $returnvalue, $params) {
$entity = $params['entity'];
@@ -256,30 +256,61 @@ function bookmarks_notify_message($hook, $entity_type, $returnvalue, $params) {
if (($entity instanceof ElggEntity) && ($entity->getSubtype() == 'bookmarks')) {
$descr = $entity->description;
$title = $entity->title;
- global $CONFIG;
- $url = elgg_get_site_url() . "pg/view/" . $entity->guid;
- if ($method == 'sms') {
- $owner = $entity->getOwnerEntity();
- return $owner->name . ' ' . elgg_echo("bookmarks:via") . ': ' . $url . ' (' . $title . ')';
- }
- if ($method == 'email') {
- $owner = $entity->getOwnerEntity();
- return $owner->name . ' ' . elgg_echo("bookmarks:via") . ': ' . $title . "\n\n" . $descr . "\n\n" . $entity->getURL();
- }
- if ($method == 'web') {
- $owner = $entity->getOwnerEntity();
- return $owner->name . ' ' . elgg_echo("bookmarks:via") . ': ' . $title . "\n\n" . $descr . "\n\n" . $entity->getURL();
- }
-
+ $owner = $entity->getOwnerEntity();
+
+ return elgg_echo('bookmarks:notification', array(
+ $owner->name,
+ $title,
+ $entity->address,
+ $descr,
+ $entity->getURL()
+ ));
}
return null;
}
-elgg_register_event_handler('init', 'system', 'bookmarks_init');
-elgg_register_event_handler('pagesetup', 'system', 'bookmarks_pagesetup');
+/**
+ * Add a page menu menu.
+ *
+ * @param string $hook
+ * @param string $type
+ * @param array $return
+ * @param array $params
+ */
+function bookmarks_page_menu($hook, $type, $return, $params) {
+ if (elgg_is_logged_in()) {
+ // only show bookmarklet in bookmark pages
+ if (elgg_in_context('bookmarks')) {
+ $page_owner = elgg_get_page_owner_entity();
+ if (!$page_owner) {
+ $page_owner = elgg_get_logged_in_user_entity();
+ }
-// Register actions
-$action_path = dirname(__FILE__) . '/actions/bookmarks';
+ if ($page_owner instanceof ElggGroup) {
+ if (!$page_owner->isMember()) {
+ return $return;
+ }
+ $title = elgg_echo('bookmarks:bookmarklet:group');
+ } else {
+ $title = elgg_echo('bookmarks:bookmarklet');
+ }
+
+ $return[] = new ElggMenuItem('bookmarklet', $title, 'bookmarks/bookmarklet/' . $page_owner->getGUID());
+ }
+ }
+
+ return $return;
+}
-elgg_register_action('bookmarks/add', "$action_path/add.php", 'logged_in');
-elgg_register_action('bookmarks/delete', "$action_path/delete.php", 'logged_in'); \ No newline at end of file
+/**
+ * Return bookmarks views to parse for ecml
+ *
+ * @param string $hook
+ * @param string $type
+ * @param array $return
+ * @param array $params
+ */
+function bookmarks_ecml_views_hook($hook, $type, $return, $params) {
+ $return['object/bookmarks'] = elgg_echo('item:object:bookmarks');
+ return $return;
+}
diff --git a/mod/bookmarks/views/default/bookmarks/bookmarklet.php b/mod/bookmarks/views/default/bookmarks/bookmarklet.php
index bb2cf885e..b3e9737fe 100644
--- a/mod/bookmarks/views/default/bookmarks/bookmarklet.php
+++ b/mod/bookmarks/views/default/bookmarks/bookmarklet.php
@@ -1,33 +1,35 @@
<?php
/**
- * Elgg get bookmarks bookmarklet view
- *
- * @package ElggBookmarks
+ * Bookmarklet
+ *
+ * @package Bookmarks
*/
$page_owner = elgg_get_page_owner_entity();
-$bookmarktext = elgg_echo("bookmarks:this");
if ($page_owner instanceof ElggGroup) {
- $bookmarktext = elgg_echo("bookmarks:this:group", array($page_owner->name));
- $name = "group:$page_owner->guid";
+ $title = elgg_echo("bookmarks:this:group", array($page_owner->name));
} else {
- $name = $page_owner->username;
+ $title = elgg_echo("bookmarks:this");
}
-if (!$name && ($user = get_loggedin_user())) {
+$guid = $page_owner->getGUID();
+
+if (!$name && ($user = elgg_get_logged_in_user_entity())) {
$name = $user->username;
}
+$url = elgg_get_site_url();
+$img = elgg_view('output/img', array(
+ 'src' => 'mod/bookmarks/graphics/bookmarklet.gif',
+ 'alt' => $title,
+));
+$bookmarklet = "<a href=\"javascript:location.href='{$url}bookmarks/add/$guid?address='"
+ . "+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)\">"
+ . $img . "</a>";
+
?>
-<h3><?php echo elgg_echo('bookmarks:browser_bookmarklet')?></h3>
-<a href="javascript:location.href='<?php echo elgg_get_site_url(); ?>pg/bookmarks/<?php echo $name; ?>/add?address='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)"> <img src="<?php echo elgg_get_site_url(); ?>_graphics/elgg_bookmarklet.gif" border="0" title="<?php echo elgg_echo('bookmarks:this');?>" /> </a>
-<br />
-<div class="elgg-discover">
- <a class="link">Instructions</a>
- <div class="elgg-discoverable">
- <p><?php echo elgg_echo("bookmarks:bookmarklet:description"); ?></p>
- <p><?php echo elgg_echo("bookmarks:bookmarklet:descriptionie"); ?></p>
- <p><?php echo elgg_echo("bookmarks:bookmarklet:description:conclusion"); ?></p>
- </div>
-</div> \ No newline at end of file
+<p><?php echo elgg_echo("bookmarks:bookmarklet:description"); ?></p>
+<p><?php echo $bookmarklet; ?></p>
+<p><?php echo elgg_echo("bookmarks:bookmarklet:descriptionie"); ?></p>
+<p><?php echo elgg_echo("bookmarks:bookmarklet:description:conclusion"); ?></p>
diff --git a/mod/bookmarks/views/default/bookmarks/css.php b/mod/bookmarks/views/default/bookmarks/css.php
new file mode 100644
index 000000000..0d734c847
--- /dev/null
+++ b/mod/bookmarks/views/default/bookmarks/css.php
@@ -0,0 +1,3 @@
+.elgg-icon-bookmark {
+ background: transparent url(<?php echo elgg_get_site_url();?>mod/bookmarks/graphics/bookmark.gif);
+} \ No newline at end of file
diff --git a/mod/bookmarks/views/default/bookmarks/form.php b/mod/bookmarks/views/default/bookmarks/form.php
deleted file mode 100644
index 2131f7cd8..000000000
--- a/mod/bookmarks/views/default/bookmarks/form.php
+++ /dev/null
@@ -1,133 +0,0 @@
-<?php
-
-/**
-* Elgg bookmarks plugin form
-*
-* @package ElggBookmarks
-*/
-
-if(isset($vars['entity'])){
- $guid = $vars['entity']->guid;
- $title = $vars['entity']->title;
- $description = $vars['entity']->description;
- $address = $vars['entity']->address;
- $tags = $vars['entity']->tags;
- $access_id = $vars['entity']->access_id;
- $shares = $vars['entity']->shares;
- $owner = $vars['entity']->getOwnerEntity();
- $highlight = 'default';
-
-} else {
- $guid = 0;
- $title = get_input('title',"");
- $title = stripslashes($title); // strip slashes from URL encoded apostrophes
- $description = "";
- $address = get_input('address',"");
- $highlight = 'all';
-
- if ($address == "previous")
- $address = $_SERVER['HTTP_REFERER'];
- $tags = array();
-
- if (defined('ACCESS_DEFAULT')) {
- $access_id = ACCESS_DEFAULT;
- } else {
- $access_id = 0;
- }
- $shares = array();
- $owner = page_owner_entity();
-}
-
-?>
-<div class="contentWrapper">
-<form action="<?php echo $vars['url']; ?>action/bookmarks/add" method="post">
-<?php echo elgg_view('input/securitytoken'); ?>
-<p>
- <label>
- <?php echo elgg_echo('title'); ?>
- <?php
-
- echo elgg_view('input/text',array(
- 'internalname' => 'title',
- 'value' => $title,
- ));
-
- ?>
- </label>
-</p>
-<p>
- <label>
- <?php echo elgg_echo('bookmarks:address'); ?>
- <?php
-
- echo elgg_view('input/url',array(
- 'internalname' => 'address',
- 'value' => $address,
- ));
-
- ?>
- </label>
-</p>
-<p class="longtext_editarea">
- <label>
- <?php echo elgg_echo('description'); ?>
- <br />
- <?php
-
- echo elgg_view('input/longtext',array(
- 'internalname' => 'description',
- 'value' => $description,
- ));
-
- ?>
- </label>
-</p>
-<p>
- <label>
- <?php echo elgg_echo('tags'); ?>
- <?php
-
- echo elgg_view('input/tags',array(
- 'internalname' => 'tags',
- 'value' => $tags,
- ));
-
- ?>
- </label>
-</p>
- <?php
-
- //echo elgg_view('bookmarks/sharing',array('shares' => $shares, 'owner' => $owner));
- if ($friends = elgg_get_entities_from_relationship(array('relationship' => 'friend', 'relationship_guid' => $owner->getGUID(), 'inverse_relationship' => FALSE, 'type' => 'user', 'limit' => 9999))) {
-?>
-<p>
- <label><?php echo elgg_echo("bookmarks:with"); ?></label><br />
-<?php
- echo elgg_view('friends/picker',array('entities' => $friends, 'internalname' => 'shares', 'highlight' => $highlight));
-?>
-</p>
-<?php
- }
-
- ?>
-<p>
- <label>
- <?php echo elgg_echo('access'); ?>
- <?php
-
- echo elgg_view('input/access',array(
- 'internalname' => 'access',
- 'value' => $access_id,
- ));
-
- ?>
- </label>
-</p>
-<p>
- <?php echo $vars['container_guid'] ? elgg_view('input/hidden', array('internalname' => 'container_guid', 'value' => $vars['container_guid'])) : ""; ?>
- <input type="hidden" name="bookmark_guid" value="<?php echo $guid; ?>" />
- <input type="submit" value="<?php echo elgg_echo('save'); ?>" />
-</p>
-
-</form>
-</div> \ No newline at end of file
diff --git a/mod/bookmarks/views/default/bookmarks/group_module.php b/mod/bookmarks/views/default/bookmarks/group_module.php
new file mode 100644
index 000000000..60a727819
--- /dev/null
+++ b/mod/bookmarks/views/default/bookmarks/group_module.php
@@ -0,0 +1,47 @@
+<?php
+/**
+ * List most recent bookmarks on group profile page
+ *
+ * @package Bookmarks
+ */
+
+$group = elgg_get_page_owner_entity();
+
+if ($group->bookmarks_enable == "no") {
+ return true;
+}
+
+$all_link = elgg_view('output/url', array(
+ 'href' => "bookmarks/group/$group->guid/all",
+ 'text' => elgg_echo('link:view:all'),
+ 'is_trusted' => true,
+));
+
+elgg_push_context('widgets');
+$options = array(
+ 'type' => 'object',
+ 'subtype' => 'bookmarks',
+ 'container_guid' => elgg_get_page_owner_guid(),
+ 'limit' => 6,
+ 'full_view' => false,
+ 'pagination' => false,
+);
+$content = elgg_list_entities($options);
+elgg_pop_context();
+
+if (!$content) {
+ $content = '<p>' . elgg_echo('bookmarks:none') . '</p>';
+}
+
+$new_link = elgg_view('output/url', array(
+ 'href' => "bookmarks/add/$group->guid",
+ 'text' => elgg_echo('bookmarks:add'),
+ 'is_trusted' => true,
+));
+
+echo elgg_view('groups/profile/module', array(
+ 'title' => elgg_echo('bookmarks:group'),
+ 'content' => $content,
+ 'all_link' => $all_link,
+ 'add_link' => $new_link,
+));
diff --git a/mod/bookmarks/views/default/bookmarks/groupprofile_bookmarks.php b/mod/bookmarks/views/default/bookmarks/groupprofile_bookmarks.php
deleted file mode 100644
index ad8095d11..000000000
--- a/mod/bookmarks/views/default/bookmarks/groupprofile_bookmarks.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-/**
- * List most recent bookmarks on group profile page
- */
-
-if ($vars['entity']->bookmarks_enable != 'no') {
-?>
-
-<div class="group_widget">
-<h2><?php echo elgg_echo('bookmarks:group'); ?></h2>
-<?php
- $context = get_context();
- set_context('search');
- $content = elgg_list_entities(array('types' => 'object',
- 'subtypes' => 'bookmarks',
- 'container_guid' => $vars['entity']->guid,
- 'limit' => 5,
- 'full_view' => FALSE,
- 'pagination' => FALSE));
- set_context($context);
-
- if ($content) {
- echo $content;
-
- $more_url = "{$vars['url']}pg/bookmarks/owner/group:{$vars['entity']->guid}/";
- echo "<div class=\"forum_latest\"><a href=\"$more_url\">" . elgg_echo('bookmarks:more') . "</a></div>";
- } else {
- echo "<div class=\"forum_latest\">" . elgg_echo("bookmarks:nogroup") . "</div>";
- }
-?>
-</div>
-<?php
-} \ No newline at end of file
diff --git a/mod/bookmarks/views/default/bookmarks/js.php b/mod/bookmarks/views/default/bookmarks/js.php
new file mode 100644
index 000000000..c36823c09
--- /dev/null
+++ b/mod/bookmarks/views/default/bookmarks/js.php
@@ -0,0 +1,12 @@
+
+elgg.provide('elgg.bookmarks');
+
+elgg.bookmarks.init = function() {
+ // append the title to the url
+ var title = document.title;
+ var e = $('a.elgg-bookmark-page');
+ var link = e.attr('href') + '&title=' + encodeURIComponent(title);
+ e.attr('href', link);
+};
+
+elgg.register_hook_handler('init', 'system', elgg.bookmarks.init);
diff --git a/mod/bookmarks/views/default/bookmarks/owner_block.php b/mod/bookmarks/views/default/bookmarks/owner_block.php
deleted file mode 100644
index 654ff9152..000000000
--- a/mod/bookmarks/views/default/bookmarks/owner_block.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-$label = elgg_echo('bookmarks:this');
-$user = get_loggedin_user();
-$url = "'" . $vars['url'] . "pg/bookmarks/add/{$user->username}?address='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)";
-
-?>
-<div id="owner_block_bookmark_this">
-<a href="javascript:location.href=<?php echo $url; ?>"><?php echo $label ?></a>
-</div>
diff --git a/mod/bookmarks/views/default/bookmarks/sharing.php b/mod/bookmarks/views/default/bookmarks/sharing.php
deleted file mode 100644
index 63738d94d..000000000
--- a/mod/bookmarks/views/default/bookmarks/sharing.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-
- $owner = $vars['owner'];
- if ($friends = elgg_get_entities_from_relationship(array('relationship' => 'friend', 'relationship_guid' => $owner->getGUID(), 'inverse_relationship' => FALSE, 'type' => 'user', 'limit' => 9999))) {
-
-?>
-
-<table border="0" cellspacing="0" cellpadding="0">
-
-<?php
-
- $col = 0;
- foreach($friends as $friend) {
-
- if ($col == 0) echo "<tr>";
-
- $label = elgg_view("profile/icon",array('entity' => $friend, 'size' => 'tiny'));
- $options[$label] = $friend->getGUID();
-
-?>
-
- <td>
-
- <input type="checkbox" name="shares[]" value="<?php echo $options[$label]; ?>" />
-
- </td>
-
- <td >
-
- <div style="width: 25px; margin-bottom: 15px;">
- <?php
-
- echo $label;
-
- ?>
- </div>
- </td>
- <td style="width: 300px; padding: 5px;">
- <?php
-
- echo $friend->name;
-
- ?>
- </td>
-<?php
-
-
- $col++;
-
- if ($col == 3) {
-
- $col = 0;
- echo "</tr>";
-
- }
-
-
- }
- if ($col != 3) {
- echo "</tr>";
- }
-
-
-?>
-
-</table>
-
-<?php
-
- /*echo elgg_view('input/checkboxes',array(
-
- 'internalname' => 'shares',
- 'options' => $options,
- 'value' => $vars['shares'],
-
- )); */
-
- }
-
-?> \ No newline at end of file
diff --git a/mod/bookmarks/views/default/bookmarks/sidebar.php b/mod/bookmarks/views/default/bookmarks/sidebar.php
new file mode 100644
index 000000000..811284ef3
--- /dev/null
+++ b/mod/bookmarks/views/default/bookmarks/sidebar.php
@@ -0,0 +1,14 @@
+<?php
+/**
+ * Bookmarks sidebar
+ */
+
+echo elgg_view('page/elements/comments_block', array(
+ 'subtypes' => 'bookmarks',
+ 'owner_guid' => elgg_get_page_owner_guid(),
+));
+
+echo elgg_view('page/elements/tagcloud_block', array(
+ 'subtypes' => 'bookmarks',
+ 'owner_guid' => elgg_get_page_owner_guid(),
+));
diff --git a/mod/bookmarks/views/default/forms/bookmarks/save.php b/mod/bookmarks/views/default/forms/bookmarks/save.php
new file mode 100644
index 000000000..7d064a55b
--- /dev/null
+++ b/mod/bookmarks/views/default/forms/bookmarks/save.php
@@ -0,0 +1,59 @@
+<?php
+/**
+ * Edit / add a bookmark
+ *
+ * @package Bookmarks
+ */
+
+// once elgg_view stops throwing all sorts of junk into $vars, we can use extract()
+$title = elgg_extract('title', $vars, '');
+$desc = elgg_extract('description', $vars, '');
+$address = elgg_extract('address', $vars, '');
+$tags = elgg_extract('tags', $vars, '');
+$access_id = elgg_extract('access_id', $vars, ACCESS_DEFAULT);
+$container_guid = elgg_extract('container_guid', $vars);
+$guid = elgg_extract('guid', $vars, null);
+$shares = elgg_extract('shares', $vars, array());
+
+?>
+<div>
+ <label><?php echo elgg_echo('title'); ?></label><br />
+ <?php echo elgg_view('input/text', array('name' => 'title', 'value' => $title)); ?>
+</div>
+<div>
+ <label><?php echo elgg_echo('bookmarks:address'); ?></label><br />
+ <?php echo elgg_view('input/text', array('name' => 'address', 'value' => $address)); ?>
+</div>
+<div>
+ <label><?php echo elgg_echo('description'); ?></label>
+ <?php echo elgg_view('input/longtext', array('name' => 'description', 'value' => $desc)); ?>
+</div>
+<div>
+ <label><?php echo elgg_echo('tags'); ?></label>
+ <?php echo elgg_view('input/tags', array('name' => 'tags', 'value' => $tags)); ?>
+</div>
+<?php
+
+$categories = elgg_view('input/categories', $vars);
+if ($categories) {
+ echo $categories;
+}
+
+?>
+<div>
+ <label><?php echo elgg_echo('access'); ?></label><br />
+ <?php echo elgg_view('input/access', array('name' => 'access_id', 'value' => $access_id)); ?>
+</div>
+<div class="elgg-foot">
+<?php
+
+echo elgg_view('input/hidden', array('name' => 'container_guid', 'value' => $container_guid));
+
+if ($guid) {
+ echo elgg_view('input/hidden', array('name' => 'guid', 'value' => $guid));
+}
+
+echo elgg_view('input/submit', array('value' => elgg_echo("save")));
+
+?>
+</div> \ No newline at end of file
diff --git a/mod/bookmarks/views/default/object/bookmarks.php b/mod/bookmarks/views/default/object/bookmarks.php
index 7d2370c19..83bae2b13 100644
--- a/mod/bookmarks/views/default/object/bookmarks.php
+++ b/mod/bookmarks/views/default/object/bookmarks.php
@@ -5,27 +5,28 @@
* @package ElggBookmarks
*/
-$full = elgg_get_array_value('full', $vars, FALSE);
-$bookmark = elgg_get_array_value('entity', $vars, FALSE);
+$full = elgg_extract('full_view', $vars, FALSE);
+$bookmark = elgg_extract('entity', $vars, FALSE);
if (!$bookmark) {
return;
}
$owner = $bookmark->getOwnerEntity();
+$owner_icon = elgg_view_entity_icon($owner, 'tiny');
$container = $bookmark->getContainerEntity();
-$categories = elgg_view('categories/view', $vars);
+$categories = elgg_view('output/categories', $vars);
-$link = filter_tags(elgg_view('output/url', array('href' => $bookmark->address)));
+$link = elgg_view('output/url', array('href' => $bookmark->address));
$description = elgg_view('output/longtext', array('value' => $bookmark->description, 'class' => 'pbl'));
$owner_link = elgg_view('output/url', array(
- 'href' => "pg/file/owner/$owner->username",
+ 'href' => "bookmarks/owner/$owner->username",
'text' => $owner->name,
+ 'is_trusted' => true,
));
-$author_text = elgg_echo('blog:author_by_line', array($owner_link));
+$author_text = elgg_echo('byline', array($owner_link));
-$tags = elgg_view('output/tags', array('tags' => $bookmark->tags));
$date = elgg_view_friendly_time($bookmark->time_created);
$comments_count = $bookmark->countComments();
@@ -35,17 +36,20 @@ if ($comments_count != 0) {
$comments_link = elgg_view('output/url', array(
'href' => $bookmark->getURL() . '#comments',
'text' => $text,
+ 'is_trusted' => true,
));
} else {
$comments_link = '';
}
-$metadata = elgg_view('layout/objects/list/metadata', array(
- 'entity' => $bookmark,
+$metadata = elgg_view_menu('entity', array(
+ 'entity' => $vars['entity'],
'handler' => 'bookmarks',
+ 'sort_by' => 'priority',
+ 'class' => 'elgg-menu-hz',
));
-$subtitle = "$author_text $date $categories $comments_link";
+$subtitle = "$author_text $date $comments_link $categories";
// do not show the metadata and controls in widget view
if (elgg_in_context('widgets')) {
@@ -53,36 +57,46 @@ if (elgg_in_context('widgets')) {
}
if ($full && !elgg_in_context('gallery')) {
- $header = elgg_view_title($bookmark->title);
$params = array(
'entity' => $bookmark,
'title' => false,
'metadata' => $metadata,
'subtitle' => $subtitle,
- 'tags' => $tags,
);
- $bookmark_info = elgg_view('layout/objects/list/body', $params);
+ $params = $params + $vars;
+ $summary = elgg_view('object/elements/summary', $params);
- echo <<<HTML
-$header
-$bookmark_info
-<div class="bookmark elgg-content">
- <span class="elgg-icon elgg-icon-following"></span><h3 class="pbl">$link</h3>
+ $bookmark_icon = elgg_view_icon('push-pin-alt');
+ $body = <<<HTML
+<div class="bookmark elgg-content mts">
+ $bookmark_icon<span class="elgg-heading-basic mbs">$link</span>
$description
</div>
HTML;
+ echo elgg_view('object/elements/full', array(
+ 'entity' => $bookmark,
+ 'icon' => $owner_icon,
+ 'summary' => $summary,
+ 'body' => $body,
+ ));
+
} elseif (elgg_in_context('gallery')) {
- echo '<div class="bookmarks-gallery-item">';
- echo "<h3>" . $bookmark->title . "</h3>";
- echo "<p class='subtitle'>$owner_link $date</p>";
- echo '</div>';
+ echo <<<HTML
+<div class="bookmarks-gallery-item">
+ <h3>$bookmark->title</h3>
+ <p class='subtitle'>$owner_link $date</p>
+</div>
+HTML;
} else {
// brief view
$url = $bookmark->address;
$display_text = $url;
$excerpt = elgg_get_excerpt($bookmark->description);
+ if ($excerpt) {
+ $excerpt = " - $excerpt";
+ }
if (strlen($url) > 25) {
$bits = parse_url($url);
@@ -93,20 +107,21 @@ HTML;
}
}
- $link = filter_tags(elgg_view('output/url', array(
+ $link = elgg_view('output/url', array(
'href' => $bookmark->address,
- 'text' => $display_text
- )));
+ 'text' => $display_text,
+ ));
- $content = "<span class=\"elgg-icon elgg-icon-following\"></span>$link - $excerpt";
+ $content = elgg_view_icon('push-pin-alt') . "$link{$excerpt}";
$params = array(
'entity' => $bookmark,
'metadata' => $metadata,
'subtitle' => $subtitle,
- 'tags' => $tags,
'content' => $content,
);
-
- echo elgg_view('layout/objects/list/body', $params);
-} \ No newline at end of file
+ $params = $params + $vars;
+ $body = elgg_view('object/elements/summary', $params);
+
+ echo elgg_view_image_block($owner_icon, $body);
+}
diff --git a/mod/bookmarks/views/default/river/object/bookmarks/annotate.php b/mod/bookmarks/views/default/river/object/bookmarks/annotate.php
deleted file mode 100644
index 8db8a6581..000000000
--- a/mod/bookmarks/views/default/river/object/bookmarks/annotate.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-$statement = $vars['statement'];
-$performed_by = $statement->getSubject();
-$object = $statement->getObject();
-
-$url = "<a href=\"{$performed_by->getURL()}\">{$performed_by->name}</a>";
-$string = sprintf(elgg_echo("bookmarks:river:annotate"),$url) . " ";
-$string .= "<a href=\"" . $object->getURL() . "\">" . elgg_echo("bookmarks:river:item") . "</a>";
-
-echo $string; \ No newline at end of file
diff --git a/mod/bookmarks/views/default/river/object/bookmarks/create.php b/mod/bookmarks/views/default/river/object/bookmarks/create.php
index 82ea75af7..388f54ac9 100644
--- a/mod/bookmarks/views/default/river/object/bookmarks/create.php
+++ b/mod/bookmarks/views/default/river/object/bookmarks/create.php
@@ -1,10 +1,15 @@
<?php
-$performed_by = get_entity($vars['item']->subject_guid); // $statement->getSubject();
-$object = get_entity($vars['item']->object_guid);
-$url = $object->getURL();
+/**
+ * New bookmarks river entry
+ *
+ * @package Bookmarks
+ */
-$url = "<a href=\"{$performed_by->getURL()}\">{$performed_by->name}</a>";
-$string = sprintf(elgg_echo("bookmarks:river:created"),$url) . " ";
-$string .= "<a href=\"" . $object->getURL() . "\">" . $object->title . "</a>"; //elgg_echo("bookmarks:river:item") . "</a>";
+$object = $vars['item']->getObjectEntity();
+$excerpt = elgg_get_excerpt($object->description);
-echo $string;
+echo elgg_view('river/elements/layout', array(
+ 'item' => $vars['item'],
+ 'message' => $excerpt,
+ 'attachments' => elgg_view('output/url', array('href' => $object->address)),
+));
diff --git a/mod/bookmarks/views/default/widgets/bookmarks/content.php b/mod/bookmarks/views/default/widgets/bookmarks/content.php
new file mode 100644
index 000000000..0b85017fc
--- /dev/null
+++ b/mod/bookmarks/views/default/widgets/bookmarks/content.php
@@ -0,0 +1,32 @@
+<?php
+/**
+ * Elgg bookmarks widget
+ *
+ * @package Bookmarks
+ */
+
+$max = (int) $vars['entity']->num_display;
+
+$options = array(
+ 'type' => 'object',
+ 'subtype' => 'bookmarks',
+ 'container_guid' => $vars['entity']->owner_guid,
+ 'limit' => $max,
+ 'full_view' => FALSE,
+ 'pagination' => FALSE,
+);
+$content = elgg_list_entities($options);
+
+echo $content;
+
+if ($content) {
+ $url = "bookmarks/owner/" . elgg_get_page_owner_entity()->username;
+ $more_link = elgg_view('output/url', array(
+ 'href' => $url,
+ 'text' => elgg_echo('bookmarks:more'),
+ 'is_trusted' => true,
+ ));
+ echo "<span class=\"elgg-widget-more\">$more_link</span>";
+} else {
+ echo elgg_echo('bookmarks:none');
+}
diff --git a/mod/bookmarks/views/default/widgets/bookmarks/edit.php b/mod/bookmarks/views/default/widgets/bookmarks/edit.php
index edb6afdf2..ed9c7fd88 100644
--- a/mod/bookmarks/views/default/widgets/bookmarks/edit.php
+++ b/mod/bookmarks/views/default/widgets/bookmarks/edit.php
@@ -1,28 +1,24 @@
<?php
/**
* Elgg bookmark widget edit view
- *
- * @package ElggBookmarks
+ *
+ * @package Bookmarks
*/
// set default value
if (!isset($vars['entity']->num_display)) {
$vars['entity']->num_display = 4;
}
-?>
-<p>
- <?php echo elgg_echo('bookmarks:numbertodisplay'); ?>:
- <select name="params[num_display]">
-<?php
-for ($i=1; $i<=10; $i++) {
- $selected = '';
- if ($vars['entity']->num_display == $i) {
- $selected = "selected='selected'";
- }
+$params = array(
+ 'name' => 'params[num_display]',
+ 'value' => $vars['entity']->num_display,
+ 'options' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
+);
+$dropdown = elgg_view('input/dropdown', $params);
- echo " <option value='{$i}' $selected >{$i}</option>\n";
-}
?>
- </select>
-</p> \ No newline at end of file
+<div>
+ <?php echo elgg_echo('bookmarks:numbertodisplay'); ?>:
+ <?php echo $dropdown; ?>
+</div>
diff --git a/mod/bookmarks/views/default/widgets/bookmarks/view.php b/mod/bookmarks/views/default/widgets/bookmarks/view.php
deleted file mode 100644
index f9bbf5488..000000000
--- a/mod/bookmarks/views/default/widgets/bookmarks/view.php
+++ /dev/null
@@ -1,65 +0,0 @@
-
-<script type="text/javascript">
-$(document).ready(function () {
- $('a.share_more_info').click(function () {
- $(this.parentNode).children("[class=share_desc]").slideToggle("fast");
- return false;
- });
-}); /* end document ready function */
-</script>
-
-<?php
-
-//get the num of shares the user want to display
-$num = $vars['entity']->num_display;
-
-//if no number has been set, default to 4
-if(!$num)
- $num = 4;
-
-//grab the users bookmarked items
-$shares = elgg_get_entities(array('types' => 'object', 'subtypes' => 'bookmarks', 'container_guid' => $vars['entity']->owner_guid, 'limit' => $num, 'offset' => 0));
-
-if($shares){
-
- foreach($shares as $s){
-
- //get the owner
- $owner = $s->getOwnerEntity();
-
- //get the time
- $friendlytime = elgg_view_friendly_time($s->time_created);
-
- //get the user icon
- $icon = elgg_view(
- "profile/icon", array(
- 'entity' => $owner,
- 'size' => 'tiny',
- )
- );
-
- //get the bookmark title
- $info = "<p class=\"shares_title\"><a href=\"{$s->getURL()}\">{$s->title}</a></p>";
-
- //get the user details
- $info .= "<p class=\"shares_timestamp\"><small><a href=\"{$owner->getURL()}\">{$owner->name}</a> {$friendlytime}</small></p>";
-
- //get the bookmark description
- if($s->description)
- $info .= "<a href=\"javascript:void(0);\" class=\"share_more_info\">".elgg_echo('bookmarks:more')."</a><br /><div class=\"share_desc\"><p>{$s->description}</p></div>";
-
- //display
- echo "<div class=\"shares_widget_wrapper\">";
- echo "<div class=\"shares_widget_icon\">" . $icon . "</div>";
- echo "<div class=\"shares_widget_content\">" . $info . "</div>";
- echo "</div>";
-
- }
-
- $user_inbox = $vars['url'] . "pg/bookmarks/owner/" . page_owner_entity()->username;
- echo "<div class=\"widget_more_wrapper\"><a href=\"{$user_inbox}\">".elgg_echo('bookmarks:morebookmarks')."</a></div>";
-
-}
-
-
-?> \ No newline at end of file
diff --git a/mod/bookmarks/views/rss/object/bookmarks.php b/mod/bookmarks/views/rss/object/bookmarks.php
index 8e88485f1..1abda4710 100644
--- a/mod/bookmarks/views/rss/object/bookmarks.php
+++ b/mod/bookmarks/views/rss/object/bookmarks.php
@@ -1,23 +1,37 @@
<?php
/**
- * Elgg bookmark rss view
- *
+ * Bookmark RSS object view
+ *
* @package ElggBookmarks
*/
$title = $vars['entity']->title;
if (empty($title)) {
- $title = substr($vars['entity']->description,0,32);
- if (strlen($vars['entity']->description) > 32)
- $title .= " ...";
+ $title = strip_tags($vars['entity']->description);
+ $title = elgg_get_excerpt($title, 32);
}
-?>
+$permalink = htmlspecialchars($vars['entity']->getURL(), ENT_NOQUOTES, 'UTF-8');
+$pubdate = date('r', $vars['entity']->getTimeCreated());
+$url_text = elgg_echo('bookmarks:address');
+$link = elgg_view('output/url', array('href' => $vars['entity']->address));
+$description = $vars['entity']->description . "<p>$url_text: $link</p>";
+
+$creator = elgg_view('page/components/creator', $vars);
+$georss = elgg_view('page/components/georss', $vars);
+$extension = elgg_view('extensions/item');
+
+$item = <<<__HTML
<item>
- <guid isPermaLink='true'><?php echo $vars['entity']->getURL(); ?></guid>
- <pubDate><?php echo date("r",$vars['entity']->time_created) ?></pubDate>
- <link><?php echo $vars['entity']->address; ?></link>
- <title><![CDATA[<?php echo $title; ?>]]></title>
- <description><![CDATA[<?php echo (autop($vars['entity']->description)); ?>]]></description>
+ <guid isPermaLink="true">$permalink</guid>
+ <pubDate>$pubdate</pubDate>
+ <link>$permalink</link>
+ <title><![CDATA[$title]]></title>
+ <description><![CDATA[$description]]></description>
+ $creator$georss$extension
</item>
+
+__HTML;
+
+echo $item;