Metadata-Version: 2.0
Name: collective.cover
Version: 1.4b1
Summary: A sane, working, editor-friendly way of creating front pages and other composite pages. Working now, for mere mortals.
Home-page: https://github.com/collective/collective.cover
Author: Carlos de la Guardia et al.
Author-email: cguardia@yahoo.com
License: GPLv2
Keywords: plone cover javascript dexterity
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Framework :: Plone
Classifier: Framework :: Plone :: 4.2
Classifier: Framework :: Plone :: 4.3
Classifier: Intended Audience :: End Users/Desktop
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: GNU General Public License v2 (GPLv2)
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: JavaScript
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.7
Classifier: Topic :: Office/Business :: News/Diary
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Dist: AccessControl
Requires-Dist: Acquisition
Requires-Dist: Missing
Requires-Dist: Products.CMFCore
Requires-Dist: Products.CMFPlone (>=4.2)
Requires-Dist: Products.GenericSetup
Requires-Dist: collective.js.bootstrap
Requires-Dist: collective.js.galleria
Requires-Dist: collective.js.jqueryui
Requires-Dist: collective.z3cform.datetimewidget
Requires-Dist: plone.api (>=1.4.11)
Requires-Dist: plone.app.blocks (>=2.2.1)
Requires-Dist: plone.app.dexterity[relations]
Requires-Dist: plone.app.iterate
Requires-Dist: plone.app.jquery (>=1.7.2)
Requires-Dist: plone.app.jquerytools (>=1.5.1)
Requires-Dist: plone.app.layout
Requires-Dist: plone.app.linkintegrity
Requires-Dist: plone.app.lockingbehavior
Requires-Dist: plone.app.registry
Requires-Dist: plone.app.relationfield
Requires-Dist: plone.app.textfield
Requires-Dist: plone.app.tiles (>=1.1.0)
Requires-Dist: plone.app.uuid
Requires-Dist: plone.app.vocabularies
Requires-Dist: plone.autoform
Requires-Dist: plone.behavior
Requires-Dist: plone.dexterity
Requires-Dist: plone.i18n
Requires-Dist: plone.indexer
Requires-Dist: plone.memoize
Requires-Dist: plone.namedfile[blobs]
Requires-Dist: plone.registry
Requires-Dist: plone.scale
Requires-Dist: plone.supermodel
Requires-Dist: plone.tiles
Requires-Dist: plone.uuid
Requires-Dist: plone.z3cform
Requires-Dist: setuptools
Requires-Dist: z3c.caching
Requires-Dist: z3c.form
Requires-Dist: zope.browserpage
Requires-Dist: zope.component
Requires-Dist: zope.event
Requires-Dist: zope.i18nmessageid
Requires-Dist: zope.interface
Requires-Dist: zope.schema
Provides-Extra: test
Requires-Dist: Products.PloneFormGen (<1.8.0.alpha1); extra == 'test'
Requires-Dist: mock; extra == 'test'
Requires-Dist: plone.app.robotframework; extra == 'test'
Requires-Dist: plone.app.testing[robot] (>=4.2.2); extra == 'test'
Requires-Dist: plone.browserlayer; extra == 'test'
Requires-Dist: plone.cachepurging; extra == 'test'
Requires-Dist: plone.testing; extra == 'test'
Requires-Dist: tzlocal; extra == 'test'

****************
collective.cover
****************

.. contents:: Table of Contents

Life, the Universe, and Everything
----------------------------------

``collective.cover`` is a package that allows the creation of elaborate covers
for website homepages, especially for news portals, government sites and
intranets that require more resources than a simple page or collection can
offer. However, despite offering rich resources to build a cover,
``collective.cover`` also provides a very easy mechanism for managing its
contents, built around a drag-and-drop interface.

``collective.cover`` is based on `Blocks <https://pypi.python.org/pypi/plone.app.blocks>`_ and `Tiles <https://pypi.python.org/pypi/plone.app.tiles>`_,
like `Mosaic <https://pypi.python.org/pypi/plone.app.mosaic>`_,
the new layout solution for Plone.

Demo
^^^^

For impatient types, there is a demo installation of collective.cover on `Heroku <http://collective-cover.herokuapp.com>`_.
It needs about 60 seconds to spin up and it will purge all changes after about an hour of non-usage.

Use cases
^^^^^^^^^

Suppose you are running The Planet, a news portal that has a bunch of editors
focused on getting news on different topics, like Economy, Health or Sports.

If you are the main publisher of the site, you may want to delegate the
construction of the front page of the Economy section to the people working on
that content area, but you might not want them messing around the Sports
section as well.

