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
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-
commits(a)objectweb.org mailing list.
To unsubscribe: mailto:xwiki-commits-unsubscribe@objectweb.org
For general help: mailto:sympa@objectweb.org?subject=help
ObjectWeb mailing lists service home page:
http://www.objectweb.org/
wws