Steven Heynderickx wrote on 10 Nov 2009 15:50
Originally suggested by pieterh as the "Join Module" on 1 October 2009.
This is a design sketch for a new module, 'Join', which eventually will replace and deprecate the MembershipApply and MembershipByPassword modules.
Rationale
The main motivation for designing a new module is that we have introduced "open site membership" and added a toolbar action, "Join this site". However many pro sites do not show the toolbar.
Further, we would like to simplify the registration and invitation process a lot further so that it becomes compellingly easy to join any site.
The old modules are clumsy and do not work well when shown to members (they show error boxes). And it is extra effort: first configure the policy in the Site Manager, and then add the correct module to a page like system:join. We prefer to make this streamlined: a single module that works correctly whatever the site manager configuration.
Join module specification
The Join module provides an action button that has the same functionality as the "Join this site" action on the top toolbar shown on free sites. When a user clicks the button, the Join module first ensures that the user has an account (and asks anonymous users to create an account) and then attempts to make the user a member of the site.
The Join module has these arguments:
- button="text string" — specifies the text for the button, which is "Join this site" by default.
- class="css-class" — specifies CSS class for the div element containing the button, allowing custom styling
The precise behavior of the Join module depends on the access policy of the site:
- On open sites, the user becomes a member instantly.
- On closed and private sites, the user must provide a password or apply to join the site, depending on the access policy configuration.
Note that if the user is already a member, or if the site is by invitation only, the module does not show anything.
Here is the simplest example of use:
[[module Join]]
Here is an example that specifies the button text:
[[module Join button="Join this site, it is cool!"]]
Join button with custom styling:
[[module Join class="my-join-button"]]
Specifying a CSS class works best if you also define the corresponding class in your custom CSS theme (Site Manager » Appearance » Custom Theme). Without such definition the button will have no styling.
We discourage direct comments on this thread: to discuss it, please start a sub-thread.