How to install z3c.jsontree
- Download and install ActivePython
- Open Command Prompt
- Type
pypm install z3c.jsontree
Dependencies
- distribute
- z3c.json
- z3c.jsonrpc
- z3c.jsonrpcproxy
- z3c.template
- z3c.xmlhttp
- zope.component
- zope.container
- zope.contentprovider
- zope.i18n
- zope.i18nmessageid
- zope.interface
- zope.proxy
- zope.publisher
- zope.security
- zope.traversing
- zope.viewlet
- [test] z3c.testing
- [test] zope.app.component
- [test] zope.app.publication
- [test] zope.app.testing
- [test] zope.browsermenu
- [test] zope.browserpage
- [test] zope.browserresource
- [test] zope.configuration
- [test] zope.pagetemplate
- [test] zope.principalregistry
- [test] zope.security
- [test] zope.site
- [test] zope.testbrowser
- [test] zope.testing
Lastest release
This package provides an JSON-RPC item tree implementation for Zope3.
Detailed Documentation
JSONRPC Tree
This package offers a JSONRPC tree view which can be used as navigation tree. Let's show how we can register our jsonrpc tree view:
>>> from zope.configuration import xmlconfig >>> import z3c.jsonrpc >>> context = xmlconfig.file('meta.zcml', z3c.jsonrpc) >>> context = xmlconfig.string(""" ... <configure ... xmlns:z3c="http://namespaces.zope.org/z3c"> ... <z3c:jsonrpc ... for="*" ... class="z3c.jsontree.jsonrpc.JSONTreeItems" ... permission="zope.Public" ... methods="loadJSONTreeItems" ... layer="z3c.jsonrpc.testing.IJSONRPCTestSkin" ... /> ... </configure> ... """, context)
Now we will setup some content structure based on the default zope folder class:
>>> from zope.site.folder import Folder >>> site = getRootFolder() >>> content = Folder() >>> site['content'] = content
And we need to be able to get an absoluteURL for the form:
>>> import zope.interface >>> import zope.component >>> from zope.location.interfaces import ILocation >>> from zope.traversing.browser.interfaces import IAbsoluteURL >>> class FakeURL(object): ... zope.interface.implements(IAbsoluteURL) ... zope.component.adapts(ILocation, zope.interface.Interface) ... def __init__(self, context, request): ... pass ... def __str__(self): ... return u'http://fake/url' ... def __call__(self): ... return str(self)
>>> zope.component.provideAdapter(FakeURL)
JSON-RPC proxy
If we call our JSON-RPC tree item method, we can see the different JSON data on the different contexts:
>>> from z3c.jsonrpc.testing import JSONRPCTestProxy >>> siteURL = 'http://localhost/++skin++JSONRPCTestSkin' >>> proxy = JSONRPCTestProxy(siteURL) >>> proxy.loadJSONTreeItems('z3cJSONTree') {u'treeChilds': {u'childs': [{u'hasChilds': False, u'contextURL': u'http://fake/url', u'url': u'http://fake/url/@@SelectedManagementView.html', u'linkHandler': u'', u'content': u'content', u'iconURL': u'', u'id': u'z3cJSONTree.::content'}], u'id': u'z3cJSONTree'}}
The content object has no items and returns some empty JSON data:
>>> proxy = JSONRPCTestProxy(siteURL + '/content') >>> proxy.loadJSONTreeItems('z3cJSONTree') {u'treeChilds': {u'childs': [], u'id': u'z3cJSONTree'}}
CHANGES
0.6.0 (2010-09-23)
- reflect changes in zope packages, use new package externals
- fix broken tests
- Fix className handling in javacsript, it seems that newer version of JQuery
can't handle $.className.has(ele, ...) use $(ele).hasClass(...) instead.
- Fix: getParentsFromContextToObject, don't return a parent chain if an item
is a location proxied NotFound error object. It's possible that such a NotFound object will wrap a context which we don't allow in our parent chain at all.
0.5.1 (2009-03-10)
- Fix: use imports from newest packages e.g. zope.site.folder.Folder
- Fix: be smart to NotFound error objects. NotFound errors are not locatable.
0.5.0 (2008-04-16)
- Fix: adjust ITreeItems adapter. Added additional discriminator which
prevents to get missused as /@@/ adapter if configured with base registry
- implemented ITreeItems adapter which is responsible for list all items listed
in tree
- Initial Release