Also, suppose you have the final game of the World Cup and the match is going
to be defined on penalties: you may want to prepare a couple of cover pages
and publish the right one focused on the team that won in the end.

These are the kind of issues we want to solve with this package; we are still
far from it, but that is the idea.

Who is using it?
^^^^^^^^^^^^^^^^

These are some of the sites using ``collective.cover``:

* `CartaCapital <http://www.cartacapital.com.br/>`_ (BR)
* `Clean Clothes Campaign <http://www.cleanclothes.org/>`_ (NL)
* `Conselho Federal de Administração <http://www.cfa.org.br/>`_ (BR)
* `La Jornada <http://www.jornada.unam.mx/ultimas>`_ (MX)
* `Palácio do Planalto <http://www.planalto.gov.br/>`_ (BR)
* `Portal Brasil <http://www.brasil.gov.br/>`_ (BR)
* `Rede Brasil Atual <http://www.redebrasilatual.com.br/>`_ (BR)
* `Venezolana de Televisión <http://www.vtv.gov.ve/>`_ (VE)
* `European Climate Adaptation Platform <http://climate-adapt.eea.europa.eu/>`_ (EU)

.. figure:: https://raw.github.com/collective/collective.cover/master/cover.png
    :align: center
    :height: 640px
    :width: 490px
    :target: http://www.planalto.gov.br/

    The Presidency of Brazil uses ``collective.cover`` on the front page of its site.

Mostly Harmless
---------------

.. image:: http://img.shields.io/pypi/v/collective.cover.svg
   :target: https://pypi.python.org/pypi/collective.cover

.. image:: https://img.shields.io/travis/collective/collective.cover/master.svg
    :target: http://travis-ci.org/collective/collective.cover

.. image:: https://badge.waffle.io/collective/collective.cover.png?label=ready&title=Ready
    :target: https://waffle.io/collective/collective.cover

.. image:: https://img.shields.io/coveralls/collective/collective.cover/master.svg
    :target: https://coveralls.io/r/collective/collective.cover

Got an idea? Found a bug? Let us know by `opening a support ticket <https://github.com/collective/collective.cover/issues>`_.

Known issues
^^^^^^^^^^^^

* `Package is not compatible with standard Plone tiles <https://github.com/collective/collective.cover/issues/81>`_.
  This will be addressed in a future release, if we get an sponsor.

See the `complete list of bugs on GitHub <hhttps://github.com/collective/collective.cover/labels/bug>`_.

Don't Panic
-----------

We are currently working on the documentation of the package; this is what we have right now (contributions are always welcomed):

* `Quick Tour video on YouTube <https://www.youtube.com/watch?v=h_rsSL1e4i4>`_.
* `End user documentation <https://github.com/collective/collective.cover/blob/master/docs/end-user.rst>`_
* `Developer documentation <https://github.com/collective/collective.cover/blob/master/docs/developer.rst>`_

Installation
^^^^^^^^^^^^

To enable this package in a buildout-based installation:

Edit your buildout.cfg and add add the following to it:

.. code-block:: ini

    [buildout]
    ...
    eggs =
        collective.cover

    [versions]
    ...
    collective.js.bootstrap = 2.3.1.1
    plone.app.blocks = 3.1.0
    plone.app.drafts = 1.0
    plone.app.tiles = 1.1.0
    plone.tiles = 1.8.0

If you are using Plone 4.2.x you need to add the following also:

.. code-block:: ini

    [versions]
    collective.js.jqueryui = 1.8.16.9
    plone.app.jquery = 1.7.2
    plone.app.jquerytools = 1.5.7
    plone.app.z3cform = 0.6.3
    plone.directives.form = 1.1

If you want to use a newer release of ``collective.js.bootstrap``, you will need to update ``plone.app.jquery``:

.. code-block:: ini

    [versions]
    plone.app.jquery = 1.8.3

After updating the configuration you need to run ''bin/buildout'', which will
take care of updating your system.

Go to the 'Site Setup' page in a Plone site and click on the 'Add-ons' link.

Check the box next to ``collective.cover`` and click the 'Activate' button.

.. Note::
    You may have to empty your browser cache and save your resource registries
    in order to see the effects of the product installation.

Not entirely unlike
-------------------

Over the years there have been some packages designed to solve the problem of
creating section covers in Plone. We have used and have taken ideas from the
following:

`CompositePack <https://pypi.python.org/pypi/Products.CompositePack>`_
    Very old; the legacy code is so complex that is not maintainable anymore.
    It has (arguably) the best user interface of all. Layouts can not be
    created TTW. Viewlets are just page templates associated with content
    types; you can drag&drop viewlets around the layout. Publishers love it.

