Imported changes from 7.x-1.x

namespaces
Frode Petterson 2014-04-14 10:50:37 +02:00
parent 9e01bbfb81
commit c83092f747
3 changed files with 23 additions and 14 deletions

View File

@ -96,6 +96,7 @@ class H5PDevelopment {
foreach ($this->libraries as $library) {
$this->h5pF->deleteLibraryDependencies($library['libraryId']);
// This isn't optimal, but without it we would get duplicate warnings.
// TODO: You might get PDOExceptions if two or more requests does this at the same time!!
$types = array('preloaded', 'dynamic', 'editor');
foreach ($types as $type) {
if (isset($library[$type . 'Dependencies'])) {

View File

@ -493,14 +493,13 @@ class H5PValidator {
$libraryH5PData = $this->getLibraryData($file, $filePath, $tmpDir);
/* library's directory name and machineName in library.json must match */
if($libraryH5PData['machineName'] !== $file) {
$this->h5pF->setErrorMessage($this->h5pF->t('Library directory name must match machineName in library.json. (Directory: %directoryName , machineName: %machineName)', array('%directoryName' => $file, '%machineName' => $libraryH5PData['machineName'])));
$valid = FALSE;
continue;
}
if ($libraryH5PData) {
if ($libraryH5PData !== FALSE) {
// Library's directory name and machineName in library.json must match
if ($libraryH5PData['machineName'] !== $file) {
$this->h5pF->setErrorMessage($this->h5pF->t('Library directory name must match machineName in library.json. (Directory: %directoryName , machineName: %machineName)', array('%directoryName' => $file, '%machineName' => $libraryH5PData['machineName'])));
$valid = FALSE;
continue;
}
$libraries[$libraryH5PData['machineName']] = $libraryH5PData;
}
else {
@ -1384,7 +1383,7 @@ class H5PCore {
$files['scripts'][] = $dependency['path'] . '/' . trim(is_array($file) ? $file['path'] : $file);
}
}
if ($dependency['dropCss'] !== '1' && !empty($dependency['preloadedCss']) && $dependency['preloadedCss'][0] !== '') {
if ((!isset($dependency['dropCss']) || $dependency['dropCss'] !== '1') && !empty($dependency['preloadedCss']) && $dependency['preloadedCss'][0] !== '') {
foreach ($dependency['preloadedCss'] as $file) {
$files['styles'][] = $dependency['path'] . '/' . trim(is_array($file) ? $file['path'] : $file);
}
@ -1465,11 +1464,17 @@ class H5PCore {
}
$dependencyLibrary = $this->loadLibrary($dependency['machineName'], $dependency['majorVersion'], $dependency['minorVersion']);
$dependencies[$dependencyKey] = array(
'library' => $dependencyLibrary,
'type' => $type
);
$this->findLibraryDependencies($dependencies, $dependencyLibrary, $type === 'editor');
if ($dependencyLibrary) {
$dependencies[$dependencyKey] = array(
'library' => $dependencyLibrary,
'type' => $type
);
$this->findLibraryDependencies($dependencies, $dependencyLibrary, $type === 'editor');
}
else {
// This site is missing a dependency!
$this->h5pF->setErrorMessage($this->h5pF->t('Missing dependency @dep required by @lib.', array('@dep' => H5PCore::libraryToString($dependency), '@lib' => H5PCore::libraryToString($library))));
}
}
}
}

View File

@ -40,6 +40,9 @@ H5P.init = function () {
var $container = H5P.jQuery('<div class="h5p-container"></div>').appendTo($element);
var contentId = $element.data('content-id');
var contentData = H5PIntegration.getContentData(contentId);
if (contentData === undefined) {
return H5P.error('No data for content id ' + contentId + '. Perhaps the library is gone?');
}
var library = {
library: contentData.library,
params: H5P.jQuery.parseJSON(contentData.jsonContent)