You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2007/03/06 17:04:36 UTC

svn commit: r515168 - in /cocoon/trunk/blocks/cocoon-portal: cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/ cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/resources/ cocoon-portal-sample/src/main/resources/COB-...

Author: cziegeler
Date: Tue Mar  6 08:04:29 2007
New Revision: 515168

URL: http://svn.apache.org/viewvc?view=rev&rev=515168
Log:
Fix ajax handling after recent refactorings of ajax and forms block

Modified:
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/DefaultPortalManager.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/resources/cocoon-portal.js
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/sitemap.xmap
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/skins/modern/styles/forms-styling.xsl

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/DefaultPortalManager.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/DefaultPortalManager.java?view=diff&rev=515168&r1=515167&r2=515168
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/DefaultPortalManager.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/DefaultPortalManager.java Tue Mar  6 08:04:29 2007
@@ -21,6 +21,7 @@
 import java.util.Properties;
 
 import org.apache.cocoon.ajax.AjaxHelper;
+import org.apache.cocoon.ajax.BrowserUpdateTransformer;
 import org.apache.cocoon.environment.ObjectModelHelper;
 import org.apache.cocoon.environment.Request;
 import org.apache.cocoon.portal.PortalException;
@@ -98,6 +99,7 @@
 
     /**
      * Initialize
+     * @throws PortalException
      */
     public void init()
     throws PortalException {
@@ -161,7 +163,9 @@
         // only render the changed coplets
         if ( portalLayout == null && AjaxHelper.isAjaxRequest(req) ) {
             Layout rootLayout = profileManager.getLayout(null);
-            XMLUtils.startElement(ch, "coplets");
+            ch.startPrefixMapping("bu", BrowserUpdateTransformer.BU_NSURI);
+            ch.startElement(BrowserUpdateTransformer.BU_NSURI, "document", "bu:document", XMLUtils.EMPTY_ATTRIBUTES);
+
             final List changed = CopletInstanceFeatures.getChangedCopletInstanceDataObjects(this.portalService);
             final Iterator i = changed.iterator();
             while ( i.hasNext() ) {
@@ -178,14 +182,20 @@
                 }
                 XMLUtils.endElement(ch, "coplet");
             }
-            XMLUtils.endElement(ch, "coplets");
+            ch.endElement(BrowserUpdateTransformer.BU_NSURI, "document", "bu:document");
+            ch.endPrefixMapping("bu");
         } else {
             if ( StringUtils.isNotEmpty(copletId) ) {
-                XMLUtils.startElement(ch, "coplets");
+                ch.startPrefixMapping("bu", BrowserUpdateTransformer.BU_NSURI);
+                ch.startElement(BrowserUpdateTransformer.BU_NSURI, "document", "bu:document", XMLUtils.EMPTY_ATTRIBUTES);
+
                 final AttributesImpl a = new AttributesImpl();
                 a.addCDATAAttribute("id", copletId);
                 XMLUtils.startElement(ch, "coplet", a);
             } else if ( StringUtils.isNotEmpty(layoutId) ) {
+                ch.startPrefixMapping("bu", BrowserUpdateTransformer.BU_NSURI);
+                ch.startElement(BrowserUpdateTransformer.BU_NSURI, "document", "bu:document", XMLUtils.EMPTY_ATTRIBUTES);
+
                 final AttributesImpl a = new AttributesImpl();
                 a.addCDATAAttribute("id", layoutId);
                 XMLUtils.startElement(ch, "layout", a);
@@ -209,9 +219,12 @@
             }
             if ( StringUtils.isNotEmpty(copletId) ) {
                 XMLUtils.endElement(ch, "coplet");
-                XMLUtils.endElement(ch, "coplets");
+                ch.endElement(BrowserUpdateTransformer.BU_NSURI, "document", "bu:document");
+                ch.endPrefixMapping("bu");
             } else if ( StringUtils.isNotEmpty(layoutId) ) {
                 XMLUtils.endElement(ch, "layout");
+                ch.endElement(BrowserUpdateTransformer.BU_NSURI, "document", "bu:document");
+                ch.endPrefixMapping("bu");
             }
         }
 

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/resources/cocoon-portal.js
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/resources/cocoon-portal.js?view=diff&rev=515168&r1=515167&r2=515168
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/resources/cocoon-portal.js (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/resources/cocoon-portal.js Tue Mar  6 08:04:29 2007
@@ -14,6 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+dojo.registerModulePath("cocoon.ajax", "../ajax/js");
+dojo.require("cocoon.ajax.BUHandler");
+
 cocoon.portal = {};
 
 cocoon.portal.process = function(uri) {
@@ -22,47 +25,36 @@
   } else {
     uri = uri + "&cocoon-ajax=true";
   }
-  var req = dojo.hostenv.getXmlhttpObject()
-  req.open("POST", uri, true);
-  req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
-  req.onreadystatechange = function() {
-      if (req.readyState == 4) {
-          cocoon.portal.handleBrowserUpdate(req);
-      }
-  }
-  req.send(null);
+  dojo.io.bind({
+    url : uri,
+    load : function(type, data, evt) {
+      cocoon.portal.handleBrowserUpdate(data);
+    },
+    method: "POST",
+    mimetype: "text/xml"
+  });
 }
 
