Invite other users (registered or unregistered) to a context in plone.
With ftw.participation users can invite other users to a participate in a area (e.g. Workspace) of a Plone installation.
A privileges user is able to invite another person by going to the invite view and entering the e-mail address of the other person. The person receives a email with a link to the Plone installation where he / she can log in with a existing user or create a new one. On the invitations view he / she can now accept or deny the invitation. When the invitation is accepted the user gets the configured privileges on the context where he / she is invited.
The invitations are stored in a special container in the annotations of the plone site root.
Each invitation has its own unique id, which is used in the URL sent to the invited person. When the plone site is accessed using this link the invitation is assigned to the users session. That’s why he can accept the invitation although he may be logged in with another user ID.
First you need to import the generic setup profile, which adds some actions, a browser layer and other stuff.
For activating the participation on a folderish content object give it the Interface ftw.participation.interfaces.IParticipationSupport which enables the participation on this context. This adds a new action “Manage participants” on this context and you can invite other people.
A invited person will receive a e-mail containing a link to the platform, containing the invitation id. After registering / logging in there is a new action “My invitations” in the user menu, where the user can accept or reject the invitation.
Providing the interface ftw.participation.interfaces.IParticipationQuotaSupport adds a “Maximum amount of participaants” field to the schema which defines how many other users can be invited.
When a quota is set the user can only invite that amount of user to this context. There is a validator on the invitation form which ensures that the quota will not be crossed.
When setting the quota to 5 it is only possible to invite 4 other users because the first participant is the owner, which usually already exists. Inviting the same user multiple times counts also multiple times, but the invitor is able to retract the invitation on the “My invitations” view.
Customizing email messages
If a person is invitied to a context he gets a e-mail notification. If this person accepts or rejects the invitation the inviter is notified by e-mail. Those e-mails are multipart emails containing a HTML part and a plaintext fallback part.
The messages may be customized eather by overwriting the translations or by customizing the mail templates in ftw.participation.browser.
- Just add ftw.participation to the eggs in your buildout configuration:
[instance] eggs += ftw.participation
- Install the generic setup profile.
This package is copyright by 4teamwork.
ftw.participation is licensed under GNU General Public License, version 2.
- Make participants view available for normal users. The view removes the management UI (invite / remove participants) when the user has not enough privileges. The link to the participants view is still protected, a link can be placed on integration level when needed. [jone]
- Add French and English translations. [jone]
- Update German translations. [jone]
- Add dexterity support. [jone]
- Owners cannot be removed with the participants view. [mathias.leimgruber]
- Fix unicode decode error on participants view. [jone]
- Participants view: show the invitors fullname instead of his id. [jone]
- Add possibility to remove pending invitations on participants view. [mathias.leimgruber]
- Fix UnicodeDecodeError in participants listing. [mathias.leimgruber]
- Set roles field on invitation form to required if multiple roles is disabled. [mathias.leimgruber]
- Allow granting “Reader” role when single roles is configured. [jone]
- Possibility to configure if only one or multiple roles can be passed on invite form. [mathias.leimgruber]
- Remove unnecessary informations on participants view, add better description [mathias.leimgruber]
- Open invite form in a overlay. [mathias.leimgruber]
- Show all participants and pending invitations on participants overview. [mathias.leimgruber]
- Fixed typo in translation. [Julian Infanger]
- Fix redirect to login form when hitting @@invitations anonymously. [jone]
- Added class for button in participants tab. [Julian Infanger]
- Use fieldsets for a better ui experience. [mathias.leimgruber]
- Some german translations. [mathias.leimgruber]
- Added default classes to buttons in invitations view, so they are styled in theme. [Julian Infanger]
- Extend invitation send message by email addresses. [mathias.leimgruber]
- Accept view: add optional argument for disabling the redirect. This is necessary when the view is called in another process, such as registration. [jone]
- Fix redirection loop: redirect to root when there are no invitations. [jone]
- Fixed unicode-error in email header. [jinfanger]
- Fix setters roles method, for old invitations without roles attr. [mathias.leimgruber]
- Set “came_from” if user was invited. [mathias.leimgruber]
- Select additional roles for invitations [mathias.leimgruber]
- Added condition for invalid invitations. [mathias.leimgruber]
- Fix in participation.pt - don’t show groups [mathias.leimgruber]
- load plone.app.workflow [mathias.leimgruber]
- Initial implementation [jbaumann]