/** * WP EDITOR plugin */ (function ($) { window._wpEditor = { init: function (id, content, settings) { var _id = "__wp_mce_editor__"; var _tpl = $("#_wp-mce-editor-tpl").html(); if (typeof content === "undefined") { content = ""; } if (typeof window.tinyMCEPreInit.mceInit[_id] !== "undefined") { var tmceInit = _.clone(window.tinyMCEPreInit.mceInit[_id]); var qtInit = _.clone(window.tinyMCEPreInit.qtInit[_id]); tmceInit = $.extend(tmceInit, settings.tinymce); qtInit = $.extend(qtInit, settings.qtag); var tpl = _tpl.replace(new RegExp(_id, "g"), id); var template = $(tpl); template.find("textarea").removeAttr("rows").removeAttr("cols"); $("#" + id).replaceWith(template); // set content $("#" + id).val(content); $wrap = tinymce.$("#wp-" + id + "-wrap"); tmceInit.body_class = tmceInit.body_class.replace( new RegExp(_id, "g"), id ); tmceInit.selector = tmceInit.selector.replace(new RegExp(_id, "g"), id); tmceInit.cache_suffix = ""; $wrap.removeClass("html-active").addClass("tmce-active"); tmceInit.init_instance_callback = function (editor) { if (typeof settings === "object") { if (typeof settings.mod === "string" && settings.mod === "html") { //console.log( settings.mod ); switchEditors.go(id, settings.mod); } // editor.theme.resizeTo('100%', 500); if (typeof settings.init_instance_callback === "function") { settings.init_instance_callback(editor); } if (settings.sync_id !== "") { if (typeof settings.sync_id === "string") { editor.on("keyup change", function (e) { var html = editor.getContent({ format: "raw" }); html = _wpEditor.removep(html); $("#" + settings.sync_id) .val(html) .trigger("change"); }); } else { editor.on("keyup change", function (e) { var html = editor.getContent({ format: "raw" }); html = _wpEditor.removep(html); settings.sync_id.val(html).trigger("change"); }); } $("textarea#" + id).on("keyup change", function () { var v = $(this).val(); if (typeof settings.sync_id === "string") { $("#" + settings.sync_id) .val(v) .trigger("change"); } else { settings.sync_id.val(v).trigger("change"); } }); } } }; tmceInit.plugins = tmceInit.plugins.replace("fullscreen,", ""); tinyMCEPreInit.mceInit[id] = tmceInit; qtInit.id = id; tinyMCEPreInit.qtInit[id] = qtInit; if ( $wrap.hasClass("tmce-active") || !tinyMCEPreInit.qtInit.hasOwnProperty(id) ) { tinymce.init(tmceInit); if (!window.wpActiveEditor) { window.wpActiveEditor = id; } } if (typeof quicktags !== "undefined") { /** * Reset quicktags * This is crazy condition * Maybe this is a bug ? * see wp-includes/js/quicktags.js line 252 */ if (QTags.instances["0"]) { QTags.instances["0"] = false; } quicktags(qtInit); if (!window.wpActiveEditor) { window.wpActiveEditor = id; } } } }, /** * Replace paragraphs with double line breaks * @see wp-admin/js/editor.js */ removep: function (html) { return window.switchEditors._wp_Nop(html); }, sync: function () { // }, remove: function (id) { var content = ""; var editor = false; if ((editor = tinymce.get(id))) { content = editor.getContent({ format: "raw" }); content = _wpEditor.removep(content); editor.remove(); } else { content = $("#" + id).val(); } if ($("#wp-" + id + "-wrap").length > 0) { window._wpEditorBackUp = window._wpEditorBackUp || {}; if (typeof window._wpEditorBackUp[id] !== "undefined") { $("#wp-" + id + "-wrap").replaceWith(window._wpEditorBackUp[id]); } } $("#" + id).val(content); }, }; $.fn.wp_js_editor = function (options) { // This is the easiest way to have default options. if (options !== "remove") { options = $.extend( { sync_id: "", // sync to another text area tinymce: {}, // tinymce setting qtag: {}, // quick tag settings mod: "", // quick tag settings init_instance_callback: function () {}, // quick tag settings }, options ); } else { options = "remove"; } return this.each(function () { var edit_area = $(this); edit_area.uniqueId(); // Make sure edit area have a id attribute var id = edit_area.attr("id") || ""; if (id === "") { return; } if ("remove" !== options) { if (!options.mod) { options.mod = edit_area.attr("data-editor-mod") || ""; } window._wpEditorBackUp = window._wpEditorBackUp || {}; window._wpEditorBackUp[id] = edit_area; window._wpEditor.init(id, edit_area.val(), options); } else { window._wpEditor.remove(id); } }); }; })(jQuery); (function (api, $) { function _the_editor(container) { var _editor = { editor_added: false, ready: function (container) { var control = this; control.container = container; control.container.addClass("bloglo-editor-added"); control.editing_area = $("textarea", control.container); if (control.editing_area.hasClass("wp-editor-added")) { return false; } control.editing_area.uniqueId(); control.editing_area.addClass("wp-editor-added"); control.editing_id = control.editing_area.attr("id") || false; if (!control.editing_id) { return false; } control.editor_id = "wpe-for-" + control.editing_id; control.preview = $( '
' ); control.editing_editor = $( '' ); var content = control.editing_area.val(); // Load default value $("textarea", control.editing_editor).val(content); try { control.preview.html(window.switchEditors._wp_Autop(content)); } catch (e) {} $("body").on( "click", "#customize-controls, .customize-section-back", function (e) { if (!$(e.target).is(control.preview)) { /// e.preventDefault(); // Keep this AFTER the key filter above control.editing_editor.removeClass("wpe-active"); $(".wp-js-editor-preview").removeClass("wpe-focus"); } } ); control.container.find(".wp-js-editor").addClass("wp-js-editor-active"); control.preview.insertBefore(control.editing_area); control._init(); $(window).on("resize", function () { control._resize(); }); }, _add_editor: function () { var control = this; if (!this.editor_added) { this.editor_added = true; $("body .wp-full-overlay").append(control.editing_editor); $("textarea", control.editing_editor) .attr( "data-editor-mod", control.editing_area.attr("data-editor-mod") || "" ) .wp_js_editor({ sync_id: control.editing_area, init_instance_callback: function (editor) { var w = $("#wp-" + control.editor_id + "-wrap"); $(".wp-editor-tabs", w).append( '' ); $(".wp-editor-tabs", w).append( '' ); $(".wp-editor-tabs", w).append( '' ); w.on("click", ".close-wp-editor", function (e) { e.preventDefault(); control.editing_editor.removeClass("wpe-active"); $(".wp-js-editor-preview").removeClass("wpe-focus"); }); $(".preview-wp-editor", w).hover( function () { w.closest(".modal-wp-js-editor").css({ opacity: 0 }); }, function () { w.closest(".modal-wp-js-editor").css({ opacity: 1 }); } ); w.on("click", ".fullscreen-wp-editor", function (e) { e.preventDefault(); w.closest(".modal-wp-js-editor").toggleClass("fullscreen"); setTimeout(function () { $(window).resize(); }, 600); }); }, }); } }, _init: function () { var control = this; control.editing_area.on("change", function () { control.preview.html(window.switchEditors._wp_Autop($(this).val())); }); control.preview.on("click", function (e) { control._add_editor(); // $( '.modal-wp-js-editor').removeClass( 'wpe-active' ); control.editing_editor.toggleClass("wpe-active"); tinyMCE.get(control.editor_id).focus(); control.preview.addClass("wpe-focus"); control._resize(); return false; }); control.container.on("click", ".wp-js-editor-preview", function (e) { e.preventDefault(); }); }, _resize: function () { var control = this; var w = $("#wp-" + control.editor_id + "-wrap"); var height = w.innerHeight(); var tb_h = w.find(".mce-toolbar-grp").eq(0).height(); tb_h += w.find(".wp-editor-tools").eq(0).height(); tb_h += 50; //var width = $( window ).width(); var editor = tinymce.get(control.editor_id); if (editor) { control.editing_editor.width(""); editor.theme.resizeTo("100%", height - tb_h); w.find("textarea.wp-editor-area").height(height - tb_h); } }, }; _editor.ready(container); } function _remove_editor($context) { $("textarea", $context).each(function () { var id = $(this).attr("id") || ""; var editor_id = "wpe-for-" + id; try { var editor = tinymce.get(editor_id); if (editor) { editor.remove(); } $("#wrap-" + editor_id).remove(); $("#wrap-" + id).remove(); if (typeof tinyMCEPreInit.mceInit[editor_id] !== "undefined") { delete tinyMCEPreInit.mceInit[editor_id]; } if (typeof tinyMCEPreInit.qtInit[editor_id] !== "undefined") { delete tinyMCEPreInit.qtInit[editor_id]; } } catch (e) {} }); } var _is_init_editors = {}; // jQuery( document ).ready( function( $ ){ api.bind("ready", function (e, b) { $("#customize-theme-controls .accordion-section").each(function () { var section = $(this); var id = section.attr("id") || ""; if (id) { if (typeof _is_init_editors[id] === "undefined") { _is_init_editors[id] = true; setTimeout(function () { if ($(".wp-js-editor", section).length > 0) { $(".wp-js-editor", section).each(function () { _the_editor($(this)); }); } if ( $( ".repeatable-customize-control:not(.no-changeable) .item-editor", section ).length > 0 ) { $( ".repeatable-customize-control:not(.no-changeable) .item-editor", section ).each(function () { _the_editor($(this)); }); } }, 10); } } }); // Check section when focus if (_wpCustomizeSettings.autofocus) { if (_wpCustomizeSettings.autofocus.section) { var id = "sub-accordion-section-" + _wpCustomizeSettings.autofocus.section; _is_init_editors[id] = true; var section = $("#" + id); setTimeout(function () { if ($(".wp-js-editor", section).length > 0) { $(".wp-js-editor", section).each(function () { _the_editor($(this)); }); } if ( $( ".repeatable-customize-control:not(.no-changeable) .item-editor", section ).length > 0 ) { $( ".repeatable-customize-control:not(.no-changeable) .item-editor", section ).each(function () { _the_editor($(this)); }); } }, 1000); } else if (_wpCustomizeSettings.autofocus.panel) { } } $("body").on("repeater-control-init-item", function (e, container) { $(".item-editor", container).each(function () { _the_editor($(this)); }); }); $("body").on("repeat-control-remove-item", function (e, container) { _remove_editor(container); }); }); })(wp.customize, jQuery);