tinymce-rails 3.4.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +57 -0
- data/Rakefile +52 -0
- data/assets/integration/tinymce.jquery.js +3 -0
- data/assets/integration/tinymce.js +2 -0
- data/assets/integration/tinymce.preinit.js.erb +1 -0
- data/assets/vendor/tinymce/jquery.tinymce.js +1 -0
- data/assets/vendor/tinymce/langs/en.js +223 -0
- data/assets/vendor/tinymce/license.txt +504 -0
- data/assets/vendor/tinymce/plugins/advhr/css/advhr.css +5 -0
- data/assets/vendor/tinymce/plugins/advhr/editor_plugin.js +57 -0
- data/assets/vendor/tinymce/plugins/advhr/js/rule.js +43 -0
- data/assets/vendor/tinymce/plugins/advhr/langs/en_dlg.js +7 -0
- data/assets/vendor/tinymce/plugins/advhr/rule.htm +58 -0
- data/assets/vendor/tinymce/plugins/advimage/css/advimage.css +13 -0
- data/assets/vendor/tinymce/plugins/advimage/editor_plugin.js +50 -0
- data/assets/vendor/tinymce/plugins/advimage/image.htm +235 -0
- data/assets/vendor/tinymce/plugins/advimage/img/sample.gif +0 -0
- data/assets/vendor/tinymce/plugins/advimage/js/image.js +458 -0
- data/assets/vendor/tinymce/plugins/advimage/langs/en_dlg.js +45 -0
- data/assets/vendor/tinymce/plugins/advlink/css/advlink.css +8 -0
- data/assets/vendor/tinymce/plugins/advlink/editor_plugin.js +61 -0
- data/assets/vendor/tinymce/plugins/advlink/js/advlink.js +532 -0
- data/assets/vendor/tinymce/plugins/advlink/langs/en_dlg.js +54 -0
- data/assets/vendor/tinymce/plugins/advlink/link.htm +338 -0
- data/assets/vendor/tinymce/plugins/advlist/editor_plugin.js +176 -0
- data/assets/vendor/tinymce/plugins/autolink/editor_plugin.js +172 -0
- data/assets/vendor/tinymce/plugins/autoresize/editor_plugin.js +137 -0
- data/assets/vendor/tinymce/plugins/autosave/editor_plugin.js +431 -0
- data/assets/vendor/tinymce/plugins/autosave/langs/en.js +4 -0
- data/assets/vendor/tinymce/plugins/bbcode/editor_plugin.js +120 -0
- data/assets/vendor/tinymce/plugins/contextmenu/editor_plugin.js +160 -0
- data/assets/vendor/tinymce/plugins/directionality/editor_plugin.js +82 -0
- data/assets/vendor/tinymce/plugins/emotions/editor_plugin.js +43 -0
- data/assets/vendor/tinymce/plugins/emotions/emotions.htm +41 -0
- data/assets/vendor/tinymce/plugins/emotions/img/smiley-cool.gif +0 -0
- data/assets/vendor/tinymce/plugins/emotions/img/smiley-cry.gif +0 -0
- data/assets/vendor/tinymce/plugins/emotions/img/smiley-embarassed.gif +0 -0
- data/assets/vendor/tinymce/plugins/emotions/img/smiley-foot-in-mouth.gif +0 -0
- data/assets/vendor/tinymce/plugins/emotions/img/smiley-frown.gif +0 -0
- data/assets/vendor/tinymce/plugins/emotions/img/smiley-innocent.gif +0 -0
- data/assets/vendor/tinymce/plugins/emotions/img/smiley-kiss.gif +0 -0
- data/assets/vendor/tinymce/plugins/emotions/img/smiley-laughing.gif +0 -0
- data/assets/vendor/tinymce/plugins/emotions/img/smiley-money-mouth.gif +0 -0
- data/assets/vendor/tinymce/plugins/emotions/img/smiley-sealed.gif +0 -0
- data/assets/vendor/tinymce/plugins/emotions/img/smiley-smile.gif +0 -0
- data/assets/vendor/tinymce/plugins/emotions/img/smiley-surprised.gif +0 -0
- data/assets/vendor/tinymce/plugins/emotions/img/smiley-tongue-out.gif +0 -0
- data/assets/vendor/tinymce/plugins/emotions/img/smiley-undecided.gif +0 -0
- data/assets/vendor/tinymce/plugins/emotions/img/smiley-wink.gif +0 -0
- data/assets/vendor/tinymce/plugins/emotions/img/smiley-yell.gif +0 -0
- data/assets/vendor/tinymce/plugins/emotions/js/emotions.js +22 -0
- data/assets/vendor/tinymce/plugins/emotions/langs/en_dlg.js +20 -0
- data/assets/vendor/tinymce/plugins/example/dialog.htm +22 -0
- data/assets/vendor/tinymce/plugins/example/editor_plugin.js +84 -0
- data/assets/vendor/tinymce/plugins/example/img/example.gif +0 -0
- data/assets/vendor/tinymce/plugins/example/js/dialog.js +19 -0
- data/assets/vendor/tinymce/plugins/example/langs/en.js +3 -0
- data/assets/vendor/tinymce/plugins/example/langs/en_dlg.js +3 -0
- data/assets/vendor/tinymce/plugins/example_dependency/editor_plugin.js +50 -0
- data/assets/vendor/tinymce/plugins/fullpage/css/fullpage.css +143 -0
- data/assets/vendor/tinymce/plugins/fullpage/editor_plugin.js +399 -0
- data/assets/vendor/tinymce/plugins/fullpage/fullpage.htm +259 -0
- data/assets/vendor/tinymce/plugins/fullpage/js/fullpage.js +232 -0
- data/assets/vendor/tinymce/plugins/fullpage/langs/en_dlg.js +85 -0
- data/assets/vendor/tinymce/plugins/fullscreen/editor_plugin.js +159 -0
- data/assets/vendor/tinymce/plugins/fullscreen/fullscreen.htm +109 -0
- data/assets/vendor/tinymce/plugins/iespell/editor_plugin.js +54 -0
- data/assets/vendor/tinymce/plugins/inlinepopups/editor_plugin.js +696 -0
- data/assets/vendor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif +0 -0
- data/assets/vendor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/button.gif +0 -0
- data/assets/vendor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif +0 -0
- data/assets/vendor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif +0 -0
- data/assets/vendor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif +0 -0
- data/assets/vendor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif +0 -0
- data/assets/vendor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif +0 -0
- data/assets/vendor/tinymce/plugins/inlinepopups/skins/clearlooks2/window.css +90 -0
- data/assets/vendor/tinymce/plugins/inlinepopups/template.htm +387 -0
- data/assets/vendor/tinymce/plugins/insertdatetime/editor_plugin.js +83 -0
- data/assets/vendor/tinymce/plugins/layer/editor_plugin.js +214 -0
- data/assets/vendor/tinymce/plugins/legacyoutput/editor_plugin.js +139 -0
- data/assets/vendor/tinymce/plugins/lists/editor_plugin.js +688 -0
- data/assets/vendor/tinymce/plugins/media/css/media.css +17 -0
- data/assets/vendor/tinymce/plugins/media/editor_plugin.js +777 -0
- data/assets/vendor/tinymce/plugins/media/js/embed.js +73 -0
- data/assets/vendor/tinymce/plugins/media/js/media.js +355 -0
- data/assets/vendor/tinymce/plugins/media/langs/en_dlg.js +109 -0
- data/assets/vendor/tinymce/plugins/media/media.htm +812 -0
- data/assets/vendor/tinymce/plugins/media/moxieplayer.swf +0 -0
- data/assets/vendor/tinymce/plugins/nonbreaking/editor_plugin.js +53 -0
- data/assets/vendor/tinymce/plugins/noneditable/editor_plugin.js +95 -0
- data/assets/vendor/tinymce/plugins/pagebreak/editor_plugin.js +74 -0
- data/assets/vendor/tinymce/plugins/paste/editor_plugin.js +942 -0
- data/assets/vendor/tinymce/plugins/paste/js/pastetext.js +36 -0
- data/assets/vendor/tinymce/plugins/paste/js/pasteword.js +51 -0
- data/assets/vendor/tinymce/plugins/paste/langs/en_dlg.js +5 -0
- data/assets/vendor/tinymce/plugins/paste/pastetext.htm +27 -0
- data/assets/vendor/tinymce/plugins/paste/pasteword.htm +21 -0
- data/assets/vendor/tinymce/plugins/preview/editor_plugin.js +53 -0
- data/assets/vendor/tinymce/plugins/preview/example.html +28 -0
- data/assets/vendor/tinymce/plugins/preview/jscripts/embed.js +73 -0
- data/assets/vendor/tinymce/plugins/preview/preview.html +17 -0
- data/assets/vendor/tinymce/plugins/print/editor_plugin.js +34 -0
- data/assets/vendor/tinymce/plugins/save/editor_plugin.js +101 -0
- data/assets/vendor/tinymce/plugins/searchreplace/css/searchreplace.css +6 -0
- data/assets/vendor/tinymce/plugins/searchreplace/editor_plugin.js +61 -0
- data/assets/vendor/tinymce/plugins/searchreplace/js/searchreplace.js +142 -0
- data/assets/vendor/tinymce/plugins/searchreplace/langs/en_dlg.js +16 -0
- data/assets/vendor/tinymce/plugins/searchreplace/searchreplace.htm +100 -0
- data/assets/vendor/tinymce/plugins/spellchecker/css/content.css +1 -0
- data/assets/vendor/tinymce/plugins/spellchecker/editor_plugin.js +434 -0
- data/assets/vendor/tinymce/plugins/spellchecker/img/wline.gif +0 -0
- data/assets/vendor/tinymce/plugins/style/css/props.css +13 -0
- data/assets/vendor/tinymce/plugins/style/editor_plugin.js +55 -0
- data/assets/vendor/tinymce/plugins/style/js/props.js +635 -0
- data/assets/vendor/tinymce/plugins/style/langs/en_dlg.js +70 -0
- data/assets/vendor/tinymce/plugins/style/props.htm +838 -0
- data/assets/vendor/tinymce/plugins/tabfocus/editor_plugin.js +114 -0
- data/assets/vendor/tinymce/plugins/table/cell.htm +180 -0
- data/assets/vendor/tinymce/plugins/table/css/cell.css +17 -0
- data/assets/vendor/tinymce/plugins/table/css/row.css +25 -0
- data/assets/vendor/tinymce/plugins/table/css/table.css +13 -0
- data/assets/vendor/tinymce/plugins/table/editor_plugin.js +1263 -0
- data/assets/vendor/tinymce/plugins/table/js/cell.js +319 -0
- data/assets/vendor/tinymce/plugins/table/js/merge_cells.js +27 -0
- data/assets/vendor/tinymce/plugins/table/js/row.js +237 -0
- data/assets/vendor/tinymce/plugins/table/js/table.js +450 -0
- data/assets/vendor/tinymce/plugins/table/langs/en_dlg.js +75 -0
- data/assets/vendor/tinymce/plugins/table/merge_cells.htm +32 -0
- data/assets/vendor/tinymce/plugins/table/row.htm +158 -0
- data/assets/vendor/tinymce/plugins/table/table.htm +188 -0
- data/assets/vendor/tinymce/plugins/template/blank.htm +12 -0
- data/assets/vendor/tinymce/plugins/template/css/template.css +23 -0
- data/assets/vendor/tinymce/plugins/template/editor_plugin.js +159 -0
- data/assets/vendor/tinymce/plugins/template/js/template.js +106 -0
- data/assets/vendor/tinymce/plugins/template/langs/en_dlg.js +15 -0
- data/assets/vendor/tinymce/plugins/template/template.htm +31 -0
- data/assets/vendor/tinymce/plugins/visualchars/editor_plugin.js +83 -0
- data/assets/vendor/tinymce/plugins/wordcount/editor_plugin.js +114 -0
- data/assets/vendor/tinymce/plugins/xhtmlxtras/abbr.htm +142 -0
- data/assets/vendor/tinymce/plugins/xhtmlxtras/acronym.htm +142 -0
- data/assets/vendor/tinymce/plugins/xhtmlxtras/attributes.htm +149 -0
- data/assets/vendor/tinymce/plugins/xhtmlxtras/cite.htm +142 -0
- data/assets/vendor/tinymce/plugins/xhtmlxtras/css/attributes.css +11 -0
- data/assets/vendor/tinymce/plugins/xhtmlxtras/css/popup.css +9 -0
- data/assets/vendor/tinymce/plugins/xhtmlxtras/del.htm +162 -0
- data/assets/vendor/tinymce/plugins/xhtmlxtras/editor_plugin.js +132 -0
- data/assets/vendor/tinymce/plugins/xhtmlxtras/ins.htm +162 -0
- data/assets/vendor/tinymce/plugins/xhtmlxtras/js/abbr.js +28 -0
- data/assets/vendor/tinymce/plugins/xhtmlxtras/js/acronym.js +28 -0
- data/assets/vendor/tinymce/plugins/xhtmlxtras/js/attributes.js +111 -0
- data/assets/vendor/tinymce/plugins/xhtmlxtras/js/cite.js +28 -0
- data/assets/vendor/tinymce/plugins/xhtmlxtras/js/del.js +53 -0
- data/assets/vendor/tinymce/plugins/xhtmlxtras/js/element_common.js +229 -0
- data/assets/vendor/tinymce/plugins/xhtmlxtras/js/ins.js +53 -0
- data/assets/vendor/tinymce/plugins/xhtmlxtras/langs/en_dlg.js +32 -0
- data/assets/vendor/tinymce/themes/advanced/about.htm +52 -0
- data/assets/vendor/tinymce/themes/advanced/anchor.htm +26 -0
- data/assets/vendor/tinymce/themes/advanced/charmap.htm +51 -0
- data/assets/vendor/tinymce/themes/advanced/color_picker.htm +74 -0
- data/assets/vendor/tinymce/themes/advanced/editor_template.js +1358 -0
- data/assets/vendor/tinymce/themes/advanced/image.htm +80 -0
- data/assets/vendor/tinymce/themes/advanced/img/colorpicker.jpg +0 -0
- data/assets/vendor/tinymce/themes/advanced/img/flash.gif +0 -0
- data/assets/vendor/tinymce/themes/advanced/img/icons.gif +0 -0
- data/assets/vendor/tinymce/themes/advanced/img/iframe.gif +0 -0
- data/assets/vendor/tinymce/themes/advanced/img/pagebreak.gif +0 -0
- data/assets/vendor/tinymce/themes/advanced/img/quicktime.gif +0 -0
- data/assets/vendor/tinymce/themes/advanced/img/realmedia.gif +0 -0
- data/assets/vendor/tinymce/themes/advanced/img/shockwave.gif +0 -0
- data/assets/vendor/tinymce/themes/advanced/img/trans.gif +0 -0
- data/assets/vendor/tinymce/themes/advanced/img/video.gif +0 -0
- data/assets/vendor/tinymce/themes/advanced/img/windowsmedia.gif +0 -0
- data/assets/vendor/tinymce/themes/advanced/js/about.js +73 -0
- data/assets/vendor/tinymce/themes/advanced/js/anchor.js +42 -0
- data/assets/vendor/tinymce/themes/advanced/js/charmap.js +355 -0
- data/assets/vendor/tinymce/themes/advanced/js/color_picker.js +329 -0
- data/assets/vendor/tinymce/themes/advanced/js/image.js +247 -0
- data/assets/vendor/tinymce/themes/advanced/js/link.js +153 -0
- data/assets/vendor/tinymce/themes/advanced/js/source_editor.js +56 -0
- data/assets/vendor/tinymce/themes/advanced/langs/en.js +68 -0
- data/assets/vendor/tinymce/themes/advanced/langs/en_dlg.js +54 -0
- data/assets/vendor/tinymce/themes/advanced/link.htm +57 -0
- data/assets/vendor/tinymce/themes/advanced/shortcuts.htm +47 -0
- data/assets/vendor/tinymce/themes/advanced/skins/default/content.css +47 -0
- data/assets/vendor/tinymce/themes/advanced/skins/default/dialog.css +117 -0
- data/assets/vendor/tinymce/themes/advanced/skins/default/img/buttons.png +0 -0
- data/assets/vendor/tinymce/themes/advanced/skins/default/img/items.gif +0 -0
- data/assets/vendor/tinymce/themes/advanced/skins/default/img/menu_arrow.gif +0 -0
- data/assets/vendor/tinymce/themes/advanced/skins/default/img/menu_check.gif +0 -0
- data/assets/vendor/tinymce/themes/advanced/skins/default/img/progress.gif +0 -0
- data/assets/vendor/tinymce/themes/advanced/skins/default/img/tabs.gif +0 -0
- data/assets/vendor/tinymce/themes/advanced/skins/default/ui.css +214 -0
- data/assets/vendor/tinymce/themes/advanced/skins/highcontrast/content.css +23 -0
- data/assets/vendor/tinymce/themes/advanced/skins/highcontrast/dialog.css +105 -0
- data/assets/vendor/tinymce/themes/advanced/skins/highcontrast/ui.css +102 -0
- data/assets/vendor/tinymce/themes/advanced/skins/o2k7/content.css +46 -0
- data/assets/vendor/tinymce/themes/advanced/skins/o2k7/dialog.css +117 -0
- data/assets/vendor/tinymce/themes/advanced/skins/o2k7/img/button_bg.png +0 -0
- data/assets/vendor/tinymce/themes/advanced/skins/o2k7/img/button_bg_black.png +0 -0
- data/assets/vendor/tinymce/themes/advanced/skins/o2k7/img/button_bg_silver.png +0 -0
- data/assets/vendor/tinymce/themes/advanced/skins/o2k7/ui.css +217 -0
- data/assets/vendor/tinymce/themes/advanced/skins/o2k7/ui_black.css +8 -0
- data/assets/vendor/tinymce/themes/advanced/skins/o2k7/ui_silver.css +5 -0
- data/assets/vendor/tinymce/themes/advanced/source_editor.htm +25 -0
- data/assets/vendor/tinymce/themes/simple/editor_template.js +84 -0
- data/assets/vendor/tinymce/themes/simple/img/icons.gif +0 -0
- data/assets/vendor/tinymce/themes/simple/langs/en.js +11 -0
- data/assets/vendor/tinymce/themes/simple/skins/default/content.css +25 -0
- data/assets/vendor/tinymce/themes/simple/skins/default/ui.css +32 -0
- data/assets/vendor/tinymce/themes/simple/skins/o2k7/content.css +17 -0
- data/assets/vendor/tinymce/themes/simple/skins/o2k7/img/button_bg.png +0 -0
- data/assets/vendor/tinymce/themes/simple/skins/o2k7/ui.css +35 -0
- data/assets/vendor/tinymce/tiny_mce.js +15338 -0
- data/assets/vendor/tinymce/tiny_mce_popup.js +5 -0
- data/assets/vendor/tinymce/utils/editable_selects.js +70 -0
- data/assets/vendor/tinymce/utils/form_utils.js +210 -0
- data/assets/vendor/tinymce/utils/mctabs.js +162 -0
- data/assets/vendor/tinymce/utils/validate.js +252 -0
- data/lib/tinymce-rails.rb +2 -0
- data/lib/tinymce/railtie.rb +17 -0
- data/lib/tinymce/version.rb +3 -0
- metadata +300 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
tinyMCEPopup.requireLangPack();
|
|
2
|
+
|
|
3
|
+
var EmotionsDialog = {
|
|
4
|
+
init : function(ed) {
|
|
5
|
+
tinyMCEPopup.resizeToInnerSize();
|
|
6
|
+
},
|
|
7
|
+
|
|
8
|
+
insert : function(file, title) {
|
|
9
|
+
var ed = tinyMCEPopup.editor, dom = ed.dom;
|
|
10
|
+
|
|
11
|
+
tinyMCEPopup.execCommand('mceInsertContent', false, dom.createHTML('img', {
|
|
12
|
+
src : tinyMCEPopup.getWindowArg('plugin_url') + '/img/' + file,
|
|
13
|
+
alt : ed.getLang(title),
|
|
14
|
+
title : ed.getLang(title),
|
|
15
|
+
border : 0
|
|
16
|
+
}));
|
|
17
|
+
|
|
18
|
+
tinyMCEPopup.close();
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
tinyMCEPopup.onInit.add(EmotionsDialog.init, EmotionsDialog);
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
tinyMCE.addI18n('en.emotions_dlg',{
|
|
2
|
+
title:"Insert emotion",
|
|
3
|
+
desc:"Emotions",
|
|
4
|
+
cool:"Cool",
|
|
5
|
+
cry:"Cry",
|
|
6
|
+
embarassed:"Embarassed",
|
|
7
|
+
foot_in_mouth:"Foot in mouth",
|
|
8
|
+
frown:"Frown",
|
|
9
|
+
innocent:"Innocent",
|
|
10
|
+
kiss:"Kiss",
|
|
11
|
+
laughing:"Laughing",
|
|
12
|
+
money_mouth:"Money mouth",
|
|
13
|
+
sealed:"Sealed",
|
|
14
|
+
smile:"Smile",
|
|
15
|
+
surprised:"Surprised",
|
|
16
|
+
tongue_out:"Tongue out",
|
|
17
|
+
undecided:"Undecided",
|
|
18
|
+
wink:"Wink",
|
|
19
|
+
yell:"Yell"
|
|
20
|
+
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
2
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
3
|
+
<head>
|
|
4
|
+
<title>{#example_dlg.title}</title>
|
|
5
|
+
<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
|
|
6
|
+
<script type="text/javascript" src="js/dialog.js"></script>
|
|
7
|
+
</head>
|
|
8
|
+
<body>
|
|
9
|
+
|
|
10
|
+
<form onsubmit="ExampleDialog.insert();return false;" action="#">
|
|
11
|
+
<p>Here is a example dialog.</p>
|
|
12
|
+
<p>Selected text: <input id="someval" name="someval" type="text" class="text" /></p>
|
|
13
|
+
<p>Custom arg: <input id="somearg" name="somearg" type="text" class="text" /></p>
|
|
14
|
+
|
|
15
|
+
<div class="mceActionPanel">
|
|
16
|
+
<input type="button" id="insert" name="insert" value="{#insert}" onclick="ExampleDialog.insert();" />
|
|
17
|
+
<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
|
|
18
|
+
</div>
|
|
19
|
+
</form>
|
|
20
|
+
|
|
21
|
+
</body>
|
|
22
|
+
</html>
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* editor_plugin_src.js
|
|
3
|
+
*
|
|
4
|
+
* Copyright 2009, Moxiecode Systems AB
|
|
5
|
+
* Released under LGPL License.
|
|
6
|
+
*
|
|
7
|
+
* License: http://tinymce.moxiecode.com/license
|
|
8
|
+
* Contributing: http://tinymce.moxiecode.com/contributing
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
(function() {
|
|
12
|
+
// Load plugin specific language pack
|
|
13
|
+
tinymce.PluginManager.requireLangPack('example');
|
|
14
|
+
|
|
15
|
+
tinymce.create('tinymce.plugins.ExamplePlugin', {
|
|
16
|
+
/**
|
|
17
|
+
* Initializes the plugin, this will be executed after the plugin has been created.
|
|
18
|
+
* This call is done before the editor instance has finished it's initialization so use the onInit event
|
|
19
|
+
* of the editor instance to intercept that event.
|
|
20
|
+
*
|
|
21
|
+
* @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
|
|
22
|
+
* @param {string} url Absolute URL to where the plugin is located.
|
|
23
|
+
*/
|
|
24
|
+
init : function(ed, url) {
|
|
25
|
+
// Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('mceExample');
|
|
26
|
+
ed.addCommand('mceExample', function() {
|
|
27
|
+
ed.windowManager.open({
|
|
28
|
+
file : url + '/dialog.htm',
|
|
29
|
+
width : 320 + parseInt(ed.getLang('example.delta_width', 0)),
|
|
30
|
+
height : 120 + parseInt(ed.getLang('example.delta_height', 0)),
|
|
31
|
+
inline : 1
|
|
32
|
+
}, {
|
|
33
|
+
plugin_url : url, // Plugin absolute URL
|
|
34
|
+
some_custom_arg : 'custom arg' // Custom argument
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
// Register example button
|
|
39
|
+
ed.addButton('example', {
|
|
40
|
+
title : 'example.desc',
|
|
41
|
+
cmd : 'mceExample',
|
|
42
|
+
image : url + '/img/example.gif'
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
// Add a node change handler, selects the button in the UI when a image is selected
|
|
46
|
+
ed.onNodeChange.add(function(ed, cm, n) {
|
|
47
|
+
cm.setActive('example', n.nodeName == 'IMG');
|
|
48
|
+
});
|
|
49
|
+
},
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Creates control instances based in the incomming name. This method is normally not
|
|
53
|
+
* needed since the addButton method of the tinymce.Editor class is a more easy way of adding buttons
|
|
54
|
+
* but you sometimes need to create more complex controls like listboxes, split buttons etc then this
|
|
55
|
+
* method can be used to create those.
|
|
56
|
+
*
|
|
57
|
+
* @param {String} n Name of the control to create.
|
|
58
|
+
* @param {tinymce.ControlManager} cm Control manager to use inorder to create new control.
|
|
59
|
+
* @return {tinymce.ui.Control} New control instance or null if no control was created.
|
|
60
|
+
*/
|
|
61
|
+
createControl : function(n, cm) {
|
|
62
|
+
return null;
|
|
63
|
+
},
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Returns information about the plugin as a name/value array.
|
|
67
|
+
* The current keys are longname, author, authorurl, infourl and version.
|
|
68
|
+
*
|
|
69
|
+
* @return {Object} Name/value array containing information about the plugin.
|
|
70
|
+
*/
|
|
71
|
+
getInfo : function() {
|
|
72
|
+
return {
|
|
73
|
+
longname : 'Example plugin',
|
|
74
|
+
author : 'Some author',
|
|
75
|
+
authorurl : 'http://tinymce.moxiecode.com',
|
|
76
|
+
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example',
|
|
77
|
+
version : "1.0"
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
// Register plugin
|
|
83
|
+
tinymce.PluginManager.add('example', tinymce.plugins.ExamplePlugin);
|
|
84
|
+
})();
|
|
Binary file
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
tinyMCEPopup.requireLangPack();
|
|
2
|
+
|
|
3
|
+
var ExampleDialog = {
|
|
4
|
+
init : function() {
|
|
5
|
+
var f = document.forms[0];
|
|
6
|
+
|
|
7
|
+
// Get the selected contents as text and place it in the input
|
|
8
|
+
f.someval.value = tinyMCEPopup.editor.selection.getContent({format : 'text'});
|
|
9
|
+
f.somearg.value = tinyMCEPopup.getWindowArg('some_custom_arg');
|
|
10
|
+
},
|
|
11
|
+
|
|
12
|
+
insert : function() {
|
|
13
|
+
// Insert the contents from the input into the document
|
|
14
|
+
tinyMCEPopup.editor.execCommand('mceInsertContent', false, document.forms[0].someval.value);
|
|
15
|
+
tinyMCEPopup.close();
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
tinyMCEPopup.onInit.add(ExampleDialog.init, ExampleDialog);
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* editor_plugin_src.js
|
|
3
|
+
*
|
|
4
|
+
* Copyright 2009, Moxiecode Systems AB
|
|
5
|
+
* Released under LGPL License.
|
|
6
|
+
*
|
|
7
|
+
* License: http://tinymce.moxiecode.com/license
|
|
8
|
+
* Contributing: http://tinymce.moxiecode.com/contributing
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
(function() {
|
|
12
|
+
|
|
13
|
+
tinymce.create('tinymce.plugins.ExampleDependencyPlugin', {
|
|
14
|
+
/**
|
|
15
|
+
* Initializes the plugin, this will be executed after the plugin has been created.
|
|
16
|
+
* This call is done before the editor instance has finished it's initialization so use the onInit event
|
|
17
|
+
* of the editor instance to intercept that event.
|
|
18
|
+
*
|
|
19
|
+
* @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
|
|
20
|
+
* @param {string} url Absolute URL to where the plugin is located.
|
|
21
|
+
*/
|
|
22
|
+
init : function(ed, url) {
|
|
23
|
+
},
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Returns information about the plugin as a name/value array.
|
|
28
|
+
* The current keys are longname, author, authorurl, infourl and version.
|
|
29
|
+
*
|
|
30
|
+
* @return {Object} Name/value array containing information about the plugin.
|
|
31
|
+
*/
|
|
32
|
+
getInfo : function() {
|
|
33
|
+
return {
|
|
34
|
+
longname : 'Example Dependency plugin',
|
|
35
|
+
author : 'Some author',
|
|
36
|
+
authorurl : 'http://tinymce.moxiecode.com',
|
|
37
|
+
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example_dependency',
|
|
38
|
+
version : "1.0"
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Register the plugin, specifying the list of the plugins that this plugin depends on. They are specified in a list, with the list loaded in order.
|
|
45
|
+
* plugins in this list will be initialised when this plugin is initialized. (before the init method is called).
|
|
46
|
+
* plugins in a depends list should typically be specified using the short name). If neccesary this can be done
|
|
47
|
+
* with an object which has the url to the plugin and the shortname.
|
|
48
|
+
*/
|
|
49
|
+
tinymce.PluginManager.add('example_dependency', tinymce.plugins.ExampleDependencyPlugin, ['example']);
|
|
50
|
+
})();
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/* Hide the advanced tab */
|
|
2
|
+
#advanced_tab {
|
|
3
|
+
display: none;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
#metatitle, #metakeywords, #metadescription, #metaauthor, #metacopyright {
|
|
7
|
+
width: 280px;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
#doctype, #docencoding {
|
|
11
|
+
width: 200px;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
#langcode {
|
|
15
|
+
width: 30px;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
#bgimage {
|
|
19
|
+
width: 220px;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
#fontface {
|
|
23
|
+
width: 240px;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
#leftmargin, #rightmargin, #topmargin, #bottommargin {
|
|
27
|
+
width: 50px;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.panel_wrapper div.current {
|
|
31
|
+
height: 400px;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
#stylesheet, #style {
|
|
35
|
+
width: 240px;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
#doctypes {
|
|
39
|
+
width: 200px;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/* Head list classes */
|
|
43
|
+
|
|
44
|
+
.headlistwrapper {
|
|
45
|
+
width: 100%;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.selected {
|
|
49
|
+
border: 1px solid #0A246A;
|
|
50
|
+
background-color: #B6BDD2;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.toolbar {
|
|
54
|
+
width: 100%;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
#headlist {
|
|
58
|
+
width: 100%;
|
|
59
|
+
margin-top: 3px;
|
|
60
|
+
font-size: 11px;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
#info, #title_element, #meta_element, #script_element, #style_element, #base_element, #link_element, #comment_element, #unknown_element {
|
|
64
|
+
display: none;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
#addmenu {
|
|
68
|
+
position: absolute;
|
|
69
|
+
border: 1px solid gray;
|
|
70
|
+
display: none;
|
|
71
|
+
z-index: 100;
|
|
72
|
+
background-color: white;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
#addmenu a {
|
|
76
|
+
display: block;
|
|
77
|
+
width: 100%;
|
|
78
|
+
line-height: 20px;
|
|
79
|
+
text-decoration: none;
|
|
80
|
+
background-color: white;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
#addmenu a:hover {
|
|
84
|
+
background-color: #B6BDD2;
|
|
85
|
+
color: black;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
#addmenu span {
|
|
89
|
+
padding-left: 10px;
|
|
90
|
+
padding-right: 10px;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
#updateElementPanel {
|
|
94
|
+
display: none;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
#script_element .panel_wrapper div.current {
|
|
98
|
+
height: 108px;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
#style_element .panel_wrapper div.current {
|
|
102
|
+
height: 108px;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
#link_element .panel_wrapper div.current {
|
|
106
|
+
height: 140px;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
#element_script_value {
|
|
110
|
+
width: 100%;
|
|
111
|
+
height: 100px;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
#element_comment_value {
|
|
115
|
+
width: 100%;
|
|
116
|
+
height: 120px;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
#element_style_value {
|
|
120
|
+
width: 100%;
|
|
121
|
+
height: 100px;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
#element_title, #element_script_src, #element_meta_name, #element_meta_content, #element_base_href, #element_link_href, #element_link_title {
|
|
125
|
+
width: 250px;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.updateElementButton {
|
|
129
|
+
margin-top: 3px;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/* MSIE specific styles */
|
|
133
|
+
|
|
134
|
+
* html .addbutton, * html .removebutton, * html .moveupbutton, * html .movedownbutton {
|
|
135
|
+
width: 22px;
|
|
136
|
+
height: 22px;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
textarea {
|
|
140
|
+
height: 55px;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.panel_wrapper div.current {height:420px;}
|
|
@@ -0,0 +1,399 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* editor_plugin_src.js
|
|
3
|
+
*
|
|
4
|
+
* Copyright 2009, Moxiecode Systems AB
|
|
5
|
+
* Released under LGPL License.
|
|
6
|
+
*
|
|
7
|
+
* License: http://tinymce.moxiecode.com/license
|
|
8
|
+
* Contributing: http://tinymce.moxiecode.com/contributing
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
(function() {
|
|
12
|
+
var each = tinymce.each, Node = tinymce.html.Node;
|
|
13
|
+
|
|
14
|
+
tinymce.create('tinymce.plugins.FullPagePlugin', {
|
|
15
|
+
init : function(ed, url) {
|
|
16
|
+
var t = this;
|
|
17
|
+
|
|
18
|
+
t.editor = ed;
|
|
19
|
+
|
|
20
|
+
// Register commands
|
|
21
|
+
ed.addCommand('mceFullPageProperties', function() {
|
|
22
|
+
ed.windowManager.open({
|
|
23
|
+
file : url + '/fullpage.htm',
|
|
24
|
+
width : 430 + parseInt(ed.getLang('fullpage.delta_width', 0)),
|
|
25
|
+
height : 495 + parseInt(ed.getLang('fullpage.delta_height', 0)),
|
|
26
|
+
inline : 1
|
|
27
|
+
}, {
|
|
28
|
+
plugin_url : url,
|
|
29
|
+
data : t._htmlToData()
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
// Register buttons
|
|
34
|
+
ed.addButton('fullpage', {title : 'fullpage.desc', cmd : 'mceFullPageProperties'});
|
|
35
|
+
|
|
36
|
+
ed.onBeforeSetContent.add(t._setContent, t);
|
|
37
|
+
ed.onGetContent.add(t._getContent, t);
|
|
38
|
+
},
|
|
39
|
+
|
|
40
|
+
getInfo : function() {
|
|
41
|
+
return {
|
|
42
|
+
longname : 'Fullpage',
|
|
43
|
+
author : 'Moxiecode Systems AB',
|
|
44
|
+
authorurl : 'http://tinymce.moxiecode.com',
|
|
45
|
+
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage',
|
|
46
|
+
version : tinymce.majorVersion + "." + tinymce.minorVersion
|
|
47
|
+
};
|
|
48
|
+
},
|
|
49
|
+
|
|
50
|
+
// Private plugin internal methods
|
|
51
|
+
|
|
52
|
+
_htmlToData : function() {
|
|
53
|
+
var headerFragment = this._parseHeader(), data = {}, nodes, elm, matches, editor = this.editor;
|
|
54
|
+
|
|
55
|
+
function getAttr(elm, name) {
|
|
56
|
+
var value = elm.attr(name);
|
|
57
|
+
|
|
58
|
+
return value || '';
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
// Default some values
|
|
62
|
+
data.fontface = editor.getParam("fullpage_default_fontface", "");
|
|
63
|
+
data.fontsize = editor.getParam("fullpage_default_fontsize", "");
|
|
64
|
+
|
|
65
|
+
// Parse XML PI
|
|
66
|
+
elm = headerFragment.firstChild;
|
|
67
|
+
if (elm.type == 7) {
|
|
68
|
+
data.xml_pi = true;
|
|
69
|
+
matches = /encoding="([^"]+)"/.exec(elm.value);
|
|
70
|
+
if (matches)
|
|
71
|
+
data.docencoding = matches[1];
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// Parse doctype
|
|
75
|
+
elm = headerFragment.getAll('#doctype')[0];
|
|
76
|
+
if (elm)
|
|
77
|
+
data.doctype = '<!DOCTYPE' + elm.value + ">";
|
|
78
|
+
|
|
79
|
+
// Parse title element
|
|
80
|
+
elm = headerFragment.getAll('title')[0];
|
|
81
|
+
if (elm && elm.firstChild) {
|
|
82
|
+
data.metatitle = elm.firstChild.value;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// Parse meta elements
|
|
86
|
+
each(headerFragment.getAll('meta'), function(meta) {
|
|
87
|
+
var name = meta.attr('name'), httpEquiv = meta.attr('http-equiv'), matches;
|
|
88
|
+
|
|
89
|
+
if (name)
|
|
90
|
+
data['meta' + name.toLowerCase()] = meta.attr('content');
|
|
91
|
+
else if (httpEquiv == "Content-Type") {
|
|
92
|
+
matches = /charset\s*=\s*(.*)\s*/gi.exec(meta.attr('content'));
|
|
93
|
+
|
|
94
|
+
if (matches)
|
|
95
|
+
data.docencoding = matches[1];
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
// Parse html attribs
|
|
100
|
+
elm = headerFragment.getAll('html')[0];
|
|
101
|
+
if (elm)
|
|
102
|
+
data.langcode = getAttr(elm, 'lang') || getAttr(elm, 'xml:lang');
|
|
103
|
+
|
|
104
|
+
// Parse stylesheet
|
|
105
|
+
elm = headerFragment.getAll('link')[0];
|
|
106
|
+
if (elm && elm.attr('rel') == 'stylesheet')
|
|
107
|
+
data.stylesheet = elm.attr('href');
|
|
108
|
+
|
|
109
|
+
// Parse body parts
|
|
110
|
+
elm = headerFragment.getAll('body')[0];
|
|
111
|
+
if (elm) {
|
|
112
|
+
data.langdir = getAttr(elm, 'dir');
|
|
113
|
+
data.style = getAttr(elm, 'style');
|
|
114
|
+
data.visited_color = getAttr(elm, 'vlink');
|
|
115
|
+
data.link_color = getAttr(elm, 'link');
|
|
116
|
+
data.active_color = getAttr(elm, 'alink');
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
return data;
|
|
120
|
+
},
|
|
121
|
+
|
|
122
|
+
_dataToHtml : function(data) {
|
|
123
|
+
var headerFragment, headElement, html, elm, value, dom = this.editor.dom;
|
|
124
|
+
|
|
125
|
+
function setAttr(elm, name, value) {
|
|
126
|
+
elm.attr(name, value ? value : undefined);
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
function addHeadNode(node) {
|
|
130
|
+
if (headElement.firstChild)
|
|
131
|
+
headElement.insert(node, headElement.firstChild);
|
|
132
|
+
else
|
|
133
|
+
headElement.append(node);
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
headerFragment = this._parseHeader();
|
|
137
|
+
headElement = headerFragment.getAll('head')[0];
|
|
138
|
+
if (!headElement) {
|
|
139
|
+
elm = headerFragment.getAll('html')[0];
|
|
140
|
+
headElement = new Node('head', 1);
|
|
141
|
+
|
|
142
|
+
if (elm.firstChild)
|
|
143
|
+
elm.insert(headElement, elm.firstChild, true);
|
|
144
|
+
else
|
|
145
|
+
elm.append(headElement);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// Add/update/remove XML-PI
|
|
149
|
+
elm = headerFragment.firstChild;
|
|
150
|
+
if (data.xml_pi) {
|
|
151
|
+
value = 'version="1.0"';
|
|
152
|
+
|
|
153
|
+
if (data.docencoding)
|
|
154
|
+
value += ' encoding="' + data.docencoding + '"';
|
|
155
|
+
|
|
156
|
+
if (elm.type != 7) {
|
|
157
|
+
elm = new Node('xml', 7);
|
|
158
|
+
headerFragment.insert(elm, headerFragment.firstChild, true);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
elm.value = value;
|
|
162
|
+
} else if (elm && elm.type == 7)
|
|
163
|
+
elm.remove();
|
|
164
|
+
|
|
165
|
+
// Add/update/remove doctype
|
|
166
|
+
elm = headerFragment.getAll('#doctype')[0];
|
|
167
|
+
if (data.doctype) {
|
|
168
|
+
if (!elm) {
|
|
169
|
+
elm = new Node('#doctype', 10);
|
|
170
|
+
|
|
171
|
+
if (data.xml_pi)
|
|
172
|
+
headerFragment.insert(elm, headerFragment.firstChild);
|
|
173
|
+
else
|
|
174
|
+
addHeadNode(elm);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
elm.value = data.doctype.substring(9, data.doctype.length - 1);
|
|
178
|
+
} else if (elm)
|
|
179
|
+
elm.remove();
|
|
180
|
+
|
|
181
|
+
// Add/update/remove title
|
|
182
|
+
elm = headerFragment.getAll('title')[0];
|
|
183
|
+
if (data.metatitle) {
|
|
184
|
+
if (!elm) {
|
|
185
|
+
elm = new Node('title', 1);
|
|
186
|
+
elm.append(new Node('#text', 3)).value = data.metatitle;
|
|
187
|
+
addHeadNode(elm);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
// Add meta encoding
|
|
192
|
+
if (data.docencoding) {
|
|
193
|
+
elm = null;
|
|
194
|
+
each(headerFragment.getAll('meta'), function(meta) {
|
|
195
|
+
if (meta.attr('http-equiv') == 'Content-Type')
|
|
196
|
+
elm = meta;
|
|
197
|
+
});
|
|
198
|
+
|
|
199
|
+
if (!elm) {
|
|
200
|
+
elm = new Node('meta', 1);
|
|
201
|
+
elm.attr('http-equiv', 'Content-Type');
|
|
202
|
+
elm.shortEnded = true;
|
|
203
|
+
addHeadNode(elm);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
elm.attr('content', 'text/html; charset=' + data.docencoding);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
// Add/update/remove meta
|
|
210
|
+
each('keywords,description,author,copyright,robots'.split(','), function(name) {
|
|
211
|
+
var nodes = headerFragment.getAll('meta'), i, meta, value = data['meta' + name];
|
|
212
|
+
|
|
213
|
+
for (i = 0; i < nodes.length; i++) {
|
|
214
|
+
meta = nodes[i];
|
|
215
|
+
|
|
216
|
+
if (meta.attr('name') == name) {
|
|
217
|
+
if (value)
|
|
218
|
+
meta.attr('content', value);
|
|
219
|
+
else
|
|
220
|
+
meta.remove();
|
|
221
|
+
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
if (value) {
|
|
227
|
+
elm = new Node('meta', 1);
|
|
228
|
+
elm.attr('name', name);
|
|
229
|
+
elm.attr('content', value);
|
|
230
|
+
elm.shortEnded = true;
|
|
231
|
+
|
|
232
|
+
addHeadNode(elm);
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
|
|
236
|
+
// Add/update/delete link
|
|
237
|
+
elm = headerFragment.getAll('link')[0];
|
|
238
|
+
if (elm && elm.attr('rel') == 'stylesheet') {
|
|
239
|
+
if (data.stylesheet)
|
|
240
|
+
elm.attr('href', data.stylesheet);
|
|
241
|
+
else
|
|
242
|
+
elm.remove();
|
|
243
|
+
} else if (data.stylesheet) {
|
|
244
|
+
elm = new Node('link', 1);
|
|
245
|
+
elm.attr({
|
|
246
|
+
rel : 'stylesheet',
|
|
247
|
+
text : 'text/css',
|
|
248
|
+
href : data.stylesheet
|
|
249
|
+
});
|
|
250
|
+
elm.shortEnded = true;
|
|
251
|
+
|
|
252
|
+
addHeadNode(elm);
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
// Update body attributes
|
|
256
|
+
elm = headerFragment.getAll('body')[0];
|
|
257
|
+
if (elm) {
|
|
258
|
+
setAttr(elm, 'dir', data.langdir);
|
|
259
|
+
setAttr(elm, 'style', data.style);
|
|
260
|
+
setAttr(elm, 'vlink', data.visited_color);
|
|
261
|
+
setAttr(elm, 'link', data.link_color);
|
|
262
|
+
setAttr(elm, 'alink', data.active_color);
|
|
263
|
+
|
|
264
|
+
// Update iframe body as well
|
|
265
|
+
dom.setAttribs(this.editor.getBody(), {
|
|
266
|
+
style : data.style,
|
|
267
|
+
dir : data.dir,
|
|
268
|
+
vLink : data.visited_color,
|
|
269
|
+
link : data.link_color,
|
|
270
|
+
aLink : data.active_color
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
// Set html attributes
|
|
275
|
+
elm = headerFragment.getAll('html')[0];
|
|
276
|
+
if (elm) {
|
|
277
|
+
setAttr(elm, 'lang', data.langcode);
|
|
278
|
+
setAttr(elm, 'xml:lang', data.langcode);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
// Serialize header fragment and crop away body part
|
|
282
|
+
html = new tinymce.html.Serializer({
|
|
283
|
+
validate: false,
|
|
284
|
+
indent: true,
|
|
285
|
+
apply_source_formatting : true,
|
|
286
|
+
indent_before: 'head,html,body,meta,title,script,link,style',
|
|
287
|
+
indent_after: 'head,html,body,meta,title,script,link,style'
|
|
288
|
+
}).serialize(headerFragment);
|
|
289
|
+
|
|
290
|
+
this.head = html.substring(0, html.indexOf('</body>'));
|
|
291
|
+
},
|
|
292
|
+
|
|
293
|
+
_parseHeader : function() {
|
|
294
|
+
// Parse the contents with a DOM parser
|
|
295
|
+
return new tinymce.html.DomParser({
|
|
296
|
+
validate: false,
|
|
297
|
+
root_name: '#document'
|
|
298
|
+
}).parse(this.head);
|
|
299
|
+
},
|
|
300
|
+
|
|
301
|
+
_setContent : function(ed, o) {
|
|
302
|
+
var self = this, startPos, endPos, content = o.content, headerFragment, styles = '', dom = self.editor.dom, elm;
|
|
303
|
+
|
|
304
|
+
function low(s) {
|
|
305
|
+
return s.replace(/<\/?[A-Z]+/g, function(a) {
|
|
306
|
+
return a.toLowerCase();
|
|
307
|
+
})
|
|
308
|
+
};
|
|
309
|
+
|
|
310
|
+
// Ignore raw updated if we already have a head, this will fix issues with undo/redo keeping the head/foot separate
|
|
311
|
+
if (o.format == 'raw' && self.head)
|
|
312
|
+
return;
|
|
313
|
+
|
|
314
|
+
if (o.source_view && ed.getParam('fullpage_hide_in_source_view'))
|
|
315
|
+
return;
|
|
316
|
+
|
|
317
|
+
// Parse out head, body and footer
|
|
318
|
+
content = content.replace(/<(\/?)BODY/gi, '<$1body');
|
|
319
|
+
startPos = content.indexOf('<body');
|
|
320
|
+
|
|
321
|
+
if (startPos != -1) {
|
|
322
|
+
startPos = content.indexOf('>', startPos);
|
|
323
|
+
self.head = low(content.substring(0, startPos + 1));
|
|
324
|
+
|
|
325
|
+
endPos = content.indexOf('</body', startPos);
|
|
326
|
+
if (endPos == -1)
|
|
327
|
+
endPos = content.length;
|
|
328
|
+
|
|
329
|
+
o.content = content.substring(startPos + 1, endPos);
|
|
330
|
+
self.foot = low(content.substring(endPos));
|
|
331
|
+
} else {
|
|
332
|
+
self.head = this._getDefaultHeader();
|
|
333
|
+
self.foot = '\n</body>\n</html>';
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
// Parse header and update iframe
|
|
337
|
+
headerFragment = self._parseHeader();
|
|
338
|
+
each(headerFragment.getAll('style'), function(node) {
|
|
339
|
+
if (node.firstChild)
|
|
340
|
+
styles += node.firstChild.value;
|
|
341
|
+
});
|
|
342
|
+
|
|
343
|
+
elm = headerFragment.getAll('body')[0];
|
|
344
|
+
if (elm) {
|
|
345
|
+
dom.setAttribs(self.editor.getBody(), {
|
|
346
|
+
style : elm.attr('style') || '',
|
|
347
|
+
dir : elm.attr('dir') || '',
|
|
348
|
+
vLink : elm.attr('vlink') || '',
|
|
349
|
+
link : elm.attr('link') || '',
|
|
350
|
+
aLink : elm.attr('alink') || ''
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
if (styles)
|
|
355
|
+
dom.add(self.editor.getDoc().getElementsByTagName('head')[0], 'style', {id : 'fullpage_styles'}, styles);
|
|
356
|
+
else
|
|
357
|
+
dom.remove('fullpage_styles');
|
|
358
|
+
},
|
|
359
|
+
|
|
360
|
+
_getDefaultHeader : function() {
|
|
361
|
+
var header = '', editor = this.editor, value, styles = '';
|
|
362
|
+
|
|
363
|
+
if (editor.getParam('fullpage_default_xml_pi'))
|
|
364
|
+
header += '<?xml version="1.0" encoding="' + editor.getParam('fullpage_default_encoding', 'ISO-8859-1') + '" ?>\n';
|
|
365
|
+
|
|
366
|
+
header += editor.getParam('fullpage_default_doctype', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');
|
|
367
|
+
header += '\n<html>\n<head>\n';
|
|
368
|
+
|
|
369
|
+
if (value = editor.getParam('fullpage_default_title'))
|
|
370
|
+
header += '<title>' + value + '</title>\n';
|
|
371
|
+
|
|
372
|
+
if (value = editor.getParam('fullpage_default_encoding'))
|
|
373
|
+
header += '<meta http-equiv="Content-Type" content="text/html; charset=' + value + '" />\n';
|
|
374
|
+
|
|
375
|
+
if (value = editor.getParam('fullpage_default_font_family'))
|
|
376
|
+
styles += 'font-family: ' + value + ';';
|
|
377
|
+
|
|
378
|
+
if (value = editor.getParam('fullpage_default_font_size'))
|
|
379
|
+
styles += 'font-size: ' + value + ';';
|
|
380
|
+
|
|
381
|
+
if (value = editor.getParam('fullpage_default_text_color'))
|
|
382
|
+
styles += 'color: ' + value + ';';
|
|
383
|
+
|
|
384
|
+
header += '</head>\n<body' + (styles ? ' style="' + styles + '"' : '') + '>\n';
|
|
385
|
+
|
|
386
|
+
return header;
|
|
387
|
+
},
|
|
388
|
+
|
|
389
|
+
_getContent : function(ed, o) {
|
|
390
|
+
var self = this;
|
|
391
|
+
|
|
392
|
+
if (!o.source_view || !ed.getParam('fullpage_hide_in_source_view'))
|
|
393
|
+
o.content = tinymce.trim(self.head) + '\n' + tinymce.trim(o.content) + '\n' + tinymce.trim(self.foot);
|
|
394
|
+
}
|
|
395
|
+
});
|
|
396
|
+
|
|
397
|
+
// Register plugin
|
|
398
|
+
tinymce.PluginManager.add('fullpage', tinymce.plugins.FullPagePlugin);
|
|
399
|
+
})();
|