[KSS-checkins] r50854 - in kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo: . selenium_tests

jone at codespeak.net jone at codespeak.net
Mon Jan 21 21:12:18 CET 2008


Author: jone
Date: Mon Jan 21 21:12:15 2008
New Revision: 50854

Added:
   kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/addressbook.css
   kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/addressbook.kss
   kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/addressbook.pt
   kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/addressbook.py
   kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/addressbook.zcml
   kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/selenium_tests/addressbook.html
Removed:
   kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.css
   kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.kss
   kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.pt
   kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.py
   kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.zcml
   kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/selenium_tests/dynamic_table.html
Modified:
   kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/config.py
   kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/configure.zcml
   kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/zopeconfig.py
Log:
renamed "dynamic_tables" application to "addressbook"

Added: kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/addressbook.css
==============================================================================
--- (empty file)
+++ kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/addressbook.css	Mon Jan 21 21:12:15 2008
@@ -0,0 +1,20 @@
+table#personTable {
+    margin-left: auto;
+    margin-right: auto;
+    border: 1px solid #f2ae8c;
+}
+
+table#personTable th {
+    background-color: #f2ae8c;
+    padding-left: 5px;
+    padding-right: 5px;
+}
+
+div.centered {
+    text-align: center;
+}
+
+hr {
+    border: none;
+    border-top: 1px solid #FF4916;
+}

Added: kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/addressbook.kss
==============================================================================
--- (empty file)
+++ kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/addressbook.kss	Mon Jan 21 21:12:15 2008
@@ -0,0 +1,40 @@
+input#submit:click {
+    evt-click-preventdefault:   true;
+    action-server:              addPerson;
+    addPerson-kssSubmitForm:       currentForm();
+}
+
+input#clean:click {
+    evt-click-preventdefault:   true;
+    action-server:              cleanPersons;
+}
+
+input.moveUp:click {
+    evt-click-preventdefault:   true;
+    action-server:              moveUp;
+    moveUp-pid:                 kssAttr(pid);
+}
+
+input.toBottom:click {
+    evt-click-preventdefault:   true;
+    action-server:              toBottom;
+    toBottom-pid:               kssAttr(pid);
+}
+
+input.toTop:click {
+    evt-click-preventdefault:   true;
+    action-server:              toTop;
+    toTop-pid:                  kssAttr(pid);
+}
+
+input.moveDown:click {
+    evt-click-preventdefault:   true;
+    action-server:              moveDown;
+    moveDown-pid:               kssAttr(pid);
+}
+
+input.remove:click {
+    evt-click-preventdefault:   true;
+    action-server:              removePerson;
+    removePerson-pid:           kssAttr(pid);
+}

Added: kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/addressbook.pt
==============================================================================
--- (empty file)
+++ kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/addressbook.pt	Mon Jan 21 21:12:15 2008
@@ -0,0 +1,81 @@
+<html tal:define="viewname string:addressbook">
+ 
+  <head>
+  
+    <metal:header use-macro="context/@@header_macros/header_resources" />
+    <link rel="stylesheet" type="text/css"
+          tal:attributes="href
+          string:${context/@@absolute_url}/++resource++${viewname}.css"/>
+  
+  </head>
+
+  <body>
+    
+    <p metal:use-macro="context/@@body_macros/header">header</p>
+
+    <h2>Addressbook</h2>
+
+    <form id="addPerson">
+
+        <div>
+            <label for="name">Name</label><br />
+            <input type="text" name="name" id="name" />
+        </div>
+
+        <div>
+            <label for="address">Address</label><br />
+            <textarea name="address"></textarea>
+        </div>
+        <div>
+            <label for="city">City</label><br />
+            <input type="text" name="city" />
+        </div>
+        <div>
+            <label for="country">Country</label><br /> 
+            <select name="country">
+              <option></option>
+              <option>Norway</option>
+              <option>USA</option>
+              <option>Other</option>
+            </select>
+        </div>
+        <div>
+            <label for="telephone">Telephone</label><br />
+            <input type="text" name="telephone" />
+        </div>
+        <div>
+            <input type="submit" id="submit" value="Save" class="button" />
+            <input type="reset" class="button" value="Reset Form" />
+        </div>
+
+    </form>
+
+
+    <div class="centered">
+
+        <input type="button" class="button" id="clean" value="Clear Addressbook" />
+
+        <table id="personTable">
+            <thead>
+                <tr>
+                    <th>Name</th>
+                    <th>Address</th>
+                    <th>City</th>
+                    <th>Country</th>
+                    <th>Telephone</th>
+                    <th> </th>
+                </tr>
+            </thead>
+            <tbody>
+                <tal:repeat repeat="person context/getPersons">
+                    <tal:replace replace="structure python:view.renderPersonAsTr(person)" />
+                </tal:repeat>
+            </tbody>
+        </table>
+
+    </div>
+
+    <hr />
+
+  </body>
+</html>

