mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-13 17:35:46 +01:00
added number-type to settings framework. persist expanded object on server-side sync if changed
This commit is contained in:
@@ -2,6 +2,7 @@ define(function () {
|
|||||||
|
|
||||||
const DEFAULT_PLUGINS = [
|
const DEFAULT_PLUGINS = [
|
||||||
'settings/checkbox',
|
'settings/checkbox',
|
||||||
|
'settings/number',
|
||||||
'settings/textarea',
|
'settings/textarea',
|
||||||
'settings/select',
|
'settings/select',
|
||||||
'settings/array',
|
'settings/array',
|
||||||
|
|||||||
14
public/src/modules/settings/number.js
Normal file
14
public/src/modules/settings/number.js
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
define(function () {
|
||||||
|
|
||||||
|
return {
|
||||||
|
types: ['number'],
|
||||||
|
get: function (element, trim, empty) {
|
||||||
|
var value = element.val();
|
||||||
|
if (!empty) {
|
||||||
|
return value ? +value : void 0;
|
||||||
|
}
|
||||||
|
return value ? +value : 0;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
});
|
||||||
@@ -1,16 +1,20 @@
|
|||||||
var meta = require('./meta');
|
var meta = require('./meta');
|
||||||
|
|
||||||
function expandObjBy(obj1, obj2) {
|
function expandObjBy(obj1, obj2) {
|
||||||
var key, val1, val2;
|
var key, val1, val2, changed = false;
|
||||||
for (key in obj2) {
|
for (key in obj2) {
|
||||||
val2 = obj2[key];
|
val2 = obj2[key];
|
||||||
val1 = obj1[key];
|
val1 = obj1[key];
|
||||||
if (!obj1.hasOwnProperty(key) || typeof val2 !== typeof val1) {
|
if (!obj1.hasOwnProperty(key) || typeof val2 !== typeof val1) {
|
||||||
obj1[key] = val2;
|
obj1[key] = val2;
|
||||||
|
changed = true;
|
||||||
} else if (typeof val2 === 'object') {
|
} else if (typeof val2 === 'object') {
|
||||||
expandObjBy(val1, val2);
|
if (expandObjBy(val1, val2)) {
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
function trim(obj1, obj2) {
|
function trim(obj1, obj2) {
|
||||||
@@ -76,7 +80,9 @@ Settings.prototype.sync = function (callback) {
|
|||||||
}
|
}
|
||||||
} catch (_error) {}
|
} catch (_error) {}
|
||||||
_this.cfg = settings;
|
_this.cfg = settings;
|
||||||
if (typeof callback === 'function') {
|
if (expandObjBy(_this.cfg._, _this.defCfg)) {
|
||||||
|
_this.persist(callback);
|
||||||
|
} else if (typeof callback === 'function') {
|
||||||
callback.apply(_this, err);
|
callback.apply(_this, err);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user