📄 scorm_13.js.php
字号:
return "unknown"; } else { return "false"; } } } else { errorCode = "401"; } } } } else { errorCode = "301"; } } else { if (Terminated) { errorCode = "123"; } else { errorCode = "122"; } } <?php if (debugging('',DEBUG_DEVELOPER)) {// echo 'alert("GetValue("+element+") -> "+GetErrorString(errorCode));'; echo 'LogAPICall("GetValue", element, "", errorCode);'; } ?> return ""; } function SetValue (element,value) { errorCode = "0"; diagnostic = ""; if ((Initialized) && (!Terminated)) { if (element != "") { var expression = new RegExp(CMIIndex,'g'); var elementmodel = String(element).replace(expression,'.n.'); if ((typeof eval('datamodel["'+elementmodel+'"]')) != "undefined") { if (eval('datamodel["'+elementmodel+'"].mod') != 'r') { if (eval('datamodel["'+elementmodel+'"].format') != 'CMIFeedback') { expression = new RegExp(eval('datamodel["'+elementmodel+'"].format')); } else { // cmi.interactions.n.type depending format accept everything at this stage expression = new RegExp(CMIFeedback); } value = value+''; var matches = value.match(expression); if ((matches != null) && ((matches.join('').length > 0) || (value.length == 0))) { // Value match dataelement format if (element != elementmodel) { //This is a dynamic datamodel element var elementIndexes = element.split('.'); var subelement = 'cmi'; var parentelement = 'cmi'; for (var i=1;(i < elementIndexes.length-1) && (errorCode=="0");i++) { var elementIndex = elementIndexes[i]; if (elementIndexes[i+1].match(/^\d+$/)) { if ((parseInt(elementIndexes[i+1]) > 0) && (elementIndexes[i+1].charAt(0) == 0)) { // Index has a leading 0 (zero), this is not a number errorCode = "351"; } parentelement = subelement+'.'+elementIndex; if ((typeof eval(parentelement) == "undefined") || (typeof eval(parentelement+'._count') == "undefined")) { errorCode="408"; } else { if (elementIndexes[i+1] > eval(parentelement+'._count')) { errorCode = "351"; diagnostic = "Data Model Element Collection Set Out Of Order"; } subelement = subelement.concat('.'+elementIndex+'.N'+elementIndexes[i+1]); i++; if (((typeof eval(subelement)) == "undefined") && (i < elementIndexes.length-2)) { errorCode="408"; } } } else { subelement = subelement.concat('.'+elementIndex); } } if (errorCode == "0") { // Till now it's a real datamodel element element = subelement.concat('.'+elementIndexes[elementIndexes.length-1]); if ((typeof eval(subelement)) == "undefined") { switch (elementmodel) { case 'cmi.objectives.n.id': if (!duplicatedID(element,parentelement,value)) { if (elementIndexes[elementIndexes.length-2] == eval(parentelement+'._count')) { eval(parentelement+'._count++;'); eval(subelement+' = new Object();'); var subobject = eval(subelement); subobject.success_status = datamodel["cmi.objectives.n.success_status"].defaultvalue; subobject.completion_status = datamodel["cmi.objectives.n.completion_status"].defaultvalue; subobject.progress_measure = datamodel["cmi.objectives.n.progress_measure"].defaultvalue; subobject.score = new Object(); subobject.score._children = score_children; subobject.score.scaled = datamodel["cmi.objectives.n.score.scaled"].defaultvalue; subobject.score.raw = datamodel["cmi.objectives.n.score.raw"].defaultvalue; subobject.score.min = datamodel["cmi.objectives.n.score.min"].defaultvalue; subobject.score.max = datamodel["cmi.objectives.n.score.max"].defaultvalue; } } else { errorCode="351"; diagnostic = "Data Model Element ID Already Exists"; } break; case 'cmi.interactions.n.id': if (elementIndexes[elementIndexes.length-2] == eval(parentelement+'._count')) { eval(parentelement+'._count++;'); eval(subelement+' = new Object();'); var subobject = eval(subelement); subobject.objectives = new Object(); subobject.objectives._count = 0; } break; case 'cmi.interactions.n.objectives.n.id': if (typeof eval(parentelement) != "undefined") { if (!duplicatedID(element,parentelement,value)) { if (elementIndexes[elementIndexes.length-2] == eval(parentelement+'._count')) { eval(parentelement+'._count++;'); eval(subelement+' = new Object();'); } } else { errorCode="351"; diagnostic = "Data Model Element ID Already Exists"; } } else { errorCode="408"; } break; case 'cmi.interactions.n.correct_responses.n.pattern': if (typeof eval(parentelement) != "undefined") { // Use cmi.interactions.n.type value to check the right dataelement format if (elementIndexes[elementIndexes.length-2] == eval(parentelement+'._count')) { var interactiontype = eval(String(parentelement).replace('correct_responses','type')); var interactioncount = eval(parentelement+'._count'); // trap duplicate values, which is not allowed for type choice if (interactiontype == 'choice') { for (var i=0; (i < interactioncount) && (errorCode=="0"); i++) { if (eval(parentelement+'.N'+i+'.pattern') == value) { errorCode = "351"; } } } if ((typeof correct_responses[interactiontype].limit == 'undefined') || (eval(parentelement+'._count') < correct_responses[interactiontype].limit)) { var nodes = new Array(); if (correct_responses[interactiontype].delimiter != '') { nodes = value.split(correct_responses[interactiontype].delimiter); } else { nodes[0] = value; } if (interactiontype == 'choice' && nodes.length == 1) { alert('not enough choices: ' + element); } if ((nodes.length > 0) && (nodes.length <= correct_responses[interactiontype].max)) { errorCode = CRcheckValueNodes (element, interactiontype, nodes, value, errorCode); } else if (nodes.length > correct_responses[interactiontype].max) { errorCode = "351"; diagnostic = "Data Model Element Pattern Too Long"; } if ((errorCode == "0") && ((correct_responses[interactiontype].duplicate == false) || (!duplicatedPA(element,parentelement,value))) || (errorCode == "0" && value == "")) { eval(parentelement+'._count++;'); eval(subelement+' = new Object();'); } else { if (errorCode == "0") { errorCode="351"; diagnostic = "Data Model Element Pattern Already Exists"; } } } else { errorCode="351"; diagnostic = "Data Model Element Collection Limit Reached"; } } else { errorCode="351"; diagnostic = "Data Model Element Collection Set Out Of Order"; } } else { errorCode="408"; } break; default: if ((parentelement != 'cmi.objectives') && (parentelement != 'cmi.interactions') && (typeof eval(parentelement) != "undefined")) { if (elementIndexes[elementIndexes.length-2] == eval(parentelement+'._count')) { eval(parentelement+'._count++;'); eval(subelement+' = new Object();'); } else { errorCode="351"; diagnostic = "Data Model Element Collection Set Out Of Order"; } } else { errorCode="408"; } break; } } else { switch (elementmodel) { case 'cmi.objectives.n.id': if (eval(element) != value) { errorCode = "351"; diagnostic = "Write Once Violation"; } break; case 'cmi.interactions.n.objectives.n.id': if (duplicatedID(element,parentelement,value)) { errorCode = "351";
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -