Несмотря на то, что существует много способов сделать это, один из них действительно расширяет или увеличивает AddContentItemDialog, как вы указали. Посмотрев на (довольно скудную документацию IBM), я подумал, что вы, вероятно, можете использовать onAdd событие / метод
Dojo / Aspect # around позволяет вам сделать именно это, например:
require(["dojo/aspect", "ecm/widget/dialog/AddContentItemDialog"], function(aspect, AddContentItemDialog) {
aspect.around(AddContentItemDialog.prototype, "onAdd", function advisor(original) {
return function around() {
var files = this.addContentItemGeneralPane.getFileInputFiles();
var containsInvalidFiles = dojo.some(files, function isInvalid(file) {
var fileName = file.name.toLowerCase();
var extensionOK = fileName.endsWith(".pdf") || fileName.endsWith(".docx");
var fileSizeOK = file.size <= 10 * 1024 * 1024;
return !(extensionOK && fileSizeOK);
});
if (containsInvalidFiles) {
alert("You can't add that :)");
}else{
original.apply(this, arguments);
}
}
});
});
Просто убедитесь, что этот код выполняется перед тем, как откроется фактический диалог. Лучший способ добиться этого - обернуть этот код в новый плагин.
Теперь о создании / развертывании плагинов -> Самый простой способ - этот мастер для Eclipse (см. Также перепакованная версия для более новых версий Eclipse). Просто создайте новый произвольный плагин и вставьте этот код JavaScript в сгенерированный файл .js.
Кроме того, было бы полезно отметить, что вы ограничиваете «этот конкретный диалог» только для загрузки определенных файлов. Вероятно, было бы неплохо создать requestFilter , чтобы ограничить все возможные варианты использования addContent api ...