var CloudCommander, CloudFunc, CodeMirror; /* object contains editors CodeMirror * and later will be Ace */ CloudCommander.Editor = {}; CloudCommander.Editor.CodeMirror = new CloudCommander.Util(); /* indicator says CodeMirror still loads */ CloudCommander.Editor.CodeMirror.loading = false; /* function loads CodeMirror js and css files */ CloudCommander.Editor.CodeMirror.load = (function(pParent){ /* function shows editor */ var createEditorDiv = function(){ if (!pParent.getById('CloudEditor')) { var lFM = document.getElementById('fm'); if(lFM) pParent.anyload({ name : 'div', id : 'CloudEditor', element : lFM }); else console.log('Error. Something went wrong FM not found'); pParent.show(); } }; /* function loads css files * of CodeMirror */ var loadAll = function(pParent) { return function(){ pParent.cssLoad({ src : 'lib/client/editor/codemirror/pack/codemirror.pack.css' }); pParent.cssLoad({ src : 'lib/client/editor/codemirror/pack/night.pack.css' }); pParent.cssSet({id:'editor', inner : '.CodeMirror{' + 'font-family :\'Droid Sans Mono\';' + 'font-size :15px;' + 'padding :20px;' + '}' + '.CodeMirror-scroll{' + 'height : 660px;' + '}' }); pParent.jsload('lib/client/editor/' + 'codemirror/pack/javascript.pack.js', createEditorDiv); }; }; /* load CodeMirror main module */ pParent.jsload('lib/client/editor/' + 'codemirror/pack/codemirror.pack.js', loadAll(this)); }); /* function shows CodeMirror editor */ CloudCommander.Editor.CodeMirror.show = (function(){ /* if CloudEditor is not loaded - loading him */ if(!this.getById('CloudEditor')) return this.load(this); /* if CodeMirror function show already * called do not call it again * if f4 key pressed couple times */ if(this.loading) return; /* when folder view * is no need to edit * data */ var lReadOnly = false; var lParent = this; var initCodeMirror_f = function(pValue){ CodeMirror(lCloudEditor,{ mode : 'javascript', value : pValue, theme : 'night', lineNumbers : true, //переносим длинные строки lineWrapping: false, autofocus : true, extraKeys: { //Сохранение "Esc": lParent.hide(lParent) }, readOnly : lReadOnly }); }; var lLeft = this.getById('left'); var lCloudEditor = this.getById('CloudEditor'); var lCURRENTFILE = CloudCommander.CURRENT_FILE; var lCurrent = this.getByClass(lCURRENTFILE); var lA; if(lCurrent.length){ lCurrent = lCurrent[0]; /* getting link */ lA = lCurrent.getElementsByTagName('a'); if(!lA.length) return console.log('Error:' + 'can not find links in current file'); lA = lA[0].href; /* убираем адрес хоста*/ lA = '/' + lA.replace(document.location.href,''); /* checking is this link is to directory */ var lSize = lCurrent.getElementsByClassName('size'); if(lSize){ lSize = lSize[0].textContent; /* if directory - load json * not html data */ if (lSize === '