How to install falkolab.ext3.direct
- Download and install ActivePython
- Open Command Prompt
- Type
pypm install falkolab.ext3.direct
Dependencies
- distribute
- zope.app.appsetup
- zope.app.cache
- zope.app.folder
- zope.app.pagetemplate
- zope.app.publication
- zope.cachedescriptors
- zope.component
- zope.configuration
- zope.interface
- zope.publisher
- zope.publisher
- zope.schema
- zope.security
- zope.traversing
- zope.viewlet
- [test] simplejson
- [test] zope.app.securitypolicy
- [test] zope.app.testing
- [test] zope.testing
Lastest release
Zope3 Ext.Direct - Server-side Stack for ExtJS 3.
How do I use it ?
Let's register api and views:
>>> from zope.configuration import xmlconfig >>> context = xmlconfig.string(""" ... <configure ... xmlns="http://namespaces.zope.org/zope" ... xmlns:extdirect="http://namespaces.zope.org/extdirect" ... > ... <include package="falkolab.ext3.direct" file="meta.zcml" /> ... ... <extdirect:api ... for="zope.app.folder.interfaces.IFolder" ... namespace = "my.app" ... /> ... ... <extdirect:view ... for="zope.app.folder.interfaces.IFolder" ... class="falkolab.ext3.direct.testing.AlbumList" ... permission="zope.ManageContent" ... name="albumlist" ... /> ... ... <extdirect:view ... for="zope.app.folder.interfaces.IFolder" ... class="falkolab.ext3.direct.testing.Contact" ... permission="zope.ManageContent" ... /> ... </configure> ... """)
Direct API:
>>> print http(r""" ... GET /@@directapi HTTP/1.1 ... Authorization: Basic bWdyOm1ncnB3 ... """) HTTP/1.1 200 Ok Cache-Control: no-cache Content-Length: ... Content-Type: text/javascript;charset=utf-8 Expires: ... Pragma: no-cache <BLANKLINE> Ext.namespace('my.app'); my.app.REMOTING_API={"url": "http://localhost/@@directrouter", "namespace": "my.app", "type": "remoting", "actions": {"Contact": [{"name": "getInfo", "len": 1}], "albumlist": [{"formHandler": true, "name": "add", "len": 0}, {"name": "getAll", "len": 0}]}};
Auto add provider :
>>> print http(r""" ... GET /@@directapi?add_provider HTTP/1.1 ... Authorization: Basic bWdyOm1ncnB3 ... """) HTTP/1.1 200 Ok Cache-Control: no-cache Content-Length: ... Content-Type: text/javascript;charset=utf-8 Expires: ... Pragma: no-cache <BLANKLINE> Ext.namespace('my.app'); my.app.REMOTING_API={"url": "http://localhost/@@directrouter", "namespace": "my.app", "type": "remoting", "actions": {"Contact": [{"name": "getInfo", "len": 1}], "albumlist": [{"formHandler": true, "name": "add", "len": 0}, {"name": "getAll", "len": 0}]}}; Ext.Direct.addProvider(my.app.REMOTING_API);
And Direct Request hanling (for addition see ROUTER.TXT):
>>> print http(r""" ... POST /@@directrouter HTTP/1.1 ... Authorization: Basic bWdyOm1ncnB3 ... Content-Length: 71 ... Content-Type: application/json; charset=UTF-8 ... Referer: http://localhost/ ... ... {"action":"albumlist","method":"getAll","data":[],"type":"rpc","tid":1}""") HTTP/1.1 200 Ok Content-Length: 89 Content-Type: text/javascript <BLANKLINE> {"action": "albumlist", "tid": 1, "type": "rpc", "method": "getAll", "result": [1, 2, 3]}
CHANGES
1.1.0 (2010-12-23)
- Changes to support python 2.6
1.0.1 (2010-11-10)
- Removed the dependencies on zope.app.intid
- Changes to support zope.componetnt>=3.6.0
- Added skipkeys=True for simplejson encoder to prevent raising a TypeError
1.0.0a (2009-08-20)
- Initial release.