wiki:Groups

Groups

This is a summing-up page for the task to rework the BW groups. I'm putting in the various tickets for groups and describing what needs to be done, to have some sort of overview. The original (long and much-used) ticket can be found here: #468. I will close that down soon and create new tickets for the tasks here, to make things easier to check up on.

Group admins

Group owners (and overall group admins) should be able to assign group admins for individial groups. These will have the same rights as the group owner, except they can't delete a group.

Todo

  • define a role and proper privileges for that role.
  • create code for adding and removing admins
  • create check for group deletion

Ticket

TM(1152)?

Translations

Group membership description should be translatable by members. It is also possible that we will settle on the group name as being translatable.

This already works to a certain degree - the comment entered for group membership (and probably the group description) is stored as being in the language the user currently views BW in. Hence, what's needed is to allow for easy switching between languages and showing all different translations + deleting translations.

Todo

  • Introduce code to translate membership definitions in the groups app. Check how things are done in the members app
  • Introduce code to translate group definitions in the groups app. Check how things are done in the members app
  • Implement code to change group names and translate them too

Ticket

TM(1153)? TM(1235)?

Categories

Groups should be arranged in a hierarchy of categories. More precisely, groups themselves should NOT be arranged in a hierarchy, but they can have categories attached to them. For instance, a group dedicated to hanggliding in France could have the categories 'Recreation->Aircraft->Hang Gliding' and 'Places->Europe->France' attached to it. In other words, if you were to browse to either of those categories, you would see this group.

 http://dmoz.org is the best example of something like this, but yahoo, msn, and pretty much every major site that lets you browse something does something like this.

Todo

  • create data-structure, probably something like:
    • categories
      • id
      • IdTranslation
      • created
    • categories_parents
      • IdCategory
      • IdCategoryParent
      • created
    • groups_categories
      • IdGroup
      • IdCategory
      • created

Ticket

TM(1154)?

Localised groups

We need localised groups. These are groups that are tied to a specific location. There are a couple of special things about them:

  • all members will be tied to a localised group when they sign up (and a new one if they move around)
  • through a group like that, it's easy to get in touch with the people in a local area
  • events/meetings and other local stuff will be automatically posted to the group
  • activity in the group will be tied to the location
  • localised groups have no owner, but can have admins

Other groups can also be tied to locations, but they won't have the special relation with the location that localised groups will. This means a change to the db for groups

Todo

  • add flag to groups, to reflect if a group is a special localised group or not
    • groups
      • local ENUM('yes','no') NOT NULL DEFAULT 'no'
  • add localisation table for groups (might already exists, check the db).
    • groups_locations
      • IdGroup
      • IdLocation
      • created

Ticket

TM(1155)?

Meetings/events/calendar

Created meetings/events/calendar tools for groups. This will almost certainly wait upon a general meetings/events/calendar tool. But when such a tool is ready, stuff needs to be shown on groups (calendar, etc) plus some sort of interface for creating meetings and events through the group would be great.

Todo

  • create meetings/events/calendar app

Ticket

TM(528)? - see also Meetings

Paging

All pages in groups that output a number of items should be paged. Currently, they are. Hooray! If new pages are introduced with many items on them, use the Pager and HalfPagePager? (or whatever new pager you feel like creating). Most importantly, keep things paged.

Custom membership fields

An interesting idea, proposed by Lemon-Head. Group memberships should be extendable so that, for each group, custom membership fields can be designed and members can fill them out to denote some sort of ... yeah. The extra funny thing is that these fields need to be translatable.

Todo

  • come up with good database model for storing custom membership fields. Something along the lines of:
    • groups_custommembershipfields (yes, find a better name)
      • id
      • IdGroup
      • IdTranslation
      • created
    • members_custommembershipfields (stop laughing)
      • IdCustommembershipfield
      • IdTranslation
      • created

Ticket

TM(1156)?

Group relationships

It should be possible to create relationships between groups, so you can have 'friend groups' or 'groups that are alike' or 'groups that almost wear the sames clothes but not quite'. Exactly what this will be used for is an open question - but there should be interesting opportunities.

Todo

  • create table for relationships and create code handling relationships (adding, deleting, refusing?)
    • groups_relationships
      • !IdGroup1
      • !IdGroup2
      • created

Ticket

TM(1157)?

Group newsfeeds

Provide newsfeeds for groups so people can check the activity without logging in. Possibly just for group forum threads but could be expanded to cover everything in a group. Only post public stuff though

Todo

Create code in the groups app that utilises the rss app in order to publish feeds on group activity. I have no idea about the current state of the rss app, but it should be easy to create some urls like groups/:group_id:/newsfeed and take it from there

Ticket

TM(1135)?

Group merging

It should be possible to merge two groups (at their request) so that the members of one join the other and the first is deleted (or something along those lines).

First, we need to figure out how it should work: is it enough that one group owner/admin feels like the group should be merged? How to ask group members? How to handle difference in group status (public, semi-public, closed)?

Todo

  • introduce methods in the admin area to allow group owners/admins to select a group and then merge with that gropu
  • probably introduce some tool to notify all the group members on an individual bases and let them choose if they want to be merged or not
  • create tool to move all members (easy-peasy: update membersgroups set IdGroup = new group where IdGroup = old group and IdMember = member that wants to be merged)
  • mark group as merged == deleted. Actually delete group when all members have chosen to merge or not

Ticket

TM(1159)?

Group posting

Individual group members should be able to post messages to the group. All members that have opted to receive group posts will then receive them. The posts could also be displayed as comments on the group

Todo

This has changed''' Now using the forum as the group messaging tool - all members subscribed to group messages get notifications from the forum when a thread/reply is posted in a group.

  • create interface for the post (create widget for messages and reuse)
    • half done, needs an overhaul so it looks pretty. Works though
    • is not yet linked, so also needs that
  • create logic for sending the message to all group members that have chosen to receive (use GroupMembership? entity for the latter and the Message entity for easy message creation)
    • done, is on test

Ticket

TM(1160)?

Allow all members in a public group to invite new members

Check group status and for public groups allow normal members to invite other members.

Todo

  • In the templates, check for group status. If public, include an invite widget
  • In the groups controller, check for group status in invitemember methods, allow invite for public groups

Ticket

TM(1206)?

All group tickets

#1152
Allow for creating group admins
#1153
Make group descriptions and membership descriptions translatable
#1155
Add localised groups
#1156
Create custom membership fields for groups
#1157
Create group relationships feature
#1159
Option to merge groups
#1194
groups overview does not show new threads
#1206
Allow all members in a public group to invite new members
#1235
Make it possible to change group name and add translations for it
#1252
Problem login in after confirmation link when your are invited in a group
#1275
Problem with some groups name translations
#1325
Group deletion should delete group forum threads
#1338
forums, groups - visability is buggy and confusing....
#1355
groups - link structure
#1373
profile does not appear in group memberlist
#1603
change group admin / groupsettings
#1605
unexpected "New topic" button for the groups I don't belong
#1608
Hyperlinks should be clickable in group description.
#1624
Small layout change: make the group founder less king