Пример #1
0
        public static List <EmbeddedContentViewModel> GetEmbedContents(SiteDb sitedb, Guid folderId, Guid textContentId, string language = null)
        {
            List <EmbeddedContentViewModel> embedded = new List <EmbeddedContentViewModel>();
            var folder = sitedb.ContentFolders.Get(folderId);

            if (folder == null || (folder.Embedded == null || folder.Embedded.Count() == 0))
            {
                return(embedded);
            }
            TextContent content = sitedb.TextContent.Get(textContentId);

            if (content == null)
            {
                content = new TextContent();
            }

            foreach (var item in folder.Embedded)
            {
                var embeddedFolder = sitedb.ContentFolders.Get(item.FolderId);

                List <Guid> ids = new List <Guid>();
                if (content.Embedded.ContainsKey(item.FolderId))
                {
                    var currentids = content.Embedded[item.FolderId];
                    if (currentids != null && currentids.Count > 0)
                    {
                        ids = currentids;
                    }
                }

                EmbeddedContentViewModel model = new EmbeddedContentViewModel();
                model.EmbeddedFolder = embeddedFolder;

                var contents = sitedb.TextContent.Query.
                               Where(it => it.FolderId == item.FolderId)
                               .WhereIn("Id", ids)
                               .SelectAll();

                // also display use the parent ids.
                if (textContentId != default(Guid))
                {
                    var subcontents = sitedb.TextContent.Query.Where(o => o.FolderId == item.FolderId && o.ParentId == textContentId).SelectAll();

                    foreach (var subitem in subcontents)
                    {
                        if (contents.Find(o => o.Id == subitem.Id) == null)
                        {
                            contents.Add(subitem);
                        }
                    }
                }
                model.Contents = contents.Select(o => ToView(o, language, sitedb.ContentTypes.GetPropertiesByFolder(item.FolderId))).ToList();

                model.Alias = item.Alias;

                embedded.Add(model);
            }

            return(embedded);
        }
Пример #2
0
        private static void CleanNonSummaryFields(SiteDb sitedb, EmbeddedContentViewModel model, Guid FolderId)
        {
            var summaryfield = sitedb.ContentTypes.GetTitlePropertyByFolder(FolderId);

            if (summaryfield != null && summaryfield.Any())
            {
                foreach (var item in model.Contents)
                {
                    List <string> keysToRemove = new List <string>();
                    foreach (var value in item.TextValues)
                    {
                        var find = summaryfield.Find(o => o.Name == value.Key);
                        if (find == null)
                        {
                            keysToRemove.Add(value.Key);
                        }
                    }

                    foreach (var key in keysToRemove)
                    {
                        item.TextValues.Remove(key);
                    }
                }
            }
        }