Bug #398
closedSCORM Scenari courses do not set status to completed
Description
An interesting point reported by a test of Chamilo 1.8.4 + a Scenari course, is that the SCORM 1.2 runtime environment documentation says that "Upon reiving the LMSFinish() call or the user navigates away, the LMS sould set the cmi.core.lesson_status for the SCO to "completed"" (see page 26 of SCORM 1.2 RTE attached).
The important part here is "or the user navigates away".
This means that, even if there is no LMSCommit() or LMSFinish() call, we should se the status to "completed" when the "onunload" event is happening (and we should check the mastery_score at this point, as the rest of the documentation says).
"
LMS Behavior:
Initialization: If it is the student's first attempt at the SCO the lesson_status is set to not attempted. The LMS is responsible for setting the initial value to "not attempted".
Additional Behavior Requirements: If a SCO sets the cmi.core.lesson_status then there is no problem. However, the SCORM does not force the SCO to set the cmi.core.lesson_status. There is some additional requirements that must be adhered to successfully handle these cases:
Upon initial launch the LMS should set the cmi.core.lesson_status to “not attempted”.
Upon receiving the LMSFinish() call or the user navigates away, the LMS should set the cmi.core.lesson_status for the SCO to “completed”.
After setting the cmi.core.lesson_status to “completed”, the LMS should now check to see if a Mastery Score has been specified in the cmi.student_data.mastery_score, if supported, or the manifest that the SCO is a member of. If a Mastery Score is provided and the SCO did set the cmi.core.score.raw, the LMS shall compare the cmi.core.score.raw to the Mastery Score and set the cmi.core.lesson_status to either “passed” or “failed”. If no Mastery Score is provided, the LMS will leave the cmi.core.lesson_status as “completed”
"
This has been tried on the latest version of SCORM import in Chamilo 1.8.6 SVN today, and it doesn't work. Because we want SCORM 1.2 support to be perfect for 1.8.6, this is given a HIGH priority and Severity.
Once fixed, it should be reported in http://scenari-platform.org/forum/viewtopic.php?t=1166&highlight=dokeos
and possibly here http://scenari-platform.org/forum/viewtopic.php?t=1231
Full report available here: http://scenari-platform.org/trac/opale/wiki/SCORMDokeos
Note: this report, originally for Dokeos, was updated to Chamilo in different discussions with a high concurrency of French contributions: http://lite.framapad.org/p/Chamilo-Opale
Files
Updated by Carlos Vargas over 13 years ago
Actualizado por Julio Montoya hace 6 meses
Comment
Check function savedata(origin) in scorm.api.php line 742 there are some commented text that may resolve this problem
#2
Actualizado por Yannick Warnier hace 6 meses
Comment
OK, I'm a bit further in this implementation. It all looks good, except that Maritime Navigation is generating a problem. If I go from one slide to another without using the OK button before I exit the first one, the first one is marked as "completed" (as should apparently be expected from the LMS) but the second one says "you have not completed the prerequisites". Which is kind of frustrating. The question is now: where does he get the prerequisite status from? Obviously it gets it from the LMS (database or object?), but this one doesn't show the previous element as completed. Or better said, not yet.
Yep, that's correct, because reloading the second element actually fixes it...
#3
Actualizado por Yannick Warnier hace 6 meses
Comment
OK, this introduced a new problem, which was the over-completion of items. In fact, only items which have been closed, and for which we are sure that even the onunload event did not update the status, should be updated to "completed" in certain cases. Reverted in SVN#21158
#4
Actualizado por Yannick Warnier hace 6 meses
Comment
I'm giving up. This was an unplanned improvement anyway, I'm putting this for 1.8.6.1. There's a bunch of new code available in scorm_api and in a new file called lp_ajax_last_update_status. See SVN#21162
#5
Actualizado por Yannick Warnier hace alrededor de 1 mes
- Fecha fin changed from 2009-06-16 to 2009-11-10
- Estado changed from New to Assigned
- Versión prevista changed from 1.8.6 SVN to 1.8.6.2
- Tiempo estimado set to 10.00
- Severity changed from Critical to Low
- Complexity set to Average
Updated by Yannick Warnier about 13 years ago
- Target version changed from 1.8.6.2 alpha to 1.8.6.2 beta
Updated by Yannick Warnier about 13 years ago
- Assignee changed from Yannick Warnier to Julio Montoya
Updated by Yannick Warnier about 13 years ago
- Status changed from New to Assigned
- Assignee changed from Julio Montoya to Yannick Warnier
- Target version changed from 1.8.6.2 beta to 1.8.6.2 RC1
- SCRUM pts - complexity changed from ? to 3
Updated by Yannick Warnier about 13 years ago
- Target version changed from 1.8.6.2 RC1 to 11
Updated by Yannick Warnier about 13 years ago
- Target version changed from 11 to 1.8.7
Updated by Yannick Warnier almost 13 years ago
- Assignee changed from Yannick Warnier to Julio Montoya
Updated by Yannick Warnier almost 13 years ago
- Target version changed from 1.8.7 to 1.8.7.1
Updated by Yannick Warnier over 12 years ago
- Target version changed from 1.8.7.1 to 1.8.8 stable
Updated by Yannick Warnier almost 12 years ago
- Target version changed from 1.8.8 stable to 1.9 Stable
Sorry, postponing this once again. It would help to have an actual customer using scenarii courses...
Updated by Yannick Warnier almost 11 years ago
- Target version changed from 1.9 Stable to 1.9.2
Updated by Yannick Warnier over 10 years ago
- Target version changed from 1.9.2 to 1.9.4
Updated by Julio Montoya over 10 years ago
- Status changed from Assigned to Needs more info
- Target version changed from 1.9.4 to 2.0
Not sure if those issues are still present in 1.9.2. Moving to 1.10 otherwise this task could be rejected
Updated by Yannick Warnier about 9 years ago
- Description updated (diff)
- Category set to Learning paths / Lecciones
- Status changed from Needs more info to Assigned
- Assignee set to Yannick Warnier
- Target version changed from 2.0 to 1.9.8
Updated by Yannick Warnier almost 9 years ago
- File SCORM_1.2_RunTimeEnv.doc SCORM_1.2_RunTimeEnv.doc added
Updated by Yannick Warnier almost 9 years ago
- % Done changed from 20 to 30
- in scorm_api.php (the SCORM.js of Chamilo, really)
When something is done to change item call switch_item(current, next) { if (current != sco) { // in this case, the 2 following conditions do exactly the same if (next != sco) { save_item() switch_item_details() } else { // next == sco but current != sco save_item() switch_item() } } else { //(current == sco) // in this case, the 2 following conditions do exactly the same if (next != sco) { save_item_scorm() reinit_updatable_vars_list() switch_item_tow() } else { save_item_scorm() reinit_updatable_vars_list() switch_item_tow() } } swap current and next in olms array load the content in the frame or HTML block if item is not sco, start timer refresh audio player
This, in turn, means that we need to check either one of:
- xajax_save_item_scorm()
- reinit_updatable_vars_list() // shouldn't be
- xajax_switch_item_toc()
Considering the effect is mostly on what is stored in the database, and that it will affect the toc as a consequence, the issue should, really, be in xajax_save_item_scorm().
xajax_save_item_scorm(), itself, only re-orders a few params, then calls lp_ajax_save_item.php.
In the latter, we have the following section:
if (isset($score) && $score != -1) { $lp_item->set_score($score); } else { if (isset($status) && $status != '' && $status != 'undefined') { $lp_item->set_status($status); } }
Updated by Yannick Warnier almost 9 years ago
- % Done changed from 30 to 50
I updated the code considerably and it still works with Maritime Navigation, which is definitely good news :-)
Checking a few things and looking for a demo Opale content to test.
Updated by Yannick Warnier almost 9 years ago
I have these changed on a local branch "398" on my laptop. It's definitely not doing what is expected by the multi-sco Opale content attached.
Updated by Yannick Warnier almost 9 years ago
This will have to move to 1.10 if we cannot fix it before Thursday 24/04
Updated by Yannick Warnier almost 9 years ago
OK, I'm changing this to v10 for now, but I'm still hoping I will be able to get it ready before the stable 1.9.8. If so and it doesn't break the rest, I will include it. Otherwise, I can at least make a patch for those using Scenari
Updated by Yannick Warnier almost 9 years ago
- Target version changed from 1.9.8 to 2.0
Updated by Alexander Hu over 8 years ago
- File articulate.scorm.1.2.zip articulate.scorm.1.2.zip added
Also wondering what was changing in Chamilo 1.9.x
Before, SCORM 1.2 courses were tracking at least pass/fail;
now they can't finish.
Attached you find another one for testing.
Updated by Stéphane Poinsart over 8 years ago
Hello,
I wanted to let you know that in the next version of Scenari / Opale, we will explicitly set the completed status instead of requiring the LMS to make the assumption. It will work around this problem and it's a more robust approach for us anyway. You might want to still get the fix for SCORM conformance reasons but it will not be a compatibility issue for contents produced with SCENARI in future versions.
Regards,
Updated by Yannick Warnier over 8 years ago
- Target version changed from 2.0 to 1.9.10
Updated by Julio Montoya over 8 years ago
Yannick Warnier wrote:
I have these changed on a local branch "398" on my laptop. It's definitely not doing what is expected by the multi-sco Opale content attached.
This code should be added due this task:
Updated by Yannick Warnier over 8 years ago
See last commits here: https://github.com/ywarnier/chamilo-lms/commits/398
Updated by Yannick Warnier over 8 years ago
- Assignee changed from Yannick Warnier to Alex Aragon
- in the new css, there is not icon for "failed" status
- there is no style in main/css/chamilo/scorm.css (line 387) for scorm_failed
- the scorm_not_attempted style has to be replicated to other css/*/scorm.css
Assigning to Alex temporarily for the design stuff
Updated by Yannick Warnier over 8 years ago
Stéphane, les tests que j'ai fait jusqu'à présent semblent fonctionner assez bien: les étapes se marquent comme "complètes" au moment de sortir de la page si le SCO n'a pas envoyé de LMSSetValue('cmi.core.lesson_status').
Cependant, je suis assez surpris du fait que les exercices (auto-évaluation) de l'exemple ne semblent pas gérer très bien les résultats. En particulier, les exercices ne renvoient jamais de lesson_status, qu'on réussisse, qu'on rate ou qu'on ne réponde rien. Du coup, le statut est toujours mis à "completed" par Chamilo (puisque c'est ce qui est demandé par SCORM). S'ils renvoyaient un résultat, ils devraient renvoyer "passed" au lieu de "completed" (et "failed" au cas où l'on échoue).
Je mets ça en ligne pour tests dans pas longtemps. Je suis juste occupé à revoir tous les commentaires pour être certain qu'il ne me manque rien. On a quelques petits problèmes de design pour l'instant, mais ça n'empêche pas de revoir les parcours importés.
Updated by Alex Aragon over 8 years ago
Updated by Yannick Warnier over 8 years ago
- Assignee changed from Alex Aragon to Yannick Warnier
- % Done changed from 50 to 70
Alex's branch was merged.
There's only one issue left before we can close this task and it is being managed at the moment (by me).
Updated by Alexander Hu over 8 years ago
Hello Yannick,
does this mean, we have SCORM 1.2 support working again? :-)
Updated by Yannick Warnier over 8 years ago
After the one last change I have to put, we should have better SCORM 1.2 support than we ever had. If you have specific content you want to test, prepare it for tomorrow, you'll be able to try it on stable.chamilo.org
Updated by Alexander Hu over 8 years ago
- File tracking.jpg tracking.jpg added
Well, uploaded a simple SCO, seems there is something broken...?
Updated by Alexander Hu over 8 years ago
I've attached a simple SCO to set the value to a given one you can define.
(open up, enter a value; usually it should be able to set the value for the tracking...)
Updated by Julio Montoya over 8 years ago
Alexander Hu wrote:
Well, uploaded a simple SCO, seems there is something broken...?
I added a minor fix:
https://github.com/chamilo/chamilo-lms/commit/56bdbf4630080cc9468e16616c98de7a54db098d
Updated by Alexander Hu over 8 years ago
stable.chamilo.org - Aula de chamilo
- How to Import a Course into the SCORM Cloud.
Joined that course as normal user.
SCORM driver from official site...
Opens up, throws an error, and even the debug window which should pop up with informations seems to be white only (source shows nothing interresting :-( )
Attached is the SCORM module from Rustici.
- SCORM 1.2 wrapper test
works pretty smooth :-)
- Captivate E-Learning Course
well, at least it starts :-D
No, seriously i am really disappointed about that.
Will create a new course with the newest Captivate8.
- Captivate E-Learning-Kurs
done with Captivate 8, quick-and-dirty, HTML5.
As you can see, nag screen with Firefox...
And as expected, the scorm module succeeds but won't pass the informations back to Chamilo :-/
And we still have the error in the reporting section...?
Updated by Yannick Warnier over 8 years ago
Alex, the "SCORM Cloud" content you have uploaded is SCORM 2004 (or 1.3). Chamilo doesn't support SCORM 1.3 (or 2004).
I know it because it tries to get the 'cmi.success_status', which is NOT a SCORM 1.2 variable (and it fails to do so, which is logical).
Also, the debug window clearly indicates SCORM2004 stuff.
The bmc one doesn't generate any error (anymore?).
I'm closing this task. Thanks for your help testing.
Updated by Yannick Warnier over 8 years ago
- Status changed from Assigned to Bug resolved
- % Done changed from 70 to 100
Updated by Yannick Warnier over 8 years ago
- Status changed from Bug resolved to Assigned
I'm reopening this one for a moment as we found a few remaining issues with Captivate content
Updated by Alexander Hu over 8 years ago
Hello Yannick,
Alex, the "SCORM Cloud" content you have uploaded is SCORM 2004 (or 1.3). Chamilo doesn't support SCORM 1.3 (or 2004).
I know it because it tries to get the 'cmi.success_status', which is NOT a SCORM 1.2 variable (and it fails to do so, which is logical).
Well, the guys from SCORM offer this course as SCORM 1.2 :-)
Any clues when the release of 1.9.10 will happen?
Updated by Yannick Warnier over 8 years ago
- % Done changed from 100 to 80
Just to give the heads up: this task is currently blocking the release of 1.9.10. It is very complicated and requires a lot of concentration, which is difficult to find these days. As soon as it's out of the loop, 1.9.10 will be just a few hours away, but this here is veeeeery long to test.
Updated by Yannick Warnier about 8 years ago
- Status changed from Assigned to Bug resolved
- % Done changed from 80 to 100
Apparently fixed, if additional fixes are needed they will be sent in next version.