From 4766f36a4d74924f21ff329c4318ce4e069ffa04 Mon Sep 17 00:00:00 2001 From: brettp Date: Wed, 3 Mar 2010 17:53:05 +0000 Subject: Pulled in the interface changes. git-svn-id: http://code.elgg.org/elgg/trunk@5257 36083f99-b078-4883-b0ff-0f9b5a30f544 --- mod/groups/actions/addtogroup.php | 96 ++++ mod/groups/actions/delete.php | 19 + mod/groups/actions/edit.php | 153 +++++ mod/groups/actions/featured.php | 44 ++ mod/groups/actions/forums/addpost.php | 58 ++ mod/groups/actions/forums/addtopic.php | 81 +++ mod/groups/actions/forums/deletepost.php | 44 ++ mod/groups/actions/forums/deletetopic.php | 45 ++ mod/groups/actions/forums/editpost.php | 53 ++ mod/groups/actions/forums/edittopic.php | 87 +++ mod/groups/actions/groupskillinvitation.php | 32 ++ mod/groups/actions/groupskillrequest.php | 32 ++ mod/groups/actions/invite.php | 69 +++ mod/groups/actions/join.php | 65 +++ mod/groups/actions/joinrequest.php | 84 +++ mod/groups/actions/leave.php | 43 ++ mod/groups/addtopic.php | 29 + mod/groups/all.php | 71 +++ mod/groups/discussions.php | 32 ++ mod/groups/edit.php | 33 ++ mod/groups/edittopic.php | 36 ++ mod/groups/forum.php | 35 ++ mod/groups/graphics/defaultlarge.gif | Bin 0 -> 4939 bytes mod/groups/graphics/defaultmedium.gif | Bin 0 -> 2336 bytes mod/groups/graphics/defaultsmall.gif | Bin 0 -> 1127 bytes mod/groups/graphics/defaulttiny.gif | Bin 0 -> 782 bytes mod/groups/graphics/icon.php | 45 ++ mod/groups/groupprofile.php | 60 ++ mod/groups/index.php | 31 ++ mod/groups/invitations.php | 33 ++ mod/groups/invite.php | 34 ++ mod/groups/languages/en.php | 228 ++++++++ mod/groups/manifest.xml | 10 + mod/groups/membership.php | 38 ++ mod/groups/membershipreq.php | 36 ++ mod/groups/new.php | 22 + mod/groups/start.php | 613 +++++++++++++++++++++ mod/groups/topicposts.php | 37 ++ mod/groups/views/default/forms/forums/addpost.php | 40 ++ mod/groups/views/default/forms/forums/addtopic.php | 101 ++++ .../views/default/forms/forums/edittopic.php | 109 ++++ mod/groups/views/default/forms/groups/edit.php | 162 ++++++ mod/groups/views/default/forms/groups/invite.php | 34 ++ mod/groups/views/default/forum/topicposts.php | 106 ++++ mod/groups/views/default/forum/topics.php | 33 ++ mod/groups/views/default/forum/viewposts.php | 58 ++ mod/groups/views/default/group/group.php | 21 + .../views/default/groups/closedmembership.php | 15 + mod/groups/views/default/groups/contentwrapper.php | 5 + mod/groups/views/default/groups/css.php | 401 ++++++++++++++ mod/groups/views/default/groups/featured.php | 29 + mod/groups/views/default/groups/find.php | 20 + mod/groups/views/default/groups/forum_latest.php | 38 ++ .../views/default/groups/group_sort_menu.php | 28 + mod/groups/views/default/groups/groupgallery.php | 25 + mod/groups/views/default/groups/grouplisting.php | 49 ++ mod/groups/views/default/groups/groupprofile.php | 102 ++++ mod/groups/views/default/groups/icon.php | 48 ++ .../views/default/groups/invitationrequests.php | 44 ++ mod/groups/views/default/groups/members.php | 30 + .../views/default/groups/membershiprequests.php | 44 ++ mod/groups/views/default/groups/profileitems.php | 28 + mod/groups/views/default/groups/side_menu.php | 10 + .../views/default/icon/group/default/large.php | 3 + .../views/default/icon/group/default/medium.php | 3 + .../views/default/icon/group/default/small.php | 3 + .../views/default/icon/group/default/tiny.php | 3 + .../views/default/object/groupforumtopic.php | 77 +++ mod/groups/views/default/river/forum/create.php | 27 + .../views/default/river/forum/topic/create.php | 27 + mod/groups/views/default/river/group/create.php | 13 + .../views/default/river/object/group/create.php | 13 + .../river/object/groupforumtopic/annotate.php | 14 + .../river/object/groupforumtopic/create.php | 14 + .../river/object/groupforumtopic/update.php | 13 + .../default/river/relationship/member/create.php | 40 ++ mod/groups/views/default/settings/groups/edit.php | 18 + mod/groups/views/default/sharing/invite.php | 41 ++ .../views/default/widgets/a_users_groups/edit.php | 14 + .../views/default/widgets/a_users_groups/view.php | 42 ++ .../default/widgets/group_entities_widget/edit.php | 23 + .../default/widgets/group_entities_widget/view.php | 35 ++ .../default/widgets/group_members_widget/edit.php | 23 + .../default/widgets/group_members_widget/view.php | 35 ++ mod/groups/views/rss/forum/topicposts.php | 3 + mod/groups/views/rss/forum/topics.php | 14 + mod/groups/views/rss/forum/viewposts.php | 26 + mod/groups/views/rss/groups/contentwrapper.php | 5 + mod/groups/views/rss/groups/profileitems.php | 20 + 89 files changed, 4557 insertions(+) create mode 100644 mod/groups/actions/addtogroup.php create mode 100644 mod/groups/actions/delete.php create mode 100644 mod/groups/actions/edit.php create mode 100644 mod/groups/actions/featured.php create mode 100644 mod/groups/actions/forums/addpost.php create mode 100644 mod/groups/actions/forums/addtopic.php create mode 100644 mod/groups/actions/forums/deletepost.php create mode 100644 mod/groups/actions/forums/deletetopic.php create mode 100644 mod/groups/actions/forums/editpost.php create mode 100644 mod/groups/actions/forums/edittopic.php create mode 100644 mod/groups/actions/groupskillinvitation.php create mode 100644 mod/groups/actions/groupskillrequest.php create mode 100644 mod/groups/actions/invite.php create mode 100644 mod/groups/actions/join.php create mode 100644 mod/groups/actions/joinrequest.php create mode 100644 mod/groups/actions/leave.php create mode 100644 mod/groups/addtopic.php create mode 100644 mod/groups/all.php create mode 100644 mod/groups/discussions.php create mode 100644 mod/groups/edit.php create mode 100644 mod/groups/edittopic.php create mode 100644 mod/groups/forum.php create mode 100644 mod/groups/graphics/defaultlarge.gif create mode 100644 mod/groups/graphics/defaultmedium.gif create mode 100644 mod/groups/graphics/defaultsmall.gif create mode 100644 mod/groups/graphics/defaulttiny.gif create mode 100644 mod/groups/graphics/icon.php create mode 100644 mod/groups/groupprofile.php create mode 100644 mod/groups/index.php create mode 100644 mod/groups/invitations.php create mode 100644 mod/groups/invite.php create mode 100644 mod/groups/languages/en.php create mode 100644 mod/groups/manifest.xml create mode 100644 mod/groups/membership.php create mode 100644 mod/groups/membershipreq.php create mode 100644 mod/groups/new.php create mode 100644 mod/groups/start.php create mode 100644 mod/groups/topicposts.php create mode 100644 mod/groups/views/default/forms/forums/addpost.php create mode 100644 mod/groups/views/default/forms/forums/addtopic.php create mode 100644 mod/groups/views/default/forms/forums/edittopic.php create mode 100644 mod/groups/views/default/forms/groups/edit.php create mode 100644 mod/groups/views/default/forms/groups/invite.php create mode 100644 mod/groups/views/default/forum/topicposts.php create mode 100644 mod/groups/views/default/forum/topics.php create mode 100644 mod/groups/views/default/forum/viewposts.php create mode 100644 mod/groups/views/default/group/group.php create mode 100644 mod/groups/views/default/groups/closedmembership.php create mode 100644 mod/groups/views/default/groups/contentwrapper.php create mode 100644 mod/groups/views/default/groups/css.php create mode 100644 mod/groups/views/default/groups/featured.php create mode 100644 mod/groups/views/default/groups/find.php create mode 100644 mod/groups/views/default/groups/forum_latest.php create mode 100644 mod/groups/views/default/groups/group_sort_menu.php create mode 100644 mod/groups/views/default/groups/groupgallery.php create mode 100644 mod/groups/views/default/groups/grouplisting.php create mode 100644 mod/groups/views/default/groups/groupprofile.php create mode 100644 mod/groups/views/default/groups/icon.php create mode 100644 mod/groups/views/default/groups/invitationrequests.php create mode 100644 mod/groups/views/default/groups/members.php create mode 100644 mod/groups/views/default/groups/membershiprequests.php create mode 100644 mod/groups/views/default/groups/profileitems.php create mode 100644 mod/groups/views/default/groups/side_menu.php create mode 100644 mod/groups/views/default/icon/group/default/large.php create mode 100644 mod/groups/views/default/icon/group/default/medium.php create mode 100644 mod/groups/views/default/icon/group/default/small.php create mode 100644 mod/groups/views/default/icon/group/default/tiny.php create mode 100644 mod/groups/views/default/object/groupforumtopic.php create mode 100644 mod/groups/views/default/river/forum/create.php create mode 100644 mod/groups/views/default/river/forum/topic/create.php create mode 100644 mod/groups/views/default/river/group/create.php create mode 100644 mod/groups/views/default/river/object/group/create.php create mode 100644 mod/groups/views/default/river/object/groupforumtopic/annotate.php create mode 100644 mod/groups/views/default/river/object/groupforumtopic/create.php create mode 100644 mod/groups/views/default/river/object/groupforumtopic/update.php create mode 100644 mod/groups/views/default/river/relationship/member/create.php create mode 100644 mod/groups/views/default/settings/groups/edit.php create mode 100644 mod/groups/views/default/sharing/invite.php create mode 100644 mod/groups/views/default/widgets/a_users_groups/edit.php create mode 100644 mod/groups/views/default/widgets/a_users_groups/view.php create mode 100644 mod/groups/views/default/widgets/group_entities_widget/edit.php create mode 100644 mod/groups/views/default/widgets/group_entities_widget/view.php create mode 100644 mod/groups/views/default/widgets/group_members_widget/edit.php create mode 100644 mod/groups/views/default/widgets/group_members_widget/view.php create mode 100644 mod/groups/views/rss/forum/topicposts.php create mode 100644 mod/groups/views/rss/forum/topics.php create mode 100644 mod/groups/views/rss/forum/viewposts.php create mode 100644 mod/groups/views/rss/groups/contentwrapper.php create mode 100644 mod/groups/views/rss/groups/profileitems.php (limited to 'mod/groups') diff --git a/mod/groups/actions/addtogroup.php b/mod/groups/actions/addtogroup.php new file mode 100644 index 000000000..0b99ea917 --- /dev/null +++ b/mod/groups/actions/addtogroup.php @@ -0,0 +1,96 @@ +owner_guid) + if ($group->canEdit()) + { + + // If the group is open or the user has requested membership + if ( + (check_entity_relationship($user->guid, 'membership_request', $group->guid)) || + ($group->isPublicMembership()) + ) + { + + if (!$group->isMember($user)) + { + // Remove relationships + remove_entity_relationship($group->guid, 'invited', $user->guid); + remove_entity_relationship($user->guid, 'membership_request', $group->guid); + + //add_entity_relationship($user->guid, 'member', $group->guid); + $group->join($user); + + // send welcome email + notify_user($user->getGUID(), $group->owner_guid, + sprintf(elgg_echo('groups:welcome:subject'), $group->name), + sprintf(elgg_echo('groups:welcome:body'), $user->name, $logged_in_user->name, $group->name, $group->getURL()), + NULL); + + system_message(elgg_echo('groups:addedtogroup')); + } + else + register_error(elgg_echo("groups:cantjoin")); + } + else + { + if ($user->isFriend()) + { + + // Create relationship + add_entity_relationship($group->guid, 'invited', $user->guid); + + // Send email + $url = "{$CONFIG->url}pg/groups/invited?user_guid={$user->guid}&group_guid={$group->guid}"; + if (notify_user($user->getGUID(), $group->owner_guid, + sprintf(elgg_echo('groups:invite:subject'), $user->name, $group->name), + sprintf(elgg_echo('groups:invite:body'), $user->name, $logged_in_user->name, $group->name, $url), + NULL)) + system_message(elgg_echo("groups:userinvited")); + else + register_error(elgg_echo("groups:usernotinvited")); + + } + else + register_error(elgg_echo("groups:usernotinvited")); + } + } + else + register_error(elgg_echo("groups:notowner")); + } + } + } + + forward($_SERVER['HTTP_REFERER']); + +?> diff --git a/mod/groups/actions/delete.php b/mod/groups/actions/delete.php new file mode 100644 index 000000000..b4bc71838 --- /dev/null +++ b/mod/groups/actions/delete.php @@ -0,0 +1,19 @@ +delete()) + system_message(elgg_echo('group:deleted')); + else + register_error(elgg_echo('group:notdeleted')); + } + else + register_error(elgg_echo('group:notdeleted')); + + $url_name = $_SESSION['user']->username; + forward("{$vars['url']}pg/groups/member/{$url_name}"); +?> \ No newline at end of file diff --git a/mod/groups/actions/edit.php b/mod/groups/actions/edit.php new file mode 100644 index 000000000..b6eb3eb71 --- /dev/null +++ b/mod/groups/actions/edit.php @@ -0,0 +1,153 @@ +group as $shortname => $valuetype) { + $input[$shortname] = get_input($shortname); + if ($valuetype == 'tags') + $input[$shortname] = string_to_tag_array($input[$shortname]); + } + + $user_guid = get_input('user_guid'); + $user = NULL; + if (!$user_guid) $user = $_SESSION['user']; + else + $user = get_entity($user_guid); + + $group_guid = get_input('group_guid'); + + $group = new ElggGroup($group_guid); // load if present, if not create a new group + if (($group_guid) && (!$group->canEdit())) + { + register_error(elgg_echo("groups:cantedit")); + + forward($_SERVER['HTTP_REFERER']); + exit; + } + + // Assume we can edit or this is a new group + if (sizeof($input) > 0) + { + foreach($input as $shortname => $value) { + $group->$shortname = $value; + } + } + + // Validate create + if (!$group->name) + { + register_error(elgg_echo("groups:notitle")); + + forward($_SERVER['HTTP_REFERER']); + exit; + } + + // Group membership - should these be treated with same constants as access permissions? + switch (get_input('membership')) + { + case ACCESS_PUBLIC: + $group->membership = ACCESS_PUBLIC; + break; + default: + $group->membership = ACCESS_PRIVATE; + } + + // Set access - all groups are public from elgg's point of view, unless the override is in place + + if (get_plugin_setting('hidden_groups', 'groups') == 'yes') + { + $visibility = (int)get_input('vis','',false); + + $group->access_id = $visibility; + } + else + $group->access_id = ACCESS_PUBLIC; + + // Set group tool options + //$group->files_enable = get_input('files_enable', 'yes'); + //$group->pages_enable = get_input('pages_enable', 'yes'); + //$group->forum_enable = get_input('forum_enable', 'yes'); + + // Set group tool options + if (isset($CONFIG->group_tool_options)) { + foreach($CONFIG->group_tool_options as $group_option) { + $group_option_toggle_name = $group_option->name."_enable"; + if ($group_option->default_on) { + $group_option_default_value = 'yes'; + } else { + $group_option_default_value = 'no'; + } + $group->$group_option_toggle_name = get_input($group_option_toggle_name, $group_option_default_value); + } + } + + $group->save(); + + if (!$group->isMember($user)) + $group->join($user); // Creator always a member + + + // Now see if we have a file icon + if ((isset($_FILES['icon'])) && (substr_count($_FILES['icon']['type'],'image/'))) + { + $prefix = "groups/".$group->guid; + + $filehandler = new ElggFile(); + $filehandler->owner_guid = $group->owner_guid; + $filehandler->setFilename($prefix . ".jpg"); + $filehandler->open("write"); + $filehandler->write(get_uploaded_file('icon')); + $filehandler->close(); + + $thumbtiny = get_resized_image_from_existing_file($filehandler->getFilenameOnFilestore(),25,25, true); + $thumbsmall = get_resized_image_from_existing_file($filehandler->getFilenameOnFilestore(),40,40, true); + $thumbmedium = get_resized_image_from_existing_file($filehandler->getFilenameOnFilestore(),100,100, true); + $thumblarge = get_resized_image_from_existing_file($filehandler->getFilenameOnFilestore(),200,200, false); + if ($thumbtiny) { + + $thumb = new ElggFile(); + $thumb->owner_guid = $group->owner_guid; + $thumb->setMimeType('image/jpeg'); + + $thumb->setFilename($prefix."tiny.jpg"); + $thumb->open("write"); + $thumb->write($thumbtiny); + $thumb->close(); + + $thumb->setFilename($prefix."small.jpg"); + $thumb->open("write"); + $thumb->write($thumbsmall); + $thumb->close(); + + $thumb->setFilename($prefix."medium.jpg"); + $thumb->open("write"); + $thumb->write($thumbmedium); + $thumb->close(); + + $thumb->setFilename($prefix."large.jpg"); + $thumb->open("write"); + $thumb->write($thumblarge); + $thumb->close(); + + $group->icontime = time(); + } + } + + system_message(elgg_echo("groups:saved")); + + // Forward to the user's profile + forward($group->getUrl()); + exit; +?> diff --git a/mod/groups/actions/featured.php b/mod/groups/actions/featured.php new file mode 100644 index 000000000..2d16113df --- /dev/null +++ b/mod/groups/actions/featured.php @@ -0,0 +1,44 @@ +featured_group = "yes"; + system_message(elgg_echo('groups:featuredon')); + + } + + if($action == "unfeature"){ + + $group->featured_group = "no"; + system_message(elgg_echo('groups:unfeatured')); + + } + + } + + forward("pg/groups/world/"); + +?> \ No newline at end of file diff --git a/mod/groups/actions/forums/addpost.php b/mod/groups/actions/forums/addpost.php new file mode 100644 index 000000000..c277b795d --- /dev/null +++ b/mod/groups/actions/forums/addpost.php @@ -0,0 +1,58 @@ + + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.org/ + */ + +// Make sure we're logged in and have a CSRF token +gatekeeper(); + +// Get input +$topic_guid = (int) get_input('topic_guid'); +$group_guid = (int) get_input('group_guid'); +$post = get_input('topic_post'); + + +// make sure we have text in the post +if (!$post) { + register_error(elgg_echo("grouppost:nopost")); + forward($_SERVER['HTTP_REFERER']); +} + + +// Check that user is a group member +$group = get_entity($group_guid); +$user = get_loggedin_user(); +if (!$group->isMember($user)) { + register_error(elgg_echo("groups:notmember")); + forward($_SERVER['HTTP_REFERER']); +} + + +// Let's see if we can get an form topic with the specified GUID, and that it's a group forum topic +$topic = get_entity($topic_guid); +if (!$topic || $topic->getSubtype() != "groupforumtopic") { + register_error(elgg_echo("grouptopic:notfound")); + forward($_SERVER['HTTP_REFERER']); +} + + +// add the post to the forum topic +$post_id = $topic->annotate('group_topic_post', $post, $topic->access_id, $user->guid); +if ($post_id == false) { + system_message(elgg_echo("groupspost:failure")); + forward($_SERVER['HTTP_REFERER']); +} + +// add to river +add_to_river('river/forum/create', 'create', $user->guid, $topic_guid, "", 0, $post_id); + +system_message(elgg_echo("groupspost:success")); + +forward($_SERVER['HTTP_REFERER']); diff --git a/mod/groups/actions/forums/addtopic.php b/mod/groups/actions/forums/addtopic.php new file mode 100644 index 000000000..740ea17aa --- /dev/null +++ b/mod/groups/actions/forums/addtopic.php @@ -0,0 +1,81 @@ +isMember($vars['user'])) forward(); + + // Get input data + $title = get_input('topictitle'); + $message = get_input('topicmessage'); + $tags = get_input('topictags'); + $access = get_input('access_id'); + $group_guid = (int) get_input('group_guid'); + $user = $_SESSION['user']->getGUID(); // 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; + // 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 + + // now add the topic message as an annotation + $grouptopic->annotate('group_topic_post',$message,$access, $user); + + // add to river + add_to_river('river/forum/topic/create','create',$_SESSION['user']->guid,$grouptopic->guid); + + // Success message + system_message(elgg_echo("grouptopic:created")); + + // Forward to the group forum page + global $CONFIG; + $url = $CONFIG->wwwroot . "pg/groups/forum/{$group_guid}/"; + forward($url); + + } + +?> + diff --git a/mod/groups/actions/forums/deletepost.php b/mod/groups/actions/forums/deletepost.php new file mode 100644 index 000000000..4066b7456 --- /dev/null +++ b/mod/groups/actions/forums/deletepost.php @@ -0,0 +1,44 @@ + + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.org/ + */ + + // Ensure we're logged in + if (!isloggedin()) forward(); + + + // Make sure we can get the comment in question + $post_id = (int) get_input('post'); + $group_guid = (int) get_input('group'); + $topic_guid = (int) get_input('topic'); + + if ($post = get_annotation($post_id)) { + + //check that the user can edit as well as admin + if ($post->canEdit() || ($post->owner_guid == $_SESSION['user']->guid)) { + + //delete + $post->delete(); + //display confirmation message + system_message(elgg_echo("grouppost:deleted")); + + } + + } else { + $url = ""; + system_message(elgg_echo("grouppost:notdeleted")); + } + + // Forward to the group forum page + global $CONFIG; + $url = $CONFIG->wwwroot . "mod/groups/topicposts.php?topic={$topic_guid}&group_guid={$group_guid}"; + forward($url); + +?> \ No newline at end of file diff --git a/mod/groups/actions/forums/deletetopic.php b/mod/groups/actions/forums/deletetopic.php new file mode 100644 index 000000000..1095fc44a --- /dev/null +++ b/mod/groups/actions/forums/deletetopic.php @@ -0,0 +1,45 @@ + + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.org/ + */ + + // 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')); + if (!$group_entity->isMember($vars['user'])) forward(); + + // Get input data + $topic_guid = (int) get_input('topic'); + $group_guid = (int) get_input('group'); + + // Make sure we actually have permission to edit + $topic = get_entity($topic_guid); + if ($topic->getSubtype() == "groupforumtopic") { + + // Get owning user + // $owner = get_entity($topic->getOwner()); + // Delete it! + $rowsaffected = $topic->delete(); + if ($rowsaffected > 0) { + // Success message + system_message(elgg_echo("groupstopic:deleted")); + } else { + system_message(elgg_echo("groupstopic:notdeleted")); + } + // Forward to the group forum page + global $CONFIG; + $url = $CONFIG->wwwroot . "pg/groups/forum/{$group_guid}/"; + forward($url); + + } + +?> \ No newline at end of file diff --git a/mod/groups/actions/forums/editpost.php b/mod/groups/actions/forums/editpost.php new file mode 100644 index 000000000..d30fad31f --- /dev/null +++ b/mod/groups/actions/forums/editpost.php @@ -0,0 +1,53 @@ +isMember($vars['user'])) forward(); + + //get the required variables + $post = get_input("post"); + $field_num = get_input("field_num"); + $post_comment = get_input("postComment{$field_num}"); + $annotation = get_annotation($post); + $commentOwner = $annotation->owner_guid; + $access_id = $annotation->access_id; + $topic = get_input("topic"); + + if($annotation){ + + //can edit? Either the comment owner or admin can + if(groups_can_edit_discussion($annotation, page_owner_entity()->owner_guid)){ + + update_annotation($post, "group_topic_post", $post_comment, "",$commentOwner, $access_id); + system_message(elgg_echo("groups:forumpost:edited")); + + }else{ + system_message(elgg_echo("groups:forumpost:error")); + } + + }else{ + + system_message(elgg_echo("groups:forumpost:error")); + } + + // Forward to the group forum page + global $CONFIG; + $url = $CONFIG->wwwroot . "mod/groups/topicposts.php?topic={$topic}&group_guid={$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 new file mode 100644 index 000000000..2898c31dc --- /dev/null +++ b/mod/groups/actions/forums/edittopic.php @@ -0,0 +1,87 @@ +isMember($vars['user'])) forward(); + + + // Get input data + $title = 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'); + //$user = $_SESSION['user']->getGUID(); // 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 we actually have permission to edit + $topic = get_entity($topic_guid); + if ($topic) + { + + $user = $topic->getOwner(); + + 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; + + // 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 + + // now let's edit the message annotation + update_annotation($message_id, "group_topic_post", $message, "",$user, $access); + + // save the changes + if (!$topic->save()) { + // register_error(elgg_echo("forumtopic:error")); + } + + // Success message + system_message(elgg_echo("groups:forumtopic:edited")); + + } + } + } + // Forward to the group forum page + global $CONFIG; + $url = $CONFIG->wwwroot . "pg/groups/forum/{$group_guid}/"; + forward($url); + +?> + diff --git a/mod/groups/actions/groupskillinvitation.php b/mod/groups/actions/groupskillinvitation.php new file mode 100644 index 000000000..78c920df0 --- /dev/null +++ b/mod/groups/actions/groupskillinvitation.php @@ -0,0 +1,32 @@ +guid, 'invited', $user->guid)) + { + remove_entity_relationship($group->guid, 'invited', $user->guid); + system_message(elgg_echo("groups:joinrequestkilled")); + } + + forward($_SERVER['HTTP_REFERER']); + +?> \ No newline at end of file diff --git a/mod/groups/actions/groupskillrequest.php b/mod/groups/actions/groupskillrequest.php new file mode 100644 index 000000000..03a318e4a --- /dev/null +++ b/mod/groups/actions/groupskillrequest.php @@ -0,0 +1,32 @@ +guid, 'membership_request', $group->guid)) + { + remove_entity_relationship($user->guid, 'membership_request', $group->guid); + system_message(elgg_echo("groups:joinrequestkilled")); + } + + forward($_SERVER['HTTP_REFERER']); + +?> \ No newline at end of file diff --git a/mod/groups/actions/invite.php b/mod/groups/actions/invite.php new file mode 100644 index 000000000..d2fd75c28 --- /dev/null +++ b/mod/groups/actions/invite.php @@ -0,0 +1,69 @@ +owner_guid) + { + if (!check_entity_relationship($group->guid, 'invited', $user->guid)) + { + if ($user->isFriend()) + { + + // Create relationship + add_entity_relationship($group->guid, 'invited', $user->guid); + + // Send email + $url = "{$CONFIG->url}pg/groups/invitations/{$user->username}"; + if (notify_user($user->getGUID(), $group->owner_guid, + sprintf(elgg_echo('groups:invite:subject'), $user->name, $group->name), + sprintf(elgg_echo('groups:invite:body'), $user->name, $logged_in_user->name, $group->name, $url), + NULL)) + system_message(elgg_echo("groups:userinvited")); + else + register_error(elgg_echo("groups:usernotinvited")); + + } + else + register_error(elgg_echo("groups:usernotinvited")); + } + else + register_error(elgg_echo("groups:useralreadyinvited")); + } + else + register_error(elgg_echo("groups:notowner")); + } + } +} + +forward($_SERVER['HTTP_REFERER']); + +?> diff --git a/mod/groups/actions/join.php b/mod/groups/actions/join.php new file mode 100644 index 000000000..3947f8efc --- /dev/null +++ b/mod/groups/actions/join.php @@ -0,0 +1,65 @@ +isPublicMembership()) + { + if ($group->join($user)) + { + system_message(elgg_echo("groups:joined")); + + // Remove any invite or join request flags + remove_entity_relationship($group->guid, 'invited', $user->guid); + remove_entity_relationship($user->guid, 'membership_request', $group->guid); + + // add to river + add_to_river('river/group/create','join',$user->guid,$group->guid); + + forward($group->getURL()); + exit; + } + else + register_error(elgg_echo("groups:cantjoin")); + } + else + { + // Closed group, request membership + system_message(elgg_echo('groups:privategroup')); + forward(elgg_add_action_tokens_to_url($CONFIG->url . "action/groups/joinrequest?user_guid=$user_guid&group_guid=$group_guid")); + exit; + } + } + else + register_error(elgg_echo("groups:cantjoin")); + + forward($_SERVER['HTTP_REFERER']); + exit; +?> diff --git a/mod/groups/actions/joinrequest.php b/mod/groups/actions/joinrequest.php new file mode 100644 index 000000000..51c400223 --- /dev/null +++ b/mod/groups/actions/joinrequest.php @@ -0,0 +1,84 @@ +isMember($user))) +{ + // If open group or invite exists + if ( + ($group->isPublicMembership()) || + (check_entity_relationship($group->guid, 'invited', $user->guid)) + ) + { + //$ia = elgg_set_ignore_access(TRUE); + if ($group->join($user)) + { + // Remove relationships + remove_entity_relationship($group->guid, 'invited', $user->guid); + remove_entity_relationship($user->guid, 'membership_request', $group->guid); + + // Group joined + system_message(elgg_echo('groups:joined')); + elgg_set_ignore_access($ia); + + forward($group->getURL()); + exit; + } + else { + elgg_set_ignore_access($ia); + system_message(elgg_echo('groups:cantjoin')); + } + } + else + { + // If join request not already made + if (!check_entity_relationship($user->guid, 'membership_request', $group->guid)) + { + // Add membership requested + add_entity_relationship($user->guid, 'membership_request', $group->guid); + + // Send email + $url = "{$CONFIG->url}mod/groups/membershipreq.php?group_guid={$group->guid}"; + if (notify_user($group->owner_guid, $user->getGUID(), + sprintf(elgg_echo('groups:request:subject'), $user->name, $group->name), + sprintf(elgg_echo('groups:request:body'), $group->getOwnerEntity()->name, $user->name, $group->name, $user->getURL(), $url), + NULL)) + system_message(elgg_echo("groups:joinrequestmade")); + else + register_error(elgg_echo("groups:joinrequestnotmade")); + } + else + system_message(elgg_echo("groups:joinrequestmade")); + } +} + +forward($_SERVER['HTTP_REFERER']); \ No newline at end of file diff --git a/mod/groups/actions/leave.php b/mod/groups/actions/leave.php new file mode 100644 index 000000000..b68eb7607 --- /dev/null +++ b/mod/groups/actions/leave.php @@ -0,0 +1,43 @@ +getOwner() != $_SESSION['guid']) { + if ($group->leave($user)) + system_message(elgg_echo("groups:left")); + else + register_error(elgg_echo("groups:cantleave")); + } else { + register_error(elgg_echo("groups:cantleave")); + } + } + else + register_error(elgg_echo("groups:cantleave")); + + forward($_SERVER['HTTP_REFERER']); + exit; +?> \ No newline at end of file diff --git a/mod/groups/addtopic.php b/mod/groups/addtopic.php new file mode 100644 index 000000000..39ef62eec --- /dev/null +++ b/mod/groups/addtopic.php @@ -0,0 +1,29 @@ + + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + */ + + // Load Elgg engine + require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); + + gatekeeper(); + + $page_owner = set_page_owner((int) get_input('group_guid')); + + if (!(page_owner_entity() instanceof ElggGroup)) forward(); + + // sort the display + $area2 = elgg_view("forms/forums/addtopic"); + $body = elgg_view_layout('two_column_left_sidebar',$area1, $area2); + + // Display page + page_draw(elgg_echo('groups:addtopic'),$body); + +?> \ No newline at end of file diff --git a/mod/groups/all.php b/mod/groups/all.php new file mode 100644 index 000000000..fd60ce90a --- /dev/null +++ b/mod/groups/all.php @@ -0,0 +1,71 @@ + 'group', 'owner_guid' => 0, 'limit' => $limit, 'full_view' => false)); + break; + case "pop": + $objects = list_entities_by_relationship_count('member', true, "", "", 0, $limit, false); + break; + case "active": + $objects = list_entities_from_annotations("object", "groupforumtopic", "group_topic_post", "", 40, 0, 0, false, true); + break; + case 'default': + $objects = elgg_list_entities(array('types' => 'group', 'limit' => $limit, 'full_view' => FALSE)); + break; + } + } + + //get a group count + $group_count = elgg_get_entities(array('types' => 'group', 'limit' => 10, 'count' => TRUE)); + + //find groups + $area1 = elgg_view("groups/find"); + + //menu options + $area1 .= elgg_view("groups/side_menu"); + + //featured groups + $featured_groups = elgg_get_entities_from_metadata(array('metadata_name' => 'featured_group', 'metadata_value' => 'yes', 'types' => 'group', 'limit' => 10)); + $area1 .= elgg_view("groups/featured", array("featured" => $featured_groups)); + + + set_context($context); + + $title = sprintf(elgg_echo("groups:all"),page_owner_entity()->name); + $area2 = elgg_view_title($title); + $area2 .= elgg_view('groups/contentwrapper', array('body' => elgg_view("groups/group_sort_menu", array("count" => $group_count, "filter" => $filter)) . $objects)); + $body = elgg_view_layout('sidebar_boxes',$area1, $area2); + + // Finally draw the page + page_draw($title, $body); + + + +?> \ No newline at end of file diff --git a/mod/groups/discussions.php b/mod/groups/discussions.php new file mode 100644 index 000000000..64b73cd2b --- /dev/null +++ b/mod/groups/discussions.php @@ -0,0 +1,32 @@ + + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + */ + + // Load Elgg engine + require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); + + group_gatekeeper(); + + // Display them + $area2 = elgg_view_title(elgg_echo("groups:latestdiscussion")); + set_context('search'); + $area2 .= list_entities_from_annotations("object", "groupforumtopic", "group_topic_post", "", 40, 0, 0, false, true); + set_context('groups'); + + $body = elgg_view_layout("two_column_left_sidebar", '', $area2); + + // Display page + page_draw(elgg_echo('groups:latestdiscussion'),$body); + + +?> \ No newline at end of file diff --git a/mod/groups/edit.php b/mod/groups/edit.php new file mode 100644 index 000000000..2e99b578c --- /dev/null +++ b/mod/groups/edit.php @@ -0,0 +1,33 @@ +canEdit())) + { + $body .= elgg_view("forms/groups/edit", array('entity' => $group)); + + } else { + $body .= elgg_view('groups/contentwrapper',array('body' => elgg_echo('groups:noaccess'))); + } + + $body = elgg_view_layout('two_column_left_sidebar', '', $body); + + page_draw($title, $body); +?> \ No newline at end of file diff --git a/mod/groups/edittopic.php b/mod/groups/edittopic.php new file mode 100644 index 000000000..494c94ab9 --- /dev/null +++ b/mod/groups/edittopic.php @@ -0,0 +1,36 @@ + + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + */ + + // 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 (!$page_owner->isMember($_SESSION['user'])) forward(); + + if (!(page_owner_entity() 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('two_column_left_sidebar', '', $area2); + + // Display page + page_draw(elgg_echo('groups:edittopic'),$body); + +?> \ No newline at end of file diff --git a/mod/groups/forum.php b/mod/groups/forum.php new file mode 100644 index 000000000..91a592373 --- /dev/null +++ b/mod/groups/forum.php @@ -0,0 +1,35 @@ + $topics)); + set_context('groups'); + + $body = elgg_view_layout('two_column_left_sidebar',$area1, $area2); + + $title = elgg_echo('item:object:groupforumtopic'); + + // Finally draw the page + page_draw($title, $body); + + + +?> \ No newline at end of file diff --git a/mod/groups/graphics/defaultlarge.gif b/mod/groups/graphics/defaultlarge.gif new file mode 100644 index 000000000..b0921b8d8 Binary files /dev/null and b/mod/groups/graphics/defaultlarge.gif differ diff --git a/mod/groups/graphics/defaultmedium.gif b/mod/groups/graphics/defaultmedium.gif new file mode 100644 index 000000000..ae230a3d7 Binary files /dev/null and b/mod/groups/graphics/defaultmedium.gif differ diff --git a/mod/groups/graphics/defaultsmall.gif b/mod/groups/graphics/defaultsmall.gif new file mode 100644 index 000000000..81d89110d Binary files /dev/null and b/mod/groups/graphics/defaultsmall.gif differ diff --git a/mod/groups/graphics/defaulttiny.gif b/mod/groups/graphics/defaulttiny.gif new file mode 100644 index 000000000..86dc96ae4 Binary files /dev/null and b/mod/groups/graphics/defaulttiny.gif differ diff --git a/mod/groups/graphics/icon.php b/mod/groups/graphics/icon.php new file mode 100644 index 000000000..8c596d53b --- /dev/null +++ b/mod/groups/graphics/icon.php @@ -0,0 +1,45 @@ +owner_guid = $group->owner_guid; + $filehandler->setFilename("groups/" . $group->guid . $size . ".jpg"); + + $success = false; + if ($filehandler->open("read")) { + if ($contents = $filehandler->read($filehandler->size())) { + $success = true; + } + } + + if (!$success) { + $contents = @file_get_contents($CONFIG->pluginspath . "groups/graphics/default{$size}.jpg"); + } + + header("Content-type: image/jpeg"); + header('Expires: ' . date('r',time() + 864000)); + header("Pragma: public"); + header("Cache-Control: public"); + header("Content-Length: " . strlen($contents)); + echo $contents; +?> \ No newline at end of file diff --git a/mod/groups/groupprofile.php b/mod/groups/groupprofile.php new file mode 100644 index 000000000..80cbd41ee --- /dev/null +++ b/mod/groups/groupprofile.php @@ -0,0 +1,60 @@ +name; + + // Hide some items from closed groups when the user is not logged in. + $view_all = true; + + $groupaccess = group_gatekeeper(false); + if (!$groupaccess) + $view_all = false; + + + $area2 = elgg_view_title($title); + $area2 .= elgg_view('group/group', array('entity' => $group, 'user' => $_SESSION['user'], 'full' => true)); + + if ($view_all) { + //group profile 'items' - these are not real widgets, just contents to display + $area2 .= elgg_view('groups/profileitems',array('entity' => $group)); + + //group members + $area3 = elgg_view('groups/members',array('entity' => $group)); + } + else + { + $area2 .= elgg_view('groups/closedmembership', array('entity' => $group, 'user' => $_SESSION['user'], 'full' => true)); + + } + + $body = elgg_view_layout('two_column_left_sidebar', $area1, $area2, $area3); + } else { + $title = elgg_echo('groups:notfound'); + + $area2 = elgg_view_title($title); + $area2 .= elgg_view('groups/contentwrapper',array('body' => elgg_echo('groups:notfound:details'))); + + $body = elgg_view_layout('two_column_left_sidebar', "", $area2,""); + } + + // Finally draw the page + page_draw($title, $body); +?> \ No newline at end of file diff --git a/mod/groups/index.php b/mod/groups/index.php new file mode 100644 index 000000000..b21d5962b --- /dev/null +++ b/mod/groups/index.php @@ -0,0 +1,31 @@ +name); + + // Get objects + $area2 = elgg_view_title($title); + + set_context('search'); + $objects = elgg_list_entities(array('types' => 'group', 'owner_guid' => page_owner(), 'limit' => $limit, 'full_view' => FALSE)); + set_context('groups'); + + $area2 .= $objects; + $body = elgg_view_layout('two_column_left_sidebar',$area1, $area2); + + // Finally draw the page + page_draw($title, $body); +?> \ No newline at end of file diff --git a/mod/groups/invitations.php b/mod/groups/invitations.php new file mode 100644 index 000000000..fa2156b35 --- /dev/null +++ b/mod/groups/invitations.php @@ -0,0 +1,33 @@ +getGUID()); + + $area2 .= elgg_view('groups/invitationrequests',array('invitations' => $invitations)); + elgg_set_ignore_access($ia); +} else { + $area2 .= elgg_echo("groups:noaccess"); +} + +$body = elgg_view_layout('two_column_left_sidebar', '', $area2); + +page_draw($title, $body); \ No newline at end of file diff --git a/mod/groups/invite.php b/mod/groups/invite.php new file mode 100644 index 000000000..3791b9b50 --- /dev/null +++ b/mod/groups/invite.php @@ -0,0 +1,34 @@ +canEdit())) + { + $area2 .= elgg_view("forms/groups/invite", array('entity' => $group)); + + } else { + $area2 .= elgg_echo("groups:noaccess"); + } + + $body = elgg_view_layout('two_column_left_sidebar', $area1, $area2); + + page_draw($title, $body); +?> \ No newline at end of file diff --git a/mod/groups/languages/en.php b/mod/groups/languages/en.php new file mode 100644 index 000000000..6c0d8ef26 --- /dev/null +++ b/mod/groups/languages/en.php @@ -0,0 +1,228 @@ + "Groups", + 'groups:owned' => "Groups you own", + 'groups:yours' => "Your groups", + 'groups:user' => "%s's groups", + 'groups:all' => "All site groups", + 'groups:new' => "Create a new group", + 'groups:edit' => "Edit group", + 'groups:delete' => 'Delete group', + 'groups:membershiprequests' => 'Manage join requests', + 'groups:invitations' => 'Group invitations', + + 'groups:icon' => 'Group icon (leave blank to leave unchanged)', + 'groups:name' => 'Group name', + 'groups:username' => 'Group short name (displayed in URLs, alphanumeric characters only)', + 'groups:description' => 'Description', + 'groups:briefdescription' => 'Brief description', + 'groups:interests' => 'Tags', + 'groups:website' => 'Website', + 'groups:members' => 'Group members', + 'groups:membership' => "Group membership permissions", + 'groups:access' => "Access permissions", + 'groups:owner' => "Owner", + 'groups:widget:num_display' => 'Number of groups to display', + 'groups:widget:membership' => 'Group membership', + 'groups:widgets:description' => 'Display the groups you are a member of on your profile', + 'groups:noaccess' => 'No access to group', + 'groups:cantedit' => 'You can not edit this group', + 'groups:saved' => 'Group saved', + 'groups:featured' => 'Featured groups', + 'groups:makeunfeatured' => 'Unfeature', + 'groups:makefeatured' => 'Make featured', + 'groups:featuredon' => 'You have made this group a featured one.', + 'groups:unfeature' => 'You have removed this group from the featured list', + 'groups:joinrequest' => 'Request membership', + 'groups:join' => 'Join group', + 'groups:leave' => 'Leave group', + 'groups:invite' => 'Invite friends', + 'groups:inviteto' => "Invite friends to '%s'", + 'groups:nofriends' => "You have no friends left who have not been invited to this group.", + 'groups:viagroups' => "via groups", + 'groups:group' => "Group", + 'groups:search:tags' => "tag", + + 'groups:notfound' => "Group not found", + 'groups:notfound:details' => "The requested group either does not exist or you do not have access to it", + + 'groups:requests:none' => 'There are no outstanding membership requests at this time.', + + 'groups:invitations:none' => 'There are no oustanding invitations at this time.', + + 'item:object:groupforumtopic' => "Discussion topics", + + 'groupforumtopic:new' => "New discussion post", + + 'groups:count' => "groups created", + 'groups:open' => "open group", + 'groups:closed' => "closed group", + 'groups:member' => "members", + 'groups:searchtag' => "Search for groups by tag", + + + /* + * Access + */ + 'groups:access:private' => 'Closed - Users must be invited', + 'groups:access:public' => 'Open - Any user may join', + 'groups:closedgroup' => 'This group has a closed membership. To ask to be added, click the "request membership" menu link.', + 'groups:visibility' => 'Who can see this group?', + + /* + Group tools + */ + 'groups:enablepages' => 'Enable group pages', + 'groups:enableforum' => 'Enable group discussion', + 'groups:enablefiles' => 'Enable group files', + 'groups:yes' => 'yes', + 'groups:no' => 'no', + + 'group:created' => 'Created %s with %d posts', + 'groups:lastupdated' => 'Last updated %s by %s', + 'groups:pages' => 'Group pages', + 'groups:files' => 'Group files', + + /* + Group forum strings + */ + + 'group:replies' => 'Replies', + 'groups:forum' => 'Group discussion', + 'groups:addtopic' => 'Add a topic', + 'groups:forumlatest' => 'Latest discussion', + 'groups:latestdiscussion' => 'Latest discussion', + 'groups:newest' => 'Newest', + 'groups:popular' => 'Popular', + 'groupspost:success' => 'Your comment was succesfully posted', + 'groups:alldiscussion' => 'Latest discussion', + 'groups:edittopic' => 'Edit topic', + 'groups:topicmessage' => 'Topic message', + 'groups:topicstatus' => 'Topic status', + 'groups:reply' => 'Post a comment', + 'groups:topic' => 'Topic', + 'groups:posts' => 'Posts', + 'groups:lastperson' => 'Last person', + 'groups:when' => 'When', + 'grouptopic:notcreated' => 'No topics have been created.', + 'groups:topicopen' => 'Open', + 'groups:topicclosed' => 'Closed', + 'groups:topicresolved' => 'Resolved', + 'grouptopic:created' => 'Your topic was created.', + 'groupstopic:deleted' => 'The topic has been deleted.', + 'groups:topicsticky' => 'Sticky', + 'groups:topicisclosed' => 'This topic is closed.', + 'groups:topiccloseddesc' => 'This topic has now been closed and is not accepting new comments.', + '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 private, requesting membership.', + 'groups:notitle' => 'Groups must have a title', + 'groups:cantjoin' => 'Can not join group', + 'groups:cantleave' => 'Could not leave group', + 'groups:addedtogroup' => 'Successfully added the user to the group', + 'groups:joinrequestnotmade' => 'Could not request to join group', + 'groups:joinrequestmade' => 'Requested to join group', + 'groups:joined' => 'Successfully joined group!', + 'groups:left' => 'Successfully left group', + 'groups:notowner' => 'Sorry, you are not the owner of this group.', + 'groups:notmember' => 'Sorry, you are not a member of this group.', + 'groups:alreadymember' => 'You are already a member of this group!', + 'groups:userinvited' => 'User has been invited.', + 'groups:usernotinvited' => 'User could not be invited.', + 'groups:useralreadyinvited' => 'User has already been invited', + 'groups:updated' => "Last comment", + 'groups:invite:subject' => "%s you have been invited to join %s!", + 'groups:started' => "Started by", + 'groups:joinrequest:remove:check' => 'Are you sure you want to remove this join request?', + 'groups:invite:body' => "Hi %s, + +%s invited you to join the '%s' group, click below to confirm: + +%s", + + 'groups:welcome:subject' => "Welcome to the %s group!", + 'groups:welcome:body' => "Hi %s! + +You are now a member of the '%s' group! Click below to begin posting! + +%s", + + 'groups:request:subject' => "%s has requested to join %s", + 'groups:request:body' => "Hi %s, + +%s has requested to join the '%s' group, click below to view their profile: + +%s + +or click below to confirm request: + +%s", + + /* + Forum river items + */ + + 'groups:river:member' => 'is now a member of', + 'groupforum:river:updated' => '%s has updated', + 'groupforum:river:update' => 'this discussion topic', + 'groupforum:river:created' => '%s has created', + 'groupforum:river:create' => 'a new discussion topic titled', + 'groupforum:river:posted' => '%s has posted a new comment', + 'groupforum:river:annotate:create' => 'on this discussion topic', + 'groupforum:river:postedtopic' => '%s has started a new discussion topic titled', + 'groups:river:member' => '%s is now a member of', + 'groups:river:togroup' => 'to the group', + + 'groups:nowidgets' => 'No widgets have been defined for this group.', + + + 'groups:widgets:members:title' => 'Group members', + 'groups:widgets:members:description' => 'List the members of a group.', + 'groups:widgets:members:label:displaynum' => 'List the members of a group.', + 'groups:widgets:members:label:pleaseedit' => 'Please configure this widget.', + + 'groups:widgets:entities:title' => "Objects in group", + 'groups:widgets:entities:description' => "List the objects saved in this group", + 'groups:widgets:entities:label:displaynum' => 'List the objects of a group.', + 'groups:widgets:entities:label:pleaseedit' => 'Please configure this widget.', + + 'groups:forumtopic:edited' => 'Forum topic successfully edited.', + + 'groups:allowhiddengroups' => 'Do you want to allow private (invisible) groups?', + + /** + * Action messages + */ + 'group:deleted' => 'Group and group contents deleted', + 'group:notdeleted' => 'Group could not be deleted', + + 'grouppost:deleted' => 'Group posting successfully deleted', + 'grouppost:notdeleted' => 'Group posting could not be deleted', + 'groupstopic:deleted' => 'Topic deleted', + 'groupstopic:notdeleted' => 'Topic not deleted', + 'grouptopic:blank' => 'No topic', + 'grouptopic:notfound' => 'Could not find the topic', + 'grouppost:nopost' => 'Empty post', + 'groups:deletewarning' => "Are you sure you want to delete this group? There is no undo!", + + 'groups:joinrequestkilled' => 'The join request has been deleted.', + ); + + add_translation("en",$english); +?> diff --git a/mod/groups/manifest.xml b/mod/groups/manifest.xml new file mode 100644 index 000000000..e2c36f92f --- /dev/null +++ b/mod/groups/manifest.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/mod/groups/membership.php b/mod/groups/membership.php new file mode 100644 index 000000000..9226a56d5 --- /dev/null +++ b/mod/groups/membership.php @@ -0,0 +1,38 @@ + + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + */ + + require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); + + gatekeeper(); + group_gatekeeper(); + + $limit = get_input("limit", 10); + $offset = get_input("offset", 0); + + if (page_owner() == $_SESSION['user']->guid) { + $title = elgg_echo("groups:yours"); + } else $title = sprintf(elgg_echo("groups:owned"),page_owner_entity()->name); + + // Get objects + $area2 = elgg_view_title($title); + + set_context('search'); + //$objects = list_entities("group", "", page_owner(), $limit, false); + $objects = list_entities_from_relationship('member',page_owner(),false,'group','',0, $limit,false, false); + set_context('groups'); + + $area2 .= $objects; + $body = elgg_view_layout('two_column_left_sidebar',$area1, $area2); + + // Finally draw the page + page_draw($title, $body); +?> \ No newline at end of file diff --git a/mod/groups/membershipreq.php b/mod/groups/membershipreq.php new file mode 100644 index 000000000..368057711 --- /dev/null +++ b/mod/groups/membershipreq.php @@ -0,0 +1,36 @@ +canEdit())) + { + + $requests = elgg_get_entities_from_relationship(array('relationship' => 'membership_request', 'relationship_guid' => $group_guid, 'inverse_relationship' => TRUE, 'limit' => 9999)); + $area2 .= elgg_view('groups/membershiprequests',array('requests' => $requests, 'entity' => $group)); + + } else { + $area2 .= elgg_echo("groups:noaccess"); + } + + $body = elgg_view_layout('two_column_left_sidebar', $area1, $area2); + + page_draw($title, $body); +?> \ No newline at end of file diff --git a/mod/groups/new.php b/mod/groups/new.php new file mode 100644 index 000000000..b2a24f80f --- /dev/null +++ b/mod/groups/new.php @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/mod/groups/start.php b/mod/groups/start.php new file mode 100644 index 000000000..b9dde5d10 --- /dev/null +++ b/mod/groups/start.php @@ -0,0 +1,613 @@ +wwwroot . "pg/groups/world/"); + //add_menu(elgg_echo('groups:alldiscussion'),$CONFIG->wwwroot."mod/groups/discussions.php"); + } + else + { + add_menu(elgg_echo('groups'), $CONFIG->wwwroot . "pg/groups/world/"); + } + + // Register a page handler, so we can have nice URLs + register_page_handler('groups','groups_page_handler'); + + // Register a URL handler for groups and forum topics + register_entity_url_handler('groups_url','group','all'); + register_entity_url_handler('groups_groupforumtopic_url','object','groupforumtopic'); + + // Register an icon handler for groups + register_page_handler('groupicon','groups_icon_handler'); + + // Register some actions + register_action("groups/edit",false, $CONFIG->pluginspath . "groups/actions/edit.php"); + register_action("groups/delete",false, $CONFIG->pluginspath . "groups/actions/delete.php"); + register_action("groups/join",false, $CONFIG->pluginspath . "groups/actions/join.php"); + register_action("groups/leave",false, $CONFIG->pluginspath . "groups/actions/leave.php"); + register_action("groups/joinrequest",false, $CONFIG->pluginspath . "groups/actions/joinrequest.php"); + register_action("groups/killrequest",false,$CONFIG->pluginspath . "groups/actions/groupskillrequest.php"); + register_action("groups/killinvitation",false,$CONFIG->pluginspath . "groups/actions/groupskillinvitation.php"); + register_action("groups/addtogroup",false, $CONFIG->pluginspath . "groups/actions/addtogroup.php"); + register_action("groups/invite",false, $CONFIG->pluginspath . "groups/actions/invite.php"); + + // Use group widgets + use_widgets('groups'); + + // Add a page owner handler + add_page_owner_handler('groups_page_owner_handler'); + + // Add some widgets + add_widget_type('a_users_groups',elgg_echo('groups:widget:membership'), elgg_echo('groups:widgets:description')); + + + //extend some views + elgg_extend_view('profile/icon','groups/icon'); + elgg_extend_view('css','groups/css'); + + // Access permissions + register_plugin_hook('access:collections:write', 'all', 'groups_write_acl_plugin_hook'); + //register_plugin_hook('access:collections:read', 'all', 'groups_read_acl_plugin_hook'); + + // Notification hooks + if (is_callable('register_notification_object')) + register_notification_object('object', 'groupforumtopic', elgg_echo('groupforumtopic:new')); + register_plugin_hook('object:notifications','object','group_object_notifications_intercept'); + + // Listen to notification events and supply a more useful message + register_plugin_hook('notify:entity:message', 'object', 'groupforumtopic_notify_message'); + + // add the forum tool option + add_group_tool_option('forum',elgg_echo('groups:enableforum'),true); + + // Now override icons + register_plugin_hook('entity:icon:url', 'group', 'groups_groupicon_hook'); + } + + /** + * Event handler for group forum posts + * + */ + function group_object_notifications($event, $object_type, $object) { + + static $flag; + if (!isset($flag)) $flag = 0; + + if (is_callable('object_notifications')) + if ($object instanceof ElggObject) { + if ($object->getSubtype() == 'groupforumtopic') { + //if ($object->countAnnotations('group_topic_post') > 0) { + if ($flag == 0) { + $flag = 1; + object_notifications($event, $object_type, $object); + } + //} + } + } + + } + + /** + * Intercepts the notification on group topic creation and prevents a notification from going out + * (because one will be sent on the annotation) + * + * @param unknown_type $hook + * @param unknown_type $entity_type + * @param unknown_type $returnvalue + * @param unknown_type $params + * @return unknown + */ + function group_object_notifications_intercept($hook, $entity_type, $returnvalue, $params) { + if (isset($params)) { + if ($params['event'] == 'create' && $params['object'] instanceof ElggObject) { + if ($params['object']->getSubtype() == 'groupforumtopic') { + return true; + } + } + } + return null; + } + + /** + * Returns a more meaningful message + * + * @param unknown_type $hook + * @param unknown_type $entity_type + * @param unknown_type $returnvalue + * @param unknown_type $params + */ + function groupforumtopic_notify_message($hook, $entity_type, $returnvalue, $params) + { + $entity = $params['entity']; + $to_entity = $params['to_entity']; + $method = $params['method']; + if (($entity instanceof ElggEntity) && ($entity->getSubtype() == 'groupforumtopic')) + { + + $descr = $entity->description; + $title = $entity->title; + global $CONFIG; + $url = $entity->getURL(); + + $msg = get_input('topicmessage'); + if (empty($msg)) $msg = get_input('topic_post'); + if (!empty($msg)) $msg = $msg . "\n\n"; else $msg = ''; + + $owner = get_entity($entity->container_guid); + if ($method == 'sms') { + return elgg_echo("groupforumtopic:new") . ': ' . $url . " ({$owner->name}: {$title})"; + } else { + return $_SESSION['user']->name . ' ' . elgg_echo("groups:viagroups") . ': ' . $title . "\n\n" . $msg . "\n\n" . $entity->getURL(); + } + + } + return null; + } + + /** + * This function loads a set of default fields into the profile, then triggers a hook letting other plugins to edit + * add and delete fields. + * + * Note: This is a secondary system:init call and is run at a super low priority to guarantee that it is called after all + * other plugins have initialised. + */ + function groups_fields_setup() + { + global $CONFIG; + + $profile_defaults = array( + + 'name' => 'text', + 'description' => 'longtext', + 'briefdescription' => 'text', + 'interests' => 'tags', + 'website' => 'url', + + ); + + $CONFIG->group = trigger_plugin_hook('profile:fields', 'group', NULL, $profile_defaults); + + // register any tag metadata names + foreach ($CONFIG->group as $name => $type) { + if ($type == 'tags') { + elgg_register_tag_metadata_name($name); + + // register a tag name translation + add_translation(get_current_language(), array("tag_names:$name" => elgg_echo("groups:$name"))); + } + } + } + + /** + * Sets up submenus for the groups system. Triggered on pagesetup. + * + */ + function groups_submenus() { + + global $CONFIG; + + // Get the page owner entity + $page_owner = page_owner_entity(); + + // Submenu items for all group pages + if ($page_owner instanceof ElggGroup && get_context() == 'groups') { + if (isloggedin()) { + if ($page_owner->canEdit()) { + add_submenu_item(elgg_echo('groups:edit'),$CONFIG->wwwroot . "mod/groups/edit.php?group_guid=" . $page_owner->getGUID(), '1groupsactions'); + add_submenu_item(elgg_echo('groups:invite'),$CONFIG->wwwroot . "mod/groups/invite.php?group_guid={$page_owner->getGUID()}", '1groupsactions'); + if (!$page_owner->isPublicMembership()) + add_submenu_item(elgg_echo('groups:membershiprequests'),$CONFIG->wwwroot . "mod/groups/membershipreq.php?group_guid={$page_owner->getGUID()}", '1groupsactions'); + } + if ($page_owner->isMember($_SESSION['user'])) { + if ($page_owner->getOwner() != $_SESSION['guid']) { + $url = elgg_add_action_tokens_to_url($CONFIG->wwwroot . "action/groups/leave?group_guid=" . $page_owner->getGUID()); + add_submenu_item(elgg_echo('groups:leave'), $url, '1groupsactions'); + } + } else { + if ($page_owner->isPublicMembership()) { + $url = elgg_add_action_tokens_to_url($CONFIG->wwwroot . "action/groups/join?group_guid={$page_owner->getGUID()}"); + add_submenu_item(elgg_echo('groups:join'), $url, '1groupsactions'); + } else { + $url = elgg_add_action_tokens_to_url($CONFIG->wwwroot . "action/groups/joinrequest?group_guid={$page_owner->getGUID()}"); + add_submenu_item(elgg_echo('groups:joinrequest'), $url, '1groupsactions'); + } + } + } + + if($page_owner->forum_enable != "no"){ + add_submenu_item(elgg_echo('groups:forum'),$CONFIG->wwwroot . "pg/groups/forum/{$page_owner->getGUID()}/", '1groupslinks'); + } + + } + + // Add submenu options + if (get_context() == 'groups' && !($page_owner instanceof ElggGroup)) { + if (isloggedin()) { + add_submenu_item(elgg_echo('groups:new'), $CONFIG->wwwroot."pg/groups/new/", '1groupslinks'); + add_submenu_item(elgg_echo('groups:owned'), $CONFIG->wwwroot . "pg/groups/owned/" . $_SESSION['user']->username, '1groupslinks'); + add_submenu_item(elgg_echo('groups:yours'), $CONFIG->wwwroot . "pg/groups/member/" . $_SESSION['user']->username, '1groupslinks'); + add_submenu_item(elgg_echo('groups:invitations'), $CONFIG->wwwroot . "pg/groups/invitations/" . $_SESSION['user']->username, '1groupslinks'); + } + add_submenu_item(elgg_echo('groups:all'), $CONFIG->wwwroot . "pg/groups/world/", '1groupslinks'); + } + + } + + /** + * Set a page owner handler. + * + */ + function groups_page_owner_handler() + { + $group_guid = get_input('group_guid'); + if ($group_guid) + { + $group = get_entity($group_guid); + if ($group instanceof ElggGroup) + return $group->owner_guid; + } + + return false; + } + + /** + * Group page handler + * + * @param array $page Array of page elements, forwarded by the page handling mechanism + */ + function groups_page_handler($page) + { + global $CONFIG; + + + if (isset($page[0])) + { + // See what context we're using + switch($page[0]) + { + case 'invitations': + include($CONFIG->pluginspath . "groups/invitations.php"); + $user_guid = get_loggedin_userid(); + + $invitations = elgg_get_entities_from_relationship(array( + 'relationship' => 'membership_request', + 'guid' => $user_guid + )); + + break; + + case "new" : + include($CONFIG->pluginspath . "groups/new.php"); + break; + case "world": + set_context('groups'); + set_page_owner(0); + include($CONFIG->pluginspath . "groups/all.php"); + break; + case "forum": + set_input('group_guid', $page[1]); + include($CONFIG->pluginspath . "groups/forum.php"); + break; + case "owned" : + // Owned by a user + if (isset($page[1])) + set_input('username',$page[1]); + + include($CONFIG->pluginspath . "groups/index.php"); + break; + case "member" : + // User is a member of + if (isset($page[1])) + set_input('username',$page[1]); + + include($CONFIG->pluginspath . "groups/membership.php"); + break; + default: + set_input('group_guid', $page[0]); + include($CONFIG->pluginspath . "groups/groupprofile.php"); + break; + } + } + + } + + /** + * Handle group icons. + * + * @param unknown_type $page + */ + function groups_icon_handler($page) { + + global $CONFIG; + + // The username should be the file we're getting + if (isset($page[0])) { + set_input('group_guid',$page[0]); + } + if (isset($page[1])) { + set_input('size',$page[1]); + } + // Include the standard profile index + include($CONFIG->pluginspath . "groups/graphics/icon.php"); + + } + + /** + * Populates the ->getUrl() method for group objects + * + * @param ElggEntity $entity File entity + * @return string File URL + */ + function groups_url($entity) { + + global $CONFIG; + + $title = friendly_title($entity->name); + + return $CONFIG->url . "pg/groups/{$entity->guid}/$title/"; + + } + + function groups_groupforumtopic_url($entity) { + + global $CONFIG; + return $CONFIG->url . 'mod/groups/topicposts.php?topic='. $entity->guid .'&group_guid=' . $entity->container_guid; + + } + + /** + * Groups created, so add users to access lists. + */ + function groups_create_event_listener($event, $object_type, $object) + { + //if (($event == 'create') && ($object_type == 'group') && ($object instanceof ElggGroup)) + //{ + $group_id = create_access_collection(elgg_echo('groups:group') . ": " . $object->name); + if ($group_id) + { + $object->group_acl = $group_id; + } + else + return false; + //} + + return true; + } + + /** + * Hook to listen to read access control requests and return all the groups you are a member of. + */ + function groups_read_acl_plugin_hook($hook, $entity_type, $returnvalue, $params) + { + //error_log("READ: " . var_export($returnvalue)); + $user = $_SESSION['user']; + if ($user) + { + // Not using this because of recursion. + // Joining a group automatically add user to ACL, + // So just see if they're a member of the ACL. + //$membership = get_users_membership($user->guid); + + $members = get_members_of_access_collection($group->group_acl); + print_r($members); + exit; + + if ($membership) + { + foreach ($membership as $group) + $returnvalue[$user->guid][$group->group_acl] = elgg_echo('groups:group') . ": " . $group->name; + return $returnvalue; + } + } + } + + /** + * Return the write access for the current group if the user has write access to it. + */ + function groups_write_acl_plugin_hook($hook, $entity_type, $returnvalue, $params) + { + $page_owner = page_owner_entity(); + // get all groups if logged in + if ($loggedin = get_loggedin_user()) { + $groups = elgg_get_entities_from_relationship(array('relationship' => 'member', 'relationship_guid' => $loggedin->getGUID(), 'inverse_relationship' => FALSE, 'limit' => 999)); + if (is_array($groups)) { + foreach ($groups as $group) { + $returnvalue[$group->group_acl] = elgg_echo('groups:group') . ': ' . $group->name; + } + } + } + + // This doesn't seem to do anything. + // There are no hooks to override container permissions for groups +// +// if ($page_owner instanceof ElggGroup) +// { +// if (can_write_to_container()) +// { +// $returnvalue[$page_owner->group_acl] = elgg_echo('groups:group') . ": " . $page_owner->name; +// } +// } + return $returnvalue; + } + + /** + * Groups deleted, so remove access lists. + */ + function groups_delete_event_listener($event, $object_type, $object) + { + delete_access_collection($object->group_acl); + + return true; + } + + /** + * Listens to a group join event and adds a user to the group's access control + * + */ + function groups_user_join_event_listener($event, $object_type, $object) { + + $group = $object['group']; + $user = $object['user']; + $acl = $group->group_acl; + + add_user_to_access_collection($user->guid, $acl); + + return true; + + } + + /** + * Listens to a group leave event and removes a user from the group's access control + * + */ + function groups_user_leave_event_listener($event, $object_type, $object) { + + $group = $object['group']; + $user = $object['user']; + $acl = $group->group_acl; + + remove_user_from_access_collection($user->guid, $acl); + + return true; + + } + + /** + * This hooks into the getIcon API and provides nice user icons for users where possible. + * + * @param unknown_type $hook + * @param unknown_type $entity_type + * @param unknown_type $returnvalue + * @param unknown_type $params + * @return unknown + */ + function groups_groupicon_hook($hook, $entity_type, $returnvalue, $params) + { + global $CONFIG; + + if ((!$returnvalue) && ($hook == 'entity:icon:url') && ($params['entity'] instanceof ElggGroup)) + { + $entity = $params['entity']; + $type = $entity->type; + $viewtype = $params['viewtype']; + $size = $params['size']; + + if ($icontime = $entity->icontime) { + $icontime = "{$icontime}"; + } else { + $icontime = "default"; + } + + $filehandler = new ElggFile(); + $filehandler->owner_guid = $entity->owner_guid; + $filehandler->setFilename("groups/" . $entity->guid . $size . ".jpg"); + + if ($filehandler->exists()) { + $url = $CONFIG->url . "pg/groupicon/{$entity->guid}/$size/$icontime.jpg"; + + return $url; + } + } + } + + /** + * A simple function to see who can edit a group discussion post + * @param the comment $entity + * @param user who owns the group $group_owner + * @return boolean + */ + function groups_can_edit_discussion($entity, $group_owner) + { + + //logged in user + $user = $_SESSION['user']->guid; + + if (($entity->owner_guid == $user) || $group_owner == $user || isadminloggedin()) { + return true; + }else{ + return false; + } + + } + + /** + * Overrides topic post getURL() value. + * + */ + function group_topicpost_url($annotation) { + if ($parent = get_entity($annotation->entity_guid)) { + global $CONFIG; + return $CONFIG->wwwroot . 'mod/groups/topicposts.php?topic='.$parent->guid.'&group_guid='.$parent->container_guid.'#' . $annotation->id; + } + } + + /** + * Grabs groups by invitations + * Have to override all access until there's a way override access to getter functions. + * + * @param $user_guid + * @return unknown_type + */ + function groups_get_invited_groups($user_guid, $return_guids = FALSE) { + $ia = elgg_set_ignore_access(TRUE); + $invitations = elgg_get_entities_from_relationship(array('relationship' => 'invited', 'relationship_guid' => $user_guid, 'inverse_relationship' => TRUE, 'limit' => 9999)); + elgg_set_ignore_access($ia); + + if ($return_guids) { + $guids = array(); + foreach ($invitations as $invitation) { + $guids[] = $invitation->getGUID(); + } + + return $guids; + } + + return $invitations; + } + + register_extender_url_handler('group_topicpost_url','annotation', 'group_topic_post'); + + // Register a handler for create groups + register_elgg_event_handler('create', 'group', 'groups_create_event_listener'); + + // Register a handler for delete groups + register_elgg_event_handler('delete', 'group', 'groups_delete_event_listener'); + + // Make sure the groups initialisation function is called on initialisation + register_elgg_event_handler('init','system','groups_init'); + register_elgg_event_handler('init','system','groups_fields_setup', 10000); // Ensure this runs after other plugins + register_elgg_event_handler('join','group','groups_user_join_event_listener'); + register_elgg_event_handler('leave','group','groups_user_leave_event_listener'); + register_elgg_event_handler('pagesetup','system','groups_submenus'); + register_elgg_event_handler('annotate','all','group_object_notifications'); + + // Register actions + global $CONFIG; + register_action("groups/addtopic",false,$CONFIG->pluginspath . "groups/actions/forums/addtopic.php"); + register_action("groups/deletetopic",false,$CONFIG->pluginspath . "groups/actions/forums/deletetopic.php"); + register_action("groups/addpost",false,$CONFIG->pluginspath . "groups/actions/forums/addpost.php"); + register_action("groups/edittopic",false,$CONFIG->pluginspath . "groups/actions/forums/edittopic.php"); + register_action("groups/deletepost",false,$CONFIG->pluginspath . "groups/actions/forums/deletepost.php"); + register_action("groups/featured",false,$CONFIG->pluginspath . "groups/actions/featured.php"); + register_action("groups/editpost",false,$CONFIG->pluginspath . "groups/actions/forums/editpost.php"); + +?> diff --git a/mod/groups/topicposts.php b/mod/groups/topicposts.php new file mode 100644 index 000000000..bd2d3b1ed --- /dev/null +++ b/mod/groups/topicposts.php @@ -0,0 +1,37 @@ + + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + */ + + // 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 (!(page_owner_entity() 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("two_column_left_sidebar", '' , $area2); + + // Display page + page_draw($topic->title,$body); + +?> \ No newline at end of file diff --git a/mod/groups/views/default/forms/forums/addpost.php b/mod/groups/views/default/forms/forums/addpost.php new file mode 100644 index 000000000..004638f33 --- /dev/null +++ b/mod/groups/views/default/forms/forums/addpost.php @@ -0,0 +1,40 @@ + + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + * + * @uses $vars['entity'] Optionally, the post to edit + */ + +?> +
+

+ +

+

+ + + + + + + +

+ +
\ No newline at end of file diff --git a/mod/groups/views/default/forms/forums/addtopic.php b/mod/groups/views/default/forms/forums/addtopic.php new file mode 100644 index 000000000..d002b110a --- /dev/null +++ b/mod/groups/views/default/forms/forums/addtopic.php @@ -0,0 +1,101 @@ + + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + * + * @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 = ""; + $access_id = ACCESS_DEFAULT; + + // get the group guid + $group_guid = (int) get_input('group_guid'); + + // set the title + echo elgg_view_title(elgg_echo("groups:addtopic")); + +?> +
+ +
+ + +

+ +

+ + +

+ +

+ + +

+ +

+ + +

+ +

+ + +

+ +

+ + +

+ + +

+ +
+
diff --git a/mod/groups/views/default/forms/forums/edittopic.php b/mod/groups/views/default/forms/forums/edittopic.php new file mode 100644 index 000000000..b88dfd866 --- /dev/null +++ b/mod/groups/views/default/forms/forums/edittopic.php @@ -0,0 +1,109 @@ + + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + * + * @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']->getAnnotations('group_topic_post', 1, 0, "asc"); + + foreach($message as $mes){ + $messsage_content = $mes->value; + $message_id = $mes->id; + } + + // 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")); + +?> + + +
+ + +

