public static string DisplayListingPage(string dir, string page, string limit, string tags, string year, string author) { Dictionary <string, string> conditions = new Dictionary <string, string>() { { "dir", dir }, { "mode", "listing" }, { "limit", limit } }; if (page != "") { conditions.Add("page", page); } if (tags != "") { conditions.Add("tags", tags); } if (year != "") { conditions.Add("year", year); } if (author != "") { conditions.Add("author", author); } BlogPosts blogPosts = GetPosts(conditions); return(DisplayListing(blogPosts, conditions)); }
public static string DisplayAvailableTags(Dictionary <string, string> conditions) { string markUp = ""; BlogPosts blogPosts = GetPosts(conditions); List <string> tagList = new List <string>(); foreach (BlogPost blogPost in blogPosts.posts) { foreach (string tag in blogPost.tags) { if (tag != "") { tagList.Add(tag); } } } List <string> sortedList = tagList.OrderBy(s => s).ToList(); var grouped = sortedList.GroupBy(s => s).Select(group => new { Tag = group.Key, Count = group.Count() }); foreach (var group in grouped) { markUp += String.Format("<li><a href=\"{0}?tags={1}\">{1}</a> ({2})</li>", conditions["dir"], group.Tag, group.Count); } return(markUp); }
public static string DisplayListing(BlogPosts blogPosts, string limit) { Dictionary <string, string> conditions = new Dictionary <string, string>() { { "mode", "listing" }, { "limit", limit } }; return(DisplayListing(blogPosts, conditions)); }
public static string FormatPosts(BlogPosts blogPosts, Dictionary <string, string> conditions) { string markUp = ""; foreach (BlogPost blogPost in blogPosts.posts) { markUp += blogPost.Format(conditions["mode"]); } return(markUp); }
/* Featured Slide Posts * ======================= */ public static string DisplayFeaturedSlide(BlogPosts blogPosts, string limit) { Dictionary <string, string> conditions = new Dictionary <string, string>() { { "mode", "featuredslide" }, { "featured", "true" }, { "limit", limit } }; return(FormatPosts(blogPosts, conditions)); }
public static string DisplayFeaturedSlide(string dir, string limit) { Dictionary <string, string> conditions = new Dictionary <string, string>() { { "dir", dir }, { "mode", "featuredslide" }, { "featured", "true" }, { "limit", limit } }; BlogPosts blogPosts = GetPosts(conditions); string markUp = "<div class=\"flex-container\"><div class=\"flexslider\"><ul class=\"slides\">"; markUp += FormatPosts(blogPosts, conditions); markUp += "</ul></div></div>"; return(markUp); }
public static BlogPosts GetPosts(Dictionary <string, string> conditions) { List <BlogPost> posts = new List <BlogPost>(); string serverDirectory = HttpContext.Current.Server.MapPath(conditions["dir"]); List <string> filePaths = new List <string>(); WalkDirectoryTree(serverDirectory, filePaths); foreach (string filePath in filePaths) { XmlDocument xmlDocument = new XmlDocument(); try{ using (XmlReader reader = XmlReader.Create(filePath)){ xmlDocument.Load(reader); } XmlNode postNode = xmlDocument.DocumentElement.SelectSingleNode("/post"); if (postNode != null) { BlogPost blogPost = new BlogPost(postNode); //global blog stuff if (conditions.ContainsKey("currentdir")) { string serverCurrentDir = HttpContext.Current.Server.MapPath(conditions["currentdir"]); if (filePath.Contains(serverCurrentDir)) { if (PostMeetsConditions(blogPost, conditions)) { posts.Add(blogPost); } } else if (conditions.ContainsKey("addtags")) { string[] addTags = conditions["addtags"].Split(','); bool matchedAddTag = false; foreach (string postTag in blogPost.tags) { foreach (string addTag in addTags) { if (addTag == postTag || addTag == "all") { matchedAddTag = true; break; } } if (matchedAddTag) { break; } } if (matchedAddTag && PostMeetsConditions(blogPost, conditions)) { posts.Add(blogPost); } } } else if (PostMeetsConditions(blogPost, conditions)) { posts.Add(blogPost); } } } catch (Exception e) {} } List <BlogPost> sortedList = new List <BlogPost>(); if (conditions["mode"] == "listing") { sortedList = posts.OrderByDescending(post => post.dateTime).ToList(); } else { if (conditions.ContainsKey("limit")) { int limit = Convert.ToInt32(conditions["limit"]); sortedList = posts.OrderByDescending(post => post.dateTime).ToList().Take(limit).ToList(); } else { /* If no conditions we get all posts */ sortedList = posts.OrderByDescending(post => post.dateTime).ToList(); } } BlogPosts blogPosts = new BlogPosts(sortedList); return(blogPosts); }
/* Format Posts * =============== */ public static string FormatPosts(Dictionary <string, string> conditions) { BlogPosts blogPosts = GetPosts(conditions); return(FormatPosts(blogPosts, conditions)); }
public static string DisplayListing(BlogPosts blogPosts, Dictionary <string, string> conditions) { int limit = -1; if (conditions.ContainsKey("limit")) { limit = Convert.ToInt32(conditions["limit"]); } int page = 0; if (conditions.ContainsKey("page")) { page = Convert.ToInt32(conditions["page"]); } BlogPosts displayPosts = null; if (limit != -1) { displayPosts = new BlogPosts(blogPosts.posts.Skip(page * limit).Take(limit).ToList()); } else { displayPosts = new BlogPosts(blogPosts.posts); } //Persist query string string queryString = ""; string limitString = (conditions.ContainsKey("limit")) ? conditions["limit"] : "10"; queryString += (limitString != "") ? "&limit=" + limitString : ""; string tags = (conditions.ContainsKey("tags")) ? conditions["tags"] : ""; queryString += (tags != "") ? "&tags=" + tags : ""; string year = (conditions.ContainsKey("year")) ? conditions["year"] : ""; queryString += (year != "") ? "&year=" + year : ""; string author = (conditions.ContainsKey("author")) ? conditions["author"] : ""; queryString += (author != "") ? "&author=" + author : ""; string addtags = (conditions.ContainsKey("addtags")) ? conditions["addtags"] : ""; queryString += (addtags != "") ? "&addtags=" + addtags : ""; string pageString = (conditions.ContainsKey("page")) ? conditions["page"] : "0"; int pageNumber = Convert.ToInt32(pageString); int pageLimit = Convert.ToInt32(limit); //Blog posts string markUp = "<p>"; markUp += FormatPosts(displayPosts, conditions); //Pagination markUp += "</p><div class=\"row\">"; if (pageNumber > 0) { markUp += String.Format("<div class=\"newer pull-left\"><p><a href=\"?page={0}{1}\">← Newer Posts</a></p></div>", pageNumber - 1, queryString); } if ((pageNumber * pageLimit) < (blogPosts.total - pageLimit)) { markUp += String.Format("<div class=\"older pull-right\"><p class=\"right\"><a href=\"?page={0}{1}\">Older Posts →</a></p></div>", pageNumber + 1, queryString); } markUp += "</div></div>"; return(markUp); }