Plomino is a powerful and flexible web-based application builder for Plone.
- create your own custom applications from a web interface without programming
- create and design forms in WYSIWYG mode
- easily embed charts or maps
- create specific actions with formulas (compute fields, send emails, …)
- adapt the application behaviour depending on the user access rights and roles
- import/export your application structure and/or your application data,
including replication between Plomino instances
Plomino is a through-the-web application builder, hence:
- it is not a through-the-web content-type builder like
Dexterity, which is perfect to
create a custom content type but that will always stick to the standard
content management scenario, while Plomino allows any custom scenario,
- it is not just a form generator like
PloneFormGen, as Plomino provides
all the services (data storage, search, automation, import/export, etc.) to
build an entire application. Regarding form generation itself, a major
difference with PloneFormGen is that Plomino allows editing the form layout
in its entirety, while PloneFormGen uses a fixed pre-defined form layout.
Plomino itself is internationalized and translated in seven languages.
Applications built with Plomino can be internationalized (see the
To deploy Plomino, you need to edit your buildout.cfg file
and add the following in the eggs section:
and also add the following in the versions block:
collective.js.datatables = 2.0.1
Then you have to run buildout to realize your configuration:
Installation on Plone 4.0 and 4.1
If you’re using Plone version older than 4.2 you’ll need to add some
more directives to your buildout.cfg.
Plomino depends on plone.app.registry, and plomino.tinymce requires
Products.TinyMCE>=1.2.13. To make Plomino work on pre-4.2 Plone sites
you need to pin those versions in your versions.cfg section:
and use a known good set for plone.app.registry.
This means extending your buildout from:
replacing 4.0.9 with the actual version you need.
Plomino is continuously tested on Travis and the code coverage
is tracked on coveralls.io .
The complete list is available here <http://www.plomino.net/credits>.
edit your buildout.cfg and add Products.CMFPlomino to the eggs list:
Then you have to run your buildout:
$ ./bin/buildout -N
- JSON export compliant with Plomino 2 [mamogmx]
- Enable fields validation in Page forms [ebrehault]
- Allow to define a custom JS validation callback (window.plomino_custom_validation_callback) [ebrehault]
- Pass a TemporaryDocument context to hidewhen evaluation [instification]
- Allow to display request data with alternate forms and read/edit mode [instification]
- Check for hidden subforms when validating inputs [instification]
- Adapt to rows for datagrid field in PlominoForm.tojson [instification]
- Add max year option for date/time field [ivanteoh]
- Fix isCurrentUserAuthor (the doc creator is always Onwer, so we should test Plone rights
in the db context, not the doc) [ebrehault]
- Fix sorting of view docs [jean]
- Fix importDesignFromZip for when there are script resources [jean]
- Generate canonical URLs for local resources [jean]
- Forgot to bump the version string [jean]
- Enable standard behaviour when looking up portal_skins resources [jean]
- Allow to post data with open_url util [manuelep]
- Enable multiple file upload [robystar]
- Fixes [ebrehault, ivant, fulv, gaudenz]
- Datagrid inline editing [davisp1]
- jQuery-ui datepicker widget for DATETIME fields [manuelep]
- Redirect on save document if a value for plominoredirecturl is specified in
- Make views searchable: accept a query as URL parameter [manuelep]
- Inject computed HTML attributes based on name, and not id [manuelep]
- Allow indexing of computed display fields [djay, ivant]
- Working on BaseField.getFieldValue, handling of field defaults
- Fix few Chameleon compatibility issues
- Improve document properties page
- Split key column from sort column
- Remove Close action from views
- Optimize TemporaryDocument
- Fixes for dates and decimal
- Fix timezone support in date conversion
- Fix temporary doc behaviour when evaluation hide-when
- support for labels associated to fields
- disabled formula editing for PlominoDesigner (so we can allow a user to change
form layouts without breaking the formulas)
- fix a major vulnerability in open_url (now, targeted sources must be declared
safe from an local package)
- allow to load specific CSS and JS in a PlominoForm
- GenericSetup import/export for Plomino db marked as templates
- allow to inject HTML attributes on fields
- extended translation support for views
- Reorder validation, so that submitted values can be
- Enable Views to use field rendering [jean]
- Allow forms to specify their HTTP submit method [jean]
- Dynamic titles [jean]
- Add labels in layout [jean]
- add import from zip function for database design [davismr]
- add export as zip function for database design [davismr]
- fix missing encoding on exportCSV view [jpcw]
- filtering feature in datatabse design tab [davisp1]
- Depend on zope.app.component and zope.globalrequest
so that our users on Plone 4.0 don’t have to [silviot]
- Test Plone 4.0, 4.1, 4.2 and 4.3 on travis [silviot]
- Don’t choke on XML import when there is an empty file
- Hide/display checkboxes in views
- Make sure formulas are compiled with db manager rights
- context.abortOnError() API
- use coveralls.io for test coverage reporting
- EditBareDocument template
- Add headers (based on fields titles) on datagrid in static mode
- Fix action bar displaying at both top and bottom
- Fix batching in dynamic view
- Add Boolean field type
- Add onBeforeSave event
- Date serialization support in the JSON API
- Give access to i18n support directly from Plomino forms and fields
- Pass JQueryUI dialog settings through datagrid field configuration
- Fix “run as owner” agent behavior
- Avoid transaction save when viewing a document [silviot]
- clean up pdb
- new Plomino util function: is_email
- new Plomino util function: urlquote
- fix field validation
- Plone 4.3 compliancy fixes
- various fixes for datagrids
- integrate jsonutils to manage decimal [jean]
- use iframe in overlay for datagrid popup [silviot]
- working on Plone4.3 support [alert]
- hide-when fixes [manuelep]
- static display for datagrids in read mode [ebrehault]
- server-side pagination and filtering for dynamic views
- new Plomino utils: decimal and escape_xml_illegal_chars
- offer selection lists instead of free text entries in various design parameters (source view, sorting column, …)
- re-sync all .po
- Fix getItem to return a deepcopy
- Migration fix: initialize and refresh documents as BTreeFolder properly
- Performance profiling utility.
- Sort search results according search view sorting settings.
- Plone 3 compliancy: define __nonzero__ method on PlominoDocument (as it is not defined in Plone 3 by CMFBTreeFolder2)
- Czech translation (contributed by Jakub Svab)
- codemirror integration
- Depends on collective.js.datatables [toutpt]
- fix buildout for Plone 3
- fix popups for Plone 3
- Display validation errors in a nice popup.
- Fix importFromXML bugs.
- Fix File attachment indexing.
- Use CMFBTreeFolder instead of basic PortalFolder for PlominoDocuments so existing (<1.14) attached files keep accessible.
- PlominoDocument is not Archetypes-based anymore, it uses pure CMF now.
- ‘Plomino’ package is renamed ‘Products.CMFPlomino’.
- Plone 4.2 compliancy.
- Fix design portlet on Plone 3.
- Add JSON utils: json_dumps and json_loads
- Add CSS class containing the element id on the Plomino element portlet
- Fix agent security when running as owner
- New content-type addable in PlominoForm: PlominoCache, to indicate cache fragments
- Fix exportCSV and exportXLS for views
- Fix OpenDatabase when doc counting is active
- onOpenView event
- getCache and setCache which use plone.memoize to cache data
- getRequestCache and setRequestCache to cache data into the request
- Allow keyword args for agent __call__
- fix transform exceptions in attached file indexing
- fix editor permissions to allow file attachment deletion
- fix reader access control on getfile
- add cgi_escape to utils
- create plomino_workflow and fix permissions
- integrate plone.app.async support to enable asynchronous agent execution and asynchronous refreshdb
- allow to run agent as current user or as owner
- don’t use File for everything in /resources/; use Script (Python) for script libraries
- use onSave returned value to redirect to url after save
- getAllDocuments() returns PlominoDocuments (and not brains anymore, unless getObject=False)
- various fixes
- (for Plone 4 only) use MailHost.send instead of secureSend
- fix document portal indexation behaviour
- fix permission issues with Document id formula
- fix Mandatory field checking with File attachments fields
- i18n fixes
- fix translation method
- display rendered values in datagrid in edit mode
- Only use Unicode in the Plomino index,
- Fix ConflictError issue: avoid writing annotations in fields objects constantly,
- Plone 4.1 compliancy fixes.
- Plone 3 compliancy (broken after Plone 4.1 compliancy)
- Fix applyHideWhen behaviour to avoid meaningless errors when applyHideWhen is not used for actual rendering.
- Enable Plomino documents in sitemap
- Use Plomino_SearchableText field in search form to match SearchableText
- Display design tree into the design portlet
- Fix processImportAPI separator
- Support field validation at submit time in datagrid popup forms
- Fix behaviour with hidden fields passed as param in request
- Update french translation
- Fix resources import/export
- Fix dynamic view for IE<9 compliancy
- Fix conflicts with Collage
- Update french translation
- enable JQuery UI theme support in datatables
- load accordions content on click if url provided
- external utils pluggin mechanism
- refreshdb improvements
- fix richtext field bug with Products.TinyMCE 1.1.8 (a commit was missing in 1.9.4)
- isDocument method in PlominoUtils to test if context is a document
- fix categorized dynamic view (when column contains multivalues)
- fix richtext field bug with Products.TinyMCE 1.1.8
- File handling fixes
- onSearch event (for Search forms)
- Fix view generation
- Allow Plomino designers to manage Plomino element portlets
- Fix import/export encoding problems
- Fix error traceback pop-up rendering
- Document id formula to compute document id at creation time.
- Display error traceback in a pop-up (showing error message and formula code).
- Import/export documents to/from a server local folder
- Validator to avoid using underscores in views and columns ids.
- Fix URLs in virtual hosting context.
- Plomino_Readers: Plomino_Readers allows to restrict the list of users, groups, and/or user roles allowed to view the document.
- Use collective.js.jqueryui instead of custom jqueryui. IMPORTANT NOTE: in Plone 3, please use collective.js.jqueryui = 220.127.116.11
- Fix replication (file attachments support with blob + push/pull behavior).
- Plomino element portlet can be conditionally displayed.
- Generate a view based on a form (use fields for columns, set selection formula, and create “Add new” button).
- Clean “browserims” (make sure Plomino API works when REQUEST is not defined to allow proper usage from a script).
- Plomino documents are not necessarily indexed into the portal catalog.
- Replace mode for design import (existing design is entirely replaced by the imported one).
- German translation.
- User-friendly error messages for failing formulas.
- TEXT and NAME fields indexed as FieldIndex (instead not ZCTextIndex) to allow sorting.
- New field mode “Computed on save”: value is computed when document is saved and stored, it is not re-computed when the document is opened.
- Online debugger (integration with Clouseau): failing formula can be executed step-by-step from the web interface.
- Documents stored in a BTreeFolder.
- If available, use plone.app.blob to store file attachments.
- When importing design or documents, use savepoints instead of actual commit.
- CSV import uses fields definition (so values are casted accordingly, instead of storing everything as strings).
- Excel export method on views.
- Categorized views supported with dynamic mode.
- Fix file attachment bug under Plone 4.
- Dynamic picklist for selection field
- fix datagrid (it was storing rendered values and not raw values)
- localization for datatables: en, es, fr, it, lt, nl
- dynamic hidewhen are now manage at hidewhen level (and not as a global setting in the form)
- few minor fixes
- fix delete button in Plomino views when using the Dynamic view rendering
- fix XML import with indexed datagrid fields
- fix jqueryui skin elements access
- Remove dependencies with: collective.js.jquery, collective.js.jqueryui, plone.app.jquerytools.
- Dynamic hide-when.
- Fields can be provided by external products as plugin utilities.
- Fields improvements: picklist for names and doclinks.
- Store all texts in unicode.
- Lithuanian translation.
- Improve import/replication/refresh performances and display a progress bar.
- Plone 4 compliant
- JQueryUI accordion integration (ability to create collapsible sections in forms)
- New portlet to insert a Plomino form anywhere in your Plone site
- Installation using a buildout extend
- Force form for a document using ?openwithform=formid in the request
- German translation fixes
- ability to restrict documents XML export to a given view
- sort elements by id in the Design tab
- XML export improvements: elements are sorted, xml is pretty
(so diff and svn play nicely), CDATA escaping has been removed, and
lxml is used if installed
- unlock webdav-locked elements before importing
- fix: column sorting and summing
- fix: openWithForm encoding errors
- fix: do not call onSave when importing document from replication
or XML file
- JQuery datatables to render Plomino views
- Datagrid field type
- Fulltext indexing in local Plomino index
- Documents import/export via XML files
- Ability to define column values using existing fields
- Portlet with useful links for design management (add items, acl, etc…)
- Google visualization table to display views
- Fixes for Plone 4 compliancy (work in progress)
- Access control fix : Owner is author of any document (just like PlominoManager role)
- MissingValue() method in PlominoUtils : it returns Missing.Value which can be useful
when processing ZCatalog brains (=search results) as Missing.Value cannot be imported
- Do not compute column values in index if the document does not belong to the view.
Note: it does not really change the performances when indexing, but it does reduce
the index size.
It also reduce the amount of error traceback in debug mode.
- Fix: escape CDATA in XML import/export (Jean Jordaan contribution)
- Fix: handle empty multiselect and empty checkboxes
- Fix: do not default to PlominoAuthor right if Authenticated generic right
is PlominoAuthor whereas the current user as PlominoReader right
- Fix: set encoding in exportCSV
- Fix: insufficient privileges error when changing Anonymous access right from PlominoAuthor to No Access
- Enable multiple Google Visualization fields in the same form
- hide selection box in views if no remove permission
- refresh() method on PlominoDocument: same as save() but do not trigger onSaveDocument
- more i18n French translations
- Validation formula improvments (ability to test the current doc id + bug fixes)
- beforeCreateDocument event
- Security fix: when a group has PlominoAuthors rights, members of this group are just authors on their own documents
- Control Kupu height for Richtext fields
- Delete button confirmation message
- German translation
- Ability to hide Default Actions in forms
- Group support in user roles and in Plomino_Authors
- Import/export database settings and ACL settings
- XML import/export design to/from file
- Replication filtering using a view (feature financed by ACEA)
- TinyMCE support
- Delete documents from view
- Bug fixes
- Custom start page
- Form as page (no action bar)
- i18n fixes
- bug fixes
- fr-fr fallback for i18n fr files
- Date/Time widget fix for Plone 3.2
- IMPORTANT NOTE: this version does not support Plone versions < 3.2
- Better error handling for field rendering