+ +

+ + +

+ +

+ + +

+ +

+ + +

+ +

+ + +

+ +

+ + +

+ + + + +

+ +
diff --git a/mod/groups/views/default/forms/groups/edit.php b/mod/groups/views/default/forms/groups/edit.php new file mode 100644 index 000000000..1c5cb9b6e --- /dev/null +++ b/mod/groups/views/default/forms/groups/edit.php @@ -0,0 +1,162 @@ +membership; + } else { + $membership = ACCESS_PUBLIC; + } + +?> +
+
+ + + +

+ +

+group) && sizeof($vars['config']->group) > 0) + foreach($vars['config']->group as $shortname => $valtype) { + +?> + +

+ +

+ + + +

+ +

+ + + +

+ +

+ + + + group_tool_options)) { + foreach($vars['config']->group_tool_options as $group_option) { + $group_option_toggle_name = $group_option->name."_enable"; + if ($group_option->default_on) { + $group_option_default_value = 'yes'; + } else { + $group_option_default_value = 'no'; + } +?> +

+ +

+ +

+ + + " /> + +

+ +
+
+ +
+
+
"> + + + +
+
+
+ + + diff --git a/mod/groups/views/default/forms/groups/invite.php b/mod/groups/views/default/forms/groups/invite.php new file mode 100644 index 000000000..ebe184c53 --- /dev/null +++ b/mod/groups/views/default/forms/groups/invite.php @@ -0,0 +1,34 @@ +owner_guid); + $forward_url = $group->getURL(); + + +?> +
+
+ + $friends, 'internalname' => 'user_guid', 'highlight' => 'all')); + } + // echo elgg_view('sharing/invite',array('shares' => $shares, 'owner' => $owner, 'group' => $group)); + + ?> + + + +
+
diff --git a/mod/groups/views/default/forum/topicposts.php b/mod/groups/views/default/forum/topicposts.php new file mode 100644 index 000000000..20a545eec --- /dev/null +++ b/mod/groups/views/default/forum/topicposts.php @@ -0,0 +1,106 @@ + + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + * + * @uses $vars['entity'] The posted comment to view + */ + + +?> + +
+ + + + + + +
+ + owner_guid)) { + + //display the user icon + echo "
" . elgg_view("profile/icon",array('entity' => $post_owner, 'size' => 'small')) . "
"; + + //display the user name + echo "

" . $post_owner->name . "
"; + + } else { + echo "

"; + echo "

" . elgg_echo('profile:deleteduser') . "
"; + } + + //display the date of the comment + echo "" . friendly_time($vars['entity']->time_created) . "

"; + ?> +
+ $vars['entity']->value))); + ?> +
+ owner_guid)) { + ?> +

+ $vars['url'] . "action/groups/deletepost?post=" . $vars['entity']->id . "&topic=" . get_input('topic') . "&group=" . get_input('group_guid'), + 'text' => elgg_echo('delete'), + 'confirm' => elgg_echo('deleteconfirm'), + )); + + //display an edit link that will open up an edit area + echo " ".elgg_echo('edit').""; + echo "

