尽管有很多方法可以做到这一点,但确实有一种方法是扩展或增加您引用的 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 的所有可能用途......