从文件内容列表中删除 "MIME type" 列

Remove "MIME type" column from Filent Content List

我正在使用脚本适配器,通过传递有效负载来争夺 "Search with values" 事件

中的 内容列表

当 Contend 加载到内容列表时,我有一个自定义视图来预览它们。但是如果我点击 MIME 类型列,它会打开一个带有映射查看器的单独视图

所以我需要删除此列或使其不可点击

1) 我正在将搜索值传递给内容列表的 "Search with values" 事件,我可以从哪里处理内容列表的竞争加载,我可以使用任何 Dojo 事件?

2) 使用 Script Adapter 我可以不用 "response filter"

编辑:

正如 "Ivo Jonker" 很好地解释的那样(在他的回答中 - "or try to specifically locate the widgets on your page" 和他的示例代码)

responsed = page.ContentList8.ecmContentList.getResultSet();
var cols = responsed.structure.cells[0];
        for (i=cols.length-1; i>0; i--){
            var col = cols[i];

            if (col.field=="mimeTypeIcon")
                cols.splice(i,1);
        }
page.ContentList78.ecmContentList.setResultSet(responsed);

我只是删除了这一行。再次感谢可爱的博客,希望你继续发表更多精彩的文章。

  1. 通过 Search With Values 事件传递的值最终将由 icm.pgwidget.contentlist.dijit.DocumentSearchHandler 处理 依次创建一个 SearchTemplate 来执行搜索 (ecm.model.SearchTemplate.prototype.search)。一种选择是 aspect/before/around DocumentSearchHandler#query 来操纵搜索结果并通过这种方式删除该列。

  2. 然而,接线不提供任何句柄来实现特定查询-结果集组合,让您在全球范围内修复此问题 (icm.pgwidget.contentlist.dijit.DocumentSearchHandler.prototype#query),或者尝试专门定位您页面上的小部件。

就个人而言,考虑到#2,如果您认为全局解决方案不会成为问题,我会选择 responsefilter-option,或者我个人更愿意创建一个简单的 ICM 小部件 instantiates/implements a "plain" ecm.widget.listView.ContentList 并暴露出一条线来设置 ecm.model.Resultset.

然后您就可以在脚本适配器中创建自己的搜索查询、删除列并传递结果集。

脚本适配器可能是这样的:

var scriptadapter=this;

var queryParams={};
    queryParams.query = "SELECT * FROM Document where id in /*your list*/";
    queryParams.retrieveAllVersions = false;
    queryParams.retrieveLatestVersion = true;
    queryParams.repository = ecm.model.desktop.repositories[0];
    queryParams.resultsDisplay = {
        "sortBy": "{NAME}",
        "sortAsc": true,
        "columns": ["{NAME}"],
        "honorNameProperty": true};

    var searchQuery = new ecm.model.SearchQuery(queryParams);

    searchQuery.search(function(response/*ecm.model.Resultset*/){
        //remove the mimeTypeIcon
        var cols = response.structure.cells[0];
        for (i=cols.length-1; i>0; i--){
            var col = cols[i];
            if (col.field=="mimeTypeIcon")
                cols.splice(i,1);
        }

        //emit the resultset to your new contentlist, be sure to block the regular synchrounous output of the scriptadapter
        scriptadapter.onPublishEvent("icm.SendEventPayload",response);

        //The contentlist wire would simply do contentlist.setResultSet(response);
});