コード例 #1
0
		/// <summary>
		/// コメントへのリンクを取得します。
		/// </summary>
		protected XmlNode CommentLink(AbsPath path, string title){

			XmlNode result = Html.Create("ul", "comment-link");
			XmlElement resultLi = Html.Create("li");

			Response.AddDataSource(Bbs);
			BbsThread bt = Bbs.GetCommentToThread(path);
			AbsPath commentPath = path.Combine(CommentPath);

			XmlElement commentA = Html.A(commentPath);
			if(bt == null || bt.Articles.Length == 0){
				commentA.InnerText = string.Format("「{0}」に{1}を書く", title, CommentName);
			} else {
				commentA.InnerText = string.Format("「{0}」への{1} ({2}件)", title, CommentName, bt.Count);
			}
			resultLi.AppendChild(commentA);
			result.AppendChild(resultLi);
			return result;
		}
コード例 #2
0
ファイル: pager.cs プロジェクト: bakera/Hatomaru.dll
		/// <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;
		}
コード例 #3
0
ファイル: viewcomment.cs プロジェクト: bakera/Hatomaru.dll
// コンストラクタ

		/// <summary>
		/// コメントを見るアクションのインスタンスを開始します。
		/// </summary>
		public ViewComment(HatomaruXml model, AbsPath path, AbsPath commentToPath) : base(model, path){
			myCommentToPath = commentToPath;
			myPath = myCommentToPath.Combine(CommentPath);
		}
コード例 #4
0
ファイル: xhtml_create.cs プロジェクト: bakera/Hatomaru.dll
		/// <summary>
		/// AbsPath と番号を指定して、ページナビゲーション用の a要素を作成します。
		/// </summary>
		public XmlElement GetPageLink(AbsPath uriPrefix, int pageNum){
			XmlElement pageNavA = A(uriPrefix.Combine(pageNum.ToString()));
			pageNavA.InnerText = pageNum.ToString();
			return pageNavA;
		}