Added: kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/addressbook.py
==============================================================================
--- (empty file)
+++ kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/addressbook.py	Mon Jan 21 21:12:15 2008
@@ -0,0 +1,147 @@
+# Copyright (c) 2005-2007
+# Authors: KSS Project Contributors (see docs/CREDITS.txt)
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as published
+# by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+from kss.core import KSSView, force_unicode, KSSExplicitError, kssaction
+from time import time
+from persistent.list import PersistentList
+
+class KSSDynamicTableDemo(KSSView):
+
+    def getPersons(self):
+        return self.context.getValue('persons', PersistentList())
+
+    def cleanPersons(self):
+        self.context.setValue('persons', PersistentList())
+        self.getCommandSet('core').replaceHTML('table#personTable tbody', '<tbody></tbody>')
+        return self.render()
+
+    def addPerson(self, name, address, city, country, telephone):
+        """ adds a person"""
+        persons = self.getPersons()
+        person = {
+            'pid' : str(time()).replace('.',''),
+            'name' : name,
+            'address' : address,
+            'city' : city,
+            'country' : country,
+            'telephone' : telephone
+        }
+        persons.append(person)
+        html = self.renderPersonAsTr(person)
+        self.getCommandSet('core').insertHTMLAsLastChild('table#personTable tbody', html)
+        return self.render()
+    
+
+    def removePerson(self, pid):
+        persons = self.getPersons()
+        for p in persons:
+            if p['pid'] == pid:
+                persons.remove(p)
+        self.getCommandSet('core').deleteNode('tr#pid%s' % pid)
+        return self.render()
+
+
+    def moveUp(self, pid):
+        persons = self.getPersons()
+        for i in range(1, len(persons)):
+            pid1 = persons[i]['pid']
+            pid2 = persons[i-1]['pid']
+            if pid==pid1:
+                self.switchPersons(pid1, pid2)
+                break
+        return self.render()
+
+    def moveDown(self, pid):
+        persons = self.getPersons()
+        for i in range(0, len(persons)-1):
+            pid1 = persons[i]['pid']
+            pid2 = persons[i+1]['pid']
+            if pid==pid1:
+                self.switchPersons(pid1, pid2)
+                break
+        return self.render()
+
+    def toTop(self, pid):
+        persons = self.getPersons()
+        firstPid = persons[0]['pid']
+        if firstPid == pid:
+            return self.render()
+        self.getCommandSet('core').moveNodeBefore('tr#pid%s' % pid, 'pid%s' % firstPid)
+        for p in persons:
+            if p['pid'] == pid:
+                persons.remove(p)
+                persons.insert(0, p)
+                break
+        return self.render()
+
+    def toBottom(self, pid):
+        persons = self.getPersons()
+        lastPid = persons[-1]['pid']
+        if lastPid == pid:
+            return self.render()
+        self.getCommandSet('core').moveNodeAfter('tr#pid%s' % pid, 'pid%s' % lastPid)
+        for p in persons:
+            if p['pid'] == pid:
+                persons.remove(p)
+                persons.append(p)
+                break
+        return self.render()
+
+
+    def switchPersons(self, pid1, pid2):
+        persons = self.getPersons()
+        p1 = None
+        i1 = None
+        p2 = None
+        i2 = None
+        for i in range(0, len(persons)):
+            if persons[i]['pid'] == pid1:
+                p1 = persons[i]
+                i1 = i
+            if persons[i]['pid'] == pid2:
+                p2 = persons[i]
+                i2 = i
+        if p1 and p2:
+            self.getCommandSet('core').replaceHTML('tr#pid%s' % p2['pid'], '<tr class="placeholder"></tr>')
+            self.getCommandSet('core').replaceHTML('tr#pid%s' % p1['pid'], self.renderPersonAsTr(p2))
+            self.getCommandSet('core').replaceHTML('tr.placeholder', self.renderPersonAsTr(p1))
+            persons[i1] = p2
+            persons[i2] = p1
+
+
+
+    def renderPersonAsTr(self, person):
+        pid = person['pid']
+        buttons = '''
+                    <input type="button" class="button remove kssattr-pid-%(pid)s" value="Remove">
+                    <input type="button" class="button moveUp kssattr-pid-%(pid)s" value="Up">
+                    <input type="button" class="button moveDown kssattr-pid-%(pid)s" value="Down">
+                    <input type="button" class="button toTop kssattr-pid-%(pid)s" value="Top">
+                    <input type="button" class="button toBottom kssattr-pid-%(pid)s" value="Bottom">
+                ''' % {'pid' : pid}
+        html = """<tr id="pid%(pid)s"><td>%(name)s</td><td>%(address)s</td><td>%(city)s</td><td>%(country)s</td><td>%(telephone)s</td><td>%(buttons)s</td></tr>""" % {
+                'pid' : person['pid'],
+                'name' : person['name'],
+                'address' : person['address'],
+                'city' : person['city'],
+                'country' : person['country'],
+                'telephone' : person['telephone'],
+                'buttons' : buttons
+        }
+        return html
+
+

