Author: gchapelle
Date: Fri Feb  3 14:21:24 2006
New Revision: 2278

Added:
   azax/branches/snowsprint/demos/azaxdemo/browser/header_macros.pt
Modified:
   azax/branches/snowsprint/azaxview.py
   azax/branches/snowsprint/browser/kukitresponse.pt
   azax/branches/snowsprint/configure.zcml
   azax/branches/snowsprint/demos/azaxdemo/azaxview.py
   azax/branches/snowsprint/demos/azaxdemo/browser/azax_demo.pt
   azax/branches/snowsprint/demos/azaxdemo/browser/azax_instant_edit.azax
   azax/branches/snowsprint/demos/azaxdemo/browser/azax_instant_edit.pt
   azax/branches/snowsprint/demos/azaxdemo/browser/azax_three_autoupdate.pt
   azax/branches/snowsprint/demos/azaxdemo/browser/azax_tree.pt
   azax/branches/snowsprint/demos/azaxdemo/browser/azax_two_select.pt
   azax/branches/snowsprint/demos/azaxdemo/browser/cancel_submit.pt
   azax/branches/snowsprint/demos/azaxdemo/configure.zcml
   azax/branches/snowsprint/tests/test_azaxview.py
Log:
add xpath support in the command subengine

add macro to generate ajaxslt js


Modified: azax/branches/snowsprint/azaxview.py
==============================================================================
--- azax/branches/snowsprint/azaxview.py        (original)
+++ azax/branches/snowsprint/azaxview.py        Fri Feb  3 14:21:24 2006
@@ -86,8 +86,13 @@
 class AzaxCommand:
     
     def __init__(self, name, selector):
+        if isinstance(selector, basestring): 
+            self.selector = selector
+            self.selectorType = ''
+        else:
+            self.selector = selector.value
+            self.selectorType = selector.type
         self.name = name
-        self.selector = selector
         self.params = []
 
     def addParam(self, name, content=''):
@@ -101,9 +106,36 @@
     def getSelector(self):
         return self.selector
 
+    def getSelectorType(self):
+        return self.selectorType
+
     def getParams(self):
         return self.params
 
+XPATH_SELECTOR = 'xpath'
+CSS_SELECTOR = 'css'
+HTMLID_SELECTOR = 'htmlid' 
+
+class XpathSelector:
+
+    type = XPATH_SELECTOR
+
+    def __init__(self, selector):
+        self.value = selector
+        
+class CssSelector:
+    
+    type = CSS_SELECTOR
+    
+    def __init__(self, selector):
+        self.value = selector
+        
+class HtmlIdSelector:
+    
+    type = HTMLID_SELECTOR        
+    
+    def __init__(self, selector):
+        self.value = selector
 # --
 # Base view class
 # 
@@ -141,7 +173,17 @@
 
     def getCommands(self):
         return self.commands
-    
+   
+
+    def getXpathSelector(self, selector):
+            return XpathSelector(selector)
+            
+    def getCssSelector(self, selector):
+            return CssSelector(selector)
+            
+    def getHtmlIdSelector(self, selector):
+            return HtmlIdSelector(selector)
+            
     # --
     # commands
     # --
@@ -152,6 +194,12 @@
         command = self.addCommand('setHtmlAsChild', selector)
         data = command.addParam('html', new_value)
     
+    def setAttribute(self, selector, name, value):
+        """ see interfaces.py """
+        command = self.addCommand('setAttribute', selector)
+        data = command.addParam('name', name)
+        data = command.addParam('value', value)
+    
     def addAfter(self, selector, new_value):
         """ see interfaces.py """
         new_value = HtmlParser(new_value)()
@@ -168,6 +216,11 @@
         command = self.addCommand('removeNode', selector)
         data = command.addParam('none')
 
+    def removeNode(self, selector):
+        """ see interfaces.py """
+        command = self.addCommand('removeNode', selector)
+        data = command.addParam('none')
+
     def removeNextSibling(self, selector):
         """ see interfaces.py """
         command = self.addCommand('removeNextSibling', selector)
@@ -183,6 +236,11 @@
         command = self.addCommand('copyChildrenFrom', selector)
         data = command.addParam('html_id', id)
 
+    def moveNodeAfter(self, selector, id):
+        """ see interfaces.py """
+        command = self.addCommand('moveNodeAfter', selector)
+        data = command.addParam('html_id', id)
+
     def copyChildrenTo(self, selector, id):
         """ see interfaces.py """
         command = self.addCommand('copyChildrenTo', selector)

