first import
This commit is contained in:
100
sites/all/modules/media/js/media.browser.js
Normal file
100
sites/all/modules/media/js/media.browser.js
Normal file
@@ -0,0 +1,100 @@
|
||||
|
||||
(function ($) {
|
||||
namespace('Drupal.media.browser');
|
||||
|
||||
Drupal.media.browser.selectedMedia = [];
|
||||
Drupal.media.browser.mediaAdded = function () {};
|
||||
Drupal.media.browser.selectionFinalized = function (selectedMedia) {
|
||||
// This is intended to be overridden if a callee wants to be triggered
|
||||
// when the media selection is finalized from inside the browser.
|
||||
// This is used for the file upload form for instance.
|
||||
};
|
||||
|
||||
Drupal.behaviors.experimentalMediaBrowser = {
|
||||
attach: function (context) {
|
||||
if (Drupal.settings.media.selectedMedia) {
|
||||
Drupal.media.browser.selectMedia(Drupal.settings.media.selectedMedia);
|
||||
// Fire a confirmation of some sort.
|
||||
Drupal.media.browser.finalizeSelection();
|
||||
}
|
||||
$('#media-browser-tabset').tabs({
|
||||
show: Drupal.media.browser.resizeIframe
|
||||
});
|
||||
|
||||
$('.media-browser-tab').each( Drupal.media.browser.validateButtons );
|
||||
|
||||
}
|
||||
// Wait for additional params to be passed in.
|
||||
};
|
||||
|
||||
Drupal.media.browser.launch = function () {
|
||||
|
||||
};
|
||||
|
||||
Drupal.media.browser.validateButtons = function() {
|
||||
// The media browser runs in an IFRAME. The Drupal.media.popups.mediaBrowser()
|
||||
// function sets up the IFRAME and "OK" and "Cancel" buttons that are outside
|
||||
// of the IFRAME, so that their click handlers can destroy the IFRAME while
|
||||
// retaining information about what media items were selected. However,
|
||||
// Drupal UI convention is to place all action buttons on the same "line"
|
||||
// at the bottom of the form, so if the form within the IFRAME contains a
|
||||
// "Submit" button or other action buttons, then the "OK" and "Cancel"
|
||||
// buttons below the IFRAME break this convention and confuse the user.
|
||||
// Therefore, we add "Submit" and "Cancel" buttons inside the IFRAME, and
|
||||
// have their click action trigger the click action of the corresonding
|
||||
// "OK" and "Cancel" buttons that are outside the IFRAME. media.css contains
|
||||
// CSS rules that hide the outside buttons.
|
||||
//
|
||||
// We don't add a "Submit" button if the form already has one, since in these
|
||||
// cases, another round-trip to the server is needed before the user's
|
||||
// selection is finalized. For these cases, when the form's real Submit
|
||||
// button is clicked, the server either returns another form for the user to
|
||||
// fill out, or else a completion page that contains or sets the
|
||||
// Drupal.media.browser.selectedMedia variable. If the latter, then
|
||||
// Drupal.media.popups.mediaBrowser.mediaBrowserOnLoad() auto-triggers the
|
||||
// "OK" button action to finalize the selection and remove the IFRAME.
|
||||
//
|
||||
// @todo An alternate, less hacky solution would be most welcome.
|
||||
if (!($('.form-submit', this).length > 0)) {
|
||||
$('<a class="button button-yes fake-ok">' + Drupal.t('Submit') + '</a>').appendTo(this).bind('click', Drupal.media.browser.submit);
|
||||
if (!($('.fake-cancel', this).length > 0)) {
|
||||
$('<a class="button button-no fake-cancel">' + Drupal.t('Cancel') + '</a>').appendTo(this).bind('click', Drupal.media.browser.submit);
|
||||
}
|
||||
} else if (!($('.fake-cancel', this).length > 0)) {
|
||||
var parent = $('.form-actions', this);
|
||||
if (!parent.length) {
|
||||
parent = $('form > div', this);
|
||||
}
|
||||
$('<a class="button button-no fake-cancel">' + Drupal.t('Cancel') + '</a>').appendTo(parent).bind('click', Drupal.media.browser.submit);
|
||||
}
|
||||
};
|
||||
|
||||
Drupal.media.browser.submit = function () {
|
||||
// @see Drupal.media.browser.validateButtons().
|
||||
var buttons = $(parent.window.document.body).find('#mediaBrowser').parent('.ui-dialog').find('.ui-dialog-buttonpane button');
|
||||
if ($(this).hasClass('fake-cancel')) {
|
||||
buttons[1].click();
|
||||
} else {
|
||||
buttons[0].click();
|
||||
}
|
||||
}
|
||||
|
||||
Drupal.media.browser.selectMedia = function (selectedMedia) {
|
||||
Drupal.media.browser.selectedMedia = selectedMedia;
|
||||
};
|
||||
|
||||
Drupal.media.browser.finalizeSelection = function () {
|
||||
if (!Drupal.media.browser.selectedMedia) {
|
||||
throw new exception(Drupal.t('Cannot continue, nothing selected'));
|
||||
}
|
||||
else {
|
||||
Drupal.media.browser.selectionFinalized(Drupal.media.browser.selectedMedia);
|
||||
}
|
||||
};
|
||||
|
||||
Drupal.media.browser.resizeIframe = function (event) {
|
||||
var h = $('body').height();
|
||||
$(parent.window.document).find('#mediaBrowser').height(h);
|
||||
};
|
||||
|
||||
}(jQuery));
|
||||
Reference in New Issue
Block a user