如何自定义addContentItemDialog以限制在IBM Content Navigator中上传超过10mb的文件

时间:2019-01-16 12:12:47

标签: plugins dojo ibm-content-navigator

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

我知道我必须扩展/自定义AddContentItemDialog,但是关于如何执行操作或其中的任何视频的详细信息很少。如果有人可以提供指导,我将不胜感激。

谢谢

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

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

我还想知道如何将更改发布到ICN。

2 个答案:

答案 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的所有可能使用...

相关问题