summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkondou <kondou@ts.unde.re>2013-07-26 12:20:11 +0200
committerkondou <kondou@ts.unde.re>2013-08-25 21:02:43 +0200
commit4a08f7d710ced1c564e05471e1f873ecfb9ca161 (patch)
tree3286d872ac9ad55d037e897a3da5e7425c6ca52b
parentb8965c6107a908db705fde55e0606998ccbf02e4 (diff)
downloadnextcloud-server-4a08f7d710ced1c564e05471e1f873ecfb9ca161.tar.gz
nextcloud-server-4a08f7d710ced1c564e05471e1f873ecfb9ca161.zip
Add basic avatars and gravatar
-rw-r--r--config/config.sample.php6
-rw-r--r--core/img/defaultavatar.pngbin0 -> 12444 bytes
-rw-r--r--core/templates/layout.user.php1
-rw-r--r--lib/avatar.php59
-rw-r--r--lib/public/avatar.php15
-rw-r--r--lib/templatelayout.php5
-rwxr-xr-xsettings/admin.php1
-rw-r--r--settings/ajax/setavatarmode.php12
-rw-r--r--settings/js/admin.js6
-rw-r--r--settings/personal.php1
-rw-r--r--settings/routes.php2
-rw-r--r--settings/templates/admin.php37
-rw-r--r--settings/templates/personal.php13
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
new file mode 100644
index 00000000000..e9572080bbf
--- /dev/null
+++ b/core/img/defaultavatar.png
Binary files differ
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>