/** * 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('preview', function(editor) { var settings = editor.settings, sandbox = !tinymce.Env.ie; editor.addCommand('mcePreview', function() { editor.windowManager.open({ title: 'Preview', width: parseInt(editor.getParam("plugin_preview_width", "650"), 10), height: parseInt(editor.getParam("plugin_preview_height", "500"), 10), html: '', buttons: { text: 'Close', onclick: function() { this.parent().parent().close(); } }, onPostRender: function() { var previewHtml, headHtml = ''; headHtml += ''; tinymce.each(editor.contentCSS, function(url) { headHtml += ''; }); var bodyId = settings.body_id || 'tinymce'; if (bodyId.indexOf('=') != -1) { bodyId = editor.getParam('body_id', '', 'hash'); bodyId = bodyId[editor.id] || bodyId; } var bodyClass = settings.body_class || ''; if (bodyClass.indexOf('=') != -1) { bodyClass = editor.getParam('body_class', '', 'hash'); bodyClass = bodyClass[editor.id] || ''; } var preventClicksOnLinksScript = ( ' ' ); var dirAttr = editor.settings.directionality ? ' dir="' + editor.settings.directionality + '"' : ''; previewHtml = ( '' + '' + '' + headHtml + '' + '' + editor.getContent() + preventClicksOnLinksScript + '' + '' ); if (!sandbox) { // IE 6-11 doesn't support data uris on iframes // so I guess they will have to be less secure since we can't sandbox on those // TODO: Use sandbox if future versions of IE supports iframes with data: uris. var doc = this.getEl('body').firstChild.contentWindow.document; doc.open(); doc.write(previewHtml); doc.close(); } else { this.getEl('body').firstChild.src = 'data:text/html;charset=utf-8,' + encodeURIComponent(previewHtml); } } }); }); editor.addButton('preview', { title: 'Preview', cmd: 'mcePreview' }); editor.addMenuItem('preview', { text: 'Preview', cmd: 'mcePreview', context: 'view' }); });