/// <summary> /// Gets the metadata schema fields. /// </summary> /// <param name="client">Tridion client object.</param> /// <param name="tcmSchema">The TCM schema.</param> /// <returns></returns> public static List <ItemFieldDefinitionData> GetSchemaMetadataFields(IAlchemyCoreServiceClient client, string tcmSchema) { SchemaFieldsData schemaFieldsData = client.ReadSchemaFields(tcmSchema, true, null); if (schemaFieldsData == null || schemaFieldsData.MetadataFields == null) { return(null); } return(schemaFieldsData.MetadataFields.ToList()); }
/// <summary> /// Reads the item from Tridion. /// </summary> /// <param name="client">Tridion client object.</param> /// <param name="id">Tcm ID.</param> /// <returns></returns> public static IdentifiableObjectData ReadItem(IAlchemyCoreServiceClient client, string id) { try { return(client.Read(id, new ReadOptions() { LoadFlags = LoadFlags.Expanded })); } catch (Exception) { return(null); } }
/// <summary> /// Gets the used items of source item. /// </summary> /// <param name="client">Tridion client object.</param> /// <param name="tcmItem">Item TCM id.</param> /// <param name="itemTypes">The item types.</param> /// <returns></returns> public static List <string> GetUsedItems(IAlchemyCoreServiceClient client, string tcmItem, ItemType[] itemTypes = null) { UsedItemsFilterData filter = new UsedItemsFilterData(); filter.BaseColumns = ListBaseColumns.Id; if (itemTypes != null) { filter.ItemTypes = itemTypes; } List <string> items = client.GetListXml(tcmItem, filter).ToList().Select(x => x.TcmId).ToList(); return(items); }
/// <summary> /// Gets using items of source item. All revisions discovered /// </summary> /// <param name="client">Tridion client object.</param> /// <param name="tcmItem">Item TCM id.</param> /// <param name="current">if set to <c>true</c> [current].</param> /// <param name="itemTypes">The item types.</param> /// <returns></returns> public static List <string> GetUsingItems(IAlchemyCoreServiceClient client, string tcmItem, bool current = false, ItemType[] itemTypes = null) { UsingItemsFilterData filter = new UsingItemsFilterData(); filter.IncludedVersions = current ? VersionCondition.OnlyLatestVersions : VersionCondition.AllVersions; filter.BaseColumns = ListBaseColumns.Id; if (itemTypes != null) { filter.ItemTypes = itemTypes; } List <string> items = client.GetListXml(tcmItem, filter).ToList().Select(x => x.TcmId).ToList(); return(items); }
public static string GetBluePrintTopTcmId(IAlchemyCoreServiceClient client, string id) { if (id.StartsWith("tcm:0-")) { return(id); } var list = client.GetSystemWideList(new BluePrintFilterData { ForItem = new LinkToRepositoryLocalObjectData { IdRef = id } }); if (list == null || list.Length == 0) { return(id); } var list2 = list.Cast <BluePrintNodeData>().Where(x => x.Item != null).ToList(); return(list2.First().Item.Id); }
public static void AddKeyword(IAlchemyCoreServiceClient client, string tcmCategory, string keywordName) { List <ItemInfo> keywords = GetKeywordsByCategory(client, tcmCategory); if (keywords.All(x => x.Title != keywordName)) { KeywordData keyword = new KeywordData { Title = keywordName, Key = keywordName, Description = keywordName, LocationInfo = new LocationInfo { OrganizationalItem = new LinkToOrganizationalItemData { IdRef = tcmCategory } }, Id = "tcm:0-0-0" }; keyword = (KeywordData)client.Create(keyword, new ReadOptions()); } }
/// <summary> /// Gets Tridion items by parent container. /// </summary> /// <param name="client">Tridion client object.</param> /// <param name="tcmContainer">The TCM container.</param> /// <param name="recursive">if set to <c>true</c> [recursive].</param> /// <param name="schemaPurposes">schema types</param> /// <returns></returns> public static List <ItemInfo> GetItemsByParentContainer(IAlchemyCoreServiceClient client, string tcmContainer, bool recursive, SchemaPurpose[] schemaPurposes) { return(client.GetListXml(tcmContainer, new OrganizationalItemItemsFilterData { Recursive = recursive, ItemTypes = new ItemType[] { ItemType.Schema }, SchemaPurposes = schemaPurposes }).ToList()); }
/// <summary> /// Gets Tridion items from parent container (folder, structure group, category). /// </summary> /// <param name="client">Tridion client object.</param> /// <param name="tcmContainer">The TCM container.</param> /// <param name="recursive">if set to <c>true</c> [recursive].</param> /// <returns></returns> public static List <ItemInfo> GetItemsByParentContainer(IAlchemyCoreServiceClient client, string tcmContainer, bool recursive) { return(client.GetListXml(tcmContainer, new OrganizationalItemItemsFilterData { Recursive = recursive }).ToList()); }
public static void AppendMetadata(IAlchemyCoreServiceClient client, string componentUri, List <string> list) { ComponentData component = ReadItem(client, componentUri) as ComponentData; if (component.BluePrintInfo.IsShared == true) { componentUri = GetBluePrintLocalizedTcmId(component); component = ReadItem(client, componentUri) as ComponentData; } SchemaData schema = ReadItem(client, component.Schema.IdRef) as SchemaData; XNamespace ns = schema.NamespaceUri; var fields = GetSchemaMetadataFields(client, component.Schema.IdRef); if (fields.All(x => x.Name != "Keywords")) { throw new Exception("Keywords metadata field is not present"); } try { component = client.CheckOut(component.Id, true, new ReadOptions()) as ComponentData; } catch (Exception ex) { } try { if (string.IsNullOrEmpty(component.Metadata)) { XElement metadataXml = new XElement(ns + "Metadata"); foreach (string keywordName in list) { metadataXml.Add(new XElement(ns + "Keywords", keywordName)); } component.Metadata = metadataXml.ToString(); } else { XDocument docMetadata = XDocument.Parse(component.Metadata); XElement metadataXml = docMetadata.Root; foreach (string keywordName in list) { metadataXml.Add(new XElement(ns + "Keywords", keywordName)); } component.Metadata = metadataXml.ToString(); } client.Update(component, new ReadOptions()); client.CheckIn(component.Id, true, "Updated by Tridion Vision Alchemy Plugin", new ReadOptions()); } catch (Exception ex) { client.UndoCheckOut(componentUri, true, new ReadOptions()); } }
public static List <MultimediaTypeData> GetMimeTypes(IAlchemyCoreServiceClient client, string[] mimeTypes) { List <MultimediaTypeData> allMimeTypes = client.GetSystemWideList(new MultimediaTypesFilterData()).Cast <MultimediaTypeData>().ToList(); return(allMimeTypes.Where(x => mimeTypes.Contains(x.MimeType)).ToList()); }
public static List <ItemInfo> GetContainersByPublication(IAlchemyCoreServiceClient client, string tcmPublication) { return(client.GetListXml(tcmPublication, new RepositoryItemsFilterData { ItemTypes = new[] { ItemType.Folder, ItemType.StructureGroup } }).ToList()); }
public static List <ItemInfo> GetKeywordsByCategory(IAlchemyCoreServiceClient client, string tcmCategory) { return(client.GetListXml(tcmCategory, new OrganizationalItemItemsFilterData { ItemTypes = new[] { ItemType.Keyword } }).ToList(ItemType.Keyword)); }
/// <summary> /// Gets the using items of source item. Only current revision discovered /// </summary> /// <param name="client">Tridion client object.</param> /// <param name="tcmItem">Item TCM id.</param> /// <returns></returns> public static List <string> GetUsingCurrentItems(IAlchemyCoreServiceClient client, string tcmItem, ItemType[] itemTypes = null) { return(GetUsingItems(client, tcmItem, true, itemTypes)); }