Merge remote branch 'statusnet/0.9.x' into 0.9.x
This commit is contained in:
commit
333c376c95
10
EVENTS.txt
10
EVENTS.txt
@ -191,6 +191,12 @@ StartPersonalGroupNav: beginning of personal group nav menu
|
|||||||
EndPersonalGroupNav: end of personal group nav menu (good place to add a menu item)
|
EndPersonalGroupNav: end of personal group nav menu (good place to add a menu item)
|
||||||
- $action: action object being shown
|
- $action: action object being shown
|
||||||
|
|
||||||
|
StartGroupGroupNav: Showing the group nav menu
|
||||||
|
- $action: the current action
|
||||||
|
|
||||||
|
EndGroupGroupNav: At the end of the group nav menu
|
||||||
|
- $action: the current action
|
||||||
|
|
||||||
StartEndHTML: just before the </html> tag
|
StartEndHTML: just before the </html> tag
|
||||||
- $action: action object being shown
|
- $action: action object being shown
|
||||||
|
|
||||||
@ -489,6 +495,10 @@ ChangePassword: Handle a password change request
|
|||||||
- $newpassword: the desired new password
|
- $newpassword: the desired new password
|
||||||
- &$errormsg: set this to an error message if the password could not be changed. If the password was changed, leave this as false
|
- &$errormsg: set this to an error message if the password could not be changed. If the password was changed, leave this as false
|
||||||
|
|
||||||
|
CanUserChangeField: Determines if a user is allowed to change a specific profile field
|
||||||
|
- $nickname: nickname of the user who would like to know which of their profile fields are mutable
|
||||||
|
- $field: name of the field the user wants to change (nickname, fullname, password, avatar, etc)
|
||||||
|
|
||||||
UserDeleteRelated: Specify additional tables to delete entries from when deleting users
|
UserDeleteRelated: Specify additional tables to delete entries from when deleting users
|
||||||
- $user: User object
|
- $user: User object
|
||||||
- &$related: array of DB_DataObject class names to delete entries on matching user_id.
|
- &$related: array of DB_DataObject class names to delete entries on matching user_id.
|
||||||
|
@ -146,8 +146,8 @@ class BlockAction extends Action
|
|||||||
$this->hidden($k, $v);
|
$this->hidden($k, $v);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$this->submit('form_action-no', _('No'), 'submit form_action-primary', 'no', _("Do not block this user from this group"));
|
$this->submit('form_action-no', _('No'), 'submit form_action-primary', 'no', _("Do not block this user"));
|
||||||
$this->submit('form_action-yes', _('Yes'), 'submit form_action-secondary', 'yes', _('Block this user from this group'));
|
$this->submit('form_action-yes', _('Yes'), 'submit form_action-secondary', 'yes', _('Block this user'));
|
||||||
$this->elementEnd('fieldset');
|
$this->elementEnd('fieldset');
|
||||||
$this->elementEnd('form');
|
$this->elementEnd('form');
|
||||||
}
|
}
|
||||||
|
@ -151,17 +151,19 @@ class GroupblockAction extends Action
|
|||||||
function areYouSureForm()
|
function areYouSureForm()
|
||||||
{
|
{
|
||||||
$id = $this->profile->id;
|
$id = $this->profile->id;
|
||||||
|
$this->elementStart('form', array('id' => 'block-' . $id,
|
||||||
|
'method' => 'post',
|
||||||
|
'class' => 'form_settings form_entity_block',
|
||||||
|
'action' => common_local_url('groupblock')));
|
||||||
|
$this->elementStart('fieldset');
|
||||||
|
$this->hidden('token', common_session_token());
|
||||||
|
$this->element('legend', _('Block user'));
|
||||||
$this->element('p', null,
|
$this->element('p', null,
|
||||||
sprintf(_('Are you sure you want to block user "%s" from the group "%s"? '.
|
sprintf(_('Are you sure you want to block user "%s" from the group "%s"? '.
|
||||||
'They will be removed from the group, unable to post, and '.
|
'They will be removed from the group, unable to post, and '.
|
||||||
'unable to subscribe to the group in the future.'),
|
'unable to subscribe to the group in the future.'),
|
||||||
$this->profile->getBestName(),
|
$this->profile->getBestName(),
|
||||||
$this->group->getBestName()));
|
$this->group->getBestName()));
|
||||||
$this->elementStart('form', array('id' => 'block-' . $id,
|
|
||||||
'method' => 'post',
|
|
||||||
'class' => 'block',
|
|
||||||
'action' => common_local_url('groupblock')));
|
|
||||||
$this->hidden('token', common_session_token());
|
|
||||||
$this->hidden('blockto-' . $this->profile->id,
|
$this->hidden('blockto-' . $this->profile->id,
|
||||||
$this->profile->id,
|
$this->profile->id,
|
||||||
'blockto');
|
'blockto');
|
||||||
@ -173,8 +175,9 @@ class GroupblockAction extends Action
|
|||||||
$this->hidden($k, $v);
|
$this->hidden($k, $v);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$this->submit('no', _('No'));
|
$this->submit('form_action-no', _('No'), 'submit form_action-primary', 'no', _("Do not block this user from this group"));
|
||||||
$this->submit('yes', _('Yes'));
|
$this->submit('form_action-yes', _('Yes'), 'submit form_action-secondary', 'yes', _('Block this user from this group'));
|
||||||
|
$this->elementEnd('fieldset');
|
||||||
$this->elementEnd('form');
|
$this->elementEnd('form');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,6 +58,19 @@ class PasswordsettingsAction extends AccountSettingsAction
|
|||||||
return _('Change password');
|
return _('Change password');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function prepare($args){
|
||||||
|
parent::prepare($args);
|
||||||
|
|
||||||
|
$user = common_current_user();
|
||||||
|
|
||||||
|
Event::handle('CanUserChangeField', array($user->nickname, 'password'));
|
||||||
|
|
||||||
|
if(! $fields['password']){
|
||||||
|
//user is not allowed to change his password
|
||||||
|
$this->clientError(_('You are not allowed to change your password'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instructions for use
|
* Instructions for use
|
||||||
*
|
*
|
||||||
@ -86,6 +99,7 @@ class PasswordsettingsAction extends AccountSettingsAction
|
|||||||
function showContent()
|
function showContent()
|
||||||
{
|
{
|
||||||
$user = common_current_user();
|
$user = common_current_user();
|
||||||
|
|
||||||
$this->elementStart('form', array('method' => 'POST',
|
$this->elementStart('form', array('method' => 'POST',
|
||||||
'id' => 'form_password',
|
'id' => 'form_password',
|
||||||
'class' => 'form_settings',
|
'class' => 'form_settings',
|
||||||
|
@ -102,26 +102,31 @@ class AccountSettingsNav extends Widget
|
|||||||
$this->action->elementStart('ul', array('class' => 'nav'));
|
$this->action->elementStart('ul', array('class' => 'nav'));
|
||||||
|
|
||||||
if (Event::handle('StartAccountSettingsNav', array(&$this->action))) {
|
if (Event::handle('StartAccountSettingsNav', array(&$this->action))) {
|
||||||
|
$user = common_current_user();
|
||||||
|
|
||||||
$menu =
|
$menu = array();
|
||||||
array('profilesettings' =>
|
$menu['profilesettings'] =
|
||||||
array(_('Profile'),
|
array(_('Profile'),
|
||||||
_('Change your profile settings')),
|
_('Change your profile settings'));
|
||||||
'avatarsettings' =>
|
if(Event::handle('CanUserChangeField', array($user->nickname, 'avatar'))){
|
||||||
|
$menu['avatarsettings'] =
|
||||||
array(_('Avatar'),
|
array(_('Avatar'),
|
||||||
_('Upload an avatar')),
|
_('Upload an avatar'));
|
||||||
'passwordsettings' =>
|
}
|
||||||
|
if(Event::handle('CanUserChangeField', array($user->nickname, 'password'))){
|
||||||
|
$menu['passwordsettings'] =
|
||||||
array(_('Password'),
|
array(_('Password'),
|
||||||
_('Change your password')),
|
_('Change your password'));
|
||||||
'emailsettings' =>
|
}
|
||||||
|
$menu['emailsettings'] =
|
||||||
array(_('Email'),
|
array(_('Email'),
|
||||||
_('Change email handling')),
|
_('Change email handling'));
|
||||||
'userdesignsettings' =>
|
$menu['userdesignsettings'] =
|
||||||
array(_('Design'),
|
array(_('Design'),
|
||||||
_('Design your profile')),
|
_('Design your profile'));
|
||||||
'othersettings' =>
|
$menu['othersettings'] =
|
||||||
array(_('Other'),
|
array(_('Other'),
|
||||||
_('Other options')));
|
_('Other options'));
|
||||||
|
|
||||||
foreach ($menu as $menuaction => $menudesc) {
|
foreach ($menu as $menuaction => $menudesc) {
|
||||||
$this->action->menuItem(common_local_url($menuaction),
|
$this->action->menuItem(common_local_url($menuaction),
|
||||||
|
@ -38,6 +38,8 @@ define('FOREIGN_NOTICE_SEND_REPLY', 4);
|
|||||||
define('FOREIGN_FRIEND_SEND', 1);
|
define('FOREIGN_FRIEND_SEND', 1);
|
||||||
define('FOREIGN_FRIEND_RECV', 2);
|
define('FOREIGN_FRIEND_RECV', 2);
|
||||||
|
|
||||||
|
if ( $_REQUEST['p'] == 'check-fancy') { exit; } //exit with 200 response, if this is checking fancy from the installer
|
||||||
|
|
||||||
define_syslog_variables();
|
define_syslog_variables();
|
||||||
|
|
||||||
# append our extlib dir as the last-resort place to find libs
|
# append our extlib dir as the last-resort place to find libs
|
||||||
|
@ -79,6 +79,7 @@ class GroupNav extends Widget
|
|||||||
$nickname = $this->group->nickname;
|
$nickname = $this->group->nickname;
|
||||||
|
|
||||||
$this->out->elementStart('ul', array('class' => 'nav'));
|
$this->out->elementStart('ul', array('class' => 'nav'));
|
||||||
|
if (Event::handle('StartGroupGroupNav', array($this))) {
|
||||||
$this->out->menuItem(common_local_url('showgroup', array('nickname' =>
|
$this->out->menuItem(common_local_url('showgroup', array('nickname' =>
|
||||||
$nickname)),
|
$nickname)),
|
||||||
_('Group'),
|
_('Group'),
|
||||||
@ -120,6 +121,8 @@ class GroupNav extends Widget
|
|||||||
$action_name == 'groupdesignsettings',
|
$action_name == 'groupdesignsettings',
|
||||||
'nav_group_design');
|
'nav_group_design');
|
||||||
}
|
}
|
||||||
|
Event::handle('EndGroupGroupNav', array($this));
|
||||||
|
}
|
||||||
$this->out->elementEnd('ul');
|
$this->out->elementEnd('ul');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,7 @@ class Theme
|
|||||||
|
|
||||||
// Check to see if it's in the local dir
|
// Check to see if it's in the local dir
|
||||||
|
|
||||||
$localroot = INSTALLDIR.'/local/theme';
|
$localroot = self::localRoot();
|
||||||
|
|
||||||
$fulldir = $localroot.'/'.$name;
|
$fulldir = $localroot.'/'.$name;
|
||||||
|
|
||||||
@ -82,11 +82,7 @@ class Theme
|
|||||||
|
|
||||||
// Check to see if it's in the distribution dir
|
// Check to see if it's in the distribution dir
|
||||||
|
|
||||||
$instroot = common_config('theme', 'dir');
|
$instroot = self::installRoot();
|
||||||
|
|
||||||
if (empty($instroot)) {
|
|
||||||
$instroot = INSTALLDIR.'/theme';
|
|
||||||
}
|
|
||||||
|
|
||||||
$fulldir = $instroot.'/'.$name;
|
$fulldir = $instroot.'/'.$name;
|
||||||
|
|
||||||
@ -175,4 +171,77 @@ class Theme
|
|||||||
$theme = new Theme($name);
|
$theme = new Theme($name);
|
||||||
return $theme->getPath($relative);
|
return $theme->getPath($relative);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* list available theme names
|
||||||
|
*
|
||||||
|
* @return array list of available theme names
|
||||||
|
*/
|
||||||
|
|
||||||
|
static function listAvailable()
|
||||||
|
{
|
||||||
|
$local = self::subdirsOf(self::localRoot());
|
||||||
|
$install = self::subdirsOf(self::installRoot());
|
||||||
|
|
||||||
|
$i = array_search('base', $install);
|
||||||
|
|
||||||
|
unset($install[$i]);
|
||||||
|
|
||||||
|
return array_merge($local, $install);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Utility for getting subdirs of a directory
|
||||||
|
*
|
||||||
|
* @param string $dir full path to directory to check
|
||||||
|
*
|
||||||
|
* @return array relative filenames of subdirs, or empty array
|
||||||
|
*/
|
||||||
|
|
||||||
|
protected static function subdirsOf($dir)
|
||||||
|
{
|
||||||
|
$subdirs = array();
|
||||||
|
|
||||||
|
if (is_dir($dir)) {
|
||||||
|
if ($dh = opendir($dir)) {
|
||||||
|
while (($filename = readdir($dh)) !== false) {
|
||||||
|
if ($filename != '..' && $filename !== '.' &&
|
||||||
|
is_dir($dir.'/'.$filename)) {
|
||||||
|
$subdirs[] = $filename;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
closedir($dh);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $subdirs;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Local root dir for themes
|
||||||
|
*
|
||||||
|
* @return string local root dir for themes
|
||||||
|
*/
|
||||||
|
|
||||||
|
protected static function localRoot()
|
||||||
|
{
|
||||||
|
return INSTALLDIR.'/local/theme';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Root dir for themes that are shipped with StatusNet
|
||||||
|
*
|
||||||
|
* @return string root dir for StatusNet themes
|
||||||
|
*/
|
||||||
|
|
||||||
|
protected static function installRoot()
|
||||||
|
{
|
||||||
|
$instroot = common_config('theme', 'dir');
|
||||||
|
|
||||||
|
if (empty($instroot)) {
|
||||||
|
$instroot = INSTALLDIR.'/theme';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $instroot;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -102,4 +102,15 @@ class LdapPlugin extends Plugin
|
|||||||
//return false, indicating that the event has been handled
|
//return false, indicating that the event has been handled
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function onCanUserChangeField($nickname, $field)
|
||||||
|
{
|
||||||
|
switch($field)
|
||||||
|
{
|
||||||
|
case 'password':
|
||||||
|
case 'nickname':
|
||||||
|
case 'email':
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -102,8 +102,7 @@ class UserFlagPlugin extends Plugin
|
|||||||
$action->elementStart('li', 'entity_flag');
|
$action->elementStart('li', 'entity_flag');
|
||||||
|
|
||||||
if (User_flag_profile::exists($profile->id, $user->id)) {
|
if (User_flag_profile::exists($profile->id, $user->id)) {
|
||||||
$action->element('p', array(),
|
$action->element('p', 'flagged', _('Flagged'));
|
||||||
_('Flagged for review'));
|
|
||||||
} else {
|
} else {
|
||||||
$form = new FlagProfileForm($action, $profile,
|
$form = new FlagProfileForm($action, $profile,
|
||||||
array('action' => 'showstream',
|
array('action' => 'showstream',
|
||||||
|
BIN
plugins/UserFlag/flag.gif
Normal file
BIN
plugins/UserFlag/flag.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 80 B |
@ -27,11 +27,8 @@ padding:0 4px;
|
|||||||
}
|
}
|
||||||
.notice-options input.submit {
|
.notice-options input.submit {
|
||||||
font-size:0;
|
font-size:0;
|
||||||
margin-top:3px;
|
|
||||||
height:16px;
|
|
||||||
text-align:right;
|
text-align:right;
|
||||||
text-indent:0;
|
text-indent:0;
|
||||||
width:24px;
|
|
||||||
}
|
}
|
||||||
.notice div.entry-content .timestamp a {
|
.notice div.entry-content .timestamp a {
|
||||||
margin-right:4px;
|
margin-right:4px;
|
||||||
|
Loading…
Reference in New Issue
Block a user