-cocoon.portal.handleBrowserUpdate = function(req) {
+cocoon.portal.handleBrowserUpdate = function(doc) {
   var updater = new cocoon.ajax.BUHandler();
-  if (req.status == 200) {
-    // Handle browser update directives
-    var doc = req.responseXML;
-    if (!doc) {
-        cocoon.ajax.BUHandler.handleError("No xml answer", req);
-        return;
+  updater.handlers['coplet'] = function(element) {
+    var content = dojo.dom.getFirstChildElement(element);
+    var id = content.getAttribute("id");
+    if (!id) {
+      alert("no id found on update element");
+      return;
     }
-    updater.handlers['coplet'] = function(element) {
-      var content = dojo.dom.getFirstChildElement(element);
-      var id = content.getAttribute("id");
-      if (!id) {
-        alert("no id found on update element");
-        return;
-      }
-      var oldElement = document.getElementById(id);
-      // in some cases, the server sends a coplet that
-      // is currently not displayed. So it's not an
-      // error if the element can't be found.
-      if (oldElement) {
-        var newElement = cocoon.ajax.insertionHelper.importNode(content, document).element;
-        // Warn: it's replace(new, old)!!
-        oldElement.parentNode.replaceChild(newElement, oldElement);
-        // Ensure the new node has the correct id
-        newElement.setAttribute("id", id);
-      }    
+    var oldElement = document.getElementById(id);
+    // in some cases, the server sends a coplet that
+    // is currently not displayed. So it's not an
+    // error if the element can't be found.
+    if (oldElement) {
+      var newElement = cocoon.ajax.insertionHelper.importNode(content, document).element;
+      // Warn: it's replace(new, old)!!
+      oldElement.parentNode.replaceChild(newElement, oldElement);
+      // Ensure the new node has the correct id
+      newElement.setAttribute("id", id);
     }
-    updater.processResponse(doc, req);
-  } else {
-    updater.handleError("Request failed - status=" + req.status, req);
-  }
+  };
+  updater.processResponse(doc);
 }

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/sitemap.xmap
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/sitemap.xmap?view=diff&rev=515168&r1=515167&r2=515168
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/sitemap.xmap (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/sitemap.xmap Tue Mar  6 08:04:29 2007
@@ -221,11 +221,9 @@
                 <map:parameter name="title" value="{global:mainTitle}"/>
                 <map:parameter name="skin" value="{portal-skin:skin}"/>
               </map:transform>
-              <!--
               <map:transform src="{portal-skin:skin.basepath}/styles/forms-styling.xsl">
                 <map:parameter name="resources-uri" value="{request:contextPath}/_cocoon/resources"/>
               </map:transform>
-              -->
               <map:transform type="cinclude"/>
               <map:transform type="portal-coplet"/>
               <map:transform type="portal-new-eventlink"/>

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/skins/modern/styles/forms-styling.xsl
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/skins/modern/styles/forms-styling.xsl?view=diff&rev=515168&r1=515167&r2=515168
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/skins/modern/styles/forms-styling.xsl (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/skins/modern/styles/forms-styling.xsl Tue Mar  6 08:04:29 2007
@@ -31,9 +31,9 @@
   
   <xsl:template match="head">
     <head>
-      <xsl:apply-templates/>
       <xsl:apply-templates select="." mode="forms-page"/>
       <xsl:apply-templates select="." mode="forms-field"/>
+      <xsl:apply-templates/>
       <script src="{$resources-uri}/portal/cocoon-portal.js" type="text/javascript"/>
     </head>
   </xsl:template>