示例#1
0
        public ActionResult Save(SiteMetaData siteMetadata)
        {
            _siteMetadata.FrontPageImage = siteMetadata.FrontPageImage;
            _metadataRepository.Save(_siteMetadata);

            return(RedirectToAction("Index", "Home"));
        }
        public SiteMetaData EnrichSite(SiteConfiguration siteConfiguration, Guid siteGuid, List <PageMetaData> pages)
        {
            var siteInfo = new SiteMetaData(pages.ToArray())
            {
                Id          = siteGuid.ToString(),
                Title       = _siteInfo.Title,
                Description = _siteInfo.Description,
                Language    = _siteInfo.Lang,
                Url         = _siteInfo.Url,
                Author      = null,
                Data        = new Dictionary <string, object>(),
                Tags        = new SortedDictionary <string, PageMetaData[]>(),
                Collections = new SortedDictionary <string, PageMetaData[]>(),
                Types       = new SortedDictionary <string, PageMetaData[]>(),
                Series      = new SortedDictionary <string, PageMetaData[]>(),
                Years       = new SortedDictionary <int, PageMetaData[]>()
            };

            EnrichSiteWithData(siteInfo, siteConfiguration.DataDirectory);
            EnrichSiteWithCollections(siteInfo, siteGuid, pages);
            EnrichSiteWithTags(siteInfo, pages);
            EnrichSiteWithYears(siteInfo, pages);
            EnrichSiteWithTypes(siteInfo, pages);
            EnrichSiteWithSeries(siteInfo, pages);

            return(siteInfo);
        }
示例#3
0
        public void Save(SiteMetaData metaData)
        {
            string filePath   = Path.Combine(_dataDirectory, Constants.MetaDataFileName);
            var    serializer = new ObjectSerializer(filePath);

            serializer.Serialize <SiteMetaData>(metaData);
        }
示例#4
0
        public HomeController(IMetaDataRepository metadataRepostory, IArtRepository artRepository)
        {
            _metadataRepostory = metadataRepostory;
            _siteMetaData      = _metadataRepostory.Read();

            _artRepository = artRepository;
            _artCollection = _artRepository.Read();
        }
        public SiteMetaData GetSiteMetaData()
        {
            var siteMetaData = new SiteMetaData
                                   {
                                       AnalyticsIdentifier = this.configurationService.Analytics.Idenfitier,
                                       SiteVerification = this.configurationService.Analytics.Verification, 
                                   };

            return siteMetaData;
        }
示例#6
0
        public SiteMetaData GetSiteMetaData()
        {
            var siteMetaData = new SiteMetaData
            {
                AnalyticsIdentifier = this.configurationService.Analytics.Idenfitier,
                SiteVerification    = this.configurationService.Analytics.Verification,
            };

            return(siteMetaData);
        }
