diff --git a/data/migratedPages.yml b/data/migratedPages.yml index 7a357ca06c..c8f36cf530 100644 --- a/data/migratedPages.yml +++ b/data/migratedPages.yml @@ -1719,6 +1719,9 @@ Web_services_API: Web_services_files_handling: - filePath: "/docs/apis/subsystems/external/files.md" slug: "/docs/apis/subsystems/external/files" +Workshop: +- filePath: "/docs/apis/plugintypes/mod_workshop/index.md" + slug: "/docs/apis/plugintypes/mod_workshop/" Writing_acceptance_tests: - filePath: "/general/development/tools/behat/writing.md" slug: "/general/development/tools/behat/writing" diff --git a/docs/apis/plugintypes/index.md b/docs/apis/plugintypes/index.md index 9ac047503a..9d4da7d0be 100644 --- a/docs/apis/plugintypes/index.md +++ b/docs/apis/plugintypes/index.md @@ -66,9 +66,9 @@ The underscore character is not supported in activity modules for legacy reasons | [Quiz reports](https://docs.moodle.org/dev/Quiz_reports) | quiz | /mod/quiz/report | Display and analyse the results of quizzes, or just plug miscellaneous behaviour into the quiz module | 1.1+ | | [Quiz access rules](https://docs.moodle.org/dev/Quiz_access_rules) | quizaccess | /mod/quiz/accessrule | Add conditions to when or where quizzes can be attempted, for example only from some IP addresses, or student must enter a password first | 2.2+ | | [SCORM reports](https://docs.moodle.org/dev/SCORM_reports) | scormreport | /mod/scorm/report | Analysis of SCORM attempts | 2.2+ | -| [Workshop grading strategies](https://docs.moodle.org/dev/Workshop_grading_strategies) | workshopform | /mod/workshop/form | Define the type of the grading form and implement the calculation of the grade for submission in the [Workshop](https://docs.moodle.org/dev/Workshop) module | 2.0+ | -| [Workshop allocation methods](https://docs.moodle.org/dev/Workshop_allocation_methods) | workshopallocation | /mod/workshop/allocation | Define ways how submissions are assigned for assessment in the [Workshop](https://docs.moodle.org/dev/Workshop) module | 2.0+ | -| [Workshop evaluation methods](https://docs.moodle.org/dev/Workshop_evaluation_methods) | workshopeval | /mod/workshop/eval | Implement the calculation of the grade for assessment (grading grade) in the [Workshop](https://docs.moodle.org/dev/Workshop) module | 2.0+ | +| [Workshop grading strategies](https://docs.moodle.org/dev/Workshop_grading_strategies) | workshopform | /mod/workshop/form | Define the type of the grading form and implement the calculation of the grade for submission in the [Workshop](./mod_workshop/index.md) module | 2.0+ | +| [Workshop allocation methods](https://docs.moodle.org/dev/Workshop_allocation_methods) | workshopallocation | /mod/workshop/allocation | Define ways how submissions are assigned for assessment in the [Workshop](./mod_workshop/index.md) module | 2.0+ | +| [Workshop evaluation methods](https://docs.moodle.org/dev/Workshop_evaluation_methods) | workshopeval | /mod/workshop/eval | Implement the calculation of the grade for assessment (grading grade) in the [Workshop](./mod_workshop/index.md) module | 2.0+ | | [Blocks](./blocks/index.md) | block | /blocks | Small information-displays or tools that can be moved around pages | 2.0+ | | [Question types](https://docs.moodle.org/dev/Question_types) | qtype | /question/type | Different types of question (for example multiple-choice, drag-and-drop) that can be used in quizzes and other activities | 1.6+ | | [Question behaviours](https://docs.moodle.org/dev/Question_behaviours) | qbehaviour | /question/behaviour | Control how student interact with questions during an attempt | 2.1+ | diff --git a/docs/apis/plugintypes/mod_workshop/_index/workshop_classes.png b/docs/apis/plugintypes/mod_workshop/_index/workshop_classes.png new file mode 100644 index 0000000000..8a2a445fd5 Binary files /dev/null and b/docs/apis/plugintypes/mod_workshop/_index/workshop_classes.png differ diff --git a/docs/apis/plugintypes/mod_workshop/_index/workshop_erd.png b/docs/apis/plugintypes/mod_workshop/_index/workshop_erd.png new file mode 100644 index 0000000000..795207c090 Binary files /dev/null and b/docs/apis/plugintypes/mod_workshop/_index/workshop_erd.png differ diff --git a/docs/apis/plugintypes/mod_workshop/_index/workshop_grades_calculation.png b/docs/apis/plugintypes/mod_workshop/_index/workshop_grades_calculation.png new file mode 100644 index 0000000000..3c50f92dac Binary files /dev/null and b/docs/apis/plugintypes/mod_workshop/_index/workshop_grades_calculation.png differ diff --git a/docs/apis/plugintypes/mod_workshop/_index/workshop_xml.png b/docs/apis/plugintypes/mod_workshop/_index/workshop_xml.png new file mode 100644 index 0000000000..64fd6eb9a4 Binary files /dev/null and b/docs/apis/plugintypes/mod_workshop/_index/workshop_xml.png differ diff --git a/docs/apis/plugintypes/mod_workshop/index.md b/docs/apis/plugintypes/mod_workshop/index.md new file mode 100644 index 0000000000..c0ecad1265 --- /dev/null +++ b/docs/apis/plugintypes/mod_workshop/index.md @@ -0,0 +1,63 @@ +--- +title: Workshop +tags: [] +--- +:::info +Work in progress +::: + +import { Since } from '@site/src/components'; + + + +This page describes the current implementation of the [Workshop module](https://docs.moodle.org/dev/Workshop_module). See also [Workshop 2.0 specification](https://docs.moodle.org/dev/Workshop_2.0_specification) and [Workshop 2.0 testing](https://docs.moodle.org/dev/Workshop_2.0_testing). + +## Overview of Workshop architecture + +Rewriting Workshop from scratch for Moodle 2.0 was a great opportunity to use new APIs and approaches to activity module development. In some areas, Workshop was a pioneering component adopting new frameworks - like `File API`, HTML rendering or subplugins support. + +Many of Workshop features are implemented as subplugins (see `mod/workshop/db/subplugins.php`). That allows to extend current functionality without hacking Workshop core system. + +### Workshop core + +Workshop core consists of common module functions in `lib.php` (required by Moodle itself) and methods of class workshop defined in `locallib.php`. + +### Grading strategies + +Grading strategies are defined as workshopform subplugins in `mod/workshop/form/` subdirectories. At any given time, just one type of the subplugin is used by workshop. But the data are kept so teachers can switch strategies as they need. + +### Allocators + +Allocation subplugins are used to allocate submissions to the students for peer-review. They are defined as workshopallocation subplugins in `mod/workshop/allocation/` subdirectories. Teacher can use any installed allocator to distribute submission. Allocators are responsible for creating records in `workshop_assessment` table. + +### Grading evaluators + +Grading evaluators calculate grades for assessments (aka grading grades). They are defined workshopeval subplugins in `mod/workshop/eval/` subdirectories. + +## Diagrams and schemas + +### Database structure + +[400px](https://docs.moodle.org/Image/workshop_erd.png) +
+ +### XML structure + +For the purpose of backup/moodle2, the following XML schema is used. +[400px](https://docs.moodle.org/Image/workshop_xml.png) +
+ +### Classes + +The following UML diagram explains the structure of classes defined in workshop subplugins. +[400px](https://docs.moodle.org/Image/workshop_classes.png) +
+ +### Gradebook integration + +[400px](https://docs.moodle.org/Image/workshop_grades_calculation.png) +
+ +## Debugging and testing + +- [Workshop/fakesubmissions.php](https://docs.moodle.org/dev/Workshop/fakesubmissions.php)