Как программировать административную библиотеку картинок

Административная библиотека картинок Magento 2 используется администраторами интернет-магазина для загрузки, хранения и последующего использования картинок (например, при написании статей и описании товаров:),

Технически административная библиотека картинок Magento 2 — это виджет jQuery UI]1, виджет вызывается так: $.mage.mediabrowser.
Доступен также глобальный объект MediabrowserUtility, который открывает (метод openDialog) и закрывает (метод closeDialog) всплывающее окно библиотеки.

Для использования как $.mage.mediabrowser, так иMediabrowserUtility надо загрузить модуль AMD lib/web/mage/adminhtml/browser.js. Это можно сделать по короткому имени этого модуля: mage/adminhtml/browser name.

Ниже пример моего кода, который загружает модуль mage/adminhtml/browser и затем открывает библиотеку картинок по нажатию кнопки.

define(['jquery','mage/adminhtml/browser'
], function($) {return function(config) {
	$('.some-button').click(function(){
		/** @type Object */
		var cc = config['coreConfig'];
		/** @type String */
		var url = cc['files_browser_window_url'] + 'target_element_id/' + config.id + '/';
		/** @type ?Number */
		var storeId = cc['store_id'];
		if (storeId) {
			url += 'store/' + storeId;
		}
		MediabrowserUtility.openDialog(url);		
	});
};});

Обратите внимание, что методу MediabrowserUtility.openDialog требуется передать в качестве параметра специальный веб-адрес.
Необходимая для построения этого веб-адреса информация получена посредством технологии, описанной в статье Как передать параметры из *.phtml в компонент на JavaScript посредством x-magento-init.

В свою очередь. на стороне PHP эту информацию можно получить вызовом метода \Magento\Cms\Model\Wysiwyg\Config::getConfig().

Параметр target_element_id в веб-адресе — это идентификатор элемента DOM, который получит результат обращения администратора к библиотеке: то есть адрес выбранной администратором картинки. Например, этим элементом DOM может быть редактор статьи, куда должна быть вставлена картинка.