You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by si...@apache.org on 2008/10/20 12:07:01 UTC

svn commit: r706186 - in /labs/magma/trunk/website-dojo-textareas: ./ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/magma/ src/main/java/org/apache/magma/dojo/ src/main/resources/ src/main/resources...

Author: simoneg
Date: Mon Oct 20 03:07:00 2008
New Revision: 706186

URL: http://svn.apache.org/viewvc?rev=706186&view=rev
Log:
Initial import.

Added:
    labs/magma/trunk/website-dojo-textareas/pom.xml
    labs/magma/trunk/website-dojo-textareas/src/
    labs/magma/trunk/website-dojo-textareas/src/main/
    labs/magma/trunk/website-dojo-textareas/src/main/java/
    labs/magma/trunk/website-dojo-textareas/src/main/java/org/
    labs/magma/trunk/website-dojo-textareas/src/main/java/org/apache/
    labs/magma/trunk/website-dojo-textareas/src/main/java/org/apache/magma/
    labs/magma/trunk/website-dojo-textareas/src/main/java/org/apache/magma/dojo/
    labs/magma/trunk/website-dojo-textareas/src/main/java/org/apache/magma/dojo/InterceptTextareaFields.aj
    labs/magma/trunk/website-dojo-textareas/src/main/resources/
    labs/magma/trunk/website-dojo-textareas/src/main/resources/org/
    labs/magma/trunk/website-dojo-textareas/src/main/resources/org/apache/
    labs/magma/trunk/website-dojo-textareas/src/main/resources/org/apache/magma/
    labs/magma/trunk/website-dojo-textareas/src/main/resources/org/apache/magma/website/
    labs/magma/trunk/website-dojo-textareas/src/main/resources/org/apache/magma/website/dojo/
    labs/magma/trunk/website-dojo-textareas/src/main/resources/org/apache/magma/website/dojo/textareaField.js
    labs/magma/trunk/website-dojo-textareas/src/test/
    labs/magma/trunk/website-dojo-textareas/src/test/java/
    labs/magma/trunk/website-dojo-textareas/src/test/resources/

Added: labs/magma/trunk/website-dojo-textareas/pom.xml
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-dojo-textareas/pom.xml?rev=706186&view=auto
==============================================================================
--- labs/magma/trunk/website-dojo-textareas/pom.xml (added)
+++ labs/magma/trunk/website-dojo-textareas/pom.xml Mon Oct 20 03:07:00 2008
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <parent>
+    <artifactId>magma-parent</artifactId>
+    <groupId>org.apache.magma</groupId>
+    <version>1</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.magma</groupId>
+  <artifactId>website-dojo-textareas</artifactId>
+  <name>Magma Dojo textarea and editor widgets</name>
+  <version>0.0.1-SNAPSHOT</version>
+  <description/>
+  <packaging>magma</packaging>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.magma</groupId>
+      <artifactId>website-dojo-pack</artifactId>
+      <version>0.0.1-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.magma</groupId>
+      <artifactId>website-beansview</artifactId>
+      <version>0.0.1-SNAPSHOT</version>
+    </dependency>
+  </dependencies>
+</project>
\ No newline at end of file

