Пример #1
0
 public static int ComparerIndex(Page a, Page b)
 {
     int r = a.Index.CompareTo(b.Index);
     if (r != 0)
         return r;
     return a.Name.CompareTo(b.Name);
 }
Пример #2
0
 public Html Generate(Site site, Page page)
 {
     var t = new TemplateInstance(this);
     t.LastModified = page.LastModified;
     t["title"] = page.Title;
     t["contents"] = Html.Raw(Generator.Markdown.Transform(page.Content));
     return t.ToHtml();
 }
Пример #3
0
 public void Add(Page p)
 {
     Pages.Add(p);
 }
Пример #4
0
        static void LoadData(Site site)
        {
            //Scan for pages
            string[] pageFiles = Directory.GetFiles(site.DataPath, "*.page", SearchOption.AllDirectories);
            foreach (string pageFile in pageFiles)
            {
                Page p = new Page(site.DataPath, pageFile);
                //Ignore news pages
                if (p.HasDate)
                    continue;

                site.Add(p);
                //Console.WriteLine("Page: " + p);
            }
            site.Pages.Sort(Page.ComparerIndex);

            //Scan for posts
            string[] postFiles = Directory.GetFiles(site.DataPath, "*.post", SearchOption.AllDirectories);
            foreach (string postFile in postFiles)
            {
                Post p = new Post(postFile);
                //Ignore non news pages
                if (p.Date == DateTime.MinValue)
                    continue;

                site.Add(p);
                //Console.WriteLine("News: " + p);
            }
            site.Posts.Sort(Post.ComparerLatestFirst);
        }
Пример #5
0
 static Html GenerateTabs(Site site, Page page, Post post)
 {
     //Find out if we have an index page
     Page indexPage = null;
     foreach (Page p in site.Pages)
     {
         if (p.Name == "index")
         {
             indexPage = p;
             break;
         }
     }
     Html tabs = new Html();
     if (indexPage == null)
         tabs += LiTag(site.UrlPath, "", "News", page == null && post == null, DateTime.MinValue);
     else
         tabs += LiTag(site.UrlPath, indexPage.Title, indexPage.LinkTitle, page == indexPage, indexPage.LastModified);
     foreach (Page p in site.Pages)
     {
         if (p.LinkTitle == "")
             continue;
         if (p == indexPage)
             continue;
         tabs += LiTag(p.LinkUrl ?? site.UrlPath + p.Path, p.Title, p.LinkTitle, p == page, p.LastModified);
     }
     return tabs;
 }
Пример #6
0
        static void GeneratePage(Site site, Page p, PageTemplate pageTemplate, IndexTemplate indexTemplate)
        {
            string dirPath = Path.Combine(site.WebPath, p.Path);
            if (p.Path == "index/")
                dirPath = site.WebPath;
            Directory.CreateDirectory(dirPath);
            if (Directory.Exists(p.SourceDir))
                FileManager.Clone(p.SourceDir, dirPath);

            var indexInstance = indexTemplate.Create(site);
            indexInstance["title"] = p.Title;
            indexInstance["tabs"] = GenerateTabs(site, p, null);
            indexInstance["contents"] = pageTemplate.Generate(site, p);
            indexInstance.Write(Path.Combine(dirPath, "index.html"));
        }