You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by ch...@apache.org on 2008/06/05 09:31:33 UTC

svn commit: r663490 - in /incubator/shindig/trunk/php/src: common/ gadgets/ gadgets/http/

Author: chabotc
Date: Thu Jun  5 00:31:33 2008
New Revision: 663490

URL: http://svn.apache.org/viewvc?rev=663490&view=rev
Log:
SHINDIG-335 implements inline message bundles

Added:
    incubator/shindig/trunk/php/src/gadgets/LocaleMessageBundle.php
Modified:
    incubator/shindig/trunk/php/src/common/Locale.php
    incubator/shindig/trunk/php/src/gadgets/GadgetServer.php
    incubator/shindig/trunk/php/src/gadgets/GadgetSpecParser.php
    incubator/shindig/trunk/php/src/gadgets/LocaleSpec.php
    incubator/shindig/trunk/php/src/gadgets/http/GadgetRenderingServlet.php
    incubator/shindig/trunk/php/src/gadgets/http/JsonRpcServlet.php

Modified: incubator/shindig/trunk/php/src/common/Locale.php
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/common/Locale.php?rev=663490&r1=663489&r2=663490&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/common/Locale.php (original)
+++ incubator/shindig/trunk/php/src/common/Locale.php Thu Jun  5 00:31:33 2008
@@ -1,4 +1,22 @@
 <?php
+/*
+ * 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.
+ *
+ */
 
 /**
  * Locale class doesn't exist in php, so to allow the code base to be closer to the java and it's spec
@@ -31,4 +49,5 @@
 	{
 		return $this->country;
 	}
+
 }
\ No newline at end of file

Modified: incubator/shindig/trunk/php/src/gadgets/GadgetServer.php
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/gadgets/GadgetServer.php?rev=663490&r1=663489&r2=663490&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/gadgets/GadgetServer.php (original)
+++ incubator/shindig/trunk/php/src/gadgets/GadgetServer.php Thu Jun  5 00:31:33 2008
@@ -15,7 +15,7 @@
  * "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.
- * 
+ *
  */
 
 /*
@@ -47,7 +47,7 @@
 		return $gadget;
 	}
 
-	private function getBundle($localeSpec, $context)
+	private function getBundle(LocaleSpec $localeSpec=null, $context)
 	{
 		if ($localeSpec != null) {
 			$uri = $localeSpec->getURI();
@@ -57,6 +57,12 @@
 				$parser = new MessageBundleParser();
 				$bundle = $parser->parse($response->getResponseContent());
 				return $bundle;
+			} else {
+				$messages = array();
+				foreach ($localeSpec->getLocaleMessageBundles() as $messageBundle) {
+					$messages[$messageBundle->getName()] = $messageBundle->getDesc();
+				}
+				return new MessageBundle($messages);
 			}
 		}
 		return null;
@@ -95,24 +101,24 @@
 		//NOTE i've been a bit liberal here with folding code into this function, while it did get a bit long, the many include()'s are slowing us down
 		// Should really clean this up a bit in the future though
 		$localeSpec = $this->getLocaleSpec($gadget, $context);
-		
+
 		// get the message bundle for this gadget
 		$bundle = $this->getBundle($localeSpec, $context);
-		
+
 		//FIXME this is a half-assed solution between following the refactoring and maintaining some of the old code, fixing this up later
 		$gadget->setMessageBundle($bundle);
-		
+
 		// perform substitutions
 		$substitutor = $gadget->getSubstitutions();
-		
+
 		// Module ID
 		$substitutor->addSubstitution('MODULE', "ID", $gadget->getId()->getModuleId());
-		
+
 		// Messages (multi-language)
 		if ($bundle) {
 			$gadget->getSubstitutions()->addSubstitutions('MSG', $bundle->getMessages());
 		}
-		
+
 		// Bidi support
 		$rtl = false;
 		if ($localeSpec != null) {
@@ -122,7 +128,7 @@
 		$substitutor->addSubstitution('BIDI', "END_EDGE", $rtl ? "left" : "right");
 		$substitutor->addSubstitution('BIDI', "DIR", $rtl ? "rtl" : "ltr");
 		$substitutor->addSubstitution('BIDI', "REVERSE_DIR", $rtl ? "ltr" : "rtl");
-		
+
 		// userPref's
 		$upValues = $gadget->getUserPrefValues();
 		foreach ($gadget->getUserPrefs() as $pref) {
@@ -136,7 +142,7 @@
 			}
 			$substitutor->addSubstitution('USER_PREF', $name, $value);
 		}
-		
+
 		// Process required / desired features
 		$requires = $gadget->getRequires();
 		$needed = array();

Modified: incubator/shindig/trunk/php/src/gadgets/GadgetSpecParser.php
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/gadgets/GadgetSpecParser.php?rev=663490&r1=663489&r2=663490&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/gadgets/GadgetSpecParser.php (original)
+++ incubator/shindig/trunk/php/src/gadgets/GadgetSpecParser.php Thu Jun  5 00:31:33 2008
@@ -15,7 +15,7 @@
  * "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.
- * 
+ *
  */
 
 class SpecParserException extends Exception {}
@@ -61,7 +61,7 @@
 			throw new SpecParserException("Missing or empty \"title\" attribute.");
 		}
 		// Get ModulePrefs base and extended attributes
-		// See http://code.google.com/apis/gadgets/docs/gadgets-extended-xsd.html 
+		// See http://code.google.com/apis/gadgets/docs/gadgets-extended-xsd.html
 		// (trim is used here since it not only cleans up the text, but also auto-casts the SimpleXMLElement to a string)
 		$gadget->title = trim($attributes['title']);
 		$gadget->author = isset($attributes['author']) ? trim($attributes['author']) : '';
@@ -102,10 +102,25 @@
 		$countryAttr = isset($attributes['country']) ? trim($attributes['country']) : 'all';
 		$rtlAttr = isset($attributes['language_direction']) ? trim($attributes['language_direction']) : '';
 		$rightToLeft = $rtlAttr == 'rtl';
+		$localeMessageBundles = array();
+		if ($messageAttr == '') {
+			$messageBundle = $locale->messagebundle;
+			if (!empty($messageBundle)) {
+				$messageName = $messageBundle->msg;
+				if (!empty($messageName)) {
+					foreach ($messageName as $name) {
+						$attrs = $name->attributes();
+						$localeMessageBundle = new LocalMessageBundle((string)$attrs['name'], (string)$name);
+						$localeMessageBundles[] = $localeMessageBundle;
+					}
+				}
+			}
+		}
 		$locale = new LocaleSpec();
 		$locale->rightToLeft = $rightToLeft;
 		//FIXME java seems to use a baseurl here, probably for the http:// part but i'm not sure yet. Should verify behavior later to see if i got it right
 		$locale->url = $messageAttr;
+		$locale->localeMessageBundles = $localeMessageBundles;
 		$locale->locale = new Locale($languageAttr, $countryAttr);
 		return $locale;
 	}
@@ -127,7 +142,7 @@
 				$attr = $enum->attributes();
 				// java based shindig doesn't throw an exception here, but it -is- invalid and should trigger a parse error?
 				/*if (empty($attr['value'])) {
-					throw new SpecParserException("EnumValue must have a value field.");
+				throw new SpecParserException("EnumValue must have a value field.");
 				}*/
 				$valueText = trim($attr['value']);
 				$displayText = ! empty($attr['display_value']) ? trim($attr['display_value']) : $valueText;

Added: incubator/shindig/trunk/php/src/gadgets/LocaleMessageBundle.php
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/gadgets/LocaleMessageBundle.php?rev=663490&view=auto
==============================================================================
--- incubator/shindig/trunk/php/src/gadgets/LocaleMessageBundle.php (added)
+++ incubator/shindig/trunk/php/src/gadgets/LocaleMessageBundle.php Thu Jun  5 00:31:33 2008
@@ -0,0 +1,40 @@
+<?php
+/*
+ * 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.
+ *
+ */
+
+/**
+ * Used by the LocaleSpec to extract from the xml the locales inline
+ * */
+class LocalMessageBundle {
+	private $name;
+	private $desc;
+
+	public function __construct($name, $desc) {
+		$this->name = $name;
+		$this->desc = $desc;
+	}
+
+	public function getName() {
+		return $this->name;
+	}
+
+	public function getDesc() {
+		return $this->desc;
+	}
+}
\ No newline at end of file

Modified: incubator/shindig/trunk/php/src/gadgets/LocaleSpec.php
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/gadgets/LocaleSpec.php?rev=663490&r1=663489&r2=663490&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/gadgets/LocaleSpec.php (original)
+++ incubator/shindig/trunk/php/src/gadgets/LocaleSpec.php Thu Jun  5 00:31:33 2008
@@ -15,13 +15,18 @@
  * "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.
- * 
+ *
  */
 
 class LocaleSpec {
 	public $url;
 	public $locale;
 	public $rightToLeft;
+	public $localeMessageBundles = array();
+
+	public function getLocaleMessageBundles() {
+		return $this->localeMessageBundles;
+	}
 
 	public function getURI()
 	{
@@ -37,4 +42,4 @@
 	{
 		return $this->rightToLeft;
 	}
-}
+}
\ No newline at end of file

Modified: incubator/shindig/trunk/php/src/gadgets/http/GadgetRenderingServlet.php
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/gadgets/http/GadgetRenderingServlet.php?rev=663490&r1=663489&r2=663490&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/gadgets/http/GadgetRenderingServlet.php (original)
+++ incubator/shindig/trunk/php/src/gadgets/http/GadgetRenderingServlet.php Thu Jun  5 00:31:33 2008
@@ -15,7 +15,7 @@
  * "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.
- * 
+ *
  */
 require 'src/common/HttpServlet.php';
 require 'src/gadgets/GadgetContext.php';
@@ -30,6 +30,7 @@
 require 'src/gadgets/UserPrefs.php';
 require 'src/gadgets/Substitutions.php';
 require 'src/gadgets/LocaleSpec.php';
+require 'src/gadgets/LocaleMessageBundle.php';
 require 'src/common/Locale.php';
 require 'src/gadgets/UserPref.php';
 require 'src/gadgets/ViewSpec.php';
@@ -48,7 +49,7 @@
  * This class deals with the gadget rendering requests (in default config this
  * would be /gadgets/ifr?url=<some gadget's url>). It uses the gadget server and
  * gadget context to render the xml to a valid html file, and outputs it.
- * 
+ *
  */
 class GadgetRenderingServlet extends HttpServlet {
 	private $context;
@@ -63,11 +64,11 @@
 			if (empty($_GET['url'])) {
 				throw new GadgetException("Missing required parameter: url");
 			}
-			// GadgetContext builds up all the contextual variables (based on the url or post) 
+			// GadgetContext builds up all the contextual variables (based on the url or post)
 			// plus instances all required classes (feature registry, fetcher, blacklist, etc)
 			$this->context = new GadgetContext('GADGET');
 			// Unfortunatly we can't do caja content filtering here, hoping we'll have a RPC service
-			// or command line caja to use for this at some point 
+			// or command line caja to use for this at some point
 			$gadgetServer = new GadgetServer();
 			$gadget = $gadgetServer->processGadget($this->context);
 			$this->outputGadget($gadget, $this->context);
@@ -176,7 +177,7 @@
 			echo $externJs;
 		}
 		echo "<script><!--\n" . $this->appendJsConfig($context, $gadget) . $this->appendMessages($gadget) . "-->\n</script>\n";
-		
+
 		$gadgetExceptions = array();
 		$content = $gadget->getSubstitutions()->substitute($view->getContent());
 		if (empty($content)) {

Modified: incubator/shindig/trunk/php/src/gadgets/http/JsonRpcServlet.php
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/gadgets/http/JsonRpcServlet.php?rev=663490&r1=663489&r2=663490&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/gadgets/http/JsonRpcServlet.php (original)
+++ incubator/shindig/trunk/php/src/gadgets/http/JsonRpcServlet.php Thu Jun  5 00:31:33 2008
@@ -15,7 +15,7 @@
  * "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.
- * 
+ *
  */
 require 'src/common/HttpServlet.php';
 require 'src/gadgets/JsonRpcHandler.php';
@@ -41,6 +41,7 @@
 require 'src/common/UrlGenerator.php';
 require 'src/gadgets/http/HttpUtil.php';
 require 'src/gadgets/LocaleSpec.php';
+require 'src/gadgets/LocaleMessageBundle.php';
 require 'src/gadgets/UserPref.php';
 require 'src/gadgets/FeatureSpec.php';
 require 'src/gadgets/MessageBundleParser.php';