Skip to main content

Provides a contact-contenttype

Project description


This package provides a contact contenttype.


Add the package as dependency to your


or to your buildout configuration:

eggs += ftw.contacts

and rerun buildout.

For Plone 4.x add eggs += ftw.contacts [‘plone4’] option.

Install the Generic Setup profile.

Functionality Overview

  • Contact directory with ajax search functionality
  • Contact content type
  • KML-Representation of Contact
  • vCard-Representation of Contact
  • ftw.zipexport integration if you install the [zipexport] extra
  • ftw.simplelayout integration if you install the [simplelayout] extra
  • Synchronization of contacts with an LDAP service.

How it looks

The ftw.contacts package provides an intuitive contact directory…

… with a detailed contact-view.

How it works


This is a dexterity contenttype and acts as a container for contacts to be listed.

After installing the ftw.contacts package you can add a Contactfolder to your Plone site.

The Contactfolder provides an intuitive overview of all available contacts. By default, the first 20 contacts will be shown and you can load more contacts by clicking on the Load more button at the end of the list.

The alphabetical filter allows the user to quickly find a contact. Furthermore contacts can be found by using the search field.

All the requests are asynchronous and work with a large number of contacts.


This is a dexterity contenttype which can be added inside a Contactfolder.

A Contact lists all available attributes on the contact.

You have also the possibility to show the contacts location on a map.

In addition you can download the KML-representation or the vCard-representation of the contact.

ftw.simplelayout integration

This is an addon for ftw.simplelayout. Please make sure you already installed ftw.simplelayout on your plone site before installing this addon.

Add the simplelayout extra to your egg:

eggs += ftw.contacts [simplelayout]

Run buildout and install the ftw.contacts.simplelayout:default profile

You’ll get a new contenttype MemberBlock which is available in a contentpage.

If you don’t know ftw.simplelayout, please read


The memberblock connects the a Contact with a simplelayout page. You just have to define the Contact attributes once and you can reuse them through the memberblock.

ftw.geo integration

Add the geo extra to your egg:

eggs += ftw.contacts [geo]

Run buildout and install the ftw.contacts.geo:default profile

After installing the geo-extra, you’ll see a map layer on each contact-type if you entered a valid address.

If you don’t know ftw.geo, please read

Contact synchronization through LDAP

The synchronization is executed through the sync_contacts entry point. The configuration for the sync is as follows:

  • The Plone site on which to execute the sync: Parameter -p - only required when there are multiple sites.
  • The path to the contacts folder: Configured in the registry under IContactsSettings.contacts_path
  • The mapping of the LDAP attributes to the contact fields and which field to use as ID: Register a ILDAPAttributeMapper utility. Default: DefaultLDAPAttributeMapper
  • The LDAP plugin id inside of acl_users: Configured in the registry under IContactsSettings.ldap_plugin_id
  • The base DN for the contacts. Parameter -b - defaults to the base DN configured in the plugin
  • The filter LDAP query to only get contacts. Parameter -f - defaults to (objectClass=*)

Synchronize contacts from multiple ldap sources

To synchronize multiple sources (multiple plugins in acl_users) a config file is required. Pass the path to the file through the -c parameter.

