如何覆盖cq小部件,以便它也可以在SiteAdmin中使用

时间:2014-07-18 08:04:01

标签: cq5 aem

CQ.tagging.TagInputField提供了两个不能组合使用的配置参数:

  • tagsBasePath
  • 命名空间

以OOTB facebook标签为例,我想限制对话框只显示收藏的团队。结构是这样的:

Facebook Tags

所以我将tagBasePath设置为/etc/tags/facebook,将命名空间设置为[favorite_teams]。这样做了它应该做的事情,只显示对话框中的两个团队。但是当您单击它时,会抛出JavaScript异常。问题在于/libs/cq/tagging/widgets/source/CQ.tagging.js

中定义的以下方法
CQ.tagging.parseTag = function(tag, isPath) {
    var tagInfo = {
        namespace: null,
        local: tag,
        getTagID: function() {
            return this.namespace + ":" + this.local;
        }
    };

    // parse tag pattern: namespace:local
    var colonPos = tag.indexOf(isPath ? '/' : ':');
    if (colonPos > 0) {
        // the first colon ":" delimits a namespace
        // don't forget to trim the strings (in case of title paths)
        tagInfo.namespace = tag.substring(0, colonPos).trim();
        tagInfo.local = tag.substring(colonPos + 1).trim();
    }

    return tagInfo;
};

它不尊重窗口小部件上设置的配置,并返回命名空间为null的tagInfo。然后我在我的创作JavaScripts中重叠了该方法,但这当然不适用于SiteAdmin,因为我的自定义JS没有包含在内。

那么,我是否真的必须覆盖libs下面的CQ.tagging.js,或者我可以以某种方式将我的叠加层注入SiteAdmin,以便从那里打开的PageProperties Dialog也能正常工作?

更新:我与Adobe支持人员就此进行了聊天,并指出如果您使用tagsBasePath,则需要将其放置在/etc/tags以下的其他位置。但是这不会起作用,TagListServlet将不会返回任何标记,因为/etc/tags也会在{+ 1}}中固定在TagManager中。我现在在其位置覆盖上面提到的js,很清楚如果我们安装了修补程序或更新,我需要检查它。有人有一个更优雅的解决方案,我仍然感激不尽。

0 个答案:

没有答案