From 9d73e7eb1e0dae044ef386211b214e01624a3364 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Wed, 6 Feb 2013 11:38:03 +0100 Subject: [PATCH] let the user change his display name, if supported by the back-end --- lib/user.php | 20 +++++++++++++++++++- settings/ajax/changedisplayname.php | 5 +++-- settings/css/settings.css | 2 ++ settings/js/personal.js | 27 +++++++++++++++++++++++++++ settings/personal.php | 2 ++ settings/templates/personal.php | 17 +++++++++++++++++ 6 files changed, 70 insertions(+), 3 deletions(-) diff --git a/lib/user.php b/lib/user.php index f953d221543..9dc8cca97a6 100644 --- a/lib/user.php +++ b/lib/user.php @@ -275,7 +275,7 @@ class OC_User { foreach(self::$_usedBackends as $backend) { if($backend->implementsActions(OC_USER_BACKEND_SET_DISPLAYNAME)) { if($backend->userExists($uid)) { - $success |= $backend->setDisplayName($uid, $displayName); + $result |= $backend->setDisplayName($uid, $displayName); } } } @@ -436,6 +436,24 @@ class OC_User { } return false; } + + /** + * @brief Check whether user can change his display name + * @param $uid The username + * @returns true/false + * + * Check whether a specified user can change his display name + */ + public static function canUserChangeDisplayName($uid) { + foreach(self::$_usedBackends as $backend) { + if($backend->implementsActions(OC_USER_BACKEND_SET_DISPLAYNAME)) { + if($backend->userExists($uid)) { + return true; + } + } + } + return false; + } /** * @brief Check if the password is correct diff --git a/settings/ajax/changedisplayname.php b/settings/ajax/changedisplayname.php index f80ecb7a0c9..766f1459aec 100644 --- a/settings/ajax/changedisplayname.php +++ b/settings/ajax/changedisplayname.php @@ -1,5 +1,6 @@ array( "username" => $username ))); + OC_JSON::success(array("data" => array( "username" => $username, 'displayName' => $displayName ))); } else{ - OC_JSON::error(array("data" => array( "message" => "Unable to change display name" ))); + OC_JSON::error(array("data" => array( "message" => "Unable to change display name", displayName => OC_User::getDisplayName($username) ))); } \ No newline at end of file diff --git a/settings/css/settings.css b/settings/css/settings.css index 5a3ab2c6e97..e722cca91ee 100644 --- a/settings/css/settings.css +++ b/settings/css/settings.css @@ -8,6 +8,8 @@ input#openid, input#webdav { width:20em; } /* PERSONAL */ #passworderror { display:none; } #passwordchanged { display:none; } +#displaynameerror { display:none; } +#displaynamechanged { display:none; } input#identity { width:20em; } #email { width: 17em; } diff --git a/settings/js/personal.js b/settings/js/personal.js index a866e321ad6..d9455b3786b 100644 --- a/settings/js/personal.js +++ b/settings/js/personal.js @@ -31,6 +31,33 @@ $(document).ready(function(){ } }); + + $("#displaynamebutton").click( function(){ + if ($('#displayName').val() != '' ) { + // Serialize the data + var post = $( "#displaynameform" ).serialize(); + $('#displaynamechanged').hide(); + $('#displaynemerror').hide(); + // Ajax foo + $.post( 'ajax/changedisplayname.php', post, function(data){ + if( data.status == "success" ){ + $('#displaynamechanged').show(); + } + else{ + $('#newdisplayname').val(data.data.displayName) + $('#displaynameerror').html( data.data.message ); + $('#displaynameerror').show(); + } + }); + return false; + } else { + $('#displayName').val($('#oldDisplayName').val()); + $('#displaynamechanged').hide(); + $('#displaynameerror').show(); + return false; + } + + }); $('#lostpassword #email').blur(function(event){ if ($(this).val() == this.defaultValue){ diff --git a/settings/personal.php b/settings/personal.php index a2e510a6d3c..ac2c4704edb 100644 --- a/settings/personal.php +++ b/settings/personal.php @@ -48,6 +48,8 @@ $tmpl->assign('usage_relative', $storageInfo['relative']); $tmpl->assign('email', $email); $tmpl->assign('languages', $languages); $tmpl->assign('passwordChangeSupported', OC_User::canUserChangePassword(OC_User::getUser())); +$tmpl->assign('displayNameChangeSupported', OC_User::canUserChangeDisplayName(OC_User::getUser())); +$tmpl->assign('displayName', OC_User::getDisplayName()); $forms=OC_App::getForms('personal'); $tmpl->assign('forms', array()); diff --git a/settings/templates/personal.php b/settings/templates/personal.php index b1cc6713923..0f195d86d3d 100644 --- a/settings/templates/personal.php +++ b/settings/templates/personal.php @@ -33,6 +33,23 @@ if($_['passwordChangeSupported']) { } ?> + +
+
+ t('Display Name');?> +
t('Your display name was changed');?>
+
t('Unable to change your display name');?>
+ + + +
+
+ +
t('Email');?> -- 2.39.5