mirror of
https://github.com/vale981/Vulcan
synced 2025-03-10 12:36:39 -04:00
97 lines
3.1 KiB
JavaScript
97 lines
3.1 KiB
JavaScript
![]() |
Template[getTemplate('userAccount')].helpers({
|
||
|
profileIncomplete : function() {
|
||
|
return this && !this.loading && !userProfileComplete(this);
|
||
|
},
|
||
|
userName: function(){
|
||
|
return getUserName(this);
|
||
|
},
|
||
|
userEmail : function(){
|
||
|
return getEmail(this);
|
||
|
},
|
||
|
getTwitter: function(){
|
||
|
return getTwitterName(this) || "";
|
||
|
},
|
||
|
getGitHub: function(){
|
||
|
return getGitHubName(this) || "";
|
||
|
},
|
||
|
profileUrl: function(){
|
||
|
return getProfileUrlBySlugOrId(this.slug);
|
||
|
},
|
||
|
hasNotificationsUsers : function(){
|
||
|
return getUserSetting('notifications.users', '', this) ? 'checked' : '';
|
||
|
},
|
||
|
hasNotificationsPosts : function(){
|
||
|
return getUserSetting('notifications.posts', '', this) ? 'checked' : '';
|
||
|
},
|
||
|
hasNotificationsComments : function(){
|
||
|
return getUserSetting('notifications.comments', '', this) ? 'checked' : '';
|
||
|
},
|
||
|
hasNotificationsReplies : function(){
|
||
|
return getUserSetting('notifications.replies', '', this) ? 'checked' : '';
|
||
|
},
|
||
|
hasPassword: function () {
|
||
|
return hasPassword(Meteor.user());
|
||
|
}
|
||
|
});
|
||
|
|
||
|
Template[getTemplate('userAccount')].events({
|
||
|
'submit #account-form': function(e){
|
||
|
e.preventDefault();
|
||
|
|
||
|
clearSeenMessages();
|
||
|
if(!Meteor.user())
|
||
|
flashMessage(i18n.t('you_must_be_logged_in'), 'error');
|
||
|
|
||
|
var $target=$(e.target);
|
||
|
var name = $target.find('[name=name]').val();
|
||
|
var email = $target.find('[name=email]').val();
|
||
|
var user = this;
|
||
|
var update = {
|
||
|
"profile.name": name,
|
||
|
"profile.slug": slugify(name),
|
||
|
"profile.bio": $target.find('[name=bio]').val(),
|
||
|
"profile.email": email,
|
||
|
"profile.twitter": $target.find('[name=twitter]').val(),
|
||
|
"profile.github": $target.find('[name=github]').val(),
|
||
|
"profile.site": $target.find('[name=site]').val(),
|
||
|
"profile.notifications.users": $('input[name=notifications_users]:checked').length, // only actually used for admins
|
||
|
"profile.notifications.posts": $('input[name=notifications_posts]:checked').length,
|
||
|
"profile.notifications.comments": $('input[name=notifications_comments]:checked').length,
|
||
|
"profile.notifications.replies": $('input[name=notifications_replies]:checked').length
|
||
|
};
|
||
|
|
||
|
var old_password = $target.find('[name=old_password]').val();
|
||
|
var new_password = $target.find('[name=new_password]').val();
|
||
|
|
||
|
if(old_password && new_password){
|
||
|
Accounts.changePassword(old_password, new_password, function(error){
|
||
|
// TODO: interrupt update if there's an error at this point
|
||
|
if(error)
|
||
|
flashMessage(error.reason, "error");
|
||
|
});
|
||
|
}
|
||
|
|
||
|
update = userEditClientCallbacks.reduce(function(result, currentFunction) {
|
||
|
return currentFunction(user, result);
|
||
|
}, update);
|
||
|
|
||
|
Meteor.users.update(user._id, {
|
||
|
$set: update
|
||
|
}, function(error){
|
||
|
if(error){
|
||
|
flashMessage(error.reason, "error");
|
||
|
} else {
|
||
|
flashMessage(i18n.t('profile_updated'), 'success');
|
||
|
}
|
||
|
Deps.afterFlush(function() {
|
||
|
var element = $('.grid > .error');
|
||
|
$('html, body').animate({scrollTop: element.offset().top});
|
||
|
});
|
||
|
});
|
||
|
|
||
|
Meteor.call('changeEmail', email);
|
||
|
|
||
|
}
|
||
|
|
||
|
});
|