我最近开始在alfresco分享中使用aikau
进行开发。
我想实现一种功能,我可以将搜索结果导出到CSV文件。
为此,我可以更改后端存储库Web脚本以返回csv数据。
现在,在alfresco分享结束 - 我成功地通过向FCTSRCH_TOP_MENU_BAR
添加新窗口小部件来显示导出链接。我使用alfresco/renderers/PropertyLink
来显示此链接。现在,我缺少的部分是 - 如何调用搜索Web脚本传递额外的param format = csv,并传递用于检索结果的所有查询参数。
我坚持这一点。如果我将publishTopic用作ALF_CRUD_GET_ALL
并在那里提供URL,那么它会调用示例Web脚本(我创建它以返回示例csv响应)并返回响应。但是,csv并不是可下载的响应。我被困在这里,以便如何实现搜索结果的导出csv功能。
如果你们中的任何人能够在这里帮助我并提供你们的指导/建议,那就太棒了。
答案 0 :(得分:0)
此blog post提供了有关如何在共享中自定义搜索页面的示例。虽然它专门用于更改搜索查询,但基本扩展方法或多或少相同,因为您需要更改用于发送XHR请求的数据。我认为这里的主要区别在于您可能需要对服务进行更深入的更新 - 特别是关于用于构建高级搜索查询对象的switch statement。
如果您已经扩展或替换了默认搜索REST API,那么我希望您需要调用相同的URL,但如果您提供了一个全新的REST API来返回CSV数据,那么您还需要更改服务使用的URL。
在提供用于下载内容的链接方面,我们之前已在DragAndDropModelCreationService中实施了某些内容(请参阅generateDownload功能),但这仅适用于Chrome,因为安全限制和文件生成下载。
您最好的选择可能是将CSV内容暂时存储在隐藏位置的存储库中,然后使用标准下载链接允许其下载 - 这将更复杂,但会提供更好的跨浏览器支持。类似于“下载为ZIP”的操作。
答案 1 :(得分:0)
好的,如果提供了额外的信息,我会做以下事情......
有关将小部件添加到搜索页面的过程的信息非常详细here(尽管您没有添加视图,但您可以按照方法在具有id的小部件之后添加新的PropertyLink “FCTSRCH_RESULTS_COUNT_LABEL”)。
我将采用的方法是在订阅“ALF_RETRIEVE_DOCUMENTS_REQUEST_SUCCESS”主题的页面上包含一个额外的自定义服务(在完成的搜索中发布)。它应该将搜索响应保存在变量中,以便用户单击PropertyLink。
此自定义服务还应订阅PropertyLink发布的主题(称为“DOWNLOAD_CSV”)。然后,此自定义服务可以使用我之前的答案中描述的方法使用将在有效负载中提供的CSV数据生成文件下载。正如我所说,由于安全原因,这可能仅适用于某些浏览器。
如果您的自定义搜索WebScript能够将CSV数据存储为存储库中的节点,那么您只需在搜索响应中提供CSV数据的NodeRef,而PropertyLink可以只发布“ALF_DOWNLOAD”主题。 DocumentService来处理下载。
尝试在客户端生成要下载的文件对我认为的大多数浏览器来说都是一个问题。