collective.liveblog 1.2b2
A liveblogging solution for Plone.
Keywords: plone liveblogging dexterity

********
Liveblog
********

.. contents:: Table of Contents

Life, the Universe, and Everything
==================================

A liveblog is a blog post which is intended to provide a rolling textual coverage of an ongoing event.

A liveblog is continuously updated with timestamped micro-updates which are placed above previous micro-updates.

Typical use case is the following:

- The publisher of a news site creates a liveblog
- Editors add micro-updates to the liveblog as the event goes on
- Visitors of the site on the liveblog get micro-updates automatically via AJAX calls

Who is using it?
----------------

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

- `CartaCapital <http://www.cartacapital.com.br/>`_ (BR)
- `Portal Brasil 2016 <http://www.brasil2016.gov.br/>`_ (BR)

Mostly Harmless
===============

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

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

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

Got an idea? Found a bug? Let us know by `opening a support ticket`_.

.. _`opening a support ticket`: https://github.com/collective/collective.liveblog/issues

Don't Panic
===========

Installation
------------

To enable this package in a buildout-based installation:

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

    [buildout]
    ...
    eggs =
        collective.liveblog

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.liveblog`` 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.

Usage
-----

After installing the package you will see a new content type available: Liveblog.

Liveblogs have title, description, image and text fields.
The image field is used to set up a header on the liveblog.

.. figure:: https://raw.github.com/collective/collective.liveblog/master/create-liveblog.png
    :align: center
    :height: 440px
    :width: 640px

Now, go to the Update tab and start writing micro-updates.

A micro-update is basically a text that should optionally have a title.
The date and time of the micro-update is automatically recorded for you.
After publishing a micro-update you will see it on top of your liveblog before all previous micro-updates.

.. figure:: https://raw.github.com/collective/collective.liveblog/master/create-microupdate.png
    :align: center
    :height: 580px
    :width: 640px

All people viewing your liveblog will receive automatic updates every minute.

.. figure:: https://raw.github.com/collective/collective.liveblog/master/anonymous-view.png
    :align: center
    :height: 560px
    :width: 640px

Micro-updates can be viewed as separate pieces of content,
using the link in their timestamp,
making easy to share them in social networks.

.. figure:: https://raw.github.com/collective/collective.liveblog/master/microupdate.png
    :align: center
    :height: 480px
    :width: 640px

Many editors can update the liveblog safely.
When another editor adds a micro-update you will see it automatically on your screen even if you are writing a new one.

You can delete micro-updates also.
This will trigger a complete page refresh on all current viewers to avoid the displaying of invalid content in your liveblog.
The page refresh will happen withing the next minute.
If another editor deletes a micro-update you will see a message on your screen but no content refresh will take place.
This way we avoid interrupting editors from their work.

.. figure:: https://raw.github.com/collective/collective.liveblog/master/remote-delete.png
    :align: center
    :height: 500px
    :width: 640px

Automatic updates in liveblogs are turned off if there have been no new micro-updates in the last 24 hours.

How does it work
----------------

TBD.

Share and Enjoy
===============

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

- Héctor Velarde
- `Brendan Mitchell`_ (icon)

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

Development sponsored by `Simples Consultoria`_.

.. _`Brendan Mitchell`: http://www.theblogicon.com/
.. _`GitHub`: https://github.com/collective/collective.liveblog/contributors
.. _`Simples Consultoria`: http://www.simplesconsultoria.com.br/

Changelog
=========

1.2b2 (2017-08-23)
------------------

- Avoid ``AttributeError`` on transform chain caused by invalid output on ``recent-updates`` view when there are no new micro-updates available (refs. `plone.protect#64 <https://github.com/plone/plone.protect/issues/64>`_).
  [rodfersou]


1.2b1 (2016-06-21)
------------------

- Liveblogs are now added to the list of linkable objects in TinyMCE at installation time.
  [hvelarde]

- Fix URL of AJAX call to get latest updates of a Liveblog (fixes `#32`_).
  [rodfersou]