Added: labs/magma/trunk/website-dojo-textareas/src/main/java/org/apache/magma/dojo/InterceptTextareaFields.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-dojo-textareas/src/main/java/org/apache/magma/dojo/InterceptTextareaFields.aj?rev=706186&view=auto
==============================================================================
--- labs/magma/trunk/website-dojo-textareas/src/main/java/org/apache/magma/dojo/InterceptTextareaFields.aj (added)
+++ labs/magma/trunk/website-dojo-textareas/src/main/java/org/apache/magma/dojo/InterceptTextareaFields.aj Mon Oct 20 03:07:00 2008
@@ -0,0 +1,117 @@
+package org.apache.magma.dojo;
+
+import org.apache.magma.beans.PropertyInfo;
+import org.apache.magma.validation.validators.RichTextValidator;
+import org.apache.magma.view.tree.FieldNode;
+import org.apache.magma.view.tree.Node;
+import org.apache.magma.website.beansview.BeanFormProducer;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.StringWriter;
+
+import org.apache.magma.website.HtmlProducer;
+import java.io.OutputStreamWriter;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Set;
+import org.apache.magma.basics.MagmaException;
+import org.apache.magma.website.Head;
+import org.apache.magma.i18n.Formatter;
+
+
+
+
+
+public aspect InterceptTextareaFields {
+	
+	void around(HtmlProducer hp, Head head) :
+		execution(void HtmlProducer+.head(..)) && this(hp) && args(head) {
+		
+		if (hp instanceof BeanFormProducer) {
+			BeanFormProducer producer = (BeanFormProducer)hp;
+			Node root = producer.getBean().beanData().getViewTree(producer.getCustomizer());
+			Set<FieldNode> longNodes = new HashSet<FieldNode>(); 
+			Set<Node> allNodes = root.getAllNodes();
+			for (Node node : allNodes) {
+				if (node instanceof FieldNode) {
+					FieldNode fn = (FieldNode)node;
+					PropertyInfo property = fn.getProperty();
+					if (producer.findInputMaxSize(property) > 256) {
+						longNodes.add(fn);
+					}
+				}
+			}
+			
+			if (longNodes.size() > 0) {
+				head.addExternalScript("magma:/common/onload.js");	
+				head.addExternalScript("magma:/dojo/dojo/dojo.js");
+				head.addExternalScript("magma:/common/dojo/textareaField.js");
+				StringWriter writer = new StringWriter();
+				writer.append("\nfunction initTextareaFields() {\n");
+				for (FieldNode longNode : longNodes) {
+					PropertyInfo prop = longNode.getProperty();
+					RichTextValidator rcv = prop.getValidator().getValidator(RichTextValidator.class);
+					if (rcv == null) {
+						writer.append("setupTextAreaField('");
+						writer.append(longNode.getId());
+						writer.append("');\n");
+					} else {
+						writer.append("setupRichEditorField('");
+						writer.append(longNode.getId());
+						writer.append("',['undo','redo','|','cut','copy','paste','|'");
+						if (rcv.isPermitStrong()) {
+							writer.append(",'bold'");
+						}
+						if (rcv.isPermitEmphasis()) {
+							writer.append(",'italic'");
+						}
+						if (rcv.isPermitScripts()) {
+							writer.append(",'subscript','superscript'");
+						}
+						if (rcv.isPermitColors() || rcv.isPermitBackgroundColors()) {
+							writer.append(",'|'");
+							if (rcv.isPermitColors()) {
+								writer.append(",'foreColor'");
+							}
+							if (rcv.isPermitBackgroundColors()) {
+								writer.append(",'hiliteColor'");
+							}
+						}
+						if (rcv.isPermitHeadings()) {
+							//writer.append(",'|',)
+							// TODO headings plugins
+						}
+						if (rcv.isPermitIndents() || rcv.isPermitJustify()) {
+							writer.append(",'|'");
+							if (rcv.isPermitIndents()) {
+								writer.append(",'indent','outdent'");
+							}
+							if (rcv.isPermitJustify()) {
+								writer.append(",'justifyCenter','justifyFull','justifyLeft','justifyRight'");
+							}
+						}
+						if (rcv.isPermitLists()) {
+							writer.append(",'|','insertOrderedList','insertUnorderedList'");
+						}
+						if (rcv.isPermitLinks()) {
+							writer.append(",'|','createLink', 'unlink'");
+						}
+						if (rcv.isPermitImages()) {
+							writer.append(",'|','insertImage'");
+						}
+						if (rcv.isPermitTables()) {
+							writer.append(",'|',{name: 'dojox.editor.plugins.TablePlugins', command: 'insertTable'}, {name: 'dojox.editor.plugins.TablePlugins', command: 'colorTableCell'}, {name: 'dojox.editor.plugins.TablePlugins', command: 'tableContextMenu'}");
+						}
+						writer.append("]);\n");						
+					}
+				}
+				writer.append(" }\n");
+				writer.append(" addOnload(initTextareaFields);\n");
+				head.addRawScript(producer.getCompletePath() + ":initTextareaFields", writer.toString());
+			}
+		}
+		proceed(hp, head);
+	}
+	
+}

Added: labs/magma/trunk/website-dojo-textareas/src/main/resources/org/apache/magma/website/dojo/textareaField.js
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-dojo-textareas/src/main/resources/org/apache/magma/website/dojo/textareaField.js?rev=706186&view=auto
==============================================================================
--- labs/magma/trunk/website-dojo-textareas/src/main/resources/org/apache/magma/website/dojo/textareaField.js (added)
+++ labs/magma/trunk/website-dojo-textareas/src/main/resources/org/apache/magma/website/dojo/textareaField.js Mon Oct 20 03:07:00 2008
@@ -0,0 +1,29 @@
+	dojo.require("dijit.form.Textarea");
+	dojo.require("dijit.Editor");
+	dojo.require("dijit._editor.plugins.LinkDialog");
+	dojo.require("dijit._editor.plugins.TextColor");
+	dojo.require("dojox.editor.plugins.TablePlugins");
+
+
+	function setupTextAreaField(id) {
+		var targetdom = dojo.byId(id);
+		var acs = targetdom.offsetWidth;
+		var widget = new dijit.form.Textarea({id: id, style: 'width: ' + acs + 'px', name: targetdom.name}, id);
+	}
+
+	function setupRichEditorField(id, plugins) {
+		var targetdom = dojo.byId(id);
+		var acs = targetdom.offsetWidth;
+		var name = targetdom.name;
+		var form = targetdom.form;
+		var widget = new dijit.Editor({id: id, style: 'width: ' + acs + 'px', plugins: plugins, name: name }, id);
+		var hidden = document.createElement("input");
+		hidden.setAttribute("type", "hidden");
+		hidden.setAttribute("name", name);
+		hidden.setAttribute("id", id + "-holder");
+		form.appendChild(hidden);
+		//form.innerHTML += '<input type="hidden" name="' + name + '" id="' + id + '-holder"/>';
+		dojo.connect(form, 'onsubmit', function () {
+			dojo.byId(id + '-holder').value = dijit.byId(id).getValue(false);
+		});
+	}



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org