XML-Director
Project description
xmldirector.plonecore
xmldirector.plonecore is the technical foundation of the XML-Director project (www.xml-director.info). The goal of the XML-Director project is building an enterprise-level XML content management system on top of the CMS Plone (www.plone.org) with support for XML databases like eXis-db or Base-X. However the underlaying implementation can also be used to mount arbitrary backend through WebDAV into Plone.
xmldirector.plonecore integrates Plone 4.3 (later Plone 5.0) with eXist-db or Base-X or providing the following features:
mounts an arbitary eXist-db or Base-X collection into Plone
ACE editor integration
ZIP export from eXist-db or Base-X
ZIP import into eXist-db or Base-X
pluggable view mechanism for configuring custom views for XML database content by filename and view name
create, rename or delete collections through the web
extensible architecture through Plone Dexterity behaviors
support for XQuery scripts called through the RESTXQ layer of eXist-db (allows you to call XQuery scripts and return the output format (JSON, HTML, XML) depending on your application requirements)
dedicated per-connector logging facility
small and extensible
experimental support for mounting arbitrary WebDAV service into Plone
XMLText - a field for storing XML content in BaseX or eXist-db
XPathField - for retrieving parts of XML content stored within a XMLText field through an XPath expression (e.g. for extracting and displaying metadata from XML content)
XMLBinary and XMLImage fields for storing binary data and images in BaseX or eXist-db. The functionality is identical with the standard Dexterity file and image fields (except for the different storage layer)
The primary usecase for xmldirector.plonecore is the integration of XML document collections into Plone using eXist-db or Base-X as storage layer. xmldirector.plonecore is not storage layer for Plone content in the first place although it could be used in some way for storing primary Plone content (or parts of the content) inside eXist-db or Base-X. There is no build-in support for mapping metadata as stored in XML documents to Plone metadata or vice versa. However this could be implemented easily in application specific code build on top of xmldirector.plonecore. The design goal of xmldirector.plonecore is to provide the basic functionality for integrating Plone with eXist-db or Base-X without implementing any further specific application requirements. Additional functionality can be added through Dexterity behaviors, supplementary browser views, event lifecycle subscribers and related technology.
Requirements
Plone 4.3 (Plone 5.0 support in progres)
Supported XML backends:
eXist-db 2.2 or higher
or Base-X 8.0 beta (no support for V 7.X due to WebDAV bugs)
(un)supported/experimental WebDAV backends:
OwnCloud
Alfresco
Installation
Add xmldirector.plonecore to the eggs and zcml options of your buildout configuration, re-run buildout and install the connector through the add-ons management of Plone.
Configuration
Goto the Plone control panel and click on the XML-Director Core configlet and configure the
WebDAV URL of the XML database.
For eXist-db you need something like:
http://localhost:6080/existdb/webdav/db
For Base-X 8 you need:
http://localhost:8984/webdav
WebDAV username
WebDAV password
Using xmldirector.plonecore
The package provides a new content-types Connector that will include eXist-db or Base-X into Plone - either from the top-level collection of your eXist-db/Base-X database or from a subcollection. You can browse and traverse into subcollections, view single documents or edit text-ish content through the web (using the build-in ACE editor integration).
All connection settings (URL, username and password can be overriden on the connector level) in order to ignore the Plone site-wide eXist-db settings).
Dexterity fields
xmldirector.plonecore comes with the following Dexterity fields that can be either used programmatically in your own field schema or through-the-web.
XMLText
The XMLText can be used to store valid XML content. The field is rendered without Plone using the ACE editor. You can perform a client-side XML validation within the edit mode of a document by clicking on the Validate XML button. A document with invalid XML content can not be submitted or saved. Invalid XML will be rejected with an error message through the edit form.
XMLXPath
The XMLXPath field can be used to reference an XMLText field in order to display a part of the XML content using an XPath expression.
Example
An XMLPath field with field name myxml might contain the following XML content:
<?xml version="1.0"?> <doc> <metadata> <title>This is a text</title> </metdata> <body>....</body> </doc>
In order to extract and display the <title> text within a dedicated Dexterity field you can use the following extended expression:
field=<fieldname>,xpath=<xpath expression>
In this case you would use:
field=myxml,xpath=/doc/metadata/title/text()
Note that the current syntax is very rigid and does not allow any whitespace characters expect within the <xpath expression>.
XMLBinary, XMLImage
Same as file and image field in Plone but with BaseX or eXist-db as storage layer.
License
This package is published under the GNU Public License V2 (GPL 2)
Source code
Bugtracker
Travis-CI
See https://travis-ci.org/xml-director/xmldirector.plonecore
Credits
The development of xmldirector.plonecore was funded as part of a customer project by Deutsche Gesellschaft für Hämatologie und medizinische Onkologie (DGHO).
Changelog
0.3.4 (2015-01-13)
default view handler accept a custom request/filename argument in order to override the name of downloaded file
fixed bug in view registry with BrowserView as view handler
added PersistentLoggerAdapter for adopting arbitrary persistent objects for persistent logging through a Zope annotation
0.3.3 (2015-01-05)
running the tests should not leave any testing directory traces within the XML databases
almost 100% test coverage for the core functionality
more tests
added documentation on content-types
0.3.2 (2014-12-30)
SHA256 calculation for xml content now generated in a more stable way (but possibly much slower way)
API for service-side XML validation
added Docker support
added XSLT registry
added Shakespeare XML data for XMLDocument demo content-type
added ‘test_all.sh’ script for running tests against BaseX and eXist-db Docker containers
0.3.1 (2014-12-12)
added Test connection button to controlpanel
moved test content type into a dedicated profile democontent
Moved metadata handling from JSON to XML on the storage layer in order to let the underlaying database index the .metadata.xml files as well
0.3.0 (2014-12-11)
renamed zopyx.existdb to xmldirector.plonecore
experimental Dexterity support with four new fields:
XMLText - for XML content
XMLXPath - for referencing XMLText parts through an XPath expression
XMLImage and XMLBinary - same as image and file fields in Dexterity but with eXist-db as storage layer
removed emulation configuration option
added plone.app.dexterity as dependency
upgraded to ACE editor V 1.1.8
added progressbar for zip_upload()
added support for importing a single file through the ZIP import form into the current subdirectory
0.2.11 (2014-11-08)
updated documentation
0.2.10 (2014-11-08)
bugfix release
0.2.9 (2014-11-01)
support for overriding credentials locally
0.2.8 (2014-11-01)
minor fix for mounting Plone sites over WebDAV into another Plone site
0.2.7 (2014-11-01)
experimental support for BaseX XML database through the WebDAV API. Limitations: REMOVE operations over WebDAV do not seem to work against BaseX 7.9
0.2.6 (2014-11-01)
more tests
0.2.5 (2014-10-30)
experimental traversal support for accessing WebDAV resources by path using (un)restrictedTraverse()
minor URL fixes
more tests
0.2.4 (2014-10-22)
configuration option for default view for authenticated site visitors
0.2.3 (2014-10-13)
fix in saving ACE editor content
0.2.2 (2014-10-12)
typo in page template
0.2.1 (2014-10-12)
added support for renaming a collection through the web
0.2.0 (2014-10-02)
various minor bug fixes
added basic tests
0.1.17 (2014-09-25)
fixed action links
0.1.16 (2014-09-25)
Connector is no longer a folderish object
0.1.15 (2014-09-22)
removed indexing support completely (leaving a specific indexing functionality to policy packages using zopyx.existdb)
0.1.14 (2014-09-15)
fixed subpath handling in create/remove collections
0.1.13 (2014-09-07)
support for removing collections TTW
0.1.12 (2014-09-05)
support for creating new collections TTW
0.1.11 (2014-08-21)
action “Clear log” added
0.1.10 (2014-08-05)
log() got a new ‘details’ parameter for adding extensive logging information
0.1.9 (2014-08-01)
human readable timestamps
0.1.8 (2014-07-31)
minor visual changes
0.1.7 (2014-07-29)
rewritten code exist-db browser code (dealing the correct way with paths, filenames etc.)
0.1.6 (2014-07-29)
fixed improper view prefix in directory browser
0.1.5 (2014-07-13)
minor fixes and cleanup
0.1.4 (2014-07-12)
made webservice query API aware of all output formats (xml, html, json)
timezone handling: using environment variable TZ for converting eXist-db UTC timestamps to the TZ timezone (or UTC as default) for display purposes with Plone
0.1.3 (2014-07-07)
added webservice API interface
various bug fixes
0.1.2 (2014-06-30)
various bug fixes
0.1.0 (2014-06-20)
initial release
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.