/** * plugin.js * * Released under LGPL License. * Copyright (c) 1999-2015 Ephox Corp. All rights reserved * * License: http://www.tinymce.com/license * Contributing: http://www.tinymce.com/contributing */ /*global tinymce:true */ tinymce.PluginManager.add('visualblocks', function(editor, url) { var cssId, visualBlocksMenuItem, enabled; // We don't support older browsers like IE6/7 and they don't provide prototypes for DOM objects if (!window.NodeList) { return; } function toggleActiveState() { var self = this; self.active(enabled); editor.on('VisualBlocks', function() { self.active(editor.dom.hasClass(editor.getBody(), 'mce-visualblocks')); }); } editor.addCommand('mceVisualBlocks', function() { var dom = editor.dom, linkElm; if (!cssId) { cssId = dom.uniqueId(); linkElm = dom.create('link', { id: cssId, rel: 'stylesheet', href: url + '/css/visualblocks.css' }); editor.getDoc().getElementsByTagName('head')[0].appendChild(linkElm); } // Toggle on/off visual blocks while computing previews editor.on("PreviewFormats AfterPreviewFormats", function(e) { if (enabled) { dom.toggleClass(editor.getBody(), 'mce-visualblocks', e.type == "afterpreviewformats"); } }); dom.toggleClass(editor.getBody(), 'mce-visualblocks'); enabled = editor.dom.hasClass(editor.getBody(), 'mce-visualblocks'); if (visualBlocksMenuItem) { visualBlocksMenuItem.active(dom.hasClass(editor.getBody(), 'mce-visualblocks')); } editor.fire('VisualBlocks'); }); editor.addButton('visualblocks', { title: 'Show blocks', cmd: 'mceVisualBlocks', onPostRender: toggleActiveState }); editor.addMenuItem('visualblocks', { text: 'Show blocks', cmd: 'mceVisualBlocks', onPostRender: toggleActiveState, selectable: true, context: 'view', prependToContext: true }); editor.on('init', function() { if (editor.settings.visualblocks_default_state) { editor.execCommand('mceVisualBlocks', false, null, {skip_focus: true}); } }); editor.on('remove', function() { editor.dom.removeClass(editor.getBody(), 'mce-visualblocks'); }); });