|
|
- @if (Page.ShowPaging == true)
- {
- <div class="col-6 col-sm-6 col-lg-4 rtl pull-right">
- <h2>@Model.Title</h2>
- <p class="excerpt">@MarkupHelper.GetDescription(Model.Content, 235, "...")</p>
- <p><a class="btn btn-primary" href="@Model.Url" role="button">بیشتر بخوانید »</a></p>
- </div>
- }
- else
- {
- <article class="post" data-id="@Model.ID" itemscope itemtype="http://schema.org/BlogPosting" itemprop="blogPost">
- <header class="jumbotron">
- <h1 itemprop="headline name">
- <a href="@Model.Url" itemprop="url">@Model.Title</a>
- </h1>
- <div>
- <abbr title="@Model.PubDate.ToLocalTime()" itemprop="datePublished">@Model.PubDate.ToLocalTime().ToString("MMMM d. yyyy")</abbr>
- <a href="@Model.Url#comments">
- <em class="glyphicon glyphicon-comment"></em>
- @Model.CountApprovedComments(Context) Comments
- </a>
- @Categories()
- </div>
- </header>
-
- <div itemprop="articleBody">@Html.Raw(Model.Content)</div>
- @if (Blog.CurrentPost != null)
- {
- <section id="comments" aria-label="Comments">
- @if (Model.CountApprovedComments(Context) > 0)
- {
- <h2>Comments</h2>
- }
-
- @foreach (Comment comment in Model.Comments)
- {
- if (comment.IsApproved || !Blog.ModerateComments || Context.User.Identity.IsAuthenticated)
- {
- @RenderPage("Comment.cshtml", comment)
- }
- }
- </section>
-
- if (Model.AreCommentsOpen(Context))
- {
- @RenderPage("~/views/CommentForm.cshtml")
- }
- }
- </article>
-
- @helper Categories()
- {
- if (Model.Categories.Length > 0)
- {
- <ul class="categories">
- <li><em class="glyphicon glyphicon-bookmark"></em> Posted in: </li>
- @foreach (string cat in Model.Categories)
- {
- <li itemprop="articleSection">
- <a href="~/category/@HttpUtility.UrlEncode(cat.ToLowerInvariant())">@cat</a>
- </li>
- }
- </ul>
- }
- }
- }
-
- @functions{
- public class MarkupHelper
- {
- #region excerpt generation
-
- public static string GetDescription(string content, int length = 300, string ommission = "...")
- {
- return TruncateHtml(StripTags(content), 235, ommission);
- }
-
- public static string TruncateHtml(string input, int length = 300, string ommission = "...")
- {
- if (input == null || input.Length < length)
- return input;
- int nextSpace = input.LastIndexOf(" ", length);
- return string.Format("{0}" + ommission,
- input.Substring(0, (nextSpace > 0) ? nextSpace : length).Trim());
- }
-
- public static string StripTags(string markup)
- {
- try
- {
- StringReader stringReader = new StringReader(markup);
- System.Xml.XPath.XPathDocument xPathdocument;
- using (System.Xml.XmlReader xmlReader = System.Xml.XmlReader.Create(stringReader,
- new System.Xml.XmlReaderSettings() { ConformanceLevel = System.Xml.ConformanceLevel.Fragment }))
- {
- xPathdocument = new System.Xml.XPath.XPathDocument(xmlReader);
- }
-
- return xPathdocument.CreateNavigator().Value;
- }
- catch
- {
- return string.Empty;
- }
- }
-
- #endregion
- }
- }
|