Collage

A product to create page compositions in Plone.

Project Description

Collage

Overview

Collage is a product which allows editors to align new or existing content from multiple sources in a layout. An example of such a page is one that shows a document along with one or more collections.

Several add-on products exists which allows you to include portlets, forms or even other websites. See the add-on repository for more information.

Compatibility

  • Plone 3.1-4.0

Status

Stable; used in production.

Development

Please report issues to the issue tracker. The file docs/DEVELOPER.txt describes how to extend the product with support for custom content types and additional renderers.

Upgrades

If you upgraded Products.Collage in the file system, open in ZMI /your/plone/site/portal_setup and click the "Upgrades" tab.

Select the "Products.Collage:default" profile and see if upgrades are available. Run them :D

Credits

Development:

Translations:

Collage icon from the Silk Icon Theme by Mark James (CCA 2.5).

Sponsors

Work on this product has been sponsored by Headnet (http://www.headnet.dk), University of Leicester and EDF (http://www.edf.fr).

Collage developer documentation

The Collage product was built to be easily customizable.

Adding content views

New content views can be added by registering a browser view with a browser:page-directive. Examples of this can be found in:

./browser/views.zcml

A view for a standard document can be registered as follows:

<browser:page
   name="my-view"
   for="Products.ATContentTypes.content.document.ATDocument"
   permission="zope.Public"
   template="my-view-template.pt"
   class=".document.MyDocumentView"
   layer="Products.Collage.interfaces.ICollageBrowserLayer"
   />

To display a human-readable title, we associate the view with the following class, placed in a file document.py::

from Products.Five.browser import BrowserView

class MyDocumentView(BrowserView):
    title = u'My view'

Theme-specific content views

If you want to add a new view or override an existing view only for sites using one particular theme product, you must register a theme-specific Collage layer. (We can't reuse the normal theme-specific layer, because then there's no way to tell that the view is a Collage view).

To add a theme-specific Collage layer, use the following ZCML:

<interface
    interface=".path.to.IMyCollageThemeLayer"
    type="Products.Collage.interfaces.ICollageBrowserLayerType"
    name="Plone Default"
    />

where the interface attribute is a custom marker interface that you have defined, and the name attribute is the name of the CMF theme with which you want to associate this layer.

Then you can use layer=".path.to.interfaces.IMyCollageThemeLayer" in your view ZCML registration, instead of Products.Collage.interfaces.ICollageBrowserLayer.

Skins views

New skins views can be added by registering a named utility in:

MySkin/browser/skins.zcml

For example, a skin "Alert" for the view "my-view" can be registered as follows:

<utility
   name="collage-my-view-alert"
   provides="Products.Collage.interfaces.IAlertSkin"
   factory=".skins.PortletSkin03"
/>

To display a human-readable title, we associate the utility with the following class, placed in a skins.py:

from Products.MySkin import MyMessageFactory as _

class PortletSkin03(object):
    title = _(u"skin-03", default=u"My portlet skin")

Add IAlertSkin in MySkin/interfaces.py:

from zope import interface
class IAlertSkin(interface.Interface):
     """Interface for alert skins views."""

To associate this skin to a view, you must add the interfaces implemented by the skin:

class MyDocumentView(BrowserView):
    title = u'My view'
    skinInterfaces = (IAlertSkin,)

Note that you don't need this above stuff for portlets views that are already skinnable.

Finally, add your CSS rules in a stylesheet:

#collage .collage-my-view-alert {
 ...

}

Note that if you are using "Merge CSS composition" of CSS registry, your stylesheet must be after "collage.css" and use the same condition as the former:

object/@@collage|nothing

Products.Collage provides a minimal skinning demo. See the skindemo folder (start with skindemo/README.txt as usual).

Content controls

Content controls are registered as viewlets. See ./browser/viewlets.zcml for examples.

Changelog

1.3.1 (2011-06-08)

  • Fixed folder_summary_view in Collage for Collections in Plone 4 - the macro does not exist anymore. Now the code is copied over here: suboptimal, but no better idea here (w/o touching Plone itself). [jensens]
  • Make existing items view compatible with LinguaPlone. Use the navigation root as the default query path, and also supply the parameter Language, set to "all", such that we get any object appearing under the current navigation root, regardless of session language. [malthe]
  • Fixed imports that were changed in Plone 4.1. [malthe]
  • Changed interface registration for Image and File views for Plone 3 to allow for p.a.blob image and file replacement types. [dunlapm]
  • Updated Insert Current/New item menus to use Plone 4 methods for getting type icons when available. [dunlapm]