Added: kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/addressbook.zcml
==============================================================================
--- (empty file)
+++ kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/addressbook.zcml	Mon Jan 21 21:12:15 2008
@@ -0,0 +1,101 @@
+<configure xmlns="http://namespaces.zope.org/zope"
+           xmlns:browser="http://namespaces.zope.org/browser"
+           xmlns:kss="http://namespaces.zope.org/kss"
+           xmlns:zcml="http://namespaces.zope.org/zcml"
+		   i18n_domain="kss"
+		   >
+
+  <!-- Dynamic table -->
+  <browser:page
+      for="kss.demo.interfaces.ISimpleContent"
+    class=".addressbook.KSSDynamicTableDemo"
+      template="addressbook.pt"
+      name="addressbook.html"
+      permission="zope.View"
+      />
+
+  <browser:page
+    for="kss.demo.interfaces.ISimpleContent"
+    class=".addressbook.KSSDynamicTableDemo"
+    attribute="cleanPersons"
+    name="cleanPersons"
+    permission="zope.View"
+    />
+
+  <browser:page
+    for="kss.demo.interfaces.ISimpleContent"
+    class=".addressbook.KSSDynamicTableDemo"
+    attribute="getPersons"
+    name="getPersons"
+    permission="zope.View"
+    />
+
+  <browser:page
+    for="kss.demo.interfaces.ISimpleContent"
+    class=".addressbook.KSSDynamicTableDemo"
+    attribute="moveDown"
+    name="moveDown"
+    permission="zope.View"
+    />
+
+  <browser:page
+    for="kss.demo.interfaces.ISimpleContent"
+    class=".addressbook.KSSDynamicTableDemo"
+    attribute="toTop"
+    name="toTop"
+    permission="zope.View"
+    />
+
+  <browser:page
+    for="kss.demo.interfaces.ISimpleContent"
+    class=".addressbook.KSSDynamicTableDemo"
+    attribute="toBottom"
+    name="toBottom"
+    permission="zope.View"
+    />
+
+  <browser:page
+    for="kss.demo.interfaces.ISimpleContent"
+    class=".addressbook.KSSDynamicTableDemo"
+    attribute="moveUp"
+    name="moveUp"
+    permission="zope.View"
+    />
+
+  <browser:page
+
+    for="kss.demo.interfaces.ISimpleContent"
+    class=".addressbook.KSSDynamicTableDemo"
+    attribute="removePerson"
+    name="removePerson"
+    permission="zope.View"
+    />
+
+  <browser:page
+    for="kss.demo.interfaces.ISimpleContent"
+    class=".addressbook.KSSDynamicTableDemo"
+    attribute="addPerson"
+    name="addPerson"
+    permission="zope.View"
+    />
+
+  <browser:page
+    for="kss.demo.interfaces.ISimpleContent"
+    class=".addressbook.KSSDynamicTableDemo"
+    attribute="renderPersonAsTr"
+    name="renderPersonAsTr"
+    permission="zope.View"
+    />
+
+  <browser:resource
+    file="addressbook.kss"
+    name="addressbook.kss"
+  />
+
+  <browser:resource
+    file="addressbook.css"
+    name="addressbook.css"
+    />
+
+</configure>
+

Modified: kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/config.py
==============================================================================
--- kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/config.py	(original)
+++ kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/config.py	Mon Jan 21 21:12:15 2008
@@ -16,7 +16,7 @@
 class CoreDemos(Plugin):
 
     zope_demos = (
-        KSSDemo('', 'Applications', "dynamic_table.html", "Addressbook"),
+        KSSDemo('', 'Applications', "addressbook.html", "Addressbook"),
         KSSDemo('', 'Applications', "typewriter.html", "Typewriter"),
 ##      KSSDemo('', '',  "draganddrop.html", "Scriptaculous drag and drop"),
         KSSDemo('', 'Parameter functions', 'pf_forms.html', 'Forms'),

Modified: kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/configure.zcml
==============================================================================
--- kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/configure.zcml	(original)
+++ kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/configure.zcml	Mon Jan 21 21:12:15 2008
@@ -546,7 +546,7 @@
     />
 
   <!-- Dynamic table -->
-  <include file="dynamic_table.zcml" />
+  <include file="addressbook.zcml" />
 
   <!-- Typewriter -->
   <include file="typewriter.zcml" />

Deleted: /kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.css
==============================================================================
--- /kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.css	Mon Jan 21 21:12:15 2008
+++ (empty file)
@@ -1,20 +0,0 @@
-table#personTable {
-    margin-left: auto;
-    margin-right: auto;
-    border: 1px solid #f2ae8c;
-}
-
-table#personTable th {
-    background-color: #f2ae8c;
-    padding-left: 5px;
-    padding-right: 5px;
-}
-
-div.centered {
-    text-align: center;
-}
-
-hr {
-    border: none;
-    border-top: 1px solid #FF4916;
-}

Deleted: /kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.kss
==============================================================================
--- /kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.kss	Mon Jan 21 21:12:15 2008
+++ (empty file)
@@ -1,40 +0,0 @@
-input#submit:click {
-    evt-click-preventdefault:   true;
-    action-server:              addPerson;
-    addPerson-kssSubmitForm:       currentForm();
-}
-
-input#clean:click {
-    evt-click-preventdefault:   true;
-    action-server:              cleanPersons;
-}
-
-input.moveUp:click {
-    evt-click-preventdefault:   true;
-    action-server:              moveUp;
-    moveUp-pid:                 kssAttr(pid);
-}
-
-input.toBottom:click {
-    evt-click-preventdefault:   true;
-    action-server:              toBottom;
-    toBottom-pid:               kssAttr(pid);
-}
-
-input.toTop:click {
-    evt-click-preventdefault:   true;
-    action-server:              toTop;
-    toTop-pid:                  kssAttr(pid);
-}
-
-input.moveDown:click {
-    evt-click-preventdefault:   true;
-    action-server:              moveDown;
-    moveDown-pid:               kssAttr(pid);
-}
-
-input.remove:click {
-    evt-click-preventdefault:   true;
-    action-server:              removePerson;
-    removePerson-pid:           kssAttr(pid);
-}

