Ektron Workarea

时间:2013-01-24 05:43:35

标签: ektron

我需要开发一个应用程序来提取Ektron Workarea的Content选项卡中的所有内容,我还必须保留文件夹的树结构(分类,集合,表格等)。当我点击我需要的内容时在后面的代码中获取Content ID。我需要在一个函数中完成所有这些。

我在工作区中使用内容块小部件的概念尝试了这个要求。当我们拖动该小部件并对其进行编辑时,弹出窗口会显示树结构中的工作区文件夹。但是当我创建一个aspx页面时,把相同的代码和浏览页面我没有得到所有内容的树结构。只有主要标签(文件夹,分类和搜索)是可见的。然后我在aspx页面中拖动用户控件。但它也是doest工作

那么我将如何解决上述问题。

我可以使用API​​代码从工作区中提取树结构中的所有内容吗?。那么有人可以给出API代码来解决吗?

请有人回复!

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

更新

我想我第一次误读了你的问题。请允许我稍微扩展一下我的答案。我对Web服务的原始答案假定您从某种“表示层”呈现内容树 - 不同的网站,控制台应用程序或WPF / WinForms应用程序等。

您可以使用以下内容获取递归文件夹结构:

private FolderData GetFolderWithChildren(long folderId)
{
    var folderApi = new Ektron.Cms.API.Folder(); 
    var folderData = folderApi.GetFolder(folderId);

    // This next method is marked as obsolete in v9.0;
    // a newer overload is available in v9.0, but I
    // don't know if it's available in v8.0
    folderData.ChildFolders = folderApi.GetChildFolders(folderId, true);
}

我对你究竟想要完成什么感到困惑。如果要以图形方式显示整个树结构,是否尝试从内容窗口小部件的编辑视图中获取代码和标记,并在非编辑视图中使用它?

我必须说,你要求“我需要在一个功能中完成所有这些工作”让我有点担心。工作区内容树可以非常快速地变得非常大。如果您正在尝试加载所有文件夹所有分类所有收藏品等等。那么用户可能会等待很长时间才能将页面转到加载,您可能会遇到超时问题。

- 原始答案 -

Ektron v8.0没有3层选项,这太糟糕了,因为这样可以让你的工作变得更轻松。在v8.0中,您可以参考ASMX Web服务,包括:

  • /workarea/webservices/content.asmx
  • /workarea/webservices/webserviceapi/user/user.asmx

还有很多东西;浏览/ workarea /中的文件夹,查看可用的内容。

自从我使用这些服务已经有一段时间了,所以我有点生疏......

假设您添加了对上面列出的这两个服务的引用,并将它们命名为ContentService和UserService。您要做的第一件事是设置身份验证标头。然后,您可以像旧的旧版api一样调用服务方法。

    var contentApi = new ContentService.Content();
    contentApi.AuthenticationHeaderValue = new ContentService.AuthenticationHeader();
    contentApi.AuthenticationHeaderValue.Username = username;
    contentApi.AuthenticationHeaderValue.Password = password;
    contentApi.AuthenticationHeaderValue.Domain = domain;

    var userApi = new UserService.User();
    userApi.AuthenticationHeaderValue = new UserService.AuthenticationHeader();
    userApi.AuthenticationHeaderValue.Username = username;
    userApi.AuthenticationHeaderValue.Password = password;
    userApi.AuthenticationHeaderValue.Domain = domain;

    var ud = userApi.GetUserbyUsername("jimmy456");

    long folderID = 85;
    bool recursive = true;
    ContentData[] folderContent = contentApi.GetChildContent(folderID, recursive, "content_id");