summaryrefslogtreecommitdiffstats
path: root/settings
diff options
context:
space:
mode:
authorBernhard Posselt <Raydiation@users.noreply.github.com>2013-09-14 16:00:36 -0700
committerBernhard Posselt <Raydiation@users.noreply.github.com>2013-09-14 16:00:36 -0700
commita58e176852d80dd23b9346b4f8bd676e9ca4d8ed (patch)
tree3f06e0ab511159221e915a6fdce8393b6192bfdb /settings
parenta0c2c2473a975893d590e779433091a3f7d6abb2 (diff)
parent86143beb6ae264e31e806dd195a04e5ed6f9f2d1 (diff)
downloadnextcloud-server-a58e176852d80dd23b9346b4f8bd676e9ca4d8ed.tar.gz
nextcloud-server-a58e176852d80dd23b9346b4f8bd676e9ca4d8ed.zip
Merge pull request #4506 from owncloud/oc_avatars
OC Avatars
Diffstat (limited to 'settings')
-rw-r--r--settings/css/settings.css4
-rw-r--r--settings/js/personal.js112
-rw-r--r--settings/personal.php6
-rw-r--r--settings/templates/personal.php21
-rw-r--r--settings/templates/users.php6
-rw-r--r--settings/users.php1
6 files changed, 150 insertions, 0 deletions
diff --git a/settings/css/settings.css b/settings/css/settings.css
index d5ffe448482..57a43180a43 100644
--- a/settings/css/settings.css
+++ b/settings/css/settings.css
@@ -21,6 +21,10 @@ input#openid, input#webdav { width:20em; }
input#identity { width:20em; }
#email { width: 17em; }
+#avatar .warning {
+ width: 350px;
+}
+
.msg.success{ color:#fff; background-color:#0f0; padding:3px; text-shadow:1px 1px #000; }
.msg.error{ color:#fff; background-color:#f00; padding:3px; text-shadow:1px 1px #000; }
diff --git a/settings/js/personal.js b/settings/js/personal.js
index 77826c82de1..fab32b83b64 100644
--- a/settings/js/personal.js
+++ b/settings/js/personal.js
@@ -44,6 +44,78 @@ function changeDisplayName(){
}
}
+function updateAvatar () {
+ $headerdiv = $('#header .avatardiv');
+ $displaydiv = $('#displayavatar .avatardiv');
+
+ $headerdiv.css({'background-color': ''});
+ $headerdiv.avatar(OC.currentUser, 32, true);
+ $displaydiv.css({'background-color': ''});
+ $displaydiv.avatar(OC.currentUser, 128, true);
+}
+
+function showAvatarCropper() {
+ $cropper = $('#cropper');
+ $cropper.prepend("<img>");
+ $cropperImage = $('#cropper img');
+
+ $cropperImage.attr('src', OC.Router.generate('core_avatar_get_tmp')+'?requesttoken='+oc_requesttoken+'#'+Math.floor(Math.random()*1000));
+
+ // Looks weird, but on('load', ...) doesn't work in IE8
+ $cropperImage.ready(function(){
+ $('#displayavatar').hide();
+ $cropper.show();
+
+ $cropperImage.Jcrop({
+ onChange: saveCoords,
+ onSelect: saveCoords,
+ aspectRatio: 1,
+ boxHeight: 500,
+ boxWidth: 500,
+ setSelect: [0, 0, 300, 300]
+ });
+ });
+}
+
+function sendCropData() {
+ cleanCropper();
+
+ var cropperdata = $('#cropper').data();
+ var data = {
+ x: cropperdata.x,
+ y: cropperdata.y,
+ w: cropperdata.w,
+ h: cropperdata.h
+ };
+ $.post(OC.Router.generate('core_avatar_post_cropped'), {crop: data}, avatarResponseHandler);
+}
+
+function saveCoords(c) {
+ $('#cropper').data(c);
+}
+
+function cleanCropper() {
+ $cropper = $('#cropper');
+ $('#displayavatar').show();
+ $cropper.hide();
+ $('.jcrop-holder').remove();
+ $('#cropper img').removeData('Jcrop').removeAttr('style').removeAttr('src');
+ $('#cropper img').remove();
+}
+
+function avatarResponseHandler(data) {
+ $warning = $('#avatar .warning');
+ $warning.hide();
+ if (data.status === "success") {
+ updateAvatar();
+ } else if (data.data === "notsquare") {
+ showAvatarCropper();
+ } else {
+ $warning.show();
+ $warning.text(data.data.message);
+ }
+}
+
$(document).ready(function(){
$("#passwordbutton").click( function(){
if ($('#pass1').val() !== '' && $('#pass2').val() !== '') {
@@ -128,6 +200,46 @@ $(document).ready(function(){
}
});
+ var uploadparms = {
+ done: function(e, data) {
+ avatarResponseHandler(data.result);
+ }
+ };
+
+ $('#uploadavatarbutton').click(function(){
+ $('#uploadavatar').click();
+ });
+
+ $('#uploadavatar').fileupload(uploadparms);
+
+ $('#selectavatar').click(function(){
+ OC.dialogs.filepicker(
+ t('settings', "Select a profile picture"),
+ function(path){
+ $.post(OC.Router.generate('core_avatar_post'), {path: path}, avatarResponseHandler);
+ },
+ false,
+ ["image/png", "image/jpeg"]
+ );
+ });
+
+ $('#removeavatar').click(function(){
+ $.ajax({
+ type: 'DELETE',
+ url: OC.Router.generate('core_avatar_delete'),
+ success: function(msg) {
+ updateAvatar();
+ }
+ });
+ });
+
+ $('#abortcropperbutton').click(function(){
+ cleanCropper();
+ });
+
+ $('#sendcropperbutton').click(function(){
+ sendCropData();
+ });
} );
OC.Encryption = {
diff --git a/settings/personal.php b/settings/personal.php
index 112eaa3c748..670e18e20ef 100644
--- a/settings/personal.php
+++ b/settings/personal.php
@@ -15,6 +15,11 @@ OC_Util::addScript( 'settings', 'personal' );
OC_Util::addStyle( 'settings', 'settings' );
OC_Util::addScript( '3rdparty', 'chosen/chosen.jquery.min' );
OC_Util::addStyle( '3rdparty', 'chosen' );
+\OC_Util::addScript('files', 'jquery.fileupload');
+if (\OC_Config::getValue('enable_avatars', true) === true) {
+ \OC_Util::addScript('3rdparty/Jcrop', 'jquery.Jcrop.min');
+ \OC_Util::addStyle('3rdparty/Jcrop', 'jquery.Jcrop.min');
+}
OC_App::setActiveNavigationEntry( 'personal' );
$storageInfo=OC_Helper::getStorageInfo('/');
@@ -84,6 +89,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('enableAvatars', \OC_Config::getValue('enable_avatars', true));
$forms=OC_App::getForms('personal');
$tmpl->assign('forms', array());
diff --git a/settings/templates/personal.php b/settings/templates/personal.php
index 63e1258b958..d2ca8154f16 100644
--- a/settings/templates/personal.php
+++ b/settings/templates/personal.php
@@ -80,6 +80,27 @@ if($_['passwordChangeSupported']) {
}
?>
+<?php if ($_['enableAvatars']): ?>
+<form id="avatar" method="post" action="<?php p(\OC_Helper::linkToRoute('core_avatar_post')); ?>">
+ <fieldset class="personalblock">
+ <legend><strong><?php p($l->t('Profile picture')); ?></strong></legend>
+ <div id="displayavatar">
+ <div class="avatardiv"></div><br>
+ <div class="warning hidden"></div>
+ <div class="inlineblock button" id="uploadavatarbutton"><?php p($l->t('Upload new')); ?></div>
+ <input type="file" class="hidden" name="files[]" id="uploadavatar">
+ <div class="inlineblock button" id="selectavatar"><?php p($l->t('Select new from Files')); ?></div>
+ <div class="inlineblock button" id="removeavatar"><?php p($l->t('Remove image')); ?></div><br>
+ <?php p($l->t('Either png or jpg. Ideally square but you will be able to crop it.')); ?>
+ </div>
+ <div id="cropper" class="hidden">
+ <div class="inlineblock button" id="abortcropperbutton"><?php p($l->t('Abort')); ?></div>
+ <div class="inlineblock button primary" id="sendcropperbutton"><?php p($l->t('Choose as profile image')); ?></div>
+ </div>
+ </fieldset>
+</form>
+<?php endif; ?>
+
<form>
<fieldset class="personalblock">
<legend><strong><?php p($l->t('Language'));?></strong></legend>
diff --git a/settings/templates/users.php b/settings/templates/users.php
index 22450fdf25f..747d052a7bd 100644
--- a/settings/templates/users.php
+++ b/settings/templates/users.php
@@ -81,6 +81,9 @@ $_['subadmingroups'] = array_flip($items);
<table class="hascontrols" data-groups="<?php p(json_encode($allGroups));?>">
<thead>
<tr>
+ <?php if ($_['enableAvatars']): ?>
+ <th id='headerAvatar'></th>
+ <?php endif; ?>
<th id='headerName'><?php p($l->t('Username'))?></th>
<th id="headerDisplayName"><?php p($l->t( 'Display Name' )); ?></th>
<th id="headerPassword"><?php p($l->t( 'Password' )); ?></th>
@@ -96,6 +99,9 @@ $_['subadmingroups'] = array_flip($items);
<?php foreach($_["users"] as $user): ?>
<tr data-uid="<?php p($user["name"]) ?>"
data-displayName="<?php p($user["displayName"]) ?>">
+ <?php if ($_['enableAvatars']): ?>
+ <td class="avatar"><div class="avatardiv"></div></td>
+ <?php endif; ?>
<td class="name"><?php p($user["name"]); ?></td>
<td class="displayName"><span><?php p($user["displayName"]); ?></span> <img class="svg action"
src="<?php p(image_path('core', 'actions/rename.svg'))?>"
diff --git a/settings/users.php b/settings/users.php
index 213d1eecfda..2f1c63a0b59 100644
--- a/settings/users.php
+++ b/settings/users.php
@@ -81,4 +81,5 @@ $tmpl->assign( 'quota_preset', $quotaPreset);
$tmpl->assign( 'default_quota', $defaultQuota);
$tmpl->assign( 'defaultQuotaIsUserDefined', $defaultQuotaIsUserDefined);
$tmpl->assign( 'recoveryAdminEnabled', $recoveryAdminEnabled);
+$tmpl->assign('enableAvatars', \OC_Config::getValue('enable_avatars', true));
$tmpl->printPage();