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 存储库中的正确位置。