1.3.0-final (2010-10-22)

  • Add missing Products.Archetypes to setup dependencies. [thet]
  • Show folderContents action in actions-viewlet for ColageColumns. This allows to browse and edit individual objects created in a collage column. [thet]
  • Included new properties following 'rnix' and 'khink' new features in default setup profile and last upgrade step. [glenfant]
  • Plone 3 support is back. No change for Plone 4 [glenfant]
  • Fix #85 - Add a new event break collage view [yboussard]
  • Image and File layouts work with blob objects. [thomasdesvenain]
  • Fixed many internationalizations. [thomasdesvenain]
  • Updated french translations. [thomasdesvenain]
  • Synched i18n/collage-xx.po files. [thomasdesvenain]
  • Number of columns per batch is configurable via @@collage-controlpanel. Added support for 4- and 5-column layout (CSS and templates). [khink]

1.3.0-b4 (2010-04-06)

  • Fixed issue where layout viewlets would not be shown on Plone 4 due to an incorrect type assertion.
  • The content type icon for Aliased content now appears with a border instead of the "alias" label.
  • Fixed UI styling on Plone 4.
  • Compatibility fix for Chameleon.

1.3.0-b3 (2010-02-04)

  • Plone 4 compatibility. [malthe]
  • New icons. [malthe]

1.3.0-b2 (2010-01-17)

  • Added topic view which inherits the view setting from the topic content object (using a mapping to collage view names). [malthe]
  • Added topic views for tabular and summary displays. [malthe]
  • Fixed issue where you could not choose the standard layout if a missing layout was already selected (this might occur if an add-on product had been removed). [malthe]
  • Synched i18n/collage-xx.po files (10 messages added, 5 removed) [glenfant]
  • Added a GS upgrade step to 1.3.0 [glenfant]

1.3.0-b1 (2010-01-09)

  • Adjusted the row renderer's use of template arguments for compatibility with Zope 2.12. [davisagli]
  • Aliases are now inserted using an ajax-driven reference browser (custom implementation) which operates similarly to the standard Plone reference browser widget. [malthe]
  • Fail gracefully (and informatively) when a layout cannot render. [malthe]
  • Move the "split column" action to the row. [malthe]
  • Cleaned up layout stylesheet. [malthe]
  • Fixed issue that prevented inline-editing from working properly. [malthe]
  • Changes to user interface appearance. [malthe]
  • Added form protection. [malthe]
  • Rewired compose view to simplify templates and avoid needless indirection. [malthe]
  • Rename 'Manage page' to 'Compose'. [malthe]
  • Move settings fields to the settings schemata. Added field descriptions. [malthe]

1.2.3 (2009-11-02)

  • Fixed search bug mentioned in #57 when adding alias. [glenfant]
  • Worked around IE CSS bugs mentioned in issue #60. Thanks to Kevin Deldycke. [glenfant]
  • Synched all .po with the latest labels and updated the *-fr.po files. Collage translators, new .po files are wawiting for your inputs. [glenfant]
  • Following jensens change on types whitelist, change the test accordingly. [glenfant]
  • On alias target removal, the alias layout is reset to "standard". This gives a chance to content authors to delete the alias, rather tha saying "Error: Layout not found". This fixes #63 [glenfant]
  • Update JavaScript to no longer use reserved function postMessage. This fixes #54. [dunlapm]
  • Update french translation (tiny semantic improvement). [kdeldycke]
  • Avoid BadRequest error while adding alias_whitelist property in upgrade step if this property already exists. You should usually be able to run an upgrade step a second time without fail. [maurits]
  • Added a useful very reduced 'minimal' view for files. [jensens]
  • Removed type 'Folder' from Collage properties -> types whitelist. It does not make much sense (and will confuse users) to add a folder direct inside a Collage. if someone really needs it, it can be enabled with minor effort. [jensens]
  • Made Collage fields: show_title, show_description and index_subobjects languageIndependent. [jensens]
  • Fixed deprecated URL for add on packages (third party content types) in the doc. [glenfant]

1.2.2 (2009-06-07)

  • A UID can start with numbers. The value of the id attribute cannot start with a number by naming convention. The views now use: string:title-${view/getUniqueIdentifier}, which always starts with a t [jladage]
  • Don't render empty descriptions in standard document. [jensens]
  • In Plone 3 the contributor is the one adding content. So default roles for "Add Collage content" is now Contributor, additional to Owner & Manager.
  • Don't assume that a view is always available: added error view as fallback. It helps a lot in development and doesn't expose ugly tracebacks to users if site has a configuration problem. Also minor cleanup and fixed tests. [jensens]
  • Added confirmation-popup for delete/remove action. [jensens]
  • Make viewlets following all the same paradigm. Reorder them according to usability thought. Turn expandable content into overlayed box. [jensens]
  • Turn add row into menu. Fix circular import problem instead ugly workaround. [jensens]
  • Added upgrade step to 1.2.2 that adds the alias whitelist property, without which the control panel crashes. [glenfant]
  • Synched all .po files following jensens's changes and added french missing labels. [glenfant]
  • Make a difference between types to be added to Collage and types enabled for alias. This introduces a new whitelist in controlpanel. [jensens]
  • Feature "automatic split of rows with more than 3 entries" was broken. Its fixed now. I also added an unbatched view for the row. [jensens]
  • Almost completed German translation. [jensens]
  • Added Dutch translation (nl). [reinout]
  • Added portuguese (pt) translation. [igbun]
  • Added additional CSS classes to Collage blocks to make it easier to apply styles only for particular positions, content types, or Collage view names. [davisagli]
  • Typo in collage.css.dtml [glenfant]
  • Fixed issue where layouts would not be looked up correctly for aliases. [malthe]
  • Added support for theme-specific overrides of Collage views. See DEVELOPERS.txt for details. [davisagli]
  • Update and sync french and english translation. [kdeldycke]

Collage 1.2.1 (2008-12-10)

https://svn.plone.org/collective/Products.Collage/tags/1.2.1/

  • Moved event handlers in events.py module [glenfant]
  • Fixed bug on searching (spaces in type name or non ascii searchable text). Found items titles are colored according their workflow state as in folder_contents (...) [glenfant]
  • Use folder_summary_view instead of folder_listing in topic views. This fixes issue #43. [malthe]
  • Added Alias target search limit in config panel. [glenfant]
  • Optimizations of existing items view including link to target. [glenfant]
  • Removed code for old Plone (< 3.1) support since we can't be used in Plone 3.0 or older anymore [glenfant]
  • Memoizing where possible to speed up views (not sure to be exhaustive) [glenfant]
  • New translations due to the control panel, and added translations synch script. [glenfant]
  • Fixed bug on @@collage_helper [glenfant]
  • Added control panel for Collage inner content types whitelist. [glenfant]
  • Collage is now LinguaPlone compatible and therefore Collage elements are now translatable. [erral]
  • Renderer: if a layout is defined on a canonical object, but not on a translation, now the canonical version's layout setting is used for the translation rather than the default. (Language versions should look the same unless explicitly defined otherwise.) [thomasw]
  • Added Basque (eu) and Spanish (es) translations. [erral]
  • Added safety belt to GenericSetup upgrade scripts. [glenfant]
  • Added translation entries for new boolean in Collage. [glenfant]
  • Collage subcontents indexing is now an option, since a Collage object may be irrelevant in search results (i.e: a Collage with only File contents). [glenfant]
  • Added utilities.getFSVersionTuple that may help Collage extension components (add skins, content type support, ...) [glenfant]
  • version.txt is major.minor.bugfix-[beta] to get synch with metadata.xml/version (when upgrade step required) and complying getFSVersionTuple above [glenfant]
  • Add missing event-related translation. [kdeldycke]

Collage 1.2.0 beta 3 (2008-08-15)

https://svn.plone.org/collective/Products.Collage/tags/1.2b3

  • Packaged as a python egg and released on pypi. [davisagli]
  • Renamed builtin portlet skins and gave minimum CSS to them. [glenfant]
  • Re-using ATContentTypes.content.schemata.ATContentTypesSchema and removing copied/pasted portions of code in our schema definitions. [glenfant]
  • Removed CMF skins layer "Collage" and spreaded its stuffs in Zope 3 style browser resources and pages (CSS). Added an upgrade step for this. [glenfant]
  • Using the MessageFactory for labels and descriptions in schemas. Code is more compact and i18ndude friendly. [glenfant]
  • Added unit tests for utilities. [glenfant]

Collage 1.2.0 beta 2

https://svn.plone.org/collective/Collage/tags/1.2.0beta2

  • Added a GenericSetup upgrade step to 1.2.0. [glenfant]
  • Removed useless Folder and Plone Site types setups. [glenfant]

Collage 1.2.0 beta 1

https://svn.plone.org/collective/Collage/tags/1.2.0beta1

  • Added a skin demo for portlets [glenfant]
  • Code cleanup with pyflakes [glenfant]
  • Registering skin with ZCML [glenfant]
  • Version is now 3 digits (major.minor.bugfix) as most components. [glenfant]
  • Extensions/* (Install script) is now useless. Removed [glenfant]
  • Removed meta_type attr in GS profile when not creating objects. (potentially harmful according to MArtin Aspeli) [glenfant]
  • Defining "view" variables in templates is harmful. Renamed to kssview (generally) [glenfant]
  • For reason I can't understand, templates macros for KSS editing only work when in a <span metal:define-macro ...> or a <div metal:define-macro ...> [glenfant]
  • We must set each fied in its own macro in the xx_portlet.pt views otherwise KSS screams. [glenfant]
  • Made portlets skinnable (reintroduced some of the zegor branch) [glenfant]
  • Fixed unicode error in clipboard's title (reintroduced fix from zegor branch). [glenfant]
  • I hate tabs for indenting (removed in every file I needed to change) [glenfant]
  • Some easy code refactorings: the trunk does not support Plone 2.x and older versions any more. [glenfant]
  • Added some markups for i18ndude in Python. [glenfant]
  • Moved (and added) tests to "tests" directory. [glenfant]
  • Making templates ready for i18ndude that found malformed stuffs when ZPT is more tolerant. [glenfant]
  • Made split- and expand-icons transparent [malthe]
  • Added clickable link view.
  • Simplified view class names. [malthe]
  • Removed annotations hack (we now expect content to be IAnnotatable). [malthe]
  • Image standard display now shows the actual image rather than its preview. This caused issues with large images in a Collage being upscaled when displayed. [rockdj]

Collage 1.1

https://svn.plone.org/collective/Collage/tags/1.1

  • Various bug fixes [malthe]
  • No longer ship with jQuery. [malthe]
  • Show locking viewlet in content menu [malthe]
  • Fixed a jQuery integration issue [malthe]

Collage 1.0

https://svn.plone.org/collective/Collage/tags/1.0-final

  • Added a search text field in existing_items to find items in large sites. Thanks to Silvio Tomatis for the patch. This closes ticket http://plone.org/products/collage/issues/12. [zegor]

  • Renamed manage_page to compose_page to avoid ZMI filtering access problem [zegor]

  • Added borders on manage_page to distinct rows, columns and items [zegor]

  • Added "portlets" views [zegor]

  • Rows, Colums and Aliases not indexed in portal_catalog [zegor]

  • Do not display Aliases with insufficient privileges [zegor]

  • Made the Collection item size matter, and added a More... button [regebro]

  • Added content views for ATLink, ATFile and ATNewsItem [zegor]

  • Fixed some i18n problems Added English and French po files Resynchronized po files with pot [zegor]

  • Do not display share and properties tabs with Plone 3.0 [zegor]

  • Added .metadata to cache icons [zegor]

  • Added delete-object view method to avoid redirection to confirmation_form [zegor]

  • Refactored codebase

    Moved code out of ./browser/browser.py into separate files.

    New directory structure:

    ./browser/viewlets viewlet templates ./browser/views content view templates ./browser/templates collage ui templates

    Zope 3 configuration files:

    configuration.zcml collage ui and functionality views.zcml content views actions.zcml ui actions (insert, split etc.) viewlets.zcml ui configuration

    [malthe]

  • Nested headings properly

    Lets have a 'safe' structure: <h1> title of the collage <h2> could be a row heading and / or object item http://www.w3.org/TR/1999/WAI-WEBCONTENT-19990505/#tech-logical-headings

    [pelle]

  • Added HISTORY file

    Lets use this file again to log changes...

    [pelle]

Self-Certification

[X] Internationalized

[X] Unit tests

[X] End-user documentation

[X] Internal documentation (documentation, interfaces, etc.)

[X] Existed and maintained for at least 6 months

[X] Installs and uninstalls cleanly

[X] Code structure follows best practice

Current Release
Products.Collage 1.3.1

Released Jun 08, 2011

Download file Get Collage for all platforms
Products.Collage-1.3.1.tar.gz
If you are using Plone 3.2 or higher, you probably want to install this product with buildout. See our tutorial on installing add-on products with buildout for more information.

All Releases

Version Released Description Compatibility Licenses Status
1.3.1 Jun 08, 2011 More about this release… final
1.3.0-final Apr 05, 2011 Better Plone 4 friendlyness. Support for 4 and 5 columns layout (see config panel) More about this release…
Plone 4
Plone 3
GPL final
1.3.0-b4 More about this release… GPL beta
1.3.0-b3 More about this release… beta
1.3.0-b2 UI cleanup, improved topic views, compatibility with Plone 4. More about this release…
Plone 4
Plone 3
GPL beta
1.2.3 Nov 02, 2009 Many bugfixes, and some improvements. Please run available upgrade steps when upgrading from an older version. More about this release…
Plone 3
GPL final
1.2.1 Dec 09, 2008 Lots of fixes, some improvements, and slightly better performances, and code cleanup, as usual. More about this release…
Plone 3
GPL final
1.2.0 cleanup, LinguaPlone support, skinnable portlets More about this release…
Plone 3
GPL beta
1.1 Apr 07, 2008 Plone 3.1-compatbility release. More about this release…
Plone 3
GPL final
1.0 Feb 29, 2008 2.5/3.0 compatibility release; supports inline-editing (requires Plone 3.0.1+). This release also features many UI improvements contributed by Jean-Charles Rogez. More about this release…
Plone 2.5
Plone 3
GPL final