This block has been developed originally for the teachers of the university Polytechnic of Montreal (as a summer internship). The needs that the teachers had is to let the students being able to form their groups, with groups already created by the teachers the standard way.
Social Student Group Formation
Since the students are the ones that form the groups, it means that there is a social interaction that has to be considered.
There are two ways to join a group:
- A Student sends an invitation to a group's
- A TeamCreator sends an invitation to a student to join its group.
There are some more few things that are important to know for the teamcreator:
- if the group is originally empty, the first student that try to send an invitation become the teamcreator.
- the teamCreator of a group is defined by the timestamp of the mdl_groups_members "timeadded" field.
- If a teamCreator quits the group, the next student that has the min(timeadded timestamp) become the next teamCreator (or the group is empty).
Why There is a TeamCreator?
The reason why we added the concept of a teamleader is because we were at the problem where if a student has sent an invitation to a group's members:
- All the members should accept the student's invitation for him/her to join the group (which increase the complexity!)
- It is not fun for the students if they HAVE to login to send an invitation to a group in which they know they will be part.
In fact this is the major reason why a teamcreator has been used has a main concept for the block. Because how the groups are formed is normally someone in the group that write the names of the other students of the group and give the paper to the teacher for the group formation.
Note: invitation will be changed for request in the future.
|title||The teacher sets the block's preferences|
|Scenario||The system display the page "Preferences". The teacher sets the data he/she wants the block to have, then click "Save changes". The system checks if the input received is valid and save in the DB the new preferences of the block's instance for the course.|
|Alternative||1. The input is not valid:
The page show a box indicating that the data has not been saved.
|title||The teacher checks the course's groups and groupings|
|Scenario||The System shows the page "Group List". The Teacher can see the groups and groupings used for the course's. The Teacher can also see which student is alone and is not part of a group (todo: by groupings too).|
|title||The teacher export the course's groups|
|Scenario||The System shows the page "Export Groups". The Teacher choose the data that the export file should contains, choose the format of the file and append the email address of the people that should receive the file. Then clicks on "Export". The System create the file with the input's data and sends it to the emails written.|
|Alternative||1. No email has been written:
The System create the file with the input's data and force the download to the local machine.
2. Try to uncheck the student's Email option: The system show a message indicating that indicates that this data must be present in the file.
|title||the student visuzalize his/her groups|
|Scenario||The System show the page "Summary". The Student can now vizualize the groups and groupings in which he/she is part of.|
|Alternative||The student is not part of any group:
The system show a message indicating that the student is not part of any group.
|title||the student sends a resquest to a group|
|Scenario||The System show the page "Join a Group". The Student click the checkbox of the group he/she wants to join, then clicks on "Join Group". The System appends the student's request in the DB. Then show a message indicating that the request has been sent.|
|Alternative||1. The student is already part of the group/grouping:
A green tick replaced the checkbox.
2. The Student can't join a group/grouping:
A red mark replaced the checkbox.
3. A request between the student and the group is present in the DB:
A clock replaced the checkbox meaning the request is in pending.
|title||the teamcreator sends a request to a student|
|Scenario||The System show the page "Add Student to Group" and select the first group found for the teamcreator. The teamcreator clicks on the group he/she wants to modify. The System refresh the list of the student that can be selected by the teamcreator. The teamcreator checks the checkbox on the row of the student he want to invite into his/her group, then clicks "Add To My Group". The System add the Request into the DB.|
|Alternative||1. The user is not a teamcreator:
The system show a message indicating that the user is not a teamcreator for any group.
2. a request for a student (for the teamcreator's group selected) is already existing in the DB:
A clock replaced the checkbox indicating the request is pending in the DB.
|title||The student quits one of its groups|
|Scenario||use-case(the student visuzalize his/her groups) --> The student clicks on the link "Leave this group" on the same row representing the group. The System remove the student from the group in the DB, then refresh the page "Summary".|
|title||Accept/Refuse an invitation|
|Scenario||The System show the page "Summary". The student/teamcreator can see the requests for joinning a group. The student clicks on "Accept" on one request. The System append the student in the group into the DB. The Student clicks "Refuse" on another request. The System removes the request from the DB.|
invitation Request system
The most complex part of the block, is the request system between the students to join a specified group.
little icones signification
The student/teamcreator can encounter 4 type of relation with the group.
- tick: meaning you're already part of the group.
- cross: meaning you can join the group.
- You are already part of the group that has this icone.
- You are part of another group that has the same grouping that the group having this icone.
- clock: meaning the request is in pending.
- The student has sent a request to the teamcreator of the group and wait to be accepted.
- The teamcreator has sent the request to the student and wait for him to accept it.
- checkbox: you can select the group to send a request to join. (all clear to send the request)
student sends a request to the teamcreator
In this context, the student is seeking for a group that he/she wants to join. When the student is in the "join a group" tab, he can see the different groups he can send a request to join.
teamcreator sends a request to a student to join his group
The teamcreator has to select the group in which he wants to add student(s).
A Green Dot indicates the current group that will send the request(s) to the student(s).
A Red Dot indicates that the group is not currently selected to send requests.
DataBase model for the request system
The information that is kept in the DB for the request system is composed of 4 important elements.
- group_id: the id of the group to join.
- user_id: the id of the user that will be added to the group.
- course_id: the id of the course in which the group formation takes place.
- action_from: from who the request has been sent? (student or teamleader)
with those informations, and equipped of the course_id, when a student or a teamcreator accepts a request. the mapping can be done between the member and the group.
Here is the todo list of things that would improve the block. <info gathering>
This page is under construction