"; + //get the edit form and details + $submit_input = elgg_view('input/submit', array('internalname' => 'submit', 'value' => elgg_echo('save'))); + $text_textarea = elgg_view('input/longtext', array('internalname' => 'postComment'.$vars['entity']->id, 'value' => $vars['entity']->value)); + $post = elgg_view('input/hidden', array('internalname' => 'post', 'value' => $vars['entity']->id)); + $field = elgg_view('input/hidden', array('internalname' => 'field_num', 'value' => $vars['entity']->id)); + $topic = elgg_view('input/hidden', array('internalname' => 'topic', 'value' => get_input('topic'))); + $group = elgg_view('input/hidden', array('internalname' => 'group', 'value' => get_input('group_guid'))); + + $form_body = << +

+ $text_textarea +

+ $post + $topic + $group + $field +

+ $submit_input +

+ +
+ +EOT; + +?> + + "{$vars['url']}action/groups/editpost", 'body' => $form_body, 'internalid' => 'editforumpostForm')); + ?> +
+

+ + + + \ No newline at end of file diff --git a/mod/groups/views/default/forum/topics.php b/mod/groups/views/default/forum/topics.php new file mode 100644 index 000000000..c4cd9becf --- /dev/null +++ b/mod/groups/views/default/forum/topics.php @@ -0,0 +1,33 @@ + + +

