bynder-4.0.0-beta1/js/bynder.search_view.js
js/bynder.search_view.js
/**
* @file
*/
(function ($, Drupal, drupalSettings) {
'use strict';
/**
* Registers behaviours related to Bynder search view widget.
*/
Drupal.behaviors.BynderSearchView = {
attach(context) {
const $compactView = $(once('bynder-compactview', '#bynder-compactview', context));
$compactView.each(function() {
BynderCompactView.open({
mode: drupalSettings.bynder.compactviewMode,
portal: {
editable: false,
url: drupalSettings.bynder.domain
},
assetTypes: drupalSettings.bynder.types,
container: this,
onSuccess: function(assets, AdditionalInfo) {
var selectedValues = [];
// Simplify the data structure, only keep what we need.
assets.forEach(function(asset) {
// Alert the user that the selection does not have a thumbnail.
if (asset.type === 'DOCUMENT' && !asset.originalUrl) {
alert(Drupal.t('The document "@name" is not public. Please mark the original as public.',{'@name': asset.name}));
return;
}
var fileUrl = null;
var derivative = null;
if (AdditionalInfo.selectedFile !== undefined) {
fileUrl = AdditionalInfo.selectedFile.url;
derivative = getDerivative(fileUrl, asset);
}
selectedValues.push({
'id': asset.databaseId,
'type': asset.type,
'name': asset.name,
'fileUrl': fileUrl,
'derivative': derivative
});
// If there are no assets, do not submit the form.
if (selectedValues.length === 0) {
return;
}
});
// Append the selected assets ids to the bynder_selection hidden
// input field, separated by a comma.
var bynderSelection = $('input[name=bynder_selection]')[0];
bynderSelection.value = JSON.stringify(selectedValues);
var compactView = $('#bynder-compactview');
compactView.hide();
// Create and append the uploading message with inline styles
$('<div>')
.text(Drupal.t('Uploading assets...'))
.css({
'position': 'absolute',
'top': '50%',
'left': '50%',
'transform': 'translate(-50%, -50%)',
'text-align': 'center',
'font-size': '18px',
'color': '#333',
'z-index': '1000'
})
.insertAfter(compactView);
// Trigger entity browser submit button click.
$('.is-entity-browser-submit').click();
}
});
});
var getDerivative = function (url, asset) {
var files = asset.files;
var derivative = null;
Object.keys(files).forEach(function(key) {
if (files[key].url === url) {
derivative = key;
}
});
return derivative;
};
}
};
}(jQuery, Drupal, drupalSettings));
