Пример #1
0
        /// <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());
        }
Пример #2
0
 /// <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);
     }
 }
Пример #3
0
        /// <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);
        }
Пример #4
0
        /// <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);
        }
Пример #5
0
        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);
        }
Пример #6
0
        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());
            }
        }
Пример #7
0
 /// <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());
 }
Пример #8
0
 /// <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());
 }
Пример #9
0
        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());
            }
        }
Пример #10
0
        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());
        }
Пример #11
0
 public static List <ItemInfo> GetContainersByPublication(IAlchemyCoreServiceClient client, string tcmPublication)
 {
     return(client.GetListXml(tcmPublication, new RepositoryItemsFilterData {
         ItemTypes = new[] { ItemType.Folder, ItemType.StructureGroup }
     }).ToList());
 }
Пример #12
0
 public static List <ItemInfo> GetKeywordsByCategory(IAlchemyCoreServiceClient client, string tcmCategory)
 {
     return(client.GetListXml(tcmCategory, new OrganizationalItemItemsFilterData {
         ItemTypes = new[] { ItemType.Keyword }
     }).ToList(ItemType.Keyword));
 }
Пример #13
0
 /// <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));
 }