Exemple #1
0
        protected void Page_Init(object sender, EventArgs e)
        {
            if(!Master.IsAdminMode()) Server.Transfer("~/Management/Login.aspx");
            Master.SubTitle = "今天写点啥?:)";
            lblHostUrl.Text = WebUtil.BaseUri + "Blog/";

            try
            {
                toBeEditBlogId = Utility.ConvertToInt<String>(Request.QueryString["BlogID"]);

                if (toBeEditBlogId != 0)
                {
                    Master.SubTitle = "编辑Blog";

                    // Load current blog entry
                    curBlog = Blog.LoadById(toBeEditBlogId);
                    curBlog.HyperLink = WebUtil.GetBlogHyperLink(curBlog.Id);
                }
                else
                {
                    Master.SubTitle = "今天写点啥?:)";
                    txtPostTime.Text = DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss.fff");
                }
            }
            catch
            { }
        }
Exemple #2
0
        public override void DeleteItem(Blog b)
        {
            try
            {
                CheckAtomFeed();

                XNamespace atomXmln = FeedsNamespace;
                var atomXml = XDocument.Load(FeedsPath);

                var atomId = WebUtil.GetBlogHyperLink(b.Id);

                if (atomXml.Root.Descendants(atomXmln + "entry").Any(
                    xe => xe.Element(atomXmln + "id").Value.Equals(atomId)))  // Check entry existense
                {
                    var blogEntry = atomXml.Root.Descendants(atomXmln + "entry").Single(
                            xe => xe.Element(atomXmln + "id").Value.Equals(atomId));

                    blogEntry.Remove();  // Replace the entried entry node

                    atomXml.Save(FeedsPath);
                }
                else
                {
                    // Do nothing since this blog which supposed to be editted does not exist in the Atom.xml
                }
            }
            catch (Exception e)
            {
                WayneLogger.WriteLog(e);
            }
        }
Exemple #3
0
        public override void AddItem(Blog b)
        {
            try
            {
                CheckRSSFeed();

                XElement RSSXml = XElement.Load(FeedsPath);

                XElement newEntry = ConvertBlogToRSSEntry(b, false);

                RSSXml.Descendants(FeedsNamespace + "item").Last().Remove(); // Remove oldest blog entry
                RSSXml.Descendants(FeedsNamespace + "item").First().AddBeforeSelf(newEntry);

                RSSXml.Save(FeedsPath);
            }
            catch (Exception e)
            {
                WayneLogger.WriteLog(e);
            }
        }
Exemple #4
0
        public override void AddItem(Blog b)
        {
            try
            {
                CheckAtomFeed();

                XNamespace atomXmln = FeedsNamespace;
                XDocument atomXml = XDocument.Load(FeedsPath);

                XElement newEntry = ConvertBlogToAtomEntry(b, false);

                atomXml.Root.LastNode.Remove(); // Remove oldest blog entry

                // Insert this new blog entry at top position
                // NOTES: while querying, I need explicitly specify the element's namespace
                atomXml.Root.Elements(atomXmln + "entry").First().AddBeforeSelf(newEntry);

                atomXml.Save(FeedsPath);
            }
            catch (Exception e)
            {
                WayneLogger.WriteLog(e);
            }
        }
Exemple #5
0
        private void UpdateSiteMap(Blog b, string oldPermalink)
        {
            XNamespace SiteMapXmlns = "http://www.sitemaps.org/schemas/sitemap/0.9";
            String blogUri = String.IsNullOrEmpty(b.Permalink) ? b.HyperLink : b.Permalink;

            String siteMapFile = Server.MapPath("~/Sitemap.xml");

            XDocument sitemapXml = XDocument.Load(siteMapFile);
            string blogLink = WebUtil.GetFullBlogLink(b.Id);

            if (oldPermalink != String.Empty) // Update the blog info
            {
                var existingNode = from existingEntry in sitemapXml.Descendants(SiteMapXmlns + "url")
                                where existingEntry.Element(SiteMapXmlns + "loc").Value.Equals(oldPermalink)
                                select existingEntry;

                if (!existingNode.Any()) return;
                var url = existingNode.First();
                url.Element(SiteMapXmlns + "loc").SetValue(blogLink);
                url.Element(SiteMapXmlns + "lastmod").SetValue(b.PostDate.ToString("yyyy-MM-dd"));
            }
            else
            {
                var temp = from aboutMe in sitemapXml.Descendants(SiteMapXmlns + "url")
                                where aboutMe.Element(SiteMapXmlns + "loc").Value.Equals("http://wayneye.com/AboutMe")
                                select aboutMe;

                var aboutMeNode = temp.First();

                aboutMeNode.AddAfterSelf(new XElement(SiteMapXmlns + "url",
                                                  new XElement(SiteMapXmlns + "loc", blogLink),
                                                  new XElement(SiteMapXmlns + "lastmod",
                                                               b.PostDate.ToString("yyyy-MM-dd")),
                                                  new XElement(SiteMapXmlns + "changefreq", "monthly"),
                                                  new XElement(SiteMapXmlns + "priority", "0.88")
                                         ));
            }
            sitemapXml.Save(siteMapFile);
        }