Modified: azax/branches/snowsprint/browser/kukitresponse.pt
==============================================================================
--- azax/branches/snowsprint/browser/kukitresponse.pt   (original)
+++ azax/branches/snowsprint/browser/kukitresponse.pt   Fri Feb  3 14:21:24 2006
@@ -5,9 +5,11 @@
       xmlns:metal="http://xml.zope.org/namespaces/metal";
       xmlns:i18n="http://xml.zope.org/namespaces/i18n";><body>
 <kukit:command tal:repeat="command view/getCommands"
-               selector="div#demo" name="setHtmlAsChild"
+               selector="div#demo" name="setHtmlAsChild" 
+        selectorType=""
                tal:attributes="selector command/getSelector;
-                                           name command/getName">
+                                           name command/getName;
+                                           selectorType 
command/getSelectorType | default">
        <kukit:param tal:repeat="param command/params" name="html"
                        tal:attributes="name param/name"
                        tal:content="structure param/content">

Modified: azax/branches/snowsprint/configure.zcml
==============================================================================
--- azax/branches/snowsprint/configure.zcml     (original)
+++ azax/branches/snowsprint/configure.zcml     Fri Feb  3 14:21:24 2006
@@ -23,6 +23,26 @@
   />
 
   <browser:resource
+    file="kukit/3rd_party/ajaxslt/misc.js"
+    name="ajaxslt_misc.js"
+  />
+
+  <browser:resource
+    file="kukit/3rd_party/ajaxslt/dom.js"
+    name="ajaxslt_dom.js"
+  />
+
+  <browser:resource
+    file="kukit/3rd_party/ajaxslt/xpath.js"
+    name="ajaxslt_xpath.js"
+  />
+
+  <browser:resource
+    file="kukit/3rd_party/ajaxslt/xslt.js"
+    name="ajaxslt_xslt.js"
+  />
+
+  <browser:resource
     file="tests/js/runner.html"
     name="azaxtestrunner.html"
   />

Modified: azax/branches/snowsprint/demos/azaxdemo/azaxview.py
==============================================================================
--- azax/branches/snowsprint/demos/azaxdemo/azaxview.py (original)
+++ azax/branches/snowsprint/demos/azaxdemo/azaxview.py Fri Feb  3 14:21:24 2006
@@ -22,8 +22,12 @@
 from Products.azax import AzaxBaseView
 from datetime import datetime
 
+from zope.app.pagetemplate.viewpagetemplatefile import ViewPageTemplateFile
+
 class AzaxView(AzaxBaseView):
 
+    #header_macros = ViewPageTemplateFile('browser/header_macros.pt')
+
     def clearDivContent(self):
         """ clear div content """
         self.clearChildren('div#demo')
@@ -92,3 +96,8 @@
     def cancelSubmitSave(self, text_save):
         self.setHtmlAsChild('div#async', 'Async saved %s' % text_save)
         return self.render()
+
+    def removeNodeXpath(self):
+        sel = self.getXpathSelector("//[EMAIL 
PROTECTED]'xpath']/following-sibling::*[position()=1]")
+        self.removeNode(sel)
+        return self.render()

Modified: azax/branches/snowsprint/demos/azaxdemo/browser/azax_demo.pt
==============================================================================
--- azax/branches/snowsprint/demos/azaxdemo/browser/azax_demo.pt        
(original)
+++ azax/branches/snowsprint/demos/azaxdemo/browser/azax_demo.pt        Fri Feb 
 3 14:21:24 2006
@@ -1,23 +1,6 @@
 <html>
   <head>
-    <link rel="kukit"
-          tal:attributes="href 
string:${context/absolute_url}/++resource++azax_demo.azax"/>
-    <script type="text/javascript"
-      tal:attributes="src 
string:${context/absolute_url}/++resource++sarissa.js;"
-      src="++resource++sarissa.js">
-    </script>
-    <script type="text/javascript"
-      tal:attributes="src 
string:${context/absolute_url}/++resource++cssQuery.js;"
-      src="++resource++cssQuery.js">
-    </script>
-    <script type="text/javascript"
-      tal:attributes="src 
string:${context/absolute_url}/++resource++MochiKit.js;"
-      src="++resource++MochiKit.js">
-    </script>
-    <script type="text/javascript"
-      tal:attributes="src string:${context/absolute_url}/++resource++kukit.js;"
-      src="++resource++kukit.js">
-    </script>
+    <metal:header use-macro="context/header_macros/macros/header_resources" />
   </head>
   <body>
   <!--a href="javascript:void(createLoggingPane(true));">logging</a-->

