0

我正在定制 ICN (IBM Content Navigator) 2.0.3,我的要求是限制用户上传超过 10mb 的文件,并且只允许使用 .pdf 或 .docx 文件。

我知道我必须扩展/自定义 AddContentItemDialog,但是关于如何做的细节非常少,或者上面的任何视频。如果有人可以指导,我将不胜感激。

谢谢

我安装了开发环境,但不确定如何扩展 AddContentItemDialog。

public void applicationInit(HttpServletRequest request,
        PluginServiceCallbacks callbacks) throws Exception {
}

我还想知道如何将更改推广到 ICN。

4

2 回答 2

0

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

于 2019-07-09T14:03:27.620 回答
0

这可以很容易地扩展。我建议阅读 ICN 红皮书以获取有关如何执行此操作的详细信息。但这是非常标准的代码。

关于将代码部署到 ICN,有两种方法: - 如果您使用插件:只需替换服务器位置上的 Jar 文件并重新启动 WAS。- 如果您使用 EDS:您需要重新部署 Web 服务并重新启动 WAS。

希望这可以帮助。

谢谢

于 2019-01-30T11:49:16.573 回答