[KSS-checkins] r50794 - kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo

jone at codespeak.net jone at codespeak.net
Sun Jan 20 10:47:21 CET 2008


Author: jone
Date: Sun Jan 20 10:47:20 2008
New Revision: 50794

Added:
   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
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/tree.pt
   kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/zopeconfig.py
Log:
Added dynamic table demo


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	Sun Jan 20 10:47:20 2008
@@ -16,19 +16,8 @@
 class CoreDemos(Plugin):
 
     zope_demos = (
-        KSSDemo('', '', "basic_commands.html", "Change tag content"),
-        KSSDemo('', '', "two_selects.html", "Two selects"),
-        KSSDemo('', '', "autoupdate.html", "Auto update"),
-        KSSDemo('', '', "inline_edit.html", "Inline edit"),
-        KSSDemo('', '', "cancel_submit.html", "Cancel Submit Click"),
-        KSSDemo('', '', "tree.html", "Tree"),
-        KSSDemo('', '', "more_selectors.html", "More complex selectors"),
-        KSSDemo('', '', "two_select_revisited.html", "Master-slave selects revisited"),
-        KSSDemo('', '', "form_submit.html", "Form submit"),
-        KSSDemo('', '', "error_handling.html", "Error handling"),
-        KSSDemo('', '', "preventdefault.html", "Preventdefault (a.k.a. Safari workarounds)"),
-        KSSDemo('', '', "html_inserts.html", "HTML insertions (Change tag content returns)"),
-        KSSDemo('', '', "client-server-protocol", "Client server protocol"),
+        KSSDemo('', 'Applications', "dynamic_table.html", "Addressbook"),
+##      KSSDemo('', '',  "draganddrop.html", "Scriptaculous drag and drop"),
         KSSDemo('', 'Parameter functions', 'pf_forms.html', 'Forms'),
         KSSDemo('', 'Selectors', 'selectors.html', 'Parent node selector'),
         KSSDemo('', 'Core syntax', "kss_selector_param.html", "Kss selector parameters"),
@@ -37,6 +26,20 @@
         KSSDemo('', 'Core events', "kss_keyevents.html", "Key events"),
         KSSDemo('', 'Commands/Actions', "ca_focus.html", "Focus"),
         KSSDemo('', 'Commands/Actions', "actions.html", "Toggle case action"),
+        KSSDemo('', 'History', "basic_commands.html", "Change tag content"),
+        KSSDemo('', 'History', "two_selects.html", "Two selects"),
+        KSSDemo('', 'History', "autoupdate.html", "Auto update"),
+        KSSDemo('', 'History', "inline_edit.html", "Inline edit"),
+        KSSDemo('', 'History', "cancel_submit.html", "Cancel Submit Click"),
+        KSSDemo('', 'History', "tree.html", "Tree"),
+        KSSDemo('', 'History', "more_selectors.html", "More complex selectors"),
+        KSSDemo('', 'History', "two_select_revisited.html", "Master-slave selects revisited"),
+        KSSDemo('', 'History', "form_submit.html", "Form submit"),
+        KSSDemo('', 'History', "effects.html", "Effects"),
+        KSSDemo('', 'History', "error_handling.html", "Error handling"),
+        KSSDemo('', 'History', "preventdefault.html", "Preventdefault (a.k.a. Safari workarounds)"),
+        KSSDemo('', 'History', "html_inserts.html", "HTML insertions (Change tag content returns)"),
+        KSSDemo('', 'History', "client-server-protocol", "Client server protocol"),
         # XXX this should go to the other plugin wuth all its stuff
         KSSDemo('Effects', '', "effects.html", "Effects"),
         )

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	Sun Jan 20 10:47:20 2008
@@ -545,5 +545,8 @@
     permission="zope.View"
     />
 
+  <!-- Dynamic table -->
+  <include file="dynamic_table.zcml" />
+
 </configure>
 

Added: kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.kss
==============================================================================
--- (empty file)
+++ kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.kss	Sun Jan 20 10:47:20 2008
@@ -0,0 +1,32 @@
+input#submit:click {
+    evt-click-preventdefault:   true;
+    action-server:              addPerson;
+    addPerson-name:             currentFormVar(name);
+    addPerson-address:          currentFormVar(address);
+    addPerson-city:             currentFormVar(city);
+    addPerson-country:          currentFormVar(country);
+    addPerson-telephone:        currentFormVar(telephone);
+}
+
+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.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/dynamic_table.pt
==============================================================================
--- (empty file)
+++ kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.pt	Sun Jan 20 10:47:20 2008
@@ -0,0 +1,78 @@
+<html tal:define="viewname string:dynamic_table">
+ 
+  <head>
+  
+    <metal:header use-macro="context/@@header_macros/header_resources" />
+  
+  </head>
+
+  <body>
+    
+    <p metal:use-macro="context/@@body_macros/header">header</p>
+
+    <h2>Dynamic Tables</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" />
+            <input type="reset" />
+        </div>
+
+    </form>
+
+
+    <hr />
+
+    <input type="button" id="clean" value="clean" />
+
+
+    <hr />
+
+    <table border="1" 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>
+
+
+  </body>
+</html>

Added: kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.py
==============================================================================
--- (empty file)
+++ kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.py	Sun Jan 20 10:47:20 2008
@@ -0,0 +1,118 @@
+# 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 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="moveUp kssattr-pid-%(pid)s" value="up">
+                    <input type="button" class="moveDown kssattr-pid-%(pid)s" value="down">
+                    <input type="button" class="remove kssattr-pid-%(pid)s" value="remove">
+                ''' % {'pid' : pid}
+        html = """<tr class="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</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/dynamic_table.zcml
==============================================================================
--- (empty file)
+++ kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.zcml	Sun Jan 20 10:47:20 2008
@@ -0,0 +1,81 @@
+<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="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"
+  />
+
+
+</configure>
+

Modified: kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/tree.pt
==============================================================================
--- kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/tree.pt	(original)
+++ kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/tree.pt	Sun Jan 20 10:47:20 2008
@@ -1,4 +1,4 @@
-<html>
+<html tal:define="viewname string:tree">
   <head>
     <link rel="kinetic-stylesheet" type="text/css"
           tal:attributes="href string:${context/@@absolute_url}/++resource++tree.kss"/>

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	Sun Jan 20 10:47:20 2008
@@ -18,20 +18,7 @@
     implements(IResource)
 
     demos = (
-        KSSDemo('', '', "basic_commands.html", "Change tag content"),
-        KSSDemo('', '', "two_selects.html", "Two selects"),
-        KSSDemo('', '', "autoupdate.html", "Auto update"),
-        KSSDemo('', '', "inline_edit.html", "Inline edit"),
-        KSSDemo('', '', "cancel_submit.html", "Cancel Submit Click"),
-        KSSDemo('', '', "tree.html", "Tree"),
-        KSSDemo('', '', "more_selectors.html", "More complex selectors"),
-        KSSDemo('', '', "two_select_revisited.html", "Master-slave selects revisited"),
-        KSSDemo('', '', "form_submit.html", "Form submit"),
-        KSSDemo('', '', "effects.html", "Effects"),
-        KSSDemo('', '', "error_handling.html", "Error handling"),
-        KSSDemo('', '', "preventdefault.html", "Preventdefault (a.k.a. Safari workarounds)"),
-        KSSDemo('', '', "html_inserts.html", "HTML insertions (Change tag content returns)"),
-        KSSDemo('', '', "client-server-protocol", "Client server protocol"),
+        KSSDemo('', 'Applications', "dynamic_table.html", "Addressbook"),
 ##      KSSDemo('', '',  "draganddrop.html", "Scriptaculous drag and drop"),
         KSSDemo('', 'Parameter functions', 'pf_forms.html', 'Forms'),
         KSSDemo('', 'Selectors', 'selectors.html', 'Parent node selector'),
@@ -41,6 +28,20 @@
         KSSDemo('', 'Core events', "kss_keyevents.html", "Key events"),
         KSSDemo('', 'Commands/Actions', "ca_focus.html", "Focus"),
         KSSDemo('', 'Commands/Actions', "actions.html", "Toggle case action"),
+        KSSDemo('', 'History', "basic_commands.html", "Change tag content"),
+        KSSDemo('', 'History', "two_selects.html", "Two selects"),
+        KSSDemo('', 'History', "autoupdate.html", "Auto update"),
+        KSSDemo('', 'History', "inline_edit.html", "Inline edit"),
+        KSSDemo('', 'History', "cancel_submit.html", "Cancel Submit Click"),
+        KSSDemo('', 'History', "tree.html", "Tree"),
+        KSSDemo('', 'History', "more_selectors.html", "More complex selectors"),
+        KSSDemo('', 'History', "two_select_revisited.html", "Master-slave selects revisited"),
+        KSSDemo('', 'History', "form_submit.html", "Form submit"),
+        KSSDemo('', 'History', "effects.html", "Effects"),
+        KSSDemo('', 'History', "error_handling.html", "Error handling"),
+        KSSDemo('', 'History', "preventdefault.html", "Preventdefault (a.k.a. Safari workarounds)"),
+        KSSDemo('', 'History', "html_inserts.html", "HTML insertions (Change tag content returns)"),
+        KSSDemo('', 'History', "client-server-protocol", "Client server protocol"),
         )
 
     # directories are relative from the location of this .py file


More information about the Kukit-checkins mailing list