Type: New Feature
Affects Version/s: None
Fix Version/s: 1.0
( Refer to wireframe http://objectledge.org/confluence/display/CRM/Contact+Groups+Mockup or prototypes/crm_view_contact_groups.png)
This page consists of:
1. Contact display_name
2. Current Group Memberships section
2.1 'Selector' table lists all crm_group_contact records for this contact, with status = 'In'
2.2 For initial version, row contents are
+ 'Group' - $crm_group.name
+ 'Status' - Added by $crm_group_contact.in_method
+ 'Date Added' - $crm_group_contact.in_date
+ 'Remove' link
2.3 Group name is link to View Group page for that group (not yet developed):
2.4 onClick 'Remove' link, Jscript confirm('Are you sure you want to remove $display_name|$sort_name from $group_name').
2.5 On 'Remove' confirmation, update crm_group_contact.status to 'Out', out_method = 'Admin, and 'out_date' to now(), then redisplay page.
2.6 If no 'current memberships' - suppress selector and display
<div class="messages status">No current group memberships.</div.
NOTE: We won't handle dynamic (query-based) group memberships for this iteration
3. Add to Group form
3.1 This is always displayed.
3.2 Create form as shown in wireframe except field label = "Add to Group:"
3.3 <select> contains crm_group.name for all groups with crm_group.group_type = 'static'
AND for which there are no entries in crm_group_contact (e.g. don't include groups for which this contact is either 'In' 'Pending' or 'Out')
3.4 On 'Add'
- validate that a group is selected and the spam disclaimer checkbox is checked
- insert crm_group_contact record, status = 'In', in_method="Admin', and in_date = now()
- redisplay current page with new Current Membership in selector
4. Pending Memberships
4.1 Only show this header and selector if there are crm_group_contact records w/ status = 'Pending'
4.2 Selector rows s/b same as 'Current Memberships' above (ignore the 'edit' link shown on wireframe and implement 'Remove' as above)
5. Past Memberships
5.1 Only show this header and selector if there are crm_group_contact records w/ status = 'Out'
5.2 Selector rows s/b same as 'Current Memberships' above EXCEPT, implement 'Rejoin Group' link (replacement for 'edit' link shown in wireframe)
5.3 onClick 'Rejoin Group' link, Jscript confirm('Are you sure you want to add $display_name|$sort_name back into $group_name').
5.4 On confirmation, update crm_group_contact.status to 'In' and set 'in_date' to now(), in_method='Admin', then redisplay page.