/**
* Backport of security fixes from:
* https://bugs.jqueryui.com/ticket/6016
* https://github.com/jquery/jquery-ui/pull/1635/files
*/
(function ($) {
// Parts of this backport differ by jQuery version.
var versionParts = $.ui.dialog.version.split('.');
var majorVersion = parseInt(versionParts[0]);
var minorVersion = parseInt(versionParts[1]);
if (majorVersion === 1 && minorVersion < 13) {
var _originalSetOption = $.ui.dialog.prototype._setOption;
var _originalCreateTitlebar = $.ui.dialog.prototype._createTitlebar;
$.extend($.ui.dialog.prototype, {
_createTitlebar: function () {
if (this.options.closeText) {
this.options.closeText = Drupal.checkPlain(this.options.closeText);
}
_originalCreateTitlebar.apply(this, arguments);
},
_setOption: function (key, value) {
if (key === 'title' || key == 'closeText') {
if (value) {
value = Drupal.checkPlain(value);
}
}
_originalSetOption.apply(this, [key, value]);
}
});
if (majorVersion === 1 && minorVersion < 10) {
var _originalCreate = $.ui.dialog.prototype._create;
$.extend($.ui.dialog.prototype, {
_create: function () {
if (!this.options.title) {
var defaultTitle = this.element.attr('title');
// .attr() might return a DOMElement
if (typeof defaultTitle !== "string") {
defaultTitle = "";
}
this.options.title = defaultTitle;
}
this.options.title = Drupal.checkPlain(this.options.title);
_originalCreate.apply(this, arguments);
},
});
}
}
})(jQuery);