You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@clerezza.apache.org by it...@apache.org on 2010/01/13 16:42:22 UTC

svn commit: r898803 - in /incubator/clerezza/issues/CLEREZZA-72: ./ org.apache.clerezza.platform.language/ org.apache.clerezza.platform.language/src/main/java/org/apache/clerezza/platform/language/ org.apache.clerezza.platform.language/src/main/resourc...

Author: ito
Date: Wed Jan 13 15:42:21 2010
New Revision: 898803

URL: http://svn.apache.org/viewvc?rev=898803&view=rev
Log:
CLEREZZA-72: language widget implemented (renders a dropdown box containing available languages)

Added:
    incubator/clerezza/issues/CLEREZZA-72/
    incubator/clerezza/issues/CLEREZZA-72/org.apache.clerezza.platform.language/
      - copied from r898370, incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.language/
    incubator/clerezza/issues/CLEREZZA-72/org.apache.clerezza.platform.language/src/main/java/org/apache/clerezza/platform/language/LanguageWidget.java
    incubator/clerezza/issues/CLEREZZA-72/org.apache.clerezza.platform.language/src/main/resources/org/apache/clerezza/platform/language/language-list.ssp
    incubator/clerezza/issues/CLEREZZA-72/org.apache.clerezza.platform.language/src/main/resources/org/apache/clerezza/platform/language/staticweb/
    incubator/clerezza/issues/CLEREZZA-72/org.apache.clerezza.platform.language/src/main/resources/org/apache/clerezza/platform/language/staticweb/scripts/
    incubator/clerezza/issues/CLEREZZA-72/org.apache.clerezza.platform.language/src/main/resources/org/apache/clerezza/platform/language/staticweb/scripts/language-list.js
    incubator/clerezza/issues/CLEREZZA-72/org.apache.clerezza.rdf.ontologies/
      - copied from r898791, incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.ontologies/
Modified:
    incubator/clerezza/issues/CLEREZZA-72/org.apache.clerezza.platform.language/pom.xml
    incubator/clerezza/issues/CLEREZZA-72/org.apache.clerezza.rdf.ontologies/src/main/resources/org/apache/clerezza/rdf/ontologies/platform.rdf

Modified: incubator/clerezza/issues/CLEREZZA-72/org.apache.clerezza.platform.language/pom.xml
URL: http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-72/org.apache.clerezza.platform.language/pom.xml?rev=898803&r1=898370&r2=898803&view=diff
==============================================================================
--- incubator/clerezza/issues/CLEREZZA-72/org.apache.clerezza.platform.language/pom.xml (original)
+++ incubator/clerezza/issues/CLEREZZA-72/org.apache.clerezza.platform.language/pom.xml Wed Jan 13 15:42:21 2010
@@ -36,11 +36,23 @@
 		</dependency>
 		<dependency>
 			<groupId>org.apache.clerezza</groupId>
+			<artifactId>org.apache.clerezza.platform.typerendering.core</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.clerezza</groupId>
+			<artifactId>org.apache.clerezza.platform.typerendering.scalaserverpages</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.clerezza</groupId>
 			<artifactId>org.apache.clerezza.platform.config</artifactId>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.scr.annotations</artifactId>
 		</dependency>
+		<dependency>
+			<groupId>org.apache.clerezza</groupId>
+			<artifactId>org.apache.clerezza.web.fileserver</artifactId>
+		</dependency>
 	</dependencies>
 </project>
\ No newline at end of file