`CMFContentPanels <https://pypi.python.org/pypi/Products.CMFContentPanels>`_
    Code is very old, but still maintained (at least works in Plone 4). Allows
    to create complex layouts TTW and use any layout as a template. Easy to
    extend and edit (but is terrible to find a content to use). Needs a lot of
    memory to work and aggressive cache settings.

`Collage <https://pypi.python.org/pypi/Products.Collage>`_
    Allows the creation of layouts TTW but it has (arguably) the worst user
    interface of all. It is easily extended and there are several add-ons
    available that provide new functionality for it.

`Home Page Editor of the Brazilian Chamber of Deputies Site <https://colab.interlegis.leg.br/browser/publico/camara.home>`_
    Strongly based on `Collage`_, this package was presented at the `World Plone Day 2012 Brasilia <http://colab.interlegis.leg.br/wiki/WorldPloneDay>`_.
    It allows editing of home pages and the definition of permissions on blocks of content.
    Works under Plone 3 only.

`collective.panels <https://pypi.python.org/pypi/collective.panels>`_
    A new package that lets site editors add portlets to a set of new
    locations: above and below page contents, portal top and footer. The
    package comes with a number of flexible layouts that are used to position
    the portlets, and locations can be fixed to the nearest site object, to
    facilitate inheritance. In ``collective.cover`` (this package), we don't
    want to use portlets at all.

Share and Enjoy
---------------

``collective.cover`` would not have been possible without the contribution of
the following people:

- André Nogueira
- Asko Soukka
- Carlos de la Guardia
- Cleber J. Santos
- Daniel Jowett
- Davi Lima
- Denis Krienbühl
- Érico Andrei
- Franco Pellegrini
- Fred van Dijk
- Fulvio Casali
- Giorgio Borelli
- Gonzalo Almeida
- Héctor Velarde
- JeanMichel FRANCOIS
- Juan A. Díaz
- Juan Pablo Giménez
- Kuno Woudt
- Laura Pérez Mayos
- Marcos F. Romero
- Maurits van Rees
- Rodrigo Ferreira de Souza
- Silvestre Huens
- Thiago Curvelo
- Thiago Tamosauskas
- `Launched Pixels`_ (icon)

You can find an updated list of package contributors on `GitHub`_.

Development sponsored by Open Multimedia, Ravvit and `Simples Consultoria`_.

.. _`Launched Pixels`: http://www.launchedpixels.com/
.. _`GitHub`: https://github.com/collective/collective.cover/contributors
.. _`Simples Consultoria`: http://www.simplesconsultoria.com.br/

Changelog
---------

There's a frood who really knows where his towel is.

1.4b1 (2016-12-14)
^^^^^^^^^^^^^^^^^^

- Fix ``@@updatetilecontent`` view to avoid rendering outdated data.
  [hvelarde]

- Fix ``TypeError`` when changing default image scale on basic tiles (fixes `#686`_).
  [rodfersou]

- Fixed adding a 'more' link in list tiles.
  Previously you could select an item to use as 'more' link,
  but it did not stick.  [maurits]

- The ``replace_with_objects`` method was removed from the list tile;
  use ``replace_with_uuids`` instead.
  [hvelarde]

- "Add Content" button is now shown also in Plone 5.
  [hvelarde]

- Avoid exceptions while using the content chooser in Plone 5.
  [hvelarde]

- Add helper function to get the human representation of a mime-type on Dexterity-based content types.
  This fixed an ``AttributeError`` that was causing an exception on Plone 5.
  [hvelarde]

- We now get the types that use the view action in listings in Plone 5 also.
  [hvelarde]

- ESI support was refactored; now all tiles inherit from ``ESIPersistentTile`` by default.
  [hvelarde]

- Add plone.protect when save layout (fixes `#651`_).
  [rodfersou]

- Use ``pat-modal`` instead of ``prepOverlay`` for Plone 5 (fixes `#641`_).
  [rodfersou]

- Enforce usage of plone.app.tiles >= 1.1.0 to avoid creation of zillions of empty blob files when using versioning (fixes `#532`_, huge HT @datakurre).
  [hvelarde]


1.3b1 (2016-09-12)
^^^^^^^^^^^^^^^^^^

.. Warning::
    A huge code refactoring was made as part of the removal of the dependency on five.grok.
    The following unused views were removed: ``AddCTWidget``, ``AddTileWidget``, ``SetWidgetMap``, ``UpdateWidget`` and ``RemoveTileWidget``.
    All Compose tab helper views use now ``cmf.ModifyPortalContent`` permission.
    All Layout tab helper views use now ``collective.cover.CanEditLayout`` permission.
    The ``BaseGrid`` class is now located in the ``collective.cover.grids`` module.

