55 lines
1.6 KiB
JavaScript
55 lines
1.6 KiB
JavaScript
const SiteSetting = Discourse.Model.extend({
|
|
overridden: function() {
|
|
let val = this.get('value'),
|
|
defaultVal = this.get('default');
|
|
|
|
if (val === null) val = '';
|
|
if (defaultVal === null) defaultVal = '';
|
|
|
|
return val.toString() !== defaultVal.toString();
|
|
}.property('value', 'default'),
|
|
|
|
validValues: function() {
|
|
const vals = [],
|
|
translateNames = this.get('translate_names');
|
|
|
|
this.get('valid_values').forEach(function(v) {
|
|
if (v.name && v.name.length > 0) {
|
|
vals.addObject(translateNames ? {name: I18n.t(v.name), value: v.value} : v);
|
|
}
|
|
});
|
|
return vals;
|
|
}.property('valid_values'),
|
|
|
|
allowsNone: function() {
|
|
if ( _.indexOf(this.get('valid_values'), '') >= 0 ) return 'admin.site_settings.none';
|
|
}.property('valid_values')
|
|
});
|
|
|
|
SiteSetting.reopenClass({
|
|
findAll() {
|
|
return Discourse.ajax("/admin/site_settings").then(function (settings) {
|
|
// Group the results by category
|
|
const categories = {};
|
|
settings.site_settings.forEach(function(s) {
|
|
if (!categories[s.category]) {
|
|
categories[s.category] = [];
|
|
}
|
|
categories[s.category].pushObject(Discourse.SiteSetting.create(s));
|
|
});
|
|
|
|
return Object.keys(categories).map(function(n) {
|
|
return {nameKey: n, name: I18n.t('admin.site_settings.categories.' + n), siteSettings: categories[n]};
|
|
});
|
|
});
|
|
},
|
|
|
|
update(key, value) {
|
|
const data = {};
|
|
data[key] = value;
|
|
return Discourse.ajax("/admin/site_settings/" + key, { type: 'PUT', data });
|
|
}
|
|
});
|
|
|
|
export default SiteSetting;
|