Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>This is what we used on one of our projects to create folders for a path.</p> <pre><code>static FolderData GetOrCreateFolder(List&lt;string&gt; folders, FolderData root, SessionAwareCoreService2010Client client) { var filter = new OrganizationalItemItemsFilterData(); filter.ItemTypes = new [] { ItemType.Folder }; var items = client.GetListXml(root.Id, filter). Elements(TRIDION_NAMESPACE + "Item"); foreach (var element in items) { if (folders.Count == 0) { break; // break from foreach } var titleAttribute = element.Attribute("Title"); var idAttribute = element.Attribute("ID"); if (titleAttribute != null &amp;&amp; titleAttribute.Value == folders[0] &amp;&amp; idAttribute != null) { // folder exists FolderData fd = client.Read(idAttribute.Value, EXPANDED_READ_OPTIONS) as FolderData; // We just took care of this guy, remove it to recurse folders.RemoveAt(0); return GetOrCreateFolder(folders, fd, client); } } if (folders.Count != 0) { //Folder doesn't exist, lets create it and return its folderdata var newfolder = new FolderData(); newfolder.Title = folders[0]; newfolder.LocationInfo = new LocationInfo { OrganizationalItem = new LinkToOrganizationalItemData { IdRef = root.Id } }; newfolder.Id = "tcm:0-0-0"; var folder = client.Create(newfolder, EXPANDED_READ_OPTIONS) as FolderData; folders.RemoveAt(0); if (folders.Count &gt; 0) { folder = GetOrCreateFolder(folders, folder, client); } return folder; } return root; } </code></pre> <p>So you'd invoke it with something like this:</p> <pre><code>var root = client.Read("tcm:1-1-2", null) as FolderData; var pathParts = "/ABCD/DEFG/aaaaa".Trim('/').Split('/').ToList(); var folder = GetOrCreateFolder(pathParts, root, client); </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload