aboutsummaryrefslogtreecommitdiff
path: root/mod/messageboard
diff options
context:
space:
mode:
Diffstat (limited to 'mod/messageboard')
-rw-r--r--mod/messageboard/actions/delete.php1
-rw-r--r--mod/messageboard/languages/en.php10
-rw-r--r--mod/messageboard/manifest.xml9
-rw-r--r--mod/messageboard/pages/messageboard/owner.php (renamed from mod/messageboard/pages/owner.php)7
-rw-r--r--mod/messageboard/start.php55
-rw-r--r--mod/messageboard/views/default/annotation/messageboard.php11
-rw-r--r--mod/messageboard/views/default/forms/messageboard/add.php13
-rw-r--r--mod/messageboard/views/default/messageboard/css.php89
-rw-r--r--mod/messageboard/views/default/messageboard/js.php27
-rw-r--r--mod/messageboard/views/default/messageboard/messageboard.php30
-rw-r--r--mod/messageboard/views/default/river/object/messageboard/create.php22
-rw-r--r--mod/messageboard/views/default/widgets/messageboard/content.php16
-rw-r--r--mod/messageboard/views/default/widgets/messageboard/edit.php36
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 c63804408..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('.delete-button 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>