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); // 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));