32 lines
973 B
JavaScript
32 lines
973 B
JavaScript
import RestModel from 'discourse/models/rest';
|
|
|
|
const trackedProperties = [
|
|
'enabled', 'name', 'stylesheet', 'header', 'top', 'footer', 'mobile_stylesheet',
|
|
'mobile_header', 'mobile_top', 'mobile_footer', 'head_tag', 'body_tag', 'embedded_css'
|
|
];
|
|
|
|
function changed() {
|
|
const originals = this.get('originals');
|
|
if (!originals) { return false; }
|
|
return _.some(trackedProperties, (p) => originals[p] !== this.get(p));
|
|
}
|
|
|
|
const SiteCustomization = RestModel.extend({
|
|
description: function() {
|
|
return "" + this.name + (this.enabled ? ' (*)' : '');
|
|
}.property('selected', 'name', 'enabled'),
|
|
|
|
changed: changed.property.apply(changed, trackedProperties.concat('originals')),
|
|
|
|
startTrackingChanges: function() {
|
|
this.set('originals', this.getProperties(trackedProperties));
|
|
}.on('init'),
|
|
|
|
saveChanges() {
|
|
return this.save(this.getProperties(trackedProperties)).then(() => this.startTrackingChanges());
|
|
},
|
|
|
|
});
|
|
|
|
export default SiteCustomization;
|