Re: [xwiki-commits] r4015 - in xwiki-platform: core/trunk/src/main/java/com/xpn/xwiki/render/macro web/trunk/standard/src/main/webapp/tiny_mce/themes/wikieditor web/trunk/standard/src/main/webapp/tiny_mce/themes/wikieditor/images web/trunk/standard/src/main/webapp/wiki_editor web/trunk/standard/src/main/webapp/wiki_editor/plugins web/trunk/standard/src/main/webapp/wiki_editor/themes
Hi Nam, You've modified the style macro to add a new align parameter. For this you need: 1) A separate JIRA issue! 2) To update the documentation on http://www.xwiki.org/xwiki/bin/view/ Code/StyleMacro Can you please implement both? Thanks -Vincent On Jul 24, 2007, at 1:25 PM, Phung Hai Nam wrote:
Author: namphunghai Date: 2007-07-24 13:25:45 +0200 (Tue, 24 Jul 2007) New Revision: 4015
Added: xwiki-platform/web/trunk/standard/src/main/webapp/tiny_mce/ themes/wikieditor/images/justifycenter.gif xwiki-platform/web/trunk/standard/src/main/webapp/tiny_mce/ themes/wikieditor/images/justifyfull.gif xwiki-platform/web/trunk/standard/src/main/webapp/tiny_mce/ themes/wikieditor/images/justifyleft.gif xwiki-platform/web/trunk/standard/src/main/webapp/tiny_mce/ themes/wikieditor/images/justifyright.gif Modified: xwiki-platform/core/trunk/src/main/java/com/xpn/xwiki/render/ macro/StyleMacro.java xwiki-platform/web/trunk/standard/src/main/webapp/tiny_mce/ themes/wikieditor/editor_template.js xwiki-platform/web/trunk/standard/src/main/webapp/wiki_editor/ plugins/core.js xwiki-platform/web/trunk/standard/src/main/webapp/wiki_editor/ themes/default.js xwiki-platform/web/trunk/standard/src/main/webapp/wiki_editor/ wiki_editor.js Log: Fixed XWIKI 370 : to be able to justify text left center right full
Modified: xwiki-platform/core/trunk/src/main/java/com/xpn/xwiki/ render/macro/StyleMacro.java =================================================================== --- xwiki-platform/core/trunk/src/main/java/com/xpn/xwiki/render/ macro/StyleMacro.java 2007-07-24 07:42:22 UTC (rev 4014) +++ xwiki-platform/core/trunk/src/main/java/com/xpn/xwiki/render/ macro/StyleMacro.java 2007-07-24 11:25:45 UTC (rev 4015) @@ -50,6 +50,7 @@ String type = params.get("type"); String id = params.get("id"); String classes = params.get("class"); + String align = params.get("align"); String name = params.get("name"); String size = params.get("font-size"); String font = params.get("font-family"); @@ -117,6 +118,9 @@ if ((!"none".equals(name)) && (name != null) && (!"".equals (name.trim()))) { str.append("name=\"" + name.trim() + "\" "); } + if ((!"none".equals(align)) && (align != null) && (!"".equals(align.trim()))) { + str.append("align=\"" + align.trim() + "\" "); + }
str.append("style=\"");
Modified: xwiki-platform/web/trunk/standard/src/main/webapp/ tiny_mce/themes/wikieditor/editor_template.js =================================================================== --- xwiki-platform/web/trunk/standard/src/main/webapp/tiny_mce/ themes/wikieditor/editor_template.js 2007-07-24 07:42:22 UTC (rev 4014) +++ xwiki-platform/web/trunk/standard/src/main/webapp/tiny_mce/ themes/wikieditor/editor_template.js 2007-07-24 11:25:45 UTC (rev 4015) @@ -258,8 +258,59 @@ template['height'] = 250;
tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"}); - return true; + return true;
+ case "JustifyLeft": + var focusElm = tinyMCE.selectedInstance.getFocusElement(); + if (focusElm && (focusElm.nodeName == "P")) { + tinyMCE.execInstanceCommand(editor_id, "FormatBlock", false, "<div>"); + var selectedElm = tinyMCE.selectedInstance.selection.getFocusElement(); + selectedElm.setAttribute('align', 'left'); + } else { + return wikiEditor.execCommand(editor_id, element, "justifyLeft", user_interface, value); + } + tinyMCE.triggerNodeChange(); + return true; + + case "JustifyCenter": + + var focusElm = tinyMCE.selectedInstance.getFocusElement(); + if (focusElm && (focusElm.nodeName == "P")) { + tinyMCE.execInstanceCommand(editor_id, "FormatBlock", false, "<div>"); + var selectedElm = tinyMCE.selectedInstance.selection.getFocusElement(); + selectedElm.setAttribute('align', 'center'); + } else { + return wikiEditor.execCommand(editor_id, element, "justifyCenter", user_interface, value); + } + tinyMCE.triggerNodeChange(); + return true; + + case "JustifyRight": + + var focusElm = tinyMCE.selectedInstance.getFocusElement(); + if (focusElm && (focusElm.nodeName == "P")) { + tinyMCE.execInstanceCommand(editor_id, "FormatBlock", false, "<div>"); + var selectedElm = tinyMCE.selectedInstance.selection.getFocusElement(); + selectedElm.setAttribute('align', 'right'); + } else { + return wikiEditor.execCommand(editor_id, element, "justifyRight", user_interface, value); + } + tinyMCE.triggerNodeChange(); + return true; + + case "JustifyFull": + + var focusElm = tinyMCE.selectedInstance.getFocusElement(); + if (focusElm && (focusElm.nodeName == "P")) { + tinyMCE.execInstanceCommand(editor_id, "FormatBlock", false, "<div>"); + var selectedElm = tinyMCE.selectedInstance.selection.getFocusElement(); + selectedElm.setAttribute('align', 'justify'); + } else { + return wikiEditor.execCommand(editor_id, element, "justifyFull", user_interface, value); + } + tinyMCE.triggerNodeChange(); + return true; + default : return wikiEditor.execCommand(editor_id, element, command, user_interface, value); }
Added: xwiki-platform/web/trunk/standard/src/main/webapp/tiny_mce/ themes/wikieditor/images/justifycenter.gif =================================================================== (Binary files differ)
Property changes on: xwiki-platform/web/trunk/standard/src/main/ webapp/tiny_mce/themes/wikieditor/images/justifycenter.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream
Added: xwiki-platform/web/trunk/standard/src/main/webapp/tiny_mce/ themes/wikieditor/images/justifyfull.gif =================================================================== (Binary files differ)
Property changes on: xwiki-platform/web/trunk/standard/src/main/ webapp/tiny_mce/themes/wikieditor/images/justifyfull.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream
Added: xwiki-platform/web/trunk/standard/src/main/webapp/tiny_mce/ themes/wikieditor/images/justifyleft.gif =================================================================== (Binary files differ)
Property changes on: xwiki-platform/web/trunk/standard/src/main/ webapp/tiny_mce/themes/wikieditor/images/justifyleft.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream
Added: xwiki-platform/web/trunk/standard/src/main/webapp/tiny_mce/ themes/wikieditor/images/justifyright.gif =================================================================== (Binary files differ)
Property changes on: xwiki-platform/web/trunk/standard/src/main/ webapp/tiny_mce/themes/wikieditor/images/justifyright.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream
Modified: xwiki-platform/web/trunk/standard/src/main/webapp/ wiki_editor/plugins/core.js =================================================================== --- xwiki-platform/web/trunk/standard/src/main/webapp/wiki_editor/ plugins/core.js 2007-07-24 07:42:22 UTC (rev 4014) +++ xwiki-platform/web/trunk/standard/src/main/webapp/wiki_editor/ plugins/core.js 2007-07-24 11:25:45 UTC (rev 4015) @@ -80,6 +80,7 @@ this.addToolbarHandler('handleHorizontalRuleButtons'); this.addToolbarHandler('handleSupAndSubButons'); this.addToolbarHandler('handleTableButtons'); + this.addToolbarHandler('handleAlignButtons');
// Add Comands and Fix Commands(workarounds) this.addCommand('Title', 'titleCommand'); @@ -392,6 +393,47 @@ tinyMCE.switchClass(editor_id + '_table', 'mceButtonNormal', false); }
+WikiEditor.prototype.handleAlignButtons = function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) { + tinyMCE.switchClass(editor_id + '_justifyleft', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_justifyright', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_justifycenter', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_justifyfull', 'mceButtonNormal'); + + var alignNode = node; + var breakOut = false; + do { + if (!alignNode.getAttribute || !alignNode.getAttribute ('align')) + continue; + + switch (alignNode.getAttribute('align').toLowerCase()) { + case "left": + tinyMCE.switchClass(editor_id + '_justifyleft', 'mceButtonSelected'); + breakOut = true; + break; + + case "right": + tinyMCE.switchClass(editor_id + '_justifyright', 'mceButtonSelected'); + breakOut = true; + break; + + case "middle": + case "center": + tinyMCE.switchClass(editor_id + '_justifycenter', 'mceButtonSelected'); + breakOut = true; + break; + + case "justify": + tinyMCE.switchClass(editor_id + '_justifyfull', 'mceButtonSelected'); + breakOut = true; + break; + } + } while (!breakOut && (alignNode = alignNode.parentNode) != null); + + var div = tinyMCE.getParentElement(node, "div"); + if (div && div.style.textAlign == "center") + tinyMCE.switchClass(editor_id + '_justifycenter', 'mceButtonSelected'); +} + WikiEditor.prototype.handleTitlesList = function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) { var list = document.getElementById(editor_id + "_titleSelect"); if(list) { @@ -578,6 +620,29 @@ return str; }
+WikiEditor.prototype.getJustifyToolbar = function() { + return this.getJustifyControls('justifyleft') + this.getJustifyControls('justifycenter') + this.getJustifyControls ('justifyright') + this.getJustifyControls('justifyfull'); +} + +WikiEditor.prototype.getJustifyControls = function(button_name) { + var str = ""; + switch (button_name) { + case 'justifyleft': + str = this.createButtonHTML('justifyleft', 'justifyleft.gif', 'lang_justifyleft_desc', 'JustifyLeft'); + break; + case 'justifycenter': + str = this.createButtonHTML('justifycenter', 'justifycenter.gif', 'lang_justifycenter_desc', 'JustifyCenter'); + break; + case 'justifyright' : + str = this.createButtonHTML('justifyright', 'justifyright.gif', 'lang_justifyright_desc', 'JustifyRight'); + break; + case 'justifyfull' : + str = this.createButtonHTML('justifyfull', 'justifyfull.gif', 'lang_justifyfull_desc', 'JustifyFull'); + break; + } + return str; +} + WikiEditor.prototype.getSupAndSubToolbar = function() { return this.getSupAndSubControls('sup') + this.getSupAndSubControls('sub'); } @@ -705,6 +770,7 @@ '<option value="3">{$lang_wiki_title_3}</option>' + '<option value="4">{$lang_wiki_title_4}</option>' + '<option value="5">{$lang_wiki_title_5}</option>' + + '<option value="6">{$lang_wiki_title_6}</option>' + '</select>'; }
@@ -1130,7 +1196,7 @@ WikiEditor.prototype.convertStyleExternal = function(regexp, result, content) { var str = ""; var atts = result[1].split("|"); - var tag = "font", style = "", myclass = "", id = "", name = "", doc = ""; + var tag = "font", style = "", myclass = "", id = "", name = "", doc = "", align = ""; var hasIcon = false; for (var i=0; i < atts.length; i++) { var att = this.trimString(atts[i].substring(0, atts [i].indexOf("="))); @@ -1147,6 +1213,9 @@ else if (att == "type") { tag = value; } + else if (att == "align") { + align = value; + } else if (att == "icon") { style += "background-image: url(" + value + ");"; hasIcon = true; @@ -1166,6 +1235,9 @@ if (name != "") { str += " name=\"" + name + "\""; } + if (align != "") { + str += " align=\"" + align + "\""; + } if (style != "") { str += " style=\"" + style + "\""; } @@ -1193,6 +1265,9 @@ if (attributes["id"]) { str += "|id=" + attributes["id"] ; } + if (attributes["align"]) { + str += "|align=" + attributes["align"] ; + } if (attributes["class"] && attributes["class"] != "stylemacro") { str += "|class=" + attributes["class"] ; }
Modified: xwiki-platform/web/trunk/standard/src/main/webapp/ wiki_editor/themes/default.js =================================================================== --- xwiki-platform/web/trunk/standard/src/main/webapp/wiki_editor/ themes/default.js 2007-07-24 07:42:22 UTC (rev 4014) +++ xwiki-platform/web/trunk/standard/src/main/webapp/wiki_editor/ themes/default.js 2007-07-24 11:25:45 UTC (rev 4015) @@ -21,6 +21,9 @@ case "texttoolbar": str += this.getTextToolbar(); break; + case "justifytoolbar": + str += this.TOOLBAR_SPACER + this.getJustifyToolbar (); + break; case "listtoolbar": str += this.TOOLBAR_SPACER + this.getListToolbar(); break;
Modified: xwiki-platform/web/trunk/standard/src/main/webapp/ wiki_editor/wiki_editor.js =================================================================== --- xwiki-platform/web/trunk/standard/src/main/webapp/wiki_editor/ wiki_editor.js 2007-07-24 07:42:22 UTC (rev 4014) +++ xwiki-platform/web/trunk/standard/src/main/webapp/wiki_editor/ wiki_editor.js 2007-07-24 11:25:45 UTC (rev 4015) @@ -76,7 +76,7 @@ params["use_linkeditor_tabs"] = "wiki_tab, web_tab, attachments_tab, email_tab, file_tab"; } if((params["wiki_editor_toolbar"] == null) || (params ["wiki_editor_toolbar"].toString() == "")) { - params["wiki_editor_toolbar"] = "texttoolbar, listtoolbar, indenttoolbar, undotoolbar, titletoolbar, styletoolbar, " + params["wiki_editor_toolbar"] = "texttoolbar, justifytoolbar, listtoolbar, indenttoolbar, undotoolbar, titletoolbar, styletoolbar, " + "horizontaltoolbar, symboltoolbar, attachmenttoolbar, macrostoolbar, tabletoolbar, " + "tablerowtoolbar, tablecoltoolbar, linktoolbar"; }
-- You receive this message as a subscriber of the xwiki- [email protected] mailing list. To unsubscribe: mailto:[email protected] For general help: mailto:[email protected]?subject=help ObjectWeb mailing lists service home page: http://www.objectweb.org/ wws
participants (1)
-
Vincent Massol