我正在定制 ICN(IBM Content Navigator)2.0.3,我的要求是限制用户上传超过 10MB 的文件,并且只允许.pdf或.docx的文件。
我知道我必须扩展/自定义AddContentItemDialog,但是关于如何做到这一点的细节很少,或者它的任何视频。如果有人可以指导,我将不胜感激。
谢谢
我安装了开发环境,但不确定如何扩展AddContentItemDialog。
public void applicationInit(HttpServletRequest request,
PluginServiceCallbacks callbacks) throws Exception {
}
我还想知道如何推出对 ICN 的更改。
可以很容易地扩展。我建议阅读ICN红皮书,了解有关如何做到这一点的详细信息。但它是非常标准的代码。
关于将代码部署到 ICN,有两种方法:- 如果您使用的是插件:只需替换服务器位置上的 Jar 文件并重新启动 WAS。- 如果您使用的是 EDS:您需要重新部署 Web 服务并重新启动 WAS。
希望这有帮助。
谢谢
尽管有很多方法可以做到这一点,但确实有一种方法是扩展或增加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文件中。
此外,最好注意的是,您仅将"此特定对话框"限制为上传特定文件。创建一个请求过滤器来限制 addContent api 的所有可能用途可能是个好主意......