Skip to main content

Plone Mosaic

Project description

Plone Mosaic

Plone Mosaic is a new layout solution for Plone. It’s built for Plone 5, but should also work on Plone 4.3 with Read this introduction and the package documentation for more details how to use this package.


Mosaic, Blocks and Tiles provide a simple, yet powerful way to manage the pages on your Plone website. At their core, they rely on semantic HTML and resources with valid, publishable URLs.

Mosaic Editor editor is a visual editor for pages rendered using Blocks. It relies on a grid system to place tiles onto a page in an intuitive, WYSIWYG, drag-and-drop manner. Using Mosaic Editor, it is easy to compose pages with complex, balanced and visually appealing layouts.

Currently, the Mosaic Editor is activated, when any content with Mosaic layout view active is being edited. (Mosaic layout is available for any content with Layout support behavior enabled.)

Blocks is a rendering algorithm based on HTML markup conventions. A page managed by Mosaic Editor is stored as a simple HTML document representing the actual content of that page as a standalone, publishable resource devoid of any site layout content (e.g. global navigation elements). This is referred to as content layout.

Tiles represent the dynamic portions of a page. At its most basic level, a tile is simply an HTML document with a publishable URL.

In practice, tiles are usually implemented as browser views deriving from the Tile base class and registered with the <plone:tile /> ZCML directive. This allows tiles to have some basic metadata and automatically generated edit forms for any configurable aspects, which Mosaic will expose to users. See plone.tiles for examples.

When work with tiles in Mosaic Editor, there are three types of tiles:

Text tiles

Static HTML markup (WYSIWYG-edited text) placed into the content or site layout. Strictly speaking, text tiles are not tiles in that they do not involve any tile fetching or merging - instead they are stored as part of the page or site layout. To the user, however, a text tile can be moved around and managed like any other.

Field tiles

Render the value of a metadata field such as the title or description. The values of field tiles may be edited in-place in the page, but the value is stored in the underlying field and can be indexed in the catalog, used for navigation and so on. In practice, a field tile is an instance of the special tile with the field name passed as a parameter.

App tiles

Any other type of dynamic tile. Examples may include a folder listing, a media player, a poll or pretty much anything else you can think of.


Plone Mosaic is installed by building a Plone site with package and activating its Plone Mosaic add-on. The package has following dependencies:

plone.tiles >= 1.5.2 >= 2.2.1 >= 1.0b5 >= 3.1.0 >= 1.0 >= 1.8.0

After the add-on activation, the new content layout and editor support can be enabled for any content type by enabling behaviors Layout support and Drafting support.


Plone Mosaic is considered to be in beta phase. Most features for the first final release are done, but there may still be bugs, which should be reported. Not all the features of Plone Mosaic have yet easily accessible UI (e.g. layouts can be created into portal_resources and bound to content types as named views only through Zope Management Interface, ZMI).

Backend development

Plone 5 version of Plone Mosaic is available for development using plips/plip-mosaic.cfg at Plone 5 coredev-buildout.

Plone 4 version of Plone Mosaic can be developed by cloning the product directly.

Clone and build:

$ git clone
$ cd
$ python  # clean python 2.7 virtualenv recommended
$ bin/buildout


$ bin/demo

Get started:

  • open a browser at http://localhost:55001/plone/++add++Document

  • login as admin with password secret

  • save the new page

  • from the Display-menu, select the new entry Mosaic layout

  • click Edit to see the new Mosaic Editor

Alternatively you can also use bin/instance fg.

Frontend development

Plone Mosaic requires javascript and css bundles, which must be manually updated for Plone 4.3.x with:

$ make install
$ make clean all mode=release

The bundle can also be built with source maps and watched for changes with:

$ npm install
$ make clean all watch

Documentation screenshots

To script screenshots into the Sphinx documentation, use the development buildout:

$ git clone
$ cd
$ python  # clean python 2.7 virtualenv recommended
$ bin/buildout -c develop.cfg

To speed up your iterations, before compiling the docs, start the robot server with:

$ bin/robot-server -v

With robot-server running, you can re-build the docs’ screenshots relatively fast with:

$ bin/robot-sphinx docs html

Or simply run the embedded screenshots as robot tests from a single document with:

$ bin/robot docs/getting-started.rst

or with phantomjs:

$ bin/robot -v BROWSER=phantomjs docs/getting-started.rst

and open ./report.html to view the test report.

Just add Debug keyword anywhere to pause the robot in the middle of the screenshot script and drop you into a Robot Framework REPL.


1.0rc2 (2016-04-08)

  • Fixed TypeError during editing when no layout resource directory was found. [maurits]

