You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
1.9 KiB
JavaScript

'use strict';
/*global define, socket, app, ajaxify, config*/
define('forum/account/settings', ['forum/account/header'], function(header) {
var AccountSettings = {};
AccountSettings.init = function() {
header.init();
$('#submitBtn').on('click', function() {
var settings = {};
$('.account').find('input, textarea, select').each(function(id, input) {
input = $(input);
var setting = input.attr('data-property');
if (input.is('select')) {
settings[setting] = input.val();
return;
}
switch (input.attr('type')) {
case 'text':
case 'textarea':
settings[setting] = input.val();
break;
case 'checkbox':
settings[setting] = input.is(':checked') ? 1 : 0;
break;
}
});
socket.emit('user.saveSettings', {uid: ajaxify.data.theirid, settings: settings}, function(err, newSettings) {
if (err) {
return app.alertError(err.message);
}
app.alertSuccess('[[success:settings-saved]]');
var requireReload = false;
for (var key in newSettings) {
if (newSettings.hasOwnProperty(key)) {
if (key === 'userLang' && config.userLang !== newSettings.userLang) {
requireReload = true;
}
config[key] = newSettings[key];
}
}
if (requireReload && parseInt(app.user.uid, 10) === parseInt(ajaxify.data.theirid, 10)) {
app.alert({
id: 'setting-change',
message: '[[user:settings-require-reload]]',
type: 'warning',
timeout: 5000,
clickfn: function() {
ajaxify.refresh();
}
});
}
});
return false;
});
$('#bootswatchSkin').on('change', function() {
var css = $('#bootswatchCSS'),
val = $(this).val() === 'default' ? config['theme:src'] : 'http://maxcdn.bootstrapcdn.com/bootswatch/latest/' + $(this).val() + '/bootstrap.min.css';
css.attr('href', val);
});
};
return AccountSettings;
});