Added: incubator/clerezza/issues/CLEREZZA-72/org.apache.clerezza.platform.language/src/main/java/org/apache/clerezza/platform/language/LanguageWidget.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-72/org.apache.clerezza.platform.language/src/main/java/org/apache/clerezza/platform/language/LanguageWidget.java?rev=898803&view=auto
==============================================================================
--- incubator/clerezza/issues/CLEREZZA-72/org.apache.clerezza.platform.language/src/main/java/org/apache/clerezza/platform/language/LanguageWidget.java (added)
+++ incubator/clerezza/issues/CLEREZZA-72/org.apache.clerezza.platform.language/src/main/java/org/apache/clerezza/platform/language/LanguageWidget.java Wed Jan 13 15:42:21 2010
@@ -0,0 +1,129 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.clerezza.platform.language;
+
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.List;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.core.MediaType;
+
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Property;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.Service;
+import org.osgi.service.component.ComponentContext;
+import org.apache.clerezza.platform.graphprovider.content.ContentGraphProvider;
+import org.apache.clerezza.platform.typerendering.RenderletManager;
+import org.apache.clerezza.platform.typerendering.scalaserverpages.ScalaServerPagesRenderlet;
+import org.apache.clerezza.rdf.core.BNode;
+import org.apache.clerezza.rdf.core.TripleCollection;
+import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.impl.TripleImpl;
+import org.apache.clerezza.rdf.ontologies.PLATFORM;
+import org.apache.clerezza.rdf.ontologies.RDF;
+import org.apache.clerezza.rdf.utils.RdfList;
+import org.apache.clerezza.web.fileserver.BundlePathNode;
+import org.apache.clerezza.web.fileserver.FileServer;
+import org.apache.felix.scr.annotations.Services;
+import org.osgi.framework.Bundle;
+import org.wymiwyg.commons.util.dirbrowser.PathNode;
+
+/**
+ * Use the LanguageWidget service to store an RDF list of
+ * languages in a triple collection and retrieve the root node of the list. The widget
+ * can be rendered by using the render method. Via javascript function
+ * LanguageList.getLanguage() the currently selected language can be retrieved.
+ *
+ * @author tio
+ */
+@Component
+@Services({
+	@Service(Object.class),
+	@Service(LanguageWidget.class)
+})
+@Property(name = "javax.ws.rs", boolValue = true)
+
+@Path("/language-widget")
+public class LanguageWidget {
+
+	private FileServer fileServer;
+
+	@Reference
+	protected ContentGraphProvider cgProvider;
+	@Reference
+	private RenderletManager renderletManager;
+	@Reference
+	private LanguageService languageService;
+	
+	protected void activate(ComponentContext context)
+			throws IOException,
+			URISyntaxException {
+
+		Bundle bundle = context.getBundleContext().getBundle();
+		URL resourceDir = getClass().getResource("staticweb");
+		PathNode pathNode = new BundlePathNode(bundle, resourceDir.getPath());
+
+		fileServer = new FileServer(pathNode);
+
+		URL template = getClass().getResource("language-list.ssp");
+		renderletManager.registerRenderlet(ScalaServerPagesRenderlet.class.getName(),
+				new UriRef(template.toURI().toString()),
+				PLATFORM.LanguageList, "naked",
+				MediaType.APPLICATION_XHTML_XML_TYPE, true);
+
+	}
+
+	/**
+	 * Stores a list of available languages in a triple collection and returns the
+	 * root node of the list.
+	 *
+	 * @param graph specifies the graph to store the language list
+	 *
+	 * @return BNode
+	 *
+	 */
+	public BNode getLanguagesList(TripleCollection graph) {
+		BNode listNode = new BNode();
+		RdfList list = new RdfList(listNode, graph);
+		List<LanguageDescription> languages = languageService.getLanguages();
+		for (LanguageDescription languageDescription : languages) {
+			list.add(languageDescription.getResource().getNode());
+		}
+		graph.add(new TripleImpl(listNode, RDF.type, PLATFORM.LanguageList));
+		return listNode;
+	}
+
+	/**
+	 * Returns a PathNode of a static file from the staticweb folder.
+	 *
+	 * @param path specifies the path param of a URI
+	 *
+	 * @return {@link PathNode}
+	 */
+	@GET
+	@Path("{path:.+}")
+	public PathNode getStaticFile(@PathParam("path") String path) {
+		return fileServer.getNode(path);
+	}
+}

Added: incubator/clerezza/issues/CLEREZZA-72/org.apache.clerezza.platform.language/src/main/resources/org/apache/clerezza/platform/language/language-list.ssp
URL: http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-72/org.apache.clerezza.platform.language/src/main/resources/org/apache/clerezza/platform/language/language-list.ssp?rev=898803&view=auto
==============================================================================
--- incubator/clerezza/issues/CLEREZZA-72/org.apache.clerezza.platform.language/src/main/resources/org/apache/clerezza/platform/language/language-list.ssp (added)
+++ incubator/clerezza/issues/CLEREZZA-72/org.apache.clerezza.platform.language/src/main/resources/org/apache/clerezza/platform/language/language-list.ssp Wed Jan 13 15:42:21 2010
@@ -0,0 +1,29 @@
+import org.apache.clerezza.rdf.scala.utils.RichGraphNode
+def lingvoj(s: Any) = new UriRef("http://www.lingvoj.org/ontology#"+s)
+def rdfs(s: Any) = new UriRef("http://www.w3.org/2000/01/rdf-schema#"+s)
+def getLabel(language:Language, node:RichGraphNode) : String = {
+	val matchingLabels = for (label <- node/rdfs("label");
+		val labelLiteral = label.getNode.asInstanceOf[PlainLiteral];
+		if (labelLiteral.getLanguage.equals(language))
+	) yield {
+		label*
+	}
+	if (matchingLabels.length == 0) {
+		"no label"
+	} else {
+		matchingLabels.apply(0)
+	}
+}
+resultDocModifier.addScriptReference("/language-widget/scripts/language-list.js")
+val defaultLanguage:Language = new Language(res%!!(0)/lingvoj("iso1")*)
+
+<select name="availablelanguages" id="availablelanguages">
+	<option value={defaultLanguage.toString} selected="selected">{getLabel(defaultLanguage, res%!!(0))}</option>
+	{
+		for(language <- res!!;
+			val iso1 = language/lingvoj("iso1")*;
+			if (!iso1.equals(defaultLanguage.toString))) yield {
+			<option value={iso1}>{getLabel(defaultLanguage,language)}</option>
+		}
+	}
+</select>
\ No newline at end of file

