Skip to content

Commit

Permalink
New groupmodes for organizer
Browse files Browse the repository at this point in the history
  • Loading branch information
Thomas Niedermaier committed Mar 5, 2018
1 parent f0c274e commit c2eb63b
Show file tree
Hide file tree
Showing 16 changed files with 69 additions and 59 deletions.
18 changes: 3 additions & 15 deletions amd/src/modform.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,25 +48,13 @@ define(
warningdiv.hide();

function check_group_members_only(e) {
var groupcheckbox = $(e.target);
var groupmembersonlycheckbox = $('#id_error_groupingid');
var groupmodeselect = $(e.target);

if (groupcheckbox.is(':checked') == true) {
if (groupmembersonlycheckbox) {
groupmembersonlycheckbox.prop('checked', true);
}
if ($('.hide.advanced') !== null) {
$('input[name="mform_showadvanced"]').click();
}
$('.collapseexpand').click();
if (groupmodeselect.val() == 1) {
$('#id_groupmode').val('2');
warningdiv.show();
} else {
if (groupmembersonlycheckbox) {
groupmembersonlycheckbox.prop('checked', false);
}
if ($('.hide.advanced') !== null) {
$('input[name="mform_showadvanced"]').click();
}
$('#id_groupmode').val('0');
warningdiv.hide();
}
Expand Down
2 changes: 1 addition & 1 deletion index.php
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@
$row[] = format_module_intro('organizer', $organizer, $cm->id);
if (has_capability('mod/organizer:viewregistrations', $context)) {
$a = organizer_get_counters($organizer);
if ($organizer->isgrouporganizer) {
if ($organizer->isgrouporganizer==ORGANIZER_GROUPMODE_EXISTINGGROUPS) {
$reg = get_string('mymoodle_registered_group_short', 'organizer', $a);
$att = get_string('mymoodle_attended_group_short', 'organizer', $a);

Expand Down
2 changes: 1 addition & 1 deletion infobox.php
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ function organizer_make_description_section($organizer, $cmid) {

$output = '<br>';
$output .= format_module_intro('organizer', $organizer, $cmid);
if ($organizer->isgrouporganizer) {
if ($organizer->isgrouporganizer==ORGANIZER_GROUPMODE_EXISTINGGROUPS) {
$group = organizer_fetch_my_group();
if ($group) {
$a = new stdClass();
Expand Down
10 changes: 9 additions & 1 deletion lang/de/organizer.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,15 @@
$string['crontaskname'] = 'Terminplaner cron Job';
$string['search:activity'] = 'Terminplaner - Aktivitätsinformation';
$string['isgrouporganizer'] = 'Gruppentermine';
$string['isgrouporganizer_help'] = "Ankreuzen um den Terminplaner im Gruppenmodus zu verwenden. Statt einzelner Benutzer/innen können sich Gruppen für Termine anmelden. Wenn nicht angekreuzt ist es trotzdem möglich mehrere Benutzer/innen zu einem einzelnen Termin zuzulassen.";
$string['isgrouporganizer_help'] = 'Ankreuzen, um den Terminplaner im Gruppenmodus zu verwenden.
Modus \'Existierende Kurs-Gruppen verwenden\': Ein Mitglied einer Kurs-Gruppe kann einen Termin für die ganze Gruppe buchen.
Modus \'Gruppen per Slot erzeugen\': Beim Anlegen eines Slots wird eine Kurs-Gruppe für den Slot angelegt.
Modus \'Gruppen per gebuchten Slot erzeugen\': Bei der ersten Buchung eines Slots wird eine Kurs-Gruppe für den Slot angelegt.
';
$string['groupmodenogroups'] = 'Kein Gruppenmodus';
$string['groupmodeexistingcoursegroups'] = 'Existierende Kurs-Gruppen verwenden';
$string['groupmodeslotgroups'] = 'Gruppen per Slot erzeugen';
$string['groupmodeslotgroupsappointment'] = 'Gruppen per gebuchten Slot erzeugen';
$string['appointmentdatetime'] = 'Datum & Zeit';
$string['multipleappointmentstartdate'] = 'Startdatum';
$string['multipleappointmentenddate'] = 'Enddatum';
Expand Down
10 changes: 9 additions & 1 deletion lang/en/organizer.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,15 @@
$string['crontaskname'] = 'Organizer cron job';
$string['search:activity'] = 'Organizer - activity information';
$string['isgrouporganizer'] = 'Group appointments';
$string['isgrouporganizer_help'] = "Check this if you want this organizer to deal with groups instead of individual users. Note that, if left unchecked, the organizer still allows more users to attend the same appointment.";
$string['isgrouporganizer_help'] = 'Check this if you want this organizer to deal with groups instead of individual users.
Modus \'Use existing groups\': A single groupmember books a slot for the group.
Modus \'Group creation per empty slot\': A course group is created for every new slot.
Modus \'Group creation per booked slot\': A course group is created for every booked slot.
';
$string['groupmodenogroups'] = 'No group appointments';
$string['groupmodeexistingcoursegroups'] = 'Use existing course groups';
$string['groupmodeslotgroups'] = 'Group creation per empty slot';
$string['groupmodeslotgroupsappointment'] = 'Group creation per booked slot';
$string['appointmentdatetime'] = 'Date & time';
$string['multipleappointmentstartdate'] = 'Start date';
$string['multipleappointmentenddate'] = 'End date';
Expand Down
14 changes: 7 additions & 7 deletions lib.php
Original file line number Diff line number Diff line change
Expand Up @@ -532,7 +532,7 @@ function organizer_get_last_group_appointment($organizer, $groupid) {
function organizer_get_counters($organizer) {
global $DB;

if ($organizer->isgrouporganizer) {
if ($organizer->isgrouporganizer==ORGANIZER_GROUPMODE_EXISTINGGROUPS) {
$cm = get_coursemodule_from_instance('organizer', $organizer->id, $organizer->course, false, MUST_EXIST);
$params = array('groupingid' => $cm->groupingid);
$query = 'SELECT {groups}.* FROM {groups}
Expand Down Expand Up @@ -620,7 +620,7 @@ function organizer_get_eventaction_instance_trainer($organizer) {

$a = organizer_get_counters($organizer);

if ($organizer->isgrouporganizer) {
if ($organizer->isgrouporganizer==ORGANIZER_GROUPMODE_EXISTINGGROUPS) {
if ($a->attended == 0) {
$str = get_string('mymoodle_registered_group_short', 'organizer', $a);
} else {
Expand All @@ -643,7 +643,7 @@ function organizer_get_eventaction_instance_student($organizer) {
$app = organizer_get_next_user_appointment($organizer);

if ($app) {
if ($organizer->isgrouporganizer) {
if ($organizer->isgrouporganizer==ORGANIZER_GROUPMODE_EXISTINGGROUPS) {
$group = organizer_fetch_group($organizer);
$a = new stdClass();
$a->groupname = $group->name;
Expand All @@ -652,7 +652,7 @@ function organizer_get_eventaction_instance_student($organizer) {
$str = get_string('mymoodle_reg_slot', 'organizer');
}
} else {
if ($organizer->isgrouporganizer) {
if ($organizer->isgrouporganizer==ORGANIZER_GROUPMODE_EXISTINGGROUPS) {
$group = organizer_fetch_group($organizer);
$a = new stdClass();
$a->groupname = $group->name;
Expand All @@ -672,7 +672,7 @@ function organizer_get_eventaction_student($organizer) {

$eventstr = "";

if ($organizer->isgrouporganizer) {
if ($organizer->isgrouporganizer==ORGANIZER_GROUPMODE_EXISTINGGROUPS) {
$group = organizer_fetch_group($organizer);

if ($app && isset($app->attended) && (int) $app->attended === 1) {
Expand Down Expand Up @@ -885,7 +885,7 @@ function organizer_get_overview_student($organizer, $forindex = false) {
$element = "p";
}

if ($organizer->isgrouporganizer) {
if ($organizer->isgrouporganizer==ORGANIZER_GROUPMODE_EXISTINGGROUPS) {
$group = organizer_fetch_group($organizer);
$app = organizer_get_last_user_appointment($organizer);

Expand Down Expand Up @@ -1060,7 +1060,7 @@ function organizer_get_overview_trainer($organizer) {

$a = organizer_get_counters($organizer);

if ($organizer->isgrouporganizer) {
if ($organizer->isgrouporganizer==ORGANIZER_GROUPMODE_EXISTINGGROUPS) {
$reg = get_string('mymoodle_registered_group', 'organizer', $a);
$att = get_string('mymoodle_attended_group', 'organizer', $a);

Expand Down
8 changes: 4 additions & 4 deletions locallib.php
Original file line number Diff line number Diff line change
Expand Up @@ -308,7 +308,7 @@ function organizer_add_event_slot($cmid, $slot, $userid = null, $eventid = null)
$a->organizername = $organizer->name;
$a->organizerlink = html_writer::link($organizerurl, $organizer->name);

if ($organizer->isgrouporganizer) {
if ($organizer->isgrouporganizer==ORGANIZER_GROUPMODE_EXISTINGGROUPS) {
$apps = $DB->get_records('organizer_slot_appointments', array('slotid' => $slot->id));
$app = reset($apps);
if (isset($slot->eventid) && $app) {
Expand Down Expand Up @@ -393,7 +393,7 @@ function organizer_add_event_appointment($cmid, $appointment) {
$a->organizername = $organizer->name;
$a->organizerlink = html_writer::link($organizerurl, $organizer->name);

if ($organizer->isgrouporganizer) {
if ($organizer->isgrouporganizer==ORGANIZER_GROUPMODE_EXISTINGGROUPS) {
$a->appwith = get_string('eventappwith:group', 'organizer');
$a->with = get_string('eventwith', 'organizer');
$group = groups_get_group($appointment->groupid);
Expand Down Expand Up @@ -723,7 +723,7 @@ function organizer_add_to_queue(organizer_slot $slotobj, $groupid = 0, $userid =
$slotid = $slotobj->get_slot()->id;

$ok = true;
if ($organizer->isgrouporganizer && $groupid) {
if ($organizer->isgrouporganizer==ORGANIZER_GROUPMODE_EXISTINGGROUPS && $groupid) {
$memberids = $DB->get_fieldset_select(
'groups_members', 'userid', "groupid = :groupid",
array('groupid' => $groupid)
Expand Down Expand Up @@ -1113,7 +1113,7 @@ function organizer_is_group_mode() {
$id = optional_param('id', 0, PARAM_INT);
$cm = get_coursemodule_from_id('organizer', $id, 0, false, MUST_EXIST);
$organizer = $DB->get_record('organizer', array('id' => $cm->instance), '*', MUST_EXIST);
return $organizer->isgrouporganizer;
return $organizer->isgrouporganizer==ORGANIZER_GROUPMODE_EXISTINGGROUPS;
}

function organizer_is_queueable() {
Expand Down
2 changes: 1 addition & 1 deletion messaging.php
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ function organizer_send_message($sender, $receiver, $slot, $type, $digest = null
$courseurl = new moodle_url('/mod/organizer/view.php', array('id' => $cm->id));
$strings->courselink = html_writer::link($courseurl, $course->fullname);

if ($organizer->isgrouporganizer) {
if ($organizer->isgrouporganizer==ORGANIZER_GROUPMODE_EXISTINGGROUPS) {
if ($group = organizer_fetch_user_group($receiver->id, $organizerid)) {
$groupname = organizer_fetch_groupname($group->id);
$strings->groupname = $groupname;
Expand Down
22 changes: 14 additions & 8 deletions mod_form.php
Original file line number Diff line number Diff line change
Expand Up @@ -108,14 +108,9 @@ public function definition() {
$mform->setDefault('relativedeadline', $organizerconfig->relativedeadline);
$mform->addHelpButton('relativedeadline', 'relativedeadline', 'organizer');

$group = array();
$group[] = $mform->createElement(
'advcheckbox', 'isgrouporganizer',
get_string('isgrouporganizer', 'organizer'), null, null, array(0, 1)
);
$mform->setType('isgrouporganizer', PARAM_INT);
$mform->addGroup($group, 'isgrouporganizergroup', get_string('isgrouporganizer', 'organizer'), null, false);
$mform->addHelpButton('isgrouporganizergroup', 'isgrouporganizer', 'organizer');
$mform->addElement('select', 'isgrouporganizer', get_string('isgrouporganizer', 'organizer'), $this->_get_groupmodes());
$mform->setDefault('isgrouporganizer', 0);
$mform->addHelpButton('isgrouporganizer', 'isgrouporganizer', 'organizer');

$mform->addElement('select', 'visibility', get_string('visibility', 'organizer'), $this->_get_visibilities());
$mform->setType('visibility', PARAM_INT);
Expand Down Expand Up @@ -293,4 +288,15 @@ private function _get_visibilities() {
return $visibilities;
}

private function _get_groupmodes() {

$groupmodes = array();
$groupmodes[ORGANIZER_GROUPMODE_NOGROUPS] = get_string('groupmodenogroups', 'organizer');
$groupmodes[ORGANIZER_GROUPMODE_EXISTINGGROUPS] = get_string('groupmodeexistingcoursegroups', 'organizer');
$groupmodes[ORGANIZER_GROUPMODE_NEWGROUPSLOT] = get_string('groupmodeslotgroups', 'organizer');
$groupmodes[ORGANIZER_GROUPMODE_NEWGROUPBOOKING] = get_string('groupmodeslotgroupsappointment', 'organizer');

return $groupmodes;
}

}
10 changes: 5 additions & 5 deletions slotlib.php
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ function organizer_get_last_user_appointment($organizer, $userid = null, $mergeg
$apps = $DB->get_records_sql($query, $paramssql);
$app = reset($apps);

if ($organizer->isgrouporganizer && $mergegroupapps && $app !== false) {
if ($organizer->isgrouporganizer==ORGANIZER_GROUPMODE_EXISTINGGROUPS && $mergegroupapps && $app !== false) {
$paramssql = array('slotid' => $app->slotid, 'organizerid' => $organizer->id);
$query = "SELECT a.* FROM {organizer_slot_appointments} a
INNER JOIN {organizer_slots} s ON a.slotid = s.id
Expand Down Expand Up @@ -97,7 +97,7 @@ function organizer_get_all_user_appointments($organizer, $userid = null, $mergeg
$apps = $DB->get_records_sql($query, $paramssql);

$app = reset($apps);
if ($organizer->isgrouporganizer && $mergegroupapps && $app !== false) {
if ($organizer->isgrouporganizer==ORGANIZER_GROUPMODE_EXISTINGGROUPS && $mergegroupapps && $app !== false) {
$paramssql = array('slotid' => $app->slotid, 'organizerid' => $organizer->id);
$query = "SELECT a.* FROM {organizer_slot_appointments} a
INNER JOIN {organizer_slots} s ON a.slotid = s.id
Expand Down Expand Up @@ -142,7 +142,7 @@ function organizer_get_next_user_appointment($organizer, $userid = null) {

$todaymidnight = mktime(0, 0, 0, date("m"), date("d"), date("Y"));

if ($organizer->isgrouporganizer) {
if ($organizer->isgrouporganizer==ORGANIZER_GROUPMODE_EXISTINGGROUPS) {
require_once('locallib.php');
if ($group = organizer_fetch_user_group($userid, $organizer->id)) {
$paramssql = array('organizerid' => $organizer->id, 'groupid' => $group->id, 'todaymidnight' => $todaymidnight);
Expand Down Expand Up @@ -249,7 +249,7 @@ public function is_past_due() {
public function is_full() {
$this->load_organizer();
$this->load_appointments();
if ($this->organizer->isgrouporganizer) {
if ($this->organizer->isgrouporganizer==ORGANIZER_GROUPMODE_EXISTINGGROUPS) {
return count($this->apps) > 0;
} else {
return count($this->apps) >= $this->slot->maxparticipants;
Expand Down Expand Up @@ -284,7 +284,7 @@ public function is_evaluated() {
public function organizer_user_has_access() {
$this->load_organizer();
global $DB;
if ($this->organizer->isgrouporganizer) {
if ($this->organizer->isgrouporganizer==ORGANIZER_GROUPMODE_EXISTINGGROUPS) {
$moduleid = $DB->get_field('modules', 'id', array('name' => 'organizer'));
$courseid = $DB->get_field(
'course_modules', 'course',
Expand Down
4 changes: 2 additions & 2 deletions slots_delete.php
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@
);
$appointmentstotal = $appointmentstotal->total;

if ($organizer->isgrouporganizer) {
if ($organizer->isgrouporganizer==ORGANIZER_GROUPMODE_EXISTINGGROUPS) {
$redirecturl->param('messages[]', 'message_info_slots_deleted_group');

$groups = groups_get_all_groups($course->id, 0, $cm->groupingid);
Expand Down Expand Up @@ -129,7 +129,7 @@
$redirecturl->param('data[notregistered]', $notregistered); // Anzahl noch nicht angemeldeter studenten.

$prefix = ($notregistered > $freetotal) ? 'warning' : 'info';
$suffix = ($organizer->isgrouporganizer) ? '_group' : '';
$suffix = ($organizer->isgrouporganizer==ORGANIZER_GROUPMODE_EXISTINGGROUPS) ? '_group' : '';

$redirecturl->param('messages[1]', 'message_' . $prefix . '_available' . $suffix);

Expand Down
4 changes: 2 additions & 2 deletions slots_print.php
Original file line number Diff line number Diff line change
Expand Up @@ -394,7 +394,7 @@ function organizer_display_printable_table($registrationsfromdate, $timedue, $co
$row[] = null;
} else {
$groupname = isset($entry->groupname) ? $entry->groupname : '';
if ($organizer->isgrouporganizer) {
if ($organizer->isgrouporganizer==ORGANIZER_GROUPMODE_EXISTINGGROUPS) {
$groupname .= organizer_get_teacherapplicant_output($entry->teacherapplicantid, null, true);
}
$row[] = array('data' => $groupname, 'rowspan' => $rowspan - 1);
Expand All @@ -406,7 +406,7 @@ function organizer_display_printable_table($registrationsfromdate, $timedue, $co
$a->firstname = $entry->firstname;
$a->lastname = $entry->lastname;
$name = get_string('fullname_template', 'organizer', $a);
if (!$organizer->isgrouporganizer) {
if (!$organizer->isgrouporganizer==ORGANIZER_GROUPMODE_EXISTINGGROUPS) {
$name .= organizer_get_teacherapplicant_output($entry->teacherapplicantid, null, true);
}
$row[] = array('data' => $name, 'rowspan' => 0);
Expand Down
2 changes: 1 addition & 1 deletion view_action.php
Original file line number Diff line number Diff line change
Expand Up @@ -324,7 +324,7 @@ function organizer_organizer_student_action_allowed($action, $slot) {
$slotdisabled || !$slotx->organizer_user_has_access() || $slotx->is_evaluated();

$isalreadyinqueue = false;
if ($organizer->isgrouporganizer) {
if ($organizer->isgrouporganizer==ORGANIZER_GROUPMODE_EXISTINGGROUPS) {
$isalreadyinqueue = $slotx->is_group_in_queue();
} else {
$isalreadyinqueue = $slotx->is_user_in_queue($USER->id);
Expand Down
4 changes: 2 additions & 2 deletions view_action_form_add.php
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ protected function definition() {
global $DB;
$cm = get_coursemodule_from_id('organizer', $data['id'], 0, false, MUST_EXIST);
$organizer = $DB->get_record('organizer', array('id' => $cm->instance), '*', MUST_EXIST);
if ($organizer->isgrouporganizer) {
if ($organizer->isgrouporganizer==ORGANIZER_GROUPMODE_EXISTINGGROUPS) {
$mform->addElement('hidden', 'isgrouporganizer', '1');
$mform->setType('isgrouporganizer', PARAM_BOOL);

Expand Down Expand Up @@ -217,7 +217,7 @@ protected function definition() {
$params = new \stdClass();
$params->totalslots = $totalslots;
$params->displayallslots = $displayallslots;
if ($organizer->isgrouporganizer) {
if ($organizer->isgrouporganizer==ORGANIZER_GROUPMODE_EXISTINGGROUPS) {
$params->totaltotal = get_string("totaltotal_groups", "organizer");
$params->totalday = get_string("totalday_groups", "organizer");
} else {
Expand Down
4 changes: 2 additions & 2 deletions view_action_form_eval.php
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ private function _addevalfields() {

// Get apps (persons).
$apps = $DB->get_records('organizer_slot_appointments', array('slotid' => $slotid));
if ($organizer->isgrouporganizer && count($apps) != 0) {
if ($organizer->isgrouporganizer==ORGANIZER_GROUPMODE_EXISTINGGROUPS && count($apps) != 0) {
$app = reset($apps);
$groupname = $DB->get_field('groups', 'name', array('id' => $app->groupid));
$mform->insertElementBefore(
Expand Down Expand Up @@ -170,7 +170,7 @@ private function _addevalfields() {
$appgroup[] = $mform->createElement('text', "feedback", '', array('size' => 24));
$appgroup[] = $mform->createElement('html', '</span>');

if ($organizer->isgrouporganizer) {
if ($organizer->isgrouporganizer==ORGANIZER_GROUPMODE_EXISTINGGROUPS) {
$appgroup[] = $mform->createElement(
'hidden', "allownewappointments", 0,
array('class' => "allow{$slotid}")
Expand Down
Loading

0 comments on commit c2eb63b

Please sign in to comment.