diff options
20 files changed, 455 insertions, 544 deletions
diff --git a/mod/groups/actions/discussion/delete.php b/mod/groups/actions/discussion/delete.php new file mode 100644 index 000000000..c3de612d7 --- /dev/null +++ b/mod/groups/actions/discussion/delete.php @@ -0,0 +1,29 @@ +<?php +/** + * Delete topic action + * + */ + +$topic_guid = (int) get_input('guid'); + +$topic = get_entity($topic_guid); +if (!$topic || !$topic->getSubtype() == "groupforumtopic") { + register_error(elgg_echo('discussion:error:notdeleted')); + forward(REFERER); +} + +if (!$topic->canEdit()) { + register_error(elgg_echo('discussion:error:permissions')); + forward(REFERER); +} + +$container = $topic->getContainerEntity(); + +$result = $topic->delete(); +if ($result) { + system_message(elgg_echo('discussion:topic:deleted')); +} else { + register_error(elgg_echo('discussion:error:notdeleted')); +} + +forward("pg/discussion/owner/$container->guid"); diff --git a/mod/groups/actions/discussion/save.php b/mod/groups/actions/discussion/save.php new file mode 100644 index 000000000..8e8f08a50 --- /dev/null +++ b/mod/groups/actions/discussion/save.php @@ -0,0 +1,75 @@ +<?php +/** + * Topic save action + */ + +// Get variables +$title = get_input("title"); +$desc = get_input("description"); +$status = get_input("status"); +$access_id = (int) get_input("access_id"); +$container_guid = (int) get_input('container_guid'); +$guid = (int) get_input('topic_guid'); +$tags = get_input("tags"); + +elgg_make_sticky_form('topic'); + +// validation of inputs +if (!$title || !$desc) { + register_error(elgg_echo('discussion:error:missing')); + forward(REFERER); +} + +$container = get_entity($container_guid); +if (!$container || (!$container->isMember() && !$container->canEdit())) { + register_error(elgg_echo('discussion:error:permissions')); + forward(REFERER); +} + +// check whether this is a new topic or an edit +$new_topic = true; +if ($guid > 0) { + $new_topic = false; +} + +if ($new_topic) { + $topic = new ElggObject(); + $topic->subtype = 'groupforumtopic'; +} else { + // load original file object + $topic = new ElggObject($guid); + if (!$topic || !$topic->canEdit()) { + register_error(elgg_echo('discussion:topic:notfound')); + forward(REFERER); + } +} + +$topic->title = $title; +$topic->description = $desc; +$topic->status = $status; +$topic->access_id = $access_id; +$topic->container_guid = $container_guid; + +$tags = explode(",", $tags); +$topic->tags = $tags; + +$result = $topic->save(); + +if (!$result) { + register_error(elgg_echo('discussion:error:notsaved')); + forward(REFERER); +} + +// topic saved so clear sticky form +elgg_clear_sticky_form('topic'); + + +// handle results differently for new topics and topic edits +if ($new_topic) { + system_message(elgg_echo('discussion:topic:created')); + add_to_river('river/forum/topic/create', 'create', get_loggedin_userid(), $topic->guid); +} else { + system_message(elgg_echo('discussion:topic:updated')); +} + +forward($topic->getURL()); diff --git a/mod/groups/actions/forums/addtopic.php b/mod/groups/actions/forums/addtopic.php deleted file mode 100644 index 0b8a0f590..000000000 --- a/mod/groups/actions/forums/addtopic.php +++ /dev/null @@ -1,76 +0,0 @@ -<?php - - /** - * Elgg groups plugin add topic action. - * - * @package ElggGroups - */ - - // Make sure we're logged in; forward to the front page if not - if (!isloggedin()) forward(); - - // Check the user is a group member - $group_entity = get_entity(get_input('group_guid')); - if (!$group_entity->isMember(get_loggedin_user())) forward(); - - // Get input data - $title = strip_tags(get_input('topictitle')); - $message = get_input('topicmessage'); - $tags = get_input('topictags'); - $access = get_input('access_id'); - $group_guid = (int) get_input('group_guid'); - $user = get_loggedin_userid(); // you need to be logged in to comment on a group forum - $status = get_input('status'); // sticky, resolved, closed - - // Convert string of tags into a preformatted array - $tagarray = string_to_tag_array($tags); - - // Make sure the title / message aren't blank - if (empty($title) || empty($message)) { - register_error(elgg_echo("grouptopic:blank")); - forward("pg/groups/forum/{$group_guid}/"); - - // Otherwise, save the topic - } else { - - // Initialise a new ElggObject - $grouptopic = new ElggObject(); - // Tell the system it's a group forum topic - $grouptopic->subtype = "groupforumtopic"; - // Set its owner to the current user - $grouptopic->owner_guid = $user; - // Set the group it belongs to - $grouptopic->container_guid = $group_guid; - // For now, set its access to public (we'll add an access dropdown shortly) - $grouptopic->access_id = $access; - // Set its title and description appropriately - $grouptopic->title = $title; - // Set its title and description appropriately - $grouptopic->description = $message; - // Before we can set metadata, we need to save the topic - if (!$grouptopic->save()) { - register_error(elgg_echo("grouptopic:error")); - forward("pg/groups/forum/{$group_guid}/"); - } - // Now let's add tags. We can pass an array directly to the object property! Easy. - if (is_array($tagarray)) { - $grouptopic->tags = $tagarray; - } - // add metadata - $grouptopic->status = $status; // the current status i.e sticky, closed, resolved, open - - // add to river - add_to_river('river/forum/topic/create','create',get_loggedin_userid(),$grouptopic->guid); - - // Success message - system_message(elgg_echo("grouptopic:created")); - - // Forward to the group forum page - global $CONFIG; - $url = elgg_get_site_url() . "pg/groups/forum/{$group_guid}/"; - forward($url); - - } - -?> - diff --git a/mod/groups/actions/forums/deletetopic.php b/mod/groups/actions/forums/deletetopic.php deleted file mode 100644 index c67228a2f..000000000 --- a/mod/groups/actions/forums/deletetopic.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php - - /** - * Elgg Groups: delete topic action - * - * @package ElggGroups - */ - - $group_entity = get_entity(get_input('group')); - - // Get input data - $topic_guid = (int) get_input('topic'); - $group_guid = (int) get_input('group'); - - $topic = get_entity($topic_guid); - if ($topic->getSubtype() == "groupforumtopic") { - - // Make sure we actually have permission to edit - if (!$topic->canEdit()) { - register_error(elgg_echo("groupstopic:notdeleted")); - forward(REFERER); - } - - // Delete it! - $rowsaffected = $topic->delete(); - if ($rowsaffected > 0) { - // Success message - system_message(elgg_echo("groupstopic:deleted")); - } else { - register_error(elgg_echo("groupstopic:notdeleted")); - } - // Forward to the group forum page - $url = elgg_get_site_url() . "pg/groups/forum/{$group_guid}/"; - forward($url); - - } - -?>
\ No newline at end of file diff --git a/mod/groups/actions/forums/edittopic.php b/mod/groups/actions/forums/edittopic.php deleted file mode 100644 index b032e37d7..000000000 --- a/mod/groups/actions/forums/edittopic.php +++ /dev/null @@ -1,66 +0,0 @@ -<?php -/** -* Elgg groups plugin edit topic action. - */ - -// Make sure we're logged in (send us to the front page if not) -if (!isloggedin()) forward(); - -// Check the user is a group member -$group_entity = get_entity(get_input('group_guid')); -if (!$group_entity->isMember(get_loggedin_user())) forward(); - -// Get input data -$title = strip_tags(get_input('topictitle')); -$message = get_input('topicmessage'); -$message_id = get_input('message_id'); -$tags = get_input('topictags'); -$topic_guid = get_input('topic'); -$access = get_input('access_id'); -$group_guid = get_input('group_guid'); -$status = get_input('status'); // open, closed - -// Convert string of tags into a preformatted array -$tagarray = string_to_tag_array($tags); - -// Make sure we actually have permission to edit -$topic = get_entity($topic_guid); -if ($topic){ - $user = $topic->getOwnerGUID(); - if ($topic->getSubtype() == "groupforumtopic") { - - // Convert string of tags into a preformatted array - $tagarray = string_to_tag_array($tags); - - // Make sure the title isn't blank - if (empty($title) || empty($message)) { - register_error(elgg_echo("groupstopic:blank")); - - // Otherwise, save the forum - } else { - $topic->access_id = $access; - // Set its title - $topic->title = $title; - // Set the message - $topic->description = $message; - // if no tags are present, clear existing ones - if (is_array($tagarray)) { - $topic->tags = $tagarray; - } else $topic->clearMetadata('tags'); - // edit metadata - $topic->status = $status; // the current status i.e sticky, closed, resolved - - // save the changes - if (!$topic->save()) { - // register_error(elgg_echo("forumtopic:error")); - } - // Success message - system_message(elgg_echo("groups:forumtopic:edited")); - } - } -} -// Forward to the discussion -global $CONFIG; -$url = elgg_get_site_url() . "mod/groups/topicposts.php?topic={$topic_guid}&group_guid={$group_guid}/"; -forward($url); - diff --git a/mod/groups/addtopic.php b/mod/groups/addtopic.php deleted file mode 100644 index 008f34d9e..000000000 --- a/mod/groups/addtopic.php +++ /dev/null @@ -1,21 +0,0 @@ -<?php -/** - * Elgg Groups add a forum topic page - */ - -// Load Elgg engine -require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); - -group_gatekeeper(); - -$page_owner = set_page_owner((int) get_input('group_guid')); - -if (!(elgg_get_page_owner() instanceof ElggGroup)) forward(); - -// sort the display -$area2 = elgg_view("forms/forums/addtopic"); -$content = $area1 . $area2; -$body = elgg_view_layout('one_column_with_sidebar', array('content' => $content)); - -// Display page -echo elgg_view_page(elgg_echo('groups:addtopic'),$body);
\ No newline at end of file diff --git a/mod/groups/edittopic.php b/mod/groups/edittopic.php deleted file mode 100644 index 73730904f..000000000 --- a/mod/groups/edittopic.php +++ /dev/null @@ -1,25 +0,0 @@ -<?php -/** - * Elgg Groups edit a forum topic page - */ - -// Load Elgg engine -require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); - -gatekeeper(); - -get_input('group'); -$page_owner = set_page_owner((int)get_input('group')); - -// check the user is a member of the group -if (!(elgg_get_page_owner() instanceof ElggGroup)) forward(); - -//get the topic -$topic = get_entity((int) get_input('topic')); - -// sort the display -$area2 = elgg_view("forms/forums/edittopic", array('entity' => $topic)); -$body = elgg_view_layout('one_column_with_sidebar', array('content' => $area2)); - -// Display page -echo elgg_view_page(elgg_echo('groups:edittopic'),$body);
\ No newline at end of file diff --git a/mod/groups/forum.php b/mod/groups/forum.php deleted file mode 100644 index 55f7dd95e..000000000 --- a/mod/groups/forum.php +++ /dev/null @@ -1,45 +0,0 @@ -<?php -/** - * Elgg groups forum - */ - -require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); - -$group_guid = (int)get_input('group_guid'); -set_page_owner($group_guid); -if (!(elgg_get_page_owner() instanceof ElggGroup)) { - forward(); -} - -group_gatekeeper(); - -//get any forum topics -$options = array( - 'type' => 'object', - 'subtype' => 'groupforumtopic', - 'limit' => 20, - 'order_by' => 'e.last_action desc', - 'container_guid' => $group_guid, - 'fullview' => FALSE -); - -//$topics = elgg_list_entities_from_annotations($options); -$topics = elgg_list_entities($options); - -// set up breadcrumbs -$group = get_entity($group_guid); -elgg_push_breadcrumb(elgg_echo('groups'), elgg_get_site_url()."pg/groups/world/"); -elgg_push_breadcrumb($group->name, $group->getURL()); -elgg_push_breadcrumb(elgg_echo('item:object:groupforumtopic')); - -$area1 = elgg_view('navigation/breadcrumbs'); - -$area1 .= elgg_view("forum/topics", array('topics' => $topics, 'group_guid' => $group_guid)); -elgg_set_context('groups'); - -$body = elgg_view_layout('one_column_with_sidebar', array('content' => $area1)); - -$title = elgg_echo('item:object:groupforumtopic'); - -// Finally draw the page -echo elgg_view_page($title, $body);
\ No newline at end of file diff --git a/mod/groups/languages/en.php b/mod/groups/languages/en.php index 1d136e741..af4592f99 100644 --- a/mod/groups/languages/en.php +++ b/mod/groups/languages/en.php @@ -89,19 +89,28 @@ $english = array( /* Group tools */ - 'groups:enablepages' => 'Enable group pages', 'groups:enableforum' => 'Enable group discussion', - 'groups:enablefiles' => 'Enable group files', 'groups:yes' => 'yes', 'groups:no' => 'no', 'groups:lastupdated' => 'Last updated %s by %s', 'groups:lastcomment' => 'Last comment %s by %s', - 'groups:pages' => 'Group pages', - 'groups:files' => 'Group files', /* - Group forum strings + Group discussion */ + 'discussion' => 'Discussion', + 'discussion:add' => 'New discussion topic', + 'discussion:latest' => 'Latest discussion', + + 'discussion:topic:created' => 'The discussion topic was created.', + 'discussion:topic:updated' => 'The discussion topic was updated.', + 'discussion:topic:deleted' => 'Discussion topic has been deleted.', + + 'discussion:topic:notfound' => 'Discussion topic not found', + 'discussion:error:notsaved' => 'Unable to save this topic', + 'discussion:error:missing' => 'Both title and message are required fields', + 'discussion:error:permissions' => 'You do not have permissions to perform this action', + 'discussion:error:notdeleted' => 'Could not delete the discussion topic', 'group:replies' => 'Replies', 'groups:forum:created' => 'Created %s with %d comments', @@ -134,6 +143,8 @@ $english = array( 'grouptopic:error' => 'Your group topic could not be created. Please try again or contact a system administrator.', 'groups:forumpost:edited' => "You have successfully edited the forum post.", 'groups:forumpost:error' => "There was a problem editing the forum post.", + + 'groups:privategroup' => 'This group is closed. Requesting membership.', 'groups:notitle' => 'Groups must have a title', 'groups:cantjoin' => 'Can not join group', @@ -210,6 +221,7 @@ or click below to view the group's join requests: 'group:deleted' => 'Group and group contents deleted', 'group:notdeleted' => 'Group could not be deleted', + 'group:notfound' => 'Could not find the group', 'grouppost:deleted' => 'Group posting successfully deleted', 'grouppost:notdeleted' => 'Group posting could not be deleted', 'groupstopic:deleted' => 'Topic deleted', diff --git a/mod/groups/lib/discussion.php b/mod/groups/lib/discussion.php new file mode 100644 index 000000000..92ee94013 --- /dev/null +++ b/mod/groups/lib/discussion.php @@ -0,0 +1,209 @@ +<?php +/** + * Discussion function library + */ + +/** + * List all discussion topics + */ +function discussion_handle_all_page() { + + elgg_pop_breadcrumb(); + elgg_push_breadcrumb(elgg_echo('discussion')); + + $content = elgg_list_entities(array( + 'type' => 'object', + 'subtype' => 'groupforumtopic', + 'annotation_name' => 'generic_comment', + 'order_by' => 'e.last_action desc', + 'limit' => 40, + 'fullview' => false, + )); + + $params = array( + 'content' => $content, + 'title' => elgg_echo('discussion:latest'), + 'filter' => '', + 'buttons' => '', + ); + $body = elgg_view_layout('content', $params); + + echo elgg_view_page($title, $body); +} + +/** + * List discussion topics in a group + * + * @param int $guid Group entity GUID + */ +function discussion_handle_list_page($guid) { + + elgg_set_page_owner_guid($guid); + + $group = get_entity($guid); + if (!$group) { + register_error(elgg_echo('group:notfound')); + forward(); + } + elgg_push_breadcrumb($group->name); + + group_gatekeeper(); + + $title = elgg_echo('item:object:groupforumtopic'); + + $options = array( + 'type' => 'object', + 'subtype' => 'groupforumtopic', + 'limit' => 20, + 'order_by' => 'e.last_action desc', + 'container_guid' => $guid, + 'fullview' => true, + ); + $content = elgg_list_entities($options); + + + $params = array( + 'content' => $content, + 'title' => $title, + 'filter' => '', + ); + + if (!$group->isMember() && !$group->canEdit()) { + $params['buttons'] = ''; + } + + $body = elgg_view_layout('content', $params); + + echo elgg_view_page($title, $body); +} + +/** + * Edit or add a discussion topic + * + * @param string $type 'add' or 'edit' + * @param int $guid GUID of group or topic + */ +function discussion_handle_edit_page($type, $guid) { + gatekeeper(); + + if ($type == 'add') { + elgg_set_page_owner_guid($guid); + $group = get_entity($guid); + if (!$group) { + register_error(elgg_echo('group:notfound')); + forward(); + } + group_gatekeeper(); + + $title = elgg_echo('groups:addtopic'); + + elgg_push_breadcrumb($group->name, "pg/discussion/owner/$group->guid"); + elgg_push_breadcrumb($title); + + $body_vars = discussion_prepare_form_vars(); + $content = elgg_view_form('discussion/save', array(), $body_vars); + } else { + $topic = get_entity($guid); + if (!$topic || !$topic->canEdit()) { + register_error(elgg_echo('discussion:topic:notfound')); + forward(); + } + $group = $topic->getContainerEntity(); + if (!$group) { + register_error(elgg_echo('group:notfound')); + forward(); + } + elgg_set_page_owner_guid($group->getGUID()); + + $title = elgg_echo('groups:edittopic'); + + elgg_push_breadcrumb($group->name, "pg/discussion/owner/$group->guid"); + elgg_push_breadcrumb($topic->title, $topic->getURL()); + elgg_push_breadcrumb($title); + + $body_vars = discussion_prepare_form_vars($topic); + $content = elgg_view_form('discussion/save', array(), $body_vars); + } + + $params = array( + 'content' => $content, + 'title' => $title, + 'filter' => '', + 'buttons' => '', + ); + $body = elgg_view_layout('content', $params); + + echo elgg_view_page($title, $body); +} + +/** + * View a discussion topic + * + * @param int $guid GUID of topic + */ +function discussion_handle_view_page($guid) { + // We now have RSS on topics + global $autofeed; + $autofeed = true; + + $topic = get_entity($guid); + if (!$topic) { + register_error(elgg_echo('discussion:topic:notfound')); + forward(); + } + + $group = $topic->getContainerEntity(); + if (!$group) { + register_error(elgg_echo('group:notfound')); + forward(); + } + + elgg_set_page_owner_guid($group->getGUID()); + + group_gatekeeper(); + + elgg_push_breadcrumb($group->name, "pg/discussion/owner/$group->guid"); + elgg_push_breadcrumb($topic->title); + + $content = elgg_view('forum/viewposts', array('entity' => $topic)); + + $params = array( + 'content' => $content, + 'title' => $topic->title, + 'filter' => '', + 'buttons' => '', + ); + $body = elgg_view_layout('content', $params); + + echo elgg_view_page($title, $body); +} + +function discussion_prepare_form_vars($topic = NULL) { + // input names => defaults + $values = array( + 'title' => '', + 'description' => '', + 'status' => '', + 'access_id' => ACCESS_DEFAULT, + 'tags' => '', + 'container_guid' => elgg_get_page_owner_guid(), + 'guid' => null, + 'entity' => $topic, + ); + + if ($topic) { + foreach (array_keys($values) as $field) { + $values[$field] = $topic->$field; + } + } + + if (elgg_is_sticky_form('topic')) { + foreach (array_keys($values) as $field) { + $values[$field] = elgg_get_sticky_value('topic', $field); + } + } + + elgg_clear_sticky_form('topic'); + + return $values; +} diff --git a/mod/groups/start.php b/mod/groups/start.php index 0b76cc43c..199e3b27d 100644 --- a/mod/groups/start.php +++ b/mod/groups/start.php @@ -14,13 +14,15 @@ function groups_init() { global $CONFIG; elgg_register_library('elgg:groups', elgg_get_plugin_path() . 'groups/lib/groups.php'); + elgg_register_library('elgg:discussion', elgg_get_plugin_path() . 'groups/lib/discussion.php'); // Set up the menu - $item = new ElggMenuItem('groups', elgg_echo('groups'), 'pg/groups/world'); + $item = new ElggMenuItem('groups', elgg_echo('groups'), 'pg/groups/all'); elgg_register_menu_item('site', $item); // Register a page handler, so we can have nice URLs register_page_handler('groups', 'groups_page_handler'); + register_page_handler('discussion', 'discussion_page_handler'); // Register a URL handler for groups and forum topics register_entity_url_handler('groups_url', 'group', 'all'); @@ -39,6 +41,7 @@ function groups_init() { elgg_register_action("groups/killinvitation", $CONFIG->pluginspath . "groups/actions/groupskillinvitation.php"); elgg_register_action("groups/addtogroup", $CONFIG->pluginspath . "groups/actions/addtogroup.php"); elgg_register_action("groups/invite", $CONFIG->pluginspath . "groups/actions/invite.php"); + elgg_register_action("groups/featured", $CONFIG->pluginspath . "groups/actions/featured.php", 'admin'); // Add a page owner handler //elgg_register_plugin_hook_handler('page_owner', 'system', 'groups_page_owner_handler'); @@ -232,6 +235,7 @@ function groups_page_owner_handler() { /** * Groups page handler + * * URLs take the form of * All groups: pg/groups/all * User's owned groups: pg/groups/owned/<username> @@ -247,15 +251,13 @@ function groups_page_owner_handler() { * @param array $page Array of url segments for routing */ function groups_page_handler($page) { - global $CONFIG; elgg_load_library('elgg:groups'); - elgg_push_breadcrumb(elgg_echo('groups'), "pg/groups/world"); + elgg_push_breadcrumb(elgg_echo('groups'), "pg/groups/all"); - // beginnings of new page handler switch ($page[0]) { - case 'world': + case 'all': groups_handle_all_page(); break; case 'owned': @@ -289,21 +291,42 @@ function groups_page_handler($page) { groups_handle_requests_page($page[1]); break; } +} - // old page handler - if (isset($page[0])) { - // See what context we're using - switch ($page[0]) { - case "forum": - set_input('group_guid', $page[1]); - include($CONFIG->pluginspath . "groups/forum.php"); - break; - case "edittopic": - set_input('group', $page[1]); - set_input('topic', $page[2]); - include($CONFIG->pluginspath . "groups/edittopic.php"); - break; - } +/** + * Discussion page handler + * + * URLs take the form of + * All topics in site: pg/discussion/all + * List topics in forum: pg/discussion/owner/<guid> + * View discussion topic: pg/discussion/view/<guid> + * Add discussion topic: pg/discussion/add/<guid> + * Edit discussion topic: pg/discussion/edit/<guid> + * + * @param array $page Array of url segments for routing + */ +function discussion_page_handler($page) { + + elgg_load_library('elgg:discussion'); + + elgg_push_breadcrumb(elgg_echo('discussion'), 'pg/discussion/all'); + + switch ($page[0]) { + case 'all': + discussion_handle_all_page(); + break; + case 'owner': + discussion_handle_list_page($page[1]); + break; + case 'add': + discussion_handle_edit_page('add', $page[1]); + break; + case 'edit': + discussion_handle_edit_page('edit', $page[1]); + break; + case 'view': + discussion_handle_view_page($page[1]); + break; } } @@ -340,7 +363,7 @@ function groups_url($entity) { } function groups_groupforumtopic_url($entity) { - return 'mod/groups/topicposts.php?topic=' . $entity->guid . '&group_guid=' . $entity->container_guid; + return 'pg/discussion/view/' . $entity->guid; } /** @@ -518,8 +541,7 @@ function groups_can_edit_discussion($entity, $group_owner) { */ function group_topicpost_url($annotation) { if ($parent = get_entity($annotation->entity_guid)) { - global $CONFIG; - return 'mod/groups/topicposts.php?topic=' . $parent->guid . '&group_guid=' . $parent->container_guid . '#' . $annotation->id; + return 'pg/discussion/view/' . $parent->guid . '#' . $annotation->id; } } @@ -627,12 +649,5 @@ elgg_register_event_handler('annotate', 'all', 'group_object_notifications'); // Register actions global $CONFIG; -elgg_register_action("groups/addtopic", $CONFIG->pluginspath . "groups/actions/forums/addtopic.php"); -elgg_register_action("groups/deletetopic", $CONFIG->pluginspath . "groups/actions/forums/deletetopic.php"); -elgg_register_action("groups/addpost", $CONFIG->pluginspath . "groups/actions/forums/addpost.php"); -elgg_register_action("groups/edittopic", $CONFIG->pluginspath . "groups/actions/forums/edittopic.php"); -elgg_register_action("groups/deletepost", $CONFIG->pluginspath . "groups/actions/forums/deletepost.php"); -elgg_register_action("groups/featured", $CONFIG->pluginspath . "groups/actions/featured.php", 'admin'); -elgg_register_action("groups/editpost", $CONFIG->pluginspath . "groups/actions/forums/editpost.php"); - - +elgg_register_action('discussion/save', $CONFIG->pluginspath . "groups/actions/discussion/save.php"); +elgg_register_action('discussion/delete', $CONFIG->pluginspath . "groups/actions/discussion/delete.php"); diff --git a/mod/groups/topicposts.php b/mod/groups/topicposts.php index fe9b85cec..f9dd3344b 100644 --- a/mod/groups/topicposts.php +++ b/mod/groups/topicposts.php @@ -1,33 +1,19 @@ <?php +/** + * Elgg Groups topic posts page + * + * @package ElggGroups + * + * @deprecated 1.8 + */ - /** - * Elgg Groups topic posts page - * - * @package ElggGroups - */ +// Load Elgg engine +require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); - // Load Elgg engine - require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); - - // We now have RSS on topics - global $autofeed; - $autofeed = true; - - //get_input('group_guid'); - set_page_owner(get_input('group_guid')); - if (!(elgg_get_page_owner() instanceof ElggGroup)) forward(); - - group_gatekeeper(); - - // get the entity from id - $topic = get_entity(get_input('topic')); - if (!$topic) forward(); - - // Display them - $area2 = elgg_view("forum/viewposts", array('entity' => $topic)); - $body = elgg_view_layout("one_column_with_sidebar", array('content' => $area2)); - - // Display page - echo elgg_view_page($topic->title,$body); - -?>
\ No newline at end of file +elgg_load_library('elgg:topic'); + +$guid = get_input('topic'); + +register_error(elgg_echo('changebookmark')); + +topic_handle_view_page($guid); diff --git a/mod/groups/views/default/forms/discussion/save.php b/mod/groups/views/default/forms/discussion/save.php new file mode 100644 index 000000000..39f273f3e --- /dev/null +++ b/mod/groups/views/default/forms/discussion/save.php @@ -0,0 +1,56 @@ +<?php +/** + * Discussion topic add/edit form body + * + */ + +$title = elgg_get_array_value('title', $vars, ''); +$desc = elgg_get_array_value('description', $vars, ''); +$status = elgg_get_array_value('status', $vars, ''); +$tags = elgg_get_array_value('tags', $vars, ''); +$access_id = elgg_get_array_value('access_id', $vars, ACCESS_DEFAULT); +$container_guid = elgg_get_array_value('container_guid', $vars); +$guid = elgg_get_array_value('guid', $vars, null); + +?> +<p> + <label><?php echo elgg_echo('title'); ?></label><br /> + <?php echo elgg_view('input/text', array('internalname' => 'title', 'value' => $title)); ?> +</p> +<p> + <label><?php echo elgg_echo('groups:topicmessage'); ?></label> + <?php echo elgg_view('input/longtext', array('internalname' => 'description', 'value' => $desc)); ?> +</p> +<p> + <label><?php echo elgg_echo('tags'); ?></label> + <?php echo elgg_view('input/tags', array('internalname' => 'tags', 'value' => $tags)); ?> +</p> +<p> + <label><?php echo elgg_echo("groups:topicstatus"); ?></label><br /> + <?php + echo elgg_view('input/pulldown', array( + 'internalname' => 'status', + 'value' => $status, + 'options_values' => array( + 'open' => elgg_echo('groups:topicopen'), + 'closed' => elgg_echo('groups:topicclosed'), + ), + )); + ?> +<p> + <label><?php echo elgg_echo('access'); ?></label><br /> + <?php echo elgg_view('input/access', array('internalname' => 'access_id', 'value' => $access_id)); ?> +</p> +<p> +<?php + +echo elgg_view('input/hidden', array('internalname' => 'container_guid', 'value' => $container_guid)); + +if ($guid) { + echo elgg_view('input/hidden', array('internalname' => 'topic_guid', 'value' => $guid)); +} + +echo elgg_view('input/submit', array('value' => elgg_echo("save"))); + +?> +</p> diff --git a/mod/groups/views/default/forms/forums/addtopic.php b/mod/groups/views/default/forms/forums/addtopic.php deleted file mode 100644 index cf4921e20..000000000 --- a/mod/groups/views/default/forms/forums/addtopic.php +++ /dev/null @@ -1,103 +0,0 @@ -<?php -/** - * Elgg Groups topic edit/add page - * - * @package ElggGroups - * - * @uses $vars['object'] Optionally, the topic to edit - */ - - // Set title, form destination - $title = elgg_echo("groups:addtopic"); - $action = "groups/addtopic"; - $tags = ""; - $title = ""; - $message = ""; - $message_id = ""; - $status = ""; - - // get the group guid - $group_guid = (int) get_input('group_guid'); - - // set up breadcrumbs - $group = get_entity($group_guid); - $access_id = $group->group_acl; - $options = group_access_options($group); - elgg_push_breadcrumb(elgg_echo('groups'), elgg_get_site_url()."pg/groups/world/"); - elgg_push_breadcrumb($group->name, $group->getURL()); - elgg_push_breadcrumb(elgg_echo('item:object:groupforumtopic'), elgg_get_site_url()."pg/groups/forum/{$group_guid}/"); - elgg_push_breadcrumb(elgg_echo("groups:addtopic")); - - echo elgg_view('navigation/breadcrumbs'); - - // set the title - echo elgg_view_title(elgg_echo("groups:addtopic")); - -?> -<!-- display the input form --> -<form id="group_addtopic" action="<?php echo elgg_get_site_url(); ?>action/<?php echo $action; ?>" method="post" class="margin-top"> -<?php echo elgg_view('input/securitytoken'); ?> - - <p> - <label><?php echo elgg_echo("title"); ?><br /> - <?php - //display the topic title input - echo elgg_view("input/text", array( - "internalname" => "topictitle", - "value" => $title, - )); - ?> - </label> - </p> - - <!-- display the tag input --> - <p> - <label><?php echo elgg_echo("tags"); ?><br /> - <?php - - echo elgg_view("input/tags", array( - "internalname" => "topictags", - "value" => $tags, - )); - - ?> - </label> - </p> - - <!-- topic message input --> - <p class="longtext_inputarea"> - <label><?php echo elgg_echo("groups:topicmessage"); ?></label> - <?php - - echo elgg_view("input/longtext",array( - "internalname" => "topicmessage", - "value" => $message, - )); - ?> - </p> - - <!-- set the topic status --> - <p> - <label><?php echo elgg_echo("groups:topicstatus"); ?><br /> - <select name="status"> - <option value="open" <?php if($status == "") echo "SELECTED";?>><?php echo elgg_echo('groups:topicopen'); ?></option> - <option value="closed" <?php if($status == "closed") echo "SELECTED";?>><?php echo elgg_echo('groups:topicclosed'); ?></option> - </select> - </label> - </p> - - <!-- access --> - <p> - <label> - <?php echo elgg_echo('access'); ?><br /> - <?php echo elgg_view('input/access', array('internalname' => 'access_id','value' => $access_id, 'options' => $options)); ?> - </label> - </p> - - <!-- required hidden info and submit button --> - <p> - <input type="hidden" name="group_guid" value="<?php echo $group_guid; ?>" /> - <?php echo elgg_view('input/submit', array('value' => elgg_echo('post'))); ?> - </p> - -</form> diff --git a/mod/groups/views/default/forms/forums/edittopic.php b/mod/groups/views/default/forms/forums/edittopic.php deleted file mode 100644 index d05389218..000000000 --- a/mod/groups/views/default/forms/forums/edittopic.php +++ /dev/null @@ -1,96 +0,0 @@ -<?php - - /** - * Elgg Groups topic edit/add page - * - * @package ElggGroups - * - * @uses $vars['entity'] Optionally, the topic to edit - */ - - //users can edit the access and status for now - $access_id = $vars['entity']->access_id; - $status = $vars['entity']->status; - $tags = $vars['entity']->tags; - $title = $vars['entity']->title; - $message = $vars['entity']->description; - - // get the group GUID - $group_guid = get_input("group"); - - // topic guid - $topic_guid = $vars['entity']->guid; - - // set the title - echo elgg_view_title(elgg_echo("groups:edittopic")); - -?> -<!-- display the input form --> - <form id="group_edittopic" action="<?php echo elgg_get_site_url(); ?>action/groups/edittopic" method="post"> - <?php echo elgg_view('input/securitytoken'); ?> - - <p> - <label><?php echo elgg_echo("title"); ?><br /> - <?php - //display the topic title input - echo elgg_view("input/text", array( - "internalname" => "topictitle", - "value" => $title, - )); - ?> - </label> - </p> - - <!-- display the tag input --> - <p> - <label><?php echo elgg_echo("tags"); ?><br /> - <?php - - echo elgg_view("input/tags", array( - "internalname" => "topictags", - "value" => $tags, - )); - - ?> - </label> - </p> - - <!-- topic message input --> - <p class="longtext_inputarea"> - <label><?php echo elgg_echo("groups:topicmessage"); ?></label> - <?php - - echo elgg_view("input/longtext",array( - "internalname" => "topicmessage", - "value" => html_entity_decode($message, ENT_COMPAT, 'UTF-8') - )); - ?> - </p> - - <!-- set the topic status --> - <p> - <label><?php echo elgg_echo("groups:topicstatus"); ?><br /> - <select name="status"> - <option value="open" <?php if($status == "") echo "SELECTED";?>><?php echo elgg_echo('groups:topicopen'); ?></option> - <option value="closed" <?php if($status == "closed") echo "SELECTED";?>><?php echo elgg_echo('groups:topicclosed'); ?></option> - </select> - </label> - </p> - - <!-- access --> - <p> - <label> - <?php echo elgg_echo('access'); ?><br /> - <?php echo elgg_view('input/access', array('internalname' => 'access_id','value' => $access_id)); ?> - </label> - </p> - - <!-- required hidden info and submit button --> - <p> - <input type="hidden" name="group_guid" value="<?php echo $group_guid; ?>" /> - <input type="hidden" name="topic" value="<?php echo $topic_guid; ?>" /> - <input type="hidden" name="message_id" value="<?php echo $message_id; ?>" /> - <?php echo elgg_view('input/submit', array('value' => elgg_echo('save'))); ?> - </p> - - </form>
\ No newline at end of file diff --git a/mod/groups/views/default/forum/maintopic.php b/mod/groups/views/default/forum/maintopic.php index 2c75c0a77..7031c7418 100644 --- a/mod/groups/views/default/forum/maintopic.php +++ b/mod/groups/views/default/forum/maintopic.php @@ -30,7 +30,7 @@ 'text' => elgg_echo('delete'),
'confirm' => elgg_echo('deleteconfirm')
))."</span>";
- echo "<span class='entity-edit'><a class='link' href=\"".elgg_get_site_url()."pg/groups/edittopic/{$group_guid}/{$topic}/\">".elgg_echo('edit')."</a></span>";
+ echo "<span class='entity-edit'><a class='link' href=\"".elgg_get_site_url()."pg/discussion/edit/{$vars['entity']->guid}\">".elgg_echo('edit')."</a></span>";
echo "</div>";
}
diff --git a/mod/groups/views/default/forum/viewposts.php b/mod/groups/views/default/forum/viewposts.php index f12a3f306..3c9da1258 100644 --- a/mod/groups/views/default/forum/viewposts.php +++ b/mod/groups/views/default/forum/viewposts.php @@ -2,7 +2,7 @@ /** * Elgg groups plugin display topic posts */ - +/* // set up breadcrumbs $group_guid = get_input('group_guid'); $group = get_entity($group_guid); @@ -12,6 +12,7 @@ elgg_push_breadcrumb(elgg_echo('item:object:groupforumtopic'), elgg_get_site_url elgg_push_breadcrumb($vars['entity']->title); echo elgg_view('navigation/breadcrumbs'); +*/ //display follow up comments $count = $vars['entity']->countAnnotations('group_topic_post'); @@ -26,8 +27,6 @@ echo elgg_view('navigation/pagination',array( )); ?> -<!-- grab the topic title --> -<h2><?php echo $vars['entity']->title; ?></h2> <?php //display the topic echo elgg_view("forum/maintopic",array('entity' => $vars['entity'])); diff --git a/mod/groups/views/default/groups/group_sort_menu.php b/mod/groups/views/default/groups/group_sort_menu.php index 958c4084d..7018b614f 100644 --- a/mod/groups/views/default/groups/group_sort_menu.php +++ b/mod/groups/views/default/groups/group_sort_menu.php @@ -8,7 +8,7 @@ $group_count = (int)elgg_get_entities(array('types' => 'group', 'count' => true) $selected = elgg_get_array_value('selected', $vars); //url - $url = elgg_get_site_url() . "pg/groups/world/"; + $url = elgg_get_site_url() . "pg/groups/all/"; ?> <div class="elgg-tabs margin-top"> diff --git a/mod/groups/views/default/groups/profile/forum_widget.php b/mod/groups/views/default/groups/profile/forum_widget.php index 265926fb5..969eb0559 100644 --- a/mod/groups/views/default/groups/profile/forum_widget.php +++ b/mod/groups/views/default/groups/profile/forum_widget.php @@ -13,7 +13,7 @@ $group = $vars['entity']; $all_link = elgg_view('output/url', array( - 'href' => "pg/groups/forum/$group->guid", + 'href' => "pg/discussion/owner/$group->guid", 'text' => elgg_echo('link:view:all'), )); @@ -38,7 +38,7 @@ if (!$content) { } $new_link = elgg_view('output/url', array( - 'href' => "mod/groups/addtopic.php?group_guid=" . $group->getGUID(), + 'href' => "pg/discussion/add/" . $group->getGUID(), 'text' => elgg_echo('groups:addtopic'), )); $content .= "<span class='elgg-widget-more'>$new_link</span>"; diff --git a/mod/groups/views/default/object/groupforumtopic.php b/mod/groups/views/default/object/groupforumtopic.php index e569bff77..a89419931 100644 --- a/mod/groups/views/default/object/groupforumtopic.php +++ b/mod/groups/views/default/object/groupforumtopic.php @@ -43,7 +43,7 @@ if ($num_comments != 0) { $metadata = elgg_view('layout/objects/list/metadata', array( 'entity' => $topic, - 'handler' => 'forum', + 'handler' => 'discussion', )); $subtitle = "$poster_text $date $comments_link <span class=\"groups-latest-comment\">$comments_text</span>"; |