mirror of
https://github.com/discourse/discourse.git
synced 2024-11-29 00:24:21 +08:00
107 lines
2.5 KiB
JavaScript
107 lines
2.5 KiB
JavaScript
import { url } from 'discourse/lib/computed';
|
|
import { default as computed } from 'ember-addons/ember-computed-decorators';
|
|
|
|
export default Ember.Controller.extend({
|
|
maximized: false,
|
|
section: null,
|
|
|
|
targets: [
|
|
{id: 0, name: I18n.t('admin.customize.theme.common')},
|
|
{id: 1, name: I18n.t('admin.customize.theme.desktop')},
|
|
{id: 2, name: I18n.t('admin.customize.theme.mobile')}
|
|
],
|
|
|
|
currentTarget: 0,
|
|
|
|
setTargetName: function(name) {
|
|
let target;
|
|
switch(name) {
|
|
case "common": target = 0; break;
|
|
case "desktop": target = 1; break;
|
|
case "mobile": target = 2; break;
|
|
}
|
|
|
|
this.set("currentTarget", target);
|
|
},
|
|
|
|
@computed("currentTarget")
|
|
currentTargetName(target) {
|
|
switch(parseInt(target)) {
|
|
case 0: return "common";
|
|
case 1: return "desktop";
|
|
case 2: return "mobile";
|
|
}
|
|
},
|
|
|
|
@computed("fieldName")
|
|
activeSectionMode(fieldName) {
|
|
return fieldName && fieldName.indexOf("scss") > -1 ? "scss" : "html";
|
|
},
|
|
|
|
@computed("fieldName", "currentTargetName", "model")
|
|
activeSection: {
|
|
get(fieldName, target, model) {
|
|
return model.getField(target, fieldName);
|
|
},
|
|
set(value, fieldName, target, model) {
|
|
model.setField(target, fieldName, value);
|
|
return value;
|
|
}
|
|
},
|
|
|
|
|
|
@computed("currentTarget")
|
|
fields(target) {
|
|
let fields = [
|
|
"scss", "head_tag", "header", "after_header", "body_tag", "footer"
|
|
];
|
|
|
|
if (parseInt(target) === 0) {
|
|
fields.push("embedded_scss");
|
|
}
|
|
|
|
return fields.map(name=>{
|
|
let hash = {
|
|
key: (`admin.customize.theme.${name}.text`),
|
|
name: name
|
|
};
|
|
|
|
if (name.indexOf("_tag") > 0) {
|
|
hash.icon = "file-text-o";
|
|
}
|
|
|
|
hash.title = I18n.t(`admin.customize.theme.${name}.title`);
|
|
|
|
return hash;
|
|
});
|
|
},
|
|
|
|
previewUrl: url('model.key', '/?preview-style=%@'),
|
|
|
|
maximizeIcon: function() {
|
|
return this.get('maximized') ? 'compress' : 'expand';
|
|
}.property('maximized'),
|
|
|
|
saveButtonText: function() {
|
|
return this.get('model.isSaving') ? I18n.t('saving') : I18n.t('admin.customize.save');
|
|
}.property('model.isSaving'),
|
|
|
|
saveDisabled: function() {
|
|
return !this.get('model.changed') || this.get('model.isSaving');
|
|
}.property('model.changed', 'model.isSaving'),
|
|
|
|
undoPreviewUrl: url('/?preview-style='),
|
|
defaultStyleUrl: url('/?preview-style=default'),
|
|
|
|
actions: {
|
|
save() {
|
|
this.get('model').saveChanges("theme_fields");
|
|
},
|
|
|
|
toggleMaximize: function() {
|
|
this.toggleProperty('maximized');
|
|
}
|
|
}
|
|
|
|
});
|