From 02a52af62e1579ad174b1160071b82ec11ee31e3 Mon Sep 17 00:00:00 2001 From: brettp Date: Sat, 19 Feb 2011 19:31:34 +0000 Subject: Refs #2916. More cleanup of the messageboard widget. git-svn-id: http://code.elgg.org/elgg/trunk@8344 36083f99-b078-4883-b0ff-0f9b5a30f544 --- mod/messageboard/actions/add.php | 21 ++++-- mod/messageboard/actions/delete.php | 29 ++------ mod/messageboard/ajax_endpoint/load.php | 42 ------------ mod/messageboard/history.php | 41 ----------- mod/messageboard/index.php | 34 ---------- mod/messageboard/languages/en.php | 5 +- mod/messageboard/manifest.xml | 2 +- mod/messageboard/pages/owner.php | 58 ++++++++++++++++ mod/messageboard/start.php | 79 ++++++++++++++++------ .../views/default/annotation/messageboard.php | 11 +++ mod/messageboard/views/default/messageboard/js.php | 31 ++++++++- .../default/messageboard/messageboard_content.php | 61 ----------------- .../views/default/widgets/messageboard/content.php | 28 ++++++-- .../views/default/widgets/messageboard/edit.php | 4 +- 14 files changed, 206 insertions(+), 240 deletions(-) delete mode 100644 mod/messageboard/ajax_endpoint/load.php delete mode 100644 mod/messageboard/history.php delete mode 100644 mod/messageboard/index.php create mode 100644 mod/messageboard/pages/owner.php create mode 100644 mod/messageboard/views/default/annotation/messageboard.php delete mode 100644 mod/messageboard/views/default/messageboard/messageboard_content.php (limited to 'mod/messageboard') diff --git a/mod/messageboard/actions/add.php b/mod/messageboard/actions/add.php index 5a34904d7..55bc5775a 100644 --- a/mod/messageboard/actions/add.php +++ b/mod/messageboard/actions/add.php @@ -10,15 +10,28 @@ $owner_guid = get_input("owner_guid"); $owner = get_entity($owner_guid); if ($owner && !empty($message_content)) { - if (messageboard_add(elgg_get_logged_in_user_entity(), $owner, $message_content, $owner->access_id)) { + $result = messageboard_add(elgg_get_logged_in_user_entity(), $owner, $message_content, $owner->access_id); + + if ($result) { system_message(elgg_echo("messageboard:posted")); // push the newest content out if using ajax $is_ajax = array_key_exists('HTTP_X_REQUESTED_WITH', $_SERVER) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'; if ($is_ajax) { - $contents = $owner->getAnnotations('messageboard', 1, 0, 'desc'); - $post = elgg_view("messageboard/messageboard_content", array('annotation' => $contents[0])); - echo json_encode(array('post' => $post)); + // always return the entity with the full ul and li + // this is parsed out as needed by js. + // if this is the only post we need to return the entire ul + $options = array( + 'annotations_name' => 'messageboard', + 'guid' => $owner->getGUID(), + 'limit' => $num_display, + 'pagination' => false, + 'reverse_order_by' => true, + 'limit' => 1 + ); + + $output = elgg_list_annotations($options); + echo json_encode(array('post' => $output)); } } else { diff --git a/mod/messageboard/actions/delete.php b/mod/messageboard/actions/delete.php index 1cc20f285..a40329cb5 100644 --- a/mod/messageboard/actions/delete.php +++ b/mod/messageboard/actions/delete.php @@ -1,37 +1,18 @@ entity_guid); - - //check to make sure the current user can actually edit the message board - if ($message->canEdit()) { - //delete the comment - $message->delete(); - // delete river entry - remove_from_river_by_annotation($annotation_id); - //display message - system_message(elgg_echo("messageboard:deleted")); - //generate the url to forward to - $url = "pg/messageboard/" . $entity->username; - //forward the user back to their message board - forward($url); - } - +if ($message && $message->canEdit() && $message->delete()) { + remove_from_river_by_annotation($annotation_id); + system_message(elgg_echo("messageboard:deleted")); } else { - $url = ""; system_message(elgg_echo("messageboard:notdeleted")); } -forward($url); +forward(REFERER); diff --git a/mod/messageboard/ajax_endpoint/load.php b/mod/messageboard/ajax_endpoint/load.php deleted file mode 100644 index 4509c30ef..000000000 --- a/mod/messageboard/ajax_endpoint/load.php +++ /dev/null @@ -1,42 +0,0 @@ -access_id)) { - echo elgg_echo("messageboard:failure"); - } - -} else { - echo elgg_echo('messageboard:somethingwentwrong'); -} - - -//step two - grab the latest messageboard contents, this will include the message above, unless an issue -//has occurred. -$contents = $user->getAnnotations('messageboard', $numToDisplay, 0, 'desc'); - -//step three - display the latest results -if ($contents) { - foreach ($contents as $content) { - echo elgg_view("messageboard/messageboard_content", array('annotation' => $content)); - } -} diff --git a/mod/messageboard/history.php b/mod/messageboard/history.php deleted file mode 100644 index 2275ab9da..000000000 --- a/mod/messageboard/history.php +++ /dev/null @@ -1,41 +0,0 @@ - $users_array, - 'type' => 'user', - 'annotation_name' => 'messageboard', - 'owner_guids' => $users_array, - 'limit' => 10, - 'offset' => 0, - 'reverse_order_by' => true -); - -$contents = elgg_get_annotations($options); - -// Get the content to display -$area2 = elgg_view_title(elgg_echo('messageboard:history:title')); -$area2 .= elgg_view("messageboard/messageboard", array('annotation' => $contents)); - -//select the correct canvas area -$body = elgg_view_layout("two_column_left_sidebar", '', $area2); - -// Display page -echo elgg_view_page(elgg_echo('messageboard:history:title'),$body); diff --git a/mod/messageboard/index.php b/mod/messageboard/index.php deleted file mode 100644 index 102959e24..000000000 --- a/mod/messageboard/index.php +++ /dev/null @@ -1,34 +0,0 @@ -getAnnotations('messageboard', 50, 0, 'desc'); - -// Get the content to display -$area2 = elgg_view_title(elgg_echo('messageboard:board')); - -// only display the add form and board to logged in users -if (elgg_is_logged_in()) { - $area2 .= elgg_view("messageboard/forms/add"); - $area2 .= elgg_view("messageboard/messageboard", array('annotation' => $contents)); -} - - -//select the correct canvas area -$body = elgg_view_layout("two_column_left_sidebar", '', $area2); - -// Display page -echo elgg_view_page(elgg_echo('messageboard:user', array($entity->name)), $body); - diff --git a/mod/messageboard/languages/en.php b/mod/messageboard/languages/en.php index 537177014..2ae6f3a49 100644 --- a/mod/messageboard/languages/en.php +++ b/mod/messageboard/languages/en.php @@ -20,6 +20,9 @@ $english = array( 'messageboard:replyon' => 'reply on', 'messageboard:history' => "history", + 'messageboard:owner' => '%s\'s message board', + 'messageboard:owner_history' => '%s\'s posts on %s\'s message board', + /** * Message board widget river **/ @@ -45,7 +48,7 @@ $english = array( 'messageboard:email:subject' => 'You have a new message board comment!', 'messageboard:email:body' => "You have a new message board comment from %s. It reads: - + %s diff --git a/mod/messageboard/manifest.xml b/mod/messageboard/manifest.xml index fa8774cf5..3f9e95125 100644 --- a/mod/messageboard/manifest.xml +++ b/mod/messageboard/manifest.xml @@ -2,7 +2,7 @@ Message Board Core developers - 1.7 + 1.8 This plugin allows users to put a message board on their profile for other users to post comments. http://www.elgg.org/ See COPYRIGHT.txt diff --git a/mod/messageboard/pages/owner.php b/mod/messageboard/pages/owner.php new file mode 100644 index 000000000..7a65ec68b --- /dev/null +++ b/mod/messageboard/pages/owner.php @@ -0,0 +1,58 @@ +name, $page_owner->getURL()); + +$options = array( + 'annotations_name' => 'messageboard', + 'guid' => $page_owner_guid, + 'limit' => 10 +); + +if ($history_user) { + $options['annotations_owner_guid'] = $history_user->getGUID(); + $title = elgg_echo('messageboard:owner_history', array($history_user->name, $page_owner->name)); + + if ($page_owner instanceof ElggGroup) { + $mb_url = "pg/messageboard/group/$page_owner->guid/owner"; + } else { + $mb_url = "pg/messageboard/owner/$page_owner->username"; + } +} else { + $title = elgg_echo('messageboard:owner', array($page_owner->name)); + $mb_url = ''; +} + +elgg_push_breadcrumb(elgg_echo('messageboard:board'), $mb_url); + +if ($history_user) { + elgg_push_breadcrumb($history_user->name); +} + +$content = elgg_list_annotations($options); + +if (!$content) { + $content = elgg_echo('messageboard:none'); +} + +$vars = array( + 'filter' => false, + 'buttons' => false, + 'content' => $content, + 'title' => $title, + 'reverse_order_by' => true +); + +$body = elgg_view_layout('content', $vars); + +echo elgg_view_page($title, $body); \ No newline at end of file diff --git a/mod/messageboard/start.php b/mod/messageboard/start.php index a4792d322..ecf5615b5 100644 --- a/mod/messageboard/start.php +++ b/mod/messageboard/start.php @@ -1,48 +1,89 @@ + * Y's history of posts on X's board: pg/messageboard/owner//history/ + * New post: pg/messageboard/add/ (container: user or group) + * Group messageboard: pg/messageboard/group//owner * - * @param array $page Array of page elements, forwarded by the page handling mechanism + * @param array $page Array of page elements + * @return bool */ function messageboard_page_handler($page) { + $new_section_one = array('owner', 'add', 'group'); + + // if the first part is a username, forward to new format + if (isset($page[0]) && !in_array($page[0], $new_section_one) && get_user_by_username($page[0])) { + register_error(elgg_echo("changebookmark")); + $url = "pg/messageboard/owner/{$page[0]}"; + forward($url); + } - // The username should be the first array entry - if (isset($page[0])) { - set_input('username', $page[0]); + $pages = dirname(__FILE__) . '/pages'; + + switch ($page[0]) { + case 'owner': + //@todo if they have the widget disabled, don't allow this. + $owner_name = elgg_extract(1, $page); + $owner = get_user_by_username($owner_name); + set_input('page_owner_guid', $owner->guid); + $history = elgg_extract(2, $page); + $username = elgg_extract(3, $page); + + if ($history && $username) { + set_input('history_username', $username); + } + + include "$pages/owner.php"; + break; + + case 'add': + $container_guid = elgg_extract(1, $page); + set_input('container_guid', $container_guid); + include "$pages/add.php"; + break; + + case 'group': + group_gatekeeper(); + $owner_guid = elgg_extract(1, $page); + set_input('page_owner_guid', $owner_guid); + include "$pages/owner.php"; + break; } // Include the standard messageboard index include(elgg_get_plugins_path() . "messageboard/index.php"); + + return true; } /** @@ -55,10 +96,10 @@ function messageboard_page_handler($page) { * @return bool */ function messageboard_add($poster, $owner, $message, $access_id = ACCESS_PUBLIC) { - $result = $owner->annotate('messageboard', $message, $access_id, $poster->guid); + if (!$result) { - return FALSE; + return false; } add_to_river('river/object/messageboard/create', @@ -83,9 +124,7 @@ function messageboard_add($poster, $owner, $message, $access_id = ACCESS_PUBLIC) notify_user($owner->guid, $poster->guid, $subject, $body); } - return TRUE; + return $result; } - -// Register initialisation callback -elgg_register_event_handler('init', 'system', 'messageboard_init'); +elgg_register_event_handler('init', 'system', 'messageboard_init'); \ No newline at end of file diff --git a/mod/messageboard/views/default/annotation/messageboard.php b/mod/messageboard/views/default/annotation/messageboard.php new file mode 100644 index 000000000..fa4b43ff3 --- /dev/null +++ b/mod/messageboard/views/default/annotation/messageboard.php @@ -0,0 +1,11 @@ + - -
- - -
- get_entity($vars['annotation']->owner_guid), 'size' => 'tiny')); - ?> -
- - -

