commit
ed1fb00745
|
@ -1676,7 +1676,7 @@ class H5PCore {
|
|||
|
||||
public static $coreApi = array(
|
||||
'majorVersion' => 1,
|
||||
'minorVersion' => 10
|
||||
'minorVersion' => 11
|
||||
);
|
||||
public static $styles = array(
|
||||
'styles/h5p.css',
|
||||
|
@ -3056,13 +3056,20 @@ class H5PContentValidator {
|
|||
$function = null;
|
||||
$field = null;
|
||||
|
||||
if (count($semantics->fields) == 1 && $flatten) {
|
||||
$isSubContent = isset($semantics->isSubContent) && $semantics->isSubContent === TRUE;
|
||||
|
||||
if (count($semantics->fields) == 1 && $flatten && !$isSubContent) {
|
||||
$field = $semantics->fields[0];
|
||||
$function = $this->typeMap[$field->type];
|
||||
$this->$function($group, $field);
|
||||
}
|
||||
else {
|
||||
foreach ($group as $key => &$value) {
|
||||
// If subContentId is set, keep value
|
||||
if($isSubContent && ($key == 'subContentId')){
|
||||
continue;
|
||||
}
|
||||
|
||||
// Find semantics for name=$key
|
||||
$found = FALSE;
|
||||
foreach ($semantics->fields as $field) {
|
||||
|
|
|
@ -182,7 +182,7 @@ H5P.ContentUpgradeProcess = (function (Version) {
|
|||
break;
|
||||
|
||||
case 'group':
|
||||
if (field.fields.length === 1) {
|
||||
if (field.fields.length === 1 && field.isSubContent !== true) {
|
||||
// Single field to process, wrapper will be skipped
|
||||
self.processField(field.fields[0], params, function (err, upgradedParams) {
|
||||
if (upgradedParams) {
|
||||
|
|
20
js/h5p.js
20
js/h5p.js
|
@ -477,6 +477,19 @@ H5P.communicator = (function () {
|
|||
return (window.postMessage && window.addEventListener ? new Communicator() : undefined);
|
||||
})();
|
||||
|
||||
/**
|
||||
* Enter semi fullscreen for the given H5P instance
|
||||
*
|
||||
* @method semiFullScreen
|
||||
* @param {H5P.jQuery} $element Content container.
|
||||
* @param {Object} instance
|
||||
* @param {function} exitCallback Callback function called when user exits fullscreen.
|
||||
* @param {H5P.jQuery} $body For internal use. Gives the body of the iframe.
|
||||
*/
|
||||
H5P.semiFullScreen = function ($element, instance, exitCallback, body) {
|
||||
H5P.fullScreen($element, instance, exitCallback, body, true);
|
||||
};
|
||||
|
||||
/**
|
||||
* Enter fullscreen for the given H5P instance.
|
||||
*
|
||||
|
@ -484,15 +497,16 @@ H5P.communicator = (function () {
|
|||
* @param {Object} instance
|
||||
* @param {function} exitCallback Callback function called when user exits fullscreen.
|
||||
* @param {H5P.jQuery} $body For internal use. Gives the body of the iframe.
|
||||
* @param {Boolean} forceSemiFullScreen
|
||||
*/
|
||||
H5P.fullScreen = function ($element, instance, exitCallback, body) {
|
||||
H5P.fullScreen = function ($element, instance, exitCallback, body, forceSemiFullScreen) {
|
||||
if (H5P.exitFullScreen !== undefined) {
|
||||
return; // Cannot enter new fullscreen until previous is over
|
||||
}
|
||||
|
||||
if (H5P.isFramed && H5P.externalEmbed === false) {
|
||||
// Trigger resize on wrapper in parent window.
|
||||
window.parent.H5P.fullScreen($element, instance, exitCallback, H5P.$body.get());
|
||||
window.parent.H5P.fullScreen($element, instance, exitCallback, H5P.$body.get(), forceSemiFullScreen);
|
||||
H5P.isFullscreen = true;
|
||||
H5P.exitFullScreen = function () {
|
||||
window.parent.H5P.exitFullScreen();
|
||||
|
@ -572,7 +586,7 @@ H5P.fullScreen = function ($element, instance, exitCallback, body) {
|
|||
};
|
||||
|
||||
H5P.isFullscreen = true;
|
||||
if (H5P.fullScreenBrowserPrefix === undefined) {
|
||||
if (H5P.fullScreenBrowserPrefix === undefined || forceSemiFullScreen === true) {
|
||||
// Create semi fullscreen.
|
||||
|
||||
if (H5P.isFramed) {
|
||||
|
|
Loading…
Reference in New Issue