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

lsmd5eda  于 2022-12-16  发布在  Dojo
关注(0)|答案(2)|浏览(162)

我正在定制ICN(IBM内容导航器)2.0.3,我的要求是限制用户上传超过10 MB的文件,只允许文件是.pdf或. docx。
我知道我必须扩展/自定义AddContentItemDialog,但是关于如何做的细节非常少,或者没有任何关于它的视频。如果有人能指导我,我将不胜感激。
谢谢
我安装了开发环境,但不确定如何扩展AddContentItemDialog。

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

我还想知道如何推出ICN的变化。

dxpyg8gm

dxpyg8gm1#

这可以很容易地扩展。我建议阅读ICN红皮书了解如何做的细节。但它是相当标准的代码。
关于向ICN推出代码,有两种方法:- 如果您正在使用插件:只需替换服务器位置上的Jar文件并重新启动WAS。-如果您正在使用EDS:您需要重新部署Web服务并重新启动WAS。
希望这个有用。
谢谢

noj0wjuj

noj0wjuj2#

尽管有很多方法可以做到这一点,但有一种方法确实是按照您的要求扩展或扩充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);
            }

        }
    });
});

只要确保这段代码在实际对话框打开之前就被执行了。实现这一点的最好方法是将这段代码 Package 在一个新的插件中。
现在开始创建/部署插件-〉最简单的方法是this wizard for Eclipse(另请参阅新Eclipse版本的repackaged version),只需创建一个新的插件,并将此javascript代码粘贴到生成的.js文件中。
另外,注意一下你只限制“这个特定的对话框”上传特定的文件是很好的。创建一个requestFilter来限制addContent API的所有可能的使用可能是一个好主意。

相关问题