⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scorm_export.php

📁 完美的在线教育系统
💻 PHP
📖 第 1 页 / 共 2 页
字号:
	/**	 * End document header	 */	function end_header()	{		return '</head>'. "\n";	}    /**     * Start the itemBody     *      */    function start_js()    {       return '<script type="text/javascript" language="javascript">'. "\n";    }	/**	 * Common JS functions	 */	function common_js()	{		$js = "\n";		$js .= file_get_contents('../plugin/hotspot/JavaScriptFlashGateway.js');		$js .= file_get_contents('../plugin/hotspot/hotspot.js');		$js .=	"<!--					// -----------------------------------------------------------------------------					// Globals					// Major version of Flash required					var requiredMajorVersion = 7;					// Minor version of Flash required					var requiredMinorVersion = 0;					// Minor version of Flash required					var requiredRevision = 0;					// the version of javascript supported					var jsVersion = 1.0;					// -----------------------------------------------------------------------------					// -->					</script>					<script language=\"VBScript\" type=\"text/vbscript\">					<!-- // Visual basic helper required to detect Flash Player ActiveX control version information					Function VBGetSwfVer(i)					  on error resume next					  Dim swControl, swVersion					  swVersion = 0					  set swControl = CreateObject(\"ShockwaveFlash.ShockwaveFlash.\" + CStr(i))					  if (IsObject(swControl)) then					    swVersion = swControl.GetVariable(\"\$version\")					  end if					  VBGetSwfVer = swVersion					End Function					// -->					</script>					<script language=\"JavaScript1.1\" type=\"text/javascript\">					<!-- // Detect Client Browser type					var isIE  = (navigator.appVersion.indexOf(\"MSIE\") != -1) ? true : false;					var isWin = (navigator.appVersion.toLowerCase().indexOf(\"win\") != -1) ? true : false;					var isOpera = (navigator.userAgent.indexOf(\"Opera\") != -1) ? true : false;					jsVersion = 1.1;					// JavaScript helper required to detect Flash Player PlugIn version information					function JSGetSwfVer(i){						// NS/Opera version >= 3 check for Flash plugin in plugin array						if (navigator.plugins != null && navigator.plugins.length > 0) {							if (navigator.plugins[\"Shockwave Flash 2.0\"] || navigator.plugins[\"Shockwave Flash\"]) {								var swVer2 = navigator.plugins[\"Shockwave Flash 2.0\"] ? \" 2.0\" : \"\";					      		var flashDescription = navigator.plugins[\"Shockwave Flash\" + swVer2].description;								descArray = flashDescription.split(\" \");								tempArrayMajor = descArray[2].split(\".\");								versionMajor = tempArrayMajor[0];								versionMinor = tempArrayMajor[1];								if ( descArray[3] != \"\" ) {									tempArrayMinor = descArray[3].split(\"r\");								} else {									tempArrayMinor = descArray[4].split(\"r\");								}					      		versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;					            flashVer = versionMajor + \".\" + versionMinor + \".\" + versionRevision;					      	} else {								flashVer = -1;							}						}						// MSN/WebTV 2.6 supports Flash 4						else if (navigator.userAgent.toLowerCase().indexOf(\"webtv/2.6\") != -1) flashVer = 4;						// WebTV 2.5 supports Flash 3						else if (navigator.userAgent.toLowerCase().indexOf(\"webtv/2.5\") != -1) flashVer = 3;						// older WebTV supports Flash 2						else if (navigator.userAgent.toLowerCase().indexOf(\"webtv\") != -1) flashVer = 2;						// Can't detect in all other cases						else {							flashVer = -1;						}						return flashVer;					}					// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available					function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)					{					 	reqVer = parseFloat(reqMajorVer + \".\" + reqRevision);					   	// loop backwards through the versions until we find the newest version						for (i=25;i>0;i--) {							if (isIE && isWin && !isOpera) {								versionStr = VBGetSwfVer(i);							} else {								versionStr = JSGetSwfVer(i);							}							if (versionStr == -1 ) {								return false;							} else if (versionStr != 0) {								if(isIE && isWin && !isOpera) {									tempArray         = versionStr.split(\" \");									tempString        = tempArray[1];									versionArray      = tempString .split(\",\");								} else {									versionArray      = versionStr.split(\".\");								}								versionMajor      = versionArray[0];								versionMinor      = versionArray[1];								versionRevision   = versionArray[2];								versionString     = versionMajor + \".\" + versionRevision;   // 7.0r24 == 7.24								versionNum        = parseFloat(versionString);					        	// is the major.revision >= requested major.revision AND the minor version >= requested minor								if ( (versionMajor > reqMajorVer) && (versionNum >= reqVer) ) {									return true;								} else {									return ((versionNum >= reqVer && versionMinor >= reqMinorVer) ? true : false );								}							}						}					}					// -->\n\n";		$js .= file_get_contents('../newscorm/js/api_wrapper.js');		$js .= 'var questions = new Array();' . "\n";		$js .= 'var questions_answers = new Array();' . "\n";		$js .= 'var questions_answers_correct = new Array();' . "\n";		$js .= 'var questions_types = new Array();' . "\n";		$js .= "\n" . 			'/**             * Assigns any event handler to any element             * @param	object	Element on which the event is added             * @param	string	Name of event             * @param	string	Function to trigger on event             * @param	boolean	Capture the event and prevent              */            function addEvent(elm, evType, fn, useCapture)            { //by Scott Andrew                if(elm.addEventListener){            		elm.addEventListener(evType, fn, useCapture);            		return true;            	} else if(elm.attachEvent) {            		var r = elm.attachEvent(\'on\' + evType, fn);            		return r;            	} else {            		elm[\'on\' + evType] = fn;            	}             }            /**             * Adds the event listener             */            function addListeners(e) {            	loadPage();            	/*            	var my_form = document.getElementById(\'dokeos_scorm_form\');            	addEvent(my_form,\'submit\',checkAnswers,false);            	*/            	var my_button = document.getElementById(\'dokeos_scorm_submit\');            	addEvent(my_button,\'click\',doQuit,false);                addEvent(my_button,\'click\',disableButton,false);            	//addEvent(my_button,\'click\',checkAnswers,false);            	//addEvent(my_button,\'change\',checkAnswers,false);            	addEvent(window,\'unload\',unloadPage,false);            }            /** Disables the submit button on SCORM result submission **/            function disableButton() {              var mybtn = document.getElementById(\'dokeos_scorm_submit\');              mybtn.setAttribute(\'disabled\',\'disabled\');            }            '."\n";				$js .= '';		//$js .= 'addEvent(window,\'load\',loadPage,false);'."\n";		//$js .= 'addEvent(window,\'unload\',unloadPage,false);'."\n";		$js .= 'addEvent(window,\'load\',addListeners,false);'."\n";		return $js. "\n";	}    /**     * End the itemBody part.     *     */    function end_js()    {       return '</script>'. "\n";    }    /**     * Start the itemBody     *      */    function start_body()    {       return '<body>'. "\n".       		'<h1>'.$this->exercise->selectTitle().'</h1><p>'.$this->exercise->selectDescription()."</p>\n".			'<form id="dokeos_scorm_form" method="post" action="">'."\n".			'<table width="100%">'."\n";    }         /**     * End the itemBody part.     *     */    function end_body()    {       return '</table><br /><input type="button" id="dokeos_scorm_submit" name="dokeos_scorm_submit" value="OK" /></form>'."\n".'</body>'. "\n";    }    /**     * Export the question as a SCORM Item.     *     * This is a default behaviour, some classes may want to override this.     *     * @param $standalone: Boolean stating if it should be exported as a stand-alone question     * @return A string, the XML flow for an Item.     */    function export()    {        global $charset;                $head = "";        if ($this->standalone) {            $head = '<?xml version = "1.0" encoding = "' . $charset . '" standalone = "no"?>' . "\n"                  . '<!DOCTYPE questestinterop SYSTEM "ims_qtiasiv2p1.dtd">' . "\n";        }        list($js,$html) = $this->export_questions();        //list($js,$html) = $this->question->answer->export();        $res = $this->start_page()               . $this->start_header()               . $this->css()               . $this->start_js()               . $this->common_js()               . $js               . $this->end_js()               . $this->end_header()               . $this->start_body()         //         .$this->answer->imsExportResponsesDeclaration($this->questionIdent)        //         . $this->start_item_body()        //           . $this->answer->scormExportResponses($this->questionIdent, $this->question->question, $this->question->description, $this->question->picture)        //			.$question        			.$html               . $this->end_body()               . $this->end_page();                return $res;    }             /**     * Export the questions, as a succession of <items>     * @author Amand Tihon <amand@alrj.org>     */    function export_questions()    {        $js = $html = "";        $js_id = 0;        foreach ($this->exercise->selectQuestionList() as $q)        {        	list($jstmp,$htmltmp)= export_question($q, false, $js_id);        	$js .= $jstmp."\n";        	$html .= $htmltmp."\n";            ++$js_id;        }        return array($js,$html);    }}/*--------------------------------------------------------      Functions  --------------------------------------------------------*//** * Send a complete exercise in SCORM format, from its ID * * @param int $exerciseId The exercise to exporte * @param boolean $standalone Wether it should include XML tag and DTD line. * @return The XML as a string, or an empty string if there's no exercise with given ID. */function export_exercise($exerciseId, $standalone=true){    $exercise = new Exercise();    if (! $exercise->read($exerciseId))    {        return '';    }    $ims = new ScormSection($exercise);    $xml = $ims->export($standalone);    return $xml;}/** * Returns the HTML + JS flow corresponding to one question *  * @param int The question ID * @param bool standalone (ie including XML tag, DTD declaration, etc) * @param int  The JavaScript ID for this question. Due to the nature of interactions, we must have a natural sequence for questions in the generated JavaScript. */function export_question($questionId, $standalone=true, $js_id){    $question = new ScormQuestion();    $qst = $question->read($questionId);    if( !$qst )    {        return '';    }    $question->id = $qst->id;    $question->js_id = $js_id;    $question->type = $qst->type;    $question->question = $qst->question;    $question->description = $qst->description;	$question->weighting=$qst->weighting;	$question->position=$qst->position;	$question->picture=$qst->picture;    $assessmentItem = new ScormAssessmentItem($question,$standalone);    //echo "<pre>".print_r($scorm,1)."</pre>";exit;    return $assessmentItem->export();}?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -