寻找合适的方式来定制Alfresco分享

时间:2014-11-11 19:55:16

标签: alfresco alfresco-share

我的公司有一个独特的要求,即在alfresco共享的特定文件夹中为每个子文件夹创建一个页面。所以基本上会有数百个子文件夹和相应的数百个页面代表它。该文件夹的页面应该包含指向其子文件夹的链接,甚至可以是可折叠列表形式的文档,如下所示:

Folder 1
 -Category 1
  Doc 1
  Doc 2
 -Category 2
  -Sub-category 1
    doc 3

我希望在页面的一侧显示如上所示的内容,而另一方应该拥有与该文件夹相关的所有最近活动,例如谁添加了文档,进行了哪些编辑,是否有任何评论等。我搜索了很多相关的内容,但我不确定alfresco是否支持这种定制。我发现了一些关于使用JSON小部件在共享中创建自定义页面的非常好的教程,但是在这种情况下不要认为它会有所帮助。其他选项是为每个创建的新文件夹生成一个html页面,并使用javascript填充它。但是这种方法在设计页面方面不具备很大的灵活性。有没有人知道这个要求有更好的方法或想法?我真的很感激任何想法。

2 个答案:

答案 0 :(得分:2)

您可以在alfresco共享中创建新的文件夹树组件,以满足您的要求。

Alfresco共享页面由多个comoponents组成,这些组件在数据和依赖性方面是一种自给自足的组件(不包括很少的露天共同依赖)。

以下是approch的大纲

Create one folder tree comopnent in alfresco, which will be nothing
but a webscript which render related webscripts output on page in
which component is included.

Create one Dynamic YUI tree with some dummy data and check weather
you are able to generate or not.(Just to make sure you have all
depenency included).

Create one data webscript on repository side which will fetch folder
structure related data from repository.Make it in such way that if
you pass folder noderef if will return all childrens under
that.There is one similar webscript also avilable out of box  may be
you could reuse that.

Once you have that webscript working properly call that repository
webscript to populate your dynamic tree and remove all dummy data.

我希望这能为你提供良好的起点。

您肯定会找到每个步骤的文档。

答案 1 :(得分:2)

我只是把它写成答案(与我以前的评论有关)。我已经用这种方式做了类似的事情(使用评论中提供的链接:

  • 创建一个简单的露天网页脚本,返回您需要的json(在最近修改过的文档中)。我已经通过列出文件夹来完成它,这是mywebscript.get.json.ftl

    {
    "docprop" : [
        <#list companyhome.childByNamePath["MyFolder"].children as child>
        {
        "name" : "${child.properties.name}" ,
    
    "author" : "${child.properties["cm:author"]}",
    
    "CreatedDate" : "${child.properties.created?datetime}"
    }
    <#if child_has_next> , </#if>
    
    </#list>
    ]
    }
    
  • 创建共享窗口小部件控制器文件,您可以使用retrievedoc.get.js

    调用此Web脚本
    var connector = remote.connect("alfresco");
    var data = connector.get("/mywebscript.json"); //the url is declared in your `mywebscript.get.desc.xml`
    
    // create json object from data
    var result = eval('(' + data + ')');
    model.docprop = result["docprop"];
    
  • 使用retrievedoc.get.html.ftl创建共享小部件演示文稿模板:

    <div class="dashlet">
    <div class="title">${msg("header.retrievedocTitle")}</div>
    <div class="body retrievedoc">
        <table>
            <tr>
                <th>Name: </th>
                <thAuthor: </th>
                <th>Created: </th>
            </tr>
            <#list docprop as t>
                <tr>
                    <td>${t.name}</td>
                    <td>${t.author}</td>
                    <td>${t.CreatedDate}</td>
                </tr>
            </#list>
        </table>
    </div>
    

然后,您需要在共享中注册您的小部件,并在仪表板中使用它。它将调用Alfresco脚本并使用结果填充小部件。显然,您需要更改Alfresco脚本以返回最近的活动(您可以进行如下查询:在过去24小时内修改的所有文档,或类似的内容。但方法是相同的。 希望它有所帮助。