Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        public static string DisplayListing(BlogPosts blogPosts, string limit)
        {
            Dictionary <string, string> conditions = new Dictionary <string, string>()
            {
                { "mode", "listing" },
                { "limit", limit }
            };

            return(DisplayListing(blogPosts, conditions));
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        /* 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));
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        /* Format Posts
         * =============== */

        public static string FormatPosts(Dictionary <string, string> conditions)
        {
            BlogPosts blogPosts = GetPosts(conditions);

            return(FormatPosts(blogPosts, conditions));
        }
Esempio n. 9
0
        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}\">&#8592; 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 &#8594;</a></p></div>",
                                        pageNumber + 1, queryString);
            }

            markUp += "</div></div>";

            return(markUp);
        }