示例#7
0
        static void SaveSiteMetadata(XElement[] children)
        {
            var siteMetaData = new SiteMetaData {
                Title       = children.First(e => e.Name == "title").Value,
                Description = children.First(e => e.Name == "description").Value
            };

            using (TextWriter writer = File.CreateText(Path.Combine(UserSettings.PathToJekyllSite, "siteMetaData.yaml"))) {
                var a = new YamlDotNet.Serialization.Serializer();
                a.Serialize(writer, siteMetaData);
            }
        }
        private void EnrichSiteWithSeries(SiteMetaData site, List <PageMetaData> pages)
        {
            var series = pages
                         .Where(x => x.Series != null)
                         .Select(x => x.Series)
                         .Distinct();

            foreach (var serie in series)
            {
                var seriesFiles = pages.Where(x => x.Series != null && serie.Equals(x.Series)).OrderBy(x => x.Url).ToArray();
                site.Series.Add(serie, seriesFiles);
            }
        }
        private void EnrichSiteWithTypes(SiteMetaData site, List <PageMetaData> pages)
        {
            var blockedTypes = new ContentType[] { ContentType.Unknown, ContentType.Page };
            var types        = pages
                               .Where(x => !blockedTypes.Contains(x.Type))
                               .Select(x => x.Type)
                               .Distinct();

            foreach (var type in types)
            {
                var typeFiles = pages.Where(x => /*x.Type != null && */ x.Type.Equals(type)).ToArray();
                site.Types.Add(type.ToString(), typeFiles);
            }
        }
        private void EnrichSiteWithYears(SiteMetaData site, List <PageMetaData> pages)
        {
            var years = pages
                        .Where(x => x.ContainsKey("date"))
                        .Where(x => ContentType.Article.Equals(x.Type)) // filter out anything that is not an article
                        .Select(x => ((DateTimeOffset)x["date"]).Year)
                        .Distinct();

            foreach (var year in years)
            {
                var yearFiles = pages.Where(x => x.ContainsKey("date") && ((DateTimeOffset)x["date"]).Year.Equals(year)).ToArray();
                site.Years.Add(year, yearFiles);
            }
        }
        private void EnrichSiteWithTags(SiteMetaData site, List <PageMetaData> pages)
        {
            var tags = pages
                       .Where(x => x.Tags != null)
                       .Where(x => ContentType.Article.Equals(x.Type)) // filter out anything that is not an article
                       .SelectMany(x => x.Tags)
                       .Distinct();

            foreach (var tag in tags)
            {
                var tagFiles = pages.Where(x => x.Tags != null && x.Tags.Contains(tag)).ToArray();
                site.Tags.Add(tag, tagFiles);
            }
        }
    public void Test_RenderData_AuthorEqualsNullIfPageAndSiteAreNull()
    {
        var file = new Kaylumah.Ssg.Manager.Site.Service.Files.Processor.File()
        {
            MetaData = new FileMetaData
            {
            }
        };
        var PageMetaData = file.ToPage();
        var SiteMetaData = new SiteMetaData(new PageMetaData[] { PageMetaData });
        var sut          = new RenderData {
            Site = SiteMetaData, Page = PageMetaData
        };

        sut.Should().NotBeNull();
        sut.Author.Should().BeNull();
    }
    public void Test_RenderData_TitleEqualsPageTitleIfExists()
    {
        var siteInfo = new SiteInfo();
        var file     = new Kaylumah.Ssg.Manager.Site.Service.Files.Processor.File()
        {
            MetaData = new FileMetaData {
                { "title", "1" }
            }
        };
        var PageMetaData = file.ToPage();
        var SiteMetaData = new SiteMetaData(new PageMetaData[] { PageMetaData });
        var sut          = new RenderData {
            Site = SiteMetaData, Page = PageMetaData
        };

        sut.Should().NotBeNull();
        sut.Title.Should().Be("1");
    }
        private void EnrichSiteWithData(SiteMetaData site, string dataDirectory)
        {
            var extensions = _siteInfo.SupportedDataFileExtensions.ToArray();
            var dataFiles  = _fileSystem.GetFiles(dataDirectory)
                             .Where(file => extensions.Contains(Path.GetExtension(file.Name)))
                             .ToList();
            var data = new Dictionary <string, object>();

            foreach (var file in dataFiles)
            {
                var stream = file.CreateReadStream();
                using var reader = new StreamReader(stream);
                var raw    = reader.ReadToEnd();
                var result = _yamlParser.Parse <object>(raw);
                data[Path.GetFileNameWithoutExtension(file.Name)] = result;
            }
            site.Data = data;
        }
    public void Test_RenderData_ContentEqualsEmptyStringWhenPageContentIsNull()
    {
        var siteInfo = new SiteInfo();
        var file     = new Kaylumah.Ssg.Manager.Site.Service.Files.Processor.File()
        {
            MetaData = new FileMetaData
            {
            },
            Content = null
        };
        var PageMetaData = file.ToPage();
        var SiteMetaData = new SiteMetaData(new PageMetaData[] { PageMetaData });
        var sut          = new RenderData {
            Site = SiteMetaData, Page = PageMetaData
        };

        sut.Should().NotBeNull();
        sut.Content.Should().Be(string.Empty);
    }
    public void Test_RenderData_LanguageEqualsSiteTitleIfExists()
    {
        var file = new Kaylumah.Ssg.Manager.Site.Service.Files.Processor.File()
        {
            MetaData = new FileMetaData
            {
            }
        };
        var PageMetaData = file.ToPage();
        var SiteMetaData = new SiteMetaData(new PageMetaData[] { PageMetaData })
        {
            Language = "2"
        };
        var sut = new RenderData {
            Site = SiteMetaData, Page = PageMetaData
        };

        sut.Should().NotBeNull();
        sut.Language.Should().Be("2");
    }
        private void EnrichSiteWithCollections(SiteMetaData site, Guid siteGuid, List <PageMetaData> files)
        {
            var collections = files
                              .Where(x => x.Collection != null)
                              .Select(x => x.Collection)
                              .Distinct()
                              .ToList();

            for (var i = collections.Count - 1; i > 0; i--)
            {
                var collection = collections[i];
                if (_siteInfo.Collections.Contains(collection))
                {
                    var collectionSettings = _siteInfo.Collections[collection];
                    if (!string.IsNullOrEmpty(collectionSettings.TreatAs))
                    {
                        if (_siteInfo.Collections.Contains(collectionSettings.TreatAs))
                        {
                            // todo log
                            var collectionFiles = files
                                                  .Where(x => x.Collection != null && x.Collection.Equals(collection));
                            foreach (var file in collectionFiles)
                            {
                                file.Collection = collectionSettings.TreatAs;
                            }
                            collections.RemoveAt(i);
                        }
                    }
                }
            }

            foreach (var collection in collections)
            {
                site.Collections.Add(collection,
                                     files
                                     .Where(x => x.Collection != null &&
                                            x.Collection.Equals(collection))
                                     .ToArray()
                                     );
            }
        }
示例#18
0
 public IndexController(IMetaDataRepository metadataRepository)
 {
     _metadataRepository = metadataRepository;
     _siteMetadata       = _metadataRepository.Read();
 }