- Update Traditional Chinese translation.
  [l34marr]

- Remove dependency on five.grok (closes `#510`_).
  [l34marr, rodfersou]

- Use the `X-Robots-Tag` header to avoid indexing of image scales on default view;
  this will reduce the number of 404 (Not Found) responses generated by crawlers visiting the site in search of volatile content.
  [hvelarde]

- Enforce usage of plone.api >= 1.4.11 to avoid `TypeError` while running upgrade step to profile 14.
  [hvelarde]


1.2b1 (2016-07-04)
^^^^^^^^^^^^^^^^^^

- A new calendar tile was added.
  The tile dislays a calendar that highlights the events taking place on the current month,
  the same way as the standard calendar portlet does.
  [rodfersou]

- Handle `AssertionError` on upgrade step to profile 13 to avoid failures when a cover object has duplicated tiles on it.
  Now, an error message will be logged and the object will be skipped;
  you must manually remove the duplicated tiles (closes #619).
  [hvelarde]


1.1b1 (2016-03-31)
^^^^^^^^^^^^^^^^^^^

.. Warning::
    This release removes some packages from the list of dependencies.
    Be sure to read the whole changelog and apply the related changes to your buildout configuration while upgrading.
    Also, note that we have reorganized the static resources contained here;
    as some of them are not registered in Resource Registry tools, you could end with a broken layout if you don't clear your intermediate caches.

- Enforce usage of plone.app.blocks 2.2.1 to avoid issues with tiles breaking the whole cover page.
  [hvelarde]

- Add option to select random items in collection tile (closes `#608`_).
  [rodfersou]

- Carousel tile now uses a relative ratio to set its height (fixes `#414`_).
  [terapyon, hvelarde]

- Remove hard dependency on plone.app.referenceablebehavior as Archetypes is no longer the default framework in Plone 5.
  Under Plone < 5.0 you should now explicitly add it to the `eggs` part of your buildout configuration to avoid issues while upgrading.
  [hvelarde]

- Link integrity was refactored to work on all tiles and under Plone 5;
  a hard dependency on Products.Archetypes was removed (fixes `#578`_).
  [hvelarde, rodfersou]

- Do not use the calendar tool to discover Event-like objects as it was removed on Plone 5.
  Instead, try to guess if an object is an Event by using its catalog metadata.
  [hvelarde]

- Package is now also tested with plone.app.contenttypes installed;
  a few bugs related with API incompatibilities among Archetypes and Dexterity were fixed.
  [hvelarde]

- Remove Grok dependency for vocabularies.
  [l34marr]

- You can now use a collection to populate a carousel tile;
  search results without a lead image will be bypassed (fixes `#574`_).
  [rodfersou]

- Shows message to user if an exception is thrown in a tile in AJAX calls. (closes `#581`_).
  [idgserpro]

- Fix date format in collection tiles (closes `#584`_).
  [tcurvelo]

- RichText tile no longer breaks with plone.app.widgets installed (closes `#543`_).
  [frapell, rodfersou]

- Add missing dependency on collective.z3cform.datetimewidget.
  [hvelarde]

- Remove hard dependency on plone.app.stagingbehavior as that package is no longer needed in Plone 5.
  Under Plone < 5.0 you should now explicitly add it to the `eggs` part of your buildout configuration to avoid issues while upgrading.
  [hvelarde]

- Implement drag and drop among tiles (closes `#487`_).
  [rodfersou]

- Clean up static files.
  [rodfersou]


Previous entries can be found in the HISTORY.rst file.


.. _`#414`: https://github.com/collective/collective.cover/issues/414
.. _`#487`: https://github.com/collective/collective.cover/issues/487
.. _`#510`: https://github.com/collective/collective.cover/issues/510
.. _`#532`: https://github.com/collective/collective.cover/issues/532
.. _`#543`: https://github.com/collective/collective.cover/issues/543
.. _`#574`: https://github.com/collective/collective.cover/issues/574
.. _`#578`: https://github.com/collective/collective.cover/issues/578
.. _`#581`: https://github.com/collective/collective.cover/issues/581
.. _`#584`: https://github.com/collective/collective.cover/issues/584
.. _`#608`: https://github.com/collective/collective.cover/issues/608
.. _`#641`: https://github.com/collective/collective.cover/issues/641
.. _`#651`: https://github.com/collective/collective.cover/issues/651
.. _`#686`: https://github.com/collective/collective.cover/issues/686


