ftw.simplelayout


Nameftw.simplelayout JSON
Version 3.0.4 PyPI version JSON
download
home_pagehttps://github.com/4teamwork/ftw.simplelayout
SummarySimpleLayout provides block based content pages
upload_time2022-10-04 14:12:30
maintainerMathias Leimgruber
docs_urlNone
author4teamwork AG
requires_python
licenseGPL2
keywords ftw plone simplelayout block contentpage
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            .. contents:: Table of Contents




Introduction
============


SimpleLayout provides an intuitive way of adding and arranging the different
elements of a page such as paragraphs, images, files and links using
drag-and-drop functionality.
These elements are implemented as addable and easily arrangeable "blocks".
Because of the restricted dimensions of text, images and other content elements,
the general result is content with a uniform look and feel throughout the site.


Compatibility
-------------

**Plone 4.3.x**

.. image:: https://jenkins.4teamwork.ch/job/ftw.simplelayout-master-test-plone-4.3.x.cfg/badge/icon
   :target: https://jenkins.4teamwork.ch/job/ftw.simplelayout-master-test-plone-4.3.x.cfg


Please use the `plone4` extra on Plone 4 Installations in order to have the right dependencies.


**Plone 5.1.x**

Features dropped for Plone 5.1.x:

- Anchor extraction from Blocks for anchors on a page.
- Upgrade step, which removes the plone.app.referenceablebehavior.referenceable.IReferenceable from all sl content types.


**Themes**

For consistent styling of the Simplelayout UI we recommend using `plonetheme.blueberry <https://github.com/4teamwork/plonetheme.blueberry/>`_.


**Upgrade from Plone 4.3.x to Plone 5.1.x**

TODO: Needs to be implemented and tested.


**Trash**

``ftw.simplelayout`` integrates automatically with `ftw.trash`_ when both are installed.


**Change in Version 3.0.0**

Since the performance with the working copy feature is not great. We decided to implement a new concept (well old plone concept), how the
GalleryBlock and FilelistingBlock are getting their content.

From Version 3 on upwards the default behavior is, that GalleryBlocks and FileListingBlocks are displaying content from a referenced Media Folder.
The Media Folder does not get copied if using the working copy feature, thus makes it much much faster, since reindexing files is no longer necessary.

This has also the advantage, that files and images could be organized centrally.


Installation
============

- Add the package to your buildout configuration:

::

    [instance]
    eggs +=
        ...
        ftw.simplelayout[mapblock]


- With ftw.simplelayout 2.0.0 we introduced Plone 5 support. But Plone 4 has different dependencies. In order to use ftw.simplelayout 2.0.0 with Plone 4 also install the plone4 extra

::

    [instance]
    eggs +=
        ...
        ftw.simplelayout[mapblock, plone4]


Then you have several profiles to choose from:

- ``ftw.simplelayout`` **lib** profile - Just the basics without any ContentTypes. This profile is also available for Plone 5

- ``ftw.simplelayout`` **default** profile - Installs Simplelayout with default ContentTypes and everything you need to create content the Simplelayout way.

- Overlays for manipulating blocks, such as adding, deleting and modifying.
- Saving the current Simplelayout state.
- Loading the configuration of a simplelayout page.
- Reloading blocks with additional parameters, view, or data attributes.



Usage
=====

First steps
-----------

It's a good idea to install the default profile, which ships some basic contenttypes, such as ContentPage and TextBlock.

Simply add a new ContentPage instead of a Plone Document. A Toolbox appears on the right, which allows you to create content on/in your ContentPage with Simplelayout.

By default you can choose between a 1 column, 2 Column or 4 Column layout.
Simplelayout adds an empty 1 column layout for you by default, so you can directly start adding a Block.

Just drag the Block of your choice, for example a TextBlock, into the layout. Enter title, body text and/or an image. Then click save.

As you can see, you never have to leave the ContentPage, all actions with Simplelayout are asynchronous.
This means adding, deleting and editing always opens an overlay, where you can make the modifications.


RESTAPI
=======

Simplelayout supports the plone.restapi (read only).
The simplelayout page state is accessable with the key "simplelayout".
The key "slblocks" stores a UID -> Block Json mapping, which is handy to access the blocks via the page state.
The block configuration is accessable per block via the key "block-configuration"

The key "blocks" was already in use by Plone.


Load the restapi extras by adding the following to your buildout config

::

    [instance]
    eggs +=
        ...
        ftw.simplelayout[contenttypes, restapi]



Contenttypes
------------

Simplelayout ships by default with two content types.
One folderish type, the `ContentPage` and one block type, the `TextBlock`.


**ContentPage**

The ContentPage is a simple folderish dexterity based contenttype, which
does nearly nothing, but has the ``@@simplelayout-view`` view configured by default.
It's possible to add a ContentPage within a ContentPage

**TextBlock**

The TextBlock provides the following fields:

- ``Title`` (Well, this will be the title of the block, rendered as **h2**).
- Show title? (Decide if the title will be displayed or not).
- Text
- Image

Title, or Text, or the image is needed to successfully add a new block

The ``TextBlock`` configuration allows you to use this block to show text
only or images only, or of course both. There's no need of a single block for
images and a single block for text.

.. figure:: ./docs/_static/add_textblock.png
   :align: center
   :alt: Add TextBlock

   Add TextBlock

Extra Blocks
************

**AliasBlock**

The AliasBlock can be installed with an extra ``aliasblock``. The block uses the
SCSS variable ``$color-primary`` for its styling which can be overwritten by
a custom design. The ``dropzonewrapper`` class is set to ``display: none;`` to
avoid errors trying to upload content on the AliasBlock. There is also a link
provided to jump to the original content.

All Blocks within this package, ftw.addressblock and ftw.sliderblock are supported.
Other Blocks from different packages or policies won't work because the list of
aliasable blocks is hardcoded. This list of blocks is available via
``ftw.simplelayout.aliasblock.contents.aliasblock.get_selectable_blocks``.

It's also possible to select a whole ContentPage to render within the AliasBlock.
It's not possible however to select a ContentPage which already contains an AliasBlock
or the ContentPage an AliasBlock is being created on to prevent recursion.


Behaviors
---------

- The Teaser behavior is enabled by default on `TextBlock`. It allows you to add an
  internal or external link to the block.

- The `show_title` behavior is disabled by default. It can be enabled to add a checkbox
  to the configuration of contentpages. With this checkbox, the title can be hidden.


Portlets
--------

``ftw.simplelayout`` provides a ``Simplelayout Portlet`` which alows you to move Blocks into the right, or left column.
You simply have to assign the portlet on a specific context, or type.

Example (How to assign the portlet by default to all Simplelayout ContentPages).

portlets.xml:

.. code-block:: xml

    <?xml version="1.0"?>
    <portlets>
        <assignment
          manager="plone.rightcolumn"
          category="content_type"
          key="ftw.simplelayout.ContentPage"
          type="ftw.simplelayout.portlet"
          insert-before="*">
        </assignment>
    </portlets>




Simplelayout your site
----------------------

**Yes it's simple:**

- Add layouts by Drag'n'Drop
- Add Blocks by Drag'n'Drop
- Upload images directly by Drag'n'Drop [Comming soon]
- Change representation of blocks directly on the Block itself
- Responsive by default
- Create multiple column pages with ease.
- Uninstall profile


Development
===========

**Python:**

1. Fork this repo
2. Clone your fork
3. Shell: ``ln -s development.cfg buidlout.cfg``
4. Shell: ``python boostrap.py``
5. Shell: ``bin/buildout``

Run ``bin/test`` to test your changes.

Or start an instance by running ``bin/instance fg``.


Creating a new Block
--------------------

Make your content 'blockish', needs only two steps.


1. The only difference between a block and other DX content types is the ``SimplelayoutBlockBehavior``. You can simply add the Block behavior to your content by adding the following line to FTI:

.. code-block:: xml

    <property name="behaviors">
        <element value="ftw.simplelayout.interfaces.ISimplelayoutBlock" />
    </property>

2. In order for your block to know how to represent itself on a simplelayout page you need to register a ``block_view`` for your Block.

Register view with zcml:

.. code-block:: xml

    <browser:page
        for="my.package.content.IMyBlock"
        name="block_view"
        permission="zope2.View"
        class=".myblock.MyBlockView"
        template="templates/myblockview.pt"
        />

Corresponding template:

.. code-block:: html

      <h2 tal:content="context/Title">Title of block</h2>

      <!-- Assume you got a text field on your content -->
      <div tal:replace="structure here/text/output | nothing" />


Basically that's it :-) You just created a new block!!


Create custom actions for Blocks
--------------------------------


Global Simplelayout configuration
---------------------------------


Create new Block representations
--------------------------------

Directly edit items in a folderish block
----------------------------------------

To implement this, you just need to place a link in the rendered block.
Assume you want to edit a file in a listing block: you need a link, which is pointing to ``./sl-ajax-inner-edit-view``,
has the css class ``inneredit`` and a data attribute named ``uid`` containing the uid of the content.

.. code-block:: xml

    <a href="./sl-ajax-inner-edit-view"
       class="inneredit"
       tal:attributes="data-uid file_object/UID">EDIT</a>


After editing the content, the view automatically reloads the block.

Additional plone.restapi methods
--------------------------------

After creating blocks in a simplelayout content page they should be synchronized with the pages config. Otherwise
the order in the frontend might be wrong. It also removes objects which are in the pages config but not in the page itself.

To do this, you can simply send a RestAPI Post (more information about
`plone.restapi <https://github.com/plone/plone.restapi>`_ ) request to the path of your page, appended with
``@sl-synchronize-page-config-with-blocks``. A dict with ``added`` and ``removed`` block UIDs is returned.


Staging
-------

Simplelayout provides integration level tools for setting up a staging solution for content pages.
An ``IStaging`` adapter provides the functionality for making working copies and applying the
changed content of the working copy onto the baseline.
Simplelayout does not provide an integration; the integration must be implemented on project level.

Simple usage example:

.. code-block:: python

    from Acquisition import aq_inner
    from Acquisition import aq_parent
    from ftw.simplelayout.staging.interfaces import IStaging

    # Make a working copy of "baseline" in the folder "target"
    target = aq_parent(aq_inner(baseline))
    working_copy = IStaging(baseline).create_working_copy(target)

    # Apply the working copy content to the baseline:
    IStaging(working_copy).apply_working_copy()

    # Or discard the working copy:
    IStaging(working_copy).discard_working_copy()