Exemple #6
0
        private XElement ConvertBlogToAtomEntry(Blog b, Boolean isUpdate)
        {
            XNamespace atomXmln = FeedsNamespace;
            String catPermalink = m_RepositoryController.LoadCatPermalinkById(b.CategoryId);

            return new XElement(atomXmln + "entry",
                                new XElement(atomXmln + "title", b.Title),
                                new XElement(atomXmln + "link", new XAttribute("rel", "alternate"),
                                             new XAttribute("type", "text/html"),
                                             new XAttribute("href", String.IsNullOrEmpty(b.Permalink) ? b.HyperLink : WebUtil.GetBlogPermalink(b.Permalink))),
                                new XElement(atomXmln + "id", String.IsNullOrEmpty(b.Permalink) ? b.HyperLink : WebUtil.GetBlogPermalink(b.Permalink)),
                                new XElement(atomXmln + "published", b.PostDate.ToUniversalTime()),
                                new XElement(atomXmln + "updated", isUpdate
                                     ? DateTime.Now.ToUniversalTime()
                                     : b.PostDate.ToUniversalTime()),
                                new XElement(atomXmln + "content", new XAttribute("type", "html"), WebUtil.DisplayBlogSummary(b.Content)),
                                new XElement(atomXmln + "author",
                                    new XElement(atomXmln + "name", "Wayne Ye"),
                                    new XElement(atomXmln + "uri", WayneBlogConstraint.WayneYeUri)),
                                new XElement(atomXmln + "category",
                                    new XAttribute("term", b.Category),
                                    new XAttribute("schema", String.Format("http://wayneye.com/Category/{0}", catPermalink)))
                                );
        }
Exemple #7
0
 public abstract void UpdateItem(Blog b);
Exemple #8
0
 public abstract void DeleteItem(Blog b);
Exemple #9
0
 public static void AddItem(Blog b)
 {
     m_AtomOperator.AddItem(b);
     m_RSSOperator.AddItem(b);
 }
Exemple #10
0
        private XElement ConvertBlogToRSSEntry(Blog b, Boolean showCompleteContent = false, Boolean isUpdate = false)
        {
            String blogLink = String.IsNullOrEmpty(b.Permalink) ? WebUtil.GetBlogHyperLink(b.Id) : WebUtil.GetBlogPermalink(b.Permalink);

            return new XElement(FeedsNamespace + "item",
                                new XElement(FeedsNamespace + "title", b.Title),
                                new XElement(FeedsNamespace + "link", blogLink),
                                new XElement(FeedsNamespace + "guid", blogLink),
                                new XElement(FeedsNamespace + "description", new XCData(showCompleteContent ? b.Content : WebUtil.DisplayBlogSummary(b.Content))),
                //new XElement(FeedsNamespace + "copyright", "Wayne Ye"),
                                new XElement(FeedsNamespace + "pubDate", b.PostDate.ToString("r")),
                                new XElement(FeedsNamespace + "comments", blogLink));
        }
Exemple #11
0
 private XElement ConvertBlogToRSSEntry(Blog b, Boolean isUpdate)
 {
     return ConvertBlogToRSSEntry(b, false, isUpdate);
 }
Exemple #12
0
        public override void UpdateItem(Blog b)
        {
            try
            {
                CheckRSSFeed();

                var RSSXml = XDocument.Load(FeedsPath);
                var newEntry = ConvertBlogToRSSEntry(b, true);

                String blogLink = String.IsNullOrEmpty(b.Permalink) ? b.HyperLink : WebUtil.GetBlogPermalink(b.Permalink);

                if (RSSXml.Root.Descendants(FeedsNamespace + "item").Any(
                    xe => xe.Element(FeedsNamespace + "link").Value.Equals(blogLink)))  // Check entry existense
                {
                    var blogEntry =
                        RSSXml.Root.Descendants(FeedsNamespace + "item").Single(
                            xe => xe.Element(FeedsNamespace + "link").Value.Equals(blogLink));

                    blogEntry.ReplaceWith(newEntry);  // Replace the entried entry node

                    RSSXml.Save(FeedsPath);
                }
                else
                {
                    // Do nothing since this blog which supposed to be editted does not exist in the RSS.xml
                }
            }
            catch (Exception e)
            {
                WayneLogger.WriteLog(e);
            }
        }
