【问题标题】:How to use Alfresco 'Edit Online' functionality from Spring MVC application如何使用 Spring MVC 应用程序中的 Alfresco“在线编辑”功能
【发布时间】:2011-08-31 00:23:21
【问题描述】:

我目前正在研究 Alfresco 的 Sharepoint 功能。 我安装了 Alfresco 3.4 并遵循Web Quick Start Installation

然后我将一个 Word 文档上传到 Alfresco,并可以在浏览器中导航到它。我的网址是http://localhost:8080/share/page/site/webqs/document-details?nodeRef=workspace://SpacesStore/f7f5881e-320e-4d73-85e4-b62752fef1b8

使用 Internet Explorer 时,“文档操作”部分下有一个“在线编辑”按钮。遗憾的是,该按钮不适用于 Firefox 或 google chrome。按钮的 HTML 源代码对我没有多大帮助,因为我可以看到一个 URL:

<div class="onActionEditOnline">
  <a rel="edit,online-edit" href="" class="action-link" title="Edit Online">
    <span>Edit Online</span>
  </a>
</div>

在 alfresco 网站上研究事物时,人们建议学习 Spring Surf,因为 Alfresco /share 应用程序是使用它编写的。 Spring Surf 教程使用Roo,这又具有一个Spring Surf 插件,我无法运行,由其他人here 报告。

返回“在线编辑”按钮本身;当我点击它时,word文档在我的客户端机器上的Word中打开,我可以编辑它 然后在 Word 中单击保存,使用 Sharepoint 协议将文档正确保存回 Alfresco。

我的问题是如何从我自己的 Spring MVC 应用程序中访问此“在线编辑”功能?我想 在我的一个 JSP 上显示此“在线编辑”按钮,但我不知道如何与 Alfresco 交互。有 有人做过吗?任何帮助表示赞赏!

【问题讨论】:

    标签: spring-mvc alfresco


    【解决方案1】:

    Alfresco 中的 Sharepoint 集成利用了运行 Sharepoint 服务器的嵌入式 Jetty 服务器。如果您查看“在线编辑”的 URL,它将显示与所有 Alfresco 网页不同的端口号(默认为 7070)。

    我从未对该主题进行过任何深入调查,但由于 Sharepoint 是 HTTP 的类似 WebDAV 的扩展,可能使用一些特殊的标头或内置浏览器插件/功能,以便在您的您只需提供与 Alfresco 为在线编辑创建的 URL 相同的 URL,并确保用户正在运行 IE。这会将用户定向到VTI server,因此几乎完全将 SpringMVC 排除在外(您只需要生成正确的 URL)。


    编辑:alfresco 如何生成 VTI 网址

    查看actions.js,它实际上是在 Share 中生成 Edit Online 链接的 URL。 _launchOnlineEditor 方法用于处理对您看到的那些空链接的点击,它还提供了创建 url 的逻辑:

            // Ensure we have the record's onlineEditUrl populated
            if (!Alfresco.util.isValueSet(record.onlineEditUrl))
            {
               var onlineEditUrl = this.doclistMetadata.custom.vtiServer.host + ":" +
                     this.doclistMetadata.custom.vtiServer.port + "/" +
                     $combine("alfresco", loc.site.name, loc.container.name, loc.path, loc.file);
    
               if (!(/^(http|https):\/\//).test(onlineEditUrl))
               {
                  // VTI server now supports HTTPS directly http://issues.alfresco.com/jira/browse/DOC-227
                  onlineEditUrl = window.location.protocol + "//" + onlineEditUrl;
               }
               record.onlineEditUrl = onlineEditUrl;
            }
    

    如果我们有例如:

    loc.site.name == mySite
    loc.container.name == documentLibrary
    loc.path == /images
    loc.file == logo.png
    

    使用 VTI 服务器的默认值,它将生成以下 URL:

    http://localhost:7070/alfresco/mySite/documentLibrary/images/logo.png
    

    如果您还继续阅读该方法,事实证明我完全错了:将 Office 应用程序与特定 URL 关联起来不仅仅是简单的 MS 魔术,而是在您的浏览器上创建一个 ActiveX control,从而导致正确的调用:

    var controlProgID = "SharePoint.OpenDocuments",
    //...
    activeXControl = new ActiveXObject(controlProgID + ".3");
    return activeXControl.EditDocument3(window, record.onlineEditUrl, true, appProgID);
    

    这应该完成了如何从您的自定义应用程序创建 Sharepoint 链接的图片,指向 Alfresco 存储库中的正确位置。

    【讨论】:

    • +1 为您的帖子,我已经更新了原始问题,但仍然不确定基础 URL,我可能只需要使用 wireshark
    • 在你回答的最后你提到了这里的核心问题,我如何生成正确的 URL :)
    • 很遗憾,我现在无法仔细检查,但 here 我找到了一个(希望如此!)很好的例子。
    • 不错 :) 由于某种原因,我必须等待 2 小时才能获得赏金
    猜你喜欢
    • 2020-06-03
    • 1970-01-01
    • 2012-12-20
    • 2014-01-16
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    相关资源
    最近更新 更多