fixed a few bugs and logic problems in groups

This commit is contained in:
Robin Millette 2009-01-22 08:01:40 +00:00 committed by Robin Millette
parent c20d0612bf
commit e272adb321
5 changed files with 36 additions and 13 deletions

View File

@ -88,7 +88,12 @@ class EditgroupAction extends Action
return false;
}
$this->group = User_group::staticGet('nickname', $nickname);
$groupid = $this->trimmed('groupid');
if ($groupid) {
$this->group = User_group::staticGet('id', $groupid);
} else {
$this->group = User_group::staticGet('nickname', $nickname);
}
if (!$this->group) {
$this->clientError(_('No such group'), 404);
@ -97,7 +102,7 @@ class EditgroupAction extends Action
$cur = common_current_user();
if (!$cur->isAdmin($group)) {
if (!$cur->isAdmin($this->group)) {
$this->clientError(_('You must be an admin to edit the group'), 403);
return false;
}
@ -155,6 +160,13 @@ class EditgroupAction extends Action
function trySave()
{
$cur = common_current_user();
if (!$cur->isAdmin($this->group)) {
$this->clientError(_('You must be an admin to edit the group'), 403);
return;
}
$nickname = common_canonical_nickname($this->trimmed('nickname'));
$fullname = $this->trimmed('fullname');
$homepage = $this->trimmed('homepage');
@ -222,4 +234,5 @@ class EditgroupAction extends Action
$group != false &&
$group->id != $this->group->id);
}
}
}

View File

@ -57,12 +57,12 @@ class LeavegroupAction extends Action
parent::prepare($args);
if (!common_config('inboxes','enabled')) {
$this->serverError(_('Inboxes must be enabled for groups to work'));
$this->serverError(_('Inboxes must be enabled for groups to work.'));
return false;
}
if (!common_logged_in()) {
$this->clientError(_('You must be logged in to join a group.'));
$this->clientError(_('You must be logged in to leave a group.'));
return false;
}
@ -78,24 +78,30 @@ class LeavegroupAction extends Action
}
if (!$nickname) {
$this->clientError(_('No nickname'), 404);
$this->clientError(_('No nickname.'), 404);
return false;
}
$this->group = User_group::staticGet('nickname', $nickname);
if (!$this->group) {
$this->clientError(_('No such group'), 404);
$this->clientError(_('No such group.'), 404);
return false;
}
$cur = common_current_user();
if (!$cur->isMember($group)) {
$this->clientError(_('You are not a member of that group'), 403);
if (!$cur->isMember($this->group)) {
$this->clientError(_('You are not a member of that group.'), 403);
return false;
}
if ($cur->isAdmin($this->group)) {
$this->clientError(_('You may not leave a group while you are its administrator.'), 403);
return false;
}
return true;
}
@ -150,4 +156,4 @@ class LeavegroupAction extends Action
$this->group->nickname)));
}
}
}
}

View File

@ -201,4 +201,5 @@ class NewgroupAction extends Action
$group = User_group::staticGet('nickname', $nickname);
return (!is_null($group) && $group != false);
}
}
}

View File

@ -267,8 +267,10 @@ class ShowgroupAction extends Action
$cur = common_current_user();
if ($cur) {
if ($cur->isMember($this->group)) {
$lf = new LeaveForm($this, $this->group);
$lf->show();
if (!$cur->isAdmin($this->group)) {
$lf = new LeaveForm($this, $this->group);
$lf->show();
}
} else {
$jf = new JoinForm($this, $this->group);
$jf->show();

View File

@ -133,6 +133,7 @@ class GroupEditForm extends Form
{
$this->out->elementStart('ul', 'form_data');
$this->out->elementStart('li');
$this->out->hidden('groupid', $this->group->id);
$this->out->input('nickname', _('Nickname'),
($this->out->arg('nickname')) ? $this->out->arg('nickname') : $this->group->nickname,
_('1-64 lowercase letters or numbers, no punctuation or spaces'));