CiviCRM contacts who are also CMS users need a single screen where they can view and (if appropriate) update information about their interactions with the organization. The dashboard should be organized by Components: Groups, Contributions, Membership, Events. Sections for Disabled components are NOT included.
1. Define new invoke path for this page : civicrm/user
2. Navigation and Permissions
- Page is only accessible to logged in users. If not logged in, give error msg: "You must be logged in to your account to view this page."
- Add page to core menu as a callback - the page will NOT be part of our menu block (sites will need to manually add link(s) to navigate to this page).
- Drupal: Define a new Drupal permission for access to this page - 'access User Dashboard'.
- Joomla: No special permissions other than logged in user session.
3. Page Configuration
There are no configuration options for this feature in this initial version. Sites can "disable" the feature by not assigning access permission to any roles (Drupal), or by not creating a menu item for it (Joomla). Component-related sections of the page will be included based on the Enabled Components for the site (e.g. if CiviMember is NOT enabled, then the Membership section of the dashboard is not included).
4. Page Elements
Title: User Dashboard
Sections are arranged vertically in the order described below. Each section is contained in a fieldset. Unlike the CiviCRM Home dashboard (civicrm/dashboard) - there are no other blocks for search or menus/shortcuts. All sections are dependent on the associated component being enabled except for "Groups" - which is always included. For any included section where there are not entries to display, use a message status div to give an appropriate message (text included for each section below).
This section is exactly the same as the Groups tab under contact/view, except that the groups are limited to groups WHERE the visibility setting is Public User Pages OR Public User Pages and Listings. So, it may contain any of the following selectors depending on whether contact has any current or past group memberships:
- "Current Groups" with "Unsubscribe" link for each (link text replaces "Remove", action is the same)
- "Pending Confirmation" Groups with "Confirm" link for each
- Past Groups with "Rejoin Group" link for each
- Drop-down to "Join a Group"
If no current, pending or past groups, status message is:
"You are not currently subscribed to any Groups."
.. followed by "Join a Group" drop-down.
This section contains a selector with up to 12 contributions (including Cancelled contributions) - sorted by date descending. Selector elements are a bit different from contact/view Contributions tab. If there are active Recurring Contributions, include the terms in a separate selector.
For contributions selector include these columns:
Amount, Type, Received, Receipt Sent, Status
(no action links for this selector)
If there are active recurring contributions (civicrm_contribution_recur), add a 2nd selector with a row for each (generally only one row). Label above selector = "Recurring Contribution(s)". Selector has a single column for "Terms": expressed as "$amount every $frequency_interval $frequency_unit for $installments"
... plus an action link for each row:
"Change Recurring Contribution". Check Payment/PayPalIPN.php for how to construct this URL (cancelSubscriptionUrl).
As per the 1.7 modification to the contact/view Contribution tab, we should show a separate selector for "Contributions in Your Honor" - if there are any. Check out
CRM-1510 for more information.
NOTE: I don't think we want to clutter the page w/ more than 12 contributions, and I don't think we should include a full browser for the very few folks who make more than 12 - at least not for this iteration. If there are > 12, we can add a note below the table: "Contact us for information about contributions prior to those listed above."
If no contributions:
"There are no contributions on record for you."
This section is similar to the contact/view Memberships Tab. It has an Active Memberships selector (if any), and an Inactive Memberships selector (if any).
Selector columns are:
Membership, Start Date, End Date, Status
Action links: We can offer a "Renew Now" link for any Membership rows where the membership signup was online and paid by a CiviContribute contribution. This is possible because we now store the original contribution_page_id in the contribution record created during membership signup. The query to get the contribution page for renewal would JOIN the membership record to civicrm_contribution on civicrm_membership_payment.payment_entity_id - and filter to make sure the linked contribution_page is active. If we find an active contribution page ID, then use it to link to that page - civicrm/contribute/transact?id=$renewPageID etc.
This section is similar to the contact/view Events Tab being implemented for 1.7
It has an "Registered Events" selector (if any civicrm_participant records, with End Date > = current date). Selector columns are:
- Event (link to display of "Event Information" page - see below)
- Event Date(s) (Start date/time + line break + End date/time)
- Status (Status + line break + (Participant Record Last Modified Date))
Cancelled but not yet "past" participant records should be included in the selector with the "disabled" class (will display in red).
If no current/future registrations (
- e.g. "You are currently not registered for any Events."