Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2016
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.07 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web.Mvc;
  5. using ServiceStack.Text;
  6. using SitefinityWebApp.Custom.DynamicContent.Managers;
  7. using SitefinityWebApp.Mvc.Models;
  8. using Telerik.Sitefinity.DynamicModules;
  9. using Telerik.Sitefinity.Frontend.Mvc.Helpers;
  10. using Telerik.Sitefinity.Frontend.Mvc.Models;
  11. using Telerik.Sitefinity.Frontend.Navigation.Mvc.Models;
  12. using Telerik.Sitefinity.GenericContent.Model;
  13. using Telerik.Sitefinity.Libraries.Model;
  14. using Telerik.Sitefinity.Mvc;
  15. using Telerik.Sitefinity.RelatedData;
  16. using Telerik.Sitefinity.Utilities.TypeConverters;
  17. using Telerik.Sitefinity.Web;
  18.  
  19. namespace SitefinityWebApp.Mvc.Controllers
  20. {
  21. [ControllerToolboxItem(Name = "Footer", Title = "Footer", SectionName = "Custom Widgets", CssClass = "sfNavigationIcn sfMvcIcn")]
  22. public class FooterController : Controller
  23. {
  24. public string SerializedSelectedNavigationPages { get; set; }
  25. public string SerializedSelectedNavigationExternalPages { get; set; }
  26. public string MailingListBigText { get; set; }
  27. public string MailingListSmallText { get; set; }
  28. public string MailingListButtonText { get; set; }
  29. public Guid? MailingListPageId { get; set; }
  30. public string RssLink { get; set; }
  31. public string FacebookLink { get; set; }
  32. public string TwitterLink { get; set; }
  33. public string YoutubeLink { get; set; }
  34. public string InstagramLink { get; set; }
  35. public string SponsorType => SponsorManager.GetManager().DynamicTypeFullName;
  36. public string SelectedSponsorIds { get; set; }
  37.  
  38. public ActionResult Index()
  39. {
  40. var navItems = GetNavItems();
  41. var mailingListPage = MailingListPageId.HasValue ? new NodeViewModel(null, HyperLinkHelpers.GetFullPageUrl(MailingListPageId.Value), "_self", false, false) : null;
  42. var sponsorViewModels = GetSponsorViewModels();
  43.  
  44. var model = new FooterViewModel(navItems, MailingListBigText, MailingListSmallText, MailingListButtonText, mailingListPage, RssLink, FacebookLink, TwitterLink, YoutubeLink, InstagramLink,
  45. sponsorViewModels);
  46.  
  47. return View("Default", model);
  48. }
  49.  
  50. private List<ItemViewModel> GetSponsorViewModels()
  51. {
  52. var sponsorGuids = JsonSerializer.DeserializeFromString<IList<Guid>>(SelectedSponsorIds);
  53. var type = TypeResolutionService.ResolveType(SponsorType);
  54. var sponsorDataItems = DynamicModuleManager.GetManager().GetDataItems(type).Where(x => x.Status == ContentLifecycleStatus.Live && x.Visible && sponsorGuids.Contains(x.Id));
  55. var sponsorViewModels = new List<ItemViewModel>();
  56. foreach (var spi in sponsorDataItems)
  57. {
  58. spi.GetRelatedItems<Image>("Image");
  59. sponsorViewModels.Add(new ItemViewModel(spi));
  60. }
  61. return sponsorViewModels;
  62. }
  63.  
  64. private List<NodeViewModel> GetNavItems()
  65. {
  66. var navigationPages = JsonSerializer.DeserializeFromString<SelectedPageModel[]>(SerializedSelectedNavigationPages);
  67. var navItems = new List<NodeViewModel>();
  68. if (navigationPages != null)
  69. {
  70. var smp = SiteMapBase.GetSiteMapProvider(SiteMapBase.DefaultSiteMapProviderName);
  71. foreach (var page in navigationPages)
  72. {
  73. if (page.IsExternal)
  74. {
  75. var nvm = new NodeViewModel(null, page.Url, "_self", false, false) {Title = page.TitlesPath};
  76. navItems.Add(nvm);
  77. }
  78. else
  79. {
  80. var siteMapNode = smp.FindSiteMapNodeFromKey(page.Id.ToString("D"));
  81. // ReSharper disable once PossibleNullReferenceException
  82. var nvm = new NodeViewModel(null, siteMapNode.Url, "_self", false, false) {Title = siteMapNode.Title};
  83. navItems.Add(nvm);
  84. }
  85. }
  86. }
  87. return navItems;
  88. }
  89. }
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement