示例#1
0
        private void SetBlogTags(SitePageEditModel model, SitePage dbModel)
        {
            if (model.Tags == null)
            {
                return;
            }

            var currentTags          = model.Tags.Split(',');
            var currentTagsFormatted = new ArrayList();

            foreach (var tag in currentTags)
            {
                currentTagsFormatted.Add(tag.UrlKey());
            }

            var currentTagsFormattedArray = currentTagsFormatted.ToArray();

            var previousTags = new ArrayList();

            foreach (var tag in dbModel.SitePageTags)
            {
                previousTags.Add(tag.Tag.Key);
            }

            var tagsToRemove = previousTags.ToArray().Except(currentTagsFormatted.ToArray());

            this.AddNewTags(model, dbModel, currentTags);

            this.RemoveDeletedTags(model, tagsToRemove);
        }
示例#2
0
        private void AddNewTags(SitePageEditModel model, SitePage dbModel, string[] currentTags)
        {
            foreach (var tagName in currentTags)
            {
                var tagKey = tagName.UrlKey();

                if (string.IsNullOrWhiteSpace(tagKey))
                {
                    continue;
                }

                if (dbModel.SitePageTags.FirstOrDefault(x => x.Tag.Key == tagKey) == null)
                {
                    var tagDb = this.tagRepository.Get(tagKey);

                    if (tagDb == null || tagDb.TagId == 0)
                    {
                        this.tagRepository.Create(new Tag
                        {
                            Name = tagName.Trim(),
                            Key  = tagKey
                        });

                        tagDb = this.tagRepository.Get(tagKey);
                    }

                    this.sitePageTagRepository.Create(new SitePageTag()
                    {
                        SitePageId = model.SitePageId,
                        TagId      = tagDb.TagId,
                    });
                }
            }
        }
示例#3
0
        private SitePage ConvertToDbModel(SitePageEditModel model)
        {
            var dbModel = this.sitePageRepository.Get(model.SitePageId);

            if (string.IsNullOrWhiteSpace(dbModel.CreatedByUserId))
            {
                dbModel.CreatedByUserId = this.userManager.GetUserId(this.User);
            }

            dbModel.UpdatedByUserId           = this.userManager.GetUserId(this.User);
            dbModel.Key                       = model.Key.UrlKey();
            dbModel.BreadcrumbName            = model.BreadcrumbName.Trim();
            dbModel.PublishDateTimeUtc        = model.PublishDateTimeUtc;
            dbModel.Content                   = model.Content;
            dbModel.Title                     = model.Title.Trim();
            dbModel.PageHeader                = model.PageHeader;
            dbModel.IsLive                    = model.IsLive;
            dbModel.ExcludePageFromSiteMapXml = model.ExcludePageFromSiteMapXml;
            dbModel.MetaDescription           = (model.MetaDescription != null) ? model.MetaDescription.Trim() : string.Empty;
            dbModel.PageType                  = model.PageType;
            dbModel.ReviewBestValue           = model.ReviewBestValue;
            dbModel.ReviewItemName            = model.ReviewItemName;
            dbModel.ReviewRatingValue         = model.ReviewRatingValue;
            dbModel.ReviewWorstValue          = model.ReviewWorstValue;
            dbModel.MetaKeywords              = (model.MetaKeywords != null) ? model.MetaKeywords.Trim() : string.Empty;
            dbModel.AllowsComments            = model.AllowsComments;
            dbModel.IsSectionHomePage         = model.IsSectionHomePage;

            return(dbModel);
        }
