Plone Integration with YAFOWIL
Project description
This is the Zope2 integration for YAFOWIL
Functionality
Browser Resources
Plugins may provide custom javascript, css, images (and so on). This package registers the directory containing them as a resource-directory. Thus they can be accessed from the webbrowser. The schema is +++resource++MODULENAME/filename.ext. I.e. if yafowil.widget.autocomplete is available its javascript can be accessed with http://localhost:8080/Plone/++resource++yafowil.widget.autocomplete/widget.js.
Integration with Plone and GenericSetup
There is a profile YAFOWIL available registering all browser resources in css and javascript registries.
The resources are registred without any thridparty dependencies (i.e. dependend javascript libraries).
Integration with Translation
The package adds an translation method for Zope2 i18n messages. Its added using a global preprocessor
Request wrapper
This package registers a global preprocessor for YAFOWIL. It wraps the Zope2 request by an own request instance providing the behavior expected by YAFOWIL. Spezial behaviors:
File Uploads provided by Zope2 as ZPublisher.HTTPRequest.Fileupload objects are turned into Dicts with the keys:
- file
file-like object to read data from
- filename
submitted name of the upload
- mimetype
type of the upload
- headers
all headers
- original
keeps the original ZPublisher.HTTPRequest.Fileupload object
Base Forms
This package ships with base forms to be extended.
Concrete implementation may look like:
>>> from yafowil.base import factory >>> from yafowil.plone.form import Form >>> class MyForm(Form): ... action_resource = '@@view_name_callable_by_browser' ... ... def prepare(self): ... form = factory( ... 'form', ... name='myform', ... props={ ... 'action': self.form_action, ... }) ... ... # form field manufactoring here... ... ... self.form = form
Convenience for creating YAML forms:
>>> from zope.i18nmessageid import MessageFactory >>> from yafowil.plone.form import YAMLForm >>> class MyYAMLForm(YAMLForm): ... action_resource = '@@view_name_callable_by_browser' ... form_template = 'package.name:forms/myform.yaml' ... message_factory = MessageFactory('package.name')
Both base form classes inherit from Products.Five.BrowserPage, thus they must be registered via ZCML browser:page directive:
<browser:page for="*" name="form_registration_name" class=".forms.MyYAMLForm" permission="cmf.ModifyPortalContent" />
Forms build with this base form classes are rendered without any wrapper, in order to insert such a form in a layout it must be called inside a wrapper template (plone example):
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" xmlns:tal="http://xml.zope.org/namespaces/tal" xmlns:metal="http://xml.zope.org/namespaces/metal" xmlns:i18n="http://xml.zope.org/namespaces/i18n" lang="en" metal:use-macro="context/main_template/macros/master" i18n:domain="package.name"> <body> <metal:content-core fill-slot="content-core"> <metal:block define-macro="content-core"> <tal:form replace="structure context/@@form_registration_name" /> </metal:block> </metal:content-core> </body> </html>
Source Code
The sources are in a GIT DVCS with its main branches at github.
Contributors
Jens W. Klein <jens [at] bluedynamics [dot] com>
Peter Holzer <hpeter [at] agitator [dot] com>
Benjamin Stefaner <bs [at] kleinundpartner [dot] at>
Robert Niederreiter <rnix [at] squarewave [dot] at>
History
1.3.1
Not ZIP safe! [jensens, 2012-04-15]
1.3
GS profile marker - fix wrong filename. [rnix, 2012-04-11]
Add yafowil.plone.form module containing base classes. [rnix, 2012-04-11]
1.2
Rename to yafowil.plone - seems a 2 at the end of a package name confuses easy_install. wtf!? [jensens, 2012-03-20]
1.1
Depend on yafowil 1.3 in setup.py and bump version. [jensens, 2012-03-20]
1.0
Resources are registered using the new plugin infrastructure. Theres now an import step for generic setup registering all javascripts and stylesheets provided by the plugins. They are registred without any thirdparty dependencies. If a resource is already registered its registration is skipped. Such its possible to register or overide the defaults using xml files. [jensens, 2012-02-01]
Automatic browserresources for plugins. [jensens, 2012-02-16]
Depends on yafowil 1.3 plugin infrastucture. [jensens, 2012-02-15]
Example form and senseful default-classes and plans for plone. [hpeter, bennyboy, 2012-02-15]
1.0-beta
Made it work. [jensens, rnix, et al, 2010-12-27]
License
Copyright (c) 2010-2012, BlueDynamics Alliance, Austria All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
Neither the name of the BlueDynamics Alliance nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY BlueDynamics Alliance AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BlueDynamics Alliance BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
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.