+ +isMember($vars['user'])){ + +?> + +
+ + +". elgg_echo("grouptopic:notcreated") . ""; + +?> \ No newline at end of file diff --git a/mod/groups/views/default/forum/viewposts.php b/mod/groups/views/default/forum/viewposts.php new file mode 100644 index 000000000..e7e194691 --- /dev/null +++ b/mod/groups/views/default/forum/viewposts.php @@ -0,0 +1,58 @@ + + +
+
> title; ?>
+ +countAnnotations('group_topic_post'); + $offset = (int) get_input('offset',0); + + $baseurl = $vars['url'] . "mod/groups/topicposts.php?topic={$vars['entity']->guid}&group_guid={$vars['entity']->container_guid}"; + echo elgg_view('navigation/pagination',array( + 'limit' => 50, + 'offset' => $offset, + 'baseurl' => $baseurl, + 'count' => $count, + )); + +?> + +

title; ?>

+getAnnotations('group_topic_post', 50, $offset, "asc") as $post) { + + echo elgg_view("forum/topicposts",array('entity' => $post)); + + } + + // check to find out the status of the topic and act + if($vars['entity']->status != "closed" && page_owner_entity()->isMember($vars['user'])){ + + //display the add comment form, this will appear after all the existing comments + echo elgg_view("forms/forums/addpost", array('entity' => $vars['entity'])); + + } elseif($vars['entity']->status == "closed") { + + //this topic has been closed by the owner + echo "

