From jvloothuis at codespeak.net Wed Nov 1 04:09:10 2006 From: jvloothuis at codespeak.net (jvloothuis at codespeak.net) Date: Wed, 1 Nov 2006 04:09:10 +0100 (CET) Subject: [Kukit-checkins] r33990 - in kukit/azax/trunk: . plugins/core tests Message-ID: <20061101030910.D1EC010060@code0.codespeak.net> Author: jvloothuis Date: Wed Nov 1 04:08:53 2006 New Revision: 33990 Modified: kukit/azax/trunk/azaxview.py kukit/azax/trunk/events.py kukit/azax/trunk/interfaces.py kukit/azax/trunk/plugins/core/commands.py kukit/azax/trunk/tests/azaxview.txt kukit/azax/trunk/tests/test_azaxview.py Log: Made azax views sites with site managers to intercept all events and relay them as Azax events Modified: kukit/azax/trunk/azaxview.py ============================================================================== --- kukit/azax/trunk/azaxview.py (original) +++ kukit/azax/trunk/azaxview.py Wed Nov 1 04:08:53 2006 @@ -36,19 +36,54 @@ except ImportError: from zope.app.publisher.browser import BrowserView -from interfaces import IAzaxEvent - -from zope.interface import implements, Interface -from interfaces import IAzaxView from commands import AzaxCommands -import zope.component as capi +from events import AzaxEvent +from interfaces import IAzaxEvent, IAzaxView from pluginregistry.commandset import getRegisteredCommandSet +from zope import app, component, interface +from zope.app.component.hooks import setSite, setHooks +from zope.app.component.interfaces import ISite +from zope.app.component.site import clearSite +from zope.component.globalregistry import BaseGlobalComponents +from zope.component.interfaces import IComponentLookup +from zope.event import notify +from zope.interface import implements, Interface +from zope.publisher.browser import BrowserView -from zope import component -import zope.event -from events import AzaxEvent +class SiteView(BrowserView): + """A browser view that is its own site + """ + + def __init__(self, context, request): + super(SiteView, self).__init__(context, request) + + next_sitemanager = component.getSiteManager() + + self._sitemanager = BaseGlobalComponents('siteview') + interface.alsoProvides(self, ISite) + + self._sitemanager.__bases__ = (next_sitemanager, ) + + # register object event handler + self._sitemanager.registerHandler(self._eventRedispatcher) + setHooks() + setSite(self) + + def getSiteManager(self): + return self._sitemanager + + def setSiteManager(self, sm): + raise XXX + + @component.adapter(Interface) + def _eventRedispatcher(self, event): + if not IAzaxEvent.providedBy(event): + notify(AzaxEvent(self, event)) + + def render(self): + clearSite() -class AzaxBaseView(BrowserView): +class AzaxBaseView(SiteView): """ Base azax view this allows setting up the content of the response, and then @@ -58,7 +93,7 @@ implements(IAzaxView) def __init__(self, context, request): - BrowserView.__init__(self, context, request) + super(AzaxBaseView, self).__init__(context, request) self.commands = AzaxCommands() def _set_context(self, context): @@ -72,7 +107,9 @@ def render(self): '''All methods must use this to return their command set ''' - return self.commands.render(self.request) + commands = self.commands.render(self.request) + super(AzaxBaseView, self).render() + return commands def cancelRedirect(self): if self.request.RESPONSE.getStatus() == 302: @@ -84,9 +121,9 @@ def handle(self, *args): for event in args: # first fire all normal stuff - zope.event.notify(event) + notify(event) for event in args: # now do the azax bits - component.handle(AzaxEvent(self), event) + component.handle(AzaxEvent(self, event)) def getCommandSet(self, name): commandset = getRegisteredCommandSet(name) Modified: kukit/azax/trunk/events.py ============================================================================== --- kukit/azax/trunk/events.py (original) +++ kukit/azax/trunk/events.py Wed Nov 1 04:08:53 2006 @@ -4,5 +4,6 @@ class AzaxEvent(object): implements(IAzaxEvent) - def __init__(self, view): + def __init__(self, view, event): self.view = view + self.event = event Modified: kukit/azax/trunk/interfaces.py ============================================================================== --- kukit/azax/trunk/interfaces.py (original) +++ kukit/azax/trunk/interfaces.py Wed Nov 1 04:08:53 2006 @@ -112,4 +112,5 @@ This will normally be accompanied by another event.""" view = Attribute(u"The Azax view") + event = Attribute(u"The orginal event") Modified: kukit/azax/trunk/plugins/core/commands.py ============================================================================== --- kukit/azax/trunk/plugins/core/commands.py (original) +++ kukit/azax/trunk/plugins/core/commands.py Wed Nov 1 04:08:53 2006 @@ -16,7 +16,6 @@ from zope.interface import implements - class KSSCoreCommands(AzaxViewAdapter): __allow_access_to_unprotected_subobjects__ = 1 implements(IKSSCoreCommands) Modified: kukit/azax/trunk/tests/azaxview.txt ============================================================================== --- kukit/azax/trunk/tests/azaxview.txt (original) +++ kukit/azax/trunk/tests/azaxview.txt Wed Nov 1 04:08:53 2006 @@ -20,6 +20,11 @@ >>> from zope import component >>> from zope.lifecycleevent import ObjectModifiedEvent >>> from zope.lifecycleevent.interfaces import IObjectModifiedEvent + >>> from zope.event import notify + >>> from zope.app.component.interfaces import ISite + + >>> from zope.app.folder import folder + >>> myfolder = folder.rootFolder() Now we will write our custom. @@ -30,7 +35,7 @@ ... return self.render() >>> request = DebugTestRequest() - >>> view = SampleView(None, request) + >>> view = SampleView(myfolder, request) >>> view.add_page("some title") [] @@ -38,8 +43,9 @@ register a handler. This handler will catch the object event and add some Azax commands. - >>> @component.adapter(IAzaxEvent, IObjectModifiedEvent) - ... def stuff_happend(azax_event, orig_event): + >>> @component.adapter(IAzaxEvent) + ... def stuff_happend(azax_event): + ... orig_event = azax_event.event ... azax_event.view.getCommandSet('core').replaceInnerHTML( ... 'div.class', orig_event.object) >>> component.provideHandler(stuff_happend) @@ -49,3 +55,22 @@ >>> view.add_page("some title")[0]['params']['html'] u'some title' +The example above used our convenience method to generate events. You normally +do this for all mutations you make yourself. Not all events are generated this +way though. In case of a workflow transition events may be fired as well. Azax +views account for this automatically. You don't need to do anything special. + +We will demonstrate this using a simple view. This view will generate the +modified event through normal component api instead of our handle method. + + >>> class AnotherView(AzaxBaseView): + ... def add_page(self, title): + ... # normally you would change the zope database here + ... notify(ObjectModifiedEvent(title)) + ... return self.render() + +This should now still invoke our handler. + + >>> view = AnotherView(myfolder, request) + >>> view.add_page("another title")[0]['params']['html'] + u'another title' Modified: kukit/azax/trunk/tests/test_azaxview.py ============================================================================== --- kukit/azax/trunk/tests/test_azaxview.py (original) +++ kukit/azax/trunk/tests/test_azaxview.py Wed Nov 1 04:08:53 2006 @@ -37,9 +37,19 @@ from Products.azax.tests.base import IDebugRequest from Products.azax.tests.commandinspector import CommandInspectorView from zope import component +from Products.Five import zcml +import Products.Five +from zope.app.component.hooks import setSite, getSite, setHooks def setUpDoctTest(test=None): PlacelessSetup().setUp() + + zcml.load_config("meta.zcml", Products.Five) + zcml.load_config("permissions.zcml", Products.Five) + zcml.load_config("configure.zcml", Products.Five.component) + + zcml.load_config("configure.zcml", Products.Five.site) + commandview = component.adapter( IAzaxCommands, IDebugRequest)(CommandInspectorView) component.provideAdapter(commandview) From jvloothuis at codespeak.net Wed Nov 1 05:13:46 2006 From: jvloothuis at codespeak.net (jvloothuis at codespeak.net) Date: Wed, 1 Nov 2006 05:13:46 +0100 (CET) Subject: [Kukit-checkins] r33991 - in kukit/azax/trunk: . tests Message-ID: <20061101041346.0429B10053@code0.codespeak.net> Author: jvloothuis Date: Wed Nov 1 05:13:42 2006 New Revision: 33991 Added: kukit/azax/trunk/siteview.txt kukit/azax/trunk/tests/test_siteview.py Log: Added unit tests for site view Added: kukit/azax/trunk/siteview.txt ============================================================================== --- (empty file) +++ kukit/azax/trunk/siteview.txt Wed Nov 1 05:13:42 2006 @@ -0,0 +1,70 @@ +========= +Site view +========= + +All Azax views are not only a browser view but a site as well. A site is Zope +used as a local component registry. You can hookup adapters etc. in such a +place. Azax views are made sites to intercept all incomming events. + +By doing so the view is able to hookup it's own event redispatcher. This is a +normal event handler which generates the specific Azax events. These events +contain a reference to the view itself. By doing so event handlers can modify +the response body. + +This behaviour is needed for making event driven changes to a page. For +instance when you change a title in a document you also want the menu reloaded. +By using events for this we can achieve a degree of decoupling. + +The main class which implements views as a site is `SiteView`. + + >>> from Products.azax.azaxview import SiteView + +When created this view will make it's manager the default site manager. + + >>> from zope import component + >>> old_sitemanager = component.getSiteManager() + >>> view = SiteView(None, None) + >>> old_sitemanager is component.getSiteManager() + False + >>> view.getSiteManager() is component.getSiteManager() + True + +It also immediatly registers its special event handler. Like mentioned earlier +this will dispatch IAzaxEvent's. + + >>> from zope.component.eventtesting import getEvents, clearEvents + >>> from Products.azax.interfaces import IAzaxEvent + >>> from zope.lifecycleevent import ObjectModifiedEvent + >>> from zope.event import notify + + >>> clearEvents() + >>> notify(ObjectModifiedEvent(None)) + +Two events are fired by this. + + >>> len(getEvents()) + 2 + +The original event and the special IAzaxEvent. + + >>> from zope.lifecycleevent.interfaces import IObjectModifiedEvent + >>> original_event = getEvents()[0] + >>> IObjectModifiedEvent.providedBy(original_event) + True + + >>> azax_event = getEvents()[1] + >>> IAzaxEvent.providedBy(azax_event) + True + +The Azax event has reference to the view and the original event. + + >>> azax_event.event is original_event + True + >>> azax_event.view is view + True + +When the view is rendered it unregisters itself as a site. + + >>> view.render() + >>> view.getSiteManager() is component.getSiteManager() + False Added: kukit/azax/trunk/tests/test_siteview.py ============================================================================== --- (empty file) +++ kukit/azax/trunk/tests/test_siteview.py Wed Nov 1 05:13:42 2006 @@ -0,0 +1,39 @@ +from base import AzaxViewTestCase,FakeContent, TestRequest, DebugTestRequest +from Products.azax import AzaxUnicodeError +from Products.azax.events import AzaxEvent +from Products.azax.interfaces import IAzaxCommands, IAzaxEvent +from Products.azax.interfaces import IAzaxView +from Products.azax.pluginregistry.action import Action +from Products.azax.pluginregistry.commandset import CommandSet +from Products.azax.pluginregistry.interfaces import IAction, ICommandSet +from Products.azax.pluginregistry.plugin import registerPlugin +from Products.azax.plugins.core.commands import KSSCoreCommands +from Products.azax.plugins.core.interfaces import IKSSCoreCommands +from Products.azax.tests.base import IDebugRequest +from Products.azax.tests.commandinspector import CommandInspectorView +from Products.Five import zcml +from zope import component +from zope.component import eventtesting +from zope.testing import doctest +from zope.testing.cleanup import CleanUp as PlacelessSetup +import Products.Five +import unittest, os + +def setUpDoctTest(test=None): + PlacelessSetup().setUp() + eventtesting.setUp() + + zcml.load_config("meta.zcml", Products.Five) + zcml.load_config("permissions.zcml", Products.Five) + zcml.load_config("configure.zcml", Products.Five.component) + + zcml.load_config("configure.zcml", Products.Five.site) + +def tearDownDoctTest(test=None): + PlacelessSetup().tearDown() + +def test_suite(): + suite = doctest.DocFileSuite('../siteview.txt', + setUp=setUpDoctTest, + tearDown=tearDownDoctTest) + return unittest.TestSuite(suite) From jvloothuis at codespeak.net Wed Nov 1 05:14:36 2006 From: jvloothuis at codespeak.net (jvloothuis at codespeak.net) Date: Wed, 1 Nov 2006 05:14:36 +0100 (CET) Subject: [Kukit-checkins] r33992 - kukit/azax/trunk/tests Message-ID: <20061101041436.22F4410053@code0.codespeak.net> Author: jvloothuis Date: Wed Nov 1 05:14:34 2006 New Revision: 33992 Removed: kukit/azax/trunk/tests/azaxview.txt Log: Removed silly text file Deleted: /kukit/azax/trunk/tests/azaxview.txt ============================================================================== --- /kukit/azax/trunk/tests/azaxview.txt Wed Nov 1 05:14:34 2006 +++ (empty file) @@ -1,76 +0,0 @@ -===================== -Azax views and events -===================== - -When we make a change using Ajax calls we would like to update the browser -page. This can be done by sending browser commands. Some part of the page may -need to be update based on modifications. - -We don't want to handle all these modifications in our own code. An example of -such a modification change would be changing the title. This should also update -the navigation portlet. - -To make this work azax views do something special. We will explain this by -creating an example. The following will setup our enviroment and show that -normal operation works. - - >>> from Products.azax.azaxview import AzaxBaseView - >>> from Products.azax.interfaces import IAzaxEvent - >>> from Products.azax.tests.base import DebugTestRequest - >>> from zope import component - >>> from zope.lifecycleevent import ObjectModifiedEvent - >>> from zope.lifecycleevent.interfaces import IObjectModifiedEvent - >>> from zope.event import notify - >>> from zope.app.component.interfaces import ISite - - >>> from zope.app.folder import folder - >>> myfolder = folder.rootFolder() - -Now we will write our custom. - - >>> class SampleView(AzaxBaseView): - ... def add_page(self, title): - ... # normally you would change the zope database here - ... self.handle(ObjectModifiedEvent(title)) - ... return self.render() - - >>> request = DebugTestRequest() - >>> view = SampleView(myfolder, request) - >>> view.add_page("some title") - [] - -Now that we have shown that this will not generate any Azax commands we will -register a handler. This handler will catch the object event and add some Azax -commands. - - >>> @component.adapter(IAzaxEvent) - ... def stuff_happend(azax_event): - ... orig_event = azax_event.event - ... azax_event.view.getCommandSet('core').replaceInnerHTML( - ... 'div.class', orig_event.object) - >>> component.provideHandler(stuff_happend) - -When we call the renderer now it should have some more data in it. - - >>> view.add_page("some title")[0]['params']['html'] - u'some title' - -The example above used our convenience method to generate events. You normally -do this for all mutations you make yourself. Not all events are generated this -way though. In case of a workflow transition events may be fired as well. Azax -views account for this automatically. You don't need to do anything special. - -We will demonstrate this using a simple view. This view will generate the -modified event through normal component api instead of our handle method. - - >>> class AnotherView(AzaxBaseView): - ... def add_page(self, title): - ... # normally you would change the zope database here - ... notify(ObjectModifiedEvent(title)) - ... return self.render() - -This should now still invoke our handler. - - >>> view = AnotherView(myfolder, request) - >>> view.add_page("another title")[0]['params']['html'] - u'another title' From jvloothuis at codespeak.net Wed Nov 1 05:15:29 2006 From: jvloothuis at codespeak.net (jvloothuis at codespeak.net) Date: Wed, 1 Nov 2006 05:15:29 +0100 (CET) Subject: [Kukit-checkins] r33993 - kukit/azax/trunk Message-ID: <20061101041529.73DA410053@code0.codespeak.net> Author: jvloothuis Date: Wed Nov 1 05:15:27 2006 New Revision: 33993 Removed: kukit/azax/trunk/azaxview.txt Log: Removed silly text file Deleted: /kukit/azax/trunk/azaxview.txt ============================================================================== --- /kukit/azax/trunk/azaxview.txt Wed Nov 1 05:15:27 2006 +++ (empty file) @@ -1,4 +0,0 @@ -Testing bla sdffadsfa - - >>> True - False From jvloothuis at codespeak.net Wed Nov 1 05:20:30 2006 From: jvloothuis at codespeak.net (jvloothuis at codespeak.net) Date: Wed, 1 Nov 2006 05:20:30 +0100 (CET) Subject: [Kukit-checkins] r33994 - in kukit/azax/trunk: . tests Message-ID: <20061101042030.3C19110053@code0.codespeak.net> Author: jvloothuis Date: Wed Nov 1 05:20:26 2006 New Revision: 33994 Added: kukit/azax/trunk/azaxview.txt Modified: kukit/azax/trunk/siteview.txt kukit/azax/trunk/tests/test_azaxview.py Log: Readded azax view tests and changed fileformats to unix Added: kukit/azax/trunk/azaxview.txt ============================================================================== --- (empty file) +++ kukit/azax/trunk/azaxview.txt Wed Nov 1 05:20:26 2006 @@ -0,0 +1,78 @@ +===================== +Azax views and events +===================== + +When we make a change using Ajax calls we would like to update the browser +page. This can be done by sending browser commands. Some part of the page may +need to be update based on modifications. + +We don't want to handle all these modifications in our own code. An example of +such a modification change would be changing the title. This should also update + +the navigation portlet. + +To make this work azax views do something special. We will explain this by +creating an example. The following will setup our enviroment and show that +normal operation works. + + >>> from Products.azax.azaxview import AzaxBaseView + >>> from Products.azax.interfaces import IAzaxEvent + >>> from Products.azax.tests.base import DebugTestRequest + >>> from zope import component + >>> from zope.lifecycleevent import ObjectModifiedEvent + >>> from zope.lifecycleevent.interfaces import IObjectModifiedEvent + >>> from zope.event import notify + >>> from zope.app.component.interfaces import ISite + + >>> from zope.app.folder import folder + >>> myfolder = folder.rootFolder() + +Now we will write our custom. + + >>> class SampleView(AzaxBaseView): + ... def add_page(self, title): + ... # normally you would change the zope database here + ... self.handle(ObjectModifiedEvent(title)) + ... return self.render() + + >>> request = DebugTestRequest() + >>> view = SampleView(myfolder, request) + >>> view.add_page("some title") + [] + +Now that we have shown that this will not generate any Azax commands we will +register a handler. This handler will catch the object event and add some Azax +commands. + + >>> @component.adapter(IAzaxEvent) + ... def stuff_happend(azax_event): + ... orig_event = azax_event.event + ... azax_event.view.getCommandSet('core').replaceInnerHTML( + ... 'div.class', orig_event.object) + >>> component.provideHandler(stuff_happend) + +When we call the renderer now it should have some more data in it. + + >>> view.add_page("some title")[0]['params']['html'] + u'some title' + +The example above used our convenience method to generate events. You normally +do this for all mutations you make yourself. Not all events are generated this +way though. In case of a workflow transition events may be fired as well. Azax +views account for this automatically. You don't need to do anything special. + +We will demonstrate this using a simple view. This view will generate the +modified event through normal component api instead of our handle method. + + >>> class AnotherView(AzaxBaseView): + ... def add_page(self, title): + ... # normally you would change the zope database here + ... notify(ObjectModifiedEvent(title)) + ... return self.render() + +This should now still invoke our handler. + + >>> view = AnotherView(myfolder, request) + >>> view.add_page("another title")[0]['params']['html'] + u'another title' + Modified: kukit/azax/trunk/siteview.txt ============================================================================== --- kukit/azax/trunk/siteview.txt (original) +++ kukit/azax/trunk/siteview.txt Wed Nov 1 05:20:26 2006 @@ -1,70 +1,70 @@ -========= -Site view -========= - -All Azax views are not only a browser view but a site as well. A site is Zope -used as a local component registry. You can hookup adapters etc. in such a -place. Azax views are made sites to intercept all incomming events. - -By doing so the view is able to hookup it's own event redispatcher. This is a -normal event handler which generates the specific Azax events. These events -contain a reference to the view itself. By doing so event handlers can modify -the response body. - -This behaviour is needed for making event driven changes to a page. For -instance when you change a title in a document you also want the menu reloaded. -By using events for this we can achieve a degree of decoupling. - -The main class which implements views as a site is `SiteView`. - - >>> from Products.azax.azaxview import SiteView - -When created this view will make it's manager the default site manager. - - >>> from zope import component - >>> old_sitemanager = component.getSiteManager() - >>> view = SiteView(None, None) - >>> old_sitemanager is component.getSiteManager() - False - >>> view.getSiteManager() is component.getSiteManager() - True - -It also immediatly registers its special event handler. Like mentioned earlier -this will dispatch IAzaxEvent's. - - >>> from zope.component.eventtesting import getEvents, clearEvents - >>> from Products.azax.interfaces import IAzaxEvent - >>> from zope.lifecycleevent import ObjectModifiedEvent - >>> from zope.event import notify - - >>> clearEvents() - >>> notify(ObjectModifiedEvent(None)) - -Two events are fired by this. - - >>> len(getEvents()) - 2 - -The original event and the special IAzaxEvent. - - >>> from zope.lifecycleevent.interfaces import IObjectModifiedEvent - >>> original_event = getEvents()[0] - >>> IObjectModifiedEvent.providedBy(original_event) - True - - >>> azax_event = getEvents()[1] - >>> IAzaxEvent.providedBy(azax_event) - True - -The Azax event has reference to the view and the original event. - - >>> azax_event.event is original_event - True - >>> azax_event.view is view - True - -When the view is rendered it unregisters itself as a site. - - >>> view.render() - >>> view.getSiteManager() is component.getSiteManager() - False +========= +Site view +========= + +All Azax views are not only a browser view but a site as well. A site is Zope +used as a local component registry. You can hookup adapters etc. in such a +place. Azax views are made sites to intercept all incomming events. + +By doing so the view is able to hookup it's own event redispatcher. This is a +normal event handler which generates the specific Azax events. These events +contain a reference to the view itself. By doing so event handlers can modify +the response body. + +This behaviour is needed for making event driven changes to a page. For +instance when you change a title in a document you also want the menu reloaded. +By using events for this we can achieve a degree of decoupling. + +The main class which implements views as a site is `SiteView`. + + >>> from Products.azax.azaxview import SiteView + +When created this view will make it's manager the default site manager. + + >>> from zope import component + >>> old_sitemanager = component.getSiteManager() + >>> view = SiteView(None, None) + >>> old_sitemanager is component.getSiteManager() + False + >>> view.getSiteManager() is component.getSiteManager() + True + +It also immediatly registers its special event handler. Like mentioned earlier +this will dispatch IAzaxEvent's. + + >>> from zope.component.eventtesting import getEvents, clearEvents + >>> from Products.azax.interfaces import IAzaxEvent + >>> from zope.lifecycleevent import ObjectModifiedEvent + >>> from zope.event import notify + + >>> clearEvents() + >>> notify(ObjectModifiedEvent(None)) + +Two events are fired by this. + + >>> len(getEvents()) + 2 + +The original event and the special IAzaxEvent. + + >>> from zope.lifecycleevent.interfaces import IObjectModifiedEvent + >>> original_event = getEvents()[0] + >>> IObjectModifiedEvent.providedBy(original_event) + True + + >>> azax_event = getEvents()[1] + >>> IAzaxEvent.providedBy(azax_event) + True + +The Azax event has reference to the view and the original event. + + >>> azax_event.event is original_event + True + >>> azax_event.view is view + True + +When the view is rendered it unregisters itself as a site. + + >>> view.render() + >>> view.getSiteManager() is component.getSiteManager() + False Modified: kukit/azax/trunk/tests/test_azaxview.py ============================================================================== --- kukit/azax/trunk/tests/test_azaxview.py (original) +++ kukit/azax/trunk/tests/test_azaxview.py Wed Nov 1 05:20:26 2006 @@ -190,7 +190,7 @@ suites.append(unittest.makeSuite(TestAzaxView)) suites.append(unittest.makeSuite(FTestAzaxView)) suites.append(doctest.DocTestSuite('Products.azax.azaxview')) - suites.append(doctest.DocFileSuite('azaxview.txt', + suites.append(doctest.DocFileSuite('../azaxview.txt', setUp=setUpDoctTest, tearDown=tearDownDoctTest)) return unittest.TestSuite(suites) From jvloothuis at codespeak.net Sun Nov 5 21:52:26 2006 From: jvloothuis at codespeak.net (jvloothuis at codespeak.net) Date: Sun, 5 Nov 2006 21:52:26 +0100 (CET) Subject: [Kukit-checkins] r34254 - kukit/azax/trunk Message-ID: <20061105205226.AF13B1007D@code0.codespeak.net> Author: jvloothuis Date: Sun Nov 5 21:52:21 2006 New Revision: 34254 Modified: kukit/azax/trunk/azaxview.py Log: Maded azaxview work with Plone Azax Modified: kukit/azax/trunk/azaxview.py ============================================================================== --- kukit/azax/trunk/azaxview.py (original) +++ kukit/azax/trunk/azaxview.py Sun Nov 5 21:52:21 2006 @@ -42,13 +42,31 @@ from pluginregistry.commandset import getRegisteredCommandSet from zope import app, component, interface from zope.app.component.hooks import setSite, setHooks -from zope.app.component.interfaces import ISite +from zope.app.component.interfaces import ISite, ILocalSiteManager from zope.app.component.site import clearSite from zope.component.globalregistry import BaseGlobalComponents from zope.component.interfaces import IComponentLookup from zope.event import notify from zope.interface import implements, Interface from zope.publisher.browser import BrowserView +from zope.component.persistentregistry import PersistentAdapterRegistry +from zope.app.component.site import _findNextSiteManager +from zope.component.interfaces import ComponentLookupError + +class ViewSiteManager(BaseGlobalComponents): + + def _init_registries(self): + self.adapters = PersistentAdapterRegistry() + self.utilities = PersistentAdapterRegistry() + + def queryUtility(self, *args, **kwargs): + try: + utility = super(ViewSiteManager, self).queryUtility(*args, **kwargs) + except ComponentLookupError: + return self.__bases__[0].queryUtility(*args, **kwargs) + if utility is None: + return self.__bases__[0].queryUtility(*args, **kwargs) + return utility class SiteView(BrowserView): """A browser view that is its own site @@ -59,7 +77,7 @@ next_sitemanager = component.getSiteManager() - self._sitemanager = BaseGlobalComponents('siteview') + self._sitemanager = ViewSiteManager('siteview') interface.alsoProvides(self, ISite) self._sitemanager.__bases__ = (next_sitemanager, ) From jvloothuis at codespeak.net Mon Nov 6 07:49:09 2006 From: jvloothuis at codespeak.net (jvloothuis at codespeak.net) Date: Mon, 6 Nov 2006 07:49:09 +0100 (CET) Subject: [Kukit-checkins] r34255 - kukit/azax/trunk Message-ID: <20061106064909.602E91007C@code0.codespeak.net> Author: jvloothuis Date: Mon Nov 6 07:49:06 2006 New Revision: 34255 Modified: kukit/azax/trunk/azaxview.py Log: Minor cleanup to view code Modified: kukit/azax/trunk/azaxview.py ============================================================================== --- kukit/azax/trunk/azaxview.py (original) +++ kukit/azax/trunk/azaxview.py Mon Nov 6 07:49:06 2006 @@ -60,10 +60,7 @@ self.utilities = PersistentAdapterRegistry() def queryUtility(self, *args, **kwargs): - try: - utility = super(ViewSiteManager, self).queryUtility(*args, **kwargs) - except ComponentLookupError: - return self.__bases__[0].queryUtility(*args, **kwargs) + utility = super(ViewSiteManager, self).queryUtility(*args, **kwargs) if utility is None: return self.__bases__[0].queryUtility(*args, **kwargs) return utility @@ -91,7 +88,7 @@ return self._sitemanager def setSiteManager(self, sm): - raise XXX + raise NotImplementedError('You can only get the site manager') @component.adapter(Interface) def _eventRedispatcher(self, event): From jvloothuis at codespeak.net Wed Nov 8 15:06:35 2006 From: jvloothuis at codespeak.net (jvloothuis at codespeak.net) Date: Wed, 8 Nov 2006 15:06:35 +0100 (CET) Subject: [Kukit-checkins] r34370 - kukit/azax/trunk Message-ID: <20061108140635.9FD0E10078@code0.codespeak.net> Author: jvloothuis Date: Wed Nov 8 15:06:34 2006 New Revision: 34370 Modified: kukit/azax/trunk/azaxview.py Log: Removed unneeded method override on the view site manager Modified: kukit/azax/trunk/azaxview.py ============================================================================== --- kukit/azax/trunk/azaxview.py (original) +++ kukit/azax/trunk/azaxview.py Wed Nov 8 15:06:34 2006 @@ -59,12 +59,6 @@ self.adapters = PersistentAdapterRegistry() self.utilities = PersistentAdapterRegistry() - def queryUtility(self, *args, **kwargs): - utility = super(ViewSiteManager, self).queryUtility(*args, **kwargs) - if utility is None: - return self.__bases__[0].queryUtility(*args, **kwargs) - return utility - class SiteView(BrowserView): """A browser view that is its own site """ From gotcha at codespeak.net Thu Nov 9 18:00:11 2006 From: gotcha at codespeak.net (gotcha at codespeak.net) Date: Thu, 9 Nov 2006 18:00:11 +0100 (CET) Subject: [Kukit-checkins] r34428 - kukit/kukit.js/trunk/kukit Message-ID: <20061109170011.906F21009F@code0.codespeak.net> Author: gotcha Date: Thu Nov 9 18:00:09 2006 New Revision: 34428 Modified: kukit/kukit.js/trunk/kukit/utils.js Log: add logging in Firebug Modified: kukit/kukit.js/trunk/kukit/utils.js ============================================================================== --- kukit/kukit.js/trunk/kukit/utils.js (original) +++ kukit/kukit.js/trunk/kukit/utils.js Thu Nov 9 18:00:09 2006 @@ -26,20 +26,39 @@ var kukit = {}; } -/* check whether the logging stuff of MochiKit is available */ +/* check whether the logging stuff of Firebug is available */ try { - MochiKit.Logging.log('Initializing kukit'); - kukit.log = MochiKit.Logging.log; - kukit.logError = MochiKit.Logging.logError; - kukit.logDebug = MochiKit.Logging.logDebug; - kukit.logFatal = MochiKit.Logging.logFatal; - kukit.logWarning = MochiKit.Logging.logWarning; + console.log('Initializing kukit'); + /* following call is needed to generate exception in Safari */ + console.assertEquals('kukit', 'kukit'); + kukit.hasFirebug = true; } catch(e) { - kukit.log = function(str){}; - kukit.logError = kukit.log; - kukit.logDebug = kukit.log; - kukit.logFatal = kukit.log; - kukit.logWarning = kukit.log; + kukit.hasFirebug = false; + } + +if (kukit.hasFirebug) { + kukit.log = console.log; + kukit.logDebug = console.debug; + kukit.logFatal = console.error; + kukit.logError = console.error; + kukit.logWarning = console.warn; +} +else { +/* check whether the logging stuff of MochiKit is available */ + try { + MochiKit.Logging.log('Initializing kukit'); + kukit.log = MochiKit.Logging.log; + kukit.logError = MochiKit.Logging.logError; + kukit.logDebug = MochiKit.Logging.logDebug; + kukit.logFatal = MochiKit.Logging.logFatal; + kukit.logWarning = MochiKit.Logging.logWarning; + } catch(e) { + kukit.log = function(str){}; + kukit.logError = kukit.log; + kukit.logDebug = kukit.log; + kukit.logFatal = kukit.log; + kukit.logWarning = kukit.log; + } } /* utilities */ From reebalazs at codespeak.net Sun Nov 12 12:40:24 2006 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 12 Nov 2006 12:40:24 +0100 (CET) Subject: [Kukit-checkins] r34529 - kukit/azax/trunk Message-ID: <20061112114024.99E5E1015E@code0.codespeak.net> Author: reebalazs Date: Sun Nov 12 12:40:22 2006 New Revision: 34529 Modified: kukit/azax/trunk/interfaces.py Log: Import IObjectModifiedEvent from zope < 2.10 Modified: kukit/azax/trunk/interfaces.py ============================================================================== --- kukit/azax/trunk/interfaces.py (original) +++ kukit/azax/trunk/interfaces.py Sun Nov 12 12:40:22 2006 @@ -19,7 +19,11 @@ # from zope.interface import Interface, Attribute -from zope.lifecycleevent.interfaces import IObjectModifiedEvent +try: + # 2.10 + from zope.lifecycleevent.interfaces import IObjectModifiedEvent +except ImportError: + from zope.app.event.objectevent import IObjectModifiedEvent class IAzaxCommands(Interface): 'Azax commands' From jvloothuis at codespeak.net Sun Nov 12 17:46:02 2006 From: jvloothuis at codespeak.net (jvloothuis at codespeak.net) Date: Sun, 12 Nov 2006 17:46:02 +0100 (CET) Subject: [Kukit-checkins] r34532 - kukit/azax/trunk/plugins/core Message-ID: <20061112164602.D30DC1015B@code0.codespeak.net> Author: jvloothuis Date: Sun Nov 12 17:46:00 2006 New Revision: 34532 Modified: kukit/azax/trunk/plugins/core/commands.py Log: Removed duplicate `copyChildNodesTo` Modified: kukit/azax/trunk/plugins/core/commands.py ============================================================================== --- kukit/azax/trunk/plugins/core/commands.py (original) +++ kukit/azax/trunk/plugins/core/commands.py Sun Nov 12 17:46:00 2006 @@ -112,11 +112,6 @@ command = self.commands.addCommand('copyChildNodesTo', selector) data = command.addParam('html_id', id) - def copyChildNodesTo(self, selector, id): - """ see interfaces.py """ - command = self.commands.addCommand('copyChildNodesTo', selector) - data = command.addParam('html_id', id) - def setStateVar(self, varname, value): """ see interfaces.py """ command = self.commands.addCommand('setStateVar') From jvloothuis at codespeak.net Sun Nov 12 18:26:40 2006 From: jvloothuis at codespeak.net (jvloothuis at codespeak.net) Date: Sun, 12 Nov 2006 18:26:40 +0100 (CET) Subject: [Kukit-checkins] r34533 - kukit/azax/trunk/plugins/core Message-ID: <20061112172640.322C21015D@code0.codespeak.net> Author: jvloothuis Date: Sun Nov 12 18:26:39 2006 New Revision: 34533 Modified: kukit/azax/trunk/plugins/core/interfaces.py Log: Made the interface more complete, this makes the core plugins better documented Modified: kukit/azax/trunk/plugins/core/interfaces.py ============================================================================== --- kukit/azax/trunk/plugins/core/interfaces.py (original) +++ kukit/azax/trunk/plugins/core/interfaces.py Sun Nov 12 18:26:39 2006 @@ -1,4 +1,71 @@ from zope.interface import Interface class IKSSCoreCommands(Interface): - '''all core commands''' + """The core commands""" + + def getSelector(type, selector): + """Return a specific type of selector + + The type can be `css` or `htmlid`. The selector is the value for the + selector.""" + + def getCssSelector(selector): + """Return a CSS selector with selector as the value""" + + def getHtmlIdSelector(selector): + """Return a HTML id selector with selector as the value""" + + def replaceInnerHTML(selector, new_value): + """Replace the contents of a node (selector) with the new_value""" + + def replaceHTML(selector, new_value): + """Replace the node itself with new_value + + Node selection is done using the selector argument.""" + + def setAttribute(selector, name, value): + """Set an attribute on node(s) specified by the selector""" + + def setStyle(selector, name, value): + """Set the style attribute of nodes specified by the selector""" + + def insertHTMLAfter(selector, new_value): + """Insert some HTML after the node indicated by selector""" + + def insertHTMLAsFirstChild(selector, new_value): + """Insert some HTML as the first childnode specified by selector""" + + def insertHTMLBefore(selector, new_value): + """Insert some HTML before the node specified by selector""" + + def clearChildNodes(selector): + """Remove all the child nodes from the node specified by selector""" + + def deleteNode(selector): + """Remove the node itself specified by selector""" + + def deleteNodeAfter(selector): + """Remove the node after the node specified by selector""" + + def deleteNodeBefore(selector): + """Remove the node before the node specified by selector""" + + def copyChildNodesFrom(selector, id): + """Copy the child nodes from the node specified by id to the selector node + + The copy operation will clear out all childnodes of selector.""" + + def copyChildNodesTo(selector, id): + """Copy the child nodes from the selector node to the node specified by id + + The copy operation will clear out all childnodes of selector.""" + + def moveNodeAfter(selector, id): + """Move the node indicated by selector to a sibling after id""" + + def setStateVar(varname, value): + """Set a client side kukit variable""" + + def triggerEvent(name, **kw): + """Trigger an event on the client """ + # TODO: explain a bit better what this does From gotcha at codespeak.net Tue Nov 14 23:16:22 2006 From: gotcha at codespeak.net (gotcha at codespeak.net) Date: Tue, 14 Nov 2006 23:16:22 +0100 (CET) Subject: [Kukit-checkins] r34612 - in kukit/azaxdemo/trunk: . tests tests/selenium Message-ID: <20061114221622.547C11008D@code0.codespeak.net> Author: gotcha Date: Tue Nov 14 23:16:19 2006 New Revision: 34612 Added: kukit/azaxdemo/trunk/tests/selenium/ kukit/azaxdemo/trunk/tests/selenium/azax_instant_edit.html kukit/azaxdemo/trunk/tests/selenium/cancel_submit.html kukit/azaxdemo/trunk/tests/selenium/demo1.html kukit/azaxdemo/trunk/tests/selenium/demo1.py kukit/azaxdemo/trunk/tests/selenium/suite.html kukit/azaxdemo/trunk/tests/selenium/three_autopupdate.html kukit/azaxdemo/trunk/tests/selenium/two_select_revisited.html kukit/azaxdemo/trunk/tests/selenium/two_selects.html Removed: kukit/azaxdemo/trunk/tests/azaxdemo.sel Modified: kukit/azaxdemo/trunk/azaxview.py Log: first selenium tests Modified: kukit/azaxdemo/trunk/azaxview.py ============================================================================== --- kukit/azaxdemo/trunk/azaxview.py (original) +++ kukit/azaxdemo/trunk/azaxview.py Tue Nov 14 23:16:19 2006 @@ -24,14 +24,10 @@ except ImportError: from Products.azax import AzaxBaseView, force_unicode -import datetime, time - -from zope.app.pagetemplate.viewpagetemplatefile import ViewPageTemplateFile +import datetime class AzaxView(AzaxBaseView): - #header_macros = ViewPageTemplateFile('browser/header_macros.pt') - def clearDivContent(self): """ clear div content """ self.getCommandSet('core').clearChildNodes('div#demo') @@ -56,7 +52,7 @@ def getDivContent(self): """ returns div content """ self.getCommandSet('core').replaceInnerHTML('div#demo', '