示例#4
0
        public IActionResult EditSitePage(SitePageEditModel model)
        {
            if (!this.ModelState.IsValid)
            {
                return(this.View(model));
            }

            var dbModel = this.ConvertToDbModel(model);

            if (this.sitePageRepository.Update(dbModel))
            {
                var allPhotos = this.sitePagePhotoRepository.GetBlogPhotos(model.SitePageId);

                foreach (var photo in allPhotos)
                {
                    photo.Title       = this.Request.Form["PhotoTitle_" + photo.SitePageId];
                    photo.Description = this.Request.Form["PhotoDescription_" + photo.SitePageId];

                    this.sitePagePhotoRepository.Update(photo);
                }

                this.SetBlogTags(model, dbModel);

                this.ClearCache(model, dbModel);

                return(this.RedirectToAction(nameof(this.EditSitePage), new { SitePageId = dbModel.SitePageId }));
            }

            return(this.View(model));
        }
示例#5
0
        private SitePageEditModel ToUiEditModel(SitePage dbModel, bool isHomePageSection)
        {
            var model = new SitePageEditModel()
            {
                Key                       = dbModel.Key,
                BreadcrumbName            = dbModel.BreadcrumbName,
                Content                   = dbModel.Content,
                PageHeader                = dbModel.PageHeader,
                Title                     = dbModel.Title,
                SitePageId                = dbModel.SitePageId,
                PublishDateTimeUtc        = dbModel.PublishDateTimeUtc,
                IsLive                    = dbModel.IsLive,
                ExcludePageFromSiteMapXml = dbModel.ExcludePageFromSiteMapXml,
                LiveUrlPath               = UrlBuilder.BlogUrlPath(dbModel.SitePageSection.Key, dbModel.Key),
                PreviewUrlPath            = UrlBuilder.BlogPreviewUrlPath(dbModel.SitePageId),
                MetaDescription           = dbModel.MetaDescription,
                PageType                  = dbModel.PageType,
                ReviewBestValue           = dbModel.ReviewBestValue,
                ReviewItemName            = dbModel.ReviewItemName,
                ReviewRatingValue         = dbModel.ReviewRatingValue,
                ReviewWorstValue          = dbModel.ReviewWorstValue,
                MetaKeywords              = dbModel.MetaKeywords,
                AllowsComments            = dbModel.AllowsComments,
                IsSectionHomePage         = dbModel.IsSectionHomePage,
            };

            var mc = new ModelConverter(this.cacheService);

            foreach (var photo in dbModel.Photos.OrderBy(x => x.Rank))
            {
                model.BlogPhotos.Add(new SitePagePhotoModel
                {
                    SitePagePhotoId       = photo.SitePagePhotoId,
                    IsDefault             = photo.IsDefault,
                    PhotoUrl              = photo.PhotoUrl,
                    PhotoCdnUrl           = mc.ConvertBlobToCdnUrl(photo.PhotoUrl),
                    PhotoThumbCdnUrl      = mc.ConvertBlobToCdnUrl(photo.PhotoThumbUrl),
                    PhotoFullScreenCdnUrl = mc.ConvertBlobToCdnUrl(photo.PhotoFullScreenUrl),
                    PhotoPreviewCdnUrl    = mc.ConvertBlobToCdnUrl(photo.PhotoPreviewUrl),
                    Title       = photo.Title,
                    Description = photo.Description
                });
            }

            foreach (var tagItem in dbModel.SitePageTags.OrderBy(x => x.Tag.Name))
            {
                model.BlogTags.Add(tagItem.Tag.Name);
            }

            model.BlogTags = model.BlogTags.OrderBy(x => x).ToList();

            model.Tags = string.Join(", ", model.BlogTags);

            return(model);
        }
示例#6
0
        private void RemoveDeletedTags(SitePageEditModel model, IEnumerable <object> tagsToRemove)
        {
            foreach (var tag in tagsToRemove)
            {
                var tagKey = tag.ToString().UrlKey();

                var tagDb = this.tagRepository.Get(tagKey);

                this.sitePageTagRepository.Delete(tagDb.TagId, model.SitePageId);
            }
        }
示例#7
0
        private void ClearCache(SitePageEditModel model, SitePage dbModel)
        {
            var cacheKey = CacheHelper.GetPageCacheKey(dbModel.SitePageSection.Key, model.Key);

            this.memoryCache.Remove(cacheKey);
        }