" . elgg_echo("groups:topicisclosed") . "

"; + echo "

" . elgg_echo("groups:topiccloseddesc") . "

"; + + } else { + } + +?> +
\ No newline at end of file diff --git a/mod/groups/views/default/group/group.php b/mod/groups/views/default/group/group.php new file mode 100644 index 000000000..96f70d36a --- /dev/null +++ b/mod/groups/views/default/group/group.php @@ -0,0 +1,21 @@ + \ No newline at end of file diff --git a/mod/groups/views/default/groups/closedmembership.php b/mod/groups/views/default/groups/closedmembership.php new file mode 100644 index 000000000..34e4169eb --- /dev/null +++ b/mod/groups/views/default/groups/closedmembership.php @@ -0,0 +1,15 @@ + +
+

+
\ No newline at end of file diff --git a/mod/groups/views/default/groups/contentwrapper.php b/mod/groups/views/default/groups/contentwrapper.php new file mode 100644 index 000000000..e11d3d09a --- /dev/null +++ b/mod/groups/views/default/groups/contentwrapper.php @@ -0,0 +1,5 @@ +
\ No newline at end of file diff --git a/mod/groups/views/default/groups/css.php b/mod/groups/views/default/groups/css.php new file mode 100644 index 000000000..bc8d2bfc0 --- /dev/null +++ b/mod/groups/views/default/groups/css.php @@ -0,0 +1,401 @@ + + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + */ + +?> + +#content_area_group_title h2 { + color:#0054A7; + font-size:1.35em; + line-height:1.2em; + margin:0 0 0 8px; + padding:5px; +} +#topic_posts #content_area_group_title h2 { + margin:0 0 0 0; +} + +#two_column_left_sidebar_maincontent #owner_block_content { + margin:0 0 10px 0 !important; +} + +#groups_info_column_left { + width:435px; + margin-left:230px; + margin-right:10px; +} + +#groups_info_column_left .odd { + background:#E9E9E9; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; +} +#groups_info_column_left .even { + background:#E9E9E9; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; +} +#groups_info_column_left p { + margin:0 0 7px 0; + padding:2px 4px; +} + +#groups_info_column_right { + float:left; + width:230px; + margin:0 0 0 10px; +} +#groups_info_wide p { + text-align: right; + padding-right:10px; +} +#group_stats { + width:190px; + background: #e9e9e9; + padding:5px; + margin:10px 0 20px 0; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; +} +#group_stats p { + margin:0; +} +#group_members { + margin:10px; + -webkit-border-radius: 8px; + -moz-border-radius: 8px; + background: white; +} + +#right_column { + clear:left; + float:right; + width:340px; + margin:0 10px 0 0; +} +#left_column { + width:340px; + float:left; + margin:0 10px 0 10px; + +} +/* IE 6 fixes */ +* html #left_column { + margin:0 0 0 5px; +} +* html #right_column { + margin:0 5px 0 0; +} + +#group_members h2, +#right_column h2, +#left_column h2, +#fullcolumn h2 { + margin:0 0 10px 0; + padding:5px; + color:#0054A7; + font-size:1.25em; + line-height:1.2em; +} +#fullcolumn .contentWrapper { + margin:0 10px 20px 10px; + padding:0 0 5px; +} + +.member_icon { + margin:0 0 6px 6px; + float:left; +} + +/* IE6 */ +* html #topic_post_tbl { width:676px !important;} + +/* all browsers - force tinyMCE on edit comments to be full-width */ +.edit_forum_comments .defaultSkin table.mceLayout { + width: 636px !important; +} + +/* topics overview page */ +#forum_topics { + padding:10px; + margin:0 10px 0 10px; + background:white; + -webkit-border-radius: 8px; + -moz-border-radius: 8px; +} +/* topics individual view page */ +#topic_posts { + margin:0 10px 5px 10px; +} +#topic_posts #pages_breadcrumbs { + margin:2px 0 0 0px; +} +#topic_posts form { + padding:10px; + margin:30px 0 0 0; + background:white; + -webkit-border-radius: 8px; + -moz-border-radius: 8px; +} +.topic_post { + padding:10px; + margin:0 0 5px 0; + background:white; + -webkit-border-radius: 8px; + -moz-border-radius: 8px; +} +.topic_post .post_icon { + float:left; + margin:0 8px 4px 0; +} +.topic_post h2 { + margin-bottom:20px; +} +.topic_post p.topic-post-menu { + margin:0; +} +.topic_post p.topic-post-menu a.collapsibleboxlink { + padding-left:10px; +} +.topic_post table, .topic_post td { + border:none; +} + +/* group latest discussions widget */ +#latest_discussion_widget { + margin:0 0 20px 0; + background:white; + -webkit-border-radius: 8px; + -moz-border-radius: 8px; +} +/* group files widget */ +#filerepo_widget_layout { + margin:0 0 20px 0; + padding: 0 0 5px 0; + background:white; + -webkit-border-radius: 8px; + -moz-border-radius: 8px; +} +/* group pages widget */ +#group_pages_widget { + margin:0 0 20px 0; + padding: 0 0 5px 0; + background:white; + -webkit-border-radius: 8px; + -moz-border-radius: 8px; +} +#group_pages_widget .search_listing { + border: 2px solid #cccccc; +} +#right_column .filerepo_widget_singleitem { + background: #dedede !important; + margin:0 10px 5px 10px; +} +#left_column .filerepo_widget_singleitem { + background: #dedede !important; + margin:0 10px 5px 10px; +} +.forum_latest { + margin:0 10px 5px 10px; + background: #dedede; + padding:5px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; +} +.forum_latest:hover { + +} +.forum_latest .topic_owner_icon { + float:left; +} +.forum_latest .topic_title { + margin-left:35px; +} +.forum_latest .topic_title p { + line-height: 1.0em; + padding:0; + margin:0; + font-weight: bold; +} +.forum_latest p.topic_replies { + padding:3px 0 0 0; + margin:0; + color:#666666; +} +.add_topic { + -webkit-border-radius: 8px; + -moz-border-radius: 8px; + background:white; + margin:5px 10px; + padding:10px 10px 10px 6px; +} + +a.add_topic_button { + font: 12px/100% Arial, Helvetica, sans-serif; + font-weight: bold; + color: white; + background:#4690d6; + border:none; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + width: auto; + height: auto; + padding: 3px 6px 3px 6px; + margin:0; + cursor: pointer; +} +a.add_topic_button:hover { + background: #0054a7; + color:white; + text-decoration: none; +} + + + +/* latest discussion listing */ +.latest_discussion_info { + float:right; + width:300px; + text-align: right; + margin-left: 10px; +} +.groups .search_listing br { + height:0; + line-height:0; +} +span.timestamp { + color:#666666; + font-size: 90%; +} +.latest_discussion_info .timestamp { + font-size: 0.85em; +} +/* new groups page */ +.groups .search_listing { + border:2px solid #cccccc; + margin:0 0 5px 0; +} +.groups .search_listing:hover { + background:#dedede; +} +.groups .group_count { + font-weight: bold; + color: #666666; + margin:0 0 5px 4px; +} +.groups .search_listing_info { + color:#666666; +} +.groupdetails { + float:right; +} +.groupdetails p { + margin:0; + padding:0; + line-height: 1.1em; + text-align: right; +} +#groups_closed_membership { + margin:0 10px 20px 10px; + padding: 3px 5px 5px 5px; + background:#bbdaf7; + -webkit-border-radius: 8px; + -moz-border-radius: 8px; +} +#groups_closed_membership p { + margin:0; +} + +/* groups membership widget */ +.groupmembershipwidget .contentWrapper { + margin:0 10px 5px 10px; +} +.groupmembershipwidget .contentWrapper .groupicon { + float:left; + margin:0 10px 0 0; +} +.groupmembershipwidget .search_listing_info p { + color: #666666; +} +.groupmembershipwidget .search_listing_info span { + font-weight: bold; +} + +/* groups sidebar */ +.featuredgroups .contentWrapper { + margin:0 0 10px 0; +} +.featuredgroups .contentWrapper .groupicon { + float:left; + margin:0 10px 0 0; +} +.featuredgroups .contentWrapper p { + margin: 0; + line-height: 1.2em; + color:#666666; +} +.featuredgroups .contentWrapper span { + font-weight: bold; +} +#groupssearchform { + border-bottom: 1px solid #cccccc; + margin-bottom: 10px; +} +#groupssearchform input[type="submit"] { + padding:2px; + height:auto; + margin:4px 0 5px 0; +} +.sidebarBox #owner_block_submenu { + margin:5px 0 0 0; +} + +/* delete post */ +.delete_discussion { + +} +.delete_discussion a { + display:block; + float:right; + cursor: pointer; + width:14px; + height:14px; + margin:0; + background: url("_graphics/icon_customise_remove.png") no-repeat 0 0; +} +.delete_discussion a:hover { + background-position: 0 -16px; + text-decoration: none; +} +/* IE6 */ +* html .delete_discussion a { font-size: 1px; } +/* IE7 */ +*:first-child+html .delete_discussion a { font-size: 1px; } + +/* delete group button */ +#delete_group_option input[type="submit"] { + background:#dedede; + border-color:#dedede; + color:#333333; + margin:0; + float:right; + clear:both; +} +#delete_group_option input[type="submit"]:hover { + background:red; + border-color:red; + color:white; +} + +#groupsearchform .search_input { + width:176px; +} + diff --git a/mod/groups/views/default/groups/featured.php b/mod/groups/views/default/groups/featured.php new file mode 100644 index 000000000..6e85bf5d8 --- /dev/null +++ b/mod/groups/views/default/groups/featured.php @@ -0,0 +1,29 @@ + +
+

