diff --git a/thirdparty/tinymce_ssbuttons/editor_plugin_src.js b/thirdparty/tinymce_ssbuttons/editor_plugin_src.js new file mode 100644 index 000000000..699f5f9e0 --- /dev/null +++ b/thirdparty/tinymce_ssbuttons/editor_plugin_src.js @@ -0,0 +1,52 @@ +(function() { + + // TinyMCE will stop loading if it encounters non-existent external script file + // when included through tiny_mce_gzip.php. Only load the external lang package if it is available. + var availableLangs = ['en', 'de']; + if(jQuery.inArray(tinymce.settings.language, availableLangs) != -1) { + tinymce.PluginManager.requireLangPack("ssbuttons"); + } + + var each = tinymce.each; + + tinymce.create('tinymce.plugins.SSButtons', { + /** + * Returns information about the plugin as a name/value array. + * The current keys are longname, author, authorurl, infourl and version. + * + * @returns Name/value array containing information about the plugin. + * @type Array + */ + getInfo : function() { + return { + longname : 'Special buttons for SilverStripe CMS', + author : 'Sam Minnée', + authorurl : 'http://www.siverstripe.com/', + infourl : 'http://www.silverstripe.com/', + version : "1.0" + }; + }, + + init : function(ed, url) { + ed.addButton('sslink', {title : ed.getLang('tinymce_ssbuttons.insertlink'), cmd : 'sslink', 'class' : 'mce_link'}); + ed.addButton('ssimage', {title : ed.getLang('tinymce_ssbuttons.insertimage'), cmd : 'ssimage', 'class' : 'mce_image'}); + + ed.addCommand("sslink", function(ed) { + jQuery('#Form_EditorToolbarLinkForm').entwine('ss').open(); + }); + + ed.addCommand("ssimage", function(ed) { + jQuery('#Form_EditorToolbarMediaForm').entwine('ss').open(); + }); + + // Disable link button when no link is selected + ed.onNodeChange.add(function(ed, cm, n, co) { + cm.setDisabled('sslink', co && n.nodeName != 'A'); + cm.setActive('sslink', n.nodeName == 'A' && !n.name); + }); + } + }); + + // Adds the plugin class to the list of available TinyMCE plugins + tinymce.PluginManager.add("ssbuttons", tinymce.plugins.SSButtons); +})(); \ No newline at end of file diff --git a/thirdparty/tinymce_ssbuttons/img/flash.gif b/thirdparty/tinymce_ssbuttons/img/flash.gif new file mode 100644 index 000000000..cb192e6ce Binary files /dev/null and b/thirdparty/tinymce_ssbuttons/img/flash.gif differ diff --git a/thirdparty/tinymce_ssbuttons/langs/de.js b/thirdparty/tinymce_ssbuttons/langs/de.js new file mode 100644 index 000000000..0948d6ff2 --- /dev/null +++ b/thirdparty/tinymce_ssbuttons/langs/de.js @@ -0,0 +1,5 @@ +tinyMCE.addI18n('de.tinymce_ssbuttons',{ +insertlink: 'Link einfügen', +insertimage: 'Bild einfügen', +insertflash: 'Flash Objekt einfügen' +}); \ No newline at end of file diff --git a/thirdparty/tinymce_ssbuttons/langs/en.js b/thirdparty/tinymce_ssbuttons/langs/en.js new file mode 100644 index 000000000..91ed8fb0d --- /dev/null +++ b/thirdparty/tinymce_ssbuttons/langs/en.js @@ -0,0 +1,5 @@ +tinyMCE.addI18n('en.tinymce_ssbuttons', { +insertlink: 'Insert Link', +insertimage: 'Insert Image', +insertflash: 'Insert Flash Object' +}); \ No newline at end of file diff --git a/thirdparty/tinymce_ssmacron/editor_plugin_src.js b/thirdparty/tinymce_ssmacron/editor_plugin_src.js new file mode 100644 index 000000000..d30bd634c --- /dev/null +++ b/thirdparty/tinymce_ssmacron/editor_plugin_src.js @@ -0,0 +1,46 @@ +(function() { + var each = tinymce.each; + + /** + * Load via: + * HtmlEditorConfig::get('cms')->enablePlugins(array('ssmacron', '../tinymce_ssmacron')) + * HtmlEditorConfig::get('cms')->insertButtonsAfter ('advcode', 'ssmacron'); + */ + tinymce.create('tinymce.plugins.InsertMacron', { + getInfo : function() { + return { + longname : 'Button to insert macrons', + author : 'Hamish Friedlander. Heavily based on charmap that comes with TinyMCE', + authorurl : 'http://www.siverstripe.com/', + infourl : 'http://www.silverstripe.com/', + version : "1.0" + }; + }, + + + init : function(ed, url) { + // Register commands + ed.addCommand('mceInsertMacron', function() { + ed.windowManager.open({ + file : url + '/macron.htm', + width : 350 + parseInt(ed.getLang('advanced.charmap_delta_width', 0)), + height : 150 + parseInt(ed.getLang('advanced.charmap_delta_height', 0)), + inline : true + }, { + plugin_url : url + }); + }); + + // Register buttons + ed.addButton('ssmacron', { + title : 'Insert a Macron', + cmd : 'mceInsertMacron', + image : url + '/img/macron.png' + }); + + } + }); + + // Adds the plugin class to the list of available TinyMCE plugins + tinymce.PluginManager.add("ssmacron", tinymce.plugins.InsertMacron); +})(); diff --git a/thirdparty/tinymce_ssmacron/img/macron.png b/thirdparty/tinymce_ssmacron/img/macron.png new file mode 100644 index 000000000..80caf6dab Binary files /dev/null and b/thirdparty/tinymce_ssmacron/img/macron.png differ diff --git a/thirdparty/tinymce_ssmacron/js/macron.js b/thirdparty/tinymce_ssmacron/js/macron.js new file mode 100644 index 000000000..d404520d4 --- /dev/null +++ b/thirdparty/tinymce_ssmacron/js/macron.js @@ -0,0 +1,71 @@ +tinyMCEPopup.requireLangPack(); + +var charmap = [ + ['Ā', 'Ā', true, 'A - macron'], + ['Ē', 'Ē', true, 'E - macron'], + ['Ī', 'Ī', true, 'I - macron'], + ['Ō', 'Ō', true, 'O - macron'], + ['Ū', 'Ū', true, 'U - macron'], + ['ā', 'ā', true, 'a - macron'], + ['ē', 'ē', true, 'e - macron'], + ['ī', 'ī', true, 'i - macron'], + ['ō', 'ō', true, 'o - macron'], + ['ū', 'ū', true, 'u - macron'] +]; + +tinyMCEPopup.onInit.add(function() { + tinyMCEPopup.dom.setHTML('charmapView', renderCharMapHTML()); +}); + +function renderCharMapHTML() { + var charsPerRow = 5, tdWidth=20, tdHeight=20, i; + var html = ''; + var cols=-1; + + for (i=0; i' + + '' + + charmap[i][1] + + ''; + if ((cols+1) % charsPerRow == 0) + html += ''; + } + } + + if (cols % charsPerRow > 0) { + var padd = charsPerRow - (cols % charsPerRow); + for (var i=0; i '; + } + + html += '
'; + + return html; +} + +function insertChar(chr) { + tinyMCEPopup.execCommand('mceInsertContent', false, '&#' + chr + ';'); + + // Refocus in window + if (tinyMCEPopup.isWindow) + window.focus(); + + tinyMCEPopup.editor.focus(); + tinyMCEPopup.close(); +} + +function previewChar(codeA, codeB, codeN) { + var elmV = document.getElementById('codeV'); + var elmN = document.getElementById('codeN'); + + if (codeA=='#160;') { + elmV.innerHTML = '__'; + } else { + elmV.innerHTML = '&' + codeA; + } + + elmN.innerHTML = codeN; +} diff --git a/thirdparty/tinymce_ssmacron/macron.htm b/thirdparty/tinymce_ssmacron/macron.htm new file mode 100644 index 000000000..b6108dee2 --- /dev/null +++ b/thirdparty/tinymce_ssmacron/macron.htm @@ -0,0 +1,31 @@ + + + + Insert a Macron + + + + + + + + + + + + +
Insert a Macron
+ + + + + + + + + +
 
 
+
+ + +