Note: You are currently viewing documentation for Moodle 4.0. Up-to-date documentation for the latest stable version of Moodle may be available here: Session Booking.

Session Booking: Difference between revisions

From MoodleDocs
m (resizing)
m (Download link)
 
(11 intermediate revisions by the same user not shown)
Line 2: Line 2:
{{Infobox plugin
{{Infobox plugin
|type = General plugins (Local)
|type = General plugins (Local)
|entry = Plugins directory link unavailable at present
|entry = https://github.com/bavirtual/session-booking
|tracker = https://github.com/bavirtual/session-booking/issues
|tracker = https://github.com/bavirtual/session-booking/issues
|discussion = https://github.com/bavirtual/session-booking/wiki
|discussion = https://github.com/bavirtual/session-booking/wiki
Line 25: Line 25:
#'''Instructor role''': [shortname=instructor] ARCHETYPE: '''Teacher (non-editing)'''
#'''Instructor role''': [shortname=instructor] ARCHETYPE: '''Teacher (non-editing)'''
#<span class="s1"></span>'''Senior Instructor''': [shortname=seniorinstructor] ARCHETYPE: '''Teacher (editing)'''
#<span class="s1"></span>'''Senior Instructor''': [shortname=seniorinstructor] ARCHETYPE: '''Teacher (editing)'''
#<span class="s1"></span>'''Examiner''': [shortname= examiner] ARCHETYPE: '''Teacher (editing)'''
#<span class="s1"></span>'''Flight Training Manager''': [shortname= flighttrainingmanager] ARCHETYPE: '''Manager'''
#<span class="s1"></span>'''Flight Training Manager''': [shortname= flighttrainingmanager] ARCHETYPE: '''Manager'''
*Course assignment activities for sessions to be booked against.
*If the course requires skills evaluation (configured in course setting), the last assignment is considered as the final examination or skill test / check ride.
*Participants enrolled as students, instructors, and examiners.
===Moodle plugins install===
===Moodle plugins install===
1. Download [https://github.com/bavirtual/session-booking/archive/refs/heads/main.zip session-booking] zip
1. Download [https://github.com/bavirtual/session-booking/archive/refs/heads/main.zip session-booking] zip
Line 45: Line 49:
Session booking has multiple settings that can be set to configure the plugin's behavior. There are two kinds of settings for Session booking, one set that affects the plugin behavior that is only accessible to site administrators 'Plugin settings', and the other set is specific to each course and accessible to course managers 'Course settings'.
Session booking has multiple settings that can be set to configure the plugin's behavior. There are two kinds of settings for Session booking, one set that affects the plugin behavior that is only accessible to site administrators 'Plugin settings', and the other set is specific to each course and accessible to course managers 'Course settings'.
===Plugin settings===
===Plugin settings===
*'''First session time''': indicates the starting hour for availability posting.
*'''Authorized Training Organization (ATO)'''
**ATO name: the authorized training organization's name.
*'''Availability posting'''
**First session time: the starting hour for availability posting.
**Last session time: the ending hour for availability posting.
**Availability posting weeks lookahead: how many weeks ahead a student can post availability.


*'''Last session time''': indicates the ending hour for availability posting.
*'''Booking prioritization'''
**Recency prioritization: a multiplier for weighing recency in prioritization score.
**Slot count prioritization: a multiplier for weighing availability posting count in prioritization score.
**Course activity prioritization: a multiplier for weighing course activity in prioritization score.
**Lesson completion prioritization: a multiplier for weighing lesson completion in prioritization score.


*'''Availability posting weeks lookahead''': indicates how many weeks ahead a student can post.
*'''Integrations'''
 
**External data configurations: JSON format property/value list of configuration information for [[external data source integration]].
*'''Wait period''': indicates the standard wait period after last session and for on-hold, suspension, and instructor overdue session calculation.
 
*'''Recency prioritization''': is a multiplier for weighing recency in prioritization score.
 
*'''Slot count prioritization''': is a multiplier for weighing availability posting count in prioritization score.
 
*'''Course activity prioritization''': is a multiplier for weighing course activity in prioritization score.
 
*'''Lesson completion prioritization''': is a multiplier for weighing lesson completion in prioritization score.
{{MediaPlayer | url = https://www.youtube.com/watch?v=EyTmXRgZ-E4}}
{{MediaPlayer | url = https://www.youtube.com/watch?v=EyTmXRgZ-E4}}
===Course settings===
===Course settings===
*'''Use session booking''': is a checkbox that indicates whether or not to enable 'Session booking' for the course.
*'''Enable session booking''': a checkbox that indicates whether or not to enable 'Session booking' for the course.


*'''Training type''': Dual and Multi-crew type training.
*'''Training type''': Dual and Multi-crew type training.
*'''Course outcome''': course completion outcome or certification.
*'''Posting wait restriction''': A restriction period in days between the last conducted session and the next time a student can post availability (0 = disable restriction).
*'''Posting wait restriction''': A restriction period in days between the last conducted session and the next time a student can post availability (0 = disable restriction).
*'''On-hold restriction''': A restriction period in days after which inactive students will be automatically placed on-hold (0 = disable restriction).   
*'''On-hold restriction''': A restriction period in days after which inactive students will be automatically placed on-hold (0 = disable restriction).   
Line 71: Line 76:
*'''Home airport ICAO''': the course's home airport ICAO code.
*'''Home airport ICAO''': the course's home airport ICAO code.


*'''Training Aircraft ICAO''': the course training aircraft ICAO(s).
*'''Training aircraft ICAO''': the course training aircraft ICAO(s).


*'''Course Exercise custom titles''': allows course managers to add custom labels to the progression view vs. the exercise (assignment) name.
*'''Course exercise titles''': allows customization of the course assignment activities (exercises) of the student progression grid column titles in the Instructor dashboard page. Each column title in a new line for each assignment activity in the course.
*'''Requires skills evaluation''': a checkbox indicating whether skills evaluation is required at the end of the course.
*'''Message subject & Message body''': a congratulatory graduation message to notify course participants of a student's graduation. This can be left blank to prevent notifications from being sent. Leave blank if prevent sending notifications. For more details refer to [[Session Booking#Skillset%20evaluation%20%26%20graduation|Skillset evaluation & graduation]]
==Capabilities==
==Capabilities==
Roles and capabilities are supported since the version for Moodle 1.9.  
Role capability mapping should is depicted in the diagram below.  Make sure the plugin custom defined roles follow this capability map. This can be accomplished from the Site Administration > Users > Capability overview.  Roles and capabilities are supported since the version for Moodle 1.9.  
{| class="wikitable"
{| class="wikitable"
!Capability
!Capability
Line 162: Line 169:
{{MediaPlayer | url = https://www.youtube.com/watch?v=r7LLOdx7Yk8}}
{{MediaPlayer | url = https://www.youtube.com/watch?v=r7LLOdx7Yk8}}
Instructors should add a new log book entry after each graded session to be reflected in the student's logbook. Log book entries can be added by clicking on the info icon after it is graded. Existing log book entries can be edited or deleted when clicking on an existing graded session as shown below:
Instructors should add a new log book entry after each graded session to be reflected in the student's logbook. Log book entries can be added by clicking on the info icon after it is graded. Existing log book entries can be edited or deleted when clicking on an existing graded session as shown below:
[[File:logsummary.png|alt=Edit log book entry|thumb|728x728px|Edit log book entry|none]]
[[File:logsummary.png|alt=|thumb|728x728px|none]]
[[File:newlogentry.png|alt=New logbook entry|none|thumb|619x619px|New log book entry]]
[[File:newlogentry.png|alt=|none|thumb|619x619px]]
=== Relevant information ===
=== Relevant information ===
[[File:instructordashboard.png|alt=Instructor dashboard|none|thumb|1000x1000px|Instructor dashboard]]
[[File:instructordashboard.png|alt=Instructor dashboard|none|thumb|1000x1000px|Instructor dashboard]]
Line 176: Line 183:
===iCal calendar===
===iCal calendar===
{{MediaPlayer | url = https://www.youtube.com/watch?v=xWfzElWlSJc}}
{{MediaPlayer | url = https://www.youtube.com/watch?v=xWfzElWlSJc}}
==Skillset evaluation & graduation==
The plugin checks for the course assignment as the completion task, for example: final skills test or check-ride exercise. This course field allows for sending a congratulatory message to be sent to notify course participants of a student's course completion.  Under course settings Session Booking category, the congratulatory message can be customized or left blank to disable this feature.  Message text can use the fields below for customization:
'''{fullname}''': graduating student full name.
'''{firstname}''': graduating student first name.
'''{examinername}''': examiner name
'''{completiondate}''': course completion date.
'''{enroldate}''': student's course enrolment date.
'''{simulator}''': simulator used for the skill test / check ride.
'''{totallessons}''': total lessons completed by the student.
'''{totalsessions}''': total instructor-led sessions attended by the student.
'''{totalsessionhrs}''': total session courses completed by the student.
'''{totalflighthrs}''': total flight hours completed by the student.
'''{totaldualhrs}''': total dual training hours completed by the student.
'''{totalsolohrs}''': total solo hours completed by the student.
'''{totalmultihrs}''': total multi-crew hours completed by the student.
'''{totalcopilothrs}''': total copilot hours completed by the student.
'''{totalpicustime}''': total PICUS hours completed by the student.
==External data source integration==
==External data source integration==
The plugin provides capability to lookup PIREPs data for logbook recording, pilot verification of entered PIREPs, and aircraft fleet engine-type lookup. This integration is driven by a json configuration field in the plugin settings under '''Integrations'''.
The plugin provides the ability to read data from external databases. This includes pilot report (PIREPs) lookup, aircraft, fleet, and engine-type data lookups. This integration is driven by a JSON configuration field in the plugin settings under '''Integrations''' section.  Each integration data point is toggled by the "enabled" property (0/1) and requires the following format:
[[File:external data config.png|thumb|300x300px|none]]
 
The following is format for the different data point. Properties (purple) represent internal mapping field names, and the values (orange) represent the external data points:[[File:pireps data point.png|alt=PIREPS DATA POINT|left|thumb|PIREPS DATA POINT]]
[[File:PILOTS DATA POINT.png|alt=PILOTS DATA POINT|thumb|PILOTS DATA POINT|none]]
 
 
 
[[File:Aircraft data point.png|alt=AIRCRAFT DATA POINT|thumb|AIRCRAFT DATA POINT|none]]
[[File:PILOT STATS DATA POINT.png|alt=PILOT STATS DATA POINT|thumb|PILOT STATS DATA POINT|none]]
 
==Optional user profile fields==
The following optional custom user profile fields can be added to the Moodle user profile from Site administration > Users > User profile fields.  Information from these fields is used in reports, log book entries, and the Instructor dashboard page:
 
* VATSIM CID (shortname=vatsimcid, type='text'): VATSIM ID or CID for the course participant.
* Fleet (shortname=fleet, type='text'): fleet to which the course participant belongs to.
* Primary Simulator (shortname=simulator, type='menu): the course participant primary simulator (menu options could be MSFS, XP12, P3D...etc.)
* Secondary Simulator (shortname=simulator2, type='menu'): the course participant secondary simulator (menu options could be MSFS, XP12, P3D...etc.)
* Callsign (shortname=callsign, type='text'): the course participant callsign.
 
==FAQ==
==FAQ==
'''How to override restriction for students during the posting wait period?'''
'''How to override restriction for students during the posting wait period?'''

Latest revision as of 15:15, 29 May 2024

What is Session Booking?

Session Booking is a plugin that allows aviation training organizations (ATO) manage instructor-led training sessions. The plugin allows student pilots to post their availability for instructor-led sessions, and instructors to book sessions against students availability. It provides a workflow that starts with students posting availability time slots, instructors booking against student posted time slots, and finally instructors grading assignments associated with joint sessions.

Session booking workflow


The plugin also allows course managers in assigning students to specific instructors, and monitor instructor participation in instructor-led sessions. In addition, student sessions are prioritized based on a weighted scoring mechanism based on four variables: session recency, lesson completion, course activity, and availability posting. Also, priority can be configured to give more weight to any of the four variables in the plugin settings.

The module was created and is currently maintained by Mustafa Hajjar.

Installation

Dependencies

  • The plugin requires three roles are defined to benefit from certain access restricted capability.
  1. Instructor role: [shortname=instructor] ARCHETYPE: Teacher (non-editing)
  2. Senior Instructor: [shortname=seniorinstructor] ARCHETYPE: Teacher (editing)
  3. Examiner: [shortname= examiner] ARCHETYPE: Teacher (editing)
  4. Flight Training Manager: [shortname= flighttrainingmanager] ARCHETYPE: Manager
  • Course assignment activities for sessions to be booked against.
  • If the course requires skills evaluation (configured in course setting), the last assignment is considered as the final examination or skill test / check ride.
  • Participants enrolled as students, instructors, and examiners.

Moodle plugins install

1. Download session-booking zip

2. Site administration > Plugins > Install plugins

3. Drop or upload the zip file

CLI install

$ cd [path-to-moodle]\local
$ mkdir booking
$ cd booking
$ git clone https://github.com/bavirtual/session-booking.git

Setup

Session booking has multiple settings that can be set to configure the plugin's behavior. There are two kinds of settings for Session booking, one set that affects the plugin behavior that is only accessible to site administrators 'Plugin settings', and the other set is specific to each course and accessible to course managers 'Course settings'.

Plugin settings

  • Authorized Training Organization (ATO)
    • ATO name: the authorized training organization's name.
  • Availability posting
    • First session time: the starting hour for availability posting.
    • Last session time: the ending hour for availability posting.
    • Availability posting weeks lookahead: how many weeks ahead a student can post availability.
  • Booking prioritization
    • Recency prioritization: a multiplier for weighing recency in prioritization score.
    • Slot count prioritization: a multiplier for weighing availability posting count in prioritization score.
    • Course activity prioritization: a multiplier for weighing course activity in prioritization score.
    • Lesson completion prioritization: a multiplier for weighing lesson completion in prioritization score.

Course settings

  • Enable session booking: a checkbox that indicates whether or not to enable 'Session booking' for the course.
  • Training type: Dual and Multi-crew type training.
  • Course outcome: course completion outcome or certification.
  • Posting wait restriction: A restriction period in days between the last conducted session and the next time a student can post availability (0 = disable restriction).
  • On-hold restriction: A restriction period in days after which inactive students will be automatically placed on-hold (0 = disable restriction).
  • Suspension restriction: A restriction period in days after which inactive students will be automatically suspended from the course (0 = disable restriction).
  • Instructor session overdue notification: A period in days after which inactive instructors will be automatically sent a notification (0 = disable restriction).
  • Home airport ICAO: the course's home airport ICAO code.
  • Training aircraft ICAO: the course training aircraft ICAO(s).
  • Course exercise titles: allows customization of the course assignment activities (exercises) of the student progression grid column titles in the Instructor dashboard page. Each column title in a new line for each assignment activity in the course.
  • Requires skills evaluation: a checkbox indicating whether skills evaluation is required at the end of the course.
  • Message subject & Message body: a congratulatory graduation message to notify course participants of a student's graduation. This can be left blank to prevent notifications from being sent. Leave blank if prevent sending notifications. For more details refer to Skillset evaluation & graduation

Capabilities

Role capability mapping should is depicted in the diagram below. Make sure the plugin custom defined roles follow this capability map. This can be accomplished from the Site Administration > Users > Capability overview. Roles and capabilities are supported since the version for Moodle 1.9.

Capability Description Status
local/booking:view an instructor can view session booking. implemented in 1.0
local/booking:availabilityview a student can post availability (add and delete). implemented in 1.0
local/booking:logbookview a student can view own log book entries. implemented in 1.0
local/booking:participationview a course manager can instructor participation in instructor-led session booking. implemented in 1.0
local/booking:studentnotification an instructor can send email notifications to student, including booking notifications, session cancellations. implemented in 1.0
local/booking:instructornotification a student can send email notifications to instructors with booked session confirmation. implemented in 1.0
Capabilities
Capability

Note: a Beta User role can be defined at soft-launch with capability '/local/booking:availabilityview' while removing the capability from students during the beta period.

Features


The following are the highlights and key features of Session Booking:

  • Allows instructors to book students based on their recorded availability.
  • Allows students to record and manage their weekly availability for sessions.
  • Allows course managers in assigning students to instructors.
  • Tracks instructor participation in conducting student sessions.
  • Tracks flight data and tracks student pilot log book entries.
  • Manages email communication between students and instructors.
  • Provides a dashboard for instructors and course administrators to visualize student progression throughout the course.
  • Provides a custom student prioritization mechanism for booking sessions based on student's session recency, course activity, availability posting, and lesson completion.
  • Provides session calendar integration with Moodle, Google, and Outlook Live calendars, including (ics) standard iCal calendar file download.
  • Provides simple course specific logbook and EASA format.
  • Allows for Administration and flight time analysis reporting.
  • Allows for configuration-specific integration with external data sources for PIREP, aircraft, and fleet lookup.
  • Provides automatic notification for student inactivity warnings, placement on-hold, suspension and instructor inactivity.
  • Provides course-specific student profile with relevant information along with administration functions to manage logbook entries, on-hold management, overdue restriction override, keep alive for inactive students placed on-hold.

Availability posting

availability.png

Students can post their availability on a weekly calendar view once a preset restriction wait period had passed after the student’s last instructor-led session. The calendar view can be accessed from Moodle's left navigation panel under the 'My availability' link. The navigation panel can be displayed by clicking the 'hamburger' icon to toggle the navigation drawer.

Posting

To post availability simply click and drag on any set of contiguous time slot in the active area of the displayed week. This will result in the selected time slots turning green as shown in the diagram below. To deselect the selected slot, simply click and drag again, and the selected time slots will turn back to a white background. Once all desired time slots are selected, click the [Save] button to record marked availability posts.

Copy/Paste

Students can copy previously saved postings of a week and paste them into a different week by navigating to the week containing the desired slots, clicking on the [Copy] button, navigating to a different week (previous or next), then clicking the [Paste] button. After pasting, make sure to click the [Save] button prior to navigating away from the current week or to a different page.

Clear

To delete all postings of a specific week, simply click on the [Clear] button, which will clear all posted availability time slots. Don't forget to [Save] before navigating away from the current week or to a different page.

All students view

The link at the bottom of the page [View everyone's availability] allows students to view all posted availability for everyone in the course for that week. Also, this gives an indication of the number of booked sessions during that week.

Availability posting
Availability posting

Note: postings are only visible to instructors when the current lesson and all past lessons have been completed.

Note: The local time can be set in the User Profile page under timezone to reflect the correct student timezone.

Pilot logbook

Upon completion of an instructor-led session, the instructor adds the flight time duration, session duration, and potentially solo flight time duration when applicable. Students can access their logbook from the left navigation panel under the 'My logbook' link. The view provides a summary of the total flight times, session times, and solo flight times. For each session a more detailed log data is displayed including flight date, flight durations, aircraft type, pilot callsign, the primary and secondary pilot in command, PIREP number, and finally departure and arrival airport ICAO code.

Student course logbook
Student course logbook
Student EASA logbook
Student EASA logbook

Booking sessions

Instructors can book against student posted availability from the left navigation menu under the 'Session booking' link. The view lists all active students, their session priority, booking & grading actions, and course progression for each student. Completed and graded sessions are marked in blue, tentatively booked sessions prior to student confirmation are marked in orange, and confirmed bookings are marked in green.

Booking a session

Grading and feedback

Instructor dashboard

At the bottom of the 'Session booking' page, the instructor can see two sections that lists the instructors active bookings under 'My active bookings', and assigned students under 'My assigned students'. The instructor can cancel any active booking by clicking on the [Cancel] button next to the active booking, which will in turn prompt the instructor to provide a comment to the student regarding the cancellation.

Course managers can find an added section at the bottom that lists instructors' participation in the course, which notes the instructor role(s), last instructor-led session with a student, and the days since last conducted session.

Session Booking
Session Booking


Inactive [Book] button indicates that the student has not completed pending lessons for the upcoming exercise (assignment). Once the student completes current and all past lessons, the [Book] button will turn active with a green background.

Logbook entry

Instructors should add a new log book entry after each graded session to be reflected in the student's logbook. Log book entries can be added by clicking on the info icon after it is graded. Existing log book entries can be edited or deleted when clicking on an existing graded session as shown below:

Relevant information

Instructor dashboard
Instructor dashboard

Calendars integration

Session calendar integration with Moodle, Google, and Outlook Live calendars, including (ics) standard iCal calendar file download.

Privacy Policy for BAVirtual Session Booking

Google calendar

Requires OAuth verification by Google.

Outlook Live calendar

Requires OAuth verification by Microsoft.

iCal calendar

Skillset evaluation & graduation

The plugin checks for the course assignment as the completion task, for example: final skills test or check-ride exercise. This course field allows for sending a congratulatory message to be sent to notify course participants of a student's course completion. Under course settings Session Booking category, the congratulatory message can be customized or left blank to disable this feature. Message text can use the fields below for customization:

{fullname}: graduating student full name.

{firstname}: graduating student first name.

{examinername}: examiner name

{completiondate}: course completion date.

{enroldate}: student's course enrolment date.

{simulator}: simulator used for the skill test / check ride.

{totallessons}: total lessons completed by the student.

{totalsessions}: total instructor-led sessions attended by the student.

{totalsessionhrs}: total session courses completed by the student.

{totalflighthrs}: total flight hours completed by the student.

{totaldualhrs}: total dual training hours completed by the student.

{totalsolohrs}: total solo hours completed by the student.

{totalmultihrs}: total multi-crew hours completed by the student.

{totalcopilothrs}: total copilot hours completed by the student.

{totalpicustime}: total PICUS hours completed by the student.

External data source integration

The plugin provides the ability to read data from external databases. This includes pilot report (PIREPs) lookup, aircraft, fleet, and engine-type data lookups. This integration is driven by a JSON configuration field in the plugin settings under Integrations section. Each integration data point is toggled by the "enabled" property (0/1) and requires the following format:

external data config.png

The following is format for the different data point. Properties (purple) represent internal mapping field names, and the values (orange) represent the external data points:

PIREPS DATA POINT
PIREPS DATA POINT
PILOTS DATA POINT
PILOTS DATA POINT


AIRCRAFT DATA POINT
AIRCRAFT DATA POINT
PILOT STATS DATA POINT
PILOT STATS DATA POINT

Optional user profile fields

The following optional custom user profile fields can be added to the Moodle user profile from Site administration > Users > User profile fields. Information from these fields is used in reports, log book entries, and the Instructor dashboard page:

  • VATSIM CID (shortname=vatsimcid, type='text'): VATSIM ID or CID for the course participant.
  • Fleet (shortname=fleet, type='text'): fleet to which the course participant belongs to.
  • Primary Simulator (shortname=simulator, type='menu): the course participant primary simulator (menu options could be MSFS, XP12, P3D...etc.)
  • Secondary Simulator (shortname=simulator2, type='menu'): the course participant secondary simulator (menu options could be MSFS, XP12, P3D...etc.)
  • Callsign (shortname=callsign, type='text'): the course participant callsign.

FAQ

How to override restriction for students during the posting wait period?

in the Session Booking interim page after clicking the Book button, click the 'Override' button with the label 'Restriction wait period'. After doing so the student can post availability period to the wait period.

How to override on-hold restriction to keep the student active?

This restriction can be overwritten by removing the 'OnHold' group from the student Participants list and adding the 'Keep Active' instead, to keep the student active after on-hold restriction period had passed.

How to stop graduated students from showing in the Session Booking page?

Add the graduating student to the 'Graduates' group to from the Participants list.

How to stop inactive instructors from showing in the Instructor Participation list in the Session Booking page?

Add the inactive instructor to the 'Inactive Instructors' group from the Participants list.

How to report a bug

Please, use the plugin's github repository issue tracking. Stamp collection if one of the components in "Non-core contributed modules" project. See the list of tracked issues at https://github.com/bavirtual/session-booking/issues.

Feature ideas and requests

Note: This section will be moved to the tracker feature requests.