mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-29 01:56:12 +01:00
feat: allow for settings.save/settings.load on client side
w/ optional data-socket-get / data-socket-set params on form element for custom calls
This commit is contained in:
committed by
Andrew Rodrigues
parent
e755067387
commit
66196d2caf
@@ -470,7 +470,9 @@ define('settings', ['hooks'], function (hooks) {
|
|||||||
},
|
},
|
||||||
load: function (hash, formEl, callback) {
|
load: function (hash, formEl, callback) {
|
||||||
callback = callback || function () {};
|
callback = callback || function () {};
|
||||||
socket.emit('admin.settings.get', {
|
var call = formEl.attr('data-socket-get');
|
||||||
|
|
||||||
|
socket.emit(call || 'admin.settings.get', {
|
||||||
hash: hash,
|
hash: hash,
|
||||||
}, function (err, values) {
|
}, function (err, values) {
|
||||||
if (err) {
|
if (err) {
|
||||||
@@ -489,7 +491,7 @@ define('settings', ['hooks'], function (hooks) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Save loaded settings into ajaxify.data for use client-side
|
// Save loaded settings into ajaxify.data for use client-side
|
||||||
ajaxify.data.settings = values;
|
ajaxify.data[call ? hash : 'settings'] = values;
|
||||||
|
|
||||||
helper.whenReady(function () {
|
helper.whenReady(function () {
|
||||||
$(formEl).find('[data-sorted-list]').each(function (idx, el) {
|
$(formEl).find('[data-sorted-list]').each(function (idx, el) {
|
||||||
@@ -537,7 +539,8 @@ define('settings', ['hooks'], function (hooks) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.emit('admin.settings.set', {
|
var call = formEl.attr('data-socket-set');
|
||||||
|
socket.emit(call || 'admin.settings.set', {
|
||||||
hash: hash,
|
hash: hash,
|
||||||
values: values,
|
values: values,
|
||||||
}, function (err) {
|
}, function (err) {
|
||||||
@@ -545,7 +548,7 @@ define('settings', ['hooks'], function (hooks) {
|
|||||||
app.flags._unsaved = false;
|
app.flags._unsaved = false;
|
||||||
|
|
||||||
// Also save to local ajaxify.data
|
// Also save to local ajaxify.data
|
||||||
ajaxify.data.settings = values;
|
ajaxify.data[call ? hash : 'settings'] = values;
|
||||||
|
|
||||||
if (typeof callback === 'function') {
|
if (typeof callback === 'function') {
|
||||||
callback(err);
|
callback(err);
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ define('settings/sorted-list', [
|
|||||||
values[key].push(Settings.helper.serializeForm(formData));
|
values[key].push(Settings.helper.serializeForm(formData));
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
get: function ($container) {
|
get: function ($container, hash) {
|
||||||
var $list = $container.find('[data-type="list"]');
|
var $list = $container.find('[data-type="list"]');
|
||||||
var key = $container.attr('data-sorted-list');
|
var key = $container.attr('data-sorted-list');
|
||||||
var formTpl = $container.attr('data-form-template');
|
var formTpl = $container.attr('data-form-template');
|
||||||
@@ -49,7 +49,9 @@ define('settings/sorted-list', [
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
var list = ajaxify.data.settings[key];
|
var call = $container.parents('form').attr('data-socket-get');
|
||||||
|
var list = ajaxify.data[call ? hash : 'settings'][key];
|
||||||
|
|
||||||
if (Array.isArray(list) && typeof list[0] !== 'string') {
|
if (Array.isArray(list) && typeof list[0] !== 'string') {
|
||||||
list.forEach(function (item) {
|
list.forEach(function (item) {
|
||||||
var itemUUID = utils.generateUUID();
|
var itemUUID = utils.generateUUID();
|
||||||
|
|||||||
Reference in New Issue
Block a user