]> _ Git - cubeextranet.git/commitdiff
#scorm Add extranet fields to customize manifest and enable scorm features
authorvincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Wed, 23 Mar 2016 10:46:52 +0000 (10:46 +0000)
committervincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Wed, 23 Mar 2016 10:46:52 +0000 (10:46 +0000)
Append scorm files when packaging

inc/ws/Metier/class.ws.book.parametres.php
inc/ws/Util/html5/class.ws.html5.compiler.php
inc/ws/Util/packager/class.ws.packager.php

index 113f453eb370a2cc4fe0bc53ebe24f82a9605f80..6caa268924255100025ac362c4f77f874e3a8dc4 100644 (file)
@@ -407,6 +407,15 @@ class wsBookParametres extends wsParametres {
                $this->fields['redirectDemo'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Rediriger le lien de démo vers'), 'grade' => 5);
                $this->forms['demo'] = array('label' => __('Lien de démo'),
                                             'fieldsnames' => array('disableDemo', 'redirectDemo'));
+
+
+               $this->fields['scorm_enable'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Activer SCORM'), 'grade' => 5);
+               $this->fields['scorm_id'] = array('type' => 'text', 'default' => 'MFMCTE091mobile', 'editable' => true, 'label' => __('Identifiant SCORM'), 'grade' => 5);
+               $this->fields['scorm_org'] = array('type' => 'text', 'default' => 'ACME-ORG-1350650111249', 'editable' => true, 'label' => __('Organisation SCORM'), 'grade' => 5);
+               $this->fields['scorm_title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Titre SCORM'), 'grade' => 5, 'hint' => __('Laisser vide pour utiliser le titre de la publication'));
+
+               $this->forms['scorm'] = array('label' => __('SCORM'),
+                                             'fieldsnames' => array('scorm_enable', 'scorm_id', 'scorm_org', 'scorm_title'));
        }
 
 }
index 81a9c11d80fa0238659863bd493abd30dee64c00..3b8e2a70411aaf2c8a989d6b0944775424243112 100644 (file)
@@ -494,9 +494,9 @@ class wsHTML5Compiler {
                $script = '';
                $script .= '<script type="text/javascript" charset="utf-8" src="data/datas.js"></script>' . "\n";
                $script .= '<script type="text/javascript" charset="utf-8" src="data/fluidbook.js"></script>' . "\n";
-               if ($this->book->parametres->search) {
-                       //$script .= '<script type="text/javascript" charset="utf-8" src="data/search.index.js"></script>' . "\n";
-                       //$script .= '<script type="text/javascript" charset="utf-8" src="data/search.texts.js"></script>' . "\n";
+               if ($this->book->parametres->scorm_enable) {
+                       $script .= '<script type="text/javascript" charset="utf-8" src="data/scorm.js"></script>' . "\n";
+                       $this->writeScorm();
                }
                foreach ($this->pluginJs as $p) {
                        $script .= '<script type="text/javascript" charset="utf-8" src="' . $p . '"></script>' . "\n";
@@ -587,6 +587,18 @@ class wsHTML5Compiler {
                }
        }
 
+       protected function writeScorm() {
+               $manifest = file_get_contents($this->assets . '/_imsmanifest.xml');
+               if (!$this->book->parametres->scorm_title) {
+                       $this->book->parametres->scorm_title = $this->book->parametres->title;
+               }
+               $vars = array('scorm_id', 'scorm_org', 'scorm_title');
+               foreach ($vars as $v) {
+                       $manifest = str_replace('$' . $v, $this->book->parametres->$v, $manifest);
+               }
+               file_put_contents($this->vdir . '/imsmanifest.xml', $manifest);
+       }
+
        protected function writePrint() {
 
                if (!$this->book->parametres->print && !$this->book->parametres->pdf) {
@@ -758,11 +770,16 @@ class wsHTML5Compiler {
                $config = $this->writeConfig();
                file_put_contents($this->vdir . '/data/datas.js', $config);
                $finals = array('fluidbook' => $this->jsFiles);
+               if ($this->book->parametres->scorm_enable) {
+                       $finals['scorm'] = array();
+                       $finals['scorm'][] = 'js/libs/scorm/apiwrapper.js';
+                       $finals['scorm'][] = 'js/libs/scorm/scorm.js';
+               }
+
                if ($this->widget) {
                        $finals['widget'] = $this->widgetJsFiles;
                }
 
-
                foreach ($finals as $jsfinal => $files) {
                        $mintime = 0;
                        $minimized = $this->assets . '/js/' . $jsfinal . '-min.js';
index 7788191ad27a81ae7345db35b4a886aa117410a8..b7d6c4587efe1b0ddaae8defddeb55ff64fc7e26 100644 (file)
@@ -166,8 +166,9 @@ class wsPackager {
                        $rename = true;
                }
 
+
                $zip = new cubeCommandLine('zip');
-               $zip->cd($this->vdir);
+               $zip->cd($this->getFinalPackageDir());
                $zip->setArg(null, $zipfile);
                $zip->setArg('0');
                $zip->setArg('r');
@@ -185,6 +186,14 @@ class wsPackager {
                return $url;
        }
 
+       public function getFinalPackageDir() {
+               $dir = $this->vdir;
+               if ($this->book->parametres->alwaysHTML5) {
+                       $dir .= '/m/';
+               }
+               return $dir;
+       }
+
        protected function initTempDir() {
                if (is_null($this->vdir)) {
                        $this->vdir = $this->dir . $this->version . '/';