diff options
Diffstat (limited to 'mod/groups')
| -rw-r--r-- | mod/groups/languages/en.php | 10 | ||||
| -rw-r--r-- | mod/groups/lib/groups.php | 29 | ||||
| -rw-r--r-- | mod/groups/start.php | 29 | ||||
| -rw-r--r-- | mod/groups/views/default/groups/css.php | 26 | ||||
| -rw-r--r-- | mod/groups/views/default/groups/profile/summary.php | 6 | ||||
| -rw-r--r-- | mod/groups/views/default/groups/sidebar/my_status.php | 62 | ||||
| -rw-r--r-- | mod/groups/views/rss/object/groupforumtopic.php | 2 | 
7 files changed, 154 insertions, 10 deletions
| diff --git a/mod/groups/languages/en.php b/mod/groups/languages/en.php index 0d57f1680..9e0799b3a 100644 --- a/mod/groups/languages/en.php +++ b/mod/groups/languages/en.php @@ -20,7 +20,9 @@ $english = array(  	'groups:edit' => "Edit group",  	'groups:delete' => 'Delete group',  	'groups:membershiprequests' => 'Manage join requests', +	'groups:membershiprequests:pending' => 'Manage join requests (%s)',  	'groups:invitations' => 'Group invitations', +	'groups:invitations:pending' => 'Group invitations (%s)',  	'groups:icon' => 'Group icon (leave blank to leave unchanged)',  	'groups:name' => 'Group name', @@ -30,6 +32,12 @@ $english = array(  	'groups:interests' => 'Tags',  	'groups:website' => 'Website',  	'groups:members' => 'Group members', +	'groups:my_status' => 'My status', +	'groups:my_status:group_owner' => 'You own this group', +	'groups:my_status:group_member' => 'You are in this group', +	'groups:subscribed' => 'Group notifications on', +	'groups:unsubscribed' => 'Group notifications off', +  	'groups:members:title' => 'Members of %s',  	'groups:members:more' => "View all members",  	'groups:membership' => "Group membership permissions", @@ -211,7 +219,7 @@ View and reply to the discussion:  	'groups:updated' => "Last reply by %s %s",  	'groups:started' => "Started by %s",  	'groups:joinrequest:remove:check' => 'Are you sure you want to remove this join request?', -	'groups:invite:remove:check' => 'Are you sure you want to remove this invite?', +	'groups:invite:remove:check' => 'Are you sure you want to remove this invitation?',  	'groups:invite:body' => "Hi %s,  %s invited you to join the '%s' group. Click below to view your invitations: diff --git a/mod/groups/lib/groups.php b/mod/groups/lib/groups.php index 505cacd01..d8d0f568d 100644 --- a/mod/groups/lib/groups.php +++ b/mod/groups/lib/groups.php @@ -152,7 +152,7 @@ function groups_handle_mine_page() {  	elgg_register_title_button(); -	$content = elgg_list_entities_from_relationship_count(array( +	$content = elgg_list_entities_from_relationship(array(  		'type' => 'group',  		'relationship' => 'member',  		'relationship_guid' => elgg_get_page_owner_guid(), @@ -264,14 +264,33 @@ function groups_handle_profile_page($guid) {  	groups_register_profile_buttons($group);  	$content = elgg_view('groups/profile/layout', array('entity' => $group)); -	if (group_gatekeeper(false)) { -		$sidebar = ''; +	$sidebar = ''; + +	if (group_gatekeeper(false)) {	  		if (elgg_is_active_plugin('search')) {  			$sidebar .= elgg_view('groups/sidebar/search', array('entity' => $group));  		}  		$sidebar .= elgg_view('groups/sidebar/members', array('entity' => $group)); -	} else { -		$sidebar = ''; + +		$subscribed = false; +		if (elgg_is_active_plugin('notifications')) { +			global $NOTIFICATION_HANDLERS; +			 +			foreach ($NOTIFICATION_HANDLERS as $method => $foo) { +				$relationship = check_entity_relationship(elgg_get_logged_in_user_guid(), +						'notify' . $method, $guid); +				 +				if ($relationship) { +					$subscribed = true; +					break; +				} +			} +		} +		 +		$sidebar .= elgg_view('groups/sidebar/my_status', array( +			'entity' => $group, +			'subscribed' => $subscribed +		));  	}  	$params = array( diff --git a/mod/groups/start.php b/mod/groups/start.php index 9dca7dc16..4e49d9e55 100644 --- a/mod/groups/start.php +++ b/mod/groups/start.php @@ -144,9 +144,24 @@ function groups_setup_sidebar_menus() {  	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()}"; + +			$count = elgg_get_entities_from_relationship(array( +				'type' => 'user', +				'relationship' => 'membership_request', +				'relationship_guid' => $guid, +				'inverse_relationship' => true, +				'count' => true, +			)); + +			if ($count) { +				$text = elgg_echo('groups:membershiprequests:pending', array($count)); +			} else { +				$text = elgg_echo('groups:membershiprequests'); +			} +  			elgg_register_menu_item('page', array(  				'name' => 'membership_requests', -				'text' => elgg_echo('groups:membershiprequests'), +				'text' => $text,  				'href' => $url,  			));  		} @@ -163,11 +178,21 @@ function groups_setup_sidebar_menus() {  			$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); +			$invitations = groups_get_invited_groups($user->getGUID()); +			if (is_array($invitations) && !empty($invitations)) { +				$invitation_count = count($invitations); +				$text = elgg_echo('groups:invitations:pending', array($invitation_count)); +			} else { +				$text = elgg_echo('groups:invitations'); +			} + +			$item = new ElggMenuItem('groups:user:invites', $text, $url);  			elgg_register_menu_item('page', $item);  		}  	} diff --git a/mod/groups/views/default/groups/css.php b/mod/groups/views/default/groups/css.php index 9c65d1602..6f710ddab 100644 --- a/mod/groups/views/default/groups/css.php +++ b/mod/groups/views/default/groups/css.php @@ -9,7 +9,10 @@  .groups-profile > .elgg-image {  	margin-right: 10px;  } - +.groups-profile img { +	width: 100%; +	height: auto; +}  .groups-stats {  	background: #eeeeee;  	padding: 5px; @@ -54,3 +57,24 @@  .groups-latest-reply {  	float: right;  } + +.elgg-menu-groups-my-status li a { +	display: block; + +	-webkit-border-radius: 8px; +	-moz-border-radius: 8px; +	border-radius: 8px; + +	background-color: white; +	margin: 3px 0 5px 0; +	padding: 2px 4px 2px 8px; +} +.elgg-menu-groups-my-status li a:hover { +	background-color: #0054A7; +	color: white; +	text-decoration: none; +} +.elgg-menu-groups-my-status li.elgg-state-selected > a { +	background-color: #4690D6; +	color: white; +} diff --git a/mod/groups/views/default/groups/profile/summary.php b/mod/groups/views/default/groups/profile/summary.php index 54abcb1e5..f1221f19a 100644 --- a/mod/groups/views/default/groups/profile/summary.php +++ b/mod/groups/views/default/groups/profile/summary.php @@ -15,6 +15,12 @@ if (!isset($vars['entity']) || !$vars['entity']) {  $group = $vars['entity'];  $owner = $group->getOwnerEntity(); +if (!$owner) { +	// not having an owner is very bad so we throw an exception +	$msg = elgg_echo('InvalidParameterException:IdNotExistForGUID', array('group owner', $group->guid)); +	throw new InvalidParameterException($msg); +} +  ?>  <div class="groups-profile clearfix elgg-image-block">  	<div class="elgg-image"> diff --git a/mod/groups/views/default/groups/sidebar/my_status.php b/mod/groups/views/default/groups/sidebar/my_status.php new file mode 100644 index 000000000..4c36c0213 --- /dev/null +++ b/mod/groups/views/default/groups/sidebar/my_status.php @@ -0,0 +1,62 @@ +<?php +/** + * Group status for logged in user + * + * @package ElggGroups + * + * @uses $vars['entity'] Group entity + */ + +$group = elgg_extract('entity', $vars); +$user = elgg_get_logged_in_user_entity(); +$subscribed = elgg_extract('subscribed', $vars); + +if (!elgg_is_logged_in()) { +	return true; +} +$t = new ElggMenuItem(); +// membership status +$is_member = $group->isMember($user); +$is_owner = $group->getOwnerEntity() == $user; + +if ($is_owner) { +	elgg_register_menu_item('groups:my_status', array( +		'name' => 'membership_status', +		'text' => '<a>' . elgg_echo('groups:my_status:group_owner') . '</a>', +		'href' => false +	)); +} elseif ($is_member) { +	elgg_register_menu_item('groups:my_status', array( +		'name' => 'membership_status', +		'text' => '<a>' . elgg_echo('groups:my_status:group_member') . '</a>', +		'href' => false +	)); +} else { +	elgg_register_menu_item('groups:my_status', array( +		'name' => 'membership_status', +		'text' => elgg_echo('groups:join'), +		'href' => "/action/groups/join?group_guid={$group->getGUID()}", +		'is_action' => true +	)); +} + +// notification info +if (elgg_is_active_plugin('notifications')) { +	if ($subscribed) { +		elgg_register_menu_item('groups:my_status', array( +			'name' => 'subscription_status', +			'text' => elgg_echo('groups:subscribed'), +			'href' => "notifications/group/$user->username", +			'is_action' => true +		)); +	} else { +		elgg_register_menu_item('groups:my_status', array( +			'name' => 'subscription_status', +			'text' => elgg_echo('groups:unsubscribed'), +			'href' => "notifications/group/$user->username" +		)); +	} +} + +$body = elgg_view_menu('groups:my_status'); +echo elgg_view_module('aside', elgg_echo('groups:my_status'), $body); diff --git a/mod/groups/views/rss/object/groupforumtopic.php b/mod/groups/views/rss/object/groupforumtopic.php index d730ef796..b2d05d488 100644 --- a/mod/groups/views/rss/object/groupforumtopic.php +++ b/mod/groups/views/rss/object/groupforumtopic.php @@ -14,7 +14,7 @@ if (empty($title)) {  $permalink = htmlspecialchars($vars['entity']->getURL(), ENT_NOQUOTES, 'UTF-8');  $pubdate = date('r', $vars['entity']->getTimeCreated()); -$description = autop($vars['entity']->description); +$description = elgg_autop($vars['entity']->description);  $creator = elgg_view('page/components/creator', $vars);  $georss = elgg_view('page/components/georss', $vars); | 