Deleted: /kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.pt
==============================================================================
--- /kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.pt	Mon Jan 21 21:12:15 2008
+++ (empty file)
@@ -1,81 +0,0 @@
-<html tal:define="viewname string:dynamic_table">
- 
-  <head>
-  
-    <metal:header use-macro="context/@@header_macros/header_resources" />
-    <link rel="stylesheet" type="text/css"
-          tal:attributes="href
-          string:${context/@@absolute_url}/++resource++${viewname}.css"/>
-  
-  </head>
-
-  <body>
-    
-    <p metal:use-macro="context/@@body_macros/header">header</p>
-
-    <h2>Addressbook</h2>
-
-    <form id="addPerson">
-
-        <div>
-            <label for="name">Name</label><br />
-            <input type="text" name="name" id="name" />
-        </div>
-
-        <div>
-            <label for="address">Address</label><br />
-            <textarea name="address"></textarea>
-        </div>
-        <div>
-            <label for="city">City</label><br />
-            <input type="text" name="city" />
-        </div>
-        <div>
-            <label for="country">Country</label><br /> 
-            <select name="country">
-              <option></option>
-              <option>Norway</option>
-              <option>USA</option>
-              <option>Other</option>
-            </select>
-        </div>
-        <div>
-            <label for="telephone">Telephone</label><br />
-            <input type="text" name="telephone" />
-        </div>
-        <div>
-            <input type="submit" id="submit" value="Save" class="button" />
-            <input type="reset" class="button" value="Reset Form" />
-        </div>
-
-    </form>
-
-
-    <div class="centered">
-
-        <input type="button" class="button" id="clean" value="Clear Addressbook" />
-
-        <table id="personTable">
-            <thead>
-                <tr>
-                    <th>Name</th>
-                    <th>Address</th>
-                    <th>City</th>
-                    <th>Country</th>
-                    <th>Telephone</th>
-                    <th> </th>
-                </tr>
-            </thead>
-            <tbody>
-                <tal:repeat repeat="person context/getPersons">
-                    <tal:replace replace="structure python:view.renderPersonAsTr(person)" />
-                </tal:repeat>
-            </tbody>
-        </table>
-
-    </div>
-
-    <hr />
-
-  </body>
-</html>

Deleted: /kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.py
==============================================================================
--- /kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.py	Mon Jan 21 21:12:15 2008
+++ (empty file)
@@ -1,147 +0,0 @@
-# Copyright (c) 2005-2007
-# Authors: KSS Project Contributors (see docs/CREDITS.txt)
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2 as published
-# by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
-from kss.core import KSSView, force_unicode, KSSExplicitError, kssaction
-from time import time
-from persistent.list import PersistentList
-
-class KSSDynamicTableDemo(KSSView):
-
-    def getPersons(self):
-        return self.context.getValue('persons', PersistentList())
-
-    def cleanPersons(self):
-        self.context.setValue('persons', PersistentList())
-        self.getCommandSet('core').replaceHTML('table#personTable tbody', '<tbody></tbody>')
-        return self.render()
-
-    def addPerson(self, name, address, city, country, telephone):
-        """ adds a person"""
-        persons = self.getPersons()
-        person = {
-            'pid' : str(time()).replace('.',''),
-            'name' : name,
-            'address' : address,
-            'city' : city,
-            'country' : country,
-            'telephone' : telephone
-        }
-        persons.append(person)
-        html = self.renderPersonAsTr(person)
-        self.getCommandSet('core').insertHTMLAsLastChild('table#personTable tbody', html)
-        return self.render()
-    
-
-    def removePerson(self, pid):
-        persons = self.getPersons()
-        for p in persons:
-            if p['pid'] == pid:
-                persons.remove(p)
-        self.getCommandSet('core').deleteNode('tr#pid%s' % pid)
-        return self.render()
-
-
-    def moveUp(self, pid):
-        persons = self.getPersons()
-        for i in range(1, len(persons)):
-            pid1 = persons[i]['pid']
-            pid2 = persons[i-1]['pid']
-            if pid==pid1:
-                self.switchPersons(pid1, pid2)
-                break
-        return self.render()
-
-    def moveDown(self, pid):
-        persons = self.getPersons()
-        for i in range(0, len(persons)-1):
-            pid1 = persons[i]['pid']
-            pid2 = persons[i+1]['pid']
-            if pid==pid1:
-                self.switchPersons(pid1, pid2)
-                break
-        return self.render()
-
-    def toTop(self, pid):
-        persons = self.getPersons()
-        firstPid = persons[0]['pid']
-        if firstPid == pid:
-            return self.render()
-        self.getCommandSet('core').moveNodeBefore('tr#pid%s' % pid, 'pid%s' % firstPid)
-        for p in persons:
-            if p['pid'] == pid:
-                persons.remove(p)
-                persons.insert(0, p)
-                break
-        return self.render()
-
-    def toBottom(self, pid):
-        persons = self.getPersons()
-        lastPid = persons[-1]['pid']
-        if lastPid == pid:
-            return self.render()
-        self.getCommandSet('core').moveNodeAfter('tr#pid%s' % pid, 'pid%s' % lastPid)
-        for p in persons:
-            if p['pid'] == pid:
-                persons.remove(p)
-                persons.append(p)
-                break
-        return self.render()
-
-
-    def switchPersons(self, pid1, pid2):
-        persons = self.getPersons()
-        p1 = None
-        i1 = None
-        p2 = None
-        i2 = None
-        for i in range(0, len(persons)):
-            if persons[i]['pid'] == pid1:
-                p1 = persons[i]
-                i1 = i
-            if persons[i]['pid'] == pid2:
-                p2 = persons[i]
-                i2 = i
-        if p1 and p2:
-            self.getCommandSet('core').replaceHTML('tr#pid%s' % p2['pid'], '<tr class="placeholder"></tr>')
-            self.getCommandSet('core').replaceHTML('tr#pid%s' % p1['pid'], self.renderPersonAsTr(p2))
-            self.getCommandSet('core').replaceHTML('tr.placeholder', self.renderPersonAsTr(p1))
-            persons[i1] = p2
-            persons[i2] = p1
-
-
-
-    def renderPersonAsTr(self, person):
-        pid = person['pid']
-        buttons = '''
-                    <input type="button" class="button remove kssattr-pid-%(pid)s" value="Remove">
-                    <input type="button" class="button moveUp kssattr-pid-%(pid)s" value="Up">
-                    <input type="button" class="button moveDown kssattr-pid-%(pid)s" value="Down">
-                    <input type="button" class="button toTop kssattr-pid-%(pid)s" value="Top">
-                    <input type="button" class="button toBottom kssattr-pid-%(pid)s" value="Bottom">
-                ''' % {'pid' : pid}
-        html = """<tr id="pid%(pid)s"><td>%(name)s</td><td>%(address)s</td><td>%(city)s</td><td>%(country)s</td><td>%(telephone)s</td><td>%(buttons)s</td></tr>""" % {
-                'pid' : person['pid'],
-                'name' : person['name'],
-                'address' : person['address'],
-                'city' : person['city'],
-                'country' : person['country'],
-                'telephone' : person['telephone'],
-                'buttons' : buttons
-        }
-        return html
-
-

