public string CalculatedVirtualPath()
        {
            var parents = MediaDetailsMapper.GetAllParentMediaDetails(this, LanguagesMapper.GetByID(this.LanguageID)).Reverse();

            var virtualPath = "";

            foreach (var parent in parents)
            {
                if (parent is RootPage || parent is Website)
                {
                    continue;
                }

                virtualPath = StringHelper.CreateSlug(parent.LinkTitle) + "/" + virtualPath;
            }

            if (virtualPath == "")
            {
                virtualPath = "~/";
            }

            virtualPath = URIHelper.ConvertAbsUrlToTilda(virtualPath);

            return(virtualPath);
        }
        public void RemoveFromCache()
        {
            var htmlCacheKey   = GetCacheKey(RenderVersion.HTML);
            var mobileCacheKey = GetCacheKey(RenderVersion.Mobile);

            FileCacheHelper.RemoveFromCache(htmlCacheKey);
            RedisCacheHelper.RemoveFromCache(htmlCacheKey);
            ContextHelper.RemoveFromCache(htmlCacheKey);

            RedisCacheHelper.RemoveFromCache(mobileCacheKey);
            FileCacheHelper.RemoveFromCache(mobileCacheKey);
            ContextHelper.RemoveFromCache(mobileCacheKey);

            var language = this.Language;

            if (language == null && this.LanguageID > 0)
            {
                language = LanguagesMapper.GetByID(this.LanguageID);
            }

            var parents = MediaDetailsMapper.GetAllParentMediaDetails(this, language).Where(i => i.ID != this.ID);

            foreach (var item in parents)
            {
                item.RemoveFromCache();
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (this.BasePage.CurrentMediaDetail == null)
            {
                return;
            }

            var items = MediaDetailsMapper.GetAllParentMediaDetails((MediaDetail)this.BasePage.CurrentMediaDetail, this.BasePage.CurrentLanguage);

            if (items.Any())
            {
                GenerateNav.BindItems(items);
            }
        }
        public string GetPageTitle()
        {
            if (FrameworkSettings.Current == null)
            {
                return("");
            }

            if (!string.IsNullOrEmpty(contextPageTitle))
            {
                return(contextPageTitle);
            }

            if (this.Title != this.LinkTitle)
            {
                return(this.Title);
            }

            var pageTitle = "";

            var details = MediaDetailsMapper.GetAllParentMediaDetails(this, Language).Reverse().ToList();


            if (details.Count == 0)
            {
                details.Add(WebsitesMapper.GetWebsite());
            }

            var counter = 0;

            foreach (MediaDetail detail in details)
            {
                pageTitle += detail.Title;

                counter++;

                if (counter < details.Count)
                {
                    pageTitle += " - ";
                }
            }

            contextPageTitle = pageTitle;

            return(contextPageTitle);
        }
        private void BindRootMedia(Media rootMedia)
        {
            /*var cache = FileCacheHelper.GetGenerateNavCache();
             *
             * if (!cache.IsError)
             * {
             *  var cacheData = cache.GetRawData<string>();
             *
             *  if (cacheData != "")
             *  {
             *      return;
             *  }
             * }*/

            var items = new List <IMediaDetail>();

            if (!IsBreadCrumbMenu)
            {
                /*var itemsCacheKey = $"{rootMedia.ID}_Items";
                 * var itemsCacheData = (List<IMediaDetail>)ContextHelper.GetFromCache(itemsCacheKey);
                 *
                 * if (itemsCacheData != null)
                 * {
                 *  return;
                 * }
                 * else
                 * {*/
                /*var items = MediaDetailsMapper.GetDataModel().MediaDetails.AsNoTracking().Where(i => i.Media.ParentMediaID == rootMedia.ID && i.HistoryVersionNumber == 0 && i.LanguageID == currentLanguage.ID && !i.IsDeleted && i.PublishDate <= DateTime.Now && (i.ExpiryDate == null || i.ExpiryDate > DateTime.Now)).OrderBy(i => i.Media.OrderIndex); //rootMedia.ChildMedias.SelectMany(m => m.MediaDetails.Where(i => i.HistoryVersionNumber == 0 && (i.ShowInMenu || i.RenderInFooter) && !i.IsDeleted && i.PostPublishDate <= DateTime.Now && (i.PostExpiryDate == null || i.PostExpiryDate > DateTime.Now))).OrderBy(i => i.Media.OrderIndex);
                 * Bind(items);*/

                //var mediaDetail = BaseMapper.GetDataModel().MediaDetails.FirstOrDefault(i => i.MediaID == rootMedia.ID && i.LanguageID == BasePage.CurrentLanguage.ID);

                var mediaDetail = rootMedia.GetLiveMediaDetail();

                if (mediaDetail == null || mediaDetail.MediaType == null)
                {
                    return;
                }

                if (mediaDetail.MediaType.Name == MediaTypeEnum.RootPage.ToString())
                {
                    rootMedia = WebsitesMapper.GetWebsite().Media;
                }

                var children = MediaDetailsMapper.GetDataModel().MediaDetails.Where(i => i.ShowInMenu && i.Media.ParentMediaID == rootMedia.ID && i.HistoryVersionNumber == 0 && i.LanguageID == currentLanguage.ID && !i.IsDeleted && i.PublishDate <= DateTime.Now && (i.ExpiryDate == null || i.ExpiryDate > DateTime.Now)).OrderBy(i => i.Media.OrderIndex).ToList();     //rootMedia.ChildMedias.SelectMany(m => m.MediaDetails.Where(i => i.HistoryVersionNumber == 0 && (i.ShowInMenu || i.RenderInFooter) && !i.IsDeleted && i.PostPublishDate <= DateTime.Now && (i.PostExpiryDate == null || i.PostExpiryDate > DateTime.Now))).OrderBy(i => i.Media.OrderIndex);
                items.AddRange(children);
                //items = mediaDetail.ChildMediaDetails.Where(i=>i.ShowInMenu).ToList();

                if (!items.Any() && RenderParentNavIfNoChildren)
                {
                    items = mediaDetail.Media.ParentMedia.GetLiveMediaDetail(mediaDetail.Language).ChildMediaDetails.Where(i => i.ShowInMenu).ToList();
                }

                //ContextHelper.SaveToCache(itemsCacheKey, itemsCacheData);
                // }
            }
            else
            {
                items = MediaDetailsMapper.GetAllParentMediaDetails(this.BasePage.CurrentMediaDetail, this.BasePage.CurrentLanguage).ToList();
            }

            Bind(items);
        }
 public IEnumerable <IMediaDetail> GetParentMediaDetails()
 {
     return(MediaDetailsMapper.GetAllParentMediaDetails(this, Language).Reverse().ToList());
 }