在回答您的问题之前,我想说我认为在不自定义 ICN 的情况下还有其他选项可以做到这一点。我能看到的最简单的两个是:
- 使用条目模板,这样类选择器将在默认情况下在签入时被禁用
- 删除 privChangeClass 权限,这应该隐藏类选择器(如果您想保留完整的权限,可能会很困难。)
现在,如果您想在不使用条目模板或权限的情况下隐藏它。
是的,扩展 ecm.widget.layout.CommonActionHandler 并覆盖 actionCheckIn 函数并使用您的 CheckInDialog 而不是默认的。然后使用您的 CommonActionHandler 而不是桌面中的默认值。我认为还没有办法从管理桌面 UI 更改 ActionHandler(如果我错过了,请告诉我),虽然它是由客户端在 _loadDesktop 函数上加载并由外观选项卡设置的,但值是硬编码,因此您可能必须在加载后注入它更好,调用 ecm.model.desktop.setActionHander(actionhandler) 其中 actionhandler 是实例,而不是插件中的类名(字符串)。
您可以,如果您有多个桌面并且您希望一些桌面使用新的签入对话框而一些不使用,这将使事情更容易管理。
不,这是一个糟糕的主意 :) ICN 的未来升级和你的代码将是一场噩梦,交付过程比简单的配置技巧或 ICN 插件复杂得多,这就是插件的用途。
还有一个不太干净但非常简单的解决方案是在 postCreate 函数上的 CheckInDialog.prototype 之后进行切面,然后将其domStyle.set(this.addContentItemPropertiesPane._contentClassSelectorDiv, "display", "none");
隐藏在所有 CheckInDialogs 上。