Exemple #13
0
        private static Blog MemeryLoad(DataRow row)
        {
            Blog b = new Blog
            {
                Id = row.Table.Columns.Contains("Blog_ID") ? DBUtil.DBToInt(row["Blog_ID"]) : 0,
                Title = DBUtil.DBToString(row["Title"]),
                Permalink = DBUtil.DBToString(row["Permalink"]),
                CategoryId = DBUtil.DBToInt(row["Category_ID"]),
                Category = DBUtil.DBToString(row["Category_Name"]),
                Author = DBUtil.DBToString(row["Author"]),
                Content = DBUtil.DBToString(row["Content"]),
                ReadTimes = DBUtil.DBToInt(row["Read_Times"]),
                PostDate = DBUtil.DBToDateTime(row["Post_Date"]),
                Visibility = (BlogVisibility) DBUtil.DBToInt(row["Visibility"]),
                CommentCount = DBUtil.DBToInt(row["CommentCount"]),
                Tags = row.Table.Columns.Contains("Tags") ? row["Tags"].ToString() : ""
            };

            return b;
        }
Exemple #14
0
 public static void UpdateItem(Blog b)
 {
     m_AtomOperator.UpdateItem(b);
     m_RSSOperator.UpdateItem(b);
 }
Exemple #15
0
 public static void DeleteItem(Blog b)
 {
     m_AtomOperator.DeleteItem(b);
     m_RSSOperator.DeleteItem(b);
 }
Exemple #16
0
 public abstract void AddItem(Blog b);
Exemple #17
0
        private void CreateBlog()
        {
            if (!Validation()) return;

            string title = txtTitle.Text.Trim();
            string permalink = txtPermalink.Text.Trim();
            string tags = txtTag.Text.Trim();
            string content = txtContent.Text; //.Replace("\r\n", "<br />")
            DateTime postTime = DateTime.Parse(txtPostTime.Text);

            Blog b = new Blog()
                         {
                             Author = Master.LoginName,
                             Title = title,
                             Permalink = permalink,
                             CategoryId = Convert.ToInt32(ddlCategory.SelectedValue),
                             Tags = tags,
                             Content = content,
                             PostDate = postTime,
                             Visibility = (BlogVisibility) Convert.ToInt32(ddlVisibility.SelectedValue)
                         };

            // To do, Blog created, Blog_ID return, then I load this blog again just for loading Category,
            // This is extremly stupid!
            int blogId = 0;
            b.Create(out blogId);
            b = Blog.LoadById(blogId);
            b.HyperLink = WebUtil.GetBlogHyperLink(b.Id);

            // 1. Update feeds XML
            FeedsManager.AddItem(b);
            // 2. Rebuild Cache
            RebuildCache();
            // 3. Update Sitemap
            UpdateSiteMap(b, String.Empty);

            Response.ClearContent();
            Response.Write("<script>alert('发表成功^_^');document.location ='" + WebUtil.BaseUri + "';</script>");
            Response.End();
        }
Exemple #18
0
        private void LoadCurrentBlog()
        {
            int blogId = 0;
            string urlBlogId = Request.QueryString["BlogID"];
            string blogPermlink = Request.QueryString["Permalink"];
            if (!String.IsNullOrEmpty(urlBlogId))
                blogId = WebUtil.ConvertToNumber(urlBlogId);
            if (!String.IsNullOrEmpty(blogPermlink))
                blogId = Blog.GetBlogIdFromPermalink(blogPermlink);

            if (blogId == 0)
                (this.Master as WayneBlogMaster).ReturnIndex();

            m_CurBlog = m_RepositoryController.LoadBlogById(blogId);

            if (m_CurBlog == null)
                (this.Master as WayneBlogMaster).ReturnIndex();

            m_CurBlog.HyperLink = WebUtil.GetBlogHyperLink(m_BlogId);
            ClientScript.RegisterHiddenField("hdCurrentBlogId", m_BlogId.ToString());

            // Load comments
            wayneAjaxPostComment.TargetId = m_CurBlog.Id;

            btnEdit.Visible = Master.IsAdminMode();
            btnEdit.Attributes.Add("onclick",
                                   "window.location.href='" + WebUtil.BaseUri +
                                   "Management/PostBlog.aspx?BlogID=" + m_CurBlog.Id + "';");
        }