trAvis - MANAGER
Edit File: posts-jquery.js
editor_status = ''; tags = {}; (function($){ $(window).resize(function() { $('.CodeMirror-scroll').height($('.CodeMirror-wrap').height() - $('#wp-editor-quicktags').height() - 3); }); $(window).load(function() { setupPostEditor(); }); $(document).ready(function(){ $('#content').attrchange({ trackValues: true, /* enables tracking old and new values */ callback: function(event) { //callback handler on DOM changes if(event.attributeName == 'style') { if(event.oldValue !== event.newValue) { $('.CodeMirror').css('top', $('#content').css('margin-top')); $('.CodeMirror').css('margin-bottom', $('#content').css('margin-top')); } } } }); QTags.addButton( 'fullscreen', 'fullscreen', wp_editor_fullscreen ); function wp_editor_fullscreen() { if (wp_editor.getOption("fullScreen")) { wp_editor.setOption("fullScreen", false); $('#ed_toolbar').removeClass('fullscreen'); $(window).resize(); } else { $('#ed_toolbar').addClass('fullscreen'); wp_editor.setOption("fullScreen", true); } wp_editor.focus(); } /* // remove until we can figure out a way to save via ajax QTags.addButton( 'save', 'save', wp_editor_save ); function wp_editor_save() { wp_editor.save(); $('#wp_mce_fullscreen').val($('#content').val()); window.wp.editor.fullscreen.save(); changeReset(); }*/ $('body').on('click', '#wp-link-submit', function() { wp_editor.toTextArea(); wpLink.update(); var element = document.getElementById('content'); var cursor = window.get_content_cursor(element, element.selectionStart); window.postCodeMirror('content'); wp_editor.setCursor(cursor.line, cursor.ch); }); $('#content-tmce').click(function() { if(editor_status !== 'tmce') { var scrollPosition = wp_editor.getScrollInfo(); document.cookie="scrollPositionX=" + scrollPosition.x; document.cookie="scrollPositionY=" + scrollPosition.y; wp_editor.toTextArea(); id = $(this).attr( 'data-wp-editor-id' ); switchEditors.go(id, 'tmce'); editor_status = 'tmce'; return false; } }); $('#content-html').click(function() { if(editor_status !== 'html') { id = $(this).data( 'wp-editor-id' ); switchEditors.go(id, 'html'); setTimeout(function() { window.postCodeMirror('content'); wp_editor.scrollTo(getCookie('scrollPositionX'), getCookie('scrollPositionY')); }, 0); editor_status = 'html'; return false; } else { var scrollPosition = wp_editor.getScrollInfo(); wp_editor.toTextArea(); window.postCodeMirror('content'); wp_editor.scrollTo(scrollPosition.x, scrollPosition.y); document.cookie="scrollPositionX=" + scrollPosition.x; document.cookie="scrollPositionY=" + scrollPosition.y; return false; } }) $('#post').submit(function(e) { changeReset(); if(editor_status == 'html') { var scrollPosition = wp_editor.getScrollInfo(); document.cookie="scrollPositionX=" + scrollPosition.x; document.cookie="scrollPositionY=" + scrollPosition.y; wp_editor.save(); } }) }) function getCookie(key, sub_key) { currentcookie = document.cookie; if(currentcookie.length > 0) { firstidx = currentcookie.indexOf(key + "="); if(firstidx != -1) { firstidx = firstidx + key.length + 1; lastidx = currentcookie.indexOf(";",firstidx); if(lastidx == -1) { lastidx = currentcookie.length; } if(sub_key) { var result = {}; unescape(currentcookie.substring(firstidx, lastidx)).split("&").forEach(function(part) { var item = part.split("="); result[item[0]] = decodeURIComponent(item[1]); }); return result[sub_key]; } return unescape(currentcookie.substring(firstidx, lastidx)); } } return ""; } function setupPostEditor() { editor_status = getCookie('wp-settings-1', 'editor'); if(editor_status == 'html') { window.postCodeMirror('content'); //wp_editor.scrollTo(getCookie('scrollPositionX'), getCookie('scrollPositionY')); } } window.wp_editor_qt = function( element, start = true ) { if ( start ) { wp_editor.save(); var fromCursor = wp_editor.getCursor('from'); var toCursor = wp_editor.getCursor('to'); window.set_content_cursor(element, fromCursor, toCursor); } else { var toCursorNew = window.get_content_cursor(element, 'to'); wp_editor.setValue(element.value); wp_editor.setCursor(toCursorNew.line, toCursorNew.ch); wp_editor.refresh(); wp_editor.focus(); } } window.get_content_cursor = function( element, pos = 'from' ) { if ( document.selection ) { // IE var sel = document.selection.createRange(); var selLength = document.selection.createRange().text.length; if(pos == 'from') { sel.moveStart('character', -element.value.length); var caret = sel.text.length - selLength; } else if(pos == 'to') { sel.moveStart('character', -element.value.length); var caret = sel.text.length; } } else if ( element.selectionStart || element.selectionStart === 0 ) { // FF, WebKit, Opera if(pos == 'from') { var caret = element.selectionStart; } else if(pos == 'to') { var caret = element.selectionEnd; } } var lines = element.value.substr(0, caret).split("\n"); var newLength = 0, line = 0, lineArray = []; $.each(lines, function(key, value) { newLength = newLength + value.length + 1; lineArray[line] = newLength; if(caret > value.length) { caret -= value.length + 1 } else { return false; } line++; }); return {"line": line, "ch": caret}; } window.set_content_cursor = function( element, fromCursor, toCursor = {} ) { if ( document.selection ) { // IE var sel = document.selection.createRange(); var selLength = document.selection.createRange().text.length; sel.moveStart('character', -element.value.length); var startPos = sel.text.length - selLength, endPos = sel.text.length; } else if ( element.selectionStart || element.selectionStart === 0 ) { // FF, WebKit, Opera var startPos = element.selectionStart, endPos = element.selectionEnd; } var startLines = element.value.substr(0, start).split("\n"); var endLines = element.value.substr(0, end).split("\n"); var startNewLength = 0, startLine = 1, startLineArray = []; var endNewLength = 0, endLine = 1, endLineArray = []; if ( $.isEmptyObject( toCursor ) ) { toCursor = fromCursor; } startLineArray[0] = 0; $.each(startLines, function(key, value) { startNewLength = startNewLength + value.length + 1; startLineArray[startLine] = startNewLength; startLine++; }); endLineArray[0] = 0; $.each(endLines, function(key, value) { endNewLength = endNewLength + value.length + 1; endLineArray[endLine] = endNewLength; endLine++; }); var start = startLineArray[fromCursor.line] + fromCursor.ch, end = endLineArray[toCursor.line] + toCursor.ch; if(element.setSelectionRange) { $(element).show(); element.focus(); element.setSelectionRange(start, end); $(element).hide(); } else if(element.createTextRange) { var range = element.createTextRange(); range.collapse(true); range.moveEnd('character', end); range.moveStart('character', start); range.select(); } }; window.postCodeMirror = function(element) { var activeLine = WPEPosts.activeLine; wp_editor = CodeMirror.fromTextArea(document.getElementById(element), { mode: 'wp_shortcodes', theme: WPEPosts.theme, lineNumbers: WPEPosts.lineNumbers, lineWrapping: WPEPosts.lineWrapping, indentWithTabs: WPEPosts.indentWithTabs, indentUnit: WPEPosts.indentUnit, tabSize: WPEPosts.tabSize, onCursorActivity: function() { if(activeLine) { wp_editor.addLineClass(hlLine, null, null); hlLine = wp_editor.addLineClass(wp_editor.getCursor().line, null, activeLine); } }, onChange: function() { changeTrue(); }, onKeyEvent: function(editor, event) { if(typeof(wpWordCount) != 'undefined') { wp_editor.save(); last = 0, co = $('#content'); $(document).triggerHandler('wpcountwords', [ co.val() ]); co.keyup(function(e) { var k = event.keyCode || event.charCode; if(k == last) { return true; } if(13 == k || 8 == last || 46 == last) { $(document).triggerHandler('wpcountwords', [ co.val() ]); } last = k; return true; }); } }, extraKeys: { "F11": function(cm) { if (!cm.getOption("fullScreen")) { $('#ed_toolbar').addClass('fullscreen'); } else { $('#ed_toolbar').removeClass('fullscreen'); $(window).resize(); } cm.setOption("fullScreen", !cm.getOption("fullScreen")); }, "Esc": function(cm) { if (cm.getOption("fullScreen")) cm.setOption("fullScreen", false); $('#ed_toolbar').removeClass('fullscreen'); $(window).resize(); } } }); $('.CodeMirror').css('font-size', WPEPosts.fontSize); $('.CodeMirror').css('top', $('#content').css('margin-top')); $('.CodeMirror').css('margin-bottom', $('#content').css('margin-top')); if(activeLine) { var hlLine = wp_editor.addLineClass(0, activeLine); } if(WPEPosts.editorHeight) { $('.CodeMirror-scroll, .CodeMirror, .CodeMirror-gutter').height(WPEPosts.editorHeight + 'px'); var scrollDivHeight = $('.CodeMirror-scroll div:first-child').height(); var editorDivHeight = $('.CodeMirror').height(); if(scrollDivHeight > editorDivHeight) { $('.CodeMirror-gutter').height(scrollDivHeight); } } } })(jQuery);