Skip to content

Commit

Permalink
Each user interaction and answer is saved and calculated automaticall…
Browse files Browse the repository at this point in the history
…y for the final grade
  • Loading branch information
Nadav Kavalerchik committed Oct 17, 2019
1 parent d69bbf4 commit dcfe15c
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 3 deletions.
4 changes: 3 additions & 1 deletion lang/en/hvp.php
Expand Up @@ -456,4 +456,6 @@
$string['editordirsupport'] = 'Content editing directionality support';
$string['editordirsupport_help'] = 'Use authoring user preferred Moodle language for content editing UI directionality.';
$string['contentlang'] = 'Use content directionality';
$string['contentlang_help'] = 'When checked, viewing user content directionality is based on content language, otherwise based on Moodle user calculated (system/course/user) language preferences.';
$string['contentlang_help'] = 'When checked, viewing user content directionality is based on content language, otherwise based on Moodle user calculated (system/course/user) language preferences.';
$string['saveeachinteraction'] = 'Save each answer';
$string['saveeachinteraction_help'] = 'When checked, each user interaction and answer is saved and calculated for the final grade.';
14 changes: 14 additions & 0 deletions library/js/h5p-x-api.js
Expand Up @@ -117,3 +117,17 @@ H5P.xAPICompletedListener = function (event) {
H5P.setFinished(contentId, score, maxScore);
}
};

// Save total user score for each 'answered' interaction.
H5P.externalDispatcher.on('xAPI', function (event) {
if (event.getVerb() === 'answered') {
var total_score = this.parent.getUsersScore();
var total_maxScore = this.parent.getUsersMaxScore();
var contentId = event.getVerifiedStatementValue(['object', 'definition', 'extensions', 'http://h5p.org/x-api/h5p-local-content-id']);
if (H5P.opened[contentId] === undefined) {
H5P.opened[contentId] = new Date();
}
H5P.setFinished(contentId, total_score, total_maxScore);

}
});
4 changes: 3 additions & 1 deletion locallib.php
Expand Up @@ -56,6 +56,7 @@ function hvp_get_core_settings($context) {
}
}
$contentlang = get_config('mod_hvp','contentlang');
$saveeachinteraction = get_config('mod_hvp','saveeachinteraction');

$core = \mod_hvp\framework::instance('core');

Expand All @@ -80,7 +81,8 @@ function hvp_get_core_settings($context) {
'libraryConfig' => $core->h5pF->getLibraryConfig(),
'pluginCacheBuster' => hvp_get_cache_buster(),
'libraryUrl' => $basepath . 'mod/hvp/library/js',
'contentlang' => $contentlang
'contentlang' => $contentlang,
'saveeachinteraction' => $saveeachinteraction
);

return $settings;
Expand Down
5 changes: 5 additions & 0 deletions settings.php
Expand Up @@ -66,6 +66,11 @@
1)
);

// Should we save and grade each interaction inside an Interactive Video or a Presentation?
// when xAPI verb = answered
$settings->add(new admin_setting_configcheckbox('mod_hvp/saveeachinteraction',
get_string('saveeachinteraction', 'hvp'), get_string('saveeachinteraction_help', 'hvp'), 1));

$choices = array(
H5PDisplayOptionBehaviour::NEVER_SHOW => get_string('displayoptiondownloadnever', 'hvp'),
H5PDisplayOptionBehaviour::ALWAYS_SHOW => get_string('displayoptiondownloadalways', 'hvp'),
Expand Down
3 changes: 2 additions & 1 deletion xapi-collector.js
Expand Up @@ -164,7 +164,8 @@
statement.context.contextActivities.parent[0].id;

// Store only completed root events.
if (isCompleted && !isChild) {
// Save every "answered" interaction (nadavkav)
if ((isCompleted && !isChild) || (isCompleted && H5PIntegration.saveeachinteraction)) {
// Get xAPI data with children if possible.
storeXAPIData(this.contentId, event);
}
Expand Down

0 comments on commit dcfe15c

Please sign in to comment.