Deleted: /kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.zcml
==============================================================================
--- /kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.zcml	Mon Jan 21 21:12:15 2008
+++ (empty file)
@@ -1,101 +0,0 @@
-<configure xmlns="http://namespaces.zope.org/zope"
-           xmlns:browser="http://namespaces.zope.org/browser"
-           xmlns:kss="http://namespaces.zope.org/kss"
-           xmlns:zcml="http://namespaces.zope.org/zcml"
-		   i18n_domain="kss"
-		   >
-
-  <!-- Dynamic table -->
-  <browser:page
-      for="kss.demo.interfaces.ISimpleContent"
-    class=".dynamic_table.KSSDynamicTableDemo"
-      template="dynamic_table.pt"
-      name="dynamic_table.html"
-      permission="zope.View"
-      />
-
-  <browser:page
-    for="kss.demo.interfaces.ISimpleContent"
-    class=".dynamic_table.KSSDynamicTableDemo"
-    attribute="cleanPersons"
-    name="cleanPersons"
-    permission="zope.View"
-    />
-
-  <browser:page
-    for="kss.demo.interfaces.ISimpleContent"
-    class=".dynamic_table.KSSDynamicTableDemo"
-    attribute="getPersons"
-    name="getPersons"
-    permission="zope.View"
-    />
-
-  <browser:page
-    for="kss.demo.interfaces.ISimpleContent"
-    class=".dynamic_table.KSSDynamicTableDemo"
-    attribute="moveDown"
-    name="moveDown"
-    permission="zope.View"
-    />
-
-  <browser:page
-    for="kss.demo.interfaces.ISimpleContent"
-    class=".dynamic_table.KSSDynamicTableDemo"
-    attribute="toTop"
-    name="toTop"
-    permission="zope.View"
-    />
-
-  <browser:page
-    for="kss.demo.interfaces.ISimpleContent"
-    class=".dynamic_table.KSSDynamicTableDemo"
-    attribute="toBottom"
-    name="toBottom"
-    permission="zope.View"
-    />
-
-  <browser:page
-    for="kss.demo.interfaces.ISimpleContent"
-    class=".dynamic_table.KSSDynamicTableDemo"
-    attribute="moveUp"
-    name="moveUp"
-    permission="zope.View"
-    />
-
-  <browser:page
-
-    for="kss.demo.interfaces.ISimpleContent"
-    class=".dynamic_table.KSSDynamicTableDemo"
-    attribute="removePerson"
-    name="removePerson"
-    permission="zope.View"
-    />
-
-  <browser:page
-    for="kss.demo.interfaces.ISimpleContent"
-    class=".dynamic_table.KSSDynamicTableDemo"
-    attribute="addPerson"
-    name="addPerson"
-    permission="zope.View"
-    />
-
-  <browser:page
-    for="kss.demo.interfaces.ISimpleContent"
-    class=".dynamic_table.KSSDynamicTableDemo"
-    attribute="renderPersonAsTr"
-    name="renderPersonAsTr"
-    permission="zope.View"
-    />
-
-  <browser:resource
-    file="dynamic_table.kss"
-    name="dynamic_table.kss"
-  />
-
-  <browser:resource
-    file="dynamic_table.css"
-    name="dynamic_table.css"
-    />
-
-</configure>
-

