diff options
Diffstat (limited to 'mod/groups')
| -rw-r--r-- | mod/groups/actions/discussion/reply/delete.php | 26 | ||||
| -rw-r--r-- | mod/groups/actions/discussion/reply/save.php | 45 | ||||
| -rw-r--r-- | mod/groups/languages/en.php | 9 | ||||
| -rw-r--r-- | mod/groups/lib/discussion.php | 16 | ||||
| -rw-r--r-- | mod/groups/lib/groups.php | 1 | ||||
| -rw-r--r-- | mod/groups/start.php | 4 | ||||
| -rw-r--r-- | mod/groups/views/default/annotation/group_topic_post.php | 8 | ||||
| -rw-r--r-- | mod/groups/views/default/discussion/replies.php | 28 | ||||
| -rw-r--r-- | mod/groups/views/default/forms/discussion/reply/save.php | 22 | ||||
| -rw-r--r-- | mod/groups/views/default/groups/css.php | 2 | ||||
| -rw-r--r-- | mod/groups/views/default/object/groupforumtopic.php | 30 | ||||
| -rw-r--r-- | mod/groups/views/default/river/annotation/group_topic_post/reply.php | 28 | 
12 files changed, 197 insertions, 22 deletions
| diff --git a/mod/groups/actions/discussion/reply/delete.php b/mod/groups/actions/discussion/reply/delete.php new file mode 100644 index 000000000..88c6b79d6 --- /dev/null +++ b/mod/groups/actions/discussion/reply/delete.php @@ -0,0 +1,26 @@ +<?php +/** + * Delete discussion reply + */ + +$id = (int) get_input('annotation_id'); + +$reply = elgg_get_annotation_from_id($id); +if (!$reply || $reply->name != 'group_topic_post') { +	register_error(elgg_echo('discussion:reply:error:notdeleted')); +	forward(REFERER); +} + +if (!$reply->canEdit()) { +	register_error(elgg_echo('discussion:error:permissions')); +	forward(REFERER); +} + +$result = $reply->delete(); +if ($result) { +	system_message(elgg_echo('discussion:reply:deleted')); +} else { +	register_error(elgg_echo('discussion:reply:error:notdeleted')); +} + +forward(REFERER); diff --git a/mod/groups/actions/discussion/reply/save.php b/mod/groups/actions/discussion/reply/save.php new file mode 100644 index 000000000..e535856da --- /dev/null +++ b/mod/groups/actions/discussion/reply/save.php @@ -0,0 +1,45 @@ +<?php +/** + * Post a reply to discussion topic + * + */ + +gatekeeper(); + +// Get input +$entity_guid = (int) get_input('entity_guid'); +$text = get_input('group_topic_post'); + +// reply cannot be empty +if (empty($text)) { +	register_error(elgg_echo('grouppost:nopost')); +	forward(REFERER); +} + +$topic = get_entity($entity_guid); +if (!$topic) { +	register_error(elgg_echo('grouppost:nopost')); +	forward(REFERER); +} + +$user = get_loggedin_user(); + +$group = $topic->getContainerEntity(); +if (!$group->isMember($user)) { +	register_error(elgg_echo('groups:notmember')); +	forward(REFERER); +} + + +// add the reply to the forum topic +$reply_id = $topic->annotate('group_topic_post', $text, $topic->access_id, $user->guid); +if ($reply_id == false) { +	system_message(elgg_echo('groupspost:failure')); +	forward(REFERER); +} + +add_to_river('river/annotation/group_topic_post/reply', 'reply', $user->guid, $topic->guid, "", 0, $reply_id); + +system_message(elgg_echo('groupspost:success')); + +forward(REFERER); diff --git a/mod/groups/languages/en.php b/mod/groups/languages/en.php index c16db859a..91f9f0cb6 100644 --- a/mod/groups/languages/en.php +++ b/mod/groups/languages/en.php @@ -118,6 +118,9 @@ $english = array(  	'discussion:error:permissions' => 'You do not have permissions to perform this action',  	'discussion:error:notdeleted' => 'Could not delete the discussion topic', +	'discussion:reply:deleted' => 'Discussion reply has been deleted.', +	'discussion:reply:error:notdeleted' => 'Could not delete the discussion reply', +  	'group:replies' => 'Replies',  	'groups:forum:created' => 'Created %s with %d comments',  	'groups:forum:created:single' => 'Created %s with %d reply', @@ -127,7 +130,7 @@ $english = array(  	'groups:latestdiscussion' => 'Latest discussion',  	'groups:newest' => 'Newest',  	'groups:popular' => 'Popular', -	'groupspost:success' => 'Your comment was succesfully posted', +	'groupspost:success' => 'Your reply was succesfully posted',  	'groups:alldiscussion' => 'Latest discussion',  	'groups:edittopic' => 'Edit topic',  	'groups:topicmessage' => 'Topic message', @@ -167,7 +170,7 @@ $english = array(  	'groups:usernotinvited' => 'User could not be invited.',  	'groups:useralreadyinvited' => 'User has already been invited',  	'groups:invite:subject' => "%s you have been invited to join %s!", -	'groups:updated' => "Last comment by %s %s", +	'groups:updated' => "Last reply by %s %s",  	'groups:started' => "Started by %s",  	'groups:joinrequest:remove:check' => 'Are you sure you want to remove this join request?',  	'groups:invite:remove:check' => 'Are you sure you want to remove this invite?', @@ -202,7 +205,7 @@ or click below to view the group's join requests:  	'groups:river:create' => 'created the group',  	'groups:river:join' => 'joined the group',  	'forumtopic:river:create' => 'added a new discussion topic', -	'river:commented:object:groupforumtopic' => 'the discussion topic', +	'groups:river:reply' => 'replied on the discussion topic',  	'groups:nowidgets' => 'No widgets have been defined for this group.', diff --git a/mod/groups/lib/discussion.php b/mod/groups/lib/discussion.php index 6c86ff83f..2a3de783b 100644 --- a/mod/groups/lib/discussion.php +++ b/mod/groups/lib/discussion.php @@ -14,7 +14,6 @@ function discussion_handle_all_page() {  	$content = elgg_list_entities(array(  		'type' => 'object',  		'subtype' => 'groupforumtopic', -		'annotation_name' => 'generic_comment',  		'order_by' => 'e.last_action desc',  		'limit' => 40,  		'full_view' => false, @@ -165,12 +164,21 @@ function discussion_handle_view_page($guid) {  	$content = elgg_view_entity($topic, true);  	if ($topic->status == 'closed') { -		$content .= elgg_view_comments($topic, false); +		$content .= elgg_view('discussion/replies', array( +			'entity' => $topic, +			'show_add_form' => false, +		));  		$content .= elgg_view('discussion/closed');  	} elseif ($group->isMember() || elgg_is_admin_logged_in()) { -		$content .= elgg_view_comments($topic); +		$content .= elgg_view('discussion/replies', array( +			'entity' => $topic, +			'show_add_form' => true, +		));  	} else { -		$content .= elgg_view_comments($topic, false); +		$content .= elgg_view('discussion/replies', array( +			'entity' => $topic, +			'show_add_form' => false, +		));  	}  	$params = array( diff --git a/mod/groups/lib/groups.php b/mod/groups/lib/groups.php index be9bbfe19..563ed3cff 100644 --- a/mod/groups/lib/groups.php +++ b/mod/groups/lib/groups.php @@ -27,7 +27,6 @@ function groups_handle_all_page() {  			$content = elgg_list_entities(array(  				'type' => 'object',  				'subtype' => 'groupforumtopic', -				'annotation_name' => 'generic_comment',  				'order_by' => 'e.last_action desc',  				'limit' => 40,  				'fullview' => false, diff --git a/mod/groups/start.php b/mod/groups/start.php index 61cb89090..26452ebca 100644 --- a/mod/groups/start.php +++ b/mod/groups/start.php @@ -83,6 +83,8 @@ function groups_init() {  	elgg_register_event_handler('leave', 'group', 'groups_user_leave_event_listener');  	elgg_register_event_handler('pagesetup', 'system', 'groups_submenus');  	elgg_register_event_handler('annotate', 'all', 'group_object_notifications'); + +	elgg_register_event_handler('upgrade', 'system', 'groups_run_upgrades');  }  /** @@ -481,6 +483,8 @@ function discussion_init() {  	$action_base = elgg_get_plugins_path() . 'groups/actions/discussion';  	elgg_register_action('discussion/save', "$action_base/save.php");  	elgg_register_action('discussion/delete', "$action_base/delete.php"); +	elgg_register_action('discussion/reply/save', "$action_base/reply/save.php"); +	elgg_register_action('discussion/reply/delete', "$action_base/reply/delete.php");  	// add link to owner block  	elgg_register_plugin_hook_handler('register', 'menu:owner_block', 'discussion_owner_block_menu'); diff --git a/mod/groups/views/default/annotation/group_topic_post.php b/mod/groups/views/default/annotation/group_topic_post.php new file mode 100644 index 000000000..d2303aba8 --- /dev/null +++ b/mod/groups/views/default/annotation/group_topic_post.php @@ -0,0 +1,8 @@ +<?php +/** + * Discussion reply + */ + +$vars['delete_action'] = 'action/discussion/reply/delete'; + +echo elgg_view('annotation/default', $vars); diff --git a/mod/groups/views/default/discussion/replies.php b/mod/groups/views/default/discussion/replies.php new file mode 100644 index 000000000..2bfb6f0cd --- /dev/null +++ b/mod/groups/views/default/discussion/replies.php @@ -0,0 +1,28 @@ +<?php +/** + * List replies with optional add form + * + * @uses $vars['entity']        ElggEntity + * @uses $vars['show_add_form'] Display add form or not + */ + +$show_add_form = elgg_extract('show_add_form', $vars, true); + +echo '<div id="group-replies" class="mtl">'; + +$options = array( +	'guid' => $vars['entity']->getGUID(), +	'annotation_name' => 'group_topic_post', +); +$html = elgg_list_annotations($options); +if ($html) { +	echo '<h3>' . elgg_echo('group:replies') . '</h3>'; +	echo $html; +} + +if ($show_add_form) { +	$form_vars = array('class' => 'mtm'); +	echo elgg_view_form('discussion/reply/save', $form_vars, $vars); +} + +echo '</div>'; diff --git a/mod/groups/views/default/forms/discussion/reply/save.php b/mod/groups/views/default/forms/discussion/reply/save.php new file mode 100644 index 000000000..6281e941c --- /dev/null +++ b/mod/groups/views/default/forms/discussion/reply/save.php @@ -0,0 +1,22 @@ +<?php +/** + * Discussion topic reply form bofy + * + * @uses $vars['entity'] + */ + + +if (isset($vars['entity']) && elgg_is_logged_in()) { +?> +	<div> +		<label><?php echo elgg_echo("reply"); ?></label> +		<?php echo elgg_view('input/longtext', array('name' => 'group_topic_post')); ?> +	</div> +<?php +	echo elgg_view('input/submit', array('value' => elgg_echo('reply'))); + +	echo elgg_view('input/hidden', array( +		'name' => 'entity_guid', +		'value' => $vars['entity']->getGUID() +	)); +} diff --git a/mod/groups/views/default/groups/css.php b/mod/groups/views/default/groups/css.php index 5276e2bfa..545f9c9b3 100644 --- a/mod/groups/views/default/groups/css.php +++ b/mod/groups/views/default/groups/css.php @@ -22,7 +22,7 @@  	font-size: 85%;  } -.groups-latest-comment { +.groups-latest-reply {  	float: right;  } diff --git a/mod/groups/views/default/object/groupforumtopic.php b/mod/groups/views/default/object/groupforumtopic.php index 8a1daece8..b5efa0e6c 100644 --- a/mod/groups/views/default/object/groupforumtopic.php +++ b/mod/groups/views/default/object/groupforumtopic.php @@ -26,18 +26,22 @@ $poster_text = elgg_echo('groups:started', array($poster->name));  $tags = elgg_view('output/tags', array('tags' => $topic->tags));  $date = elgg_view_friendly_time($topic->time_created); -$comments_link = ''; -$comments_text = ''; -$num_comments = $topic->countComments(); -if ($num_comments != 0) { -	$last_comment = $topic->getAnnotations("generic_comment", 1, 0, "desc"); -	$commenter = $last_comment[0]->getOwnerEntity(); -	$comment_time = elgg_view_friendly_time($last_comment[0]->time_created); -	$comments_text = elgg_echo('groups:updated', array($commenter->name, $comment_time)); +$replies_link = ''; +$replies_text = ''; +$num_replies = elgg_get_annotations(array( +	'annotation_name' => 'group_topic_post', +	'guid' => $topic->getGUID(), +	'count' => true, +)); +if ($num_replies != 0) { +	$last_reply = $topic->getAnnotations('group_topic_post', 1, 0, 'desc'); +	$poster = $last_reply[0]->getOwnerEntity(); +	$reply_time = elgg_view_friendly_time($last_reply[0]->time_created); +	$reply_text = elgg_echo('groups:updated', array($poster->name, $reply_time)); -	$comments_link = elgg_view('output/url', array( -		'href' => $topic->getURL() . '#topic-comments', -		'text' => elgg_echo("comments") . " ($num_comments)", +	$replies_link = elgg_view('output/url', array( +		'href' => $topic->getURL() . '#group-replies', +		'text' => elgg_echo('group:replies') . " ($num_replies)",  	));  } @@ -52,7 +56,7 @@ if (elgg_in_context('widgets')) {  }  if ($full) { -	$subtitle = "$poster_text $date $comments_link"; +	$subtitle = "$poster_text $date $replies_link";  	$params = array(  		'entity' => $topic, @@ -75,7 +79,7 @@ HTML;  } else {  	// brief view -	$subtitle = "$poster_text $date $comments_link <span class=\"groups-latest-comment\">$comments_text</span>"; +	$subtitle = "$poster_text $date $replies_link <span class=\"groups-latest-reply\">$reply_text</span>";  	$params = array(  		'entity' => $topic, diff --git a/mod/groups/views/default/river/annotation/group_topic_post/reply.php b/mod/groups/views/default/river/annotation/group_topic_post/reply.php new file mode 100644 index 000000000..f0b7d03b8 --- /dev/null +++ b/mod/groups/views/default/river/annotation/group_topic_post/reply.php @@ -0,0 +1,28 @@ +<?php +/** + * Reply river view + */ +$object = $vars['item']->getObjectEntity(); +$reply = $vars['item']->getAnnotation(); + +$url = $object->getURL(); +$title = $object->title; +$params = array( +	'href' => $object->getURL(), +	'text' => $title, +); +$object_link = elgg_view('output/url', $params); + +$type = $object->getType(); +$subtype = $object->getSubtype(); + +echo elgg_echo('groups:river:reply') . ' '; +echo $object_link; + +if ($reply) { +	$excerpt = elgg_get_excerpt($reply->value); +	echo '<div class="elgg-river-content">'; +	echo $excerpt; +	echo '</div>'; +} + | 
