Deprecate 'overrideSettings'

* Deprecate and log warning to console when 'overrideSettings' is used
 * Change confirmation dialog be 'fixed' e.g relative to viewport instead of
   and arbitrary relative parent element
 * Same for the overlay mask
 * Set minimum height on body element, to fit confirmation dialog
 * Remove the minimum height on close dialog

Fixes HFP-574
pull/40/head
Tom Arild Jakobsen 2017-05-08 14:17:29 +02:00
parent fb76e09e8c
commit 481322e6ae
3 changed files with 18 additions and 19 deletions

View File

@ -315,7 +315,7 @@ H5P.ConfirmationDialog = (function (EventDispatcher) {
if (resizeIFrame && options.instance) { if (resizeIFrame && options.instance) {
var minHeight = parseInt(popup.offsetHeight, 10) + var minHeight = parseInt(popup.offsetHeight, 10) +
exitButtonOffset + (2 * shadowOffset); exitButtonOffset + (2 * shadowOffset);
wrapperElement.style.minHeight = minHeight + 'px'; self.setViewPortMinimumHeight(minHeight);
options.instance.trigger('resize'); options.instance.trigger('resize');
resizeIFrame = false; resizeIFrame = false;
} }
@ -340,10 +340,20 @@ H5P.ConfirmationDialog = (function (EventDispatcher) {
setTimeout(function () { setTimeout(function () {
popupBackground.classList.add('hidden'); popupBackground.classList.add('hidden');
wrapperElement.removeChild(popupBackground); wrapperElement.removeChild(popupBackground);
self.setViewPortMinimumHeight(null);
}, 100); }, 100);
return this; return this;
}; };
/**
* Sets the minimum height of the view port
*
* @param {number|null} minHeight
*/
this.setViewPortMinimumHeight = function(minHeight) {
document.body.style.minHeight = (typeof minHeight === 'number') ? (minHeight + 'px') : minHeight;
};
} }
ConfirmationDialog.prototype = Object.create(EventDispatcher.prototype); ConfirmationDialog.prototype = Object.create(EventDispatcher.prototype);

View File

@ -1000,24 +1000,13 @@ H5P.findCopyrights = function (info, parameters, contentId) {
continue; // Do not check continue; // Do not check
} }
/* /**
* TODO: Make parameters clean again * @deprecated This hack should be removed after 2017-11-01
* Some content types adds jQuery or other objects to parameters * The code that was using this was removed by HFP-574
* in order to determine override settings for sub-content-types.
* For instance Question Set tells Multiple Choice that it should
* attach Multi Choice's confirmation dialog to a Question Set
* jQuery element, so that the confirmation dialog will not be restricted
* to the space confined by Multi Choice.
* Ideally this should not be added to parameters, we must make a better
* solution. We should likely be adding these to sub-content through
* functions/setters instead of passing them down as params.
*
* This solution is implemented as a hack that will ignore all parameters
* inside a "overrideSettings" field, this should suffice for now since
* all overridden objects are added to this field, however this is not very
* robust solution and will very likely lead to problems in the future.
*/ */
if (field === 'overrideSettings') { if (field === 'overrideSettings') {
console.warn("The semantics field 'overrideSettings' is DEPRECATED and should not be used.");
console.warn(parameters);
continue; continue;
} }

View File

@ -1,5 +1,5 @@
.h5p-confirmation-dialog-background { .h5p-confirmation-dialog-background {
position: absolute; position: fixed;
height: 100%; height: 100%;
width: 100%; width: 100%;
left: 0; left: 0;
@ -30,7 +30,7 @@
} }
.h5p-confirmation-dialog-popup { .h5p-confirmation-dialog-popup {
position: absolute; position: fixed;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;