/// <summary> /// get pagewise blog teasers based on the filters like category & tag /// </summary> /// <param name="selectedPage"></param> /// <param name="categoryID"></param> /// <param name="tagID"></param> /// <param name="blogArchivePageItemID"></param> /// <param name="totalPages"></param> /// <returns></returns> private List <Blog> GetBlogTeasersByFilters(int selectedPage, string categoryID, string tagID, string blogArchivePageItemID, out int totalPages) { List <Item> blogPageItems = new List <Item>(); List <Blog> blogsByPage = new List <Blog>(); totalPages = 1; Item blogArchivePageItem = !string.IsNullOrEmpty(blogArchivePageItemID) ? SitecoreUtility.GetItem(new ID(blogArchivePageItemID)) : null; if (blogArchivePageItem != null && blogArchivePageItem.HasChildren) { blogPageItems = SitecoreUtility.GetItemsByTemplate(blogArchivePageItem, References.Templates.BlogPage.ID) .Where(x => x.Fields[References.Templates.Blog.Fields.IsActive].Value == "1").ToList(); if (blogPageItems != null && blogPageItems.Count > 0) { int maxTeasersPerPage = Constants.MaxBlogTeasersPerPage; if (!string.IsNullOrEmpty(categoryID)) { Item categoryItem = SitecoreUtility.GetItem(new ID(categoryID)); if (categoryItem != null && categoryItem.Fields[References.Templates.BlogCategory.Fields.IsActive].Value == "1") { blogPageItems = blogPageItems.Where(x => x.Fields[References.Templates.Blog.Fields.BlogCategories].Value.Contains(categoryID)).ToList(); } } else if (!string.IsNullOrEmpty(tagID)) { Item tagItem = SitecoreUtility.GetItem(new ID(tagID)); if (tagItem != null && tagItem.Fields[References.Templates.BlogTag.Fields.IsActive].Value == "1") { blogPageItems = blogPageItems.Where(x => x.Fields[References.Templates.Blog.Fields.BlogTags].Value.Contains(tagID)).ToList(); } } if (blogPageItems != null && blogPageItems.Count > 0) { foreach (Item item in blogPageItems) { blogsByPage.Add(new Blog(item)); } } if (blogsByPage != null && blogsByPage.Count > 0) { blogsByPage = blogsByPage.OrderByDescending(x => x.PostedDateTime).ToList(); blogsByPage = SitecoreUtility.GetPagewiseRecords <Blog>(blogsByPage, maxTeasersPerPage, selectedPage, out totalPages); } } } return(blogsByPage); }
public ActionResult RenderCourseTeasersCarousel() { CourseTeasersCarouselSource viewModel = null; try { //get the datasource item assigned to the rendering Item renderingDatasourceItem = SitecoreUtility.GetRenderingDatasourceItem(); if (renderingDatasourceItem != null && renderingDatasourceItem.TemplateID == References.Templates.CourseTeasersCarouselSource.ID) { viewModel = new CourseTeasersCarouselSource(renderingDatasourceItem); if (viewModel.IsActive) { Item courseArchivePageItem = SitecoreUtility.GetItem(new ID(viewModel.CourseArchivePageID)); if (courseArchivePageItem != null) { //get all the active course items List <Item> coursePageItems = SitecoreUtility.GetItemsByTemplate(courseArchivePageItem, References.Templates.CourseDetailsPage.ID) .Where(x => x.Fields[References.Templates.CourseDetails.Fields.IsActive].Value == "1").ToList(); if (coursePageItems != null && coursePageItems.Count > 0) { viewModel.CourseTeasers = new List <CourseDetails>(); foreach (Item item in coursePageItems) { CourseDetails courseDetails = new CourseDetails(item); courseDetails.Instructor = GetInstructor(courseDetails.SelectedInstructorItemID); viewModel.CourseTeasers.Add(courseDetails); } } } } else { viewModel = null; } } } catch (System.Exception ex) { LogManager.SaveLog(System.Reflection.MethodBase.GetCurrentMethod().ReflectedType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name, ex, LogManager.LogTypes.Error, string.Empty); } return(View(GlobalConstants.SUBLAYOUTS_PATH + "PageContent/CourseTeasersCarousel.cshtml", viewModel)); }
/// <summary> /// Get the selected intructor /// </summary> /// <param name="selectedInstructorItemID"></param> /// <returns></returns> private Instructor GetInstructor(string selectedInstructorItemID) { Instructor instructor = null; if (!string.IsNullOrEmpty(selectedInstructorItemID)) { Item instructorItem = SitecoreUtility.GetItem(new ID(selectedInstructorItemID)); if (instructorItem != null) { instructor = new Instructor(instructorItem); } } return(instructor); }
/// <summary> /// gets courses by page /// </summary> /// <param name="parentItem">If its first page, parent item should be passed. All its child pages will be verified.</param> /// <param name="pageNumber">1 is for first page, 2 is for next page & 0 is for previous page</param> /// <param name="referenceCourseItemID">the course item id of the first or last course teaser on page</param> /// <returns></returns> private List <CourseDetails> GetCoursesByPage(string coursesRootItemID, string pageNumber, string referenceCourseItemIDs, out bool showPrevButton, out bool showNextButton) { showPrevButton = false; showNextButton = false; List <CourseDetails> lstCourses = new List <CourseDetails>(); List <Item> featuredItems = new List <Item>(); int maxTeasersPerPage = Constants.MaxCourseTeasersPerPage; int itemsInList = 0; if (pageNumber == "1" && !string.IsNullOrEmpty(coursesRootItemID)) { Item coursesRootItem = SitecoreUtility.GetItem(new ID(coursesRootItemID)); //get the list of courses for first page featuredItems = coursesRootItem != null?SitecoreUtility.GetItemsByTemplate(coursesRootItem, References.Templates.CourseDetailsPage.ID) : null; if (featuredItems != null && featuredItems.Count > 0) { foreach (Item featuredItem in featuredItems) { if (itemsInList < maxTeasersPerPage) { CourseDetails courseDetailsItem = new CourseDetails(featuredItem); if (courseDetailsItem != null && courseDetailsItem.IsActive) { courseDetailsItem.Instructor = GetInstructor(courseDetailsItem.SelectedInstructorItemID); lstCourses.Add(courseDetailsItem); itemsInList++; } } } } } else if (!string.IsNullOrEmpty(referenceCourseItemIDs)) { string[] arrItemIDs = referenceCourseItemIDs.Split(','); if (arrItemIDs != null && arrItemIDs.Length > 0) { Item referenceCourseItemFirst = !string.IsNullOrEmpty(arrItemIDs[0]) ? SitecoreUtility.GetItem(new ID(arrItemIDs[0])) : null; Item referenceCourseItemLast = arrItemIDs.Length > 1 && !string.IsNullOrEmpty(arrItemIDs[1]) ? SitecoreUtility.GetItem(new ID(arrItemIDs[1])) : null; Item siblingCourseItem = null; while (itemsInList < maxTeasersPerPage) { if (pageNumber == "0") { //get previous page items siblingCourseItem = referenceCourseItemFirst != null?SitecoreUtility.GetPreceedingSiblingItemByTemplate(referenceCourseItemFirst, References.Templates.CourseDetailsPage.ID, References.Templates.CourseDetails.Fields.IsActive) : null; } else if (pageNumber == "2") { //get next page items siblingCourseItem = referenceCourseItemLast != null?SitecoreUtility.GetSucceedingSiblingItemByTemplate(referenceCourseItemLast, References.Templates.CourseDetailsPage.ID, References.Templates.CourseDetails.Fields.IsActive) : null; } if (siblingCourseItem != null) { referenceCourseItemFirst = siblingCourseItem; referenceCourseItemLast = siblingCourseItem; CourseDetails courseDetailsItem = new CourseDetails(siblingCourseItem); if (courseDetailsItem != null && courseDetailsItem.IsActive) { courseDetailsItem.Instructor = GetInstructor(courseDetailsItem.SelectedInstructorItemID); lstCourses.Add(courseDetailsItem); itemsInList++; } } else { break; } } } } if (lstCourses != null && lstCourses.Count > 0) { //If the 'Previous' button was clicked, then the sibling items are added with the first item in page as reference. //so this list should be reversed ideally. if (lstCourses.Count > 1 && pageNumber == "0") { lstCourses.Reverse(); } showPrevButton = SitecoreUtility.GetPreceedingSiblingItemByTemplate(lstCourses.FirstOrDefault().InnerItem, References.Templates.CourseDetailsPage.ID, References.Templates.CourseDetails.Fields.IsActive) != null; showNextButton = SitecoreUtility.GetSucceedingSiblingItemByTemplate(lstCourses.LastOrDefault().InnerItem, References.Templates.CourseDetailsPage.ID, References.Templates.CourseDetails.Fields.IsActive) != null; } return(lstCourses); }
public ActionResult RenderTagsOrCategoriesSidebarFilter() { TagsOrCategoriesSidebarFilter viewModel = null; try { string blogArchivePageItemID = SitecoreUtility.GetRenderingParameters(References.Templates.TagsOrCategoriesSidebarFilter.ID, References.Templates.TagsOrCategoriesSidebarFilter.Fields.BlogArchivePage); if (!string.IsNullOrEmpty(blogArchivePageItemID)) { Item blogArchivePageItem = SitecoreUtility.GetItem(new ID(blogArchivePageItemID)); if (blogArchivePageItem != null) { viewModel = new TagsOrCategoriesSidebarFilter(); viewModel.SectionTitle = SitecoreUtility.GetRenderingParameters(References.Templates.TagsOrCategoriesSidebarFilter.ID, References.Templates.TagsOrCategoriesSidebarFilter.Fields.SectionTitle); viewModel.DisplayItemsAsTags = SitecoreUtility.GetRenderingParameters(References.Templates.TagsOrCategoriesSidebarFilter.ID, References.Templates.TagsOrCategoriesSidebarFilter.Fields.DisplayItemsAsTags) == "1"; viewModel.BlogArchivePageURL = SitecoreUtility.GetItemURL(blogArchivePageItem); if (!viewModel.DisplayItemsAsTags) { List <BlogCategory> categoriesUsedByBlogs = new List <BlogCategory>(); Item blogCategoriesFolderItem = SitecoreUtility.GetItem(References.Content.BlogCategoriesFolder); if (blogCategoriesFolderItem != null && blogCategoriesFolderItem.HasChildren) { List <Item> activeCategories = SitecoreUtility.GetItemsByTemplate(blogCategoriesFolderItem, References.Templates.BlogCategory.ID) .Where(x => x.Fields[References.Templates.BlogCategory.Fields.IsActive].Value == "1").ToList(); if (activeCategories != null && activeCategories.Count > 0) { foreach (Item category in activeCategories) { if (SitecoreUtility.HasReferrers(category, References.Templates.BlogPage.ID, References.Templates.Blog.Fields.IsActive)) { BlogCategory blogCategory = new BlogCategory(category); categoriesUsedByBlogs.Add(blogCategory); } } viewModel.BlogCategories = categoriesUsedByBlogs; } } } else { List <BlogTag> tagsUsedByBlogs = new List <BlogTag>(); Item blogTagsFolderItem = SitecoreUtility.GetItem(References.Content.BlogTagsFolder); if (blogTagsFolderItem != null && blogTagsFolderItem.HasChildren) { List <Item> activeTags = SitecoreUtility.GetItemsByTemplate(blogTagsFolderItem, References.Templates.BlogTag.ID) .Where(x => x.Fields[References.Templates.BlogTag.Fields.IsActive].Value == "1").ToList(); if (activeTags != null && activeTags.Count > 0) { foreach (Item tag in activeTags) { if (SitecoreUtility.HasReferrers(tag, References.Templates.BlogPage.ID, References.Templates.Blog.Fields.IsActive)) { BlogTag blogTag = new BlogTag(tag); tagsUsedByBlogs.Add(blogTag); } } viewModel.BlogTags = tagsUsedByBlogs; } } } } } } catch (System.Exception ex) { LogManager.SaveLog(System.Reflection.MethodBase.GetCurrentMethod().ReflectedType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name, ex, LogManager.LogTypes.Error, string.Empty); } return(View(GlobalConstants.SUBLAYOUTS_PATH + "PageContent/TagsOrCategoriesSidebarFilter.cshtml", viewModel)); }
/// <summary> /// gets courses by page /// </summary> /// <param name="parentItem">If its first page, parent item should be passed. All its child pages will be verified.</param> /// <param name="pageNumber">1 is for first page, 2 is for next page & 0 is for previous page</param> /// <param name="referenceCourseItemID">the course item id of the first or last course teaser on page</param> /// <returns></returns> private Blog GetBlogByPage(string pageNumber, string currentBlogItemID) { Blog blog = null; Item currentBlogItem = null; Item parentItem = null; List <Item> activeBlogItems = null; int indexOfCurrentItem = -1; if (!string.IsNullOrEmpty(pageNumber)) { if (pageNumber == "1" && Sitecore.Context.Item.TemplateID == References.Templates.BlogPage.ID) { blog = new Blog(Sitecore.Context.Item); parentItem = Sitecore.Context.Item.Parent; activeBlogItems = parentItem != null?parentItem.Children .Where(x => x.TemplateID == References.Templates.BlogPage.ID && x.Fields[References.Templates.Blog.Fields.IsActive].Value == "1") .OrderBy(b => Sitecore.DateUtil.ToServerTime(Sitecore.DateUtil.IsoDateToDateTime(b.Fields[References.Templates.Blog.Fields.PostedDate].Value))).ToList() : null; if (activeBlogItems != null && activeBlogItems.Count > 1) { indexOfCurrentItem = activeBlogItems.FindIndex(x => x.ID == Sitecore.Context.Item.ID); } } else if (!string.IsNullOrEmpty(currentBlogItemID) && (pageNumber == "0" || pageNumber == "2")) { currentBlogItem = SitecoreUtility.GetItem(new ID(currentBlogItemID)); parentItem = currentBlogItem != null ? currentBlogItem.Parent : null; activeBlogItems = parentItem != null?parentItem.Children .Where(x => x.TemplateID == References.Templates.BlogPage.ID && x.Fields[References.Templates.Blog.Fields.IsActive].Value == "1") .OrderBy(b => Sitecore.DateUtil.ToServerTime(Sitecore.DateUtil.IsoDateToDateTime(b.Fields[References.Templates.Blog.Fields.PostedDate].Value))).ToList() : null; if (activeBlogItems != null && activeBlogItems.Count > 1) { indexOfCurrentItem = activeBlogItems.FindIndex(x => x.ID == currentBlogItem.ID); Item siblingBlogItem = null; if (pageNumber == "0" && indexOfCurrentItem > 0) { //get previous blog item siblingBlogItem = activeBlogItems[indexOfCurrentItem - 1]; } else if (pageNumber == "2" && indexOfCurrentItem < (activeBlogItems.Count - 1)) { //get next blog item siblingBlogItem = activeBlogItems[indexOfCurrentItem + 1]; } if (siblingBlogItem != null) { blog = new Blog(siblingBlogItem); indexOfCurrentItem = activeBlogItems.FindIndex(x => x.ID == siblingBlogItem.ID); } } } if (blog != null && blog.IsActive) { blog.RelatedPosts = GetRelatedPosts(blog.InnerItem, References.Templates.Blog.Fields.RelatedPosts); blog.PreviousBlogURL = indexOfCurrentItem > 0 ? SitecoreUtility.GetItemURL(activeBlogItems[indexOfCurrentItem - 1]) : ""; blog.NextBlogURL = indexOfCurrentItem < (activeBlogItems.Count - 1) ? SitecoreUtility.GetItemURL(activeBlogItems[indexOfCurrentItem + 1]) : ""; } else { blog = null; } } return(blog); }