Modified: azax/branches/snowsprint/demos/azaxdemo/browser/azax_instant_edit.azax
==============================================================================
--- azax/branches/snowsprint/demos/azaxdemo/browser/azax_instant_edit.azax      
(original)
+++ azax/branches/snowsprint/demos/azaxdemo/browser/azax_instant_edit.azax      
Fri Feb  3 14:21:24 2006
@@ -6,4 +6,7 @@
   <rule selector="input#save">
     <event name="click">saveText</event>
   </rule>
+  <rule selector="#remove_xpath">
+    <event name="click">removeNodeXpath</event>
+  </rule>
 </rules>

Modified: azax/branches/snowsprint/demos/azaxdemo/browser/azax_instant_edit.pt
==============================================================================
--- azax/branches/snowsprint/demos/azaxdemo/browser/azax_instant_edit.pt        
(original)
+++ azax/branches/snowsprint/demos/azaxdemo/browser/azax_instant_edit.pt        
Fri Feb  3 14:21:24 2006
@@ -1,24 +1,7 @@
 <html>
   <head>
-    <link rel="kukit"
-          tal:attributes="href 
string:${context/absolute_url}/++resource++azax_instant_edit.azax"/>
-    <script type="text/javascript"
-      tal:attributes="src 
string:${context/absolute_url}/++resource++sarissa.js;"
-      src="++resource++sarissa.js">
-    </script>
-    <script type="text/javascript"
-      tal:attributes="src 
string:${context/absolute_url}/++resource++cssQuery.js;"
-      src="++resource++cssQuery.js">
-    </script>
-    <script type="text/javascript"
-      tal:attributes="src 
string:${context/absolute_url}/++resource++MochiKit.js;"
-      src="++resource++MochiKit.js">
-    </script>
-    <script type="text/javascript"
-      tal:attributes="src string:${context/absolute_url}/++resource++kukit.js;"
-      src="++resource++kukit.js">
-    </script>
-</head>
+    <metal:header use-macro="context/header_macros/macros/header_resources" />
+  </head>
   <body>
     <p><a href=".">All demos</a></p>
 
@@ -32,5 +15,35 @@
     </form>
        </div>
 
+
+<p>ab</p>
+<input onclick="test();" type="submit" />
+<script>function test() {
+        var
+        res=xpathDomEval("//[EMAIL 
PROTECTED]'xpath']/following-sibling::*[position()=1]", document);
+        if (res.nodeSetValue() == null) {alert('null');}
+        else {
+        Log.write(''+res.stringValue());
+        Log.show();
+        Log.write(''+res.nodeSetValue().length);
+        Log.show();
+        }
+        /*res=xpathDomEval("following-sibling::P", res.nodeSetValue()[0]);
+        if (res.nodeSetValue() == null) {alert('null');}
+        else {
+        Log.write(''+res.stringValue());
+        Log.show();
+        Log.write(''+res.nodeSetValue().length);
+        Log.show();
+        }*/
+        }
+</script>
+
+<p><a id="remove_xpath">Remove Node with XPath</a><p>
+<p id="xpath">XPath</p>
+<p>next 1</p>
+<p>next 2</p>
+<p>next 3</p>
+
   </body>
 </html>

Modified: 
azax/branches/snowsprint/demos/azaxdemo/browser/azax_three_autoupdate.pt
==============================================================================
--- azax/branches/snowsprint/demos/azaxdemo/browser/azax_three_autoupdate.pt    
(original)
+++ azax/branches/snowsprint/demos/azaxdemo/browser/azax_three_autoupdate.pt    
Fri Feb  3 14:21:24 2006
@@ -1,5 +1,6 @@
 <html>
   <head>
+    <metal:header use-macro="context/header_macros/macros/header_resources" />
     <link rel="kukit"
           tal:attributes="href 
string:${context/absolute_url}/++resource++azax_three_autoupdate.azax"/>
     <script type="text/javascript"

Modified: azax/branches/snowsprint/demos/azaxdemo/browser/azax_tree.pt
==============================================================================
--- azax/branches/snowsprint/demos/azaxdemo/browser/azax_tree.pt        
(original)
+++ azax/branches/snowsprint/demos/azaxdemo/browser/azax_tree.pt        Fri Feb 
 3 14:21:24 2006
@@ -1,33 +1,16 @@
 <html>
   <head>
