diff options
Diffstat (limited to 'mod/messageboard')
| -rw-r--r-- | mod/messageboard/actions/delete.php | 1 | ||||
| -rw-r--r-- | mod/messageboard/languages/en.php | 10 | ||||
| -rw-r--r-- | mod/messageboard/manifest.xml | 9 | ||||
| -rw-r--r-- | mod/messageboard/pages/messageboard/owner.php (renamed from mod/messageboard/pages/owner.php) | 7 | ||||
| -rw-r--r-- | mod/messageboard/start.php | 55 | ||||
| -rw-r--r-- | mod/messageboard/views/default/annotation/messageboard.php | 11 | ||||
| -rw-r--r-- | mod/messageboard/views/default/forms/messageboard/add.php | 13 | ||||
| -rw-r--r-- | mod/messageboard/views/default/messageboard/css.php | 89 | ||||
| -rw-r--r-- | mod/messageboard/views/default/messageboard/js.php | 27 | ||||
| -rw-r--r-- | mod/messageboard/views/default/messageboard/messageboard.php | 30 | ||||
| -rw-r--r-- | mod/messageboard/views/default/river/object/messageboard/create.php | 22 | ||||
| -rw-r--r-- | mod/messageboard/views/default/widgets/messageboard/content.php | 16 | ||||
| -rw-r--r-- | mod/messageboard/views/default/widgets/messageboard/edit.php | 36 |
13 files changed, 113 insertions, 213 deletions
diff --git a/mod/messageboard/actions/delete.php b/mod/messageboard/actions/delete.php index a40329cb5..a1f62278c 100644 --- a/mod/messageboard/actions/delete.php +++ b/mod/messageboard/actions/delete.php @@ -9,7 +9,6 @@ $annotation_id = (int) get_input('annotation_id'); $message = elgg_get_annotation_from_id($annotation_id); if ($message && $message->canEdit() && $message->delete()) { - remove_from_river_by_annotation($annotation_id); system_message(elgg_echo("messageboard:deleted")); } else { system_message(elgg_echo("messageboard:notdeleted")); diff --git a/mod/messageboard/languages/en.php b/mod/messageboard/languages/en.php index 2ae6f3a49..9027eb650 100644 --- a/mod/messageboard/languages/en.php +++ b/mod/messageboard/languages/en.php @@ -25,14 +25,8 @@ $english = array( /** * Message board widget river - **/ - - 'messageboard:river:annotate' => "%s has had a new comment posted on their message board.", - 'messageboard:river:create' => "%s added the message board widget.", - 'messageboard:river:update' => "%s updated their message board widget.", - 'messageboard:river:added' => "%s posted on", - 'messageboard:river:messageboard' => "message board", - + */ + 'river:messageboard:user:default' => "%s posted on %s's message board", /** * Status messages diff --git a/mod/messageboard/manifest.xml b/mod/messageboard/manifest.xml index 3f9e95125..617813725 100644 --- a/mod/messageboard/manifest.xml +++ b/mod/messageboard/manifest.xml @@ -3,14 +3,15 @@ <name>Message Board</name> <author>Core developers</author> <version>1.8</version> + <category>bundled</category> + <category>widget</category> <description>This plugin allows users to put a message board on their profile for other users to post comments.</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> <activate_on_install>true</activate_on_install> - <admin_interface>simple</admin_interface> </plugin_manifest> diff --git a/mod/messageboard/pages/owner.php b/mod/messageboard/pages/messageboard/owner.php index 7a65ec68b..b3e9f45b0 100644 --- a/mod/messageboard/pages/owner.php +++ b/mod/messageboard/pages/messageboard/owner.php @@ -16,7 +16,7 @@ elgg_push_breadcrumb($page_owner->name, $page_owner->getURL()); $options = array( 'annotations_name' => 'messageboard', 'guid' => $page_owner_guid, - 'limit' => 10 + 'reverse_order_by' => true, ); if ($history_user) { @@ -24,9 +24,9 @@ if ($history_user) { $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"; + $mb_url = "messageboard/group/$page_owner->guid/all"; } else { - $mb_url = "pg/messageboard/owner/$page_owner->username"; + $mb_url = "messageboard/owner/$page_owner->username"; } } else { $title = elgg_echo('messageboard:owner', array($page_owner->name)); @@ -47,7 +47,6 @@ if (!$content) { $vars = array( 'filter' => false, - 'buttons' => false, 'content' => $content, 'title' => $title, 'reverse_order_by' => true diff --git a/mod/messageboard/start.php b/mod/messageboard/start.php index ecf5615b5..0c65edc4f 100644 --- a/mod/messageboard/start.php +++ b/mod/messageboard/start.php @@ -14,6 +14,9 @@ function messageboard_init() { // js elgg_extend_view('js/elgg', 'messageboard/js'); + // css + elgg_extend_view('css/elgg', 'messageboard/css'); + elgg_register_page_handler('messageboard', 'messageboard_page_handler'); // messageboard widget - only for profile for now @@ -23,6 +26,9 @@ function messageboard_init() { $action_path = dirname(__FILE__) . '/actions'; elgg_register_action("messageboard/add", "$action_path/add.php"); elgg_register_action("messageboard/delete", "$action_path/delete.php"); + + // delete annotations for posts + elgg_register_plugin_hook_handler('register', 'menu:annotation', 'messageboard_annotation_menu_setup'); } /** @@ -30,10 +36,10 @@ function messageboard_init() { * Profile (and eventually group) widgets handle their own. * * URLs take the form of - * User's messageboard: pg/messageboard/owner/<username> - * Y's history of posts on X's board: pg/messageboard/owner/<X>/history/<Y> - * New post: pg/messageboard/add/<guid> (container: user or group) - * Group messageboard: pg/messageboard/group/<guid>/owner + * User's messageboard: messageboard/owner/<username> + * Y's history of posts on X's board: messageboard/owner/<X>/history/<Y> + * New post: messageboard/add/<guid> (container: user or group) + * Group messageboard: messageboard/group/<guid>/all (not implemented) * * @param array $page Array of page elements * @return bool @@ -44,11 +50,11 @@ function messageboard_page_handler($page) { // 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]}"; + $url = "messageboard/owner/{$page[0]}"; forward($url); } - $pages = dirname(__FILE__) . '/pages'; + $pages = dirname(__FILE__) . '/pages/messageboard'; switch ($page[0]) { case 'owner': @@ -78,11 +84,10 @@ function messageboard_page_handler($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"); + default: + return false; + } return true; } @@ -116,7 +121,7 @@ function messageboard_add($poster, $owner, $message, $access_id = ACCESS_PUBLIC) $body = elgg_echo('messageboard:email:body', array( $poster->name, $message, - elgg_get_site_url() . "pg/messageboard/" . $owner->username, + elgg_get_site_url() . "messageboard/" . $owner->username, $poster->name, $poster->getURL() )); @@ -127,4 +132,32 @@ function messageboard_add($poster, $owner, $message, $access_id = ACCESS_PUBLIC) return $result; } + +/** + * Add edit and delete links for forum replies + */ +function messageboard_annotation_menu_setup($hook, $type, $return, $params) { + $annotation = $params['annotation']; + if ($annotation->name != 'messageboard') { + return $return; + } + + if ($annotation->canEdit()) { + $url = elgg_http_add_url_query_elements('action/messageboard/delete', array( + 'annotation_id' => $annotation->id, + )); + + $options = array( + 'name' => 'delete', + 'href' => $url, + 'text' => "<span class=\"elgg-icon elgg-icon-delete\"></span>", + 'confirm' => elgg_echo('deleteconfirm'), + 'encode_text' => false + ); + $return[] = ElggMenuItem::factory($options); + } + + return $return; +} + 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 deleted file mode 100644 index fa4b43ff3..000000000 --- a/mod/messageboard/views/default/annotation/messageboard.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php -/** - * Message board post - * - * @uses $vars['annotation'] ElggAnnotation object - * @uses $vars['full'] Display fill view or brief view - */ - -$vars['delete_action'] = 'action/messageboard/delete'; - -echo elgg_view('annotation/generic_comment', $vars);
\ No newline at end of file diff --git a/mod/messageboard/views/default/forms/messageboard/add.php b/mod/messageboard/views/default/forms/messageboard/add.php index 4698abf28..b219fd800 100644 --- a/mod/messageboard/views/default/forms/messageboard/add.php +++ b/mod/messageboard/views/default/forms/messageboard/add.php @@ -1,21 +1,20 @@ <?php /** - * Elgg Message board add form + * Elgg Message board add form body * * @package ElggMessageBoard */ -$textarea = elgg_view('input/plaintext', array( - 'name' => 'message_content' +echo elgg_view('input/plaintext', array( + 'name' => 'message_content', + 'class' => 'messageboard-input mbs' )); -$owner_input = elgg_view('input/hidden', array( +echo elgg_view('input/hidden', array( 'name' => 'owner_guid', 'value' => elgg_get_page_owner_guid() )); -$submit = elgg_view('input/submit', array( +echo elgg_view('input/submit', array( 'value' => elgg_echo('post') )); - -echo $textarea . $owner_input . $submit;
\ No newline at end of file diff --git a/mod/messageboard/views/default/messageboard/css.php b/mod/messageboard/views/default/messageboard/css.php index b7782e8e3..b3cfab957 100644 --- a/mod/messageboard/views/default/messageboard/css.php +++ b/mod/messageboard/views/default/messageboard/css.php @@ -1,87 +1,10 @@ <?php - - /** - * Elgg Messageboard CSS extender - * - * @package ElggMessageBoard - */ - +/** + * Elgg Messageboard CSS view + * + */ ?> -/* input msg area */ -#mb_input_wrapper { - margin:0 10px 5px 10px; - padding:5px; - background: white; - -webkit-border-radius: 8px; - -moz-border-radius: 8px; -} - -#mb_input_wrapper .input_textarea { - width:675px; -} -.collapsable_box_content #mb_input_wrapper .input_textarea { - width:259px; -} -.message_item_timestamp { - font-size:90%; - padding:10px 0 0 0; -} -p.message_item_timestamp { - margin-bottom: 10px; -} -/* wraps each message */ -.messageboard { - margin:0 10px 5px 10px; - padding:0; - background: white; - -webkit-border-radius: 8px; - -moz-border-radius: 8px; -} -.messageboard .message_sender { - float:left; - margin: 5px 10px 0 5px; +.messageboard-input { + height: 100px; } -/* IE6 */ -* html .messageboard { width: 280px; } -* html #two_column_left_sidebar_maincontent .messageboard { width: 667px; } -* html .messageboard .message_sender { margin: 5px 10px 0 2px; } -* html #mb_input_wrapper .input_textarea { width:645px; } -/* IE7 */ -*:first-child+html .messageboard { width: 280px; } -*:first-child+html #two_column_left_sidebar_maincontent .messageboard { width: 698px; } -*:first-child+html .messageboard .message_sender { margin: 5px 10px 0 2px; } - -.messageboard .message p { - line-height: 1.2em; - background:#dedede; - margin:0 6px 4px 6px; - padding:4px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - overflow-y:hidden; - overflow-x:auto; - color:#333333; -} - -.message_buttons { - padding:0 0 3px 4px; - margin:0; - font-size: 90%; - color:#666666; -} - -.messageboard .delete_message a { - display:block; - float:right; - cursor: pointer; - width:14px; - height:14px; - margin:0 3px 3px 0; - background: url("<?php echo elgg_get_site_url(); ?>_graphics/icon_customise_remove.png") no-repeat 0 0; - text-indent: -9000px; -} -.messageboard .delete_message a:hover { - background-position: 0 -16px; -} - diff --git a/mod/messageboard/views/default/messageboard/js.php b/mod/messageboard/views/default/messageboard/js.php index 22aad10b7..79472069d 100644 --- a/mod/messageboard/views/default/messageboard/js.php +++ b/mod/messageboard/views/default/messageboard/js.php @@ -1,16 +1,19 @@ +//<script> elgg.provide('elgg.messageboard'); elgg.messageboard.init = function() { var form = $('form[name=elgg-messageboard]'); form.find('input[type=submit]').live('click', elgg.messageboard.submit); - // can't undelete because of init load order - form.parent().find('a.elgg-requires-confirmation').removeClass('elgg-requires-confirmation'); - // delegate() instead of live() because live() has to be at the top level of chains...can't use parent(). + // remove the default binding for confirmation since we're doing extra stuff. + // @todo remove if we add a hook to the requires confirmation callback + form.parent().find('a.elgg-requires-confirmation') + .click(elgg.messageboard.deletePost) - // delete is a little-known operator in JS. IE loses its mind if you name a method that. - form.parent().delegate('.elgg-button-delete a', 'click', elgg.messageboard.deletePost); -} + // double whammy for in case the load order changes. + .unbind('click', elgg.ui.requiresConfirmation) + .removeClass('elgg-requires-confirmation'); +}; elgg.messageboard.submit = function(e) { var form = $(this).parents('form'); @@ -20,7 +23,7 @@ elgg.messageboard.submit = function(e) { data: data, success: function(json) { // the action always returns the full ul and li wrapped annotation. - var ul = form.next('ul.elgg-annotation-list'); + var ul = form.next('ul.elgg-list-annotation'); if (ul.length < 1) { form.parent().append(json.output); @@ -32,7 +35,7 @@ elgg.messageboard.submit = function(e) { }); e.preventDefault(); -} +}; elgg.messageboard.deletePost = function(e) { var link = $(this); @@ -41,13 +44,13 @@ elgg.messageboard.deletePost = function(e) { if (confirm(confirmText)) { elgg.action($(this).attr('href'), { success: function() { - $(link).closest('li').remove(); + var item = $(link).closest('.elgg-item'); + item.remove(); } }); } e.preventDefault(); -} +}; - -elgg.register_event_handler('init', 'system', elgg.messageboard.init);
\ No newline at end of file +elgg.register_hook_handler('init', 'system', elgg.messageboard.init); diff --git a/mod/messageboard/views/default/messageboard/messageboard.php b/mod/messageboard/views/default/messageboard/messageboard.php deleted file mode 100644 index f78451c84..000000000 --- a/mod/messageboard/views/default/messageboard/messageboard.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php - -/** - * Elgg Message board display page - * - * @package ElggMessageBoard - */ - - -// If there is any content to view, view it -if (is_array($vars['annotation']) && sizeof($vars['annotation']) > 0) { - - //start the div which will wrap all the message board contents - echo "<div id=\"messageboard_wrapper\">"; - - //loop through all annotations and display - foreach($vars['annotation'] as $content) { - - echo elgg_view("messageboard/messageboard_content", array('annotation' => $content)); - - } - - //close the wrapper div - echo "</div>"; - -} else { - - echo "<div class='contentWrapper'>" . elgg_echo("messageboard:none") . "</div>"; - -} diff --git a/mod/messageboard/views/default/river/object/messageboard/create.php b/mod/messageboard/views/default/river/object/messageboard/create.php index 3bdf595d1..ac10a55c1 100644 --- a/mod/messageboard/views/default/river/object/messageboard/create.php +++ b/mod/messageboard/views/default/river/object/messageboard/create.php @@ -1,10 +1,12 @@ -<?php - -$performed_by = get_entity($vars['item']->subject_guid); -$performed_on = get_entity($vars['item']->object_guid); - -$url = "<a href=\"{$performed_by->getURL()}\">{$performed_by->name}</a>"; -$string = elgg_echo("messageboard:river:added", array($url)) . " <a href=\"{$performed_on->getURL()}\">" . $performed_on->name . "'s</a> " . elgg_echo("messageboard:river:messageboard"); - - -echo $string; +<?php
+/**
+ * Messageboard river view
+ */
+
+$messageboard = $vars['item']->getAnnotation();
+$excerpt = elgg_get_excerpt($messageboard->value);
+
+echo elgg_view('river/elements/layout', array(
+ 'item' => $vars['item'],
+ 'message' => $excerpt,
+));
diff --git a/mod/messageboard/views/default/widgets/messageboard/content.php b/mod/messageboard/views/default/widgets/messageboard/content.php index 7ec3e5d4e..35954e7a3 100644 --- a/mod/messageboard/views/default/widgets/messageboard/content.php +++ b/mod/messageboard/views/default/widgets/messageboard/content.php @@ -2,16 +2,11 @@ /** * Elgg messageboard widget view * - * - * @package ElggMessageBoard */ $owner = elgg_get_page_owner_entity(); -$num_display = 5; -if (isset($vars['entity']->num_display)) { - $num_display = $vars['entity']->num_display; -} +$num_display = $vars['entity']->num_display; if (elgg_is_logged_in()) { echo elgg_view_form('messageboard/add', array('name' => 'elgg-messageboard')); @@ -22,18 +17,19 @@ $options = array( 'guid' => $owner->getGUID(), 'limit' => $num_display, 'pagination' => false, - 'reverse_order_by' => true + 'reverse_order_by' => true, ); echo elgg_list_annotations($options); if ($owner instanceof ElggGroup) { - $url = "pg/messageboard/group/$owner->guid/owner"; + $url = "messageboard/group/$owner->guid/all"; } else { - $url = "pg/messageboard/owner/$owner->username"; + $url = "messageboard/owner/$owner->username"; } echo elgg_view('output/url', array( 'href' => $url, - 'text' => elgg_echo('messageboard:viewall') + 'text' => elgg_echo('messageboard:viewall'), + 'is_trusted' => true, ));
\ 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 2157da6c4..74848f832 100644 --- a/mod/messageboard/views/default/widgets/messageboard/edit.php +++ b/mod/messageboard/views/default/widgets/messageboard/edit.php @@ -1,30 +1,22 @@ <?php /** - * Elgg message board widget edit view - * - * @package ElggMessageBoard + * Messageboard widget edit view */ -$num_display = 5; - -if (isset($vars['entity']->num_display)) { - $num_display = $vars['entity']->num_display; +// set default value +if (!isset($vars['entity']->num_display)) { + $vars['entity']->num_display = 5; } -?> -<p> - <?php echo elgg_echo("messageboard:num_display"); ?>: - <select name="params[num_display]"> -<?php -$options = array(1,2,3,4,5,6,7,8,9,10); -foreach ($options as $option) { - $selected = ''; - if ($num_display == $option) { - $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='{$option}' $selected >{$option}</option>\n"; -} ?> - </select> -</p>
\ No newline at end of file +<div> + <?php echo elgg_echo('messageboard:num_display'); ?>: + <?php echo $dropdown; ?> +</div> |
