如何从 Spring MVC 应用程序使用 Alfresco“在线编辑”功能

2024-03-31

我目前正在研究 Alfresco 的 Sharepoint 功能。 我安装了 Alfresco 3.4 并按照网络快速启动安装 http://wiki.alfresco.com/wiki/Web_Quick_Start_Installation_and_Configuration.

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

在露天站点研究事物时,人们推荐学习春季冲浪 http://www.springsurf.org因为 Alfresco /share 应用程序是使用它编写的。 Spring Surf 教程使用Roo http://www.springsource.org/roo,这又有一个 Spring Surf 插件,我无法运行,由其他人报告here http://forum.springsource.org/showthread.php?104369-Spring-roo-addon-with-spring-surf.

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

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


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

我从未对这个主题进行过任何深入的调查,但由于 Sharepoint 是一个类似 WebDAV 的 HTTP 扩展,可能使用一些特殊的标头或内置的浏览器插件/功能,以便在您的网站中创建“在线编辑”功能,您只需必须提供 Alfresco 为在线编辑创建的相同 URL,并确保用户正在运行 IE。这将引导用户到VTI服务器 http://wiki.alfresco.com/wiki/Vti,因此几乎完全将 SpringMVC 排除在外(您只需生成正确的 URL)。


编辑:alfresco 如何生成 VTI URL

看一下动作.js http://svn.alfresco.com/repos/alfresco-open-mirror/alfresco/HEAD/root/projects/slingshot/source/web/components/documentlibrary/actions.js,它实际上生成共享中编辑在线链接的 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控件 http://msdn.microsoft.com/en-us/library/ms454230.aspx在您的浏览器上创建,从而导致正确的调用:

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 Spring MVC 应用程序使用 Alfresco“在线编辑”功能 的相关文章

随机推荐