67 lines
2.0 KiB
JavaScript
67 lines
2.0 KiB
JavaScript
(function() {
|
|
|
|
tinymce.create('tinymce.plugins.wpforo_source_code_button', {
|
|
/**
|
|
* Initializes the plugin, this will be executed after the plugin has been created.
|
|
* This call is done before the editor instance has finished it's initialization so use the onInit event
|
|
* of the editor instance to intercept that event.
|
|
*
|
|
* @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
|
|
* @param {string} url Absolute URL to where the plugin is located.
|
|
*/
|
|
init : function(ed, url) {
|
|
|
|
function showDialog() {
|
|
var win = ed.windowManager.open({
|
|
title: "Source code",
|
|
body: {
|
|
type: 'textbox',
|
|
name: 'code',
|
|
multiline: true,
|
|
minWidth: ed.getParam("code_dialog_width", 600),
|
|
minHeight: ed.getParam("code_dialog_height", Math.min(tinymce.DOM.getViewPort().h - 200, 500)),
|
|
spellcheck: false,
|
|
style: 'direction: ltr; text-align: left'
|
|
},
|
|
onSubmit: function(e) {
|
|
// We get a lovely "Wrong document" error in IE 11 if we
|
|
// don't move the focus to the editor before creating an undo
|
|
// transation since it tries to make a bookmark for the current selection
|
|
ed.focus();
|
|
|
|
ed.undoManager.transact(function() {
|
|
ed.setContent(e.data.code, {format: 'raw'});
|
|
});
|
|
|
|
ed.selection.setCursorLocation();
|
|
ed.nodeChanged();
|
|
}
|
|
});
|
|
|
|
// Gecko has a major performance issue with textarea
|
|
// contents so we need to set it when all reflows are done
|
|
win.find('#code').value(ed.getContent({source_view: true}));
|
|
}
|
|
|
|
ed.addCommand("mceCodeEditor", showDialog);
|
|
|
|
ed.addButton('source_code', {
|
|
icon: 'codesample',
|
|
tooltip: 'Source code',
|
|
onclick: showDialog
|
|
});
|
|
|
|
ed.addMenuItem('code', {
|
|
icon: 'code',
|
|
text: 'Source code',
|
|
context: 'tools',
|
|
onclick: showDialog
|
|
});
|
|
|
|
}
|
|
});
|
|
|
|
// Register plugin
|
|
tinymce.PluginManager.add('wpforo_source_code_button', tinymce.plugins.wpforo_source_code_button);
|
|
|
|
})(); |