[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