Invite other users (registered or unregistered) to a context in plone.
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
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
- Just add ftw.participation to the eggs in your buildout configuration:
[instance] eggs += ftw.participation
- Install the generic setup profile.
- ftw.participation.events.IInvitationCreatedEvent: An invitation was created.
- ftw.participation.events.IInvitationAcceptedEvent: An invitation was accepted.
- ftw.participation.events.IInvitationRejectedEvent: An invitation was rejected.
- ftw.participation.events.IInvitationRetractedEvent: An invitation was retracted.
- ftw.participation.events.IRolesChangedEvent: The roles of a participant was changed.
- ftw.participation.events.ILocalRoleRemoved: A local role was removed.
This package is copyright by 4teamwork.
ftw.participation is licensed under GNU General Public License, version 2.
- Fix AttributeError “get_target” when accepting. [jone]
- Fixes an issue where it was not possible to invite an existing user whose userid was not equal to his loginname. [elioschmutz]
- Prevent crash when changing roles of participants if “Products.PloneHotfix20160830” is installed. [mbaechtold]
- Prevent crash if “ftw.activity” 1.x is installed. [mbaechtold]
- Improve ftw.lawgiver support for translated role titles. [jone]
- Fix unicode errors in activity renderer. [jone]
- Add ftw.activity support for participation events. [jone]
- Add events. [jone]
- Drop Plone 4.1 and 4.2 support. [jone]
- Change german translation for the InvitationAccepted text. [raphael-s]
- Check if we actually have a invitation for an id in the session. [tschanzt]
- Fix condition for invite_participants view. Only raise NotFound if both options (invite email/member) are disabled. [mathias.leimgruber]
- BugFix: Pass email_from as string, not as email.header instance. This fixes sending emails with an Exchange. [mathias.leimgruber]
- Do not show invite link, if internal user and email invitation is disabled. [mathias.leimgruber]
- Update Translations.
- Participants: fix table layout for read-only users. [jone]
- Participants: hide users without roles. This can happen when inheriting the Owner, because inherited Owner roles are removed. [jone]
- Fix some grammar mistakes in translations. [tschanzt]
- Do not encode from address only name. [tschanzt]
- Show inherited roles on participants tab. [mathias.leimgruber]
- Make sure the participation-tab has no manipulation control elements if IParticipationSupport is not active. [mathias.leimgruber]
- The participants-tab now also works without IParticipationSupport (read only). [mathias.leimgruber]
- When allow_multiple_roles is disabled, the Reader role should not be added to the selected role as default role, since it does not make sense to have multiple roles in this case. [jone]
- Add possibility to change the roles thru the participants view. [mathias.leimgruber]
- Fix view-registrations if accessing e.g. on subsites. [elioschmutz]
- Encode Mailheaders correctly. [tschanzt]
- 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]