/// <summary> /// レスポンスボディ用の空の Xhtml を得ます。 /// </summary> protected Xhtml GetXhtml(){ Xhtml result = new Xhtml(); result.Html.SetAttribute("xml:lang", "ja"); return result; }
// 静的メソッド public static void SetReplaceUrl(Xhtml html){}
/// <summary> /// ページナビゲーションを取得します。 /// </summary> public XmlNode GetPageNav(Xhtml html, AbsPath uriPrefix){ int startPos = CurrentPage - myNavPrevItems; if(startPos > LastPage - myNavPrevItems - myNavNextItems) startPos = LastPage - myNavPrevItems - myNavNextItems; if(startPos < 3) startPos = 1; int endPos = CurrentPage + myNavNextItems; if(endPos < myNavPrevItems + myNavNextItems) endPos = myNavPrevItems + myNavNextItems; if(endPos > LastPage - 2) endPos = LastPage; XmlDocumentFragment result = html.CreateDocumentFragment(); XmlElement pageNav = html.P("pageNav"); if(CurrentPage > 1){ XmlElement prevLink = html.A(uriPrefix.Combine((CurrentPage-1).ToString())); prevLink.InnerText = "前のページ"; prevLink.SetAttribute("rel", "prev"); pageNav.AppendChild(prevLink); pageNav.AppendChild(html.Text(" ")); } if(startPos > 1){ pageNav.AppendChild(html.GetPageLink(uriPrefix, 1)); pageNav.AppendChild(html.Span("omitted", "...")); } for(int i = startPos; i <= endPos; i++){ if(i > startPos){ pageNav.AppendChild(html.Span("separate", "/")); } pageNav.AppendChild(html.GetPageLink(uriPrefix, i)); } if(endPos < LastPage){ pageNav.AppendChild(html.Span("omitted", "...")); pageNav.AppendChild(html.GetPageLink(uriPrefix, LastPage)); } if(CurrentPage < LastPage){ XmlElement nextLink = html.A(uriPrefix.Combine((CurrentPage+1).ToString())); nextLink.InnerText = "次のページ"; nextLink.SetAttribute("rel", "next"); pageNav.AppendChild(html.Text(" ")); pageNav.AppendChild(nextLink); } result.AppendChild(pageNav); return result; }
// パブリックメソッド /// <summary> /// 雛形の Xhtml を指定して、Xhtml の新しいインスタンスを作成します。 /// </summary> public static Xhtml Copy(Xhtml html){ if(html == null) throw new ArgumentException("元となる XHTML が null です。"); Xhtml result = new Xhtml(); // 文書型宣言なども含めてコピー foreach(XmlNode x in html.ChildNodes){ result.AppendChild(result.ImportNode(x, true)); } return result; }
// Bbs に属する Action すべての SetReplaceUrl メソッドを実行します。 public static void SetAllReplaceUrl(Xhtml html){ html.SetReplaceUrl("/" + BbsViewThread.Id + "/1", ""); html.SetReplaceUrl("/" + BbsViewOrder.Id + "/1", "/" + BbsViewOrder.Id); html.SetReplaceUrl("/" + BbsViewRootList.Id + "/1", "/" + BbsViewRootList.Id); }