-    <link rel="kukit"
-          tal:attributes="href 
string:${context/absolute_url}/++resource++azax_tree.azax"/>
-    <script type="text/javascript"
-      tal:attributes="src 
string:${context/absolute_url}/++resource++sarissa.js;"
-      src="++resource++sarissa.js">
-    </script>
-    <script type="text/javascript"
-      tal:attributes="src 
string:${context/absolute_url}/++resource++cssQuery.js;"
-      src="++resource++cssQuery.js">
-    </script>
-    <script type="text/javascript"
-      tal:attributes="src 
string:${context/absolute_url}/++resource++MochiKit.js;"
-      src="++resource++MochiKit.js">
-    </script>
-    <script type="text/javascript"
-      tal:attributes="src string:${context/absolute_url}/++resource++kukit.js;"
-      src="++resource++kukit.js">
-    </script>
-<style>
-    ul, li{
-        list-style: square;
-    }
+    <metal:header use-macro="context/header_macros/macros/header_resources" />
+    <style>
+        ul, li{
+            list-style: square;
+        }
 
-    input{
-        border: 0px;
-        background-color: transparent;
-    }
-</style>
+        input{
+            border: 0px;
+            background-color: transparent;
+        }
+    </style>
 </head>
   <body>
     <p><a href=".">All demos</a></p>

Modified: azax/branches/snowsprint/demos/azaxdemo/browser/azax_two_select.pt
==============================================================================
--- azax/branches/snowsprint/demos/azaxdemo/browser/azax_two_select.pt  
(original)
+++ azax/branches/snowsprint/demos/azaxdemo/browser/azax_two_select.pt  Fri Feb 
 3 14:21:24 2006
@@ -1,53 +1,10 @@
 <html>
   <head>
-    <link rel="kukit"
-          tal:attributes="href 
string:${context/absolute_url}/++resource++azax_two_selects.azax"/>
-    <script type="text/javascript"
-      tal:attributes="src 
string:${context/absolute_url}/++resource++sarissa.js;"
-      src="++resource++sarissa.js">
-    </script>
-    <script type="text/javascript"
-      tal:attributes="src 
string:${context/absolute_url}/++resource++cssQuery.js;"
-      src="++resource++cssQuery.js">
-    </script>
-    <script type="text/javascript"
-      tal:attributes="src 
string:${context/absolute_url}/++resource++MochiKit.js;"
-      src="++resource++MochiKit.js">
-    </script>
-    <script type="text/javascript"
-      tal:attributes="src string:${context/absolute_url}/++resource++kukit.js;"
-      src="++resource++kukit.js">
-    </script>
+    <metal:header use-macro="context/header_macros/macros/header_resources" />
   </head>
   <body>
     <p><a href=".">All demos</a></p>
     <h2>Two Selects</h2>
-    <!--h3>Preprocessing</h3>
-    <p>This page has a button with a "button" classname.
-
-       It also defines a link in the header which "rel" attribute points
-       to a .azax server file :
-
-          <a tal:attributes="href 
string:${context/absolute_url}/++resource++azax_demo.azax">
-           see the kukit file here</a>.</p>
-    <p>
-        This kukit file says that whenever the user click on the button
-        the getDivContent URL is called asynchronously.
-
-    </p>
-    <p>A javascript preprocessor translate this content in javascript
-       events insertions in the DOM</p>
-   <h3>Asynced server call</h3>
-   <p>This page also has a div with "clickable" for its classname.</p>
-   <p>getDivContent is a method of a view class that returns xml content
-
-   </p>
-   <a tal:attributes="href string:${context/absolute_url}/getDivContent">
-       see what the view returns here</a>
-   <p>
-   The xml is retrieved and the DOM updated with commands passed into the XML.
-   The command actually says that the div content gets updated.
-   </p-->
 
 <h3>Demo</h3>
    <form name="two">

Modified: azax/branches/snowsprint/demos/azaxdemo/browser/cancel_submit.pt
==============================================================================
--- azax/branches/snowsprint/demos/azaxdemo/browser/cancel_submit.pt    
(original)
+++ azax/branches/snowsprint/demos/azaxdemo/browser/cancel_submit.pt    Fri Feb 
 3 14:21:24 2006
@@ -1,25 +1,7 @@
 <html>
   <head>
