Update TinyMCE to 3.5.6

This commit is contained in:
Colin Kuskie 2012-08-30 16:00:42 -07:00
parent 4f74c4cd3e
commit 3cfc42d38f
134 changed files with 11869 additions and 7611 deletions

View file

@ -5,6 +5,7 @@ select, #block_text_indent, #box_width, #box_height, #box_padding_top, #box_padd
#box_margin_top, #box_margin_right, #box_margin_bottom, #box_margin_left, #positioning_width, #positioning_height, #positioning_zindex {width:70px;}
#positioning_placement_top, #positioning_placement_right, #positioning_placement_bottom, #positioning_placement_left {width:70px;}
#positioning_clip_top, #positioning_clip_right, #positioning_clip_bottom, #positioning_clip_left {width:70px;}
.panel_toggle_insert_span {padding-top:10px;}
.panel_wrapper div.current {padding-top:10px;height:230px;}
.delim {border-left:1px solid gray;}
.tdelim {border-bottom:1px solid gray;}

View file

@ -1 +1 @@
(function(){tinymce.create("tinymce.plugins.StylePlugin",{init:function(a,b){a.addCommand("mceStyleProps",function(){a.windowManager.open({file:b+"/props.htm",width:480+parseInt(a.getLang("style.delta_width",0)),height:320+parseInt(a.getLang("style.delta_height",0)),inline:1},{plugin_url:b,style_text:a.selection.getNode().style.cssText})});a.addCommand("mceSetElementStyle",function(d,c){if(e=a.selection.getNode()){a.dom.setAttrib(e,"style",c);a.execCommand("mceRepaint")}});a.onNodeChange.add(function(d,c,f){c.setDisabled("styleprops",f.nodeName==="BODY")});a.addButton("styleprops",{title:"style.desc",cmd:"mceStyleProps"})},getInfo:function(){return{longname:"Style",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("style",tinymce.plugins.StylePlugin)})();
(function(){tinymce.create("tinymce.plugins.StylePlugin",{init:function(a,b){a.addCommand("mceStyleProps",function(){var c=false;var f=a.selection.getSelectedBlocks();var d=[];if(f.length===1){d.push(a.selection.getNode().style.cssText)}else{tinymce.each(f,function(g){d.push(a.dom.getAttrib(g,"style"))});c=true}a.windowManager.open({file:b+"/props.htm",width:480+parseInt(a.getLang("style.delta_width",0)),height:340+parseInt(a.getLang("style.delta_height",0)),inline:1},{applyStyleToBlocks:c,plugin_url:b,styles:d})});a.addCommand("mceSetElementStyle",function(d,c){if(e=a.selection.getNode()){a.dom.setAttrib(e,"style",c);a.execCommand("mceRepaint")}});a.onNodeChange.add(function(d,c,f){c.setDisabled("styleprops",f.nodeName==="BODY")});a.addButton("styleprops",{title:"style.desc",cmd:"mceStyleProps"})},getInfo:function(){return{longname:"Style",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("style",tinymce.plugins.StylePlugin)})();

View file

@ -13,14 +13,30 @@
init : function(ed, url) {
// Register commands
ed.addCommand('mceStyleProps', function() {
var applyStyleToBlocks = false;
var blocks = ed.selection.getSelectedBlocks();
var styles = [];
if (blocks.length === 1) {
styles.push(ed.selection.getNode().style.cssText);
}
else {
tinymce.each(blocks, function(block) {
styles.push(ed.dom.getAttrib(block, 'style'));
});
applyStyleToBlocks = true;
}
ed.windowManager.open({
file : url + '/props.htm',
width : 480 + parseInt(ed.getLang('style.delta_width', 0)),
height : 320 + parseInt(ed.getLang('style.delta_height', 0)),
height : 340 + parseInt(ed.getLang('style.delta_height', 0)),
inline : 1
}, {
applyStyleToBlocks : applyStyleToBlocks,
plugin_url : url,
style_text : ed.selection.getNode().style.cssText
styles : styles
});
});
@ -52,4 +68,4 @@
// Register plugin
tinymce.PluginManager.add('style', tinymce.plugins.StylePlugin);
})();
})();

View file

@ -27,10 +27,41 @@ var defaultBorderStyle = "none;solid;dashed;dotted;double;groove;ridge;inset;out
var defaultBorderWidth = "thin;medium;thick";
var defaultListType = "disc;circle;square;decimal;lower-roman;upper-roman;lower-alpha;upper-alpha;none";
function init() {
function aggregateStyles(allStyles) {
var mergedStyles = {};
tinymce.each(allStyles, function(style) {
if (style !== '') {
var parsedStyles = tinyMCEPopup.editor.dom.parseStyle(style);
for (var name in parsedStyles) {
if (parsedStyles.hasOwnProperty(name)) {
if (mergedStyles[name] === undefined) {
mergedStyles[name] = parsedStyles[name];
}
else if (name === 'text-decoration') {
if (mergedStyles[name].indexOf(parsedStyles[name]) === -1) {
mergedStyles[name] = mergedStyles[name] +' '+ parsedStyles[name];
}
}
}
}
}
});
return mergedStyles;
}
var applyActionIsInsert;
var existingStyles;
function init(ed) {
var ce = document.getElementById('container'), h;
ce.style.cssText = tinyMCEPopup.getWindowArg('style_text');
existingStyles = aggregateStyles(tinyMCEPopup.getWindowArg('styles'));
ce.style.cssText = tinyMCEPopup.editor.dom.serializeStyle(existingStyles);
applyActionIsInsert = ed.getParam("edit_css_style_insert_span", false);
document.getElementById('toggle_insert_span').checked = applyActionIsInsert;
h = getBrowserHTML('background_image_browser','background_image','image','advimage');
document.getElementById("background_image_browser").innerHTML = h;
@ -144,6 +175,8 @@ function setupFormData() {
f.text_overline.checked = inStr(ce.style.textDecoration, 'overline');
f.text_linethrough.checked = inStr(ce.style.textDecoration, 'line-through');
f.text_blink.checked = inStr(ce.style.textDecoration, 'blink');
f.text_none.checked = inStr(ce.style.textDecoration, 'none');
updateTextDecorations();
// Setup background fields
@ -366,13 +399,41 @@ function hasEqualValues(a) {
return true;
}
function toggleApplyAction() {
applyActionIsInsert = ! applyActionIsInsert;
}
function applyAction() {
var ce = document.getElementById('container'), ed = tinyMCEPopup.editor;
generateCSS();
tinyMCEPopup.restoreSelection();
ed.dom.setAttrib(ed.selection.getNode(), 'style', tinyMCEPopup.editor.dom.serializeStyle(tinyMCEPopup.editor.dom.parseStyle(ce.style.cssText)));
var newStyles = tinyMCEPopup.editor.dom.parseStyle(ce.style.cssText);
if (applyActionIsInsert) {
ed.formatter.register('plugin_style', {
inline: 'span', styles: existingStyles
});
ed.formatter.remove('plugin_style');
ed.formatter.register('plugin_style', {
inline: 'span', styles: newStyles
});
ed.formatter.apply('plugin_style');
} else {
var nodes;
if (tinyMCEPopup.getWindowArg('applyStyleToBlocks')) {
nodes = ed.selection.getSelectedBlocks();
}
else {
nodes = ed.selection.getNode();
}
ed.dom.setAttrib(nodes, 'style', tinyMCEPopup.editor.dom.serializeStyle(newStyles));
}
}
function updateAction() {
@ -632,4 +693,17 @@ function synch(fr, to) {
selectByValue(f, to + "_measurement", f.elements[fr + "_measurement"].value);
}
function updateTextDecorations(){
var el = document.forms[0].elements;
var textDecorations = ["text_underline", "text_overline", "text_linethrough", "text_blink"];
var noneChecked = el["text_none"].checked;
tinymce.each(textDecorations, function(id) {
el[id].disabled = noneChecked;
if (noneChecked) {
el[id].checked = false;
}
});
}
tinyMCEPopup.onInit.add(init);

View file

@ -1 +1 @@
tinyMCE.addI18n('en.style_dlg',{"text_lineheight":"Line height","text_variant":"Variant","text_style":"Style","text_weight":"Weight","text_size":"Size","text_font":"Font","text_props":"Text","positioning_tab":"Positioning","list_tab":"List","border_tab":"Border","box_tab":"Box","block_tab":"Block","background_tab":"Background","text_tab":"Text",apply:"Apply",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility","positioning_type":"Type",position:"Position","bullet_image":"Bullet image","list_type":"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for all",padding:"Padding","box_clear":"Clear","box_float":"Float","box_height":"Height","box_width":"Width","block_display":"Display","block_whitespace":"Whitespace","block_text_indent":"Text indent","block_text_align":"Text align","block_vertical_alignment":"Vertical alignment","block_letterspacing":"Letter spacing","block_wordspacing":"Word spacing","background_vpos":"Vertical position","background_hpos":"Horizontal position","background_attachment":"Attachment","background_repeat":"Repeat","background_image":"Background image","background_color":"Background color","text_none":"none","text_blink":"blink","text_case":"Case","text_striketrough":"strikethrough","text_underline":"underline","text_overline":"overline","text_decoration":"Decoration","text_color":"Color"});
tinyMCE.addI18n('en.style_dlg',{"text_lineheight":"Line Height","text_variant":"Variant","text_style":"Style","text_weight":"Weight","text_size":"Size","text_font":"Font","text_props":"Text","positioning_tab":"Positioning","list_tab":"List","border_tab":"Border","box_tab":"Box","block_tab":"Block","background_tab":"Background","text_tab":"Text",apply:"Apply",toggle_insert_span:"Insert span at selection",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility","positioning_type":"Type",position:"Position","bullet_image":"Bullet Image","list_type":"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for All",padding:"Padding","box_clear":"Clear","box_float":"Float","box_height":"Height","box_width":"Width","block_display":"Display","block_whitespace":"Whitespace","block_text_indent":"Text Indent","block_text_align":"Text Align","block_vertical_alignment":"Vertical Alignment","block_letterspacing":"Letter Spacing","block_wordspacing":"Word Spacing","background_vpos":"Vertical Position","background_hpos":"Horizontal Position","background_attachment":"Attachment","background_repeat":"Repeat","background_image":"Background Image","background_color":"Background Color","text_none":"None","text_blink":"Blink","text_case":"Case","text_striketrough":"Strikethrough","text_underline":"Underline","text_overline":"Overline","text_decoration":"Decoration","text_color":"Color",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"});

View file

@ -118,7 +118,7 @@
<td><label for="text_blink">{#style_dlg.text_blink}</label></td>
</tr>
<tr>
<td><input id="text_none" name="text_none" class="checkbox" type="checkbox" /></td>
<td><input id="text_none" name="text_none" class="checkbox" type="checkbox" onclick="updateTextDecorations();"/></td>
<td><label for="text_none">{#style_dlg.text_none}</label></td>
</tr>
</table>
@ -316,6 +316,8 @@
<td><select id="box_clear" name="box_clear" class="mceEditableSelect"></select></td>
</tr>
</table>
</fieldset>
<div style="float: left; width: 49%">
<fieldset>
<legend>{#style_dlg.padding}</legend>
@ -672,6 +674,7 @@
<td><select id="positioning_overflow" name="positioning_overflow" class="mceEditableSelect"></select></td>
</tr>
</table>
</fieldset>
<div style="float: left; width: 49%">
<fieldset>
@ -820,7 +823,11 @@
</div>
<br style="clear: both" />
</div>
</fieldset>
</div>
<div class="panel_toggle_insert_span">
<input type="checkbox" class="checkbox" id="toggle_insert_span" name="toggle_insert_span" onClick="toggleApplyAction();" />
<label for="toggle_insert_span">{#style_dlg.toggle_insert_span}</label>
</div>
<div class="mceActionPanel">

View file

@ -0,0 +1,19 @@
Edit CSS Style plug-in notes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Unlike WYSIWYG editor functionality that operates only on the selected text,
typically by inserting new HTML elements with the specified styles.
This plug-in operates on the HTML blocks surrounding the selected text.
No new HTML elements are created.
This plug-in only operates on the surrounding blocks and not the nearest
parent node. This means that if a block encapsulates a node,
e.g <p><span>text</span></p>, then only the styles in the block are
recognized, not those in the span.
When selecting text that includes multiple blocks at the same level (peers),
this plug-in accumulates the specified styles in all of the surrounding blocks
and populates the dialogue checkboxes accordingly. There is no differentiation
between styles set in all the blocks versus styles set in some of the blocks.
When the [Update] or [Apply] buttons are pressed, the styles selected in the
checkboxes are applied to all blocks that surround the selected text.