Although the staging can be integrated in various ways (actions, events, etc.),
it is usually integrated in the workflow.
Since ``ftw.lawgiver >= 1.15.0``, it supports [intercepting transitions](https://github.com/4teamwork/ftw.lawgiver/blob/master/README.rst#intercept-and-customize-transitions),
which can be used for integrating a staging solution.

When the working copy is created, only simplelayout block children are copied from the baseline
to the working copy. This has the advantage that a root page of a large structure can be
revised and copied without a performance problem because of many subpages.

When the working copy is applied back, the content of its children are copied back to the
baseline. The simplelayout state and relations are updated accordingly.



Run custom JS code
==================

Some Blocks need to run some JS code after rendering or for the widget itself while adding/editing. For this use case you can simply listen to the jquerytools overlay events.

Run JS after adding and editing a Block
---------------------------------------

This example has been taken from the MapBlock.
It uses the ``onBeforeClose`` event of jquerytools Overlay to load the collectivegeo map.

.. code-block:: Javascript

    $(function(){
      $(document).on('onBeforeClose', '.overlay', function(){
        if ($.fn.collectivegeo) {
          $('.widget-cgmap').filter(':visible').collectivegeo();
        }
      });
    });


Run JS after the overlay has been displayed
-------------------------------------------

This example has been taken from the MapBlock.
It uses the ``onLoad`` event of jquerytools Overlay to load the collectivegeo map in edit mode.

.. code-block:: Javascript

    $(function(){
      $(document).on('onLoad', '.overlay', function(){
        if ($.fn.collectivegeo) {
          var maps = $('.widget-cgmap').filter(':visible');
          var map_widgets = $('.map-widget .widget-cgmap').filter(':visible');
          maps.collectivegeo();
          map_widgets.collectivegeo('add_edit_layer');
          map_widgets.collectivegeo('add_geocoder');
        }
      });
    });


More JS events
--------------

jQueryTools Overlay provides two more events:

- onBeforeLoad
- onClose

Check `jQueryTools Overlay Documentation <http://jquerytools.github.io/documentation/overlay>`_


Modify the Simplelayout configuration
-------------------------------------

The simplelayout JS lib can be modified by  the `data-sl-settings` on the simplelayout container. Currently supported settings:

- layouts
- canChangeLayouts

1. You're able to modify those settings globally through the Simplelayout control panel. For example:


.. code-block:: JSON

    {"layouts": [1]}

All Simplelayout sites are configured to have only 1 column Layouts

2. Using a ISimplelayoutContainerConfig Adapter, which adapts a `context` and `request`, which means you can have different settings for different Simplelayout enabled types.

Example:

.. code-block:: Python

    from ftw.simplelayout.contenttypes.contents.interfaces import IContentPage
    from ftw.simplelayout.interfaces import ISimplelayoutContainerConfig


    class ContenPageConfigAdapter(object):
        implements(ISimplelayoutContainerConfig)

        def __init__(self, context, request):
            pass

        def __call__(self, settings):
            settings['layouts'] = [1]

        def default_page_layout():
            return None

    provideAdapter(ContenPageConfigAdapter,
                   adapts=(IContentPage, Interface))

Note 1: The adapter gets called with the settings Dictionary, so you don't have to return it.

Note 2: With the ``default_page_layout`` method you can also define default layouts, which are pre-rendered on a empty page.



3. Using the View itself, by overwrite the ``update_simplelayout_settings`` method.

.. code-block:: Python

    from ftw.simplelayout.browser.simplelayout import SimplelayoutView


    class CustomSimplelayoutView(SimplelayoutView):

        def update_simplelayout_settings(self, settings):
            settings['layouts'] = [1, 4]


4. By default the ``canChangeLayouts`` option is injected by the Simplelayout provider. It checks if the current logged in user has the ``ftw.simplelayout: Change Layouts`` permission.


OpenGraph support
-----------------
Simplelayouts provides a basic `OpenGraph <http://ogp.me/>`_ integration.
You can disable (Simplelayout Settings - Control Panel) Opengraph for the plone root as you wish, because it's enabled by default.
On Simplelayout sites itself the OpenGraph meta tags can be controlled by the `OpenGraph marker behavior`.


Migration from ftw.contentpage
==============================

This package is the successor of
`ftw.contentpage <https://github.com/4teamwork/ftw.contentpage>`_.
In order to migrate from `ftw.contentpage` types to `ftw.simplelayout` types,
take a look at the preconfigured inplace migrators in the `migration.py` module of
`ftw.simplelayout`.

Client Library
==============

Building
--------

Rebuilding the library (resources/ftw.simplelayout.js):

.. code-block:: bash

    yarn build

To watch for changes and rebuild the bundle automatically:

.. code-block:: bash

    yarn watch

You can get an expanded version of the compiled js, by disabling the uglifying
with the additional option ``optimize: "none"`` in the ``Gruntfile.js``.

Testing
-------

Running all test:

.. code-block:: bash

    npm test

or

.. code-block:: bash

    grunt test

Running a specific test:

.. code-block:: bash

    grunt test --grep="Name of your test"

Getting started
---------------

Toolbox
-------

Provide a toolbox instance for the simplelayout.

.. code-block:: javascript

    var toolbox = new Toolbox({
      layouts: [1, 2, 4],
      canChangeLayout: true, // Decides if toolbox get rendered
      blocks: [
        { title: "Textblock", contentType: "textblock", formUrl: "URL",
          actions: {
            edit: {
              class="edit",
              description: "Edit this block",
              someCustomAttribute: "someCustomValue"
            },
            move: {
              class: "move",
              description: "Move this block"
            }
          }
        },
        { title: "Listingblock", contentType: "listingblock", formUrl: "URL" }
      ],
      layoutActions: {
        actions: {
          move: {
            class: "iconmove move",
            title: "Move this layout arround."
          },
          delete: {
            class: "icondelete delete",
            title: "Delete this layout."
          }
        }
      },
      labels: {
        labelColumnPostfix: "Column(s)" // Used for label in toolbox
      }
    });

Blocks
------

+-------------+-------------+------------------------------------+
| key         | is required | description                        |
+-------------+-------------+------------------------------------+
| title       |             | Title in the toolbox               |
+-------------+-------------+------------------------------------+
| description |             | Used for titleattribute            |
+-------------+-------------+------------------------------------+
| contentType | yes         | Represents the type for each block |
+-------------+-------------+------------------------------------+
| actions     | yes         | Describes the actions              |
+-------------+-------------+------------------------------------+

Actions
-------

+-------------+-------------+------------------------------------+
| key         | is required | description                        |
+-------------+-------------+------------------------------------+
| key         | yes         | Name for the action                |
+-------------+-------------+------------------------------------+
| class       |             | Classattribute for the action      |
+-------------+-------------+------------------------------------+
| description |             | Used for title attribute           |
+-------------+-------------+------------------------------------+
| custom      |             | Will be provided as data attribute |
+-------------+-------------+------------------------------------+

Simplelayout
------------

Use toolbox instance for initializing a simplelayout.

.. code-block:: javascript

    var simplelayout = new Simplelayout({toolbox: toolbox});

Deserialize
-----------

Use existing markup for deserializing the simplelayout state.

Provided HTML Structure

.. code-block:: html

    <div class="sl-simplelayout" id="slot1">
      <div class="sl-layout">
        <div class="sl-column">
          <div class="sl-block" data-type="textblock">
            <div class="sl-block-content"></div>
          </div>
        </div>
        <div class="sl-column">
          <div class="sl-block" data-type="textblock">
            <div class="sl-block-content"></div>
          </div>
        </div>
        <div class="sl-column">
          <div class="sl-block" data-type="textblock">
            <div class="sl-block-content">
              <p>I am a textblock</p>
            </div>
          </div>
        </div>
        <div class="sl-column"></div>
      </div>
    </div>

Make sure that each datatype in the structure is covered in the toolbox.

Events
------

Attach events using the singleton instance of eventEmitter.

.. code-block:: javascript

    var simplelayout = new Simplelayout({toolbox: toolbox});
    simplelayout.on(eventType, callback);

Eventtypes
----------

blockInserted(block)

block-committed(block)

block-rollbacked(block)

beforeBlockMoved(block)

blockMoved(block)

blockDeleted(block)

layoutInserted(layout)

layout-committed(layout)

layout-rollbacked(layout)

layoutMoved(layout)

layoutDeleted(layout)

DOM properties
--------------

Each block and layout is represented in the DOM through an ID.

Each DOM element provides the following properties:

- object --> object representation in simplelayout
- parent --> parent object representation in simplelayout
- id --> generated UUID for this element
- represents --> representer from origin (empty if object only exists locally)

These properties can get extracted as a jQueryElement:

.. code-block:: javascript

    var block = $(".sl-block").first();
    var blockObj = block.data().object;


TODO
====
- Update/Finish examples.
- Update/Add images (animated gifs).
- Improve Plone 5 support (probably with plone 5 contentttypes).
- Archetypes block integration (for legacy packages).

Links
=====

- Github: https://github.com/4teamwork/ftw.simplelayout
- Issues: https://github.com/4teamwork/ftw.simplelayout/issues
- Pypi: http://pypi.python.org/pypi/ftw.simplelayout
- Continuous integration: https://jenkins.4teamwork.ch/search?q=ftw.simplelayout

Copyright
=========

This package is copyright by `4teamwork <http://www.4teamwork.ch/>`_.

``ftw.simplelayout`` is licensed under GNU General Public License, version 2.

.. _ftw.trash: https://github.com/4teamwork/ftw.trash

Changelog
=========

3.0.4 (2022-10-04)
------------------

- Restapi: Improve sl integration. [mathias.leimgruber]


3.0.3 (2022-08-22)
------------------

- Restapi: Do not include block infos in recursively in pages. [mathias.leimgruber]


3.0.2 (2022-08-15)
------------------

- Staging improvement: Do not index position in parent index in old container. [mathias.leimgruber]


3.0.1 (2022-07-11)
------------------

- BugFix staging: Do no copy relationvalues with no target. [mathias.leimgruber]


3.0.0 (2022-07-06)
------------------

- New Feature "Media Folder": Make it possible to reference a MediaFolder in FileListingBlock and GalleryBlock. [mathias.leimgruber]

    - Media Folders contain files and/or images and are references via GalleryBlock or FileListingBlock.
    - This is the new default implementation.
    - You can opt out by removing the IMediaFolder behavior and make file/images addable diretly in the GalleryBlock or FilelistingBlock.
    - If you upgrade to this version make sure you migrate the files and images into Media Folders.


2.8.7 (2022-06-09)
------------------

- Fix condition for discarding a cropped version of a image. [mathias.leimgruber]


2.8.6 (2022-05-04)
------------------

- Implement ftwlogo fallback for sl pages with opengraph support. [mathias.leimgruber]


2.8.5 (2022-05-04)
------------------

- Add twitter:image meta tag to opengraph metga tags. [mathias.leimgruber]

- Use LOGO endpoint of ftw.logo in order to make sure to serve a PNG, not a SVG. [mathias.leimgruber]


2.8.4 (2021-10-04)
------------------

- Re-add french translations for FileListingBlock clumns.


2.8.3 (2021-08-09)
------------------

- Make sure there are no harmful css classes withing the content of a TextBlock. [mathias.leimgruber]


2.8.2 (2021-07-20)
------------------

- Only apply 20200929161226_fix_contenttype_jquery_dependency on Plone 5.x sites. [mathias.leimgruber]


2.8.1 (2021-04-02)
------------------

- Make sure geo settings doe not have to be available at all. [mathias.leimgruber]


2.8.0 (2021-04-02)
------------------

- Implement simplelayout in plone.restapi responses. [mathias.leimgruber]

  - The "simpleayout" key contains the simplelayout page state.
  - The "slblocks" key contains all blocks accessable via their UID.
  - Simplelayout data is only available on ISimplelayout
  - The 'block-configuration' key contains the block configuration stored on ISimplelayoutBlock.

- Add height field to videoblock in order to set a fixed height for vimeo/youtube nocookie block. [mathias.leimgruber]

- Make rendering the aliasblock add/edit form viewlet more safe. [mathias.leimgruber]


2.7.18 (2021-03-18)
-------------------

- Make aliasblock Title more robust, since the content might be created via script. [mathias.leimgruber]


2.7.17 (2021-03-01)
-------------------

- Aliasblock Remove explicit dependency on sl contenttypes. [mathias.leimgruber]
- Check all incoming references upon block deletion. This includes AliasBlocks. [mathias.leimgruber]


2.7.16 (2020-12-10)
-------------------

- Fix Videoblock YouTube integration [Nachtalb]


2.7.15 (2020-11-10)
-------------------

- Implement error handling for dropzone upload. [mathias.leimgruber]


2.7.14 (2020-10-15)
-------------------

- Fix compatibility with plone.formwidget.namedfile 2.0.10+ (included in Plone 5.1.7+) [Nachtalb]
- Fix broken page configuration on copy paste for child pages [Nachtalb]
- Aliasblock: Show hint to target block/page if you can edit the current aliasblock. [mathias.leimgruber]
- Aliasblock: Access to_object/isBroken only if there is a RelationValue. [mathias.leimgruber]
- Staging: Move instead of copy blocks, which were created in the working copy, in
  order to preserve the UID. Otherwise internal links within the working copy no longer work. [mathias.leimgruber]


2.7.13 (2020-10-01)
-------------------

- Remove non behavior interface from FTI. [djowett-ftw]
- Fix loading jquery 2 times and with this creating conflicts [Nachtalb]


2.7.12 (2020-09-08)
-------------------

- Remove left and right margin from 100% wide sl-image on small screens (< 480px)
  [djowett-ftw]


2.7.11 (2020-09-08)
-------------------

- Escape special chars for opengraph title and description. [mathias.leimgruber]
- Fix link integrity check on Plone 5 [Nachtalb]


2.7.10 (2020-08-20)
-------------------

- Hansle start/t querysting for youtube videos. [mathias.leimgruber]


2.7.9 (2020-08-05)
------------------

- Fix column in aliasblock results in failure [Nachtalb]


2.7.8 (2020-08-05)
------------------

- Fix typo in aliasblock. [busykoala]
- Fix state saving error when aliasblock linked to a page is used [Nachtalb]


2.7.7 (2020-07-27)
------------------

- Fix tinymce prependToUrl value, in order to make internal links work on plone root. [mathias.leimgruber]


2.7.6 (2020-07-01)
------------------

- Update aliasblock integration JS for full multi columns/layouts contentpage support. [mathias.leimgruber]
- Aliasblock only show link to referenced page if you are able to modify the aliasblock. [mathias.leimgruber]


2.7.5 (2020-06-22)
------------------

- Fix ftw.logo opengraph integration [Nachtalb]


2.7.4 (2020-06-19)
------------------

- Add ftw.logo support for plone root opengraph integration. [mathias.leimgruber]


2.7.3 (2020-06-15)
------------------

- Fix link to referenced object [Nachtalb]
- Remove ``aliasblock`` and ``contenttypes`` conditions because empty extras cannot be checked [Nachtalb]


2.7.2 (2020-06-12)
------------------

- Add missing translation of the AliasBlock for the plone domain [Nachtalb]


2.7.1 (2020-06-12)
------------------

- Show linked page title on aliasblock. [mathias.leimgruber]
- Do not allow to reference the ContentPage you are creating the AliasBlock on to prevent recursion [Nachtalb]
- Fix AliasBlock text for link to referenced ContentPage [Nachtalb]


2.7.0 (2020-06-10)
------------------

- Add viewletmanager for block add/edit form in order to load custom code. [mathias.leimgruber]
- ContentPage support for AliasBlock. [mathias.leimgruber]


2.6.1 (2020-06-02)
------------------

- Add collective.quickupload in plone4. [busykoala]


2.6.0 (2020-06-02)
------------------

- Add new block (AliasBlock) which renders the content of other blocks.
  The extra "aliasblock" is required to install this block. [busykoala]


2.5.14 (2020-05-28)
-------------------

- Add vimeo video iframe wrapper for better styling possibility. [busykoala]


2.5.13 (2020-04-24)
-------------------

- Always load videoblock js, not only when logged in [Nachtalb]


2.5.12 (2020-04-24)
-------------------

- Fix 'upload files here' dropzone not working except just after galleryblock creation. [djowett-ftw]
- Upgrade ftw.colorbox to resolve galleryblock overlay issue and make our initializeColorbox work in
  Plone5. [djowett-ftw]


2.5.11 (2020-03-24)
-------------------

- Fix deletion of blocks if parent is not simplelayoutish. [mbaechtold]


2.5.10 (2020-03-24)
-------------------

- Make migration more robust. [mbaechtold]

- Fix youtube player integration [mathias.leimgruber]


2.5.9 (2020-01-21)
------------------

- Allow a description to be added when files are uploaded via
  listingblock or galleryblock. [djowett-ftw]


2.5.8 (2020-01-15)
------------------

- Add a 'Remove file' icon to Dropzone's file previews
  (This includes starting to use a previewTemplate for Dropzone). [djowett-ftw]


2.5.7 (2020-01-09)
------------------

- Add ftw.simplelayout portal_types translations to plone domain. [tinagerber]


2.5.6 (2020-01-07)
------------------

- Repair overlay styles. [djowett-ftw]
- To create a file, get the correct file type from the schema. [tinagerber]


2.5.5 (2019-12-20)
------------------

- Fix translation for 'Upload files here'. [djowett-ftw]
- Fix potential error after migrating to plone5 in filelisting-block. [busykoala]


2.5.4 (2019-12-18)
------------------

- Fix js module name clash [Nachtalb]
- Fix error when file is uploaded as ZPublisher.HTTPRequest.FileUpload in plone 4 [Nachtalb]


2.5.3 (2019-12-18)
------------------

- Provide precompile bundle. [buchi, jone]


2.5.2 (2019-12-05)
------------------

- Old versions of ftw.sliderblock depended on this product to require collective.upload, which
  is no longer done after version 2.0.  We raise ImportError on startup to make this clear. [djowett-ftw]
- Fix tests not opening files in binary mode (necessary to work with the latest release of ftw.testbrowser). [busykoala]
- Remove unittest2 because of deprecation. [busykoala]


2.5.1 (2019-11-29)
------------------

- Fix upgrade step. [tinagerber]


2.5.0 (2019-11-27)
------------------

- Change event binding on tab from onClick to just click in order to trigger the function on plone 5 too. [mathias.leimgruber]

- No longer accidentally load google maps api js twice. [mathias.leimgruber]

- Add ftw.simplelayout.contenttypes profile when mapblock is added by default. [busykoala]

- Remove (AT) LinkBuilder in favour of the one in ftw.builder. [djowett-ftw]


2.4.1 (2019-11-14)
------------------

- Improve English in README.rst. [djowett-ftw]
- Make the upload widget in FileListingBlock choose the content type it creates
  based on it's `allowed_content_types`. [djowett-ftw]


2.4.0 (2019-11-14)
------------------

- Leadimage: support changing the scale direction in the view call. [jone]


2.3.0 (2019-11-11)
------------------

- Add ftw.theming:default (upgrade step not provided). [busykoala]
- Unify "Save" translation across content types and plone versions [Nachtalb]
- Improve linking between baseline and working copy [Nachtalb]


2.2.0 (2019-10-30)
------------------

- Fix galleryblock on click no big image available [Nachtalb]
- Fix typo in settings description. [jone]
- Install contenttypes extras by default and deprecate the extra itself [Nachtalb]
- Save files uploaded via dropzone as blobs [Nachtalb]
- Fix image rotation for images uploaded via dropzone [Nachtalb]
- Remove collective.quickupload as a dependency for plone 4 (replaced by dropzone.js in 2.0.0) [Nachtalb]


2.1.2 (2019-08-29)
------------------

- Fix plone.app.events EventBasic timezone conflict when applying working copies [Nachtalb]


2.1.1 (2019-08-27)
------------------

- Fix mapblock.js compatibility with plone5 [Nachtalb]

- Move contenttypes js to resource bundles. [busykoala]

- Fix html entities in data-googlejs url [mathias.leimgruber]

- Fix contenttypes and mapblock js resources. [mathias.leimgruber]

- Preserve childrens children order when applying working copies [Nachtalb]


2.1.0 (2019-05-21)
------------------

- Add macros and slots to block views for easy customization. [jone]
- Include map preferences behaviours in mapblock.js [Nachtalb]


2.0.2 (2019-05-17)
------------------

- Fix JavaScript of the map block. [mbaechtold]

- Revert: Commit abc8 mistakenly removed IReferencable [busykoala]

- Staging: remove auto generated children when creating a working copy. [jone]

- In order to trigger the plone transform chain, we need to maintain the mimeType of the RichTextValue. [mathias.leimgruber]

- Staging: Add link to working copies in warning message. [mathias.leimgruber]

- Fix plone 4 build by pinning collective.z3cform.datagridfield to 1.4.0. [mathias.leimgruber]


2.0.1 (2019-03-08)
------------------

- Update Readme with some plone 4/5 installation hints [mathias.leimgruber]

- Update package metadata. [mathias.leimgruber]

- Add collective.quickupload as dependency for the plone4 extra.


2.0.0 (2019-03-06)
------------------

- Add Plone 5.1 compatibility [jone, mbaechtold, mathas.leimgruber]

- Remove development GS profile because it did not work. [jone]

- Reimplement file uploading by replacing quickupload with Dropzone.js. [mathias.leimgruber, jone]

- Make mapblock plone 5.1 compatible. Mainly by updating to a good known set of c.geo packages [mathias.leimgruber]


1.23.5 (2018-12-18)
-------------------

- Add zcml:condition="have ftw.simplelayout:trash" to trash related handlers. [mathias.leimgruber]


1.23.4 (2018-12-13)
-------------------

- Trash: No longer index trashed blocks. [mathias.leimgruber]


1.23.3 (2018-11-20)
-------------------

- Staging: fix an error which broke staging when having a link to a sub page. [jone]


1.23.2 (2018-11-16)
-------------------

- Set last modifier for parent object, when sl block is edited if collective.lastmodifier is installed
  This feature is a available for ``collective.lastmodifier`` version ``1.1.3`` and above [Nachtalb]


1.23.1 (2018-11-12)
-------------------

- Implement unrestricted_uuidToObject to get the infos for the staging viewlet, regardless of the workflow. [mathias.leimgruber]

- Add support for www.youtube-nocookie.com video urls. [mathias.leimgruber]


1.23.0 (2018-10-08)
-------------------

- Add tooling for creating a staging solution. [jone]


1.22.3 (2018-10-03)
-------------------

- Add missing_value attribute to the `image_limits` and `image_cropping_aspect_ratios`
  interfaces to prevent the form @@simplelayout-controlpanel from saving `None`
  if no values are given. [elioschmutz]


1.22.2 (2018-09-26)
-------------------

- Fix a caching issue where the cropping overlay have showed the old image after uploading a new one. [elioschmutz]


1.22.1 (2018-09-25)
-------------------

- Fix image cropper styling with blueberry marketing theme. [elioschmutz]


1.22.0 (2018-09-25)
-------------------

- Add imagecropping with configurable aspect-ratios for textblock-images. [elioschmutz]
- Add configurable hard and soft image limits for textblocks. [elioschmutz]
- Add plone.restapi endpoint for synchronizing blocks with the page config [Nachtalb]
- Add additional opengraph tags og:description fb:app_id fb:admins [Nachtalb]

1.21.1 (2018-07-06)
-------------------

- Support Plone 4.3.17 (Quick fix for getting the base-url still from the base tag). [mathias.leimgruber]

- Fix JS error in FF by actually passing the event object as parameter. [mathias.leimgruber]


1.21.0 (2018-07-05)
-------------------

- Add optional support for ``ftw.trash``. [jone]

1.20.3 (2018-07-05)
-------------------

- Set default value for image cropping in slider block migration [raphael-s]

- Set simplelayout slot for teaser block migration [raphael-s]


1.20.2 (2018-03-26)
-------------------

- Scale images for colorbox overlay view to fix edge case cashing of images. [raphael-s]


1.20.1 (2018-03-01)
-------------------

- Move title and show_title field into the coordinates schemata on MapBlock. [mathias.leimgruber]

- Fix loading google / geo maps in overlays within a tab. [mathias.leimgruber]


1.20.0 (2018-01-26)
-------------------

- Add support for "ftw.gopip". [jone, mbaechtold]

- Optionally render a title of the mapblock. [mbaechtold]

- Content page builder only synchronises page config if the
  page contains blocks. [mbaechtold]

- Implement more specific MapLayers factory to prevent adding the same layers multiple times. [mathias.leimgruber]

- Implement persisten map layer and zoom value.
  Both can be chosen in the edit widget and will be reused on the display widget. [mathias.leimgruber]


1.19.0 (2017-11-01)
-------------------

- The browser does no longer jump to the top when opening an overlay. [Kevin Bieri]

- Handle view names in unicode strings. [mbaechtold]

- New Feature: Asymmetric layouts. [Kevin Bieri, mathias.leimgruber]

  - Introduced layout configurations (classes on layouts)
  - By default we have golden ratio-, 1-2-1-, 3-1, 1-1-2-layouts
  - This change introduces two now wrappers (div-tag), while render the simplelayout content.
    Please be aware that those new wrappers may break your CSS selectors.


1.18.5 (2017-07-25)
-------------------

- Handle view names in unicode strings. [mbaechtold]

- Add anchor to new created blocks. [Kevin Bieri]

- The galleryblock now renders a fallback image when the image to be displayed is truncated. [mbaechtold]

- Make iframe fixes compatible with ftw.iframefix 2.0. [Kevin Bieri]

- Use a static vocabulary for the sort options of the gallery block. [mbaechtold]

- Install ftw.iframefix
  [Kevin Bieri]


1.18.4 (2017-06-15)
-------------------

- Add more sorting options (position in parent, id) to the gallery block. [mbaechtold]

- Move print styles accidentally defined in plonetheme.blueberry. [Kevin Bieri]

- Migration: Handle different simplelayout layouts. [lknoepfel]

- Disable kss spinner. [Kevin Bieri]


1.18.3 (2017-04-06)
-------------------

- Fix ordering error on Plone site root. [jone]


1.18.2 (2017-03-30)
-------------------

- Fix UnboundLocalError in the simplelayout portlet. [mbaechtold]

- Make anchor extraction more robust. [mbaechtold]

- Remove unused "addable_block_types" method from simplelayout view. [jone]


1.18.1 (2017-03-23)
-------------------

- Fix copy/paste bug with p.a.referenceablebehavior. [jone]

- Make sure plone.app.referenceablebehavior is installed. [jone]


1.18.0 (2017-03-23)
-------------------

- Improve anchor extraction. [mbaechtold]

- Synchronize simplelayout block order to Plone's ordered container. [jone]

- Improve support for hidden blocks introduced in 1.2.1. [mbaechtold]


1.17.2 (2017-03-07)
-------------------

- Make MapBlock addable on plone site per default [raphael-s]


1.17.1 (2017-02-28)
-------------------

- Include theme compatibility hint in readme.
  [Kevin Bieri]

- Prevent plone ajax spinner from being shown. [Kevin Bieri]

- Restore slot defaults when removing last layout. [jone]


1.17.0 (2017-01-26)
-------------------

- Conditionally display move action on toolbar on the layout
  [Kevin Bieri]

- Include handlebars in distributed library.
  [Kevin Bieri]

- Fix map block not showing the Google maps.
  [mbaechtold]

- Use browserify as javascript bundler

  - Update tests using karma
  - Add support for ES6 using babeljs

  [Kevin Bieri]


1.16.0 (2017-01-23)
-------------------

- Extend the textblock with the "data-caption" attribute which can hold
  the caption rendered in the colorbox (requires "ftw.colorbox" 1.2.4).
  [mbaechtold]


1.15.1 (2017-01-17)
-------------------

- Do render the simplelayout portlet on non-simplelayout
  content types. [mbaechtold]


1.15.0 (2017-01-16)
-------------------

- TinyMCE: Disable "anchor"-Tab when creating a link. [jone]

- TinyMCE: configure content page to contain anchors. [jone]

- Change primary field of text block from "image" to "text" field
  in order to support anchors. [jone]

- Implement a simplelayout renderer object. This allows us to render
  simplelayoutish structures without the simplelayout provider expression.
  Further it's now possible to render only one layout of slot.
  [mathias.leimgruber]

- Log traceback too when a block cannot be rendered. [jone]


1.14.0 (2017-01-04)
-------------------

- Move option to hide a block to a behavior so it can be used on other blocks too.
  [mbaechtold]

- Move ``ftw.referencewidget`` dependency to ``contenttypes`` extras. [jone]

- Drop ``plone.formwidget.contenttree`` dependency. [jone]


1.13.0 (2016-12-06)
-------------------

- Prevent gallery block from failing when it contains image objects having
  umlauts in their title.
  [mbaechtold]

- Disable inline validation of the Plone forms in the overlay.
  [mbaechtold]

- Hide toolbox on small devices.
  [Kevin Bieri]

- Highlight active layout.
  [Kevin Bieri]

- Fix toolbar zindex.
  [Kevin Bieri]

- Fix layout delete button when block has been moved.
  [Kevin Bieri]


1.12.2 (2016-11-11)
-------------------

- Don't allow all non-folderish types to be selectable as default page.
  Without this types like the TextBlock can be selected and would break the site.
  [lknoepfel]


1.12.1 (2016-11-01)
-------------------

- Enable mapblock.js for anonymous users.
  [mathias.leimgruber]


1.12.0 (2016-10-21)
-------------------

- Implement a inner_edit.json view, which allows us to edit an item in a
  folderish block. For example edit a file directly in a FilelistingBlock.
  This view works almost like the block edit view, the difference is, that
  the inner_edit.json view returns the rendered html of its parent (the Block).
  [mathias.leimgruber]


1.11.1 (2016-10-13)
-------------------

- Make youtube-videoblocks auto-resize to the max space available.
  [raphael-s]

- Fix SCSS linting errors

    - This requires ftw.theming>=1.7.0


1.11.0 (2016-10-05)
-------------------

- Remove debugger statement :pig:. [Kevin Bieri]

- Support Chameleon caching. [jone]


1.10.0 (2016-09-30)
-------------------

- Open external links in new tab on block creation.
  [Kevin Bieri]


1.9.0 (2016-09-26)
------------------

- Drop support for standard plone theme (sunburst)
  [Kevin Bieri]

- Extend inplace migrator to create listing blocks of ftw.news and ftw.events. [jone]


1.8.3 (2016-09-16)
------------------

- Use ftw.referencewidget instead of plone.formwidget.contenttree.
  [tschanzt]

- Protect new show/hide title behavior.
  [mathias.leimgruber]


1.8.2 (2016-09-14)
------------------

- Add field description for 'Image alternative text' and 'Open image in overlay'.
  [raphael-s]

- Fix Icon position. It is now postitioned to the image not the container.
  [tschanzt]

- Add optional title to the video block (disabled by default).
  [mbaechtold]


1.8.1 (2016-09-06)
------------------

- Add optional behavior to add a checkbox to show/hide the title of a contentpage.
  [raphael-s]


1.8.0 (2016-09-05)
------------------

- Fix drop animation backgroundcolor
  [Kevin Bieri]

- Make leadimages "has_image" and "get_scale" usable. [jone]

- BugFix: Copyied event is called recursively. Check if the block is actually part of the current page.
  [mathias.leimgruber]

- Fix image overlay in textblocks
  [Kevin Bieri]

- Set permission for change layout, site admin & manager now have permission to change the layout.
  [raphael-s]

- Implement inplace migrators for migration from ftw.contentpage. [jone]


1.7.4 (2016-08-16)
------------------

- Display mapblock in 2/3 ratio.
  [mathias.leimgruber]

- Implement a really hackish way to support IE11.
  Native c.geo implementation always implements the map api twice and has caching issues.
  [mathias.leimgruber]


1.7.3 (2016-08-12)
------------------

- Fix 1.7.2 broken simplelayout.js build release.
  [mathias.leimgruber]


1.7.2 (2016-08-11)
------------------

- Fix layout state, while moving layouts between containers.
  [mathias.leimgruber]

- Disable iframe fix after stop/receving a layout.
  [mathias.leimgruber]

- Move layouts like blocks.
  [mathias.leimgruber]

- Fix moveing layouts between containers. The usability is still no the best.
  [mathias.leimgruber]

- Add an icon to mark an colorbox image.
  [tschanzt]


1.7.1 (2016-08-05)
------------------

- Fix word breaks in listingblock table.
  [Kevin Bieri]


1.7.0 (2016-08-05)
------------------

- Implement new block coordinate behavior, which uses it's own widget
  for JS compatibility (it handles the google map api integration).
  [mathias.leimgruber]

- Fix toolbox label zindex
  [Kevin Bieri]

- Add IE11 fix for InAndOutWidget Javascript.
  In IE11 it's not possible to manipulate a select (multiple) after
  modifying the text of a option.
  [mathias.leimgruber]

- Add uninstall profile for ftw.simplelayout.contenttypes.
  [elioschmutz]

- Add uninstall profile for ftw.simplelayout.mapblock.
  [elioschmutz]


1.6.0 (2016-07-18)
------------------

- Fix missing toolbar on videoblocks
  [Kevin Bieri]

- Use zindex system from ftw.theming
  Fix iframeblock boundaries
  [Kevin Bieri]

- Display default youtube player controls
  [Kevin Bieri]

- Translate quickupload title in overlay for filelistings and galleryblocks.
  [elioschmutz]

- Fix floating images on mobile view.
  [Kevin Bieri]

- Make simplelayout events globally available.
  [raphael-s]

- Add min-height to empty Simplelyout portlet.
  This fixes a issue, when it was no longer possible to re-add a layout after deleting the last one.
  [mathias.leimgruber]

- Add sort-options to image gallery block.
  [raphael-s]


1.5.2 (2016-05-26)
------------------

- Do not show spinner when loading toolbox. [jone]


1.5.1 (2016-05-26)
------------------

- Fix IE11 issues on succeding edits with TinyMCE by foucusing first input field. [jone]


1.5.0 (2016-05-26)
------------------

- Implement request tracker.
  [Kevin Bieri]

- Block Views: Check for extisting viewname before setting the view_name value.
  [mathias.leimgruber]

- Make getting the og:image url more robust by checking for the scale.
  [mathias.leimgruber]


1.4.2 (2016-05-25)
------------------

- BugFix for IE11 VideoBlock: Prevent iframe from stopping event bubbling in IE
  [Kevin Bieri]


1.4.1 (2016-05-24)
------------------

- Fix editing issues in IE 11. [jone]


1.4.0 (2016-05-24)
------------------

- Add css class to simplelayout container if the user is permitted to edit the content.
  [Kevin Bieri]

- Implement statekeeter to track DOM changes.
  [Kevin Bieri]


1.3.0 (2016-05-20)
------------------

- Update z3c.form to 2.9.3.
  Fixes error when adding a filelisting-block in IE11.
  [Kevin Bieri]

- Remove block bottom margin from textblocks containing only a title.
  [mathias.leimgruber]

- Do not show empty block warning on textblock if there is only a title.
  [mathias.leimgruber]

- GalleryBlock: Show 4 images in a row for 1 col, 2 in a row for 2 col and 1 a row for 4 col.
  [mathias.leimgruber]

- Add min-height to SimplelayoutBlock empty columns.
  [mathias.leimgruber]

- Fix mouse pointer position according to openlayers pointer.
  [mathias.leimgruber]

- Add image caption field to textblock.
  [mathias.leimgruber]

- Hide main scrollbar when overlay is opened. [jone]

- Lead-Image: support all slots. [jone]

- Lead-Image: support gallery blocks. [jone]

- Remove "Review State" column from file listing block.
  It is usually not in use, since files has no workflow on simplelayout sites.
  [mathias.leimgruber]


1.2.1 (2016-04-14)
------------------

- Reset default scale behavior for textblock images.
  [Kevin Bieri]

- Some blocks can be hidden now. Users allowed to edit the block will see
  the block anyway.
  [mbaechtold]


1.2.0 (2016-03-30)
------------------

- Match the image scaling dimensions on media breakpoints from ftw.theming.
  [Kevin Bieri]

- Use crop scale for textblock images.
  [Kevin Bieri]

- Make textblock images full with for medium screen.
  [Kevin Bieri]

- Extend documentation with class diagram.
  [Kevin Bieri]


1.1.0 (2016-03-03)
------------------

- Configure TinyMCE resource types. [jone]

- Respect disable_border key in request and do not load simplelayout if present.
  [mathias.leimgruber]

- Remove leadimage cache key. [jone]

- Show hint on empty listing and galeryblock.
  [mathias.leimgruber]

- Implement better image alt text for galleryblock and textblock.
  Improves Accessibility.
  [mathias.leimgruber]

- Right column overlapps the toolbar, apply fixed z-index.
  [Kevin Bieri]

- Move styling from client library to ftw.theming integration using
  base variables from ftw.theming.
  [Kevin Bieri]

- Fix simplelayout dynamic scss resource, so it does not return invalid code
  if the selector is empty.
  [mathias.leimgruber]

- Use default table listing for the listingblock styles.
  Also implement some sane default withs for columns.
  [mathias.leimgruber]

- Add Simlelayout view as possible front page layout + addable types on the plone site.
  This change provides no upgrade step, since it may break the configuration.
  [mathias.leimgruber]


1.0a1 (2015-12-04)
------------------

- Init Release
            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/4teamwork/ftw.simplelayout",
    "name": "ftw.simplelayout",
    "maintainer": "Mathias Leimgruber",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "ftw plone simplelayout block contentpage",
    "author": "4teamwork AG",
    "author_email": "mailto:info@4teamwork.ch",
    "download_url": "https://files.pythonhosted.org/packages/65/97/d7c15671bde41d87b268676955658ef0bbf3d355f7020d6ddef22aa17bc1/ftw.simplelayout-3.0.4.tar.gz",
    "platform": null,
    "description": ".. contents:: Table of Contents\n\n\n\n\nIntroduction\n============\n\n\nSimpleLayout provides an intuitive way of adding and arranging the different\nelements of a page such as paragraphs, images, files and links using\ndrag-and-drop functionality.\nThese elements are implemented as addable and easily arrangeable \"blocks\".\nBecause of the restricted dimensions of text, images and other content elements,\nthe general result is content with a uniform look and feel throughout the site.\n\n\nCompatibility\n-------------\n\n**Plone 4.3.x**\n\n.. image:: https://jenkins.4teamwork.ch/job/ftw.simplelayout-master-test-plone-4.3.x.cfg/badge/icon\n   :target: https://jenkins.4teamwork.ch/job/ftw.simplelayout-master-test-plone-4.3.x.cfg\n\n\nPlease use the `plone4` extra on Plone 4 Installations in order to have the right dependencies.\n\n\n**Plone 5.1.x**\n\nFeatures dropped for Plone 5.1.x:\n\n- Anchor extraction from Blocks for anchors on a page.\n- Upgrade step, which removes the plone.app.referenceablebehavior.referenceable.IReferenceable from all sl content types.\n\n\n**Themes**\n\nFor consistent styling of the Simplelayout UI we recommend using `plonetheme.blueberry <https://github.com/4teamwork/plonetheme.blueberry/>`_.\n\n\n**Upgrade from Plone 4.3.x to Plone 5.1.x**\n\nTODO: Needs to be implemented and tested.\n\n\n**Trash**\n\n``ftw.simplelayout`` integrates automatically with `ftw.trash`_ when both are installed.\n\n\n**Change in Version 3.0.0**\n\nSince the performance with the working copy feature is not great. We decided to implement a new concept (well old plone concept), how the\nGalleryBlock and FilelistingBlock are getting their content.\n\nFrom Version 3 on upwards the default behavior is, that GalleryBlocks and FileListingBlocks are displaying content from a referenced Media Folder.\nThe Media Folder does not get copied if using the working copy feature, thus makes it much much faster, since reindexing files is no longer necessary.\n\nThis has also the advantage, that files and images could be organized centrally.\n\n\nInstallation\n============\n\n- Add the package to your buildout configuration:\n\n::\n\n    [instance]\n    eggs +=\n        ...\n        ftw.simplelayout[mapblock]\n\n\n- With ftw.simplelayout 2.0.0 we introduced Plone 5 support. But Plone 4 has different dependencies. In order to use ftw.simplelayout 2.0.0 with Plone 4 also install the plone4 extra\n\n::\n\n    [instance]\n    eggs +=\n        ...\n        ftw.simplelayout[mapblock, plone4]\n\n\nThen you have several profiles to choose from:\n\n- ``ftw.simplelayout`` **lib** profile - Just the basics without any ContentTypes. This profile is also available for Plone 5\n\n- ``ftw.simplelayout`` **default** profile - Installs Simplelayout with default ContentTypes and everything you need to create content the Simplelayout way.\n\n- Overlays for manipulating blocks, such as adding, deleting and modifying.\n- Saving the current Simplelayout state.\n- Loading the configuration of a simplelayout page.\n- Reloading blocks with additional parameters, view, or data attributes.\n\n\n\nUsage\n=====\n\nFirst steps\n-----------\n\nIt's a good idea to install the default profile, which ships some basic contenttypes, such as ContentPage and TextBlock.\n\nSimply add a new ContentPage instead of a Plone Document. A Toolbox appears on the right, which allows you to create content on/in your ContentPage with Simplelayout.\n\nBy default you can choose between a 1 column, 2 Column or 4 Column layout.\nSimplelayout adds an empty 1 column layout for you by default, so you can directly start adding a Block.\n\nJust drag the Block of your choice, for example a TextBlock, into the layout. Enter title, body text and/or an image. Then click save.\n\nAs you can see, you never have to leave the ContentPage, all actions with Simplelayout are asynchronous.\nThis means adding, deleting and editing always opens an overlay, where you can make the modifications.\n\n\nRESTAPI\n=======\n\nSimplelayout supports the plone.restapi (read only).\nThe simplelayout page state is accessable with the key \"simplelayout\".\nThe key \"slblocks\" stores a UID -> Block Json mapping, which is handy to access the blocks via the page state.\nThe block configuration is accessable per block via the key \"block-configuration\"\n\nThe key \"blocks\" was already in use by Plone.\n\n\nLoad the restapi extras by adding the following to your buildout config\n\n::\n\n    [instance]\n    eggs +=\n        ...\n        ftw.simplelayout[contenttypes, restapi]\n\n\n\nContenttypes\n------------\n\nSimplelayout ships by default with two content types.\nOne folderish type, the `ContentPage` and one block type, the `TextBlock`.\n\n\n**ContentPage**\n\nThe ContentPage is a simple folderish dexterity based contenttype, which\ndoes nearly nothing, but has the ``@@simplelayout-view`` view configured by default.\nIt's possible to add a ContentPage within a ContentPage\n\n**TextBlock**\n\nThe TextBlock provides the following fields:\n\n- ``Title`` (Well, this will be the title of the block, rendered as **h2**).\n- Show title? (Decide if the title will be displayed or not).\n- Text\n- Image\n\nTitle, or Text, or the image is needed to successfully add a new block\n\nThe ``TextBlock`` configuration allows you to use this block to show text\nonly or images only, or of course both. There's no need of a single block for\nimages and a single block for text.\n\n.. figure:: ./docs/_static/add_textblock.png\n   :align: center\n   :alt: Add TextBlock\n\n   Add TextBlock\n\nExtra Blocks\n************\n\n**AliasBlock**\n\nThe AliasBlock can be installed with an extra ``aliasblock``. The block uses the\nSCSS variable ``$color-primary`` for its styling which can be overwritten by\na custom design. The ``dropzonewrapper`` class is set to ``display: none;`` to\navoid errors trying to upload content on the AliasBlock. There is also a link\nprovided to jump to the original content.\n\nAll Blocks within this package, ftw.addressblock and ftw.sliderblock are supported.\nOther Blocks from different packages or policies won't work because the list of\naliasable blocks is hardcoded. This list of blocks is available via\n``ftw.simplelayout.aliasblock.contents.aliasblock.get_selectable_blocks``.\n\nIt's also possible to select a whole ContentPage to render within the AliasBlock.\nIt's not possible however to select a ContentPage which already contains an AliasBlock\nor the ContentPage an AliasBlock is being created on to prevent recursion.\n\n\nBehaviors\n---------\n\n- The Teaser behavior is enabled by default on `TextBlock`. It allows you to add an\n  internal or external link to the block.\n\n- The `show_title` behavior is disabled by default. It can be enabled to add a checkbox\n  to the configuration of contentpages. With this checkbox, the title can be hidden.\n\n\nPortlets\n--------\n\n``ftw.simplelayout`` provides a ``Simplelayout Portlet`` which alows you to move Blocks into the right, or left column.\nYou simply have to assign the portlet on a specific context, or type.\n\nExample (How to assign the portlet by default to all Simplelayout ContentPages).\n\nportlets.xml:\n\n.. code-block:: xml\n\n    <?xml version=\"1.0\"?>\n    <portlets>\n        <assignment\n          manager=\"plone.rightcolumn\"\n          category=\"content_type\"\n          key=\"ftw.simplelayout.ContentPage\"\n          type=\"ftw.simplelayout.portlet\"\n          insert-before=\"*\">\n        </assignment>\n    </portlets>\n\n\n\n\nSimplelayout your site\n----------------------\n\n**Yes it's simple:**\n\n- Add layouts by Drag'n'Drop\n- Add Blocks by Drag'n'Drop\n- Upload images directly by Drag'n'Drop [Comming soon]\n- Change representation of blocks directly on the Block itself\n- Responsive by default\n- Create multiple column pages with ease.\n- Uninstall profile\n\n\nDevelopment\n===========\n\n**Python:**\n\n1. Fork this repo\n2. Clone your fork\n3. Shell: ``ln -s development.cfg buidlout.cfg``\n4. Shell: ``python boostrap.py``\n5. Shell: ``bin/buildout``\n\nRun ``bin/test`` to test your changes.\n\nOr start an instance by running ``bin/instance fg``.\n\n\nCreating a new Block\n--------------------\n\nMake your content 'blockish', needs only two steps.\n\n\n1. The only difference between a block and other DX content types is the ``SimplelayoutBlockBehavior``. You can simply add the Block behavior to your content by adding the following line to FTI:\n\n.. code-block:: xml\n\n    <property name=\"behaviors\">\n        <element value=\"ftw.simplelayout.interfaces.ISimplelayoutBlock\" />\n    </property>\n\n2. In order for your block to know how to represent itself on a simplelayout page you need to register a ``block_view`` for your Block.\n\nRegister view with zcml:\n\n.. code-block:: xml\n\n    <browser:page\n        for=\"my.package.content.IMyBlock\"\n        name=\"block_view\"\n        permission=\"zope2.View\"\n        class=\".myblock.MyBlockView\"\n        template=\"templates/myblockview.pt\"\n        />\n\nCorresponding template:\n\n.. code-block:: html\n\n      <h2 tal:content=\"context/Title\">Title of block</h2>\n\n      <!-- Assume you got a text field on your content -->\n      <div tal:replace=\"structure here/text/output | nothing\" />\n\n\nBasically that's it :-) You just created a new block!!\n\n\nCreate custom actions for Blocks\n--------------------------------\n\n\nGlobal Simplelayout configuration\n---------------------------------\n\n\nCreate new Block representations\n--------------------------------\n\nDirectly edit items in a folderish block\n----------------------------------------\n\nTo implement this, you just need to place a link in the rendered block.\nAssume you want to edit a file in a listing block: you need a link, which is pointing to ``./sl-ajax-inner-edit-view``,\nhas the css class ``inneredit`` and a data attribute named ``uid`` containing the uid of the content.\n\n.. code-block:: xml\n\n    <a href=\"./sl-ajax-inner-edit-view\"\n       class=\"inneredit\"\n       tal:attributes=\"data-uid file_object/UID\">EDIT</a>\n\n\nAfter editing the content, the view automatically reloads the block.\n\nAdditional plone.restapi methods\n--------------------------------\n\nAfter creating blocks in a simplelayout content page they should be synchronized with the pages config. Otherwise\nthe order in the frontend might be wrong. It also removes objects which are in the pages config but not in the page itself.\n\nTo do this, you can simply send a RestAPI Post (more information about\n`plone.restapi <https://github.com/plone/plone.restapi>`_ ) request to the path of your page, appended with\n``@sl-synchronize-page-config-with-blocks``. A dict with ``added`` and ``removed`` block UIDs is returned.\n\n\nStaging\n-------\n\nSimplelayout provides integration level tools for setting up a staging solution for content pages.\nAn ``IStaging`` adapter provides the functionality for making working copies and applying the\nchanged content of the working copy onto the baseline.\nSimplelayout does not provide an integration; the integration must be implemented on project level.\n\nSimple usage example:\n\n.. code-block:: python\n\n    from Acquisition import aq_inner\n    from Acquisition import aq_parent\n    from ftw.simplelayout.staging.interfaces import IStaging\n\n    # Make a working copy of \"baseline\" in the folder \"target\"\n    target = aq_parent(aq_inner(baseline))\n    working_copy = IStaging(baseline).create_working_copy(target)\n\n    # Apply the working copy content to the baseline:\n    IStaging(working_copy).apply_working_copy()\n\n    # Or discard the working copy:\n    IStaging(working_copy).discard_working_copy()\n\nAlthough the staging can be integrated in various ways (actions, events, etc.),\nit is usually integrated in the workflow.\nSince ``ftw.lawgiver >= 1.15.0``, it supports [intercepting transitions](https://github.com/4teamwork/ftw.lawgiver/blob/master/README.rst#intercept-and-customize-transitions),\nwhich can be used for integrating a staging solution.\n\nWhen the working copy is created, only simplelayout block children are copied from the baseline\nto the working copy. This has the advantage that a root page of a large structure can be\nrevised and copied without a performance problem because of many subpages.\n\nWhen the working copy is applied back, the content of its children are copied back to the\nbaseline. The simplelayout state and relations are updated accordingly.\n\n\n\nRun custom JS code\n==================\n\nSome Blocks need to run some JS code after rendering or for the widget itself while adding/editing. For this use case you can simply listen to the jquerytools overlay events.\n\nRun JS after adding and editing a Block\n---------------------------------------\n\nThis example has been taken from the MapBlock.\nIt uses the ``onBeforeClose`` event of jquerytools Overlay to load the collectivegeo map.\n\n.. code-block:: Javascript\n\n    $(function(){\n      $(document).on('onBeforeClose', '.overlay', function(){\n        if ($.fn.collectivegeo) {\n          $('.widget-cgmap').filter(':visible').collectivegeo();\n        }\n      });\n    });\n\n\nRun JS after the overlay has been displayed\n-------------------------------------------\n\nThis example has been taken from the MapBlock.\nIt uses the ``onLoad`` event of jquerytools Overlay to load the collectivegeo map in edit mode.\n\n.. code-block:: Javascript\n\n    $(function(){\n      $(document).on('onLoad', '.overlay', function(){\n        if ($.fn.collectivegeo) {\n          var maps = $('.widget-cgmap').filter(':visible');\n          var map_widgets = $('.map-widget .widget-cgmap').filter(':visible');\n          maps.collectivegeo();\n          map_widgets.collectivegeo('add_edit_layer');\n          map_widgets.collectivegeo('add_geocoder');\n        }\n      });\n    });\n\n\nMore JS events\n--------------\n\njQueryTools Overlay provides two more events:\n\n- onBeforeLoad\n- onClose\n\nCheck `jQueryTools Overlay Documentation <http://jquerytools.github.io/documentation/overlay>`_\n\n\nModify the Simplelayout configuration\n-------------------------------------\n\nThe simplelayout JS lib can be modified by  the `data-sl-settings` on the simplelayout container. Currently supported settings:\n\n- layouts\n- canChangeLayouts\n\n1. You're able to modify those settings globally through the Simplelayout control panel. For example:\n\n\n.. code-block:: JSON\n\n    {\"layouts\": [1]}\n\nAll Simplelayout sites are configured to have only 1 column Layouts\n\n2. Using a ISimplelayoutContainerConfig Adapter, which adapts a `context` and `request`, which means you can have different settings for different Simplelayout enabled types.\n\nExample:\n\n.. code-block:: Python\n\n    from ftw.simplelayout.contenttypes.contents.interfaces import IContentPage\n    from ftw.simplelayout.interfaces import ISimplelayoutContainerConfig\n\n\n    class ContenPageConfigAdapter(object):\n        implements(ISimplelayoutContainerConfig)\n\n        def __init__(self, context, request):\n            pass\n\n        def __call__(self, settings):\n            settings['layouts'] = [1]\n\n        def default_page_layout():\n            return None\n\n    provideAdapter(ContenPageConfigAdapter,\n                   adapts=(IContentPage, Interface))\n\nNote 1: The adapter gets called with the settings Dictionary, so you don't have to return it.\n\nNote 2: With the ``default_page_layout`` method you can also define default layouts, which are pre-rendered on a empty page.\n\n\n\n3. Using the View itself, by overwrite the ``update_simplelayout_settings`` method.\n\n.. code-block:: Python\n\n    from ftw.simplelayout.browser.simplelayout import SimplelayoutView\n\n\n    class CustomSimplelayoutView(SimplelayoutView):\n\n        def update_simplelayout_settings(self, settings):\n            settings['layouts'] = [1, 4]\n\n\n4. By default the ``canChangeLayouts`` option is injected by the Simplelayout provider. It checks if the current logged in user has the ``ftw.simplelayout: Change Layouts`` permission.\n\n\nOpenGraph support\n-----------------\nSimplelayouts provides a basic `OpenGraph <http://ogp.me/>`_ integration.\nYou can disable (Simplelayout Settings - Control Panel) Opengraph for the plone root as you wish, because it's enabled by default.\nOn Simplelayout sites itself the OpenGraph meta tags can be controlled by the `OpenGraph marker behavior`.\n\n\nMigration from ftw.contentpage\n==============================\n\nThis package is the successor of\n`ftw.contentpage <https://github.com/4teamwork/ftw.contentpage>`_.\nIn order to migrate from `ftw.contentpage` types to `ftw.simplelayout` types,\ntake a look at the preconfigured inplace migrators in the `migration.py` module of\n`ftw.simplelayout`.\n\nClient Library\n==============\n\nBuilding\n--------\n\nRebuilding the library (resources/ftw.simplelayout.js):\n\n.. code-block:: bash\n\n    yarn build\n\nTo watch for changes and rebuild the bundle automatically:\n\n.. code-block:: bash\n\n    yarn watch\n\nYou can get an expanded version of the compiled js, by disabling the uglifying\nwith the additional option ``optimize: \"none\"`` in the ``Gruntfile.js``.\n\nTesting\n-------\n\nRunning all test:\n\n.. code-block:: bash\n\n    npm test\n\nor\n\n.. code-block:: bash\n\n    grunt test\n\nRunning a specific test:\n\n.. code-block:: bash\n\n    grunt test --grep=\"Name of your test\"\n\nGetting started\n---------------\n\nToolbox\n-------\n\nProvide a toolbox instance for the simplelayout.\n\n.. code-block:: javascript\n\n    var toolbox = new Toolbox({\n      layouts: [1, 2, 4],\n      canChangeLayout: true, // Decides if toolbox get rendered\n      blocks: [\n        { title: \"Textblock\", contentType: \"textblock\", formUrl: \"URL\",\n          actions: {\n            edit: {\n              class=\"edit\",\n              description: \"Edit this block\",\n              someCustomAttribute: \"someCustomValue\"\n            },\n            move: {\n              class: \"move\",\n              description: \"Move this block\"\n            }\n          }\n        },\n        { title: \"Listingblock\", contentType: \"listingblock\", formUrl: \"URL\" }\n      ],\n      layoutActions: {\n        actions: {\n          move: {\n            class: \"iconmove move\",\n            title: \"Move this layout arround.\"\n          },\n          delete: {\n            class: \"icondelete delete\",\n            title: \"Delete this layout.\"\n          }\n        }\n      },\n      labels: {\n        labelColumnPostfix: \"Column(s)\" // Used for label in toolbox\n      }\n    });\n\nBlocks\n------\n\n+-------------+-------------+------------------------------------+\n| key         | is required | description                        |\n+-------------+-------------+------------------------------------+\n| title       |             | Title in the toolbox               |\n+-------------+-------------+------------------------------------+\n| description |             | Used for titleattribute            |\n+-------------+-------------+------------------------------------+\n| contentType | yes         | Represents the type for each block |\n+-------------+-------------+------------------------------------+\n| actions     | yes         | Describes the actions              |\n+-------------+-------------+------------------------------------+\n\nActions\n-------\n\n+-------------+-------------+------------------------------------+\n| key         | is required | description                        |\n+-------------+-------------+------------------------------------+\n| key         | yes         | Name for the action                |\n+-------------+-------------+------------------------------------+\n| class       |             | Classattribute for the action      |\n+-------------+-------------+------------------------------------+\n| description |             | Used for title attribute           |\n+-------------+-------------+------------------------------------+\n| custom      |             | Will be provided as data attribute |\n+-------------+-------------+------------------------------------+\n\nSimplelayout\n------------\n\nUse toolbox instance for initializing a simplelayout.\n\n.. code-block:: javascript\n\n    var simplelayout = new Simplelayout({toolbox: toolbox});\n\nDeserialize\n-----------\n\nUse existing markup for deserializing the simplelayout state.\n\nProvided HTML Structure\n\n.. code-block:: html\n\n    <div class=\"sl-simplelayout\" id=\"slot1\">\n      <div class=\"sl-layout\">\n        <div class=\"sl-column\">\n          <div class=\"sl-block\" data-type=\"textblock\">\n            <div class=\"sl-block-content\"></div>\n          </div>\n        </div>\n        <div class=\"sl-column\">\n          <div class=\"sl-block\" data-type=\"textblock\">\n            <div class=\"sl-block-content\"></div>\n          </div>\n        </div>\n        <div class=\"sl-column\">\n          <div class=\"sl-block\" data-type=\"textblock\">\n            <div class=\"sl-block-content\">\n              <p>I am a textblock</p>\n            </div>\n          </div>\n        </div>\n        <div class=\"sl-column\"></div>\n      </div>\n    </div>\n\nMake sure that each datatype in the structure is covered in the toolbox.\n\nEvents\n------\n\nAttach events using the singleton instance of eventEmitter.\n\n.. code-block:: javascript\n\n    var simplelayout = new Simplelayout({toolbox: toolbox});\n    simplelayout.on(eventType, callback);\n\nEventtypes\n----------\n\nblockInserted(block)\n\nblock-committed(block)\n\nblock-rollbacked(block)\n\nbeforeBlockMoved(block)\n\nblockMoved(block)\n\nblockDeleted(block)\n\nlayoutInserted(layout)\n\nlayout-committed(layout)\n\nlayout-rollbacked(layout)\n\nlayoutMoved(layout)\n\nlayoutDeleted(layout)\n\nDOM properties\n--------------\n\nEach block and layout is represented in the DOM through an ID.\n\nEach DOM element provides the following properties:\n\n- object --> object representation in simplelayout\n- parent --> parent object representation in simplelayout\n- id --> generated UUID for this element\n- represents --> representer from origin (empty if object only exists locally)\n\nThese properties can get extracted as a jQueryElement:\n\n.. code-block:: javascript\n\n    var block = $(\".sl-block\").first();\n    var blockObj = block.data().object;\n\n\nTODO\n====\n- Update/Finish examples.\n- Update/Add images (animated gifs).\n- Improve Plone 5 support (probably with plone 5 contentttypes).\n- Archetypes block integration (for legacy packages).\n\nLinks\n=====\n\n- Github: https://github.com/4teamwork/ftw.simplelayout\n- Issues: https://github.com/4teamwork/ftw.simplelayout/issues\n- Pypi: http://pypi.python.org/pypi/ftw.simplelayout\n- Continuous integration: https://jenkins.4teamwork.ch/search?q=ftw.simplelayout\n\nCopyright\n=========\n\nThis package is copyright by `4teamwork <http://www.4teamwork.ch/>`_.\n\n``ftw.simplelayout`` is licensed under GNU General Public License, version 2.\n\n.. _ftw.trash: https://github.com/4teamwork/ftw.trash\n\nChangelog\n=========\n\n3.0.4 (2022-10-04)\n------------------\n\n- Restapi: Improve sl integration. [mathias.leimgruber]\n\n\n3.0.3 (2022-08-22)\n------------------\n\n- Restapi: Do not include block infos in recursively in pages. [mathias.leimgruber]\n\n\n3.0.2 (2022-08-15)\n------------------\n\n- Staging improvement: Do not index position in parent index in old container. [mathias.leimgruber]\n\n\n3.0.1 (2022-07-11)\n------------------\n\n- BugFix staging: Do no copy relationvalues with no target. [mathias.leimgruber]\n\n\n3.0.0 (2022-07-06)\n------------------\n\n- New Feature \"Media Folder\": Make it possible to reference a MediaFolder in FileListingBlock and GalleryBlock. [mathias.leimgruber]\n\n    - Media Folders contain files and/or images and are references via GalleryBlock or FileListingBlock.\n    - This is the new default implementation.\n    - You can opt out by removing the IMediaFolder behavior and make file/images addable diretly in the GalleryBlock or FilelistingBlock.\n    - If you upgrade to this version make sure you migrate the files and images into Media Folders.\n\n\n2.8.7 (2022-06-09)\n------------------\n\n- Fix condition for discarding a cropped version of a image. [mathias.leimgruber]\n\n\n2.8.6 (2022-05-04)\n------------------\n\n- Implement ftwlogo fallback for sl pages with opengraph support. [mathias.leimgruber]\n\n\n2.8.5 (2022-05-04)\n------------------\n\n- Add twitter:image meta tag to opengraph metga tags. [mathias.leimgruber]\n\n- Use LOGO endpoint of ftw.logo in order to make sure to serve a PNG, not a SVG. [mathias.leimgruber]\n\n\n2.8.4 (2021-10-04)\n------------------\n\n- Re-add french translations for FileListingBlock clumns.\n\n\n2.8.3 (2021-08-09)\n------------------\n\n- Make sure there are no harmful css classes withing the content of a TextBlock. [mathias.leimgruber]\n\n\n2.8.2 (2021-07-20)\n------------------\n\n- Only apply 20200929161226_fix_contenttype_jquery_dependency on Plone 5.x sites. [mathias.leimgruber]\n\n\n2.8.1 (2021-04-02)\n------------------\n\n- Make sure geo settings doe not have to be available at all. [mathias.leimgruber]\n\n\n2.8.0 (2021-04-02)\n------------------\n\n- Implement simplelayout in plone.restapi responses. [mathias.leimgruber]\n\n  - The \"simpleayout\" key contains the simplelayout page state.\n  - The \"slblocks\" key contains all blocks accessable via their UID.\n  - Simplelayout data is only available on ISimplelayout\n  - The 'block-configuration' key contains the block configuration stored on ISimplelayoutBlock.\n\n- Add height field to videoblock in order to set a fixed height for vimeo/youtube nocookie block. [mathias.leimgruber]\n\n- Make rendering the aliasblock add/edit form viewlet more safe. [mathias.leimgruber]\n\n\n2.7.18 (2021-03-18)\n-------------------\n\n- Make aliasblock Title more robust, since the content might be created via script. [mathias.leimgruber]\n\n\n2.7.17 (2021-03-01)\n-------------------\n\n- Aliasblock Remove explicit dependency on sl contenttypes. [mathias.leimgruber]\n- Check all incoming references upon block deletion. This includes AliasBlocks. [mathias.leimgruber]\n\n\n2.7.16 (2020-12-10)\n-------------------\n\n- Fix Videoblock YouTube integration [Nachtalb]\n\n\n2.7.15 (2020-11-10)\n-------------------\n\n- Implement error handling for dropzone upload. [mathias.leimgruber]\n\n\n2.7.14 (2020-10-15)\n-------------------\n\n- Fix compatibility with plone.formwidget.namedfile 2.0.10+ (included in Plone 5.1.7+) [Nachtalb]\n- Fix broken page configuration on copy paste for child pages [Nachtalb]\n- Aliasblock: Show hint to target block/page if you can edit the current aliasblock. [mathias.leimgruber]\n- Aliasblock: Access to_object/isBroken only if there is a RelationValue. [mathias.leimgruber]\n- Staging: Move instead of copy blocks, which were created in the working copy, in\n  order to preserve the UID. Otherwise internal links within the working copy no longer work. [mathias.leimgruber]\n\n\n2.7.13 (2020-10-01)\n-------------------\n\n- Remove non behavior interface from FTI. [djowett-ftw]\n- Fix loading jquery 2 times and with this creating conflicts [Nachtalb]\n\n\n2.7.12 (2020-09-08)\n-------------------\n\n- Remove left and right margin from 100% wide sl-image on small screens (< 480px)\n  [djowett-ftw]\n\n\n2.7.11 (2020-09-08)\n-------------------\n\n- Escape special chars for opengraph title and description. [mathias.leimgruber]\n- Fix link integrity check on Plone 5 [Nachtalb]\n\n\n2.7.10 (2020-08-20)\n-------------------\n\n- Hansle start/t querysting for youtube videos. [mathias.leimgruber]\n\n\n2.7.9 (2020-08-05)\n------------------\n\n- Fix column in aliasblock results in failure [Nachtalb]\n\n\n2.7.8 (2020-08-05)\n------------------\n\n- Fix typo in aliasblock. [busykoala]\n- Fix state saving error when aliasblock linked to a page is used [Nachtalb]\n\n\n2.7.7 (2020-07-27)\n------------------\n\n- Fix tinymce prependToUrl value, in order to make internal links work on plone root. [mathias.leimgruber]\n\n\n2.7.6 (2020-07-01)\n------------------\n\n- Update aliasblock integration JS for full multi columns/layouts contentpage support. [mathias.leimgruber]\n- Aliasblock only show link to referenced page if you are able to modify the aliasblock. [mathias.leimgruber]\n\n\n2.7.5 (2020-06-22)\n------------------\n\n- Fix ftw.logo opengraph integration [Nachtalb]\n\n\n2.7.4 (2020-06-19)\n------------------\n\n- Add ftw.logo support for plone root opengraph integration. [mathias.leimgruber]\n\n\n2.7.3 (2020-06-15)\n------------------\n\n- Fix link to referenced object [Nachtalb]\n- Remove ``aliasblock`` and ``contenttypes`` conditions because empty extras cannot be checked [Nachtalb]\n\n\n2.7.2 (2020-06-12)\n------------------\n\n- Add missing translation of the AliasBlock for the plone domain [Nachtalb]\n\n\n2.7.1 (2020-06-12)\n------------------\n\n- Show linked page title on aliasblock. [mathias.leimgruber]\n- Do not allow to reference the ContentPage you are creating the AliasBlock on to prevent recursion [Nachtalb]\n- Fix AliasBlock text for link to referenced ContentPage [Nachtalb]\n\n\n2.7.0 (2020-06-10)\n------------------\n\n- Add viewletmanager for block add/edit form in order to load custom code. [mathias.leimgruber]\n- ContentPage support for AliasBlock. [mathias.leimgruber]\n\n\n2.6.1 (2020-06-02)\n------------------\n\n- Add collective.quickupload in plone4. [busykoala]\n\n\n2.6.0 (2020-06-02)\n------------------\n\n- Add new block (AliasBlock) which renders the content of other blocks.\n  The extra \"aliasblock\" is required to install this block. [busykoala]\n\n\n2.5.14 (2020-05-28)\n-------------------\n\n- Add vimeo video iframe wrapper for better styling possibility. [busykoala]\n\n\n2.5.13 (2020-04-24)\n-------------------\n\n- Always load videoblock js, not only when logged in [Nachtalb]\n\n\n2.5.12 (2020-04-24)\n-------------------\n\n- Fix 'upload files here' dropzone not working except just after galleryblock creation. [djowett-ftw]\n- Upgrade ftw.colorbox to resolve galleryblock overlay issue and make our initializeColorbox work in\n  Plone5. [djowett-ftw]\n\n\n2.5.11 (2020-03-24)\n-------------------\n\n- Fix deletion of blocks if parent is not simplelayoutish. [mbaechtold]\n\n\n2.5.10 (2020-03-24)\n-------------------\n\n- Make migration more robust. [mbaechtold]\n\n- Fix youtube player integration [mathias.leimgruber]\n\n\n2.5.9 (2020-01-21)\n------------------\n\n- Allow a description to be added when files are uploaded via\n  listingblock or galleryblock. [djowett-ftw]\n\n\n2.5.8 (2020-01-15)\n------------------\n\n- Add a 'Remove file' icon to Dropzone's file previews\n  (This includes starting to use a previewTemplate for Dropzone). [djowett-ftw]\n\n\n2.5.7 (2020-01-09)\n------------------\n\n- Add ftw.simplelayout portal_types translations to plone domain. [tinagerber]\n\n\n2.5.6 (2020-01-07)\n------------------\n\n- Repair overlay styles. [djowett-ftw]\n- To create a file, get the correct file type from the schema. [tinagerber]\n\n\n2.5.5 (2019-12-20)\n------------------\n\n- Fix translation for 'Upload files here'. [djowett-ftw]\n- Fix potential error after migrating to plone5 in filelisting-block. [busykoala]\n\n\n2.5.4 (2019-12-18)\n------------------\n\n- Fix js module name clash [Nachtalb]\n- Fix error when file is uploaded as ZPublisher.HTTPRequest.FileUpload in plone 4 [Nachtalb]\n\n\n2.5.3 (2019-12-18)\n------------------\n\n- Provide precompile bundle. [buchi, jone]\n\n\n2.5.2 (2019-12-05)\n------------------\n\n- Old versions of ftw.sliderblock depended on this product to require collective.upload, which\n  is no longer done after version 2.0.  We raise ImportError on startup to make this clear. [djowett-ftw]\n- Fix tests not opening files in binary mode (necessary to work with the latest release of ftw.testbrowser). [busykoala]\n- Remove unittest2 because of deprecation. [busykoala]\n\n\n2.5.1 (2019-11-29)\n------------------\n\n- Fix upgrade step. [tinagerber]\n\n\n2.5.0 (2019-11-27)\n------------------\n\n- Change event binding on tab from onClick to just click in order to trigger the function on plone 5 too. [mathias.leimgruber]\n\n- No longer accidentally load google maps api js twice. [mathias.leimgruber]\n\n- Add ftw.simplelayout.contenttypes profile when mapblock is added by default. [busykoala]\n\n- Remove (AT) LinkBuilder in favour of the one in ftw.builder. [djowett-ftw]\n\n\n2.4.1 (2019-11-14)\n------------------\n\n- Improve English in README.rst. [djowett-ftw]\n- Make the upload widget in FileListingBlock choose the content type it creates\n  based on it's `allowed_content_types`. [djowett-ftw]\n\n\n2.4.0 (2019-11-14)\n------------------\n\n- Leadimage: support changing the scale direction in the view call. [jone]\n\n\n2.3.0 (2019-11-11)\n------------------\n\n- Add ftw.theming:default (upgrade step not provided). [busykoala]\n- Unify \"Save\" translation across content types and plone versions [Nachtalb]\n- Improve linking between baseline and working copy [Nachtalb]\n\n\n2.2.0 (2019-10-30)\n------------------\n\n- Fix galleryblock on click no big image available [Nachtalb]\n- Fix typo in settings description. [jone]\n- Install contenttypes extras by default and deprecate the extra itself [Nachtalb]\n- Save files uploaded via dropzone as blobs [Nachtalb]\n- Fix image rotation for images uploaded via dropzone [Nachtalb]\n- Remove collective.quickupload as a dependency for plone 4 (replaced by dropzone.js in 2.0.0) [Nachtalb]\n\n\n2.1.2 (2019-08-29)\n------------------\n\n- Fix plone.app.events EventBasic timezone conflict when applying working copies [Nachtalb]\n\n\n2.1.1 (2019-08-27)\n------------------\n\n- Fix mapblock.js compatibility with plone5 [Nachtalb]\n\n- Move contenttypes js to resource bundles. [busykoala]\n\n- Fix html entities in data-googlejs url [mathias.leimgruber]\n\n- Fix contenttypes and mapblock js resources. [mathias.leimgruber]\n\n- Preserve childrens children order when applying working copies [Nachtalb]\n\n\n2.1.0 (2019-05-21)\n------------------\n\n- Add macros and slots to block views for easy customization. [jone]\n- Include map preferences behaviours in mapblock.js [Nachtalb]\n\n\n2.0.2 (2019-05-17)\n------------------\n\n- Fix JavaScript of the map block. [mbaechtold]\n\n- Revert: Commit abc8 mistakenly removed IReferencable [busykoala]\n\n- Staging: remove auto generated children when creating a working copy. [jone]\n\n- In order to trigger the plone transform chain, we need to maintain the mimeType of the RichTextValue. [mathias.leimgruber]\n\n- Staging: Add link to working copies in warning message. [mathias.leimgruber]\n\n- Fix plone 4 build by pinning collective.z3cform.datagridfield to 1.4.0. [mathias.leimgruber]\n\n\n2.0.1 (2019-03-08)\n------------------\n\n- Update Readme with some plone 4/5 installation hints [mathias.leimgruber]\n\n- Update package metadata. [mathias.leimgruber]\n\n- Add collective.quickupload as dependency for the plone4 extra.\n\n\n2.0.0 (2019-03-06)\n------------------\n\n- Add Plone 5.1 compatibility [jone, mbaechtold, mathas.leimgruber]\n\n- Remove development GS profile because it did not work. [jone]\n\n- Reimplement file uploading by replacing quickupload with Dropzone.js. [mathias.leimgruber, jone]\n\n- Make mapblock plone 5.1 compatible. Mainly by updating to a good known set of c.geo packages [mathias.leimgruber]\n\n\n1.23.5 (2018-12-18)\n-------------------\n\n- Add zcml:condition=\"have ftw.simplelayout:trash\" to trash related handlers. [mathias.leimgruber]\n\n\n1.23.4 (2018-12-13)\n-------------------\n\n- Trash: No longer index trashed blocks. [mathias.leimgruber]\n\n\n1.23.3 (2018-11-20)\n-------------------\n\n- Staging: fix an error which broke staging when having a link to a sub page. [jone]\n\n\n1.23.2 (2018-11-16)\n-------------------\n\n- Set last modifier for parent object, when sl block is edited if collective.lastmodifier is installed\n  This feature is a available for ``collective.lastmodifier`` version ``1.1.3`` and above [Nachtalb]\n\n\n1.23.1 (2018-11-12)\n-------------------\n\n- Implement unrestricted_uuidToObject to get the infos for the staging viewlet, regardless of the workflow. [mathias.leimgruber]\n\n- Add support for www.youtube-nocookie.com video urls. [mathias.leimgruber]\n\n\n1.23.0 (2018-10-08)\n-------------------\n\n- Add tooling for creating a staging solution. [jone]\n\n\n1.22.3 (2018-10-03)\n-------------------\n\n- Add missing_value attribute to the `image_limits` and `image_cropping_aspect_ratios`\n  interfaces to prevent the form @@simplelayout-controlpanel from saving `None`\n  if no values are given. [elioschmutz]\n\n\n1.22.2 (2018-09-26)\n-------------------\n\n- Fix a caching issue where the cropping overlay have showed the old image after uploading a new one. [elioschmutz]\n\n\n1.22.1 (2018-09-25)\n-------------------\n\n- Fix image cropper styling with blueberry marketing theme. [elioschmutz]\n\n\n1.22.0 (2018-09-25)\n-------------------\n\n- Add imagecropping with configurable aspect-ratios for textblock-images. [elioschmutz]\n- Add configurable hard and soft image limits for textblocks. [elioschmutz]\n- Add plone.restapi endpoint for synchronizing blocks with the page config [Nachtalb]\n- Add additional opengraph tags og:description fb:app_id fb:admins [Nachtalb]\n\n1.21.1 (2018-07-06)\n-------------------\n\n- Support Plone 4.3.17 (Quick fix for getting the base-url still from the base tag). [mathias.leimgruber]\n\n- Fix JS error in FF by actually passing the event object as parameter. [mathias.leimgruber]\n\n\n1.21.0 (2018-07-05)\n-------------------\n\n- Add optional support for ``ftw.trash``. [jone]\n\n1.20.3 (2018-07-05)\n-------------------\n\n- Set default value for image cropping in slider block migration [raphael-s]\n\n- Set simplelayout slot for teaser block migration [raphael-s]\n\n\n1.20.2 (2018-03-26)\n-------------------\n\n- Scale images for colorbox overlay view to fix edge case cashing of images. [raphael-s]\n\n\n1.20.1 (2018-03-01)\n-------------------\n\n- Move title and show_title field into the coordinates schemata on MapBlock. [mathias.leimgruber]\n\n- Fix loading google / geo maps in overlays within a tab. [mathias.leimgruber]\n\n\n1.20.0 (2018-01-26)\n-------------------\n\n- Add support for \"ftw.gopip\". [jone, mbaechtold]\n\n- Optionally render a title of the mapblock. [mbaechtold]\n\n- Content page builder only synchronises page config if the\n  page contains blocks. [mbaechtold]\n\n- Implement more specific MapLayers factory to prevent adding the same layers multiple times. [mathias.leimgruber]\n\n- Implement persisten map layer and zoom value.\n  Both can be chosen in the edit widget and will be reused on the display widget. [mathias.leimgruber]\n\n\n1.19.0 (2017-11-01)\n-------------------\n\n- The browser does no longer jump to the top when opening an overlay. [Kevin Bieri]\n\n- Handle view names in unicode strings. [mbaechtold]\n\n- New Feature: Asymmetric layouts. [Kevin Bieri, mathias.leimgruber]\n\n  - Introduced layout configurations (classes on layouts)\n  - By default we have golden ratio-, 1-2-1-, 3-1, 1-1-2-layouts\n  - This change introduces two now wrappers (div-tag), while render the simplelayout content.\n    Please be aware that those new wrappers may break your CSS selectors.\n\n\n1.18.5 (2017-07-25)\n-------------------\n\n- Handle view names in unicode strings. [mbaechtold]\n\n- Add anchor to new created blocks. [Kevin Bieri]\n\n- The galleryblock now renders a fallback image when the image to be displayed is truncated. [mbaechtold]\n\n- Make iframe fixes compatible with ftw.iframefix 2.0. [Kevin Bieri]\n\n- Use a static vocabulary for the sort options of the gallery block. [mbaechtold]\n\n- Install ftw.iframefix\n  [Kevin Bieri]\n\n\n1.18.4 (2017-06-15)\n-------------------\n\n- Add more sorting options (position in parent, id) to the gallery block. [mbaechtold]\n\n- Move print styles accidentally defined in plonetheme.blueberry. [Kevin Bieri]\n\n- Migration: Handle different simplelayout layouts. [lknoepfel]\n\n- Disable kss spinner. [Kevin Bieri]\n\n\n1.18.3 (2017-04-06)\n-------------------\n\n- Fix ordering error on Plone site root. [jone]\n\n\n1.18.2 (2017-03-30)\n-------------------\n\n- Fix UnboundLocalError in the simplelayout portlet. [mbaechtold]\n\n- Make anchor extraction more robust. [mbaechtold]\n\n- Remove unused \"addable_block_types\" method from simplelayout view. [jone]\n\n\n1.18.1 (2017-03-23)\n-------------------\n\n- Fix copy/paste bug with p.a.referenceablebehavior. [jone]\n\n- Make sure plone.app.referenceablebehavior is installed. [jone]\n\n\n1.18.0 (2017-03-23)\n-------------------\n\n- Improve anchor extraction. [mbaechtold]\n\n- Synchronize simplelayout block order to Plone's ordered container. [jone]\n\n- Improve support for hidden blocks introduced in 1.2.1. [mbaechtold]\n\n\n1.17.2 (2017-03-07)\n-------------------\n\n- Make MapBlock addable on plone site per default [raphael-s]\n\n\n1.17.1 (2017-02-28)\n-------------------\n\n- Include theme compatibility hint in readme.\n  [Kevin Bieri]\n\n- Prevent plone ajax spinner from being shown. [Kevin Bieri]\n\n- Restore slot defaults when removing last layout. [jone]\n\n\n1.17.0 (2017-01-26)\n-------------------\n\n- Conditionally display move action on toolbar on the layout\n  [Kevin Bieri]\n\n- Include handlebars in distributed library.\n  [Kevin Bieri]\n\n- Fix map block not showing the Google maps.\n  [mbaechtold]\n\n- Use browserify as javascript bundler\n\n  - Update tests using karma\n  - Add support for ES6 using babeljs\n\n  [Kevin Bieri]\n\n\n1.16.0 (2017-01-23)\n-------------------\n\n- Extend the textblock with the \"data-caption\" attribute which can hold\n  the caption rendered in the colorbox (requires \"ftw.colorbox\" 1.2.4).\n  [mbaechtold]\n\n\n1.15.1 (2017-01-17)\n-------------------\n\n- Do render the simplelayout portlet on non-simplelayout\n  content types. [mbaechtold]\n\n\n1.15.0 (2017-01-16)\n-------------------\n\n- TinyMCE: Disable \"anchor\"-Tab when creating a link. [jone]\n\n- TinyMCE: configure content page to contain anchors. [jone]\n\n- Change primary field of text block from \"image\" to \"text\" field\n  in order to support anchors. [jone]\n\n- Implement a simplelayout renderer object. This allows us to render\n  simplelayoutish structures without the simplelayout provider expression.\n  Further it's now possible to render only one layout of slot.\n  [mathias.leimgruber]\n\n- Log traceback too when a block cannot be rendered. [jone]\n\n\n1.14.0 (2017-01-04)\n-------------------\n\n- Move option to hide a block to a behavior so it can be used on other blocks too.\n  [mbaechtold]\n\n- Move ``ftw.referencewidget`` dependency to ``contenttypes`` extras. [jone]\n\n- Drop ``plone.formwidget.contenttree`` dependency. [jone]\n\n\n1.13.0 (2016-12-06)\n-------------------\n\n- Prevent gallery block from failing when it contains image objects having\n  umlauts in their title.\n  [mbaechtold]\n\n- Disable inline validation of the Plone forms in the overlay.\n  [mbaechtold]\n\n- Hide toolbox on small devices.\n  [Kevin Bieri]\n\n- Highlight active layout.\n  [Kevin Bieri]\n\n- Fix toolbar zindex.\n  [Kevin Bieri]\n\n- Fix layout delete button when block has been moved.\n  [Kevin Bieri]\n\n\n1.12.2 (2016-11-11)\n-------------------\n\n- Don't allow all non-folderish types to be selectable as default page.\n  Without this types like the TextBlock can be selected and would break the site.\n  [lknoepfel]\n\n\n1.12.1 (2016-11-01)\n-------------------\n\n- Enable mapblock.js for anonymous users.\n  [mathias.leimgruber]\n\n\n1.12.0 (2016-10-21)\n-------------------\n\n- Implement a inner_edit.json view, which allows us to edit an item in a\n  folderish block. For example edit a file directly in a FilelistingBlock.\n  This view works almost like the block edit view, the difference is, that\n  the inner_edit.json view returns the rendered html of its parent (the Block).\n  [mathias.leimgruber]\n\n\n1.11.1 (2016-10-13)\n-------------------\n\n- Make youtube-videoblocks auto-resize to the max space available.\n  [raphael-s]\n\n- Fix SCSS linting errors\n\n    - This requires ftw.theming>=1.7.0\n\n\n1.11.0 (2016-10-05)\n-------------------\n\n- Remove debugger statement :pig:. [Kevin Bieri]\n\n- Support Chameleon caching. [jone]\n\n\n1.10.0 (2016-09-30)\n-------------------\n\n- Open external links in new tab on block creation.\n  [Kevin Bieri]\n\n\n1.9.0 (2016-09-26)\n------------------\n\n- Drop support for standard plone theme (sunburst)\n  [Kevin Bieri]\n\n- Extend inplace migrator to create listing blocks of ftw.news and ftw.events. [jone]\n\n\n1.8.3 (2016-09-16)\n------------------\n\n- Use ftw.referencewidget instead of plone.formwidget.contenttree.\n  [tschanzt]\n\n- Protect new show/hide title behavior.\n  [mathias.leimgruber]\n\n\n1.8.2 (2016-09-14)\n------------------\n\n- Add field description for 'Image alternative text' and 'Open image in overlay'.\n  [raphael-s]\n\n- Fix Icon position. It is now postitioned to the image not the container.\n  [tschanzt]\n\n- Add optional title to the video block (disabled by default).\n  [mbaechtold]\n\n\n1.8.1 (2016-09-06)\n------------------\n\n- Add optional behavior to add a checkbox to show/hide the title of a contentpage.\n  [raphael-s]\n\n\n1.8.0 (2016-09-05)\n------------------\n\n- Fix drop animation backgroundcolor\n  [Kevin Bieri]\n\n- Make leadimages \"has_image\" and \"get_scale\" usable. [jone]\n\n- BugFix: Copyied event is called recursively. Check if the block is actually part of the current page.\n  [mathias.leimgruber]\n\n- Fix image overlay in textblocks\n  [Kevin Bieri]\n\n- Set permission for change layout, site admin & manager now have permission to change the layout.\n  [raphael-s]\n\n- Implement inplace migrators for migration from ftw.contentpage. [jone]\n\n\n1.7.4 (2016-08-16)\n------------------\n\n- Display mapblock in 2/3 ratio.\n  [mathias.leimgruber]\n\n- Implement a really hackish way to support IE11.\n  Native c.geo implementation always implements the map api twice and has caching issues.\n  [mathias.leimgruber]\n\n\n1.7.3 (2016-08-12)\n------------------\n\n- Fix 1.7.2 broken simplelayout.js build release.\n  [mathias.leimgruber]\n\n\n1.7.2 (2016-08-11)\n------------------\n\n- Fix layout state, while moving layouts between containers.\n  [mathias.leimgruber]\n\n- Disable iframe fix after stop/receving a layout.\n  [mathias.leimgruber]\n\n- Move layouts like blocks.\n  [mathias.leimgruber]\n\n- Fix moveing layouts between containers. The usability is still no the best.\n  [mathias.leimgruber]\n\n- Add an icon to mark an colorbox image.\n  [tschanzt]\n\n\n1.7.1 (2016-08-05)\n------------------\n\n- Fix word breaks in listingblock table.\n  [Kevin Bieri]\n\n\n1.7.0 (2016-08-05)\n------------------\n\n- Implement new block coordinate behavior, which uses it's own widget\n  for JS compatibility (it handles the google map api integration).\n  [mathias.leimgruber]\n\n- Fix toolbox label zindex\n  [Kevin Bieri]\n\n- Add IE11 fix for InAndOutWidget Javascript.\n  In IE11 it's not possible to manipulate a select (multiple) after\n  modifying the text of a option.\n  [mathias.leimgruber]\n\n- Add uninstall profile for ftw.simplelayout.contenttypes.\n  [elioschmutz]\n\n- Add uninstall profile for ftw.simplelayout.mapblock.\n  [elioschmutz]\n\n\n1.6.0 (2016-07-18)\n------------------\n\n- Fix missing toolbar on videoblocks\n  [Kevin Bieri]\n\n- Use zindex system from ftw.theming\n  Fix iframeblock boundaries\n  [Kevin Bieri]\n\n- Display default youtube player controls\n  [Kevin Bieri]\n\n- Translate quickupload title in overlay for filelistings and galleryblocks.\n  [elioschmutz]\n\n- Fix floating images on mobile view.\n  [Kevin Bieri]\n\n- Make simplelayout events globally available.\n  [raphael-s]\n\n- Add min-height to empty Simplelyout portlet.\n  This fixes a issue, when it was no longer possible to re-add a layout after deleting the last one.\n  [mathias.leimgruber]\n\n- Add sort-options to image gallery block.\n  [raphael-s]\n\n\n1.5.2 (2016-05-26)\n------------------\n\n- Do not show spinner when loading toolbox. [jone]\n\n\n1.5.1 (2016-05-26)\n------------------\n\n- Fix IE11 issues on succeding edits with TinyMCE by foucusing first input field. [jone]\n\n\n1.5.0 (2016-05-26)\n------------------\n\n- Implement request tracker.\n  [Kevin Bieri]\n\n- Block Views: Check for extisting viewname before setting the view_name value.\n  [mathias.leimgruber]\n\n- Make getting the og:image url more robust by checking for the scale.\n  [mathias.leimgruber]\n\n\n1.4.2 (2016-05-25)\n------------------\n\n- BugFix for IE11 VideoBlock: Prevent iframe from stopping event bubbling in IE\n  [Kevin Bieri]\n\n\n1.4.1 (2016-05-24)\n------------------\n\n- Fix editing issues in IE 11. [jone]\n\n\n1.4.0 (2016-05-24)\n------------------\n\n- Add css class to simplelayout container if the user is permitted to edit the content.\n  [Kevin Bieri]\n\n- Implement statekeeter to track DOM changes.\n  [Kevin Bieri]\n\n\n1.3.0 (2016-05-20)\n------------------\n\n- Update z3c.form to 2.9.3.\n  Fixes error when adding a filelisting-block in IE11.\n  [Kevin Bieri]\n\n- Remove block bottom margin from textblocks containing only a title.\n  [mathias.leimgruber]\n\n- Do not show empty block warning on textblock if there is only a title.\n  [mathias.leimgruber]\n\n- GalleryBlock: Show 4 images in a row for 1 col, 2 in a row for 2 col and 1 a row for 4 col.\n  [mathias.leimgruber]\n\n- Add min-height to SimplelayoutBlock empty columns.\n  [mathias.leimgruber]\n\n- Fix mouse pointer position according to openlayers pointer.\n  [mathias.leimgruber]\n\n- Add image caption field to textblock.\n  [mathias.leimgruber]\n\n- Hide main scrollbar when overlay is opened. [jone]\n\n- Lead-Image: support all slots. [jone]\n\n- Lead-Image: support gallery blocks. [jone]\n\n- Remove \"Review State\" column from file listing block.\n  It is usually not in use, since files has no workflow on simplelayout sites.\n  [mathias.leimgruber]\n\n\n1.2.1 (2016-04-14)\n------------------\n\n- Reset default scale behavior for textblock images.\n  [Kevin Bieri]\n\n- Some blocks can be hidden now. Users allowed to edit the block will see\n  the block anyway.\n  [mbaechtold]\n\n\n1.2.0 (2016-03-30)\n------------------\n\n- Match the image scaling dimensions on media breakpoints from ftw.theming.\n  [Kevin Bieri]\n\n- Use crop scale for textblock images.\n  [Kevin Bieri]\n\n- Make textblock images full with for medium screen.\n  [Kevin Bieri]\n\n- Extend documentation with class diagram.\n  [Kevin Bieri]\n\n\n1.1.0 (2016-03-03)\n------------------\n\n- Configure TinyMCE resource types. [jone]\n\n- Respect disable_border key in request and do not load simplelayout if present.\n  [mathias.leimgruber]\n\n- Remove leadimage cache key. [jone]\n\n- Show hint on empty listing and galeryblock.\n  [mathias.leimgruber]\n\n- Implement better image alt text for galleryblock and textblock.\n  Improves Accessibility.\n  [mathias.leimgruber]\n\n- Right column overlapps the toolbar, apply fixed z-index.\n  [Kevin Bieri]\n\n- Move styling from client library to ftw.theming integration using\n  base variables from ftw.theming.\n  [Kevin Bieri]\n\n- Fix simplelayout dynamic scss resource, so it does not return invalid code\n  if the selector is empty.\n  [mathias.leimgruber]\n\n- Use default table listing for the listingblock styles.\n  Also implement some sane default withs for columns.\n  [mathias.leimgruber]\n\n- Add Simlelayout view as possible front page layout + addable types on the plone site.\n  This change provides no upgrade step, since it may break the configuration.\n  [mathias.leimgruber]\n\n\n1.0a1 (2015-12-04)\n------------------\n\n- Init Release",
    "bugtrack_url": null,
    "license": "GPL2",
    "summary": "SimpleLayout provides block based content pages",
    "version": "3.0.4",
    "project_urls": {
        "Homepage": "https://github.com/4teamwork/ftw.simplelayout"
    },
    "split_keywords": [
        "ftw",
        "plone",
        "simplelayout",
        "block",
        "contentpage"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6597d7c15671bde41d87b268676955658ef0bbf3d355f7020d6ddef22aa17bc1",
                "md5": "446f233d4a587c773087e4b4700e26e4",
                "sha256": "c0b05d6fd037d59da813d2800d5ba470f62b39a15b3a34b475c76f35e99e0d59"
            },
            "downloads": -1,
            "filename": "ftw.simplelayout-3.0.4.tar.gz",
            "has_sig": false,
            "md5_digest": "446f233d4a587c773087e4b4700e26e4",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 1452403,
            "upload_time": "2022-10-04T14:12:30",
            "upload_time_iso_8601": "2022-10-04T14:12:30.510583Z",
            "url": "https://files.pythonhosted.org/packages/65/97/d7c15671bde41d87b268676955658ef0bbf3d355f7020d6ddef22aa17bc1/ftw.simplelayout-3.0.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2022-10-04 14:12:30",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "4teamwork",
    "github_project": "ftw.simplelayout",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "ftw.simplelayout"
}
        
Elapsed time: 0.16411s