- Liveblogs use now standard `simple_publication_workflow`;
  automatic updates in liveblogs are now turned off if there have been no new micro-updates in the last 24 hours;
  `liveblog_workflow` was removed (closes `#31`_).
  [rodfersou]

- Use absolute paths to link to micro-updates.
  [hvelarde]


1.1b2 (2016-05-10)
------------------

- Micro-updates are now traversable;
  this allows to share them as separate pieces of content (closes `#19`_).
  [rodfersou, hvelarde]

- Use POST as request method on form used to edit micro-updates.
  [hvelarde]

- A new text field to describe the Liveblog was added.
  [hvelarde]

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

- Package is now compatible with Plone 5.0 and Plone 5.1.
  [hvelarde]


1.1b1 (2016-04-19)
------------------

- Update view now uses batch pagination every 20 micro-updates to reduce load time for users with Editor role (closes `#10`_).
  [hvelarde]

- Depend on plone.batching; this drops support for Plone 4.2.
  [hvelarde]

- Use POST as request method on form used to add micro-updates.
  [hvelarde]

- Remove referenceable extra; Archetypes is no longer the default framework in Plone 5.
  Under Plone < 5.0 you should now explicitly add plone.app.referenceablebehavior to the `eggs` part of your buildout configuration.
  [hvelarde]

- The dates of micro-updates older than today were not shown in liveblogs on **private** and **inactive** states (fixes `#14`_).
  [hvelarde]


1.0b3 (2014-09-20)
------------------

- Rendering of ``plone.abovecontenttitle`` and ``plone.belowcontenttitle`` viewlets was removed from the ``update`` view.
  [hvelarde]

- Add styles for responsive (closes `#7`_).
  [agnogueira]

- Bylines on micro-updates now honor security settings and will be displayed to anonymous users only if they are allowed to see this information (closes `#6`_).
  [hvelarde]

- Editors can now edit micro-updates; a full refresh of the view will be scheduled after editing a micro-update to avoid displaying invalid content (closes `#3`_).
  [hvelarde]


1.0b2 (2014-09-13)
------------------

- An adapter listing the URLs to be purged when a Liveblog is modified was added.
  [ericof]

- Refactor ``recent-updates`` view to get rid of the timestamp parameter.
  This way we avoid a potential source of DoS attacks.
  [hvelarde]


1.0b1 (2014-09-05)
------------------

- Timestamp handling was simplified.
  [hvelarde]

- Implement the ``Expires`` header on ``recent-updates`` view.
  This will help us control better how long the page is going to live.
  [hvelarde]

- Add a workflow specific to liveblogs.
  The workflow defines 3 states: private, active and inactive.
  This way we can control when automatic refresh of micro-updates happens.
  [hvelarde]

- Refresh the whole view when a micro-update has been deleted to avoid displaying invalid content.
  [hvelarde]

- The header viewlet was including the ``html`` and ``body`` tags on rendering.
  [hvelarde]

- Lack of ``id`` attribute on field ``text`` was preventing TinyMCE editor from loading on Plone 4.2.
  [hvelarde]

- Fire ``ObjectModifiedEvent`` event on micro-updates deletion to invalidate caching on views.
  [hvelarde]

- Implement handling of ``If-Modified-Since`` request header on ``recent-updates`` view.
  [hvelarde]

- Markup of time tag used on automatic updates was fixed.
  [hvelarde]


1.0a1 (2014-09-01)
------------------

- Initial release.

.. _`#3`: https://github.com/collective/collective.liveblog/issues/3
.. _`#5`: https://github.com/collective/collective.liveblog/issues/5
.. _`#6`: https://github.com/collective/collective.liveblog/issues/6
.. _`#7`: https://github.com/collective/collective.liveblog/issues/7
.. _`#10`: https://github.com/collective/collective.liveblog/issues/10
.. _`#14`: https://github.com/collective/collective.liveblog/issues/14
.. _`#19`: https://github.com/collective/collective.liveblog/issues/19
.. _`#31`: https://github.com/collective/collective.liveblog/issues/31
.. _`#32`: https://github.com/collective/collective.liveblog/issues/32