add a 'more' button for groups menu
This commit is contained in:
parent
af0eded741
commit
3226f2bef6
23
js/util.js
23
js/util.js
@ -1422,6 +1422,29 @@ var SN = { // StatusNet
|
|||||||
SN.Init.NoticeFormSetup(form);
|
SN.Init.NoticeFormSetup(form);
|
||||||
})
|
})
|
||||||
.find('.notice_data-text').focus();
|
.find('.notice_data-text').focus();
|
||||||
|
},
|
||||||
|
|
||||||
|
showMoreGroupMenuItems: function(url) {
|
||||||
|
$.ajax({
|
||||||
|
type: 'GET',
|
||||||
|
dataType: 'xml',
|
||||||
|
url: url,
|
||||||
|
success: function(data, textStatus) {
|
||||||
|
var groupmenu = $('ul#nav_group');
|
||||||
|
$('li#nav_timeline_more_group_menu_items').remove();
|
||||||
|
$("activity\\:object", data).each(function() {
|
||||||
|
var group = $(this);
|
||||||
|
var fullname = $('title',group).text();
|
||||||
|
var nickname = $('poco\\:preferredUsername',group).text();
|
||||||
|
var url = $('link[rel="alternate"][type="text/html"]',group).attr('href');
|
||||||
|
if ($('li#nav_timeline_group_'+nickname, groupmenu).length == 0) {
|
||||||
|
groupmenu.append('<li id="nav_timeline_group_"' + nickname +'">'+
|
||||||
|
'<a href="'+url+'">'+fullname+'</a>'+
|
||||||
|
'</li>');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -46,6 +46,8 @@ if (!defined('STATUSNET')) {
|
|||||||
*/
|
*/
|
||||||
class GroupsNav extends Menu
|
class GroupsNav extends Menu
|
||||||
{
|
{
|
||||||
|
const TOP_GROUPS = 5;
|
||||||
|
|
||||||
protected $user;
|
protected $user;
|
||||||
protected $groups;
|
protected $groups;
|
||||||
|
|
||||||
@ -53,7 +55,7 @@ class GroupsNav extends Menu
|
|||||||
{
|
{
|
||||||
parent::__construct($action);
|
parent::__construct($action);
|
||||||
$this->user = $user;
|
$this->user = $user;
|
||||||
$this->groups = $user->getGroups();
|
$this->groups = $this->getTopGroups($user);
|
||||||
}
|
}
|
||||||
|
|
||||||
function haveGroups()
|
function haveGroups()
|
||||||
@ -61,6 +63,21 @@ class GroupsNav extends Menu
|
|||||||
return (!empty($this->groups) && ($this->groups->N > 0));
|
return (!empty($this->groups) && ($this->groups->N > 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getTopGroups($user)
|
||||||
|
{
|
||||||
|
$memberships = Group_member::byMember($user->id,
|
||||||
|
0,
|
||||||
|
self::TOP_GROUPS + 1);
|
||||||
|
|
||||||
|
$g = array();
|
||||||
|
|
||||||
|
while ($memberships->fetch()) {
|
||||||
|
$g[] = User_group::staticGet('id', $memberships->group_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new ArrayWrapper($g);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Show the menu
|
* Show the menu
|
||||||
*
|
*
|
||||||
@ -70,11 +87,21 @@ class GroupsNav extends Menu
|
|||||||
{
|
{
|
||||||
$action = $this->actionName;
|
$action = $this->actionName;
|
||||||
|
|
||||||
$this->out->elementStart('ul', array('class' => 'nav'));
|
$this->out->elementStart('ul', array('class' => 'nav',
|
||||||
|
'id' => 'nav_group'));
|
||||||
|
|
||||||
if (Event::handle('StartGroupsNav', array($this))) {
|
if (Event::handle('StartGroupsNav', array($this))) {
|
||||||
|
|
||||||
|
$cnt = 0;
|
||||||
|
|
||||||
while ($this->groups->fetch()) {
|
while ($this->groups->fetch()) {
|
||||||
|
|
||||||
|
$cnt++;
|
||||||
|
|
||||||
|
if ($cnt > self::TOP_GROUPS) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
$this->out->menuItem(($this->groups->mainpage) ?
|
$this->out->menuItem(($this->groups->mainpage) ?
|
||||||
$this->groups->mainpage :
|
$this->groups->mainpage :
|
||||||
common_local_url('showgroup',
|
common_local_url('showgroup',
|
||||||
@ -85,6 +112,16 @@ class GroupsNav extends Menu
|
|||||||
$this->action->arg('nickname') == $this->groups->nickname,
|
$this->action->arg('nickname') == $this->groups->nickname,
|
||||||
'nav_timeline_group_'.$this->groups->nickname);
|
'nav_timeline_group_'.$this->groups->nickname);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($cnt > self::TOP_GROUPS) {
|
||||||
|
$this->out->menuItem(sprintf('javascript:SN.U.showMoreGroupMenuItems("%s")',
|
||||||
|
common_local_url('AtomPubMembershipFeed', array('profile' => $this->user->id))),
|
||||||
|
_('More ▼'),
|
||||||
|
_('More groups'),
|
||||||
|
false,
|
||||||
|
'nav_timeline_more_group_menu_items');
|
||||||
|
}
|
||||||
|
|
||||||
Event::handle('EndGroupsNav', array($this));
|
Event::handle('EndGroupsNav', array($this));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user