使用Django和Alfresco的文件浏览器

时间:2016-01-14 09:57:06

标签: django alfresco

我有一个Django站点和本地安装的Alfresco(社区版)。我的一个模型包含一个文件引用,该引用映射到Alfresco中的文档。视图应该有一个生成文件浏览器的字段,该文件浏览器可以访问Alfresco中的存储库结构,以便用户可以在任何版本中选择他们想要的任何文件。

我查看了CMSIlib模块,似乎提供了后端代码所需的所有交互。虽然下载文档似乎是clunky

有很多Django file browsers,但似乎没有CMSIlib接口。

我是否需要自己编码或错过了什么?

版本为Alfresco Community v5.0.0 (d r99759-b2) schema 8022 Spring Surf and Spring WebScripts - v5.0.0

2 个答案:

答案 0 :(得分:1)

老实说,我不是蟒蛇人!但我听说官方的#alfresco IRC频道认为cmislib不是一个活跃的项目,而且它的问题只会偶尔发生一次......然而,RESTful api可能被认为是一个很好的选择。你的用例:

要使用RESTful api访问露天内容,您应该查询此webscript:/alfresco/d/<d|a>/<workspace>/<store>/<nodeId>/<filename> 其中:

  • da指的是直接/附加模式
  • <workspace><store><nodeId>引用您的内容nodeRef
  • <filename>您选择的文件名

因此,您应该GET申请一个类似于http://<host>:<port>/alfresco/d/d/workspace/SpacesStore/8444ad61-4734-40e3-b2d4-b8b1c81347fd/myFile.ext的网址

注意:根据您节点上设置的权限,您可能需要将alf_ticket附加到经过身份验证的露天用户的URL。请查看this以获取进一步的见解。

更新1: 如果您在识别文件nodeRef时遇到问题,那么您可以设置实现自定义逻辑的repo webscript(浏览某个文件夹/按名称或元数据搜索文档....) 如果您不熟悉webscript开发,请检查Jeff Pott's tutorial on the subject

更新2: 要开始使用webscript开发,请查看Alfresco docs / wiki!

检查this wiki page以了解如何检索给定节点的子项! 或者检查this wiki page以了解如何开发实现自定义业务逻辑的网页脚本。

答案 1 :(得分:0)

如果您没有任何针对YUI javascript库(不再主动维护)的内容,您可以集成Alfresco Share中已有的对象查找器。图书馆在

private void FormatCode(List<string> codeList)
    {
        for (int i = 0; i < codeList.Count; i++)
        {
            codeList[i] = FormatCode(codeList[i]);
        }
    }

    private string FormatCode(string code)
    {
        string formatted = String.Empty;
        MatchCollection matches = new Regex("\".*?\"").Matches(code);
        for (int i = 0; i < matches.Count; i++)
        {
            Match match = matches[i];
            string toFormat = i == 0 ? code.Substring(0, match.Index) : code.Substring(matches[i - 1].Index + matches[i - 1].Length, code.Length - match.Index);

            toFormat = String.Join(" ", toFormat.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries));
            formatted += toFormat + matches[i].Value;

            if(i == matches.Count - 1)
                formatted += String.Join(" ", code.Substring(match.Index + match.Length).Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries));
        }

        return formatted;
    }

鉴于您不在Share内,您需要对其进行一些修改。

说实话,我不知道它是否可行,因为它有其他依赖关系但是作为一个浏览器站点库,理论上可以在任何地方集成。