【问题标题】:aikau - implement export search results functionalityaikau - 实现导出搜索结果功能
【发布时间】:2016-09-18 09:06:43
【问题描述】:

我最近开始在露天分享中使用aikau 进行开发。 我想实现一个功能,我可以将搜索结果导出到 CSV 文件。

为此,我可以更改后端存储库 Web 脚本以返回 csv 数据。 现在,在 alfresco share end - 我成功地通过向FCTSRCH_TOP_MENU_BAR 添加一个新小部件来显示导出链接。我使用alfresco/renderers/PropertyLink 显示此链接。现在,对我来说缺少的部分是 - 我如何调用搜索 Web 脚本,传递额外的参数 format=csv 并传递用于检索结果的所有查询参数。

我坚持这一点。如果我将 publishTopic 用作ALF_CRUD_GET_ALL 并在那里提供 URL,那么它会调用示例 Web 脚本(我创建以返回示例 csv 响应)并返回响应。但是,csv 不是可下载的响应。我被困在这里是为了如何实现搜索结果的导出 csv 功能。

如果你们中的任何人可以在这里帮助我并提供您的指导/建议,那就太好了。

【问题讨论】:

    标签: alfresco-share aikau


    【解决方案1】:

    blog post 提供了一个示例,说明如何在 Share 中自定义搜索页面。尽管它专门解决了更改搜索查询的问题,但基本扩展方法或多或少是相同的,因为您将希望更改用于发送 XHR 请求的数据。我认为这里的主要区别在于您可能需要对服务进行更深入的更新——尤其是关于用于构建高级搜索查询对象的switch statement

    如果您扩展或替换了默认搜索 REST API,那么我希望您需要调用相同的 URL,但如果您提供了一个全新的 REST API 来返回 CSV 数据,那么您还需要更改服务使用的 URL。

    在提供下载内容的链接方面,我们之前在DragAndDropModelCreationService 中实现了一些东西(请参阅generateDownload 函数),但由于安全限制和要下载的文件的生成,这仅适用于 Chrome。

    您最好的选择可能是将 CSV 内容临时存储在存储库中的隐藏位置,然后使用标准下载链接允许下载 - 这会更复杂,但会提供更好的跨浏览器支持。 “以 ZIP 格式下载”操作也执行了类似的操作。

    【讨论】:

    • 感谢戴夫的回复。对我来说还有一些不清楚的地方,请原谅我的无知。我不能 100% 遵循您上面提到的内容。我正在使用alfresco/renderers/PropertyLink 呈现导出链接。我不确定如何发送 XHR 请求来搜索传递 format=csv 参数的 Web 脚本。如果我只是将发布主题用作ALF_CRUD_GET_ALL,我不确定在单击导出链接时如何再次将搜索参数传递给它。如果你有代码 sn-p/example 请帮助我理解。
    • 我认为您的问题可能需要澄清一下...您在哪里渲染 PropertyLink?这会显示在搜索结果中吗?从您的问题看来,您正在更新存储库 REST API 以返回 CSV 数据?您是否提供了新的 API?也许您可以提供用例的演练。如果您正在更新现有的搜索页面,那么您肯定不想使用ALF_CRUD_GET_ALL - 您需要做SearchService 正在做的事情,这更具体。同样,questino 中的更多信息将有助于提供更好的答案。
    • 当然。让我尝试向您提供我正在努力实现的目标。我正在自定义多面搜索页面,其中我试图添加一个显示搜索结果的链接(主要是在 X 结果找到的文本旁边)。为了显示链接,我使用了alfresco/renderers/PropertyLink。我已经自定义了 OOTB 存储库 Web 脚本以返回 csv 格式作为响应。现在,我缺少的一部分是搜索页面上的链接,我如何调用通过 format=csv 的搜索 Web 脚本以及最初用于获取结果的所有搜索条件。希望这可以澄清。
    • 好的,感谢您的更新,我会添加一个额外的答案
    【解决方案2】:

    好的,使用提供的额外信息,我将执行以下操作...

    关于向搜索页面添加小部件的过程的信息非常详细here(虽然您没有添加视图,但您可以按照方法在 id 为“FCTSRCH_RESULTS_COUNT_LABEL”的小部件之后添加一个新的 PropertyLink ")。

    我将采取的方法是在订阅“ALF_RETRIEVE_DOCUMENTS_REQUEST_SUCCESS”主题(在完成搜索时发布)的页面上包含一个额外的自定义服务。它应该将搜索响应保存在一个变量中,以便用户点击 PropertyLink。

    此自定义服务还应订阅由 PropertyLink 发布的主题(称为“DOWNLOAD_CSV”)。然后,此自定义服务可以使用我之前回答中描述的方法使用有效负载中提供的 CSV 数据生成文件下载。正如我所说,出于安全原因,这可能仅适用于某些浏览器。

    如果您的自定义搜索 WebScript 能够将 CSV 数据作为节点存储在存储库中,那么您只需在搜索响应中提供 CSV 数据的 NodeRef,PropertyLink 就可以发布“ALF_DOWNLOAD”主题DocumentService 来处理下载。

    我认为对于大多数浏览器来说,尝试生成要在客户端下载的文件将是一个问题。

    【讨论】:

    • 谢谢Dave,我会努力实现的。
    猜你喜欢
    • 1970-01-01
    • 2020-07-18
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    • 1970-01-01
    • 2021-01-08
    • 2019-02-13
    相关资源
    最近更新 更多