125 lines
3.4 KiB
JavaScript
125 lines
3.4 KiB
JavaScript
|
|
/*
|
||
|
|
* Builder Index controller Code entity controller
|
||
|
|
*/
|
||
|
|
+function ($) { "use strict";
|
||
|
|
|
||
|
|
if ($.oc.builder === undefined) {
|
||
|
|
$.oc.builder = {};
|
||
|
|
}
|
||
|
|
|
||
|
|
if ($.oc.builder.entityControllers === undefined) {
|
||
|
|
$.oc.builder.entityControllers = {};
|
||
|
|
}
|
||
|
|
|
||
|
|
var Base = $.oc.builder.entityControllers.base,
|
||
|
|
BaseProto = Base.prototype;
|
||
|
|
|
||
|
|
var Code = function(indexController) {
|
||
|
|
Base.call(this, 'code', indexController);
|
||
|
|
}
|
||
|
|
|
||
|
|
Code.prototype = Object.create(BaseProto);
|
||
|
|
Code.prototype.constructor = Code;
|
||
|
|
|
||
|
|
// PUBLIC METHODS
|
||
|
|
// ============================
|
||
|
|
|
||
|
|
Code.prototype.registerHandlers = function() {
|
||
|
|
}
|
||
|
|
|
||
|
|
Code.prototype.cmdCreateCode = function(ev) {
|
||
|
|
this.indexController.openOrLoadMasterTab($(ev.target), 'onCodeOpen', this.newTabId());
|
||
|
|
}
|
||
|
|
|
||
|
|
Code.prototype.cmdOpenCode = function(ev) {
|
||
|
|
var path = $(ev.currentTarget).data('path'),
|
||
|
|
pluginCode = $(ev.currentTarget).data('pluginCode');
|
||
|
|
|
||
|
|
var result = this.indexController.openOrLoadMasterTab($(ev.target), 'onCodeOpen', this.makeTabId(pluginCode+'-'+path), {
|
||
|
|
fileName: path
|
||
|
|
});
|
||
|
|
|
||
|
|
if (result !== false) {
|
||
|
|
result.done(this.proxy(this.updateFormEditorMode, this));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
Code.prototype.cmdSaveCode = function(ev) {
|
||
|
|
var $target = $(ev.currentTarget),
|
||
|
|
$form = $target.closest('form'),
|
||
|
|
$inspectorContainer = $form.find('.inspector-container')
|
||
|
|
|
||
|
|
if (!$.oc.inspector.manager.applyValuesFromContainer($inspectorContainer)) {
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
$target.request('onCodeSave').done(
|
||
|
|
this.proxy(this.saveCodeDone)
|
||
|
|
)
|
||
|
|
}
|
||
|
|
|
||
|
|
Code.prototype.saveCodeDone = function(data) {
|
||
|
|
if (data['builderResponseData'] === undefined) {
|
||
|
|
throw new Error('Invalid response data');
|
||
|
|
}
|
||
|
|
|
||
|
|
var $masterTabPane = this.getMasterTabsActivePane();
|
||
|
|
|
||
|
|
this.getIndexController().unchangeTab($masterTabPane);
|
||
|
|
|
||
|
|
this.updateFormEditorMode();
|
||
|
|
}
|
||
|
|
|
||
|
|
Code.prototype.getCodeList = function() {
|
||
|
|
return $('#layout-side-panel form[data-content-id=code] .control-codelist')
|
||
|
|
}
|
||
|
|
|
||
|
|
Code.prototype.updateFormEditorMode = function() {
|
||
|
|
var $masterTabPane = this.getMasterTabsActivePane();
|
||
|
|
|
||
|
|
var modes = {
|
||
|
|
css: "css",
|
||
|
|
htm: "html",
|
||
|
|
html: "html",
|
||
|
|
js: "javascript",
|
||
|
|
json: "json",
|
||
|
|
less: "less",
|
||
|
|
md: "markdown",
|
||
|
|
sass: "sass",
|
||
|
|
scss: "scss",
|
||
|
|
txt: "plain_text",
|
||
|
|
yaml: "yaml",
|
||
|
|
xml: "xml",
|
||
|
|
php: "php"
|
||
|
|
};
|
||
|
|
|
||
|
|
var fileName = $('input[name=fileName]', $masterTabPane).val(),
|
||
|
|
parts = fileName.split('.'),
|
||
|
|
extension = 'txt',
|
||
|
|
mode = 'plain_text',
|
||
|
|
editor = $('[data-control=codeeditor]', $masterTabPane);
|
||
|
|
|
||
|
|
if (parts.length >= 2) {
|
||
|
|
extension = parts.pop().toLowerCase();
|
||
|
|
}
|
||
|
|
|
||
|
|
if (modes[extension] !== undefined) {
|
||
|
|
mode = modes[extension];
|
||
|
|
}
|
||
|
|
|
||
|
|
var setEditorMode = function() {
|
||
|
|
window.setTimeout(function() {
|
||
|
|
editor.data('oc.codeEditor').editor.getSession().setMode({path: 'ace/mode/'+mode})
|
||
|
|
}, 200);
|
||
|
|
};
|
||
|
|
|
||
|
|
setEditorMode();
|
||
|
|
}
|
||
|
|
|
||
|
|
// REGISTRATION
|
||
|
|
// ============================
|
||
|
|
|
||
|
|
$.oc.builder.entityControllers.code = Code;
|
||
|
|
|
||
|
|
}(window.jQuery);
|