Added: incubator/clerezza/issues/CLEREZZA-72/org.apache.clerezza.platform.language/src/main/resources/org/apache/clerezza/platform/language/staticweb/scripts/language-list.js
URL: http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-72/org.apache.clerezza.platform.language/src/main/resources/org/apache/clerezza/platform/language/staticweb/scripts/language-list.js?rev=898803&view=auto
==============================================================================
--- incubator/clerezza/issues/CLEREZZA-72/org.apache.clerezza.platform.language/src/main/resources/org/apache/clerezza/platform/language/staticweb/scripts/language-list.js (added)
+++ incubator/clerezza/issues/CLEREZZA-72/org.apache.clerezza.platform.language/src/main/resources/org/apache/clerezza/platform/language/staticweb/scripts/language-list.js Wed Jan 13 15:42:21 2010
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * The LanguageList is a global object which provides a function to retrieve
+ * the language selected in the language list widget.
+ * 
+ */
+
+LanguageList = new Object();
+
+
+LanguageList.getLanguage = function() {
+	var language = "";
+	$('#availablelanguages option:selected').each(function() {
+			language =  $(this).val();
+	});
+	return language;
+}

Modified: incubator/clerezza/issues/CLEREZZA-72/org.apache.clerezza.rdf.ontologies/src/main/resources/org/apache/clerezza/rdf/ontologies/platform.rdf
URL: http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-72/org.apache.clerezza.rdf.ontologies/src/main/resources/org/apache/clerezza/rdf/ontologies/platform.rdf?rev=898803&r1=898791&r2=898803&view=diff
==============================================================================
--- incubator/clerezza/issues/CLEREZZA-72/org.apache.clerezza.rdf.ontologies/src/main/resources/org/apache/clerezza/rdf/ontologies/platform.rdf (original)
+++ incubator/clerezza/issues/CLEREZZA-72/org.apache.clerezza.rdf.ontologies/src/main/resources/org/apache/clerezza/rdf/ontologies/platform.rdf Wed Jan 13 15:42:21 2010
@@ -33,8 +33,25 @@
 	<rdfs:isDefinedBy rdf:resource="http://clerezza.org/2009/08/platform#" />
 </rdfs:Class>
 
+<rdfs:Class rdf:about="http://clerezza.org/2009/08/platform#LanguageList">
+     <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
+     <rdfs:label xml:lang="en">Language List</rdfs:label>
+     <skos:definition xml:lang="en">A list containing Lingvoj language uris</skos:definition>
+     <rdfs:isDefinedBy rdf:resource="http://clerezza.org/2009/08/platform#"/>
+</rdfs:Class>
+
 <!-- Properties -->
 
+<rdf:Property rdf:about="http://clerezza.org/2009/08/platform#languages">
+	<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty" />
+	<rdfs:label xml:lang="en">languages</rdfs:label>
+	<skos:definition xml:lang="en">Points to a rdf list containing the languages
+		of the subject. The first langague in the list is the default language.
+		</skos:definition>
+	<rdfs:isDefinedBy rdf:resource="http://clerezza.org/2009/08/platform#" />
+	<rdfs:range rdf:resource="http://clerezza.org/2009/08/platform#LanguageList"/>
+</rdf:Property>
+
 <rdf:Property rdf:about="http://clerezza.org/2009/08/platform#defaultBaseUri">
 	<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty" />
 	<rdfs:label xml:lang="en">defaultBaseUri</rdfs:label>