diff options
author | kondou <kondou@ts.unde.re> | 2013-07-26 12:20:11 +0200 |
---|---|---|
committer | kondou <kondou@ts.unde.re> | 2013-08-25 21:02:43 +0200 |
commit | 4a08f7d710ced1c564e05471e1f873ecfb9ca161 (patch) | |
tree | 3286d872ac9ad55d037e897a3da5e7425c6ca52b | |
parent | b8965c6107a908db705fde55e0606998ccbf02e4 (diff) | |
download | nextcloud-server-4a08f7d710ced1c564e05471e1f873ecfb9ca161.tar.gz nextcloud-server-4a08f7d710ced1c564e05471e1f873ecfb9ca161.zip |
Add basic avatars and gravatar
-rw-r--r-- | config/config.sample.php | 6 | ||||
-rw-r--r-- | core/img/defaultavatar.png | bin | 0 -> 12444 bytes | |||
-rw-r--r-- | core/templates/layout.user.php | 1 | ||||
-rw-r--r-- | lib/avatar.php | 59 | ||||
-rw-r--r-- | lib/public/avatar.php | 15 | ||||
-rw-r--r-- | lib/templatelayout.php | 5 | ||||
-rwxr-xr-x | settings/admin.php | 1 | ||||
-rw-r--r-- | settings/ajax/setavatarmode.php | 12 | ||||
-rw-r--r-- | settings/js/admin.js | 6 | ||||
-rw-r--r-- | settings/personal.php | 1 | ||||
-rw-r--r-- | settings/routes.php | 2 | ||||
-rw-r--r-- | settings/templates/admin.php | 37 | ||||
-rw-r--r-- | settings/templates/personal.php | 13 |
13 files changed, 158 insertions, 0 deletions
diff --git a/config/config.sample.php b/config/config.sample.php index 24ba541ac5c..fb2271339b2 100644 --- a/config/config.sample.php +++ b/config/config.sample.php @@ -65,6 +65,12 @@ $CONFIG = array( /* URL to the parent directory of the 3rdparty directory, as seen by the browser */ "3rdpartyurl" => "", +/* What avatars to use. + * May be "none" for none, "local" for uploaded avatars, or "gravatar" for gravatars. + * Default is "local". + */ +"avatars" => "local", + /* Default app to load on login */ "defaultapp" => "files", diff --git a/core/img/defaultavatar.png b/core/img/defaultavatar.png Binary files differnew file mode 100644 index 00000000000..e9572080bbf --- /dev/null +++ b/core/img/defaultavatar.png diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php index 3c1114492cb..038264bd064 100644 --- a/core/templates/layout.user.php +++ b/core/templates/layout.user.php @@ -47,6 +47,7 @@ <div id="logo-claim" style="display:none;"><?php p($theme->getLogoClaim()); ?></div> <ul id="settings" class="svg"> <span id="expand" tabindex="0" role="link"> + <?php if (isset($_['avatar'])) { print_unescaped($_['avatar']); } ?> <span id="expandDisplayName"><?php p(trim($_['user_displayname']) != '' ? $_['user_displayname'] : $_['user_uid']) ?></span> <img class="svg" src="<?php print_unescaped(image_path('', 'actions/caret.svg')); ?>" /> </span> diff --git a/lib/avatar.php b/lib/avatar.php new file mode 100644 index 00000000000..2b087c48b65 --- /dev/null +++ b/lib/avatar.php @@ -0,0 +1,59 @@ +<?php +/** + * Copyright (c) 2013 Christopher Schäpers <christopher@schaepers.it> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +class OC_Avatar { + /** + * @brief gets the users avatar + * @param $user string username + * @param $size integer size in px of the avatar, defaults to 64 + * @return mixed link to the avatar, false if avatars are disabled + */ + public static function get ($user, $size = 64) { + $mode = OC_Config::getValue("avatar", "local"); + if ($mode === "none") { + // avatars are disabled + return false; + } elseif ($mode === "gravatar") { + $email = OC_Preferences::getValue($user, 'settings', 'email'); + if ($email !== null) { + $emailhash = md5(strtolower(trim($email))); + $url = "http://www.gravatar.com/avatar/".$emailhash."?s=".$size; + return $url; + } else { + return \OC_Avatar::getDefaultAvatar($size); + } + } elseif ($mode === "local") { + if (false) { + // + } else { + return \OC_Avatar::getDefaultAvatar($size); + } + } + } + + + /** + * @brief sets the users local avatar + * @param $user string user to set the avatar for + * @param $path string path where the avatar is + * @return true on success + */ + public static function setLocalAvatar ($user, $path) { + if (OC_Config::getValue("avatar", "local") === "local") { + // + } + } + + /** + * @brief gets the default avatar + * @return link to the default avatar + */ + public static function getDefaultAvatar ($size) { + return OC_Helper::imagePath("core", "defaultavatar.png"); + } +} diff --git a/lib/public/avatar.php b/lib/public/avatar.php new file mode 100644 index 00000000000..65356b8a710 --- /dev/null +++ b/lib/public/avatar.php @@ -0,0 +1,15 @@ +<?php +/** + * Copyright (c) 2013 Christopher Schäpers <christopher@schaepers.it> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OCP; + +class Avatar { + public static function get ($user, $size = 64) { + \OC_Avatar::get($user, $size); + } +} diff --git a/lib/templatelayout.php b/lib/templatelayout.php index 0024c9d4960..06cbacb692a 100644 --- a/lib/templatelayout.php +++ b/lib/templatelayout.php @@ -18,6 +18,11 @@ class OC_TemplateLayout extends OC_Template { $this->assign('bodyid', 'body-user'); } + // display avatars if they are enabled + if (OC_Config::getValue('avatar') === 'gravatar' || OC_Config::getValue('avatar') === 'local') { + $this->assign('avatar', '<img src="'.OC_Avatar::get(OC_User::getUser(), 32).'">'); + } + // Update notification if(OC_Config::getValue('updatechecker', true) === true) { $data=OC_Updater::check(); diff --git a/settings/admin.php b/settings/admin.php index 869729a9e41..394d6b55d78 100755 --- a/settings/admin.php +++ b/settings/admin.php @@ -30,6 +30,7 @@ $tmpl->assign('isWebDavWorking', OC_Util::isWebDAVWorking()); $tmpl->assign('has_fileinfo', OC_Util::fileInfoLoaded()); $tmpl->assign('backgroundjobs_mode', OC_Appconfig::getValue('core', 'backgroundjobs_mode', 'ajax')); $tmpl->assign('shareAPIEnabled', OC_Appconfig::getValue('core', 'shareapi_enabled', 'yes')); +$tmpl->assign('avatar', OC_Config::getValue("avatar", "local")); // Check if connected using HTTPS if (OC_Request::serverProtocol() === 'https') { diff --git a/settings/ajax/setavatarmode.php b/settings/ajax/setavatarmode.php new file mode 100644 index 00000000000..f6f19f50cc9 --- /dev/null +++ b/settings/ajax/setavatarmode.php @@ -0,0 +1,12 @@ +<?php +/** + * Copyright (c) 2013 Christopher Schäpers <christopher@schaepers.it> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +OC_Util::checkAdminUser(); +OCP\JSON::callCheck(); + +OC_Config::setValue('avatar', $_POST['mode']); diff --git a/settings/js/admin.js b/settings/js/admin.js index f2d6f37a51a..6fa1c768ea3 100644 --- a/settings/js/admin.js +++ b/settings/js/admin.js @@ -14,6 +14,12 @@ $(document).ready(function(){ } }); + $('#avatar input').change(function(){ + if ($(this).attr('checked')) { + $.post(OC.filePath('settings', 'ajax', 'setavatarmode.php'), {mode: $(this).val()}); + } + }); + $('#shareAPIEnabled').change(function() { $('.shareAPI td:not(#enable)').toggle(); }); diff --git a/settings/personal.php b/settings/personal.php index e69898f6f8f..4bec21d58c8 100644 --- a/settings/personal.php +++ b/settings/personal.php @@ -84,6 +84,7 @@ $tmpl->assign('passwordChangeSupported', OC_User::canUserChangePassword(OC_User: $tmpl->assign('displayNameChangeSupported', OC_User::canUserChangeDisplayName(OC_User::getUser())); $tmpl->assign('displayName', OC_User::getDisplayName()); $tmpl->assign('enableDecryptAll' , $enableDecryptAll); +$tmpl->assign('avatar', OC_Config::getValue('avatar', 'local')); $forms=OC_App::getForms('personal'); $tmpl->assign('forms', array()); diff --git a/settings/routes.php b/settings/routes.php index 73ee70d1d5c..9a27c3e439b 100644 --- a/settings/routes.php +++ b/settings/routes.php @@ -70,3 +70,5 @@ $this->create('settings_ajax_setsecurity', '/settings/ajax/setsecurity.php') ->actionInclude('settings/ajax/setsecurity.php'); $this->create('isadmin', '/settings/js/isadmin.js') ->actionInclude('settings/js/isadmin.php'); +$this->create('settings_ajax_setavatarmode', '/settings/ajax/setavatarmode.php') + ->actionInclude('settings/ajax/setavatarmode.php'); diff --git a/settings/templates/admin.php b/settings/templates/admin.php index e54586b80df..a166aec7775 100644 --- a/settings/templates/admin.php +++ b/settings/templates/admin.php @@ -116,6 +116,43 @@ if (!$_['internetconnectionworking']) { </p> </fieldset> +<fieldset class="personalblock" id="avatar"> + <legend><strong><?php p($l->t('Avatars')); ?></strong></legend> + <table class="nostyle"> + <tr> + <td> + <input type="radio" name="avatarmode" value="gravatar" + id="avatar_gravatar" <?php if ($_['avatar'] === "gravatar") { + print_unescaped('checked="checked"'); + } ?>> + <label for="avatar_gravatar">Gravatar</label><br> + <em><?php print_unescaped($l->t('Use <a href="http://gravatar.com/">gravatar</a> for avatars')); ?></em><br> + <em><?php p($l->t('This sends data to gravatar')); ?></em> + </td> + </tr> + <tr> + <td> + <input type="radio" name="avatarmode" value="local" + id="avatar_local" <?php if ($_['avatar'] === "local") { + print_unescaped('checked="checked"'); + } ?>> + <label for="avatar_local"><?php p($l->t('Local avatars')); ?></label><br> + <em><?php p($l->t('Use local avatars, which each user has to upload themselves')); ?></em> + </td> + </tr> + <tr> + <td> + <input type="radio" name="avatarmode" value="none" + id="avatar_none" <?php if ($_['avatar'] === "none") { + print_unescaped('checked="checked"'); + } ?>> + <label for="avatar_none"><?php p($l->t('No avatars')); ?></label><br> + <em><?php print_unescaped($l->t('Do not provide avatars')); ?></em> + </td> + </tr> + </table> +</fieldset> + <fieldset class="personalblock" id="shareAPI"> <legend><strong><?php p($l->t('Sharing'));?></strong></legend> <table class="shareAPI nostyle"> diff --git a/settings/templates/personal.php b/settings/templates/personal.php index bad88142da9..55f626aa574 100644 --- a/settings/templates/personal.php +++ b/settings/templates/personal.php @@ -74,12 +74,25 @@ if($_['passwordChangeSupported']) { <input type="text" name="email" id="email" value="<?php p($_['email']); ?>" placeholder="<?php p($l->t('Your email address'));?>" /><span class="msg"></span><br /> <em><?php p($l->t('Fill in an email address to enable password recovery'));?></em> + <?php if($_['avatar'] === "gravatar") { + print_unescaped($l->t('<br><em>Your Email will be used for your gravatar<em>')); + } ?> </fieldset> </form> <?php } ?> +<?php if ($_['avatar'] === "local"): ?> +<form id="avatar"> + <fieldset class="personalblock"> + <legend><strong><?php p($l->t('Avatar')); ?></strong></legend> + <img src="<?php print_unescaped(\OC_Avatar::get(\OC_User::getUser())); ?>"><br> + <button><?php p($l->t('Upload a new avatar')); ?></button> + </fieldset> +</form> +<?php endif; ?> + <form> <fieldset class="personalblock"> <legend><strong><?php p($l->t('Language'));?></strong></legend> |