如何在Alfresco Share中禁用快速共享?

时间:2012-12-14 15:41:44

标签: customization share alfresco

我正在尝试找到一种方法来禁用系统范围内的Alfresco 4.2.b中的快速共享功能,或者如果不可能,至少从文档库和文档详细信息页面中删除quickshare链接。

我尝试过的第一件事就是利用 system.quickshare.enabled 属性,该属性可在 alfresco-global.properties 文件中配置。它只是不起作用抛出下一个异常:

我发现了一个问题:https://issues.alfresco.com/jira/browse/ALF-16233

由于它似乎是一个错误,并将在更多版本中修复,我专注于尽可能从UI中删除quickshare链接。顺便说一句,我找到了一个相关的帖子,它有助于:https://forums.alfresco.com/en/viewtopic.php?f=48&t=46659。我已成功删除了文档详细信息页面中的 文档链接 区域,方法是创建下一个扩展名:

<extension>
    <modules>
        <module>
            <id>Removes from document-details page the Share region.</id>
            <auto-deploy>true</auto-deploy>
            <components>
                <component>
                    <scope>template</scope>
                    <region-id>document-links</region-id>
                    <source-id>document-details</source-id>
                    <sub-components>
                        <sub-component id="default">
                            <evaluations>
                                <evaluation id="hideDocumentLinks">
                                    <render>false</render>
                                </evaluation>
                            </evaluations>
                        </sub-component>
                    </sub-components>
                </component>
            </components>
        </module>
    </modules>
</extension>

没关系。我还有文档详细信息页面中的quickshare链接,在 share-config.xml 文件中执行了一些更改,特别是在社交部分中留空标记:

<config evaluator="string-compare" condition="Social">
      <!-- Alfresco QuickShare social widget - for creating public url that can be shared -->
      <quickshare>
         <!--
            Will be available as Alfresco.constants.QUICKSHARE_URL using javascrip in the browser.
            If changing this, make sure this url matches the quickshare rule in urlrewrite.xml
         -->
         <url>{context}/s/{sharedId}</url>
      </quickshare>

      <!-- Alfresco LinkShare social widget - share a link to social sites -->
      <linkshare>
         <!--
            These actions will be available as Alfresco.constants.LINKSHARE_ACTIONS using javascript in the browser.
            Labels will be retrieved from msg key "linkshare.action.<id>.label" unless explicitly provided as an
            attribute to the action element.
            Each param value accepts the following input: {shareUrl}, {displayName} or a msg key that will be prefixed.
            I.e. {body} for the email action's href param will be retrieved using "linkshare.action.email.body".
         -->
         <action id="email" type="link" index="10">
            <param name="href">mailto:?subject={subject}&amp;body={body}</param>
            <param name="target">new</param>
         </action>
         <action id="facebook" type="link" index="20">
            <param name="href">https://www.facebook.com/sharer/sharer.php?u={shareUrl}&amp;t={message}</param>
            <param name="target">new</param>
         </action>
         <action id="twitter" type="link" index="30">
            <param name="href">https://twitter.com/intent/tweet?text={message}&amp;url={shareUrl}</param>
            <param name="target">new</param>
         </action>
         <action id="google-plus" type="link" index="40">
            <param name="href">https://plus.google.com/share?url={shareUrl}</param>
            <param name="target">new</param>
         </action>
      </linkshare>

   </config>

由于此逻辑在node-header.get.js webscript中定义:

model.showQuickShare = (!model.isContainer && model.showQuickShare && config.scoped["Social"]["quickshare"].getChildValue("url") != null).toString();

尽管如此,quickshare链接仍然在文档库页面中,这让我感到惊讶。我相信上面存在类似的逻辑,用于显示或不显示文档库页面中的链接,但事实并非如此。所以,现在我想知道我还能做些什么...正如我所看到的那样,在客户端使用documentlibrary小部件( documentlist.js )生成该链接:

    if (!record.node.isContainer)
    {
       html += '<span class="item item-social item-separator">' + Alfresco.DocumentList.generateQuickShare(this, record) + '</span>';
    }

我正在考虑创建一个自定义documentlibrarywidget的扩展程序,如下所述:[url] http://blogs.alfresco.com/wp/ddraper/2012/05/22/customizing-share-javascript-widget -instantiation部分-1 / [/ URL]。那可能吗?

我想知道在开始自定义窗口小部件之前是否有更简单的方法来执行我需要做的事情。如果不存在那种“神奇”的方式,我想知道所描述的方法是否正确。

提前致谢。

1 个答案:

答案 0 :(得分:2)

由于documentlibrary小部件(documentlist.js)的扩展并不像我预期的那么简单,我通过一个更容易,更简单和非侵入式的解决方案来解决它,该解决方案基于其中一个评论中解释的想法原始问题。一般而言,它包括定义扩展模块,该模块在每个页面的标题中添加自定义CSS。 CSS以这种方式覆盖了quickshare链接的样式:

/* Disables the Quick Share link both in documentlibrary and document-details pages */
.item-social a.quickshare-action {
    visibility: hidden;
}

这里解释了如何定义这种扩展模块:https://forums.alfresco.com/en/viewtopic.php?f=48&t=47312#p140623

希望有助于其他人尝试实现同样的目标。