diff options
Diffstat (limited to 'mod/groups')
| -rw-r--r-- | mod/groups/actions/discussion/save.php | 2 | ||||
| -rw-r--r-- | mod/groups/actions/groups/edit.php | 14 | ||||
| -rw-r--r-- | mod/groups/icon.php | 8 | ||||
| -rw-r--r-- | mod/groups/languages/en.php | 15 | ||||
| -rw-r--r-- | mod/groups/lib/discussion.php | 7 | ||||
| -rw-r--r-- | mod/groups/lib/groups.php | 90 | ||||
| -rw-r--r-- | mod/groups/start.php | 231 | ||||
| -rw-r--r-- | mod/groups/topicposts.php | 4 | ||||
| -rw-r--r-- | mod/groups/views/default/forms/groups/edit.php | 42 | ||||
| -rw-r--r-- | mod/groups/views/default/groups/edit.php | 4 | ||||
| -rw-r--r-- | mod/groups/views/default/groups/sidebar/members.php | 3 | ||||
| -rw-r--r-- | mod/groups/views/default/plugins/groups/settings.php | 18 | 
12 files changed, 329 insertions, 109 deletions
diff --git a/mod/groups/actions/discussion/save.php b/mod/groups/actions/discussion/save.php index de4afadfb..b3e9da654 100644 --- a/mod/groups/actions/discussion/save.php +++ b/mod/groups/actions/discussion/save.php @@ -4,7 +4,7 @@   */  // Get variables -$title = get_input("title"); +$title = htmlspecialchars(get_input('title', '', false), ENT_QUOTES, 'UTF-8');  $desc = get_input("description");  $status = get_input("status");  $access_id = (int) get_input("access_id"); diff --git a/mod/groups/actions/groups/edit.php b/mod/groups/actions/groups/edit.php index b513a6098..a4169461a 100644 --- a/mod/groups/actions/groups/edit.php +++ b/mod/groups/actions/groups/edit.php @@ -15,6 +15,8 @@ function profile_array_decoder(&$v) {  	$v = html_entity_decode($v, ENT_COMPAT, 'UTF-8');  } +elgg_make_sticky_form('groups'); +  // Get group fields  $input = array();  foreach ($CONFIG->group as $shortname => $valuetype) { @@ -31,18 +33,21 @@ foreach ($CONFIG->group as $shortname => $valuetype) {  	}  } -$input['name'] = get_input('name'); -$input['name'] = html_entity_decode($input['name'], ENT_COMPAT, 'UTF-8'); +$input['name'] = htmlspecialchars(get_input('name', '', false), ENT_QUOTES, 'UTF-8');  $user = elgg_get_logged_in_user_entity();  $group_guid = (int)get_input('group_guid');  $new_group_flag = $group_guid == 0; +if ($new_group_flag && elgg_get_plugin_setting('limited_groups', 'groups') == 'yes' && !elgg_is_admin_logged_in()) { +	register_error(elgg_echo("groups:cantcreate")); +	forward(REFERER); +} +  $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(REFERER);  } @@ -106,6 +111,9 @@ if (elgg_get_plugin_setting('hidden_groups', 'groups') == 'yes') {  $group->save(); +// group saved so clear sticky form +elgg_clear_sticky_form('groups'); +  // group creator needs to be member of new group and river entry created  if ($new_group_flag) {  	elgg_set_page_owner_guid($group->guid); diff --git a/mod/groups/icon.php b/mod/groups/icon.php index 104da4b41..1bd240ea6 100644 --- a/mod/groups/icon.php +++ b/mod/groups/icon.php @@ -8,7 +8,13 @@  require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");  $group_guid = get_input('group_guid'); + +/* @var ElggGroup $group */  $group = get_entity($group_guid); +if (!($group instanceof ElggGroup)) { +	header("HTTP/1.1 404 Not Found"); +	exit; +}  // If is the same ETag, content didn't changed.  $etag = $group->icontime . $group_guid; @@ -35,7 +41,7 @@ if ($filehandler->open("read")) {  }  if (!$success) { -	$location = elgg_get_plugins_path() . "groups/graphics/default{$size}.jpg"; +	$location = elgg_get_plugins_path() . "groups/graphics/default{$size}.gif";  	$contents = @file_get_contents($location);  } diff --git a/mod/groups/languages/en.php b/mod/groups/languages/en.php index e51e51a14..0ca980108 100644 --- a/mod/groups/languages/en.php +++ b/mod/groups/languages/en.php @@ -12,6 +12,7 @@ $english = array(  	 */  	'groups' => "Groups",  	'groups:owned' => "Groups I own", +	'groups:owned:user' => 'Groups %s owns',  	'groups:yours' => "My groups",  	'groups:user' => "%s's groups",  	'groups:all' => "All groups", @@ -40,6 +41,7 @@ $english = array(  	'groups:noaccess' => 'No access to group',  	'groups:permissions:error' => 'You do not have the permissions for this',  	'groups:ingroup' => 'in the group', +	'groups:cantcreate' => 'You can not create a group. Only admins can.',  	'groups:cantedit' => 'You can not edit this group',  	'groups:saved' => 'Group saved',  	'groups:featured' => 'Featured groups', @@ -64,6 +66,7 @@ $english = array(  	'groups:search_in_group' => "Search in this group",  	'groups:acl' => "Group: %s", +	'discussion:notification:topic:subject' => 'New group discussion post',  	'groups:notification' =>  '%s added a new discussion topic to %s: @@ -74,6 +77,15 @@ View and reply to the discussion:  %s  ', +	'discussion:notification:reply:body' => +'%s replied to the discussion topic %s in the group %s: + +%s + +View and reply to the discussion: +%s +', +  	'groups:activity' => "Group activity",  	'groups:enableactivity' => 'Enable group activity',  	'groups:activity:none' => "There is no group activity yet", @@ -248,6 +260,7 @@ or click below to view the group's join requests:  	'groups:forumtopic:edited' => 'Forum topic successfully edited.',  	'groups:allowhiddengroups' => 'Do you want to allow private (invisible) groups?', +	'groups:whocancreate' => 'Who can create new groups?',  	/**  	 * Action messages @@ -274,4 +287,4 @@ or click below to view the group's join requests:  ); -add_translation("en", $english);
\ No newline at end of file +add_translation("en", $english); diff --git a/mod/groups/lib/discussion.php b/mod/groups/lib/discussion.php index 55642644d..ab2fe4849 100644 --- a/mod/groups/lib/discussion.php +++ b/mod/groups/lib/discussion.php @@ -15,7 +15,7 @@ function discussion_handle_all_page() {  		'type' => 'object',  		'subtype' => 'groupforumtopic',  		'order_by' => 'e.last_action desc', -		'limit' => 40, +		'limit' => 20,  		'full_view' => false,  	)); @@ -149,8 +149,9 @@ function discussion_handle_view_page($guid) {  	$topic = get_entity($guid);  	if (!$topic) { -		register_error(elgg_echo('discussion:topic:notfound')); -		forward(); +		register_error(elgg_echo('noaccess')); +		$_SESSION['last_forward_from'] = current_page_url(); +		forward('');  	}  	$group = $topic->getContainerEntity(); diff --git a/mod/groups/lib/groups.php b/mod/groups/lib/groups.php index 2fe9ae8e0..505cacd01 100644 --- a/mod/groups/lib/groups.php +++ b/mod/groups/lib/groups.php @@ -12,7 +12,9 @@ function groups_handle_all_page() {  	elgg_pop_breadcrumb();  	elgg_push_breadcrumb(elgg_echo('groups')); -	elgg_register_title_button(); +	if (elgg_get_plugin_setting('limited_groups', 'groups') != 'yes' || elgg_is_admin_logged_in()) { +		elgg_register_title_button(); +	}  	$selected_tab = get_input('filter', 'newest'); @@ -106,7 +108,11 @@ function groups_handle_owned_page() {  	$page_owner = elgg_get_page_owner_entity(); -	$title = elgg_echo('groups:owned'); +	if ($page_owner->guid == elgg_get_logged_in_user_guid()) { +		$title = elgg_echo('groups:owned'); +	} else { +		$title = elgg_echo('groups:owned:user', array($page_owner->name)); +	}  	elgg_push_breadcrumb($title);  	elgg_register_title_button(); @@ -137,7 +143,11 @@ function groups_handle_mine_page() {  	$page_owner = elgg_get_page_owner_entity(); -	$title = elgg_echo('groups:yours'); +	if ($page_owner->guid == elgg_get_logged_in_user_guid()) { +		$title = elgg_echo('groups:yours'); +	} else { +		$title = elgg_echo('groups:user', array($page_owner->name)); +	}  	elgg_push_breadcrumb($title);  	elgg_register_title_button(); @@ -176,7 +186,11 @@ function groups_handle_edit_page($page, $guid = 0) {  		elgg_set_page_owner_guid(elgg_get_logged_in_user_guid());  		$title = elgg_echo('groups:add');  		elgg_push_breadcrumb($title); -		$content = elgg_view('groups/edit'); +		if (elgg_get_plugin_setting('limited_groups', 'groups') != 'yes' || elgg_is_admin_logged_in()) { +			$content = elgg_view('groups/edit'); +		} else { +			$content = elgg_echo('groups:cantcreate'); +		}  	} else {  		$title = elgg_echo("groups:edit");  		$group = get_entity($guid); @@ -238,6 +252,8 @@ function groups_handle_profile_page($guid) {  	global $autofeed;  	$autofeed = true; +	elgg_push_context('group_profile'); +  	$group = get_entity($guid);  	if (!$group) {  		forward('groups/all'); @@ -245,6 +261,8 @@ function groups_handle_profile_page($guid) {  	elgg_push_breadcrumb($group->name); +	groups_register_profile_buttons($group); +  	$content = elgg_view('groups/profile/layout', array('entity' => $group));  	if (group_gatekeeper(false)) {  		$sidebar = ''; @@ -256,8 +274,6 @@ function groups_handle_profile_page($guid) {  		$sidebar = '';  	} -	groups_register_profile_buttons($group); -  	$params = array(  		'content' => $content,  		'sidebar' => $sidebar, @@ -481,3 +497,65 @@ function groups_register_profile_buttons($group) {  		}  	}  } + +/** + * Prepares variables for the group edit form view. + * + * @param mixed $group ElggGroup or null. If a group, uses values from the group. + * @return array + */ +function groups_prepare_form_vars($group = null) { +	$values = array( +		'name' => '', +		'membership' => ACCESS_PUBLIC, +		'vis' => ACCESS_PUBLIC, +		'guid' => null, +		'entity' => null +	); + +	// handle customizable profile fields +	$fields = elgg_get_config('group'); + +	if ($fields) { +		foreach ($fields as $name => $type) { +			$values[$name] = ''; +		} +	} + +	// handle tool options +	$tools = elgg_get_config('group_tool_options'); +	if ($tools) { +		foreach ($tools as $group_option) { +			$option_name = $group_option->name . "_enable"; +			$values[$option_name] = $group_option->default_on ? 'yes' : 'no'; +		} +	} + +	// get current group settings +	if ($group) { +		foreach (array_keys($values) as $field) { +			if (isset($group->$field)) { +				$values[$field] = $group->$field; +			} +		} + +		if ($group->access_id != ACCESS_PUBLIC && $group->access_id != ACCESS_LOGGED_IN) { +			// group only access - this is done to handle access not created when group is created +			$values['vis'] = ACCESS_PRIVATE; +		} + +		$values['entity'] = $group; +	} + +	// get any sticky form settings +	if (elgg_is_sticky_form('groups')) { +		$sticky_values = elgg_get_sticky_values('groups'); +		foreach ($sticky_values as $key => $value) { +			$values[$key] = $value; +		} +	} + +	elgg_clear_sticky_form('groups'); + +	return $values; +} diff --git a/mod/groups/start.php b/mod/groups/start.php index aeab0649a..9dca7dc16 100644 --- a/mod/groups/start.php +++ b/mod/groups/start.php @@ -93,7 +93,6 @@ function groups_init() {  	elgg_register_event_handler('join', 'group', 'groups_user_join_event_listener');  	elgg_register_event_handler('leave', 'group', 'groups_user_leave_event_listener');  	elgg_register_event_handler('pagesetup', 'system', 'groups_setup_sidebar_menus'); -	elgg_register_event_handler('annotate', 'all', 'group_object_notifications');  	elgg_register_plugin_hook_handler('access:collections:add_user', 'collection', 'groups_access_collection_override'); @@ -142,35 +141,34 @@ function groups_setup_sidebar_menus() {  	// Get the page owner entity  	$page_owner = elgg_get_page_owner_entity(); -	if (elgg_get_context() == 'groups') { -		if ($page_owner instanceof ElggGroup) { -			if (elgg_is_logged_in() && $page_owner->canEdit() && !$page_owner->isPublicMembership()) { -				$url = elgg_get_site_url() . "groups/requests/{$page_owner->getGUID()}"; -				elgg_register_menu_item('page', array( -					'name' => 'membership_requests', -					'text' => elgg_echo('groups:membershiprequests'), -					'href' => $url, -				)); -			} -		} else { +	if (elgg_in_context('group_profile')) { +		if (elgg_is_logged_in() && $page_owner->canEdit() && !$page_owner->isPublicMembership()) { +			$url = elgg_get_site_url() . "groups/requests/{$page_owner->getGUID()}";  			elgg_register_menu_item('page', array( -				'name' => 'groups:all', -				'text' => elgg_echo('groups:all'), -				'href' => 'groups/all', +				'name' => 'membership_requests', +				'text' => elgg_echo('groups:membershiprequests'), +				'href' => $url,  			)); +		} +	} +	if (elgg_get_context() == 'groups' && !elgg_instanceof($page_owner, 'group')) { +		elgg_register_menu_item('page', array( +			'name' => 'groups:all', +			'text' => elgg_echo('groups:all'), +			'href' => 'groups/all', +		)); -			$user = elgg_get_logged_in_user_entity(); -			if ($user) { -				$url =  "groups/owner/$user->username"; -				$item = new ElggMenuItem('groups:owned', elgg_echo('groups:owned'), $url); -				elgg_register_menu_item('page', $item); -				$url = "groups/member/$user->username"; -				$item = new ElggMenuItem('groups:member', elgg_echo('groups:yours'), $url); -				elgg_register_menu_item('page', $item); -				$url = "groups/invitations/$user->username"; -				$item = new ElggMenuItem('groups:user:invites', elgg_echo('groups:invitations'), $url); -				elgg_register_menu_item('page', $item); -			} +		$user = elgg_get_logged_in_user_entity(); +		if ($user) { +			$url =  "groups/owner/$user->username"; +			$item = new ElggMenuItem('groups:owned', elgg_echo('groups:owned'), $url); +			elgg_register_menu_item('page', $item); +			$url = "groups/member/$user->username"; +			$item = new ElggMenuItem('groups:member', elgg_echo('groups:yours'), $url); +			elgg_register_menu_item('page', $item); +			$url = "groups/invitations/$user->username"; +			$item = new ElggMenuItem('groups:user:invites', elgg_echo('groups:invitations'), $url); +			elgg_register_menu_item('page', $item);  		}  	}  } @@ -196,8 +194,21 @@ function groups_setup_sidebar_menus() {   */  function groups_page_handler($page) { +	// forward old profile urls +	if (is_numeric($page[0])) { +		$group = get_entity($page[0]); +		if (elgg_instanceof($group, 'group', '', 'ElggGroup')) { +			system_message(elgg_echo('changebookmark')); +			forward($group->getURL()); +		} +	} +	  	elgg_load_library('elgg:groups'); +	if (!isset($page[0])) { +		$page[0] = 'all'; +	} +  	elgg_push_breadcrumb(elgg_echo('groups'), "groups/all");  	switch ($page[0]) { @@ -284,12 +295,21 @@ function groups_url($entity) {   * @return string Relative URL   */  function groups_icon_url_override($hook, $type, $returnvalue, $params) { +	/* @var ElggGroup $group */  	$group = $params['entity'];  	$size = $params['size']; -	if (isset($group->icontime)) { +	$icontime = $group->icontime; +	// handle missing metadata (pre 1.7 installations) +	if (null === $icontime) { +		$file = new ElggFile(); +		$file->owner_guid = $group->owner_guid; +		$file->setFilename("groups/" . $group->guid . "large.jpg"); +		$icontime = $file->exists() ? time() : 0; +		create_metadata($group->guid, 'icontime', $icontime, 'integer', $group->owner_guid, ACCESS_PUBLIC); +	} +	if ($icontime) {  		// return thumbnail -		$icontime = $group->icontime;  		return "groupicon/$group->guid/$size/$icontime.jpg";  	} @@ -714,6 +734,7 @@ function discussion_init() {  	elgg_register_library('elgg:discussion', elgg_get_plugins_path() . 'groups/lib/discussion.php');  	elgg_register_page_handler('discussion', 'discussion_page_handler'); +	elgg_register_page_handler('forum', 'discussion_forum_page_handler');  	elgg_register_entity_url_handler('object', 'groupforumtopic', 'discussion_override_topic_url'); @@ -740,8 +761,24 @@ function discussion_init() {  	elgg_extend_view('groups/tool_latest', 'discussion/group_module');  	// notifications -	register_notification_object('object', 'groupforumtopic', elgg_echo('groupforumtopic:new')); +	register_notification_object('object', 'groupforumtopic', elgg_echo('discussion:notification:topic:subject'));  	elgg_register_plugin_hook_handler('notify:entity:message', 'object', 'groupforumtopic_notify_message'); +	elgg_register_event_handler('create', 'annotation', 'discussion_reply_notifications'); +	elgg_register_plugin_hook_handler('notify:annotation:message', 'group_topic_post', 'discussion_create_reply_notification'); +} + +/** + * Exists for backwards compatibility for Elgg 1.7 + */ +function discussion_forum_page_handler($page) { +	switch ($page[0]) { +		case 'topic': +			header('Status: 301 Moved Permanently'); +			forward("/discussion/view/{$page[1]}/{$page[2]}"); +			break; +		default: +			return false; +	}  }  /** @@ -761,6 +798,10 @@ function discussion_page_handler($page) {  	elgg_load_library('elgg:discussion'); +	if (!isset($page[0])) { +		$page[0] = 'all'; +	} +  	elgg_push_breadcrumb(elgg_echo('discussion'), 'discussion/all');  	switch ($page[0]) { @@ -792,7 +833,7 @@ function discussion_page_handler($page) {   * @return string   */  function discussion_override_topic_url($entity) { -	return 'discussion/view/' . $entity->guid; +	return 'discussion/view/' . $entity->guid . '/' . elgg_get_friendly_title($entity->title);  }  /** @@ -848,36 +889,16 @@ function discussion_add_to_river_menu($hook, $type, $return, $params) {  }  /** - * Event handler for group forum posts + * Create discussion notification body   * - */ -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 ($flag == 0) { -					$flag = 1; -					object_notifications($event, $object_type, $object); -				} -			} -		} -} - -/** - * Returns a more meaningful message + * @todo namespace method with 'discussion'   * - * @param unknown_type $hook - * @param unknown_type $entity_type - * @param unknown_type $returnvalue - * @param unknown_type $params + * @param string $hook + * @param string $type + * @param string $message + * @param array  $params   */ -function groupforumtopic_notify_message($hook, $entity_type, $returnvalue, $params) { +function groupforumtopic_notify_message($hook, $type, $message, $params) {  	$entity = $params['entity'];  	$to_entity = $params['to_entity'];  	$method = $params['method']; @@ -897,11 +918,103 @@ function groupforumtopic_notify_message($hook, $entity_type, $returnvalue, $para  			$entity->getURL()  		));  	} -	 +  	return null;  }  /** + * Create discussion reply notification body + * + * @param string $hook + * @param string $type + * @param string $message + * @param array  $params + */ +function discussion_create_reply_notification($hook, $type, $message, $params) { +	$reply = $params['annotation']; +	$method = $params['method']; +	$topic = $reply->getEntity(); +	$poster = $reply->getOwnerEntity(); +	$group = $topic->getContainerEntity(); + +	return elgg_echo('discussion:notification:reply:body', array( +		$poster->name, +		$topic->title, +		$group->name, +		$reply->value, +		$topic->getURL(), +	)); +} + +/** + * Catch reply to discussion topic and generate notifications + * + * @todo this will be replaced in Elgg 1.9 and is a clone of object_notifications() + * + * @param string         $event + * @param string         $type + * @param ElggAnnotation $annotation + * @return void + */ +function discussion_reply_notifications($event, $type, $annotation) { +	global $CONFIG, $NOTIFICATION_HANDLERS; + +	if ($annotation->name !== 'group_topic_post') { +		return; +	} + +	// Have we registered notifications for this type of entity? +	$object_type = 'object'; +	$object_subtype = 'groupforumtopic'; + +	$topic = $annotation->getEntity(); +	if (!$topic) { +		return; +	} + +	$poster = $annotation->getOwnerEntity(); +	if (!$poster) { +		return; +	} + +	if (isset($CONFIG->register_objects[$object_type][$object_subtype])) { +		$subject = $CONFIG->register_objects[$object_type][$object_subtype]; +		$string = $subject . ": " . $topic->getURL(); + +		// Get users interested in content from this person and notify them +		// (Person defined by container_guid so we can also subscribe to groups if we want) +		foreach ($NOTIFICATION_HANDLERS as $method => $foo) { +			$interested_users = elgg_get_entities_from_relationship(array( +				'relationship' => 'notify' . $method, +				'relationship_guid' => $topic->getContainerGUID(), +				'inverse_relationship' => true, +				'types' => 'user', +				'limit' => 0, +			)); + +			if ($interested_users && is_array($interested_users)) { +				foreach ($interested_users as $user) { +					if ($user instanceof ElggUser && !$user->isBanned()) { +						if (($user->guid != $poster->guid) && has_access_to_entity($topic, $user) && $topic->access_id != ACCESS_PRIVATE) { +							$body = elgg_trigger_plugin_hook('notify:annotation:message', $annotation->getSubtype(), array( +								'annotation' => $annotation, +								'to_entity' => $user, +								'method' => $method), $string); +							if (empty($body) && $body !== false) { +								$body = $string; +							} +							if ($body !== false) { +								notify_user($user->guid, $topic->getContainerGUID(), $subject, $body, null, array($method)); +							} +						} +					} +				} +			} +		} +	} +} + +/**   * A simple function to see who can edit a group discussion post   * @param the comment $entity   * @param user who owns the group $group_owner diff --git a/mod/groups/topicposts.php b/mod/groups/topicposts.php index f9dd3344b..d0137e2f5 100644 --- a/mod/groups/topicposts.php +++ b/mod/groups/topicposts.php @@ -10,10 +10,10 @@  // Load Elgg engine  require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); -elgg_load_library('elgg:topic'); +elgg_load_library('elgg:discussion');  $guid = get_input('topic');  register_error(elgg_echo('changebookmark')); -topic_handle_view_page($guid); +forward("/discussion/view/$guid"); diff --git a/mod/groups/views/default/forms/groups/edit.php b/mod/groups/views/default/forms/groups/edit.php index 26436ef01..532e89c35 100644 --- a/mod/groups/views/default/forms/groups/edit.php +++ b/mod/groups/views/default/forms/groups/edit.php @@ -5,18 +5,9 @@   * @package ElggGroups   */ -// new groups default to open membership -if (isset($vars['entity'])) { -	$membership = $vars['entity']->membership; -	$access = $vars['entity']->access_id; -	if ($access != ACCESS_PUBLIC && $access != ACCESS_LOGGED_IN) { -		// group only - this is done to handle access not created when group is created -		$access = ACCESS_PRIVATE; -	} -} else { -	$membership = ACCESS_PUBLIC; -	$access = ACCESS_PUBLIC; -} +// only extract these elements. +$name = $membership = $vis = $entity = null; +extract($vars, EXTR_IF_EXISTS);  ?>  <div> @@ -27,7 +18,7 @@ if (isset($vars['entity'])) {  	<label><?php echo elgg_echo("groups:name"); ?></label><br />  	<?php echo elgg_view("input/text", array(  		'name' => 'name', -		'value' => $vars['entity']->name, +		'value' => $name  	));  	?>  </div> @@ -45,7 +36,7 @@ if ($group_profile_fields > 0) {  		echo "</label>$line_break";  		echo elgg_view("input/{$valtype}", array(  			'name' => $shortname, -			'value' => $vars['entity']->$shortname, +			'value' => elgg_extract($shortname, $vars)  		));  		echo '</div>';  	} @@ -55,7 +46,7 @@ if ($group_profile_fields > 0) {  <div>  	<label>  		<?php echo elgg_echo('groups:membership'); ?><br /> -		<?php echo elgg_view('input/access', array( +		<?php echo elgg_view('input/dropdown', array(  			'name' => 'membership',  			'value' => $membership,  			'options_values' => array( @@ -70,10 +61,6 @@ if ($group_profile_fields > 0) {  <?php  if (elgg_get_plugin_setting('hidden_groups', 'groups') == 'yes') { -	$this_owner = $vars['entity']->owner_guid; -	if (!$this_owner) { -		$this_owner = elgg_get_logged_in_user_guid(); -	}  	$access_options = array(  		ACCESS_PRIVATE => elgg_echo('groups:access:group'),  		ACCESS_LOGGED_IN => elgg_echo("LOGGED_IN"), @@ -86,7 +73,7 @@ if (elgg_get_plugin_setting('hidden_groups', 'groups') == 'yes') {  			<?php echo elgg_echo('groups:visibility'); ?><br />  			<?php echo elgg_view('input/access', array(  				'name' => 'vis', -				'value' =>  $access, +				'value' =>  $vis,  				'options_values' => $access_options,  			));  			?> @@ -101,12 +88,7 @@ if ($tools) {  	usort($tools, create_function('$a,$b', 'return strcmp($a->label,$b->label);'));  	foreach ($tools 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'; -		} -		$value = $vars['entity']->$group_option_toggle_name ? $vars['entity']->$group_option_toggle_name : $group_option_default_value; +		$value = elgg_extract($group_option_toggle_name, $vars);  ?>	  <div>  	<label> @@ -129,17 +111,17 @@ if ($tools) {  <div class="elgg-foot">  <?php -if (isset($vars['entity'])) { +if (isset($entity)) {  	echo elgg_view('input/hidden', array(  		'name' => 'group_guid', -		'value' => $vars['entity']->getGUID(), +		'value' => $entity->getGUID(),  	));  }  echo elgg_view('input/submit', array('value' => elgg_echo('save'))); -if (isset($vars['entity'])) { -	$delete_url = 'action/groups/delete?guid=' . $vars['entity']->getGUID(); +if (isset($entity)) { +	$delete_url = 'action/groups/delete?guid=' . $entity->getGUID();  	echo elgg_view('output/confirmlink', array(  		'text' => elgg_echo('groups:delete'),  		'href' => $delete_url, diff --git a/mod/groups/views/default/groups/edit.php b/mod/groups/views/default/groups/edit.php index 24a1c3f1e..5579ad54a 100644 --- a/mod/groups/views/default/groups/edit.php +++ b/mod/groups/views/default/groups/edit.php @@ -11,5 +11,5 @@ $form_vars = array(  	'enctype' => 'multipart/form-data',  	'class' => 'elgg-form-alt',  ); -$body_vars = array('entity' => $entity); -echo elgg_view_form('groups/edit', $form_vars, $body_vars); + +echo elgg_view_form('groups/edit', $form_vars, groups_prepare_form_vars($entity)); diff --git a/mod/groups/views/default/groups/sidebar/members.php b/mod/groups/views/default/groups/sidebar/members.php index 49f14697c..11273d0e6 100644 --- a/mod/groups/views/default/groups/sidebar/members.php +++ b/mod/groups/views/default/groups/sidebar/members.php @@ -8,7 +8,7 @@   * @uses $vars['limit']  The number of members to display   */ -$limit = elgg_extract('limit', $vars, 10); +$limit = elgg_extract('limit', $vars, 14);  $all_link = elgg_view('output/url', array(  	'href' => 'groups/members/' . $vars['entity']->guid, @@ -24,6 +24,7 @@ $body = elgg_list_entities_from_relationship(array(  	'limit' => $limit,  	'list_type' => 'gallery',  	'gallery_class' => 'elgg-gallery-users', +	'pagination' => false  ));  $body .= "<div class='center mts'>$all_link</div>"; diff --git a/mod/groups/views/default/plugins/groups/settings.php b/mod/groups/views/default/plugins/groups/settings.php index 7197dcb37..41ea146db 100644 --- a/mod/groups/views/default/plugins/groups/settings.php +++ b/mod/groups/views/default/plugins/groups/settings.php @@ -8,6 +8,11 @@ if (!isset($vars['entity']->hidden_groups)) {  	$vars['entity']->hidden_groups = 'no';  } +// set default value +if (!isset($vars['entity']->limited_groups)) { +	$vars['entity']->limited_groups = 'no'; +} +  echo '<div>';  echo elgg_echo('groups:allowhiddengroups');  echo ' '; @@ -20,3 +25,16 @@ echo elgg_view('input/dropdown', array(  	'value' => $vars['entity']->hidden_groups,  ));  echo '</div>'; + +echo '<div>'; +echo elgg_echo('groups:whocancreate'); +echo ' '; +echo elgg_view('input/dropdown', array( +	'name' => 'params[limited_groups]', +	'options_values' => array( +		'no' => elgg_echo('LOGGED_IN'), +		'yes' => elgg_echo('admin') +	), +	'value' => $vars['entity']->limited_groups, +)); +echo '</div>';  | 