The only required attribute per source is the ldap_plugin_id`. ``base_dn will default to the base DN of the plugin and filter will default to (objectClass=*).

To avoid id collisions a userid_prefix can be specified. The prefix will then be applied to all contacts of this source. When an existing site wants to add a second source but already has synchronized contacts, then you should only specify a prefix for the new source. With this method the id’s of the existing source do not change and contacts that have already been synchronized can still be identified. This is important, because the customer may have already added additional information (e.g. images) to the contacts. If the ids change the sync will not recognize them and would then delete them!


        "ldap_plugin_id": "intern",
        "base_dn": "ou=Employees,ou=Users,dc=4teamwork,dc=ch",
        "filter": "(objectClass=*)"
        "ldap_plugin_id": "extern",
        "userid_prefix": "extern-",
        "base_dn": "ou=Customers,ou=Users,dc=4teamwork,dc=ch",
        "filter": "(objectClass=*)",
        "scope": "SCOPE_ONELEVEL"


Plone 4.3 and 5.1


1.10.1 (2020-02-21)

  • Strip ldap synced values [Nachtalb]

1.10.0 (2020-02-20)

  • Support ldap scope attribute for contact sync [Nachtalb]

1.9.6 (2020-02-14)

  • Fix i18n build. [djowett-ftw]
  • Fix object_rename error by not trying to set Title field when renaming a Contact. [djowett-ftw]
  • Brush up English in README and clarify supported versions of Plone (4.3 and 5.1). [djowett-ftw]

1.9.5 (2020-01-31)

  • Fix removal of spamProtect usage. [mathias.leimgruber]

1.9.4 (2020-01-31)

  • Remove usage of spamProtect script, since it’s no longer available in plone 5. [mathias.leimgruber]

1.9.3 (2020-01-09)

  • Add ftw.contacts portal_types translations to plone domain. [tinagerber]

1.9.2 (2019-12-14)

  • Provide precompiled bundle. [tinagerber]

1.9.1 (2019-11-29)

  • Use unittest instead of unittest2. [jone]

1.9.0 (2019-06-12)

  • Add plone 5.1 support [busykoala]

1.8.0 (2019-04-01)

  • Setup security in the in the sync script. [mbaechtold]
  • Fire different event in the sync script. [mbaechtold]

1.7.2 (2019-03-13)

  • Fix a bug where the “show more” button was hidden erroneously. [mbaechtold]

1.7.1 (2019-01-22)

  • Fix synchronisation of images. [mbaechtold]

1.7.0 (2019-01-21)

  • Support additional DX behaviors during synchronisation. [mbaechtold]

1.6.1 (2018-01-31)

  • Fix contact sync for umlaut id’s and group objects. [lknoepfel]

1.6.0 (2018-01-31)

  • Expand contact synchronization to handle multiple ldap sources. [lknoepfel]
  • Move configuration of addable types of Plone Site to the simplelayout profile. [raphael-s]

1.5.3 (2017-10-12)

  • Add comma between address and city in contact template. [raphael-s]

1.5.2 (2017-09-29)

  • Fix contacts summary view. [Kevin Bieri]

1.5.1 (2017-08-04)

  • Add label to email field in memberblock for consistency reasons. [Kevin Bieri]
  • Make memberblock more robust. [mbaechtold]
  • Improve contact detail view. [mbaechtold]

1.5.0 (2017-05-15)

  • Add contactfolder setting for hiding contact images in listing view. [raphael-s]

1.4.8 (2017-04-13)

  • Fix row distribution for n rows. [Kevin Bieri]
  • Use link for contact title in the card. [Kevin Bieri]

1.4.7 (2017-04-07)

  • Fix javascript calculated row distribution. [Kevin Bieri]

1.4.6 (2017-03-07)

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

1.4.5 (2017-02-28)

  • Use primary color for loadmore button. [Kevin Bieri]

1.4.4 (2017-02-01)

  • Sort the memberships alphabetically by the title of their container (on the contact detail view). Replaces 1.4.3. [mbaechtold]

1.4.3 (2017-01-26)

  • Sort the memberships alphabetically (on the contact detail view). [mbaechtold]

1.4.2 (2016-12-19)

  • Render less line breaks in the member block template if there is no content to follow the line break (in order to reduce space before the following block). [mbaechtold]

1.4.1 (2016-11-10)

  • Fix permission check in (get_backreferences). It’s “View” not “zope2.View”. [mathias.leimgruber]

1.4.0 (2016-09-13)

  • The membership links on the contact detail view now point to the container containing the memberblock and not to the memberblock itself. [mbaechtold]
  • Add option to hide the map on the contact detail view. [mbaechtold]
  • Add option to hide the memberships on the contact detail view. [mbaechtold]
  • Add ftw.referencewidget and use it instead of formwidget.contenttree. [tschanzt]
  • Inplace migrators for migrating from egov.contactdirectory. [jone]
  • Display the function of the contact of a member block if the option “Acquire address” is checked on the member block. [mbaechtold]
  • Install a newer version of “collective.geo.openlayers”. This makes the “ftw.openlayerhotfix” obsolete. [mbaechtold]

1.3.0 (2016-08-10)

  • Remove metadata.xml-dependencie to ftw.simplelayout for the simplelayout extra. The extra is an addon of ftw.simplelayout and should not install it. [elioschmutz]
  • Added ldap-to-contact sync. [lknoepfel]

1.2.0 (2016-03-30)

  • Redesign ftw.contacts. [Kevin Bieri]

1.1.0 (2016-03-30)

  • Remove unused geo configurations due to a changed map implementation [elioschmutz]
  • Fix geolocation lookup for georeferenced contacts. The map will no longer be rendered through the viewlet. It is implemented directly into the for better control. [elioschmutz]
  • Add missing behavior for geo referenced contact. [elioschmutz]
  • Fix broken profilehook name for ftw.geo integraton. [elioschmutz]
  • Disable rendering map widget through the viewlet. The map will be rendered directly in the now. [elioschmutz]
  • Change reload view name to more specific name reload_contacts. [elioschmutz]
  • Trigger event if contacts are reloaded. [elioschmutz]
  • Adjust contact_summary template to display the title in the details only if it is different than the organization name. This happens if you fill only an organization name without a first and last name. [elioschmutz]
  • Fix css styles for plonetheme.onegovbear [elioschmutz]

1.0.0 (2015-12-04)

  • Nothing changed yet

Download files

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

Files for ftw.contacts, version 1.10.1
Filename, size File type Python version Upload date Hashes
Filename, size ftw.contacts-1.10.1.tar.gz (635.2 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page