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 { } }
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); } }
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); } }
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); } }
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); }
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))) ); }
public abstract void UpdateItem(Blog b);
public abstract void DeleteItem(Blog b);
public static void AddItem(Blog b) { m_AtomOperator.AddItem(b); m_RSSOperator.AddItem(b); }
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)); }
private XElement ConvertBlogToRSSEntry(Blog b, Boolean isUpdate) { return ConvertBlogToRSSEntry(b, false, isUpdate); }
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); } }
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; }
public static void UpdateItem(Blog b) { m_AtomOperator.UpdateItem(b); m_RSSOperator.UpdateItem(b); }
public static void DeleteItem(Blog b) { m_AtomOperator.DeleteItem(b); m_RSSOperator.DeleteItem(b); }
public abstract void AddItem(Blog b);
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(); }
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 + "';"); }