Skip to content
Snippets Groups Projects
Commit 5919b640 authored by Jared Hancock's avatar Jared Hancock
Browse files

staff profile avatar does not change until [Save Changes]

parent 43378a1c
Branches
Tags
No related merge requests found
<?php
/*********************************************************************
file.php
avatar.php
File download facilitator for clients
Simple download utility for internally-generated avatars
Peter Rotich <peter@osticket.com>
Jared Hancock <jared@osticket.com>
......
......@@ -222,7 +222,11 @@ class StaffAjaxAPI extends AjaxController {
if (!($avatar = $staff->getAvatar()))
Http::response(404, 'User does not have an avatar');
if ($avatar->toggle())
return $avatar;
if ($code = $avatar->toggle())
return $this->encode(array(
'img' => (string) $avatar,
// XXX: This is very inflexible
'code' => $code,
));
}
}
......@@ -102,6 +102,7 @@ AvatarSource::register('LocalAvatarSource');
class LocalAvatar
extends Avatar {
var $mode;
var $code;
function __construct($user, $mode) {
parent::__construct($user);
......@@ -112,8 +113,8 @@ extends Avatar {
if (false && ($file = $this->user->getAvatarFile()))
return $file->getDownloadUrl();
$code = false;
if (method_exists($this->user, 'getExtraAttr'))
$code = $this->code;
if (!$code && method_exists($this->user, 'getExtraAttr'))
$code = $this->user->getExtraAttr('avatar');
if ($code)
......@@ -127,9 +128,8 @@ extends Avatar {
}
function toggle() {
$code = Misc::randCode(21);
$this->user->setExtraAttr('avatar', $code);
return $this->user->save();
$this->code = Misc::randCode(21);
return $this->code;
}
function isChangeable() {
......
......@@ -622,6 +622,9 @@ implements AuthenticatedUser, EmailContact, TemplateVariable {
$this->lang = $vars['lang'];
$this->onvacation = isset($vars['onvacation'])?1:0;
if (isset($vars['avatar_code']))
$this->setExtraAttr('avatar', $vars['avatar_code']);
if ($errors)
return false;
......
......@@ -18,7 +18,7 @@ if(!defined('OSTSTAFFINC') || !$staff || !$thisstaff) die('Access Denied');
<table class="table two-column" width="940" border="0" cellspacing="0" cellpadding="2">
<tbody>
<tr><td colspan="2"><div>
<div class="avatar pull-left" style="margin: 10px 15px; width: 100px;">
<div class="avatar pull-left" style="margin: 10px 15px; width: 100px; height: 100px;">
<?php $avatar = $staff->getAvatar();
echo $avatar;
if ($avatar->isChangeable()) { ?>
......@@ -27,12 +27,20 @@ if ($avatar->isChangeable()) { ?>
href="#ajax.php/staff/<?php echo $staff->getId(); ?>/avatar/change"
onclick="javascript:
event.preventDefault();
var a = this;
var $a = $(this),
form = $a.closest('form');
$.ajax({
url: $(this).attr('href').substr(1),
success: function(html) {
$(a).closest('.avatar').find('img').replaceWith($(html));
}
url: $a.attr('href').substr(1),
dataType: 'json',
success: function(json) {
if (!json || !json.code)
return;
var code = form.find('[name=avatar_code]');
if (!code.length)
code = form.append($('<input>').attr({type: 'hidden', name: 'avatar_code'}));
code.val(json.code).trigger('change');
$a.closest('.avatar').find('img').replaceWith($(json.img));
}
});
return false;"><i class="icon-retweet"></i></a>
</div>
......
......@@ -146,11 +146,11 @@ var scp_prep = function() {
}
};
$("form#save :input[name]").change(function() {
$("form#save").on('change', ':input[name]', function() {
if (!$(this).is('.nowarn')) warnOnLeave($(this));
});
$("form#save :input[type=reset]").click(function() {
$("form#save").on('change', ':input[type=reset]', function() {
var fObj = $(this).closest('form');
if(fObj.data('changed')){
$('input[type=submit]', fObj).removeClass('save pending');
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment