You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 4-6.RSVP
Socket
Book a DemoInstallSign in
Socket

collective.timelines

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

collective.timelines

Timeline views for collections and folders (using verite TimelineJS).

2.0
pipPyPI
Maintainers
1

Introduction

This package integrates the Verite TimelineJS <http://timeline.verite.co/>_ application into Plone, providing a beautiful, customizable timeline view for folders and collections.

It adds a view timeline-view for Folders, new-style Collections, and old-style Collections (ATTopic).

In addition, it adds a Dexterity behavior for setting timeline dates on content and a schema extender that applies to all Archetypes content (except ATEvent, for which the normal date fields are used).

If the content has a remoteUrl (i.e. an ATLink), that link will be used to generate the thumbnail for the page. Special handling is built in for Youtube, Twitter, Wikipedia and Flickr links, among others. Otherwise, the page url is used to generate the thumbnail.

Customizations

The default adapters for Archetypes and Dexterity content should handle most use cases. However, you may customize the timeline metadata for specific content types by registering adapters to the ITimelineContent and/or ITimelineSupplement interfaces.

For example if I wanted to change the asset url for my IFoo content type I would simply add the following to a grokked package::

from five import grok
from collective.timelines.interfaces import ITimelineSupplement

class FooTimelineSupplement(grok.Adapter):
    grok.name('foo')
    grok.context(IFoo)
    grok.provides(ITimelineSupplement)

    def update(self, data):
        data['asset']['media'] = self.context.my_url
        return data

There is an example of a timeline supplement provided in the map_support module, which uses metadata from Products.Maps enabled content to display a map in the timeline.

To override the date calculation to use a custom date, or to completely change the base data, you can override the ITimelineContent adapter::

from five import grok
from DateTime import DateTime
from collective.timelines.interfaces import ITimelineContent
from collective.timelines.dexterity_content import TimeLineContent

class FooTimelineContent(TimelineContent):
    grok.provides(ITimelineContent)
    grok.context(IFoo)

    def date(self):
        date = self.context.my_date
        return DateTime(date.year, date.month, date.day)

    def data(self):
        # Calculate custom dictionary for timeline date entry

There is an example of a custom ITimelineContent data provider in the at_content module, which handles ATEvent content by automatically using the start and end dates.

Core Content Migration

If you have extended ATCT content with this add-on and would like to preserve the data when migrating to plone.app.contenttypes content, you will need to apply the dexterity behavior collective.timelines.dexterity_content.ITimelineBehavior to the target content types before migrating.

Credits

  • Alec Mitchell
  • Carlos de la Guardia
  • Jazkarta, Inc.
  • With support and funding from Dumbarton Oaks Research Library and Collection <http://doaks.org>_, Washington DC

Changelog

2.0 (2020-07-16)

  • Fix Plone 5.1 support for image determination and site settings lookup

  • Add view registrations for plone.app.contenttype types.

  • Add custom migrator to migrate data from ATCT core content to plone.app.contenttypes content

1.0 (2019-10-30)

  • Fix bug when field data is missing.

  • Documentation updates.

1.0b1 (2013-11-08)

  • Datetime formatting fixes.

  • Add collective.contentleadimage support.

  • Dexterity schema and view link fixes.

0.5 (2013-03-07)

  • Initial Release

FAQs

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts