Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @*
- Lists all posts in a collapsable list.
- Note: you probably don't want to use this if you have 1000's of nodes as the markup will get quite heavy.
- *@
- @{ /* Displays post items in list form:
- * - year
- * - month
- * - post item
- * - post item
- */}
- @using System.Linq;
- @using uBlogsy.Common.Extensions
- @using uBlogsy.Common.Helpers
- @using uBlogsy.BusinessLogic;
- @using uHelpsy.Extensions
- @inherits UmbracoTemplatePage
- @{
- int firstYear = -1;
- var nodes = PostService.Instance
- .GetPosts(Model.Content)
- .Where(x => x.Url() != "#")
- .ToIPublishedContent(true)
- .ToList();
- var archiveClass = "uBlogsy_archive uBlogsy_bottom_border";
- if ((bool)ViewData["AltLayout"])
- {
- archiveClass += " uBlogsy_post_archive_alt";
- }
- @RenderScript()
- <section class="@archiveClass">
- <h2 class="uBlogsy_head_style20">@Umbraco.GetDictionaryValue("uBlogsyDicArchive")</h2>
- <div id="uBlogsy_post_archive">
- <ul class="uBlogsy_years">
- @foreach (var node in nodes)
- {
- var date = node.GetPropertyValue<DateTime>("uBlogsyPostDate");
- var currentYear = date.Year;
- if (firstYear == -1) { firstYear = currentYear; }
- var yearClass = "uBlogsy_year";
- if (currentYear == firstYear) { yearClass += " uBlogsy_year_first"; }
- // render years-months-items
- <li class="@yearClass"><a class="uBlogsy_year_name" href="#"><span>@currentYear</span></a>
- @*render year name*@
- <ul class="uBlogsy_months">
- @foreach (var monthNode in nodes)
- {
- date = monthNode.GetPropertyValue<DateTime>("uBlogsyPostDate");
- if (date.Year != currentYear) { break; }
- var currentMonth = date.Month;
- // render month
- <li class="uBlogsy_month"><a class="uBlogsy_month_name" href="#"><span>@DateHelper.GetMonthName(currentMonth, false)</span>
- </a> @* render month name *@
- <ul class="uBlogsy_post_items">
- @RenderPosts(nodes, currentYear, currentMonth)
- </ul>
- </li>
- }
- </ul>
- </li>
- }
- </ul>
- </div>
- </section>
- }
- @helper RenderPosts(List<IPublishedContent> nodes, int currentYear, int currentMonth)
- {
- foreach (var node in nodes)
- {
- var date = node.GetPropertyValue<DateTime>("uBlogsyPostDate");
- var formattedDate = date.ToString().FormatDateTime("d MMMM yyyy");
- var title = node.GetPropertyValue<string>("uBlogsyNavigationTitle");
- if (date.Month != currentMonth) { index--; break; }
- if (date.Year != currentYear) { index--; break; }
- var cssClass = "uBlogsy_post_item" + (Model.Content.Id == node.Id ? " uBlogsy_current" : string.Empty);
- <li class="@cssClass"><a href="@node.Url()"><span class="uBlogsy_post_title">@title</span>
- <span class="uBlogsy_post_date uBlogsy_font_style50">- @formattedDate</span>
- </a></li>
- }
- }
- @helper RenderScript()
- {
- <script type="text/javascript">
- $(document).ready(function () {
- $('#uBlogsy_post_archive .uBlogsy_year_name').click(function () {
- // toggle months
- $(this).siblings(".uBlogsy_months").toggle();
- $(this).siblings(".uBlogsy_months").find('.uBlogsy_post_items').trigger('click');
- return false;
- });
- $('#uBlogsy_post_archive .uBlogsy_month_name').click(function () {
- // toggle months
- $(this).siblings(".uBlogsy_post_items").toggle();
- return false;
- });
- // expand current post item's month
- var postItem = $('#uBlogsy_post_archive').find('a[href$="' + window.location.pathname + '"]');
- if (postItem.length == 1) {
- $(postItem).parents('#uBlogsy_post_archive .uBlogsy_post_items').show();
- $(postItem).parents('#uBlogsy_post_archive .uBlogsy_months').show();
- }
- else {
- // expand latest month
- $(postItem).parents('#uBlogsy_post_archive .uBlogsy_months:eq(0)').show();
- // trigger click to show first month
- $('.uBlogsy_month_name:eq(0)').trigger('click');
- }
- });
- </script>
- }
- @functions
- {
- private int index = 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement