Author: chabotc
Date: Sat Aug  8 11:49:03 2009
New Revision: 802343

URL: http://svn.apache.org/viewvc?rev=802343&view=rev
Log:
Wrap template java script blocks in cdata sections to prevent them from being 
html-entitied

Modified:
    incubator/shindig/trunk/php/src/gadgets/render/GadgetBaseRenderer.php
    incubator/shindig/trunk/php/src/gadgets/templates/TemplateLibrary.php
    incubator/shindig/trunk/php/src/gadgets/templates/TemplateParser.php

Modified: incubator/shindig/trunk/php/src/gadgets/render/GadgetBaseRenderer.php
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/gadgets/render/GadgetBaseRenderer.php?rev=802343&r1=802342&r2=802343&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/gadgets/render/GadgetBaseRenderer.php 
(original)
+++ incubator/shindig/trunk/php/src/gadgets/render/GadgetBaseRenderer.php Sat 
Aug  8 11:49:03 2009
@@ -239,12 +239,13 @@
         $output = new DOMDocument(null, 'utf-8');
         foreach ($childNode->childNodes as $node) {
           $outNode = $output->importNode($node, true);
-          $output->appendChild($outNode);
+          $outNode = $output->appendChild($outNode);
         }
         // Restore single tags to their html variant, and remove the xml header
-        $ret = str_replace(array(
-            '<?xml version="" encoding="utf-8"?>', '<br/>'), array('', 
-            '<br>'), $output->saveXML());
+        $ret = str_replace(
+            array('<?xml version="" encoding="utf-8"?>', '<br/>', '<script 
type="text/javascript"><![CDATA[', ']]></script>'),
+            array('', '<br>', '<script type="text/javascript">', '</script>'),
+            $output->saveXML());
         return $ret;
       }
     }
@@ -274,11 +275,11 @@
    * @return string script
    */
   public function getBodyScript() {
+    $script = "gadgets.util.runOnLoadHandlers();";
     if ($this instanceof GadgetHrefRenderer) {
-      return " window.setTimeout(function(){gadgets.window.adjustHeight()}, 
10);";
-    } else {
-      return "gadgets.util.runOnLoadHandlers();";
+      $script .= "window.setTimeout(function(){gadgets.window.adjustHeight()}, 
10);";
     }
+    return $script;
   }
 
   /**
@@ -408,20 +409,20 @@
     if (! isset($gadgetConfig['osapi.services']) || 
count($gadgetConfig['osapi.services']) == 1) {
       // this should really be set in config/container.js, but if not, we 
build a complete default set so at least most of it works out-of-the-box
       $gadgetConfig['osapi.services'] = array(
-          'gadgets.rpc' => array('container.listMethods'), 
-          'http://%host%/social/rpc' => array("messages.update", 
"albums.update", 
-              "activities.delete", "activities.update", 
-              "activities.supportedFields", "albums.get", 
-              "activities.get", "mediaitems.update", 
-              "messages.get", "appdata.get", 
-              "system.listMethods", "people.supportedFields", 
-              "messages.create", "mediaitems.delete", 
-              "mediaitems.create", "people.get", "people.create", 
-              "albums.delete", "messages.delete", 
-              "appdata.update", "activities.create", 
-              "mediaitems.get", "albums.create", 
-              "appdata.delete", "people.update", 
-              "appdata.create"), 
+          'gadgets.rpc' => array('container.listMethods'),
+          'http://%host%/social/rpc' => array("messages.update", 
"albums.update",
+              "activities.delete", "activities.update",
+              "activities.supportedFields", "albums.get",
+              "activities.get", "mediaitems.update",
+              "messages.get", "appdata.get",
+              "system.listMethods", "people.supportedFields",
+              "messages.create", "mediaitems.delete",
+              "mediaitems.create", "people.get", "people.create",
+              "albums.delete", "messages.delete",
+              "appdata.update", "activities.create",
+              "mediaitems.get", "albums.create",
+              "appdata.delete", "people.update",
+              "appdata.create"),
           'http://%host%/gadgets/api/rpc' => array('cache.invalidate'));
     }
     return "gadgets.config.init(" . json_encode($gadgetConfig) . ");\n";

Modified: incubator/shindig/trunk/php/src/gadgets/templates/TemplateLibrary.php
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/gadgets/templates/TemplateLibrary.php?rev=802343&r1=802342&r2=802343&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/gadgets/templates/TemplateLibrary.php 
(original)
+++ incubator/shindig/trunk/php/src/gadgets/templates/TemplateLibrary.php Sat 
Aug  8 11:49:03 2009
@@ -54,7 +54,7 @@
       if ($script = $template->getScript()) {
         $scriptNode = $templateDomCopy->createElement('script');
         $scriptNode->setAttribute('type', 'text/javascript');
-        $scriptNode->appendChild($templateDomCopy->createTextNode($script));
+        
$scriptNode->appendChild($templateDomCopy->createCDATASection($script));
         $templateDomCopy->appendChild($scriptNode);
       }
       // Copy the DOM structure since parseNode() modifies the DOM structure 
directly

Modified: incubator/shindig/trunk/php/src/gadgets/templates/TemplateParser.php
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/gadgets/templates/TemplateParser.php?rev=802343&r1=802342&r2=802343&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/gadgets/templates/TemplateParser.php 
(original)
+++ incubator/shindig/trunk/php/src/gadgets/templates/TemplateParser.php Sat 
Aug  8 11:49:03 2009
@@ -151,10 +151,8 @@
       // And replace the node with the parsed output
       $ownerDocument = $node->ownerDocument;
       foreach ($ret->childNodes as $childNode) {
-        if ($childNode) {
-          $importedNode = $ownerDocument->importNode($childNode, true);
-          $node->parentNode->insertBefore($importedNode, $node);
-        }
+               $importedNode = $ownerDocument->importNode($childNode, true);
+        $importedNode = $node->parentNode->insertBefore($importedNode, $node);
       }
       $node->parentNode->removeChild($node);
     }


Reply via email to