+ + $group, + 'size' => 'small', + ) + ); + + echo "
" . $icon . "

" . $group->name . "
"; + echo $group->briefdescription . "

"; + + } + } +?> +
\ No newline at end of file diff --git a/mod/groups/views/default/groups/find.php b/mod/groups/views/default/groups/find.php new file mode 100644 index 000000000..671d618bc --- /dev/null +++ b/mod/groups/views/default/groups/find.php @@ -0,0 +1,20 @@ + +
+

+
+ + + + + + +
+
\ No newline at end of file diff --git a/mod/groups/views/default/groups/forum_latest.php b/mod/groups/views/default/groups/forum_latest.php new file mode 100644 index 000000000..6baa8a575 --- /dev/null +++ b/mod/groups/views/default/groups/forum_latest.php @@ -0,0 +1,38 @@ +forum_enable != 'no'){ + +?> + +
+

+ 'object', 'subtypes' => 'groupforumtopic', 'annotation_names' => 'group_topic_post', 'container_guid' => $vars['entity']->guid, 'limit' => 4, 'order_by' => 'maxtime desc')); + + if($forum){ + foreach($forum as $f){ + + $count_annotations = $f->countAnnotations("group_topic_post"); + + echo "
"; + echo "
" . elgg_view('profile/icon',array('entity' => $f->getOwnerEntity(), 'size' => 'tiny', 'override' => true)) . "
"; + echo "

guid}&group_guid={$vars['entity']->guid}\">" . $f->title . "

".elgg_echo('groups:posts').": " . $count_annotations . "

"; + + echo "
"; + + } + } else { + echo "
"; + echo elgg_echo("grouptopic:notcreated"); + echo "
"; + } +?> +
+
+ \ No newline at end of file diff --git a/mod/groups/views/default/groups/group_sort_menu.php b/mod/groups/views/default/groups/group_sort_menu.php new file mode 100644 index 000000000..7314507e0 --- /dev/null +++ b/mod/groups/views/default/groups/group_sort_menu.php @@ -0,0 +1,28 @@ + +
+ +
+
+ +
\ No newline at end of file diff --git a/mod/groups/views/default/groups/groupgallery.php b/mod/groups/views/default/groups/groupgallery.php new file mode 100644 index 000000000..7122dc098 --- /dev/null +++ b/mod/groups/views/default/groups/groupgallery.php @@ -0,0 +1,25 @@ + $vars['entity'], + 'size' => 'large', + ) + ); + + $info .= "

getUrl() . "\">" . $vars['entity']->name . "

"; + + // num users, last activity, owner etc + + + echo elgg_view('search/gallery_listing',array('icon' => $icon, 'info' => $info)); +?> \ No newline at end of file diff --git a/mod/groups/views/default/groups/grouplisting.php b/mod/groups/views/default/groups/grouplisting.php new file mode 100644 index 000000000..d25eaff56 --- /dev/null +++ b/mod/groups/views/default/groups/grouplisting.php @@ -0,0 +1,49 @@ + $vars['entity'], + 'size' => 'small', + ) + ); + + //get the membership type + $membership = $vars['entity']->membership; + if($membership == 2) + $mem = elgg_echo("groups:open"); + else + $mem = elgg_echo("groups:closed"); + + //for admins display the feature or unfeature option + if($vars['entity']->featured_group == "yes"){ + $url = elgg_add_action_tokens_to_url($vars['url'] . "action/groups/featured?group_guid=" . $vars['entity']->guid . "&action=unfeature"); + $wording = elgg_echo("groups:makeunfeatured"); + }else{ + $url = elgg_add_action_tokens_to_url($vars['url'] . "action/groups/featured?group_guid=" . $vars['entity']->guid . "&action=feature"); + $wording = elgg_echo("groups:makefeatured"); + } + + $info .= "

" . $mem . " / " . get_group_members($vars['entity']->guid, 10, 0, 0, true) ." " . elgg_echo("groups:member") . "

"; + //if admin, show make featured option + if(isadminloggedin()) + $info .= "

{$wording}

"; + $info .= "
"; + $info .= "

getUrl() . "\">" . $vars['entity']->name . "

"; + $info .= "

" . $vars['entity']->briefdescription . "

"; + + // num users, last activity, owner etc + + echo elgg_view_listing($icon, $info); + +?> diff --git a/mod/groups/views/default/groups/groupprofile.php b/mod/groups/views/default/groups/groupprofile.php new file mode 100644 index 000000000..1c989c9a8 --- /dev/null +++ b/mod/groups/views/default/groups/groupprofile.php @@ -0,0 +1,102 @@ + + +
+
+ + $vars['entity'], + //'align' => "left", + 'size' => $iconsize, + ) + ); + ?> + +
+
+ " . elgg_echo("groups:owner") . ": owner_guid)->getURL() . "\">" . get_user($vars['entity']->owner_guid)->name . "

"; + + ?> +

guid, true, 'user', '', 0, '', 9999, 0, true); ?>

+
+
+ +
+ group) && sizeof($vars['config']->group) > 0){ + + foreach($vars['config']->group as $shortname => $valtype) { + if ($shortname != "name") { + $value = $vars['entity']->$shortname; + + if (!empty($value)) { + //This function controls the alternating class + $even_odd = ( 'odd' != $even_odd ) ? 'odd' : 'even'; + } + + echo "

"; + echo ""; + echo elgg_echo("groups:{$shortname}"); + echo ": "; + + $options = array( + 'value' => $vars['entity']->$shortname + ); + + if ($valtype == 'tags') { + $options['tag_names'] = $shortname; + } + + echo elgg_view("output/{$valtype}", $options); + + echo "

"; + } + } + } + } + ?> +
+ +
+ +

+ +canEdit()) + { + +?> + + + + + + +

+
+
\ No newline at end of file diff --git a/mod/groups/views/default/groups/icon.php b/mod/groups/views/default/groups/icon.php new file mode 100644 index 000000000..7390200d9 --- /dev/null +++ b/mod/groups/views/default/groups/icon.php @@ -0,0 +1,48 @@ +icontime) { + $icontime = "{$icontime}"; + } else { + $icontime = "default"; + } + + +?> + +
+ title="" /> +
+ + \ No newline at end of file diff --git a/mod/groups/views/default/groups/invitationrequests.php b/mod/groups/views/default/groups/invitationrequests.php new file mode 100644 index 000000000..fbbbafb22 --- /dev/null +++ b/mod/groups/views/default/groups/invitationrequests.php @@ -0,0 +1,44 @@ +
+ + +
+ {$group->name}
"; + + echo str_replace(' $vars['url'] . "action/groups/killinvitation?user_guid={$user->getGUID()}&group_guid={$group->getGUID()}", + 'confirm' => elgg_echo('groups:joinrequest:remove:check'), + 'text' => elgg_echo('delete'), + ))); + $url = elgg_add_action_tokens_to_url("{$vars['url']}action/groups/join?user_guid={$user->guid}&group_guid={$group->guid}"); + ?> + +

+
+
+" . elgg_echo('groups:invitations:none') . "

"; + + } + +?> + diff --git a/mod/groups/views/default/groups/members.php b/mod/groups/views/default/groups/members.php new file mode 100644 index 000000000..66f2604c0 --- /dev/null +++ b/mod/groups/views/default/groups/members.php @@ -0,0 +1,30 @@ + + +
+

+ +getMembers(10); + foreach($members as $mem){ + + echo ""; + + } + +?> +
+
\ No newline at end of file diff --git a/mod/groups/views/default/groups/membershiprequests.php b/mod/groups/views/default/groups/membershiprequests.php new file mode 100644 index 000000000..9ac37990a --- /dev/null +++ b/mod/groups/views/default/groups/membershiprequests.php @@ -0,0 +1,44 @@ +
+ + +
+ {$request->name}
"; + + echo str_replace(' $vars['url'] . 'action/groups/killrequest?user_guid='.$request->guid.'&group_guid=' . $vars['entity']->guid, + 'confirm' => elgg_echo('groups:joinrequest:remove:check'), + 'text' => elgg_echo('delete'), + ))); + $url = elgg_add_action_tokens_to_url("{$vars['url']}action/groups/addtogroup?user_guid={$request->guid}&group_guid={$vars['entity']->guid}"); + ?> + +

+
+
+" . elgg_echo('groups:requests:none') . "

"; + + } + +?> + diff --git a/mod/groups/views/default/groups/profileitems.php b/mod/groups/views/default/groups/profileitems.php new file mode 100644 index 000000000..7309c8a71 --- /dev/null +++ b/mod/groups/views/default/groups/profileitems.php @@ -0,0 +1,28 @@ +
"; + echo elgg_view("groups/forum_latest",array('entity' => $vars['entity'])); + echo "
"; + + //right column + echo "
"; + echo elgg_view("groups/right_column",array('entity' => $vars['entity'])); + echo "
"; + + //left column + echo "
"; + echo elgg_view("groups/left_column",array('entity' => $vars['entity'])); + echo "
"; + +?> \ No newline at end of file diff --git a/mod/groups/views/default/groups/side_menu.php b/mod/groups/views/default/groups/side_menu.php new file mode 100644 index 000000000..7de921ed0 --- /dev/null +++ b/mod/groups/views/default/groups/side_menu.php @@ -0,0 +1,10 @@ +
+
\ No newline at end of file diff --git a/mod/groups/views/default/icon/group/default/large.php b/mod/groups/views/default/icon/group/default/large.php new file mode 100644 index 000000000..a9d69a691 --- /dev/null +++ b/mod/groups/views/default/icon/group/default/large.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/mod/groups/views/default/icon/group/default/medium.php b/mod/groups/views/default/icon/group/default/medium.php new file mode 100644 index 000000000..47cf328b8 --- /dev/null +++ b/mod/groups/views/default/icon/group/default/medium.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/mod/groups/views/default/icon/group/default/small.php b/mod/groups/views/default/icon/group/default/small.php new file mode 100644 index 000000000..b052c1cc3 --- /dev/null +++ b/mod/groups/views/default/icon/group/default/small.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/mod/groups/views/default/icon/group/default/tiny.php b/mod/groups/views/default/icon/group/default/tiny.php new file mode 100644 index 000000000..1023d06e2 --- /dev/null +++ b/mod/groups/views/default/icon/group/default/tiny.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/mod/groups/views/default/object/groupforumtopic.php b/mod/groups/views/default/object/groupforumtopic.php new file mode 100644 index 000000000..1dd57c859 --- /dev/null +++ b/mod/groups/views/default/object/groupforumtopic.php @@ -0,0 +1,77 @@ + + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + */ + + //get the required variables + $title = htmlentities($vars['entity']->title, ENT_QUOTES, 'UTF-8'); + //$description = get_entity($vars['entity']->description); + $topic_owner = get_user($vars['entity']->owner_guid); + $group = get_entity($vars['entity']->container_guid); + $forum_created = friendly_time($vars['entity']->time_created); + $counter = $vars['entity']->countAnnotations("group_topic_post"); + $last_post = $vars['entity']->getAnnotations("group_topic_post", 1, 0, "desc"); + + //get the time and user + if ($last_post) { + foreach($last_post as $last) + { + $last_time = $last->time_created; + $last_user = $last->owner_guid; + } + } + + $u = get_user($last_user); + + //select the correct output depending on where you are + if(get_context() == "search"){ + + $info = "

" . sprintf(elgg_echo('group:created'), $forum_created, $counter) . "
"; + if (($last_time) && ($u)) $info.= sprintf(elgg_echo('groups:lastupdated'), friendly_time($last_time), " getURL() . "\">" . $u->name . ""); + $info .= '

'; + //get the group avatar + $icon = elgg_view("profile/icon",array('entity' => $group, 'size' => 'small')); + //get the group and topic title + if ($group instanceof ElggGroup) + $info .= "

" . elgg_echo('group') . ": getURL()}\">".htmlentities($group->name, ENT_QUOTES, 'UTF-8') ."

"; + + $info .= "

" . elgg_echo('topic') . ": guid}&group_guid={$group->guid}\">{$title}

"; + //get the forum description + //$info .= $description; + + }else{ + + $info = "" . sprintf(elgg_echo('group:created'), $forum_created, $counter) . ""; + if (($last_time) && ($u)) $info.= "
" . elgg_echo('groups:updated') . " " . friendly_time($last_time) . " by getURL() . "\">" . $u->name . ""; + + if (groups_can_edit_discussion($vars['entity'], page_owner_entity()->owner_guid)) { + + // display the delete link to those allowed to delete + $info .= "
" . elgg_view("output/confirmlink", array( + 'href' => $vars['url'] . "action/groups/deletetopic?topic=" . $vars['entity']->guid . "&group=" . $vars['entity']->container_guid, + 'text' => " ", + 'confirm' => elgg_echo('deleteconfirm'), + )) . ""; + + } + + $info .= "
"; + + //get the user avatar + $icon = elgg_view("profile/icon",array('entity' => $topic_owner, 'size' => 'small')); + $info .= "

" . elgg_echo('groups:started') . " " . $topic_owner->name . ": guid}&group_guid={$group->guid}\">{$title}