-    <link rel="kukit"
-          tal:attributes="href
-          string:${context/absolute_url}/++resource++cancel_submit.azax"/>
-    <script type="text/javascript"
-      tal:attributes="src 
string:${context/absolute_url}/++resource++sarissa.js;"
-      src="++resource++sarissa.js">
-    </script>
-    <script type="text/javascript"
-      tal:attributes="src 
string:${context/absolute_url}/++resource++cssQuery.js;"
-      src="++resource++cssQuery.js">
-    </script>
-    <script type="text/javascript"
-      tal:attributes="src 
string:${context/absolute_url}/++resource++MochiKit.js;"
-      src="++resource++MochiKit.js">
-    </script>
-    <script type="text/javascript"
-      tal:attributes="src string:${context/absolute_url}/++resource++kukit.js;"
-      src="++resource++kukit.js">
-    </script>
-</head>
+    <metal:header use-macro="context/header_macros/macros/header_resources" />
+  </head>
   <body>
     <p><a href=".">All demos</a></p>
 

Added: azax/branches/snowsprint/demos/azaxdemo/browser/header_macros.pt
==============================================================================
--- (empty file)
+++ azax/branches/snowsprint/demos/azaxdemo/browser/header_macros.pt    Fri Feb 
 3 14:21:24 2006
@@ -0,0 +1,43 @@
+<html>
+    <metal:header define-macro="header_resources">
+    <link rel="kukit"
+          tal:attributes="href 
string:${context/absolute_url}/++resource++azax_instant_edit.azax"/>
+    <script type="text/javascript"
+      tal:attributes="src 
string:${context/absolute_url}/++resource++sarissa.js;"
+      src="++resource++sarissa.js">
+    </script>
+    <script type="text/javascript"
+      tal:attributes="src 
string:${context/absolute_url}/++resource++cssQuery.js;"
+      src="++resource++cssQuery.js">
+    </script>
+    <script type="text/javascript"
+      tal:attributes="src 
string:${context/absolute_url}/++resource++MochiKit.js;"
+      src="++resource++MochiKit.js">
+    </script>
+    <!-- ajaxslt-->
+    <script type="text/javascript"
+      tal:attributes="src
+      string:${context/absolute_url}/++resource++ajaxslt_misc.js;"
+      src="++resource++ajaxslt_misc.js">
+    </script>
+    <script type="text/javascript"
+      tal:attributes="src
+      string:${context/absolute_url}/++resource++ajaxslt_dom.js;"
+      src="++resource++ajaxslt_dom.js">
+    </script>
+    <script type="text/javascript"
+      tal:attributes="src
+      string:${context/absolute_url}/++resource++ajaxslt_xpath.js;"
+      src="++resource++ajaxslt_xpath.js">
+    </script>
+    <!--script type="text/javascript"
+      tal:attributes="src
+      string:${context/absolute_url}/++resource++ajaxslt_xslt.js;"
+      src="++resource++ajaxslt_xslt.js">
+    </script-->
+    <script type="text/javascript"
+      tal:attributes="src string:${context/absolute_url}/++resource++kukit.js;"
+      src="++resource++kukit.js">
+    </script>
+    </metal:header>
+</html>    

Modified: azax/branches/snowsprint/demos/azaxdemo/configure.zcml
==============================================================================
--- azax/branches/snowsprint/demos/azaxdemo/configure.zcml      (original)
+++ azax/branches/snowsprint/demos/azaxdemo/configure.zcml      Fri Feb  3 
14:21:24 2006
@@ -42,10 +42,17 @@
       permission="zope2.View"
       />
 
+  <browser:page
+      for=".interfaces.ISimpleContent"
+      template="browser/header_macros.pt"
+      name="header_macros"
+      permission="zope2.View"
+      />
+
   <browser:resource
     file="browser/azax_demo.azax"
     name="azax_demo.azax"
-  />
+    />
 
   <browser:page
       for=".interfaces.ISimpleContent"
@@ -210,4 +217,12 @@
       permission="zope2.View"
       />
 
+  <browser:page
+      for=".interfaces.ISimpleContent"
+      class=".azaxview.AzaxView"
+      attribute="removeNodeXpath"
+      name="removeNodeXpath"
+      permission="zope2.View"
+      />
+
 </configure>

Modified: azax/branches/snowsprint/tests/test_azaxview.py
==============================================================================
--- azax/branches/snowsprint/tests/test_azaxview.py     (original)
+++ azax/branches/snowsprint/tests/test_azaxview.py     Fri Feb  3 14:21:24 2006
@@ -153,7 +153,8 @@
         view.setHtmlAsChild('div.class', 'new content')
         result = view.render()
         self.assertCommandsEqual(result, '''\
-<kukit:command selector="div.class" name="setHtmlAsChild">
+<kukit:command selector="div.class" name="setHtmlAsChild"
+               selectorType="">
 \t<kukit:param name="html">new content</kukit:param>
 </kukit:command>
 ''')
-- 
http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins

Reply via email to