events for modifying group edit form
This commit is contained in:
parent
edeaf8a2f8
commit
5fee38b025
@ -1057,3 +1057,9 @@ StartCloseNoticeListItemElement: Before the closing </li> of a notice list eleme
|
|||||||
|
|
||||||
EndCloseNoticeListItemElement: After the closing </li> of a notice list element
|
EndCloseNoticeListItemElement: After the closing </li> of a notice list element
|
||||||
- $nli: The notice list item being shown
|
- $nli: The notice list item being shown
|
||||||
|
|
||||||
|
StartGroupEditFormData: Beginning the group edit form entries
|
||||||
|
- $form: The form widget being shown
|
||||||
|
|
||||||
|
EndGroupEditFormData: Ending the group edit form entries
|
||||||
|
- $form: The form widget being shown
|
||||||
|
@ -177,116 +177,121 @@ class EditgroupAction extends GroupDesignAction
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$nickname = Nickname::normalize($this->trimmed('nickname'));
|
if (Event::handle('StartGroupSaveForm', array($this))) {
|
||||||
$fullname = $this->trimmed('fullname');
|
|
||||||
$homepage = $this->trimmed('homepage');
|
|
||||||
$description = $this->trimmed('description');
|
|
||||||
$location = $this->trimmed('location');
|
|
||||||
$aliasstring = $this->trimmed('aliases');
|
|
||||||
|
|
||||||
if ($this->nicknameExists($nickname)) {
|
$nickname = Nickname::normalize($this->trimmed('nickname'));
|
||||||
// TRANS: Group edit form validation error.
|
$fullname = $this->trimmed('fullname');
|
||||||
$this->showForm(_('Nickname already in use. Try another one.'));
|
$homepage = $this->trimmed('homepage');
|
||||||
return;
|
$description = $this->trimmed('description');
|
||||||
} else if (!User_group::allowedNickname($nickname)) {
|
$location = $this->trimmed('location');
|
||||||
// TRANS: Group edit form validation error.
|
$aliasstring = $this->trimmed('aliases');
|
||||||
$this->showForm(_('Not a valid nickname.'));
|
|
||||||
return;
|
if ($this->nicknameExists($nickname)) {
|
||||||
} else if (!is_null($homepage) && (strlen($homepage) > 0) &&
|
|
||||||
!Validate::uri($homepage,
|
|
||||||
array('allowed_schemes' =>
|
|
||||||
array('http', 'https')))) {
|
|
||||||
// TRANS: Group edit form validation error.
|
|
||||||
$this->showForm(_('Homepage is not a valid URL.'));
|
|
||||||
return;
|
|
||||||
} else if (!is_null($fullname) && mb_strlen($fullname) > 255) {
|
|
||||||
// TRANS: Group edit form validation error.
|
|
||||||
$this->showForm(_('Full name is too long (maximum 255 characters).'));
|
|
||||||
return;
|
|
||||||
} else if (User_group::descriptionTooLong($description)) {
|
|
||||||
$this->showForm(sprintf(
|
|
||||||
// TRANS: Group edit form validation error.
|
// TRANS: Group edit form validation error.
|
||||||
_m('Description is too long (maximum %d character).',
|
$this->showForm(_('Nickname already in use. Try another one.'));
|
||||||
'Description is too long (maximum %d characters).',
|
return;
|
||||||
User_group::maxDescription()),
|
} else if (!User_group::allowedNickname($nickname)) {
|
||||||
|
// TRANS: Group edit form validation error.
|
||||||
|
$this->showForm(_('Not a valid nickname.'));
|
||||||
|
return;
|
||||||
|
} else if (!is_null($homepage) && (strlen($homepage) > 0) &&
|
||||||
|
!Validate::uri($homepage,
|
||||||
|
array('allowed_schemes' =>
|
||||||
|
array('http', 'https')))) {
|
||||||
|
// TRANS: Group edit form validation error.
|
||||||
|
$this->showForm(_('Homepage is not a valid URL.'));
|
||||||
|
return;
|
||||||
|
} else if (!is_null($fullname) && mb_strlen($fullname) > 255) {
|
||||||
|
// TRANS: Group edit form validation error.
|
||||||
|
$this->showForm(_('Full name is too long (maximum 255 characters).'));
|
||||||
|
return;
|
||||||
|
} else if (User_group::descriptionTooLong($description)) {
|
||||||
|
$this->showForm(sprintf(
|
||||||
|
// TRANS: Group edit form validation error.
|
||||||
|
_m('Description is too long (maximum %d character).',
|
||||||
|
'Description is too long (maximum %d characters).',
|
||||||
|
User_group::maxDescription()),
|
||||||
User_group::maxDescription()));
|
User_group::maxDescription()));
|
||||||
return;
|
return;
|
||||||
} else if (!is_null($location) && mb_strlen($location) > 255) {
|
} else if (!is_null($location) && mb_strlen($location) > 255) {
|
||||||
// TRANS: Group edit form validation error.
|
|
||||||
$this->showForm(_('Location is too long (maximum 255 characters).'));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!empty($aliasstring)) {
|
|
||||||
$aliases = array_map('common_canonical_nickname', array_unique(preg_split('/[\s,]+/', $aliasstring)));
|
|
||||||
} else {
|
|
||||||
$aliases = array();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (count($aliases) > common_config('group', 'maxaliases')) {
|
|
||||||
// TRANS: Group edit form validation error.
|
|
||||||
// TRANS: %d is the maximum number of allowed aliases.
|
|
||||||
$this->showForm(sprintf(_m('Too many aliases! Maximum %d allowed.',
|
|
||||||
'Too many aliases! Maximum %d allowed.',
|
|
||||||
common_config('group', 'maxaliases')),
|
|
||||||
common_config('group', 'maxaliases')));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($aliases as $alias) {
|
|
||||||
if (!Nickname::isValid($alias)) {
|
|
||||||
// TRANS: Group edit form validation error.
|
// TRANS: Group edit form validation error.
|
||||||
$this->showForm(sprintf(_('Invalid alias: "%s"'), $alias));
|
$this->showForm(_('Location is too long (maximum 255 characters).'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ($this->nicknameExists($alias)) {
|
|
||||||
|
if (!empty($aliasstring)) {
|
||||||
|
$aliases = array_map('common_canonical_nickname', array_unique(preg_split('/[\s,]+/', $aliasstring)));
|
||||||
|
} else {
|
||||||
|
$aliases = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (count($aliases) > common_config('group', 'maxaliases')) {
|
||||||
// TRANS: Group edit form validation error.
|
// TRANS: Group edit form validation error.
|
||||||
$this->showForm(sprintf(_('Alias "%s" already in use. Try another one.'),
|
// TRANS: %d is the maximum number of allowed aliases.
|
||||||
$alias));
|
$this->showForm(sprintf(_m('Too many aliases! Maximum %d allowed.',
|
||||||
|
'Too many aliases! Maximum %d allowed.',
|
||||||
|
common_config('group', 'maxaliases')),
|
||||||
|
common_config('group', 'maxaliases')));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// XXX assumes alphanum nicknames
|
|
||||||
if (strcmp($alias, $nickname) == 0) {
|
foreach ($aliases as $alias) {
|
||||||
// TRANS: Group edit form validation error.
|
if (!Nickname::isValid($alias)) {
|
||||||
$this->showForm(_('Alias can\'t be the same as nickname.'));
|
// TRANS: Group edit form validation error.
|
||||||
return;
|
$this->showForm(sprintf(_('Invalid alias: "%s"'), $alias));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ($this->nicknameExists($alias)) {
|
||||||
|
// TRANS: Group edit form validation error.
|
||||||
|
$this->showForm(sprintf(_('Alias "%s" already in use. Try another one.'),
|
||||||
|
$alias));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// XXX assumes alphanum nicknames
|
||||||
|
if (strcmp($alias, $nickname) == 0) {
|
||||||
|
// TRANS: Group edit form validation error.
|
||||||
|
$this->showForm(_('Alias can\'t be the same as nickname.'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->group->query('BEGIN');
|
||||||
|
|
||||||
|
$orig = clone($this->group);
|
||||||
|
|
||||||
|
$this->group->nickname = $nickname;
|
||||||
|
$this->group->fullname = $fullname;
|
||||||
|
$this->group->homepage = $homepage;
|
||||||
|
$this->group->description = $description;
|
||||||
|
$this->group->location = $location;
|
||||||
|
$this->group->mainpage = common_local_url('showgroup', array('nickname' => $nickname));
|
||||||
|
|
||||||
|
$result = $this->group->update($orig);
|
||||||
|
|
||||||
|
if (!$result) {
|
||||||
|
common_log_db_error($this->group, 'UPDATE', __FILE__);
|
||||||
|
// TRANS: Server error displayed when editing a group fails.
|
||||||
|
$this->serverError(_('Could not update group.'));
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = $this->group->setAliases($aliases);
|
||||||
|
|
||||||
|
if (!$result) {
|
||||||
|
// TRANS: Server error displayed when group aliases could not be added.
|
||||||
|
$this->serverError(_('Could not create aliases.'));
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($nickname != $orig->nickname) {
|
||||||
|
common_log(LOG_INFO, "Saving local group info.");
|
||||||
|
$local = Local_group::staticGet('group_id', $this->group->id);
|
||||||
|
$local->setNickname($nickname);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->group->query('COMMIT');
|
||||||
|
|
||||||
|
Event::handle('EndGroupSaveForm', array($this));
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->group->query('BEGIN');
|
|
||||||
|
|
||||||
$orig = clone($this->group);
|
|
||||||
|
|
||||||
$this->group->nickname = $nickname;
|
|
||||||
$this->group->fullname = $fullname;
|
|
||||||
$this->group->homepage = $homepage;
|
|
||||||
$this->group->description = $description;
|
|
||||||
$this->group->location = $location;
|
|
||||||
$this->group->mainpage = common_local_url('showgroup', array('nickname' => $nickname));
|
|
||||||
|
|
||||||
$result = $this->group->update($orig);
|
|
||||||
|
|
||||||
if (!$result) {
|
|
||||||
common_log_db_error($this->group, 'UPDATE', __FILE__);
|
|
||||||
// TRANS: Server error displayed when editing a group fails.
|
|
||||||
$this->serverError(_('Could not update group.'));
|
|
||||||
}
|
|
||||||
|
|
||||||
$result = $this->group->setAliases($aliases);
|
|
||||||
|
|
||||||
if (!$result) {
|
|
||||||
// TRANS: Server error displayed when group aliases could not be added.
|
|
||||||
$this->serverError(_('Could not create aliases.'));
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($nickname != $orig->nickname) {
|
|
||||||
common_log(LOG_INFO, "Saving local group info.");
|
|
||||||
$local = Local_group::staticGet('group_id', $this->group->id);
|
|
||||||
$local->setNickname($nickname);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->group->query('COMMIT');
|
|
||||||
|
|
||||||
if ($this->group->nickname != $orig->nickname) {
|
if ($this->group->nickname != $orig->nickname) {
|
||||||
common_redirect(common_local_url('editgroup',
|
common_redirect(common_local_url('editgroup',
|
||||||
array('nickname' => $nickname)),
|
array('nickname' => $nickname)),
|
||||||
|
@ -147,51 +147,54 @@ class GroupEditForm extends Form
|
|||||||
}
|
}
|
||||||
|
|
||||||
$this->out->elementStart('ul', 'form_data');
|
$this->out->elementStart('ul', 'form_data');
|
||||||
$this->out->elementStart('li');
|
if (Event::handle('StartGroupEditFormData', array($this))) {
|
||||||
$this->out->hidden('groupid', $id);
|
|
||||||
$this->out->input('nickname', _('Nickname'),
|
|
||||||
($this->out->arg('nickname')) ? $this->out->arg('nickname') : $nickname,
|
|
||||||
_('1-64 lowercase letters or numbers, no punctuation or spaces'));
|
|
||||||
$this->out->elementEnd('li');
|
|
||||||
$this->out->elementStart('li');
|
|
||||||
$this->out->input('fullname', _('Full name'),
|
|
||||||
($this->out->arg('fullname')) ? $this->out->arg('fullname') : $fullname);
|
|
||||||
$this->out->elementEnd('li');
|
|
||||||
$this->out->elementStart('li');
|
|
||||||
$this->out->input('homepage', _('Homepage'),
|
|
||||||
($this->out->arg('homepage')) ? $this->out->arg('homepage') : $homepage,
|
|
||||||
_('URL of the homepage or blog of the group or topic.'));
|
|
||||||
$this->out->elementEnd('li');
|
|
||||||
$this->out->elementStart('li');
|
|
||||||
$desclimit = User_group::maxDescription();
|
|
||||||
if ($desclimit == 0) {
|
|
||||||
$descinstr = _('Describe the group or topic');
|
|
||||||
} else {
|
|
||||||
$descinstr = sprintf(_m('Describe the group or topic in %d character or less',
|
|
||||||
'Describe the group or topic in %d characters or less',
|
|
||||||
$desclimit),
|
|
||||||
$desclimit);
|
|
||||||
}
|
|
||||||
$this->out->textarea('description', _('Description'),
|
|
||||||
($this->out->arg('description')) ? $this->out->arg('description') : $description,
|
|
||||||
$descinstr);
|
|
||||||
$this->out->elementEnd('li');
|
|
||||||
$this->out->elementStart('li');
|
|
||||||
$this->out->input('location', _('Location'),
|
|
||||||
($this->out->arg('location')) ? $this->out->arg('location') : $location,
|
|
||||||
_('Location for the group, if any, like "City, State (or Region), Country".'));
|
|
||||||
$this->out->elementEnd('li');
|
|
||||||
if (common_config('group', 'maxaliases') > 0) {
|
|
||||||
$aliases = (empty($this->group)) ? array() : $this->group->getAliases();
|
|
||||||
$this->out->elementStart('li');
|
$this->out->elementStart('li');
|
||||||
$this->out->input('aliases', _('Aliases'),
|
$this->out->hidden('groupid', $id);
|
||||||
($this->out->arg('aliases')) ? $this->out->arg('aliases') :
|
$this->out->input('nickname', _('Nickname'),
|
||||||
(!empty($aliases)) ? implode(' ', $aliases) : '',
|
($this->out->arg('nickname')) ? $this->out->arg('nickname') : $nickname,
|
||||||
sprintf(_m('Extra nicknames for the group, separated with commas or spaces. Maximum %d alias allowed.',
|
_('1-64 lowercase letters or numbers, no punctuation or spaces'));
|
||||||
'Extra nicknames for the group, separated with commas or spaces. Maximum %d aliases allowed.',
|
|
||||||
common_config('group', 'maxaliases')),
|
|
||||||
common_config('group', 'maxaliases')));;
|
|
||||||
$this->out->elementEnd('li');
|
$this->out->elementEnd('li');
|
||||||
|
$this->out->elementStart('li');
|
||||||
|
$this->out->input('fullname', _('Full name'),
|
||||||
|
($this->out->arg('fullname')) ? $this->out->arg('fullname') : $fullname);
|
||||||
|
$this->out->elementEnd('li');
|
||||||
|
$this->out->elementStart('li');
|
||||||
|
$this->out->input('homepage', _('Homepage'),
|
||||||
|
($this->out->arg('homepage')) ? $this->out->arg('homepage') : $homepage,
|
||||||
|
_('URL of the homepage or blog of the group or topic.'));
|
||||||
|
$this->out->elementEnd('li');
|
||||||
|
$this->out->elementStart('li');
|
||||||
|
$desclimit = User_group::maxDescription();
|
||||||
|
if ($desclimit == 0) {
|
||||||
|
$descinstr = _('Describe the group or topic');
|
||||||
|
} else {
|
||||||
|
$descinstr = sprintf(_m('Describe the group or topic in %d character or less',
|
||||||
|
'Describe the group or topic in %d characters or less',
|
||||||
|
$desclimit),
|
||||||
|
$desclimit);
|
||||||
|
}
|
||||||
|
$this->out->textarea('description', _('Description'),
|
||||||
|
($this->out->arg('description')) ? $this->out->arg('description') : $description,
|
||||||
|
$descinstr);
|
||||||
|
$this->out->elementEnd('li');
|
||||||
|
$this->out->elementStart('li');
|
||||||
|
$this->out->input('location', _('Location'),
|
||||||
|
($this->out->arg('location')) ? $this->out->arg('location') : $location,
|
||||||
|
_('Location for the group, if any, like "City, State (or Region), Country".'));
|
||||||
|
$this->out->elementEnd('li');
|
||||||
|
if (common_config('group', 'maxaliases') > 0) {
|
||||||
|
$aliases = (empty($this->group)) ? array() : $this->group->getAliases();
|
||||||
|
$this->out->elementStart('li');
|
||||||
|
$this->out->input('aliases', _('Aliases'),
|
||||||
|
($this->out->arg('aliases')) ? $this->out->arg('aliases') :
|
||||||
|
(!empty($aliases)) ? implode(' ', $aliases) : '',
|
||||||
|
sprintf(_m('Extra nicknames for the group, separated with commas or spaces. Maximum %d alias allowed.',
|
||||||
|
'Extra nicknames for the group, separated with commas or spaces. Maximum %d aliases allowed.',
|
||||||
|
common_config('group', 'maxaliases')),
|
||||||
|
common_config('group', 'maxaliases')));;
|
||||||
|
$this->out->elementEnd('li');
|
||||||
|
}
|
||||||
|
Event::handle('EndGroupEditFormData', array($this));
|
||||||
}
|
}
|
||||||
$this->out->elementEnd('ul');
|
$this->out->elementEnd('ul');
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user