我目前正在调查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或谷歌浏览器。该按钮的HTML源代码对我没什么帮助,因为我可以看到一个URL:
<div class="onActionEditOnline">
<a rel="edit,online-edit" href="" class="action-link" title="Edit Online">
<span>Edit Online</span>
</a>
</div>
在露天网站上研究事物时,人们建议学习Spring Surf,因为Alfresco / share应用程序是使用它编写的。 Spring Surf教程使用Roo,这反过来有一个Spring Surf插件,我无法运行,由其他人here报告。
返回'编辑在线'按钮本身;当我点击它时,我的客户端机器上的Word中打开word文档,我可以编辑它 然后单击“在Word中保存”,使用Sharepoint协议将文档正确保存回Alfresco。
我的问题是如何从我自己的Spring MVC应用程序中访问这个“编辑在线”功能?我想要 在我的一个JSP上显示“编辑在线”按钮,但我不知道如何与Alfresco进行交互。具有 有人这样做过吗?任何帮助表示赞赏!
答案 0 :(得分:7)
Alfresco中的Sharepoint集成使用运行Sharepoint服务器的嵌入式Jetty服务器。如果您查看“在线编辑”的URL,它将显示与所有Alfresco网页不同的端口号(默认为7070)。
我从未对此主题进行任何深入调查,但由于Sharepoint是类似WebDAV的HTTP扩展,可能使用一些特殊标头或内置浏览器插件/功能,以便在您的网站中创建“编辑在线”功能网站,您只需提供Alfresco为在线编辑创建的相同URL,并确保用户正在运行IE。这会将用户引导至VTI server,因此几乎完全将SpringMVC从图片中删除(您只需要生成正确的URL)。
编辑:alfresco如何生成VTI URL
查看actions.js,它实际上是在Share中生成编辑在线链接的基础网址。 _launchOnlineEditor
方法处理您看到的那些空链接的点击,它还提供了创建网址的逻辑:
// 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应用程序与特定网址相关联的不仅仅是简单的MS魔术,而是在您的浏览器上创建的ActiveX control导致适当的调用:
var controlProgID = "SharePoint.OpenDocuments",
//...
activeXControl = new ActiveXObject(controlProgID + ".3");
return activeXControl.EditDocument3(window, record.onlineEditUrl, true, appProgID);
这应该完成如何从自定义应用程序创建Sharepoint链接的图片,指向Alfresco存储库中的正确位置。