1.0rc1 (2016-04-07)


  • Allow users to save layouts they are creating [vangheem]

  • If only one layout is available, auto-select it. [vangheem]

  • Be able to show/hide content layouts. [vangheem]

  • Add Mosaic layout into available views views when layout behavior is enabled and remove the view when layout behavior is disabled from a portal ype [datakurre]

  • Ability to limit maximum amount of Mosaic columns by setting data-max-columns attribute on data-panel -element (default: 4). [neilferreira]

  • Align rich text editor right if the tile is more on the right side of the page [vangheem]


  • Do not remove data-pat-tinymce body attribute as this is not necessary with how tinymce is initialized anymore [vangheem]

  • Fix use of rawhtml text tile [vangheem]

  • Fix case where you could get an error on save because mosaic could not figure out the tile type correctly [vangheem]

  • Do not allow hitting enter for editing non-rich text fields [vangheem]

  • Disable clicking links of content inside tiles while in edit mode [vangheem]

  • Fix TinyMCE widget in add-form which was broken due to a change how the settings are stored in Plone 5 vs 4. BBB compatible. [jensens]

  • Fix tinymce toolbar scrolling out of view with large rich text tiles. TinyMCE toolbar will now being sticky as the user scrolls down. [vangheem]

  • Fix tiles not rendering correctly if they contain JavaScript patterns when adding and moving them around. [vangheem]

  • Fix do not add _layout multiple times to tile data [vangheem]

  • Fix issue where spurious &nbsp; was getting saved to description [vangheem]

  • Issue when registry configuration parsing would throw an error [vangheem]

  • Fix issue where you would end up saving non-resolveuid urls to rawhtml tiles and also prevent write conflicts when the editor sends out multiple edits at the same time [vangheem]

  • Fix to only show drag handlers if customizing layout [vangheem]

  • fix issue where you would no longer be able to edit a rich text area after you clear the whole area out [vangheem]

  • Fix weird Firefox bug with TinyMCE that prevented data from being saved. [vangheem]

  • Fix properties overlay to be scrollable. [vangheem]

  • Fix issue where tile field wouldn’t get saved back to form with some refactoring. [vangheem]

  • Fix issue where first fieldset would not show on properties modal. [vangheem]

1.0b3 (2015-09-29)

  • Add ploneimage action for richtext tiles’ toolbar [datakurre]

  • Add transforms to set ‘layout-’ with active content layout name or ‘layout-custom’ into body class [datakurre]

1.0b2 (2015-09-16)

  • Fix issue where mosaic-grid was enabled even a default grid system was set [datakurre]

  • Fix issue where Plone body class was added twice [datakurre]

  • Fix issue where contentLayout field was shown in tile menu [datakurre]

  • Pin >= 1.0b3 [datakurre]

1.0b1 (2015-09-16)

  • Change layout behavior default view from view to layout_view [datakurre]

  • Change to enable Mosaic layout noly for Document, Event, Folder and News Item by default [datakurre]

  • Change text formatting actions from top toolbar to inline TinyMCE toolbars [datakurre]

  • Change remove tile icon from inline close icons to top toolbar button [datakurre]

  • Change BS3 as default grid system on Plone 5 [vangheem]

  • Change site layouts be disabled unless mosaic-sitelayouts feature is set [datakurre]

  • Change displayemenu support be disabled unless mosaic-layoutmenu feature is set [datakurre]

  • Change Custom layout menu item to be called Mosaic layout [datakurre]

  • Change install to no longer to make Mosaic layout the default by default [datakurre]

  • Add layout editor control panel for Plone 5 [vangheem]

  • Add link and unlink actions [datakurre]

  • Add table tile [datakurre]

  • Remove grid system from example layouts (to use configured default grid) [vangheem]

  • Remove previously provided TTW content layout examples [datakurre]

  • Fixed to work with (and require) >= 3.0.0 [vangheem]

  • Fix GenericSetup profile registration (removed “for”) [agitator]

  • Fix issue where title field tile and content tile being use on same page would cause weird issues with saving title values [vangheem]

  • Fix situation where layout editor broke with broken or missing tiles [vangheem]

  • Fix issue where check could not add tile with requried selection field [datakurre]

1.0a3 (2015-06-10)

  • Add “Bootstrap 3 Demo” example site layouts for Plone 5 [datakurre]

  • Add support for’ generic data grid transform [datakurre]

  • Change the default site layouts in Plone 5 to use 12 column deco grids [datakurre]

  • Fix various site layout support related issues [datakurre]

  • Upgrade to >= 1.0b3 and >= 2.1.2 [datakurre]

1.0a2 (2015-06-08)

  • Add ‘Center tile content’ tile style to allow e.g. centering of image tiles [datakurre]

  • Add site and page layout fields to be available on properties overlay [datakurre]

  • Add HTML tag language transform to set correct langauge for HTML site layouts [datakurHTML re]

  • Add HTML body tag class transform to set body class for HTML site layouts [datakurre]

  • Add HTTP headers transform to ensure that the response headers normally set by plone.httpheaders viewlet manager are also set for HTML site layouts [datakurre]

  • Update example site and content layouts [datakurre]

  • Fix to only cache site layout when it’s not the default main_template [datakurre]

  • Upgrade to >= 1.0b2 and >= 1.0b1 [datakurre]

1.0a1 (2015-05-27)

  • First technology preview release.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution (1.1 MB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page