125 lines
3.6 KiB
JavaScript
125 lines
3.6 KiB
JavaScript
/**
|
|
* plugin.js
|
|
*
|
|
* Copyright 2013 Web Power, www.webpower.nl
|
|
* @author Arjan Haverkamp
|
|
*/
|
|
|
|
/* jshint unused:false */
|
|
/* global tinymce:true */
|
|
|
|
tinymce.PluginManager.requireLangPack('codemirror')
|
|
|
|
tinymce.PluginManager.add('codemirror', function(editor, url) {
|
|
function showSourceEditor() {
|
|
editor.focus()
|
|
editor.selection.collapse(true)
|
|
|
|
// Insert caret marker
|
|
if (editor.settings.codemirror.saveCursorPosition) {
|
|
editor.selection.setContent('<span style="display: none;" class="CmCaReT">�</span>')
|
|
}
|
|
|
|
var codemirrorWidth = 800
|
|
if (editor.settings.codemirror.width) {
|
|
codemirrorWidth = editor.settings.codemirror.width
|
|
}
|
|
|
|
var codemirrorHeight = 550
|
|
if (editor.settings.codemirror.width) {
|
|
codemirrorHeight = editor.settings.codemirror.height
|
|
}
|
|
|
|
var buttonsConfig = (tinymce.majorVersion < 5)
|
|
? [
|
|
{
|
|
text: 'Ok',
|
|
subtype: 'primary',
|
|
onclick: function() {
|
|
var doc = document.querySelectorAll('.mce-container-body>iframe')[0]
|
|
doc.contentWindow.submit()
|
|
win.close()
|
|
}
|
|
},
|
|
{
|
|
text: 'Cancel',
|
|
onclick: 'close'
|
|
}
|
|
]
|
|
: [
|
|
{
|
|
type: 'custom',
|
|
text: 'Ok',
|
|
name: 'codemirrorOk',
|
|
primary: true
|
|
},
|
|
{
|
|
type: 'cancel',
|
|
text: 'Cancel',
|
|
name: 'codemirrorCancel'
|
|
}
|
|
]
|
|
|
|
var config = {
|
|
title: 'HTML source code',
|
|
url: url + '/source.html',
|
|
width: codemirrorWidth,
|
|
height: codemirrorHeight,
|
|
resizable: true,
|
|
maximizable: true,
|
|
fullScreen: editor.settings.codemirror.fullscreen,
|
|
saveCursorPosition: false,
|
|
buttons: buttonsConfig
|
|
}
|
|
|
|
if (tinymce.majorVersion >= 5) {
|
|
config.onAction = function (dialogApi, actionData) {
|
|
if (actionData.name === 'codemirrorOk') {
|
|
var doc = document.querySelectorAll('.tox-dialog__body-iframe iframe')[0]
|
|
doc.contentWindow.submit()
|
|
win.close()
|
|
}
|
|
}
|
|
}
|
|
|
|
var win = (tinymce.majorVersion < 5)
|
|
? editor.windowManager.open(config)
|
|
: editor.windowManager.openUrl(config)
|
|
|
|
if (editor.settings.codemirror.fullscreen) {
|
|
win.fullscreen(true)
|
|
}
|
|
}
|
|
|
|
if (tinymce.majorVersion < 5) {
|
|
// Add a button to the button bar
|
|
editor.addButton('code', {
|
|
title: 'Source code',
|
|
icon: 'code',
|
|
onclick: showSourceEditor
|
|
})
|
|
|
|
// Add a menu item to the tools menu
|
|
editor.addMenuItem('code', {
|
|
icon: 'code',
|
|
text: 'Source code',
|
|
context: 'tools',
|
|
onclick: showSourceEditor
|
|
})
|
|
} else {
|
|
editor.ui.registry.addButton('code', {
|
|
icon: 'sourcecode',
|
|
title: 'Source code',
|
|
tooltip: 'Source code',
|
|
onAction: showSourceEditor
|
|
})
|
|
|
|
editor.ui.registry.addMenuItem('code', {
|
|
icon: 'sourcecode',
|
|
text: 'Source code',
|
|
onAction: showSourceEditor,
|
|
context: 'tools'
|
|
})
|
|
}
|
|
})
|