FileAttach (modx2) - возможность выбора файла из медиа-библиотеки (вкладка слева вверху Файлы)

Здравствуйте.
Есть вопрос по данному компоненту — есть ли возможность выбора уже ранее загруженного файла для нескольких ресурсов?
Например — есть 2 ресурса. У одного я загрузил документ пдф. Хочу этот же документ выбрать, когда редактирую другой ресурс, на его вкладке «Файлы». Сейчас у меня (по умолчанию) открывается попап, где я могу загрузить файлы только из внешних источников. Как использовать уже ранее загруженные файлы у нескольких ресурсов?
Есть ли такие настройки в админке?

с уважением,
Виталий
Виталий
Вчера в 17:28
modx.pro
29
0

Комментарии: 2

Евгений Webinmd
7 часов назад
+1
из коробки такого функционала нет, но можно дописать. Надо внести изменения в файл
assets/components/fileattach/js/mgr/widgets/items.grid.js

1) добавить кнопку для открытия файлового менеджера

в районе строки 540, добавить кнопку вызова менеджера файлов, в блок
getTopBar: function (config) {

fields.push({
	xtype: 'button',
	cls: 'primary-button',
	text: _('upload'),
	handler: this.uploadFiles,
	scope: this
},{  // это вторая кнопка
	xtype: 'button',
	cls: 'primary-button',
	text: 'Из уже загруженных',
	handler: this.selectFiles,
	scope: this
});

2) Добавить handler

Тут вызывается this.selectFiles
этот handler надо прописать ниже, после метода uploadFiles

selectFiles: function(btn,e) { 

	var win = Ext.getCmp('fileattach-file'); 

	if(!win){ 
		var win = MODx.load({
			xtype: 'modx-browser'
			,openTo: 'files/' 
			,id: 'fileattach-file'
			,listeners: {
				'select':{fn:this.onBrowserSelect,scope:this}
			}
		});	 
	}

	win.show();

},

onBrowserSelect: function(data,field){  
	var value = data.url;

	//console.log(data);

	MODx.Ajax.request({
		url: FileAttach.config.connectorUrl,
		params: {
			action: 'mgr/browser', 
			url: data.url,
			size: data.size,
			ext: data.ext,
			shortname: data.shortName,
			name: data.name,
			docid: FileAttach.config.docid
		},
		listeners: {
			success: {
				fn: function() { 
					var store = Ext.getCmp('fileattach-grid-items').getStore(); 
					store.load({ params: { start: 0, limit: 20} });
					Ext.getCmp('fileattach-grid-items').getView().refresh(); 
				}, scope: this
			}
		}
	});
},

Этот код из рабочего проекта и решал мои задачи, изменяйте под ваши задачи
    Виталий
    22 минуты назад
    0
    Спасибо, Евгений, за помощь.
    Завтра попробую адаптировать ваш код под себя.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    2