Merge branch 'master' into text-editor

namespaces
Svein-Tore Griff With 2015-02-02 14:28:52 +01:00
commit daa91b1372
2 changed files with 19 additions and 14 deletions

View File

@ -1,13 +1,12 @@
This folder contains the h5p general library. The files within this folder are not specific to any framework. This folder contains the h5p general library. The files within this folder are not specific to any framework.
Any interaction with LMS, CMS or other frameworks is done through interfaces. Plattforms needs to implement Any interaction with LMS, CMS or other frameworks is done through interfaces. Plattforms needs to implement
the following interfaces in order for the h5p libraries to work: the H5PFrameworkInterface(in h5p.classes.php) and also do the following:
- TODO: Fill in here
In addition frameworks need to do the following:
- Provide a form for uploading h5p packages. - Provide a form for uploading h5p packages.
- Place the uploaded h5p packages in a temporary directory - Place the uploaded h5p packages in a temporary directory
+++
See existing implementations for details. For instance the Drupal h5p module located on drupal.org/project/h5p See existing implementations for details. For instance the Drupal h5p module located on drupal.org/project/h5p
We will make available documentations and tutorials for creating platform integrations in the future

View File

@ -1305,7 +1305,7 @@ class H5PStorage {
// Find out which libraries are used by this package/content // Find out which libraries are used by this package/content
$librariesInUse = array(); $librariesInUse = array();
$this->h5pC->findLibraryDependencies($librariesInUse, $this->h5pC->mainJsonData); $nextWeight = $this->h5pC->findLibraryDependencies($librariesInUse, $this->h5pC->mainJsonData);
// Save content // Save content
if ($content === NULL) { if ($content === NULL) {
@ -1837,9 +1837,12 @@ class H5PCore {
* *
* @param array $librariesUsed Flat list of all dependencies. * @param array $librariesUsed Flat list of all dependencies.
* @param array $library To find all dependencies for. * @param array $library To find all dependencies for.
* @param bool $editor Used interally to force all preloaded sub dependencies of an editor dependecy to be editor dependencies. * @param int $nextWeight An integer determining the order of the libraries
* when they are loaded
* @param bool $editor Used interally to force all preloaded sub dependencies
* of an editor dependecy to be editor dependencies.
*/ */
public function findLibraryDependencies(&$dependencies, $library, $editor = FALSE) { public function findLibraryDependencies(&$dependencies, $library, $nextWeight = 1, $editor = FALSE) {
foreach (array('dynamic', 'preloaded', 'editor') as $type) { foreach (array('dynamic', 'preloaded', 'editor') as $type) {
$property = $type . 'Dependencies'; $property = $type . 'Dependencies';
if (!isset($library[$property])) { if (!isset($library[$property])) {
@ -1863,7 +1866,8 @@ class H5PCore {
'library' => $dependencyLibrary, 'library' => $dependencyLibrary,
'type' => $type 'type' => $type
); );
$this->findLibraryDependencies($dependencies, $dependencyLibrary, $type === 'editor'); $nextWeight = $this->findLibraryDependencies($dependencies, $dependencyLibrary, $nextWeight, $type === 'editor');
$dependencies[$dependencyKey]['weight'] = $nextWeight++;
} }
else { else {
// This site is missing a dependency! // This site is missing a dependency!
@ -1871,6 +1875,7 @@ class H5PCore {
} }
} }
} }
return $nextWeight;
} }
/** /**
@ -2221,8 +2226,7 @@ class H5PCore {
class H5PContentValidator { class H5PContentValidator {
public $h5pF; public $h5pF;
public $h5pC; public $h5pC;
private $typeMap; private $typeMap, $libraries, $dependencies, $nextWeight;
private $libraries, $dependencies;
/** /**
* Constructor for the H5PContentValidator * Constructor for the H5PContentValidator
@ -2248,6 +2252,7 @@ class H5PContentValidator {
'select' => 'validateSelect', 'select' => 'validateSelect',
'library' => 'validateLibrary', 'library' => 'validateLibrary',
); );
$this->nextWeight = 1;
// Keep track of the libraries we load to avoid loading it multiple times. // Keep track of the libraries we load to avoid loading it multiple times.
$this->libraries = array(); $this->libraries = array();
@ -2635,7 +2640,8 @@ class H5PContentValidator {
'type' => 'preloaded' 'type' => 'preloaded'
); );
$this->h5pC->findLibraryDependencies($this->dependencies, $library); $this->nextWeight = $this->h5pC->findLibraryDependencies($this->dependencies, $library, $this->nextWeight);
$this->dependencies[$depkey]['weight'] = $this->nextWeight++;
} }
} }
else { else {