it worked

') - self.getCommandSet('core').replaceInnerHTML('div#demo', '

it worked again

') + self.getCommandSet('core').replaceInnerHTML('div#demo', '

it worked again

') return self.render() def getCorrespondingSelect(self, value): Deleted: /kukit/azaxdemo/trunk/tests/azaxdemo.sel ============================================================================== --- /kukit/azaxdemo/trunk/tests/azaxdemo.sel Tue Nov 14 23:16:19 2006 +++ (empty file) @@ -1,143 +0,0 @@ - - - -azaxdemo - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
azaxdemo
assertTitle
clickAndWaitlink=Change tag content
assertTitle
clickchange
assertTextPresentit worked again
clickclear
clicklink=All demos
assertTitle
clickAndWaitlink=Two selects
assertTitle
selectfirstlabel=animals
assertValueseconddog
selectfirstlabel=machines
assertValuesecondcomputer
clicklink=All demos
assertTitle
clickAndWaitlink=Three autoupdate
assertTitle
clickstart-update
clicklink=All demos
assertTitle
clickAndWaitlink=Cancel Submit Click
assertTitle
typetext_saveaaa
clicksubmit
assertTextPresentAsync saved aaa
- - Added: kukit/azaxdemo/trunk/tests/selenium/azax_instant_edit.html ============================================================================== --- (empty file) +++ kukit/azaxdemo/trunk/tests/selenium/azax_instant_edit.html Tue Nov 14 23:16:19 2006 @@ -0,0 +1,69 @@ + + + +azax_instant_edit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
azax_instant_edit
open/demo/azax_instant_edit.html
assertTextPresentclick me!
assertTexttextclick me!
clicktext
waitForValuevalueclick me!
assertValuevalueclick me!
typevaluechange
clicksave
waitForTextPresentchange
assertTextPresentchange
assertTextNotPresentclick me!
+ + Added: kukit/azaxdemo/trunk/tests/selenium/cancel_submit.html ============================================================================== --- (empty file) +++ kukit/azaxdemo/trunk/tests/selenium/cancel_submit.html Tue Nov 14 23:16:19 2006 @@ -0,0 +1,44 @@ + + + +cancel_submit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cancel_submit
open/demo/cancel_submit.html
assertValuetext_save
typetext_saveabc
clicksubmit
waitForTextasyncAsync saved abc
assertTextasyncAsync saved abc
+ + Added: kukit/azaxdemo/trunk/tests/selenium/demo1.html ============================================================================== --- (empty file) +++ kukit/azaxdemo/trunk/tests/selenium/demo1.html Tue Nov 14 23:16:19 2006 @@ -0,0 +1,184 @@ + + + +demo1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
demo1
open/demo/demo1.html
assertTextdemoAzax
assertTextcopycopy here
clickchange
waitForElementPresentworkedagain
assertElementPresentworkedagain
assertTextdemoit worked again
clickclear
waitForElementNotPresentworkedagain
assertNotTextdemoit worked again
clickcopyFrom
waitForNotTextcopycopy here
assertNotTextcopycopy here
assertElementNotPresentworkedagain
clickchange
waitForElementPresentworkedagain
assertElementPresentworkedagain
assertNotTextcopyit worked again
clickcopyFrom
waitForTextcopyit worked again
assertTextcopyit worked again
clickclear
waitForNotTextdemoit worked again
assertNotTextdemoit worked again
clickcopyTo
waitForTextdemoit worked again
assertTextdemoit worked again
clickclear
waitForNotTextdemoit worked again
assertNotTextdemoit worked again
clickmoveTo
waitForTextdemoit worked again
assertTextdemoit worked again
assertNotTextcopyit worked again
+ + Added: kukit/azaxdemo/trunk/tests/selenium/demo1.py ============================================================================== --- (empty file) +++ kukit/azaxdemo/trunk/tests/selenium/demo1.py Tue Nov 14 23:16:19 2006 @@ -0,0 +1,97 @@ +from selenium import selenium +import unittest, time, re + +class demo1(unittest.TestCase): + def setUp(self): + self.verificationErrors = [] + self.selenium = selenium("localhost", 4444, "*firefox", "http://localhost:4444") + self.selenium.start() + + def test_demo1(self): + sel = self.selenium + sel.open("/demo/demo1.html") + self.assertEqual("Azax", sel.get_text("demo")) + self.assertEqual("copy here", sel.get_text("copy")) + sel.click("change") + for i in range(60): + try: + if sel.is_element_present("workedagain"): break + except: pass + time.sleep(1) + else: self.fail("time out") + self.failUnless(sel.is_element_present("workedagain")) + self.assertEqual("it worked again", sel.get_text("demo")) + sel.click("clear") + for i in range(60): + try: + if not sel.is_element_present("workedagain"): break + except: pass + time.sleep(1) + else: self.fail("time out") + self.assertNotEqual("it worked again", sel.get_text("demo")) + sel.click("copyFrom") + for i in range(60): + try: + if "copy here" != sel.get_text("copy"): break + except: pass + time.sleep(1) + else: self.fail("time out") + self.assertNotEqual("copy here", sel.get_text("copy")) + self.failIf(sel.is_element_present("workedagain")) + sel.click("change") + for i in range(60): + try: + if sel.is_element_present("workedagain"): break + except: pass + time.sleep(1) + else: self.fail("time out") + self.failUnless(sel.is_element_present("workedagain")) + self.assertNotEqual("it worked again", sel.get_text("copy")) + sel.click("copyFrom") + for i in range(60): + try: + if "it worked again" == sel.get_text("copy"): break + except: pass + time.sleep(1) + else: self.fail("time out") + self.assertEqual("it worked again", sel.get_text("copy")) + sel.click("clear") + for i in range(60): + try: + if "it worked again" != sel.get_text("demo"): break + except: pass + time.sleep(1) + else: self.fail("time out") + self.assertNotEqual("it worked again", sel.get_text("demo")) + sel.click("copyTo") + for i in range(60): + try: + if "it worked again" == sel.get_text("demo"): break + except: pass + time.sleep(1) + else: self.fail("time out") + self.assertEqual("it worked again", sel.get_text("demo")) + sel.click("clear") + for i in range(60): + try: + if "it worked again" != sel.get_text("demo"): break + except: pass + time.sleep(1) + else: self.fail("time out") + self.assertNotEqual("it worked again", sel.get_text("demo")) + sel.click("moveTo") + for i in range(60): + try: + if "it worked again" == sel.get_text("demo"): break + except: pass + time.sleep(1) + else: self.fail("time out") + self.assertEqual("it worked again", sel.get_text("demo")) + self.assertNotEqual("it worked again", sel.get_text("copy")) + + def tearDown(self): + self.selenium.stop() + self.assertEqual([], self.verificationErrors) + +if __name__ == "__main__": + unittest.main() Added: kukit/azaxdemo/trunk/tests/selenium/suite.html ============================================================================== --- (empty file) +++ kukit/azaxdemo/trunk/tests/selenium/suite.html Tue Nov 14 23:16:19 2006 @@ -0,0 +1,14 @@ + + + + + + + + +
Test Suite
ChangeTagContent
+ + Added: kukit/azaxdemo/trunk/tests/selenium/three_autopupdate.html ============================================================================== --- (empty file) +++ kukit/azaxdemo/trunk/tests/selenium/three_autopupdate.html Tue Nov 14 23:16:19 2006 @@ -0,0 +1,69 @@ + + + +three_autopupdate + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
three_autopupdate
open/demo/three_autoupdate.html
assertTextupdate-wrapper
clickstart-update
waitForElementPresentupdate-area
assertElementPresentupdate-area
assertTextupdate-area
storeTextupdate-areaupdateText
assertTextupdate-area${updateText}
pause3000
assertNotTextupdate-area${updateText}
+ + Added: kukit/azaxdemo/trunk/tests/selenium/two_select_revisited.html ============================================================================== --- (empty file) +++ kukit/azaxdemo/trunk/tests/selenium/two_select_revisited.html Tue Nov 14 23:16:19 2006 @@ -0,0 +1,139 @@ + + + +two_select_revisited + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
two_select_revisited
open/demo/two_select_revisited.html
assertTextfirst-masteranimals machines
assertTextfirst-slave
selectfirst-masterlabel=animals
waitForTextfirst-slavedog cat cow
assertTextfirst-slavedog cat cow
selectfirst-masterlabel=machines
waitForTextfirst-slavecomputer car airplane
assertTextfirst-slavecomputer car airplane
assertTextsecond-masteranimals machines
assertTextsecond-slave
selectsecond-masterlabel=animals
waitForTextsecond-slavedog cat cow
assertTextsecond-slavedog cat cow
selectsecond-masterlabel=machines
waitForTextsecond-slavecomputer car airplane
assertTextsecond-slavecomputer car airplane
assertTextthird-masteranimals machines
assertTextthird-slave
selectthird-masterlabel=animals
waitForTextthird-slavedog cat cow
assertTextthird-slavedog cat cow
selectthird-masterlabel=machines
waitForTextthird-slavecomputer car airplane
assertTextthird-slavecomputer car airplane
+ + Added: kukit/azaxdemo/trunk/tests/selenium/two_selects.html ============================================================================== --- (empty file) +++ kukit/azaxdemo/trunk/tests/selenium/two_selects.html Tue Nov 14 23:16:19 2006 @@ -0,0 +1,59 @@ + + + +two_selects + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
two_selects
open/demo/two_selects.html
assertTextfirstanimals machines
assertTextsecond
selectfirstlabel=animals
waitForTextseconddog cat cow
assertTextseconddog cat cow
selectfirstlabel=machines
waitForTextsecondcomputer car airplane
assertTextsecondcomputer car airplane
+ + From reebalazs at codespeak.net Fri Nov 17 07:55:08 2006 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Fri, 17 Nov 2006 07:55:08 +0100 (CET) Subject: [Kukit-checkins] r34701 - kukit/kukit.js/trunk/kukit Message-ID: <20061117065508.811BB10098@code0.codespeak.net> Author: reebalazs Date: Fri Nov 17 07:55:05 2006 New Revision: 34701 Modified: kukit/kukit.js/trunk/kukit/kukit.js Log: Removing extra slash from base url (non-critical) Modified: kukit/kukit.js/trunk/kukit/kukit.js ============================================================================== --- kukit/kukit.js/trunk/kukit/kukit.js (original) +++ kukit/kukit.js/trunk/kukit/kukit.js Fri Nov 17 07:55:05 2006 @@ -68,6 +68,11 @@ kukit.base = pieces.join('/'); } else { kukit.base = nodes[0].href; + // take off trailing slash + var baselen = kukit.base.length; + if (baselen > 0 && kukit.base.substring(baselen - 1) == '/') { + kukit.base = kukit.base.substring(0, baselen - 1); + } } }; From reebalazs at codespeak.net Sun Nov 19 12:44:28 2006 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 19 Nov 2006 12:44:28 +0100 (CET) Subject: [Kukit-checkins] r34751 - kukit/azax/trunk Message-ID: <20061119114428.B5253100B5@code0.codespeak.net> Author: reebalazs Date: Sun Nov 19 12:44:25 2006 New Revision: 34751 Modified: kukit/azax/trunk/azaxview.py Log: Add helper for getting commandset. to adapter as well Modified: kukit/azax/trunk/azaxview.py ============================================================================== --- kukit/azax/trunk/azaxview.py (original) +++ kukit/azax/trunk/azaxview.py Sun Nov 19 12:44:25 2006 @@ -147,4 +147,6 @@ self.context = self.view.context self.request = self.view.request self.commands = self.view.commands - + + def getCommandSet(self, name): + return self.view.getCommandSet(name) From reebalazs at codespeak.net Wed Nov 22 17:04:06 2006 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Wed, 22 Nov 2006 17:04:06 +0100 (CET) Subject: [Kukit-checkins] r34863 - kukit/azaxdemo/trunk/tests Message-ID: <20061122160406.7356410064@code0.codespeak.net> Author: reebalazs Date: Wed Nov 22 17:04:04 2006 New Revision: 34863 Modified: kukit/azaxdemo/trunk/tests/test_azaxview.py Log: Fix failing test, result of selenium changes Modified: kukit/azaxdemo/trunk/tests/test_azaxview.py ============================================================================== --- kukit/azaxdemo/trunk/tests/test_azaxview.py (original) +++ kukit/azaxdemo/trunk/tests/test_azaxview.py Wed Nov 22 17:04:04 2006 @@ -61,7 +61,7 @@ 'html': u'

it worked

' }, 'name': 'replaceInnerHTML', 'selector': 'div#demo'}, {'selectorType': '', 'params': { - 'html': u'

it worked again

' + 'html': u'

it worked again

' }, 'name': 'replaceInnerHTML', 'selector': 'div#demo'}, ]) From reebalazs at codespeak.net Sun Nov 26 09:33:52 2006 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 26 Nov 2006 09:33:52 +0100 (CET) Subject: [Kukit-checkins] r34977 - kukit/kss Message-ID: <20061126083352.2D9031007B@code0.codespeak.net> Author: reebalazs Date: Sun Nov 26 09:33:49 2006 New Revision: 34977 Added: kukit/kss/ Log: Reorganizing From reebalazs at codespeak.net Sun Nov 26 09:34:46 2006 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 26 Nov 2006 09:34:46 +0100 (CET) Subject: [Kukit-checkins] r34978 - kukit/kss/branch Message-ID: <20061126083446.6E50B1007B@code0.codespeak.net> Author: reebalazs Date: Sun Nov 26 09:34:44 2006 New Revision: 34978 Added: kukit/kss/branch/ Log: Reorganizing From reebalazs at codespeak.net Sun Nov 26 09:34:52 2006 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 26 Nov 2006 09:34:52 +0100 (CET) Subject: [Kukit-checkins] r34979 - kukit/kss/tag Message-ID: <20061126083452.D54D01007B@code0.codespeak.net> Author: reebalazs Date: Sun Nov 26 09:34:50 2006 New Revision: 34979 Added: kukit/kss/tag/ Log: Reorganizing From reebalazs at codespeak.net Sun Nov 26 09:34:56 2006 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 26 Nov 2006 09:34:56 +0100 (CET) Subject: [Kukit-checkins] r34980 - kukit/kss/trunk Message-ID: <20061126083456.9A5A81007E@code0.codespeak.net> Author: reebalazs Date: Sun Nov 26 09:34:54 2006 New Revision: 34980 Added: kukit/kss/trunk/ Log: Reorganizing From reebalazs at codespeak.net Sun Nov 26 09:43:43 2006 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 26 Nov 2006 09:43:43 +0100 (CET) Subject: [Kukit-checkins] r34981 - kukit/kss.core Message-ID: <20061126084343.44DD21007B@code0.codespeak.net> Author: reebalazs Date: Sun Nov 26 09:43:41 2006 New Revision: 34981 Added: kukit/kss.core/ Log: Reorganizing From reebalazs at codespeak.net Sun Nov 26 09:44:52 2006 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 26 Nov 2006 09:44:52 +0100 (CET) Subject: [Kukit-checkins] r34982 - kukit/kss.core/tag Message-ID: <20061126084452.0C9501007B@code0.codespeak.net> Author: reebalazs Date: Sun Nov 26 09:44:50 2006 New Revision: 34982 Added: kukit/kss.core/tag/ Log: Reorganizing From reebalazs at codespeak.net Sun Nov 26 09:44:56 2006 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 26 Nov 2006 09:44:56 +0100 (CET) Subject: [Kukit-checkins] r34983 - kukit/kss.core/branch Message-ID: <20061126084456.1DB1B1007E@code0.codespeak.net> Author: reebalazs Date: Sun Nov 26 09:44:55 2006 New Revision: 34983 Added: kukit/kss.core/branch/ Log: Reorganizing From reebalazs at codespeak.net Sun Nov 26 09:45:06 2006 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 26 Nov 2006 09:45:06 +0100 (CET) Subject: [Kukit-checkins] r34984 - kukit/kss.demo Message-ID: <20061126084506.CD5DC1007B@code0.codespeak.net> Author: reebalazs Date: Sun Nov 26 09:45:05 2006 New Revision: 34984 Added: kukit/kss.demo/ Log: Reorganizing From reebalazs at codespeak.net Sun Nov 26 09:45:10 2006 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 26 Nov 2006 09:45:10 +0100 (CET) Subject: [Kukit-checkins] r34985 - kukit/kss.demo/tag Message-ID: <20061126084510.97A291007E@code0.codespeak.net> Author: reebalazs Date: Sun Nov 26 09:45:09 2006 New Revision: 34985 Added: kukit/kss.demo/tag/ Log: Reorganizing From reebalazs at codespeak.net Sun Nov 26 09:45:14 2006 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 26 Nov 2006 09:45:14 +0100 (CET) Subject: [Kukit-checkins] r34986 - kukit/kss.demo/branch Message-ID: <20061126084514.66E6B1007B@code0.codespeak.net> Author: reebalazs Date: Sun Nov 26 09:45:13 2006 New Revision: 34986 Added: kukit/kss.demo/branch/ Log: Reorganizing From reebalazs at codespeak.net Sun Nov 26 09:46:22 2006 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 26 Nov 2006 09:46:22 +0100 (CET) Subject: [Kukit-checkins] r34987 - kukit/kss.core/trunk Message-ID: <20061126084622.312FD1007B@code0.codespeak.net> Author: reebalazs Date: Sun Nov 26 09:46:20 2006 New Revision: 34987 Added: kukit/kss.core/trunk/ - copied from r34986, kukit/azax/trunk/ Log: Reorganizing From reebalazs at codespeak.net Sun Nov 26 09:46:39 2006 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 26 Nov 2006 09:46:39 +0100 (CET) Subject: [Kukit-checkins] r34988 - kukit/kss.demo/trunk Message-ID: <20061126084639.162461007B@code0.codespeak.net> Author: reebalazs Date: Sun Nov 26 09:46:38 2006 New Revision: 34988 Added: kukit/kss.demo/trunk/ - copied from r34987, kukit/azaxdemo/trunk/ Log: Reorganizing From reebalazs at codespeak.net Sun Nov 26 09:48:06 2006 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 26 Nov 2006 09:48:06 +0100 (CET) Subject: [Kukit-checkins] r34989 - kukit/kukit.js/trunk/tests Message-ID: <20061126084806.365E51007B@code0.codespeak.net> Author: reebalazs Date: Sun Nov 26 09:48:04 2006 New Revision: 34989 Modified: kukit/kukit.js/trunk/tests/runner.html Log: tiny name change Modified: kukit/kukit.js/trunk/tests/runner.html ============================================================================== --- kukit/kukit.js/trunk/tests/runner.html (original) +++ kukit/kukit.js/trunk/tests/runner.html Sun Nov 26 09:48:04 2006 @@ -68,7 +68,7 @@ This page is the entry to the ECMAScript Unit Tests.

-

+

Tests are running from the filesystem.

From reebalazs at codespeak.net Sun Nov 26 10:05:19 2006 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 26 Nov 2006 10:05:19 +0100 (CET) Subject: [Kukit-checkins] r34990 - in kukit/kss.core/trunk: . pluginregistry pluginregistry/deprecated pluginregistry/json plugins/core plugins/effects tests Message-ID: <20061126090519.BDBEB1007B@code0.codespeak.net> Author: reebalazs Date: Sun Nov 26 10:05:01 2006 New Revision: 34990 Added: kukit/kss.core/trunk/kss.core-configure.zcml kukit/kss.core/trunk/kss.core-meta.zcml kukit/kss.core/trunk/pluginregistry/deprecated/ kukit/kss.core/trunk/pluginregistry/deprecated/__init__.py kukit/kss.core/trunk/pluginregistry/deprecated/configure.py kukit/kss.core/trunk/pluginregistry/deprecated/directives.py kukit/kss.core/trunk/pluginregistry/deprecated/meta.zcml Removed: kukit/kss.core/trunk/azax-configure.zcml kukit/kss.core/trunk/azax-meta.zcml Modified: kukit/kss.core/trunk/ (props changed) kukit/kss.core/trunk/EXTERNALS.TXT kukit/kss.core/trunk/INSTALL.txt kukit/kss.core/trunk/TODO.txt kukit/kss.core/trunk/__init__.py kukit/kss.core/trunk/azaxview.py kukit/kss.core/trunk/azaxview.txt kukit/kss.core/trunk/configure.zcml kukit/kss.core/trunk/deprecated.py kukit/kss.core/trunk/meta.zcml kukit/kss.core/trunk/pluginregistry/configure.py kukit/kss.core/trunk/pluginregistry/directives.py kukit/kss.core/trunk/pluginregistry/json/configure.zcml kukit/kss.core/trunk/pluginregistry/json/utils.py kukit/kss.core/trunk/pluginregistry/meta.zcml kukit/kss.core/trunk/plugins/core/__init__.py kukit/kss.core/trunk/plugins/core/commands.py kukit/kss.core/trunk/plugins/core/configure.zcml kukit/kss.core/trunk/plugins/effects/__init__.py kukit/kss.core/trunk/plugins/effects/commands.py kukit/kss.core/trunk/plugins/effects/configure.zcml kukit/kss.core/trunk/siteview.txt kukit/kss.core/trunk/tests/base.py kukit/kss.core/trunk/tests/commandinspector.py kukit/kss.core/trunk/tests/configure-unittest.zcml kukit/kss.core/trunk/tests/ecmaview.py kukit/kss.core/trunk/tests/test_azaxview.py kukit/kss.core/trunk/tests/test_siteview.py Log: Reorganization and name space changes Modified: kukit/kss.core/trunk/EXTERNALS.TXT ============================================================================== --- kukit/kss.core/trunk/EXTERNALS.TXT (original) +++ kukit/kss.core/trunk/EXTERNALS.TXT Sun Nov 26 10:05:01 2006 @@ -1,9 +1,8 @@ # # results of svn propget svn:externals -# http://codespeak.net/svn/kukit/azax/trunk +# http://codespeak.net/svn/kukit/kss.core/trunk # # You can update your working dir by: # svn propset svn:externals -F EXTERNALS.TXT . # kukit http://codespeak.net/svn/kukit/kukit.js/trunk -configfeature http://codespeak.net/svn/z3/jsonserver/branch/merge/configfeature Modified: kukit/kss.core/trunk/INSTALL.txt ============================================================================== --- kukit/kss.core/trunk/INSTALL.txt (original) +++ kukit/kss.core/trunk/INSTALL.txt Sun Nov 26 10:05:01 2006 @@ -1,63 +1,40 @@ -$Id$ INSTALLATION NOTES ================== -1 - Prerequisites -2 - lxml installation -3 - Zope X3 installation -4 - Products setup -5 - Zope 3 <-> Zope 2 path setup -6 - How to use azax +*KSS* stands for *Kinetic Style Sheets*. ----------- +This is KSS for Zope, containing server side support +for Zope 2 and Zope 3. 1- Prerequisites +---------------- -To install azax you will need: +To install kss you will need: -- a working Zope 2.7.x + CPS 3.3.4 or greater -- ZopeX3-3.0.0 : http://www.zope.org/Products/ZopeX3 -- Five 1.0.1 or greater : http://codespeak.net/z3/five/ -- lxml 0.7 : http://codespeak.net/lxml +- a working Zope (2.8 or higher, or Zope 3 supported) -2 - lxml installation +- kss.core itself (which version, is dependent on the version + of Zope you use. Look for version numbers and release notes...) + +2 - Products setup +------------------ -Install the python package lxml on your python installation, ie the one -Zope 2.7 actually use with the usual command:: +- Put kss.core in $INSTANCE/lib/python (it should be under kss/core/, + with an empty __init__.py in the kss namespace module root) - $ python setup.py install +- Copy the slugs kss.core-configure.zcml and kss.core-meta.zcml + into the directory $INSTANCE/etc/package-includes. -3 - Zope X3 installation + * This is _not needed_ if you use KSS for Plone. -(not needed if you have Zope 2.8 or later as it includes Zope X3) + * If you use Zope2.8, the etc/package-includes directories + are not created by default, you have to create them yourself. -Please install ZopeX3-3.0.0 on your system (usually in /opt/ZopeX3-3.0.0) with -the python version you use for Zope2.7 and CPS, e.g.:: - - $ ./configure --prefix /opt/ZopeX3-3.0.0 --with-python /usr/bin/python - $ make - $ make install - $ make check - -4 - Products setup - -Put Five, azax in your $INSTANCE/Products - -(not needed if you have Zope 2.8 or later as it includes Five) - -5 - Zope 3 <-> Zope 2 path setup - -(not needed if you have Zope 2.8 or later as it Zope X3 is correctly setup) - -Edit your $INSTANCE/etc/zope.conf to add the following path declarations:: - - path /opt/ZopeX3-3.0.0/lib/python - path $INSTANCE/Products/azax - -6 - How to use azax - -Copy the product azaxdemo that's inside demos in your instance, -and look at its own README.txt +3 - How to use kss +------------------ +Copy the product kss.demo that's inside demos in your instance, +into the directory $INSTANCE/lib/python, and look at its own README.txt +(it should be under kss/demo) Modified: kukit/kss.core/trunk/TODO.txt ============================================================================== --- kukit/kss.core/trunk/TODO.txt (original) +++ kukit/kss.core/trunk/TODO.txt Sun Nov 26 10:05:01 2006 @@ -1,14 +1,2 @@ -* rename AzaxResponse to KukitResponse -* look to TextIndexNG3 howto have it compatible with Z3, Z2 and Plone -* rename the commands to better match the DOM API -* try to fix the namespace problems - see https://svn.z3lab.org/z3lab/azax/branches/gotcha-namespaces - - - -

2005-11-16 21:24:05.484000

-
-
- -* add more demos, we need radio buttons, addAfter and much more. There are bugs - in IE which we have to test and document. + + Modified: kukit/kss.core/trunk/__init__.py ============================================================================== --- kukit/kss.core/trunk/__init__.py (original) +++ kukit/kss.core/trunk/__init__.py Sun Nov 26 10:05:01 2006 @@ -43,14 +43,3 @@ # allow_class(AzaxBaseView) -# alias myself to global namespace, in case I am in Products -# this allows to run on Zope2, while configuration can -# import the product as "azax", without Products -try: - import sys - if not 'azax' in sys.modules: - # only 1st import is aliased. - pass #sys.modules['azax'] = sys.modules[globals()['__name__']] -except ImportError: - pass - Deleted: /kukit/kss.core/trunk/azax-configure.zcml ============================================================================== --- /kukit/kss.core/trunk/azax-configure.zcml Sun Nov 26 10:05:01 2006 +++ (empty file) @@ -1,5 +0,0 @@ - - - - - Deleted: /kukit/kss.core/trunk/azax-meta.zcml ============================================================================== --- /kukit/kss.core/trunk/azax-meta.zcml Sun Nov 26 10:05:01 2006 +++ (empty file) @@ -1,5 +0,0 @@ - - - - - Modified: kukit/kss.core/trunk/azaxview.py ============================================================================== --- kukit/kss.core/trunk/azaxview.py (original) +++ kukit/kss.core/trunk/azaxview.py Sun Nov 26 10:05:01 2006 @@ -93,7 +93,7 @@ clearSite() class AzaxBaseView(SiteView): - """ Base azax view + """ Base kss view this allows setting up the content of the response, and then generate it out. @@ -131,7 +131,7 @@ def handle(self, *args): for event in args: # first fire all normal stuff notify(event) - for event in args: # now do the azax bits + for event in args: # now do the kss bits component.handle(AzaxEvent(self, event)) def getCommandSet(self, name): Modified: kukit/kss.core/trunk/azaxview.txt ============================================================================== --- kukit/kss.core/trunk/azaxview.txt (original) +++ kukit/kss.core/trunk/azaxview.txt Sun Nov 26 10:05:01 2006 @@ -15,9 +15,9 @@ creating an example. The following will setup our enviroment and show that normal operation works. - >>> from Products.azax.azaxview import AzaxBaseView - >>> from Products.azax.interfaces import IAzaxEvent - >>> from Products.azax.tests.base import DebugTestRequest + >>> from kss.core.azaxview import AzaxBaseView + >>> from kss.core.interfaces import IAzaxEvent + >>> from kss.core.tests.base import DebugTestRequest >>> from zope import component >>> from zope.lifecycleevent import ObjectModifiedEvent >>> from zope.lifecycleevent.interfaces import IObjectModifiedEvent Modified: kukit/kss.core/trunk/configure.zcml ============================================================================== --- kukit/kss.core/trunk/configure.zcml (original) +++ kukit/kss.core/trunk/configure.zcml Sun Nov 26 10:05:01 2006 @@ -36,26 +36,11 @@ /> - + - - - - - - - - - - Modified: kukit/kss.core/trunk/deprecated.py ============================================================================== --- kukit/kss.core/trunk/deprecated.py (original) +++ kukit/kss.core/trunk/deprecated.py Sun Nov 26 10:05:01 2006 @@ -18,10 +18,25 @@ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # -import warnings +import warnings, textwrap + def deprecated(method, message): def deprecated_method(self, *args, **kw): warnings.warn(message, DeprecationWarning, 2) return method(self, *args, **kw) return deprecated_method +def deprecated_directive(method, directive, message): + def deprecated_method(_context, *args, **kw): + warnings.warn(message, DeprecationWarning, 2) + warnings.warn(textwrap.dedent('''\ + + + %s + The directive %s is deprecated and will be removed any time, + %s + ''' + % (_context.info, directive, message)), + DeprecationWarning, 2) + return method(_context, *args, **kw) + return deprecated_method Added: kukit/kss.core/trunk/kss.core-configure.zcml ============================================================================== --- (empty file) +++ kukit/kss.core/trunk/kss.core-configure.zcml Sun Nov 26 10:05:01 2006 @@ -0,0 +1,3 @@ + + + Added: kukit/kss.core/trunk/kss.core-meta.zcml ============================================================================== --- (empty file) +++ kukit/kss.core/trunk/kss.core-meta.zcml Sun Nov 26 10:05:01 2006 @@ -0,0 +1,3 @@ + + + Modified: kukit/kss.core/trunk/meta.zcml ============================================================================== --- kukit/kss.core/trunk/meta.zcml (original) +++ kukit/kss.core/trunk/meta.zcml Sun Nov 26 10:05:01 2006 @@ -1,7 +1,7 @@ - + Modified: kukit/kss.core/trunk/pluginregistry/configure.py ============================================================================== --- kukit/kss.core/trunk/pluginregistry/configure.py (original) +++ kukit/kss.core/trunk/pluginregistry/configure.py Sun Nov 26 10:05:01 2006 @@ -12,30 +12,6 @@ #class AzaxConfigurationError(Exception): # pass -# XXX This will go away. -def registerCommand(_context, name, jsfile=None): - 'Directive that registers a command' - - import warnings, textwrap - warnings.warn(textwrap.dedent('''\ - - %s - - The directive azax:registerCommand is deprecated and will be removed, - use azax:registerAction with command_factory="selector" or "global".''' - % _context.info), - DeprecationWarning) - - # check to see if the file exists - if jsfile is not None: - file(jsfile, 'rb').close() - - _context.action( - discriminator = ('registerAzaxCommand', name, jsfile), - callable = registerPlugin, - args = (Command, ICommand, name, jsfile), - ) - def registerEventType(_context, name, jsfile=None): 'Directive that registers an event type' @@ -44,7 +20,7 @@ file(jsfile, 'rb').close() _context.action( - discriminator = ('registerAzaxEventType', name, jsfile), + discriminator = ('registerKssEventType', name, jsfile), callable = registerPlugin, args = (EventType, IEventType, name, jsfile), ) @@ -58,7 +34,7 @@ file(jsfile, 'rb').close() _context.action( - discriminator = ('registerAzaxAction', name, jsfile), + discriminator = ('registerKssAction', name, jsfile), callable = registerPlugin, args = (Action, IAction, name, jsfile, command_factory, params_mandatory, params_optional, deprecated), ) @@ -71,7 +47,7 @@ file(jsfile, 'rb').close() _context.action( - discriminator = ('registerAzaxSelectorType', name, jsfile), + discriminator = ('registerKssSelectorType', name, jsfile), callable = registerPlugin, args = (SelectorType, ISelectorType, name, jsfile), ) @@ -80,7 +56,7 @@ 'Directive that registers a command set' _context.action( - discriminator = ('registerAzaxSelectorType', name), + discriminator = ('registerKssCommandSet', name), callable = registerPlugin, args = (CommandSet, ICommandSet, name, provides), ) Added: kukit/kss.core/trunk/pluginregistry/deprecated/__init__.py ============================================================================== --- (empty file) +++ kukit/kss.core/trunk/pluginregistry/deprecated/__init__.py Sun Nov 26 10:05:01 2006 @@ -0,0 +1,4 @@ +'''\ +Module init +''' + Added: kukit/kss.core/trunk/pluginregistry/deprecated/configure.py ============================================================================== --- (empty file) +++ kukit/kss.core/trunk/pluginregistry/deprecated/configure.py Sun Nov 26 10:05:01 2006 @@ -0,0 +1,26 @@ + +import os.path +from kss.core.pluginregistry.interfaces import ICommand +from kss.core.pluginregistry.command import Command +from kss.core.pluginregistry.plugin import registerPlugin +from kss.core.deprecated import deprecated_directive +from kss.core.pluginregistry import configure as _configure + +def registerCommand(_context, name, jsfile=None): + 'Directive that registers a command' + # check to see if the file exists + if jsfile is not None: + file(jsfile, 'rb').close() + + _context.action( + discriminator = ('registerKssCommand', name, jsfile), + callable = registerPlugin, + args = (Command, ICommand, name, jsfile), + ) +registerCommand = deprecated_directive(registerCommand, 'azax:registerCommand', + 'use kss:registerAction with command_factory="selector" or "global"') + +registerEventType = deprecated_directive(_configure.registerEventType, 'azax:registerEventType', 'use kss:registerEventType instead') +registerAction = deprecated_directive(_configure.registerAction, 'azax:registerAction', 'use kss:registerAction instead') +registerSelectorType = deprecated_directive(_configure.registerSelectorType, 'azax:registerSelectorType', 'use kss:registerSelectorType instead') +registerCommandSet = deprecated_directive(_configure.registerCommandSet, 'azax:registerCommandSet', 'use kss:registerCommandSet instead') Added: kukit/kss.core/trunk/pluginregistry/deprecated/directives.py ============================================================================== --- (empty file) +++ kukit/kss.core/trunk/pluginregistry/deprecated/directives.py Sun Nov 26 10:05:01 2006 @@ -0,0 +1,23 @@ +from zope.interface import Interface +from zope.schema import TextLine, Choice +from zope.configuration.fields import Path, Tokens, PythonIdentifier, \ + GlobalInterface + +class IRegisterCommandDirective(Interface): + 'Register an AZAX command plugin' + + name = TextLine( + title=u"Name", + description=u"The name of the command plugin.", + required=True, + ) + + jsfile = Path( + title=u"Javascript file", + description=u"The path of the javascript file that defines the plugin", + required=False, + ) + +from kss.core.pluginregistry.directives import IRegisterEventTypeDirective, \ + IRegisterActionDirective, IRegisterSelectorTypeDirective, \ + IRegisterCommandSetDirective Added: kukit/kss.core/trunk/pluginregistry/deprecated/meta.zcml ============================================================================== --- (empty file) +++ kukit/kss.core/trunk/pluginregistry/deprecated/meta.zcml Sun Nov 26 10:05:01 2006 @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + Modified: kukit/kss.core/trunk/pluginregistry/directives.py ============================================================================== --- kukit/kss.core/trunk/pluginregistry/directives.py (original) +++ kukit/kss.core/trunk/pluginregistry/directives.py Sun Nov 26 10:05:01 2006 @@ -3,24 +3,8 @@ from zope.configuration.fields import Path, Tokens, PythonIdentifier, \ GlobalInterface -# XXX this will go away -class IRegisterCommandDirective(Interface): - 'Register an AZAX command plugin' - - name = TextLine( - title=u"Name", - description=u"The name of the command plugin.", - required=True, - ) - - jsfile = Path( - title=u"Javascript file", - description=u"The path of the javascript file that defines the plugin", - required=False, - ) - class IRegisterEventTypeDirective(Interface): - 'Register an AZAX event type' + 'Register a KSS event type' name = TextLine( title=u"Name", @@ -35,7 +19,7 @@ ) class IRegisterActionDirective(Interface): - 'Register an AZAX action' + 'Register a KSS action' name = TextLine( title=u"Name", @@ -77,7 +61,7 @@ ) class IRegisterSelectorTypeDirective(Interface): - 'Register an AZAX selector type' + 'Register a KSS selector type' name = TextLine( title=u"Name", @@ -92,7 +76,7 @@ ) class IRegisterCommandSetDirective(Interface): - 'Register an AZAX command set' + 'Register a KSS command set' name = TextLine( title=u"Name", Modified: kukit/kss.core/trunk/pluginregistry/json/configure.zcml ============================================================================== --- kukit/kss.core/trunk/pluginregistry/json/configure.zcml (original) +++ kukit/kss.core/trunk/pluginregistry/json/configure.zcml Sun Nov 26 10:05:01 2006 @@ -11,95 +11,45 @@ ensures that this zcml will always execute. XXX But this should actually be done via features / conditionals from here. - - XXX in addition we don't know if azax is under Products - or not, so we provide both possibilities --> - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + Modified: kukit/kss.core/trunk/pluginregistry/json/utils.py ============================================================================== --- kukit/kss.core/trunk/pluginregistry/json/utils.py (original) +++ kukit/kss.core/trunk/pluginregistry/json/utils.py Sun Nov 26 10:05:01 2006 @@ -8,7 +8,7 @@ from zope.publisher.browser import TestRequest from interfaces import IJSONStreamWriteable -logger = logging.getLogger('azax') +logger = logging.getLogger('kss.core') def getJsonAddonFiles(): 'Gets the addon javascript files for json' Modified: kukit/kss.core/trunk/pluginregistry/meta.zcml ============================================================================== --- kukit/kss.core/trunk/pluginregistry/meta.zcml (original) +++ kukit/kss.core/trunk/pluginregistry/meta.zcml Sun Nov 26 10:05:01 2006 @@ -4,15 +4,11 @@ - + + + + - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /> - - - - - - - - Modified: kukit/kss.core/trunk/plugins/effects/__init__.py ============================================================================== --- kukit/kss.core/trunk/plugins/effects/__init__.py (original) +++ kukit/kss.core/trunk/plugins/effects/__init__.py Sun Nov 26 10:05:01 2006 @@ -2,11 +2,3 @@ Module init ''' -try: - import Products.Five -except ImportError: - pass -else: - # Allow to build commands from restricted code - from AccessControl import allow_module - allow_module('Products.azax.plugins.effects.interfaces') Modified: kukit/kss.core/trunk/plugins/effects/commands.py ============================================================================== --- kukit/kss.core/trunk/plugins/effects/commands.py (original) +++ kukit/kss.core/trunk/plugins/effects/commands.py Sun Nov 26 10:05:01 2006 @@ -1,11 +1,5 @@ from interfaces import IScriptaculousEffectsCommands - - -try: - from azax.azaxview import AzaxViewAdapter -except ImportError: - from Products.azax.azaxview import AzaxViewAdapter - +from kss.core.azaxview import AzaxViewAdapter class ScriptaculousEffectsCommands(AzaxViewAdapter): __allow_access_to_unprotected_subobjects__ = 1 Modified: kukit/kss.core/trunk/plugins/effects/configure.zcml ============================================================================== --- kukit/kss.core/trunk/plugins/effects/configure.zcml (original) +++ kukit/kss.core/trunk/plugins/effects/configure.zcml Sun Nov 26 10:05:01 2006 @@ -1,25 +1,15 @@ - - - + - - - - - - @@ -58,7 +48,7 @@ - - Modified: kukit/kss.core/trunk/siteview.txt ============================================================================== --- kukit/kss.core/trunk/siteview.txt (original) +++ kukit/kss.core/trunk/siteview.txt Sun Nov 26 10:05:01 2006 @@ -17,7 +17,7 @@ The main class which implements views as a site is `SiteView`. - >>> from Products.azax.azaxview import SiteView + >>> from kss.core.azaxview import SiteView When created this view will make it's manager the default site manager. @@ -33,7 +33,7 @@ this will dispatch IAzaxEvent's. >>> from zope.component.eventtesting import getEvents, clearEvents - >>> from Products.azax.interfaces import IAzaxEvent + >>> from kss.core.interfaces import IAzaxEvent >>> from zope.lifecycleevent import ObjectModifiedEvent >>> from zope.event import notify Modified: kukit/kss.core/trunk/tests/base.py ============================================================================== --- kukit/kss.core/trunk/tests/base.py (original) +++ kukit/kss.core/trunk/tests/base.py Sun Nov 26 10:05:01 2006 @@ -20,14 +20,14 @@ # 02111-1307, USA. # from Testing.ZopeTestCase import ZopeTestCase -from Products.azax import AzaxBaseView -from Products.azax import config -from ZPublisher.HTTPRequest import HTTPRequest -from cStringIO import StringIO -from Globals import InitializeClass +import kss.core +from kss.core import AzaxBaseView +#from kss.core import config +#from ZPublisher.HTTPRequest import HTTPRequest +#from cStringIO import StringIO +#from Globals import InitializeClass from OFS.SimpleItem import SimpleItem from textwrap import dedent - from zope.publisher.browser import TestRequest from zope.publisher.interfaces.browser import IBrowserRequest from zope.interface import Interface, implements @@ -88,8 +88,7 @@ pass # XXX TODO fix this?? --- never run yet on Z3 from zope.configuration.xmlconfig import XMLConfig - import azax - XMLConfig('tests/configure-unittes.zcml', azax)() + XMLConfig('tests/configure-unittes.zcml', kss.core)() else: from Products.Five.zcml import load_string, load_config load_config('meta.zcml', package=Products.Five) @@ -120,9 +119,9 @@ except IOError: # Zope 2.10 / Five 1.3.6 does not have it pass - load_config('meta.zcml', package=Products.azax) - load_config('configure.zcml', package=Products.azax) - load_config('configure-unittest.zcml', package=Products.azax.tests) + load_config('meta.zcml', package=kss.core) + load_config('configure.zcml', package=kss.core) + load_config('configure-unittest.zcml', package=kss.core.tests) def beforeTearDown(self): placelesssetup.tearDown() Modified: kukit/kss.core/trunk/tests/commandinspector.py ============================================================================== --- kukit/kss.core/trunk/tests/commandinspector.py (original) +++ kukit/kss.core/trunk/tests/commandinspector.py Sun Nov 26 10:05:01 2006 @@ -19,7 +19,7 @@ from zope.interface import Interface, implements from zope.app import zapi -from Products.azax.interfaces import IAzaxCommandView +from kss.core.interfaces import IAzaxCommandView class CommandInspectorView(object): '''Inspector view of a command. Modified: kukit/kss.core/trunk/tests/configure-unittest.zcml ============================================================================== --- kukit/kss.core/trunk/tests/configure-unittest.zcml (original) +++ kukit/kss.core/trunk/tests/configure-unittest.zcml Sun Nov 26 10:05:01 2006 @@ -6,27 +6,12 @@ - - - - - - - - - - - + Modified: kukit/kss.core/trunk/tests/ecmaview.py ============================================================================== --- kukit/kss.core/trunk/tests/ecmaview.py (original) +++ kukit/kss.core/trunk/tests/ecmaview.py Sun Nov 26 10:05:01 2006 @@ -34,10 +34,7 @@ # plus these are not "entirely clean" as far as caching is concerned... # Instead, use the resources implemented from concatresource: # this is version free and has properly implemented cache control. -try: - from azax.pluginregistry._concatresource.resource import ConcatResourceFactory -except ImportError: - from Products.azax.pluginregistry._concatresource.resource import ConcatResourceFactory +from kss.core.pluginregistry._concatresource.resource import ConcatResourceFactory _marker = object() @@ -82,7 +79,7 @@ This provides the tests run with the compiled kukit.js resource, in the same way as they would be run - in production with azax. + in production with kss. ''' implements(IBrowserPublisher) Modified: kukit/kss.core/trunk/tests/test_azaxview.py ============================================================================== --- kukit/kss.core/trunk/tests/test_azaxview.py (original) +++ kukit/kss.core/trunk/tests/test_azaxview.py Sun Nov 26 10:05:01 2006 @@ -22,24 +22,24 @@ import unittest, os from textwrap import dedent from zope.testing import doctest -from base import AzaxViewTestCase,FakeContent, TestRequest, DebugTestRequest -from Products.azax import AzaxUnicodeError -from Products.azax.plugins.core.interfaces import IKSSCoreCommands +from base import AzaxViewTestCase, FakeContent, TestRequest, DebugTestRequest +from kss.core import AzaxUnicodeError +from kss.core.plugins.core.interfaces import IKSSCoreCommands from zope.testing.cleanup import CleanUp as PlacelessSetup -from Products.azax.events import AzaxEvent -from Products.azax.interfaces import IAzaxView -from Products.azax.pluginregistry.interfaces import IAction, ICommandSet -from Products.azax.interfaces import IAzaxCommands, IAzaxEvent -from Products.azax.pluginregistry.action import Action -from Products.azax.pluginregistry.plugin import registerPlugin -from Products.azax.pluginregistry.commandset import CommandSet -from Products.azax.plugins.core.commands import KSSCoreCommands -from Products.azax.tests.base import IDebugRequest -from Products.azax.tests.commandinspector import CommandInspectorView +#from kss.core.events import AzaxEvent +from kss.core.interfaces import IAzaxView +from kss.core.pluginregistry.interfaces import IAction, ICommandSet +from kss.core.interfaces import IAzaxCommands #, IAzaxEvent +from kss.core.pluginregistry.action import Action +from kss.core.pluginregistry.plugin import registerPlugin +from kss.core.pluginregistry.commandset import CommandSet +from kss.core.plugins.core.commands import KSSCoreCommands +from kss.core.tests.base import IDebugRequest +from kss.core.tests.commandinspector import CommandInspectorView from zope import component from Products.Five import zcml import Products.Five -from zope.app.component.hooks import setSite, getSite, setHooks +#from zope.app.component.hooks import setSite, getSite, setHooks def setUpDoctTest(test=None): PlacelessSetup().setUp() @@ -189,7 +189,7 @@ suites = [] suites.append(unittest.makeSuite(TestAzaxView)) suites.append(unittest.makeSuite(FTestAzaxView)) - suites.append(doctest.DocTestSuite('Products.azax.azaxview')) + suites.append(doctest.DocTestSuite('kss.core.azaxview')) suites.append(doctest.DocFileSuite('../azaxview.txt', setUp=setUpDoctTest, tearDown=tearDownDoctTest)) Modified: kukit/kss.core/trunk/tests/test_siteview.py ============================================================================== --- kukit/kss.core/trunk/tests/test_siteview.py (original) +++ kukit/kss.core/trunk/tests/test_siteview.py Sun Nov 26 10:05:01 2006 @@ -1,23 +1,23 @@ -from base import AzaxViewTestCase,FakeContent, TestRequest, DebugTestRequest -from Products.azax import AzaxUnicodeError -from Products.azax.events import AzaxEvent -from Products.azax.interfaces import IAzaxCommands, IAzaxEvent -from Products.azax.interfaces import IAzaxView -from Products.azax.pluginregistry.action import Action -from Products.azax.pluginregistry.commandset import CommandSet -from Products.azax.pluginregistry.interfaces import IAction, ICommandSet -from Products.azax.pluginregistry.plugin import registerPlugin -from Products.azax.plugins.core.commands import KSSCoreCommands -from Products.azax.plugins.core.interfaces import IKSSCoreCommands -from Products.azax.tests.base import IDebugRequest -from Products.azax.tests.commandinspector import CommandInspectorView +#from base import AzaxViewTestCase, FakeContent, TestRequest, DebugTestRequest +#from kss.core import AzaxUnicodeError +#from kss.core.events import AzaxEvent +#from kss.core.interfaces import IAzaxCommands, IAzaxEvent +#from kss.core.interfaces import IAzaxView +#from kss.core.pluginregistry.action import Action +#from kss.core.pluginregistry.commandset import CommandSet +#from kss.core.pluginregistry.interfaces import IAction, ICommandSet +#from kss.core.pluginregistry.plugin import registerPlugin +#from kss.core.plugins.core.commands import KSSCoreCommands +#from kss.core.plugins.core.interfaces import IKSSCoreCommands +#from kss.core.tests.base import IDebugRequest +#from kss.core.tests.commandinspector import CommandInspectorView from Products.Five import zcml from zope import component from zope.component import eventtesting from zope.testing import doctest from zope.testing.cleanup import CleanUp as PlacelessSetup import Products.Five -import unittest, os +import unittest #, os def setUpDoctTest(test=None): PlacelessSetup().setUp() From reebalazs at codespeak.net Sun Nov 26 10:05:36 2006 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 26 Nov 2006 10:05:36 +0100 (CET) Subject: [Kukit-checkins] r34991 - in kukit/kss.demo/trunk: . browser tests Message-ID: <20061126090536.77F021007E@code0.codespeak.net> Author: reebalazs Date: Sun Nov 26 10:05:32 2006 New Revision: 34991 Added: kukit/kss.demo/trunk/kss.demo-configure.zcml kukit/kss.demo/trunk/kss.demo-meta.zcml Removed: kukit/kss.demo/trunk/azaxdemo-configure.zcml kukit/kss.demo/trunk/azaxdemo-meta.zcml Modified: kukit/kss.demo/trunk/INSTALL.txt kukit/kss.demo/trunk/azaxview.py kukit/kss.demo/trunk/browser/azax_demo.pt kukit/kss.demo/trunk/browser/azax_demo_index.pt kukit/kss.demo/trunk/configure.zcml kukit/kss.demo/trunk/simplecontent.py kukit/kss.demo/trunk/tests/test_azaxview.py Log: Reorganization and name space changes Modified: kukit/kss.demo/trunk/INSTALL.txt ============================================================================== --- kukit/kss.demo/trunk/INSTALL.txt (original) +++ kukit/kss.demo/trunk/INSTALL.txt Sun Nov 26 10:05:32 2006 @@ -1,10 +1,18 @@ -$Id$ INSTALLATION NOTES ================== -1/ Drop azaxdemo into your product dir -2/ In the zmi, add a "Azax Simple content" anywhere - let's call it "test" -3/ Get into "test" page, you should have a menu with available demos +1. Drop kss.demo into your $INSTANCE/lib/python dir (it must be in the subdir + kss/demo/, and the kss base directory must hold an empty __init__.py file). + +2. Copy slugs kss.demo-configure.zcml and kss.demo-meta.zcml into + $INSTANCE/etc/package-includes directory. + + * On Zope 2.8, the package-includes directory is not created by + default, so you also have to create it. + +3. In the zmi, add a "Kss Simple content" anywhere + let's call it "kssdemo" + +4. Get into "test" page, you should have a menu with available demos Deleted: /kukit/kss.demo/trunk/azaxdemo-configure.zcml ============================================================================== --- /kukit/kss.demo/trunk/azaxdemo-configure.zcml Sun Nov 26 10:05:32 2006 +++ (empty file) @@ -1,5 +0,0 @@ - - - - - Deleted: /kukit/kss.demo/trunk/azaxdemo-meta.zcml ============================================================================== --- /kukit/kss.demo/trunk/azaxdemo-meta.zcml Sun Nov 26 10:05:32 2006 +++ (empty file) @@ -1,5 +0,0 @@ - - - - - Modified: kukit/kss.demo/trunk/azaxview.py ============================================================================== --- kukit/kss.demo/trunk/azaxview.py (original) +++ kukit/kss.demo/trunk/azaxview.py Sun Nov 26 10:05:32 2006 @@ -19,11 +19,7 @@ # 02111-1307, USA. # -try: - from azax import AzaxBaseView, force_unicode -except ImportError: - from Products.azax import AzaxBaseView, force_unicode - +from kss.core import AzaxBaseView, force_unicode import datetime class AzaxView(AzaxBaseView): Modified: kukit/kss.demo/trunk/browser/azax_demo.pt ============================================================================== --- kukit/kss.demo/trunk/browser/azax_demo.pt (original) +++ kukit/kss.demo/trunk/browser/azax_demo.pt Sun Nov 26 10:05:32 2006 @@ -12,7 +12,7 @@

Change tag content

Top div

- Azax + KSS
  • @@ -62,12 +62,12 @@

    Javascript Styling

    This page defines a link in the header which rel attribute points - to a .kukit server file : + to a .kss resource file on the server : - see the kukit file here.

    + see the kss file here.

    - This .kukit file declares CSS selectors associated with events and server URLs called when the event occur. + This .kss file declares CSS selectors associated with events and server URLs called when the event occur.

    A javascript engine processes the XML content : it inserts javascript events in the DOM.

    Modified: kukit/kss.demo/trunk/browser/azax_demo_index.pt ============================================================================== --- kukit/kss.demo/trunk/browser/azax_demo_index.pt (original) +++ kukit/kss.demo/trunk/browser/azax_demo_index.pt Sun Nov 26 10:05:32 2006 @@ -1,7 +1,7 @@ -

    Azax demos

    +

    KSS demos

    • Change tag content
    • Two selects
    • Modified: kukit/kss.demo/trunk/configure.zcml ============================================================================== --- kukit/kss.demo/trunk/configure.zcml (original) +++ kukit/kss.demo/trunk/configure.zcml Sun Nov 26 10:05:32 2006 @@ -1,7 +1,7 @@ @@ -41,7 +41,24 @@ name="index.html" permission="zope.View" /> - + + + + + @@ -53,8 +70,8 @@ /> @@ -68,7 +85,7 @@ /> @@ -326,7 +343,7 @@ permission="zope.View" /> - Added: kukit/kss.demo/trunk/kss.demo-configure.zcml ============================================================================== --- (empty file) +++ kukit/kss.demo/trunk/kss.demo-configure.zcml Sun Nov 26 10:05:32 2006 @@ -0,0 +1,3 @@ + + + Added: kukit/kss.demo/trunk/kss.demo-meta.zcml ============================================================================== --- (empty file) +++ kukit/kss.demo/trunk/kss.demo-meta.zcml Sun Nov 26 10:05:32 2006 @@ -0,0 +1,3 @@ + + + Modified: kukit/kss.demo/trunk/simplecontent.py ============================================================================== --- kukit/kss.demo/trunk/simplecontent.py (original) +++ kukit/kss.demo/trunk/simplecontent.py Sun Nov 26 10:05:32 2006 @@ -33,7 +33,7 @@ class SimpleContent(SimpleItem): implements(ISimpleContent) - meta_type = 'AzaxDemo SimpleContent' + meta_type = 'KssDemo SimpleContent' security = ClassSecurityInfo() manage_options = ( Modified: kukit/kss.demo/trunk/tests/test_azaxview.py ============================================================================== --- kukit/kss.demo/trunk/tests/test_azaxview.py (original) +++ kukit/kss.demo/trunk/tests/test_azaxview.py Sun Nov 26 10:05:32 2006 @@ -21,18 +21,18 @@ import unittest, os from zope.testing import doctest from Testing.ZopeTestCase import ZopeTestCase -from Products.azax.tests.base import AzaxViewTestCase, FakeContent, \ - TestRequest, DebugTestRequest -from Products.azaxdemo.azaxview import AzaxView +from kss.core.tests.base import AzaxViewTestCase, FakeContent, \ + TestRequest, DebugTestRequest +from kss.demo.azaxview import AzaxView from Products.Five.zcml import load_string, load_config -import Products.azaxdemo +import kss.demo class AzaxDemoTestCase(AzaxViewTestCase): def afterSetUp(self): AzaxViewTestCase.afterSetUp(self) - load_config('meta.zcml', package=Products.azaxdemo) - load_config('configure.zcml', package=Products.azaxdemo) + load_config('meta.zcml', package=kss.demo) + load_config('configure.zcml', package=kss.demo) # fake content # XXX This is a holy mess. Go go macro adapters! fakecontent = FakeContent() @@ -68,5 +68,5 @@ def test_suite(): return unittest.TestSuite(( unittest.makeSuite(AzaxDemoTestCase), - doctest.DocTestSuite('Products.azaxdemo.azaxview'), + doctest.DocTestSuite('kss.demo.azaxview'), )) From reebalazs at codespeak.net Sun Nov 26 10:05:51 2006 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 26 Nov 2006 10:05:51 +0100 (CET) Subject: [Kukit-checkins] r34992 - kukit/kss/trunk Message-ID: <20061126090551.9E45A1007E@code0.codespeak.net> Author: reebalazs Date: Sun Nov 26 10:05:50 2006 New Revision: 34992 Modified: kukit/kss/trunk/ (props changed) Log: Reorganization and name space changes From reebalazs at codespeak.net Sun Nov 26 10:06:09 2006 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 26 Nov 2006 10:06:09 +0100 (CET) Subject: [Kukit-checkins] r34993 - kukit/kss/trunk Message-ID: <20061126090609.E31DC1007B@code0.codespeak.net> Author: reebalazs Date: Sun Nov 26 10:06:08 2006 New Revision: 34993 Added: kukit/kss/trunk/EXTERNALS.TXT kukit/kss/trunk/README kukit/kss/trunk/__init__.py Log: Reorganization and name space changes Added: kukit/kss/trunk/EXTERNALS.TXT ============================================================================== --- (empty file) +++ kukit/kss/trunk/EXTERNALS.TXT Sun Nov 26 10:06:08 2006 @@ -0,0 +1,9 @@ +# +# results of svn propget svn:externals +# http://codespeak.net/svn/kukit/kss/trunk +# +# You can update your working dir by: +# svn propset svn:externals -F EXTERNALS.TXT . +# +core http://codespeak.net/svn/kukit/kss.core/trunk +demo http://codespeak.net/svn/kukit/kss.demo/trunk Added: kukit/kss/trunk/README ============================================================================== --- (empty file) +++ kukit/kss/trunk/README Sun Nov 26 10:06:08 2006 @@ -0,0 +1,2 @@ +This is the root package of the kss namespace. It holds packages +of the kss framework. Added: kukit/kss/trunk/__init__.py ============================================================================== --- (empty file) +++ kukit/kss/trunk/__init__.py Sun Nov 26 10:06:08 2006 @@ -0,0 +1,4 @@ +'''\ +Module init +''' +