Added: kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/selenium_tests/addressbook.html
==============================================================================
--- (empty file)
+++ kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/selenium_tests/addressbook.html	Mon Jan 21 21:12:15 2008
@@ -0,0 +1,294 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>addressbook</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">addressbook</td></tr>
+</thead><tbody>
+<tr>
+	<td>open</td>
+	<td>/demo/addressbook.html</td>
+	<td></td>
+</tr>
+<tr>
+	<td>assertTextPresent</td>
+	<td>Addressbook</td>
+	<td></td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>clean</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForElementNotPresent</td>
+	<td>//tr[2]</td>
+	<td></td>
+</tr>
+<tr>
+	<td>assertElementNotPresent</td>
+	<td>//tr[2]</td>
+	<td></td>
+</tr>
+<tr>
+	<td>type</td>
+	<td>name</td>
+	<td>Carsten</td>
+</tr>
+<tr>
+	<td>type</td>
+	<td>city</td>
+	<td>Aachen</td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>submit</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForText</td>
+	<td>//td[1]</td>
+	<td>Carsten</td>
+</tr>
+<tr>
+	<td>assertText</td>
+	<td>//td[1]</td>
+	<td>Carsten</td>
+</tr>
+<tr>
+	<td>assertText</td>
+	<td>//td[3]</td>
+	<td>Aachen</td>
+</tr>
+<tr>
+	<td>type</td>
+	<td>name</td>
+	<td>Jonas</td>
+</tr>
+<tr>
+	<td>type</td>
+	<td>city</td>
+	<td>Bern</td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>submit</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForText</td>
+	<td>//tr[2]/td[1]</td>
+	<td>Jonas</td>
+</tr>
+<tr>
+	<td>assertText</td>
+	<td>//tr[2]/td[1]</td>
+	<td>Jonas</td>
+</tr>
+<tr>
+	<td>assertText</td>
+	<td>//tr[2]/td[3]</td>
+	<td>Bern</td>
+</tr>
+<tr>
+	<td>type</td>
+	<td>name</td>
+	<td>Godefroid</td>
+</tr>
+<tr>
+	<td>type</td>
+	<td>city</td>
+	<td>Louvain-la-neuve</td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>submit</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForText</td>
+	<td>//tr[3]/td[1]</td>
+	<td>Godefroid</td>
+</tr>
+<tr>
+	<td>assertText</td>
+	<td>//tr[3]/td[1]</td>
+	<td>Godefroid</td>
+</tr>
+<tr>
+	<td>assertText</td>
+	<td>//tr[3]/td[3]</td>
+	<td>Louvain-la-neuve</td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>//tr[3]/td[6]/input[@value='Up']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForText</td>
+	<td>//tr[2]/td[1]</td>
+	<td>Godefroid</td>
+</tr>
+<tr>
+	<td>assertText</td>
+	<td>//tr[2]/td[1]</td>
+	<td>Godefroid</td>
+</tr>
+<tr>
+	<td>assertText</td>
+	<td>//tr[2]/td[3]</td>
+	<td>Louvain-la-neuve</td>
+</tr>
+<tr>
+	<td>assertText</td>
+	<td>//tr[3]/td[1]</td>
+	<td>Jonas</td>
+</tr>
+<tr>
+	<td>assertText</td>
+	<td>//tr[3]/td[3]</td>
+	<td>Bern</td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>//input[@value='Down']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForText</td>
+	<td>//tr[1]/td[1]</td>
+	<td>Godefroid</td>
+</tr>
+<tr>
+	<td>assertText</td>
+	<td>//tr[1]/td[1]</td>
+	<td>Godefroid</td>
+</tr>
+<tr>
+	<td>assertText</td>
+	<td>//tr[1]/td[3]</td>
+	<td>Louvain-la-neuve</td>
+</tr>
+<tr>
+	<td>assertText</td>
+	<td>//tr[2]/td[1]</td>
+	<td>Carsten</td>
+</tr>
+<tr>
+	<td>assertText</td>
+	<td>//tr[2]/td[3]</td>
+	<td>Aachen</td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>//tr[2]/td[6]/input[@value='Top']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForText</td>
+	<td>//tr[1]/td[1]</td>
+	<td>Carsten</td>
+</tr>
+<tr>
+	<td>assertText</td>
+	<td>//tr[1]/td[1]</td>
+	<td>Carsten</td>
+</tr>
+<tr>
+	<td>assertText</td>
+	<td>//tr[1]/td[3]</td>
+	<td>Aachen</td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>//tr[2]/td[6]/input[@value='Bottom']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForText</td>
+	<td>//tr[3]/td[1]</td>
+	<td>Godefroid</td>
+</tr>
+<tr>
+	<td>assertText</td>
+	<td>//tr[3]/td[1]</td>
+	<td>Godefroid</td>
+</tr>
+<tr>
+	<td>assertText</td>
+	<td>//tr[3]/td[3]</td>
+	<td>Louvain-la-neuve</td>
+</tr>
+<tr>
+	<td>assertText</td>
+	<td>//tr[2]/td[1]</td>
+	<td>Jonas</td>
+</tr>
+<tr>
+	<td>assertText</td>
+	<td>//tr[2]/td[3]</td>
+	<td>Bern</td>
+</tr>
+<tr>
+	<td>assertText</td>
+	<td>//tr[3]/td[1]</td>
+	<td>Godefroid</td>
+</tr>
+<tr>
+	<td>assertText</td>
+	<td>//tr[3]/td[3]</td>
+	<td>Louvain-la-neuve</td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>//tr[2]/td[6]/input[@value='Remove']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForText</td>
+	<td>//tr[1]/td[1]</td>
+	<td>Carsten</td>
+</tr>
+<tr>
+	<td>assertText</td>
+	<td>//tr[1]/td[1]</td>
+	<td>Carsten</td>
+</tr>
+<tr>
+	<td>assertText</td>
+	<td>//tr[1]/td[3]</td>
+	<td>Aachen</td>
+</tr>
+<tr>
+	<td>assertText</td>
+	<td>//tr[2]/td[1]</td>
+	<td>Godefroid</td>
+</tr>
+<tr>
+	<td>assertText</td>
+	<td>//tr[2]/td[3]</td>
+	<td>Louvain-la-neuve</td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>clean</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForElementNotPresent</td>
+	<td>//tr[2]</td>
+	<td></td>
+</tr>
+<tr>
+	<td>assertElementNotPresent</td>
+	<td>//tr[2]</td>
+	<td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>