"; + $info .= "
"; + + } + + //display + echo elgg_view_listing($icon, $info); + +?> \ No newline at end of file diff --git a/mod/groups/views/default/river/forum/create.php b/mod/groups/views/default/river/forum/create.php new file mode 100644 index 000000000..fb6cd707c --- /dev/null +++ b/mod/groups/views/default/river/forum/create.php @@ -0,0 +1,27 @@ +subject_guid); // $statement->getSubject(); + $object = get_entity($vars['item']->object_guid); + //$url = $object->getURL(); + $forumtopic = $object->guid; + $group_guid = $object->container_guid; + //grab the annotation, if one exists + if($vars['item']->annotation_id != 0) + $comment = get_annotation($vars['item']->annotation_id)->value; + $contents = strip_tags($contents);//this is so we don't get large images etc in the activity river + $url = $vars['url'] . "mod/groups/topicposts.php?topic=" . $forumtopic . "&group_guid=" . $group_guid; + $url_user = "getURL()}\">{$performed_by->name}"; + $string = sprintf(elgg_echo("groupforum:river:posted"),$url_user) . " "; + $string .= elgg_echo("groupforum:river:annotate:create") . " | " . $object->title . ""; + $string .= "
"; + if($comment){ + $contents = strip_tags($comment);//this is so we don't get large images etc in the activity river + if(strlen($contents) > 200) + $string .= substr($contents, 0, strpos($contents, ' ', 200)) . "..."; + else + $string .= $contents; + } + $string .= "
"; +?> + + \ No newline at end of file diff --git a/mod/groups/views/default/river/forum/topic/create.php b/mod/groups/views/default/river/forum/topic/create.php new file mode 100644 index 000000000..f4c4aadfd --- /dev/null +++ b/mod/groups/views/default/river/forum/topic/create.php @@ -0,0 +1,27 @@ +subject_guid); // $statement->getSubject(); + $object = get_entity($vars['item']->object_guid); + //$url = $object->getURL(); + $forumtopic = $object->guid; + $group_guid = $object->container_guid; + $url = $vars['url'] . "mod/groups/topicposts.php?topic=" . $forumtopic . "&group_guid=" . $group_guid; + $comment = $object->getAnnotations("group_topic_post", 1, 0, "asc"); + foreach($comment as $c){ + $contents = $c->value; + } + $contents = strip_tags($contents);//this is so we don't get large images etc in the activity river + $url_user = "getURL()}\">{$performed_by->name}"; + $string = sprintf(elgg_echo("groupforum:river:postedtopic"),$url_user) . ": "; + $string .= "" . $object->title . ""; + $string .= "
"; + if(strlen($contents) > 200) { + $string .= substr($contents, 0, strpos($contents, ' ', 200)) . "..."; + }else{ + $string .= $contents; + } + $string .= "
"; + +?> + + \ No newline at end of file diff --git a/mod/groups/views/default/river/group/create.php b/mod/groups/views/default/river/group/create.php new file mode 100644 index 000000000..e96bb9b34 --- /dev/null +++ b/mod/groups/views/default/river/group/create.php @@ -0,0 +1,13 @@ +subject_guid); // $statement->getSubject(); + $object = get_entity($vars['item']->object_guid); + $objecturl = $object->getURL(); + + $url = "getURL()}\">{$performed_by->name}"; + $string = sprintf(elgg_echo("groups:river:member"),$url) . " "; + $string .= " getURL() . "\">" . $object->name . ""; + +?> + + \ No newline at end of file diff --git a/mod/groups/views/default/river/object/group/create.php b/mod/groups/views/default/river/object/group/create.php new file mode 100644 index 000000000..94903fd66 --- /dev/null +++ b/mod/groups/views/default/river/object/group/create.php @@ -0,0 +1,13 @@ +getSubject(); + $object = $statement->getObject(); + + $url = "getURL()}\">{$performed_by->name}"; + $string = sprintf(elgg_echo("group:river:created"),$url) . " "; + $string .= "getURL() . "\">" . elgg_echo("group:river:create") . ""; + +?> + + \ No newline at end of file diff --git a/mod/groups/views/default/river/object/groupforumtopic/annotate.php b/mod/groups/views/default/river/object/groupforumtopic/annotate.php new file mode 100644 index 000000000..c6aa1e5ab --- /dev/null +++ b/mod/groups/views/default/river/object/groupforumtopic/annotate.php @@ -0,0 +1,14 @@ +getSubject(); + $object = $statement->getObject(); + + $url = "getURL()}\">{$performed_by->name}"; + $string = sprintf(elgg_echo("groupforum:river:posted"),$url) . " "; + $string .= elgg_echo("groupforum:river:annotate:create") . " | getURL() . "\">" . $object->title . ""; + //$string .= "
Title: " . $object->title . "
"; + +?> + + \ No newline at end of file diff --git a/mod/groups/views/default/river/object/groupforumtopic/create.php b/mod/groups/views/default/river/object/groupforumtopic/create.php new file mode 100644 index 000000000..7c7d89bad --- /dev/null +++ b/mod/groups/views/default/river/object/groupforumtopic/create.php @@ -0,0 +1,14 @@ +getSubject(); + $object = $statement->getObject(); + + $url = "getURL()}\">{$performed_by->name}"; + $string = sprintf(elgg_echo("groupforum:river:created"),$url) . " "; + $string .= elgg_echo("groupforum:river:create") . " | getURL() . "\">" . $object->title . ""; + //$string .= "
Discussion topic: " . $object->title . "
"; + +?> + + \ No newline at end of file diff --git a/mod/groups/views/default/river/object/groupforumtopic/update.php b/mod/groups/views/default/river/object/groupforumtopic/update.php new file mode 100644 index 000000000..d13c2b61f --- /dev/null +++ b/mod/groups/views/default/river/object/groupforumtopic/update.php @@ -0,0 +1,13 @@ +getSubject(); + $object = $statement->getObject(); + + $url = "getURL()}\">{$performed_by->name}"; + $string = sprintf(elgg_echo("groupforum:river:updated"),$url) . " "; + $string .= elgg_echo("groupforum:river:update") . " | getURL() . "\">" . $object->title . ""; + +?> + + \ No newline at end of file diff --git a/mod/groups/views/default/river/relationship/member/create.php b/mod/groups/views/default/river/relationship/member/create.php new file mode 100644 index 000000000..e5e318ce0 --- /dev/null +++ b/mod/groups/views/default/river/relationship/member/create.php @@ -0,0 +1,40 @@ +getSubject(); + $event = $statement->getEvent(); + $object = $statement->getObject(); + + if (is_array($object)) + { + switch ($object['relationship']) + { + // Friending + case 'member' : + $user = $object['subject']; + $group = $object['object']; + + if (($user instanceof ElggUser) && ($group instanceof ElggGroup)) + { + echo "getURL()}\">{$user->name} "; + echo elgg_echo("groups:river:member"); + echo " 'getURL()}\">{$group->name}'"; + } + + break; + } + } + + +?> \ No newline at end of file diff --git a/mod/groups/views/default/settings/groups/edit.php b/mod/groups/views/default/settings/groups/edit.php new file mode 100644 index 000000000..311e58dee --- /dev/null +++ b/mod/groups/views/default/settings/groups/edit.php @@ -0,0 +1,18 @@ +hidden_groups; + if (!$hidden_groups) $hidden_groups = 'no'; +?> +

+ + + 'params[hidden_groups]', + 'options_values' => array( + 'no' => elgg_echo('option:no'), + 'yes' => elgg_echo('option:yes') + ), + 'value' => $hidden_groups + )); + ?> +

\ No newline at end of file diff --git a/mod/groups/views/default/sharing/invite.php b/mod/groups/views/default/sharing/invite.php new file mode 100644 index 000000000..5c3d6b316 --- /dev/null +++ b/mod/groups/views/default/sharing/invite.php @@ -0,0 +1,41 @@ +getGUID(),false,'user','')) { + + foreach($friends as $friend) { + + if (!$group->isMember($friend)) + { + $label = elgg_view("profile/icon",array('entity' => $friend, 'size' => 'tiny')); + $label .= "{$friend->name}"; + $options[$label] = $friend->getGUID(); + } + } + + if ($options) + { + echo elgg_view('input/checkboxes',array( + + 'internalname' => 'user_guid', + 'options' => $options, + + )); + } + else + { + echo elgg_echo('groups:nofriends'); + } + } +?> \ No newline at end of file diff --git a/mod/groups/views/default/widgets/a_users_groups/edit.php b/mod/groups/views/default/widgets/a_users_groups/edit.php new file mode 100644 index 000000000..fa47cdd62 --- /dev/null +++ b/mod/groups/views/default/widgets/a_users_groups/edit.php @@ -0,0 +1,14 @@ +

+ : + +

\ No newline at end of file diff --git a/mod/groups/views/default/widgets/a_users_groups/view.php b/mod/groups/views/default/widgets/a_users_groups/view.php new file mode 100644 index 000000000..3328a8778 --- /dev/null +++ b/mod/groups/views/default/widgets/a_users_groups/view.php @@ -0,0 +1,42 @@ +num_display; + if (!$number) + $number = 4; + + //the page owner + $owner = $vars['entity']->owner_guid; + + //$groups = get_users_membership($owner); + //$groups = list_entities_from_relationship('member',$owner,false,'group','',0,$number,false,false,false); + $groups = get_entities_from_relationship('member', $owner, false, "group", "", 0, "", $number, 0, false, 0); + + + if($groups){ + + echo "
"; + + foreach($groups as $group){ + $icon = elgg_view( + "groups/icon", array( + 'entity' => $group, + 'size' => 'small', + ) + ); + + echo "
" . $icon . "

" . $group->name . "
"; + echo $group->briefdescription . "

"; + + } + echo "
"; + } + + + // echo $groups; + +?> \ No newline at end of file diff --git a/mod/groups/views/default/widgets/group_entities_widget/edit.php b/mod/groups/views/default/widgets/group_entities_widget/edit.php new file mode 100644 index 000000000..dbf82b2ec --- /dev/null +++ b/mod/groups/views/default/widgets/group_entities_widget/edit.php @@ -0,0 +1,23 @@ + +

+ + + + + +

\ No newline at end of file diff --git a/mod/groups/views/default/widgets/group_entities_widget/view.php b/mod/groups/views/default/widgets/group_entities_widget/view.php new file mode 100644 index 000000000..edba53cb5 --- /dev/null +++ b/mod/groups/views/default/widgets/group_entities_widget/view.php @@ -0,0 +1,35 @@ +limit) + $limit = $vars['entity']->limit; + + $group_guid = $vars['entity']->group_guid; + + if ($group_guid) + { + $group = get_entity($group_guid); + $members = $group->getMembers($limit, $offset); + $count = $group->getMembers($limit, $offset, true); + + $result = list_entities_groups("", 0, $group_guid, $limit); + } + else + { + $result = elgg_echo('groups:widgets:entities:label:pleaseedit'); + } + + echo $result; +?> \ No newline at end of file diff --git a/mod/groups/views/default/widgets/group_members_widget/edit.php b/mod/groups/views/default/widgets/group_members_widget/edit.php new file mode 100644 index 000000000..6d385c204 --- /dev/null +++ b/mod/groups/views/default/widgets/group_members_widget/edit.php @@ -0,0 +1,23 @@ + +

+ + + + + +

\ No newline at end of file diff --git a/mod/groups/views/default/widgets/group_members_widget/view.php b/mod/groups/views/default/widgets/group_members_widget/view.php new file mode 100644 index 000000000..502affd12 --- /dev/null +++ b/mod/groups/views/default/widgets/group_members_widget/view.php @@ -0,0 +1,35 @@ +limit) + $limit = $vars['entity']->limit; + + $group_guid = $vars['entity']->group_guid; + + if ($group_guid) + { + $group = get_entity($group_guid); + $members = $group->getMembers($limit, $offset); + $count = $group->getMembers($limit, $offset, true); + + $result = elgg_view_entity_list($members, $count, $offset, $limit, false, false, false); + } + else + { + $result = elgg_echo('groups:widgets:members:label:pleaseedit'); + } + + echo $result; +?> \ No newline at end of file diff --git a/mod/groups/views/rss/forum/topicposts.php b/mod/groups/views/rss/forum/topicposts.php new file mode 100644 index 000000000..15c5adc7f --- /dev/null +++ b/mod/groups/views/rss/forum/topicposts.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/mod/groups/views/rss/forum/topics.php b/mod/groups/views/rss/forum/topics.php new file mode 100644 index 000000000..6f3ca34f1 --- /dev/null +++ b/mod/groups/views/rss/forum/topics.php @@ -0,0 +1,14 @@ + \ No newline at end of file diff --git a/mod/groups/views/rss/forum/viewposts.php b/mod/groups/views/rss/forum/viewposts.php new file mode 100644 index 000000000..464ca1a7b --- /dev/null +++ b/mod/groups/views/rss/forum/viewposts.php @@ -0,0 +1,26 @@ +countAnnotations('group_topic_post'); + $offset = (int) get_input('offset',0); + + foreach($vars['entity']->getAnnotations('group_topic_post', 50, $offset, "asc") as $post) { + + $post->title = ''; + $post->description = $post->value; + echo elgg_view('object/default', array('entity' => $post)); + // echo elgg_view("forum/topicposts",array('entity' => $post)); + + } + +?> \ No newline at end of file diff --git a/mod/groups/views/rss/groups/contentwrapper.php b/mod/groups/views/rss/groups/contentwrapper.php new file mode 100644 index 000000000..15397d552 --- /dev/null +++ b/mod/groups/views/rss/groups/contentwrapper.php @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/mod/groups/views/rss/groups/profileitems.php b/mod/groups/views/rss/groups/profileitems.php new file mode 100644 index 000000000..bae449a4c --- /dev/null +++ b/mod/groups/views/rss/groups/profileitems.php @@ -0,0 +1,20 @@ + 'object', 'owner_guid' => $vars['entity']->guid))) { + //if ($forae = get_entities_from_annotations("object", "groupforumtopic", "group_topic_post", "", 0, $vars['entity']->guid, 20, 0, "desc", false)) { + foreach($forae as $forum) + echo elgg_view_entity($forum); + } + +?> \ No newline at end of file -- cgit v1.2.3