- owner_guid)->name . " " . elgg_view_friendly_time($vars['annotation']->time_created); ?> -

- - -
parse_urls($vars['annotation']->value))); ?>
-
- - canEdit()) { - - - echo "
" . elgg_view("output/confirmlink",array( - 'href' => "action/messageboard/delete?annotation_id=" . $vars['annotation']->id, - 'text' => elgg_echo('delete'), - 'confirm' => elgg_echo('deleteconfirm'), - )) . "
"; - - } //end of can edit if statement - ?> - owner_guid != elgg_get_logged_in_user_guid()) { - - //get the message owner - $msg_owner = get_entity($vars['annotation']->owner_guid); - //create the url to their messageboard - $user_mb = "pg/messageboard/" . $msg_owner->username; - - echo "".elgg_echo('messageboard:replyon')." " . $msg_owner->name . "'s " . elgg_echo('messageboard:messageboard') . " | "; - - echo "" . elgg_echo('messageboard:history') . ""; - } - ?> - -
-
-
diff --git a/mod/messageboard/views/default/widgets/messageboard/content.php b/mod/messageboard/views/default/widgets/messageboard/content.php index 5f0cc8676..7ec3e5d4e 100644 --- a/mod/messageboard/views/default/widgets/messageboard/content.php +++ b/mod/messageboard/views/default/widgets/messageboard/content.php @@ -6,7 +6,7 @@ * @package ElggMessageBoard */ -$user = elgg_get_page_owner_entity(); +$owner = elgg_get_page_owner_entity(); $num_display = 5; if (isset($vars['entity']->num_display)) { @@ -14,12 +14,26 @@ if (isset($vars['entity']->num_display)) { } if (elgg_is_logged_in()) { - echo elgg_view_form('messageboard/add', array('class' => 'elgg-messageboard')); + echo elgg_view_form('messageboard/add', array('name' => 'elgg-messageboard')); } -//this for the first time the page loads, grab the latest messages. -$contents = $user->getAnnotations('messageboard', $num_display, 0, 'desc'); +$options = array( + 'annotations_name' => 'messageboard', + 'guid' => $owner->getGUID(), + 'limit' => $num_display, + 'pagination' => false, + 'reverse_order_by' => true +); -if ($contents) { - echo elgg_view('messageboard/messageboard', array('annotation' => $contents)); -} \ No newline at end of file +echo elgg_list_annotations($options); + +if ($owner instanceof ElggGroup) { + $url = "pg/messageboard/group/$owner->guid/owner"; +} else { + $url = "pg/messageboard/owner/$owner->username"; +} + +echo elgg_view('output/url', array( + 'href' => $url, + 'text' => elgg_echo('messageboard:viewall') +)); \ No newline at end of file diff --git a/mod/messageboard/views/default/widgets/messageboard/edit.php b/mod/messageboard/views/default/widgets/messageboard/edit.php index 470d49060..2157da6c4 100644 --- a/mod/messageboard/views/default/widgets/messageboard/edit.php +++ b/mod/messageboard/views/default/widgets/messageboard/edit.php @@ -1,18 +1,16 @@ num_display)) { $num_display = $vars['entity']->num_display; } - ?>

: -- cgit v1.2.3