我正在自定义ICN(IBM Content Navigator)2.0.3,我的要求是限制用户上传超过10mb的文件,并且仅允许的文件为.pdf或.docx。
我知道我必须扩展/自定义AddContentItemDialog,但是关于如何执行操作或其中的任何视频的详细信息很少。如果有人可以提供指导,我将不胜感激。
谢谢
我安装了开发环境,但是不确定如何扩展AddContentItemDialog。
public void applicationInit(HttpServletRequest request,
PluginServiceCallbacks callbacks) throws Exception {
}
我还想知道如何将更改发布到ICN。
答案 0 :(得分:0)
这很容易扩展。我建议阅读ICN红皮书,以获取有关如何做的详细信息。但这是相当标准的代码。
关于将代码部署到ICN,有两种方法: -如果您使用的是插件:只需替换服务器位置上的Jar文件,然后重新启动WAS。 -如果使用的是EDS:您需要重新部署Web服务并重新启动WAS。
希望这会有所帮助。
谢谢
答案 1 :(得分:0)
尽管有许多方法可以做到这一点,但实际上一种方法是在扩展时扩展或扩展AddContentItemDialog。看了(相当糟糕的IBM文档)之后,我发现您可能可以使用onAdd event/method
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);
}
}
});
});
只需确保在打开实际对话框之前就执行了此代码。最好的方法是将代码包装在新插件中。
现在开始创建/部署插件->最简单的方法是this wizard for Eclipse(对于较新的Eclipse版本,也请参见repackaged version)。只需创建一个新的任意插件,然后将此javascript代码粘贴到生成的.js文件中即可。
此外,最好注意,您仅限制“此特定对话框”上载特定文件。最好还创建一个requestFilter来限制addContent api的所有可能使用...