Deleted: /kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/selenium_tests/dynamic_table.html
==============================================================================
--- /kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/selenium_tests/dynamic_table.html	Mon Jan 21 21:12:15 2008
+++ (empty file)
@@ -1,294 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>dynamic_table</title>
-</head>
-<body>
-<table cellpadding="1" cellspacing="1" border="1">
-<thead>
-<tr><td rowspan="1" colspan="3">dynamic_table</td></tr>
-</thead><tbody>
-<tr>
-	<td>open</td>
-	<td>/demo/dynamic_table.html</td>
-	<td></td>
-</tr>
-<tr>
-	<td>assertTextPresent</td>
-	<td>Addressbook</td>
-	<td></td>
-</tr>
-<tr>
-	<td>click</td>
-	<td>clean</td>
-	<td></td>
-</tr>
-<tr>
-	<td>waitForElementNotPresent</td>
-	<td>//tr[2]</td>
-	<td></td>
-</tr>
-<tr>
-	<td>assertElementNotPresent</td>
-	<td>//tr[2]</td>
-	<td></td>
-</tr>
-<tr>
-	<td>type</td>
-	<td>name</td>
-	<td>Carsten</td>
-</tr>
-<tr>
-	<td>type</td>
-	<td>city</td>
-	<td>Aachen</td>
-</tr>
-<tr>
-	<td>click</td>
-	<td>submit</td>
-	<td></td>
-</tr>
-<tr>
-	<td>waitForText</td>
-	<td>//td[1]</td>
-	<td>Carsten</td>
-</tr>
-<tr>
-	<td>assertText</td>
-	<td>//td[1]</td>
-	<td>Carsten</td>
-</tr>
-<tr>
-	<td>assertText</td>
-	<td>//td[3]</td>
-	<td>Aachen</td>
-</tr>
-<tr>
-	<td>type</td>
-	<td>name</td>
-	<td>Jonas</td>
-</tr>
-<tr>
-	<td>type</td>
-	<td>city</td>
-	<td>Bern</td>
-</tr>
-<tr>
-	<td>click</td>
-	<td>submit</td>
-	<td></td>
-</tr>
-<tr>
-	<td>waitForText</td>
-	<td>//tr[2]/td[1]</td>
-	<td>Jonas</td>
-</tr>
-<tr>
-	<td>assertText</td>
-	<td>//tr[2]/td[1]</td>
-	<td>Jonas</td>
-</tr>
-<tr>
-	<td>assertText</td>
-	<td>//tr[2]/td[3]</td>
-	<td>Bern</td>
-</tr>
-<tr>
-	<td>type</td>
-	<td>name</td>
-	<td>Godefroid</td>
-</tr>
-<tr>
-	<td>type</td>
-	<td>city</td>
-	<td>Louvain-la-neuve</td>
-</tr>
-<tr>
-	<td>click</td>
-	<td>submit</td>
-	<td></td>
-</tr>
-<tr>
-	<td>waitForText</td>
-	<td>//tr[3]/td[1]</td>
-	<td>Godefroid</td>
-</tr>
-<tr>
-	<td>assertText</td>
-	<td>//tr[3]/td[1]</td>
-	<td>Godefroid</td>
-</tr>
-<tr>
-	<td>assertText</td>
-	<td>//tr[3]/td[3]</td>
-	<td>Louvain-la-neuve</td>
-</tr>
-<tr>
-	<td>click</td>
-	<td>//tr[3]/td[6]/input[@value='up']</td>
-	<td></td>
-</tr>
-<tr>
-	<td>waitForText</td>
-	<td>//tr[2]/td[1]</td>
-	<td>Godefroid</td>
-</tr>
-<tr>
-	<td>assertText</td>
-	<td>//tr[2]/td[1]</td>
-	<td>Godefroid</td>
-</tr>
-<tr>
-	<td>assertText</td>
-	<td>//tr[2]/td[3]</td>
-	<td>Louvain-la-neuve</td>
-</tr>
-<tr>
-	<td>assertText</td>
-	<td>//tr[3]/td[1]</td>
-	<td>Jonas</td>
-</tr>
-<tr>
-	<td>assertText</td>
-	<td>//tr[3]/td[3]</td>
-	<td>Bern</td>
-</tr>
-<tr>
-	<td>click</td>
-	<td>//input[@value='down']</td>
-	<td></td>
-</tr>
-<tr>
-	<td>waitForText</td>
-	<td>//tr[1]/td[1]</td>
-	<td>Godefroid</td>
-</tr>
-<tr>
-	<td>assertText</td>
-	<td>//tr[1]/td[1]</td>
-	<td>Godefroid</td>
-</tr>
-<tr>
-	<td>assertText</td>
-	<td>//tr[1]/td[3]</td>
-	<td>Louvain-la-neuve</td>
-</tr>
-<tr>
-	<td>assertText</td>
-	<td>//tr[2]/td[1]</td>
-	<td>Carsten</td>
-</tr>
-<tr>
-	<td>assertText</td>
-	<td>//tr[2]/td[3]</td>
-	<td>Aachen</td>
-</tr>
-<tr>
-	<td>click</td>
-	<td>//tr[2]/td[6]/input[@value='top']</td>
-	<td></td>
-</tr>
-<tr>
-	<td>waitForText</td>
-	<td>//tr[1]/td[1]</td>
-	<td>Carsten</td>
-</tr>
-<tr>
-	<td>assertText</td>
-	<td>//tr[1]/td[1]</td>
-	<td>Carsten</td>
-</tr>
-<tr>
-	<td>assertText</td>
-	<td>//tr[1]/td[3]</td>
-	<td>Aachen</td>
-</tr>
-<tr>
-	<td>click</td>
-	<td>//tr[2]/td[6]/input[@value='bottom']</td>
-	<td></td>
-</tr>
-<tr>
-	<td>waitForText</td>
-	<td>//tr[3]/td[1]</td>
-	<td>Godefroid</td>
-</tr>
-<tr>
-	<td>assertText</td>
-	<td>//tr[3]/td[1]</td>
-	<td>Godefroid</td>
-</tr>
-<tr>
-	<td>assertText</td>
-	<td>//tr[3]/td[3]</td>
-	<td>Louvain-la-neuve</td>
-</tr>
-<tr>
-	<td>assertText</td>
-	<td>//tr[2]/td[1]</td>
-	<td>Jonas</td>
-</tr>
-<tr>
-	<td>assertText</td>
-	<td>//tr[2]/td[3]</td>
-	<td>Bern</td>
-</tr>
-<tr>
-	<td>assertText</td>
-	<td>//tr[3]/td[1]</td>
-	<td>Godefroid</td>
-</tr>
-<tr>
-	<td>assertText</td>
-	<td>//tr[3]/td[3]</td>
-	<td>Louvain-la-neuve</td>
-</tr>
-<tr>
-	<td>click</td>
-	<td>//tr[2]/td[6]/input[@value='remove']</td>
-	<td></td>
-</tr>
-<tr>
-	<td>waitForText</td>
-	<td>//tr[1]/td[1]</td>
-	<td>Carsten</td>
-</tr>
-<tr>
-	<td>assertText</td>
-	<td>//tr[1]/td[1]</td>
-	<td>Carsten</td>
-</tr>
-<tr>
-	<td>assertText</td>
-	<td>//tr[1]/td[3]</td>
-	<td>Aachen</td>
-</tr>
-<tr>
-	<td>assertText</td>
-	<td>//tr[2]/td[1]</td>
-	<td>Godefroid</td>
-</tr>
-<tr>
-	<td>assertText</td>
-	<td>//tr[2]/td[3]</td>
-	<td>Louvain-la-neuve</td>
-</tr>
-<tr>
-	<td>click</td>
-	<td>clean</td>
-	<td></td>
-</tr>
-<tr>
-	<td>waitForElementNotPresent</td>
-	<td>//tr[2]</td>
-	<td></td>
-</tr>
-<tr>
-	<td>assertElementNotPresent</td>
-	<td>//tr[2]</td>
-	<td></td>
-</tr>
-
-</tbody></table>
-</body>
-</html>

Modified: kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/zopeconfig.py
==============================================================================
--- kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/zopeconfig.py	(original)
+++ kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/zopeconfig.py	Mon Jan 21 21:12:15 2008
@@ -18,7 +18,7 @@
     implements(IResource)
 
     demos = (
-        KSSDemo('', 'Applications', "dynamic_table.html", "Addressbook"),
+        KSSDemo('', 'Applications', "addressbook.html", "Addressbook"),
         KSSDemo('', 'Applications', "typewriter.html", "Typewriter"),
 ##      KSSDemo('', '',  "draganddrop.html", "Scriptaculous drag and drop"),
         KSSDemo('', 'Parameter functions', 'pf_forms.html', 'Forms'),


More information about the Kukit-checkins mailing list