Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
112 commits
Select commit Hold shift + click to select a range
483cfc2
feat: complete calendar workflow package
aro-ssystems May 7, 2026
8ff0714
feat: add booking lifecycle history and audit flow
aro-ssystems May 11, 2026
b925cc9
test: stabilize bookit ci validation
aro-ssystems May 11, 2026
1e2f9ee
feat: finalize calendar third pass implementation
aro-ssystems May 18, 2026
9959507
fix: close remaining calendar gaps
aro-ssystems May 18, 2026
f69b0ac
fix: clear ci quality gate failures
aro-ssystems May 19, 2026
b6401d2
feat: implement calendar-only install baseline
aro-ssystems May 19, 2026
94871a1
fix: use sql_compare_text for default baseline lookups
aro-ssystems May 19, 2026
78e7134
ui: simplify general settings install section
aro-ssystems May 19, 2026
e398bd1
feat: refine booking status notification settings
aro-ssystems May 19, 2026
d7c769e
feat: align open requests tabs and close browser gaps
aro-ssystems May 19, 2026
bc3258c
fix: move open requests into activity navigation
aro-ssystems May 20, 2026
e511962
feat: align booking status notifications
aro-ssystems May 20, 2026
c8f302c
feat: finalize request trash and admin settings
aro-ssystems May 20, 2026
95920de
feat: introduce governed read webservices
aro-ssystems May 20, 2026
c147b1e
refactor: remove unreleased legacy install paths
aro-ssystems May 21, 2026
d888183
fix: restore upgrade.php to main baseline
aro-ssystems May 21, 2026
03d9c58
refactor: remove legacy read adapters and stabilize fresh install
aro-ssystems May 21, 2026
f0a574a
test: stabilize behat suite and green local ci
aro-ssystems May 22, 2026
ced22db
fix: tighten participant event editing
aro-ssystems May 26, 2026
9fc1944
fix: close manual QA gaps for overview, export and role UX
aro-ssystems May 27, 2026
f50c8d6
fix: prevent admin reserved projection in calendar feed
aro-ssystems May 27, 2026
fa0ec9b
fix: implement spec 022 overview request fixes
aro-ssystems May 28, 2026
7efcbf2
refactor: use core tabs for overview navigation
aro-ssystems May 28, 2026
f1856fc
fix: preserve historical status updates without slot refresh
aro-ssystems May 28, 2026
8a91d63
test: align overview expectations and phpcs cleanup
aro-ssystems May 29, 2026
6fd5ef6
style: fix remaining foreach phpcs formatting
aro-ssystems May 29, 2026
af1af3a
fix: shorten long lines in settings.php for PHPCS compliance
aro-ssystems Jun 2, 2026
640c36f
Revert "fix: shorten long lines in settings.php for PHPCS compliance"
aro-ssystems Jun 4, 2026
4aee7c1
ci: remove !important from css
aro-ssystems Jun 4, 2026
e3b63e6
feat: show icon for role downloads
aro-ssystems Jun 4, 2026
0afbbf5
fix: revert out-of-scope changes
aro-ssystems Jun 4, 2026
0c6b54f
fix: show open request count in nav
aro-ssystems Jun 4, 2026
a95d0fa
fix: remove out of scope phpunit test
aro-ssystems Jun 4, 2026
052ca71
ci: fix db error
aro-ssystems Jun 4, 2026
a52f119
fix: enforce configured examiner pool in booking form
aro-ssystems Jun 15, 2026
fcde984
fix: show readable examiner names in booking form
aro-ssystems Jun 15, 2026
a3ec300
fix: preserve booking person visibility after status transition
aro-ssystems Jun 15, 2026
d62ee63
fix: hide canceled events from service-team calendar
aro-ssystems Jun 15, 2026
4bee9b2
feat: add accepted bookings workspace for service team
aro-ssystems Jun 15, 2026
5f8f37f
fix: show in-progress bookings to support on site (FEED-013)
aro-ssystems Jun 15, 2026
59b4bab
feat: preselect current semester in new booking form (FEED-001)
aro-ssystems Jun 15, 2026
51659aa
ui: strengthen calendar booking status visual separation (FEED-008)
aro-ssystems Jun 15, 2026
dec28ed
feat: add overview cancel action for booking persons (FEED-009)
aro-ssystems Jun 15, 2026
b12a307
ui: move overview datetime column first with time display (FEED-010)
aro-ssystems Jun 15, 2026
67683a6
ui: calendar status via 6–7px borders, room colour as fill (FEED-008)
aro-ssystems Jun 15, 2026
46d5a15
fix: overview column alignment and history modal booking status
aro-ssystems Jun 16, 2026
4d445a1
fix: Behat past-date flows and service-team modal submit
aro-ssystems Jun 16, 2026
37ab2ec
fix: preserve booking person usermodified on foreign save (WP-8)
aro-ssystems Jun 25, 2026
1698a92
fix: save without cancel must not set canceled status (FEED2-004)
aro-ssystems Jun 25, 2026
d5413c6
fix: support on site calendar and overview visibility (FEED2-009, FEE…
aro-ssystems Jun 25, 2026
d80ed99
feat: booker calendar, history, cancel modal and reactivate (FEED2-00…
aro-ssystems Jun 25, 2026
e6a48ff
feat: service team reporting, terminal tab restore and created-by col…
aro-ssystems Jun 25, 2026
776a857
feat: move overview live-search below tabs and section heading (FEED2…
aro-ssystems Jun 25, 2026
ea7ab3f
feat: field-specific validation for master checklist item form (FEED2…
aro-ssystems Jun 25, 2026
ede76e5
feat: central status wording and playwright retest gap fixes
aro-ssystems Jun 26, 2026
d9b36f8
fix: restore plugin CI green without reverting FEED2 behaviour
aro-ssystems Jun 26, 2026
404c5a7
fix: keep service-team starttime visible when weekplan slots missing
aro-ssystems Jun 26, 2026
5930a45
fix: Overview Cancel-Dialog dismiss und usermodified-Anzeige
aro-ssystems Jun 26, 2026
b95aae7
feat: Moodle-standard modal footer for event details (Spec 048)
aro-ssystems Jun 26, 2026
523f0d0
feat: unified status multiselect and overview reactivate actions
aro-ssystems Jun 29, 2026
307068b
feat: persist event resources on save/reopen and restore checkbox def…
aro-ssystems Jun 29, 2026
738ecc1
feat: show overview checklist/resources buttons for New bookings
aro-ssystems Jun 29, 2026
6e8d5bb
feat: unify event resources status cell with overview booking_status_…
aro-ssystems Jun 29, 2026
1f4cecd
feat: tab-aware history status filter defaults on overview
aro-ssystems Jun 29, 2026
bec23c0
fix: stabilize behat after history defaults and external read contracts
aro-ssystems Jun 29, 2026
a8173f6
feat: remove redundant overview help and queue count copy
aro-ssystems Jun 29, 2026
b97acc3
feat: align code and UI with confirmed status map (Spec 058)
aro-ssystems Jun 29, 2026
d76a52c
fix: add horizontal spacing between overview filter buttons
aro-ssystems Jun 29, 2026
4894fa1
fix: remove duplicate event count badge below overview table
aro-ssystems Jun 29, 2026
a5cb9e4
fix: correct phpdoc for inject_editing_event_starttime
aro-ssystems Jun 29, 2026
1d5fafb
feat: bridge multi-select client validation to visible select
aro-ssystems Jun 29, 2026
d9528bc
fix: blocker deletion
aro-ssystems Jun 30, 2026
f9369e9
test: skip hooks
aro-ssystems Jul 9, 2026
093bbe2
test: warn mode container stopped
aro-ssystems Jul 9, 2026
a91ce34
test: warn mode stopped container
aro-ssystems Jul 9, 2026
9868999
test: warn with stopped running check
aro-ssystems Jul 9, 2026
edb1054
test: warn mode container stopped
aro-ssystems Jul 9, 2026
112ab0d
fix: show Canceled/Rejected on All bookings when explicitly filtered
aro-ssystems Jul 15, 2026
9a598e4
fix: let service team see rejected events in overview list
aro-ssystems Jul 15, 2026
b00ecf7
fix: show participant Rejected rows on My booked events overview
aro-ssystems Jul 15, 2026
224ce35
fix: support-on-site read-only status and resource fields
aro-ssystems Jul 15, 2026
4226417
fix: show internal fields section for assigned support on site
aro-ssystems Jul 15, 2026
24169c1
fix: service-team History tab defaults to year start through today
aro-ssystems Jul 15, 2026
fcc4af2
feat: request workspace navigation, filters, table, and sort preference
aro-ssystems Jul 15, 2026
e444324
feat: support read-only request workspace access (Spec 072)
aro-ssystems Jul 16, 2026
32011ce
feat: rename module display name to Calendar / Kalender (Spec 073)
aro-ssystems Jul 16, 2026
9b1db8a
fix: use Request workspace label in German lang file
aro-ssystems Jul 16, 2026
cd7bea4
test: align FB3 PHPUnit/Behat suites and fix CI style gates
aro-ssystems Jul 16, 2026
4a626b8
fix: canonical workspace tab slugs without legacy aliases
aro-ssystems Jul 17, 2026
a15b5db
feat: unify request workspace pagination and SQL-bounded reads (Specs…
aro-ssystems Jul 20, 2026
b853cb4
fix: sanitize request workspace workflow history by viewer permission…
aro-ssystems Jul 20, 2026
548a9f4
fix: request workspace API contract for tab defaults, AJAX refresh, a…
aro-ssystems Jul 20, 2026
82612b4
fix: use localized overview column labels in Mustache templates (Spec…
aro-ssystems Jul 20, 2026
1ba52b6
feat: use Moodle Core sql_table sorting for request workspace (Spec 083)
aro-ssystems Jul 20, 2026
de5cd61
refactor: remove legacy settings mutation and dead workspace APIs (Sp…
aro-ssystems Jul 21, 2026
9ce6494
fix: default Request Workspace History to all booking statuses (Spec …
aro-ssystems Jul 21, 2026
d96e85d
feat: use usercreated as booking person identity (Spec 086)
aro-ssystems Jul 22, 2026
d834cc6
Merge branch 'fix/fb3-request-workspace' into main_copy_2
aro-ssystems Jul 22, 2026
7a6c5a0
fix: restore CI green for PHPDoc, lang keys, notify fixtures, and Behat
aro-ssystems Jul 22, 2026
d6deab5
fix: use Moodle-compatible PHPDoc types in ics_exporter
aro-ssystems Jul 22, 2026
5245da0
fix: allow Support to edit support persons and internal notes
aro-ssystems Jul 27, 2026
0b58c01
test: align Behat Support scenario with persons+notes edit matrix
aro-ssystems Jul 27, 2026
409d3cb
test: teach Behat modal control asserts about autocomplete widgets
aro-ssystems Jul 27, 2026
d68f5b4
fix: broaden Assigned-to-me and restore queue reporting filters
aro-ssystems Jul 27, 2026
4cf6922
test: keep Assigned-to-me fixtures free of admin creator
aro-ssystems Jul 28, 2026
ecf0897
refactor: remove dead queue reporting-ignore helper
aro-ssystems Jul 28, 2026
8e17dfe
feat: Assignment filter on all Request Workspace tabs and My booked e…
aro-ssystems Jul 28, 2026
95ccb81
feat: Booking status filter on Rejected and cancelled tab
aro-ssystems Jul 28, 2026
00afad8
style: fix foreach bracket spacing for Moodle phpcs
aro-ssystems Jul 28, 2026
3a1b4e2
style: avoid multiline foreach open-paren for phpcs
aro-ssystems Jul 28, 2026
15d6426
Merge pull request #41 from aro-ssystems/fix/fb3-followup-support-rw
aro-ssystems Jul 28, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
.DS_Store
Thumbs.db
*.log
*.tmp
*.swp
*.swo
.env*
.idea/
.vscode/
node_modules/
vendor/
*.cache
5 changes: 5 additions & 0 deletions admin/checklist.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
*/

use mod_bookit\form\settings_checklist_form;
use mod_bookit\local\install_helper;
use mod_bookit\local\tabs;

require_once(__DIR__ . '/../../../config.php');
Expand All @@ -41,6 +42,10 @@
$returnurl = new moodle_url('/mod/bookit/admin/checklist.php');

require_capability('mod/bookit:managemasterchecklist', $context); // XXX TODO: use other capability.
if (!install_helper::is_checklist_enabled()) {
$settingsurl = new moodle_url('/admin/settings.php', ['section' => 'modsettingbookit']);
redirect($settingsurl, get_string('optional_part_disabled', 'mod_bookit'), null, \core\output\notification::NOTIFY_WARNING);
}

$mform = new settings_checklist_form();

Expand Down
70 changes: 58 additions & 12 deletions admin/install_helper_run.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,19 +28,65 @@
require_once($CFG->libdir . '/adminlib.php');

require_admin();
require_sesskey();

// Mark installation helper as finished first to avoid session mutation issues.
set_config('installhelperfinished', 1, 'mod_bookit');
/**
* Resolve the combined setup outcome across baseline and role import reports.
*
* @param string[] $statuses
* @return string
*/
function mod_bookit_resolve_install_helper_status(array $statuses): string {
$statuses = array_values(array_unique($statuses));
if (in_array('failed', $statuses, true)) {
return count($statuses) > 1 ? 'partial' : 'failed';
}
if (in_array('partial', $statuses, true)) {
return 'partial';
}
if (in_array('success', $statuses, true)) {
return 'success';
}
return 'idempotent';
}

// Run the installation helper.
$rolesimported = install_helper::import_default_roles(false, false);
$usersimported = install_helper::import_default_users(false, false);
$result = install_helper::create_default_checklists(false, false); // Creates rooms as well.
$resourcesresult = install_helper::create_default_resources(false, false);
$weekplanresult = install_helper::create_default_weekplan(false, false);
$courseresult = install_helper::create_default_course_and_activity(false, false);
$eventsresult = install_helper::create_default_events(false, false);
$rolereport = install_helper::import_default_roles_with_report(false, false);
$baselinereport = install_helper::ensure_fresh_install_baseline(false);
$status = mod_bookit_resolve_install_helper_status([
$rolereport['status'],
$baselinereport['status'],
]);

if (in_array($baselinereport['status'], ['success', 'idempotent'], true)) {
set_config('installhelperfinished', 1, 'mod_bookit');
} else {
set_config('installhelperfinished', 0, 'mod_bookit');
}

$details = array_merge($rolereport['errors'], $baselinereport['errors']);
$baselinecreated = 0;
$baselineverified = 0;
foreach ($baselinereport['operations'] as $operation) {
if (($operation['status'] ?? '') === 'created') {
$baselinecreated++;
} else if (($operation['status'] ?? '') === 'idempotent') {
$baselineverified++;
}
}

// Redirect back to settings.
$returnurl = new moodle_url('/admin/settings.php', ['section' => 'modsettingbookit']);
redirect($returnurl, 'Installation helper completed successfully.');
$params = [
'section' => 'modsettingbookit',
'installhelperstatus' => $status,
'rolesimported' => count($rolereport['imported']),
'rolesskipped' => count($rolereport['skipped']),
'baselinecreated' => $baselinecreated,
'baselineverified' => $baselineverified,
'installhelpererrors' => count($details),
];
if (!empty($details)) {
$params['installhelperdetails'] = implode(' | ', $details);
}

$returnurl = new moodle_url('/admin/settings.php', $params);
redirect($returnurl);
5 changes: 5 additions & 0 deletions admin/master_checklist.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@

use mod_bookit\local\manager\checklist_manager;
use mod_bookit\local\entity\masterchecklist\bookit_checklist_master;
use mod_bookit\local\install_helper;
use mod_bookit\local\tabs;

require_once(__DIR__ . '/../../../config.php');
Expand All @@ -34,6 +35,10 @@

require_login();
require_capability('mod/bookit:managemasterchecklist', $context);
if (!install_helper::is_checklist_enabled()) {
$settingsurl = new moodle_url('/admin/settings.php', ['section' => 'modsettingbookit']);
redirect($settingsurl, get_string('optional_part_disabled', 'mod_bookit'), null, \core\output\notification::NOTIFY_WARNING);
}

$PAGE->set_context($context);
$PAGE->set_url(new moodle_url('/mod/bookit/admin/master_checklist.php'));
Expand Down
5 changes: 5 additions & 0 deletions admin/resources.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
* @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/

use mod_bookit\local\install_helper;
use mod_bookit\local\tabs;

require_once(__DIR__ . '/../../../config.php');
Expand All @@ -32,6 +33,10 @@

require_login();
require_capability('mod/bookit:managebasics', $context);
if (!install_helper::is_resources_enabled()) {
$settingsurl = new moodle_url('/admin/settings.php', ['section' => 'modsettingbookit']);
redirect($settingsurl, get_string('optional_part_disabled', 'mod_bookit'), null, \core\output\notification::NOTIFY_WARNING);
}

$PAGE->set_context($context);
$PAGE->set_url(new moodle_url('/mod/bookit/admin/resources.php', ['id' => 'resources']));
Expand Down
7 changes: 5 additions & 2 deletions admin/view_room.php
Original file line number Diff line number Diff line change
Expand Up @@ -57,12 +57,15 @@
$PAGE->requires->js(new moodle_url('/mod/bookit/thirdpartylibs/event-calendar/event-calendar.min.js'), true);
$PAGE->requires->css(new moodle_url('/mod/bookit/thirdpartylibs/event-calendar/event-calendar.min.css'));
$PAGE->requires->css(new moodle_url('/mod/bookit/thirdpartylibs/event-calendar/custom-calendar.min.css'));
$eventsource = (new moodle_url('/mod/bookit/events_available.php', ['roomid' => $room->get('id')]))->out(false);
$roomreadconfig = [
'methodname' => 'mod_bookit_get_room_availability',
'roomid' => (int)$room->get('id'),
];
$PAGE->requires->js_call_amd(
'mod_bookit/available_calendar',
'init',
[
$eventsource,
$roomreadconfig,
[],
current_language(),
]
Expand Down
2 changes: 1 addition & 1 deletion amd/build/available_calendar.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading