public static Dynamic.Keyword BuildKeyword(Keyword keyword)
 {
    Dynamic.Keyword dk = new Dynamic.Keyword();
    dk.Id = keyword.Id;
    dk.Title = keyword.Title;
    dk.Path = FindKeywordPath(keyword);
    dk.Description = keyword.Description;
    dk.Key = keyword.Key;
    dk.TaxonomyId = keyword.OrganizationalItem.Id;
    return dk;
 }
 public static Dynamic.Keyword BuildKeyword(Keyword keyword)
 {
     Dynamic.Keyword dk = new Dynamic.Keyword();
     dk.Id          = keyword.Id;
     dk.Title       = keyword.Title;
     dk.Path        = FindKeywordPath(keyword);
     dk.Description = keyword.Description;
     dk.Key         = keyword.Key;
     dk.TaxonomyId  = keyword.OrganizationalItem.Id;
     return(dk);
 }
        public static Dynamic.Keyword BuildKeyword(Keyword keyword, int currentLinkLevel, BuildManager buildManager)
        {
            Dynamic.Keyword dk = new Dynamic.Keyword();
            dk.Id          = keyword.Id;
            dk.Title       = keyword.Title;
            dk.Path        = FindKeywordPath(keyword);
            dk.Description = keyword.Description;
            dk.Key         = keyword.Key;
            dk.TaxonomyId  = keyword.OrganizationalItem.Id;

            if (currentLinkLevel > 0)
            {
                if (keyword.Metadata != null && keyword.MetadataSchema != null)
                {
                    var tcmMetadataFields = new Tridion.ContentManager.ContentManagement.Fields.ItemFields(keyword.Metadata, keyword.MetadataSchema);
                    dk.MetadataFields = buildManager.BuildFields(tcmMetadataFields, currentLinkLevel);
                }
            }
            return(dk);
        }
        public Dynamic.IKeyword GetKeyword(string categoryUriToLookIn, string keywordName)
        {
            //Create filter to retrieve all keywords in a taxonomy
            CompositeFilter compFilter = new CompositeFilter();

            compFilter.DepthFiltering(DepthFilter.UnlimitedDepth, DepthFilter.FilterUp);
            compFilter.DepthFiltering(DepthFilter.UnlimitedDepth, DepthFilter.FilterDown);

            //Get keywords in taxonomy (hierarchically)
            IEnumerable <Keyword> taxonomy = null;

            try

            {
                //Ugly way to see if a taxonomy exists. Alternative is to loop through all taxonomys in Tridion and check if the categoryUriToLookIn exists...
                taxonomy = TaxonomyFactory.GetTaxonomyKeywords(categoryUriToLookIn, compFilter, new TaxonomyHierarchyFormatter()).KeywordChildren.Cast <Keyword>();
            }
            catch (Exception)
            {
                //TODO: Trace
                return(null);
            }

            //Search in taxonomy
            Keyword foundKeyword = null;

            foreach (var currentKeyword in taxonomy)
            {
                string currentKeywordName = currentKeyword.KeywordName;
                if (currentKeywordName != keywordName)
                {
                    foundKeyword = recursive(currentKeyword.KeywordChildren.Cast <Keyword>().ToList(), keywordName);
                }
                else
                {
                    foundKeyword = currentKeyword;
                }
                if (foundKeyword != null)
                {
                    Dynamic.Keyword returnKeyword = new Dynamic.Keyword();

                    Keyword par = foundKeyword.ParentKeyword;
                    do
                    {
                        Dynamic.Keyword newParentKeyword = new Dynamic.Keyword();
                        newParentKeyword.Id         = par.KeywordUri;
                        newParentKeyword.TaxonomyId = par.TaxonomyUri;
                        newParentKeyword.Title      = par.KeywordName;
                        returnKeyword.ParentKeywords.Add(newParentKeyword); //Add the parentkeyword to the list
                        par = par.ParentKeyword;
                    } while (par != null);

                    //Add remaining properties to the returnKeyword
                    returnKeyword.Id         = foundKeyword.KeywordUri;
                    returnKeyword.TaxonomyId = foundKeyword.TaxonomyUri;
                    returnKeyword.Title      = foundKeyword.KeywordName;

                    return(returnKeyword);
                }
            }

            return(null);
        }
        public Dynamic.IKeyword GetKeyword(string categoryUriToLookIn, string keywordName)
        {
            //Create filter to retrieve all keywords in a taxonomy
            CompositeFilter compFilter = new CompositeFilter();
            compFilter.DepthFiltering(DepthFilter.UnlimitedDepth, DepthFilter.FilterUp);
            compFilter.DepthFiltering(DepthFilter.UnlimitedDepth, DepthFilter.FilterDown);

            //Get keywords in taxonomy (hierarchically)
            IEnumerable<Keyword> taxonomy = null;
            try

            {
                //Ugly way to see if a taxonomy exists. Alternative is to loop through all taxonomys in Tridion and check if the categoryUriToLookIn exists...
                taxonomy = TaxonomyFactory.GetTaxonomyKeywords(categoryUriToLookIn, compFilter, new TaxonomyHierarchyFormatter()).KeywordChildren.Cast<Keyword>();
            }
            catch (Exception)
            {
                //TODO: Trace
                return null;
            }

            //Search in taxonomy
            Keyword foundKeyword = null;
            foreach (var currentKeyword in taxonomy)
            {
                string currentKeywordName = currentKeyword.KeywordName;
                if (currentKeywordName != keywordName)
                {
                    foundKeyword = recursive(currentKeyword.KeywordChildren.Cast<Keyword>().ToList(), keywordName);
                }
                else
                {
                    foundKeyword = currentKeyword;
                }
                if (foundKeyword != null)
                {
                    Dynamic.Keyword returnKeyword = new Dynamic.Keyword();

                    Keyword par = foundKeyword.ParentKeyword;
                    do
                    {
                        Dynamic.Keyword newParentKeyword = new Dynamic.Keyword();
                        newParentKeyword.Id = par.KeywordUri;
                        newParentKeyword.TaxonomyId = par.TaxonomyUri;
                        newParentKeyword.Title = par.KeywordName;
                        returnKeyword.ParentKeywords.Add(newParentKeyword); //Add the parentkeyword to the list
                        par = par.ParentKeyword;

                    } while (par != null);

                    //Add remaining properties to the returnKeyword
                    returnKeyword.Id = foundKeyword.KeywordUri;
                    returnKeyword.TaxonomyId = foundKeyword.TaxonomyUri;
                    returnKeyword.Title = foundKeyword.KeywordName;

                    return returnKeyword;
                }
            }

            return null;
        }