Пример #1
0
        public ActionResult Edit(UrlRecordModel model, bool continueEditing)
        {
            var urlRecord = _urlRecordService.GetUrlRecordById(model.Id);

            if (urlRecord == null)
            {
                return(RedirectToAction("List"));
            }

            if (!urlRecord.IsActive && model.IsActive)
            {
                var urlRecords = _urlRecordService.GetAllUrlRecords(0, int.MaxValue, null, model.EntityName, model.EntityId, model.LanguageId, true);
                if (urlRecords.Count > 0)
                {
                    ModelState.AddModelError("IsActive", T("Admin.System.SeNames.ActiveSlugAlreadyExist"));
                }
            }

            if (ModelState.IsValid)
            {
                urlRecord.Slug       = model.Slug;
                urlRecord.EntityName = model.EntityName;
                urlRecord.IsActive   = model.IsActive;
                urlRecord.LanguageId = model.LanguageId;

                _urlRecordService.UpdateUrlRecord(urlRecord);

                NotifySuccess(T("Admin.Common.DataEditSuccess"));

                return(continueEditing ? RedirectToAction("Edit", new { id = urlRecord.Id }) : RedirectToAction("List"));
            }

            PrepareUrlRecordModel(model, null);

            return(View(model));
        }
        public ActionResult Edit(int id)
        {
            if (!_services.Permissions.Authorize(StandardPermissionProvider.ManageUrlRecords))
                return AccessDeniedView();

            var urlRecord = _urlRecordService.GetUrlRecordById(id);
            if (urlRecord == null)
                return RedirectToAction("List");

            var model = new UrlRecordModel();
            PrepareUrlRecordModel(model, urlRecord);

            return View(model);
        }
        private void PrepareUrlRecordModel(UrlRecordModel model, UrlRecord urlRecord, bool forList = false)
        {
            if (!forList)
            {
                var allLanguages = _languageService.GetAllLanguages(true);

                model.AvailableLanguages = allLanguages
                    .Select(x => new SelectListItem { Text = x.Name, Value = x.Id.ToString() })
                    .ToList();

                model.AvailableLanguages.Insert(0, new SelectListItem { Text = T("Admin.System.SeNames.Language.Standard"), Value = "0" });
            }

            if (urlRecord != null)
            {
                model.Id = urlRecord.Id;
                model.Slug = urlRecord.Slug;
                model.EntityName = urlRecord.EntityName;
                model.EntityId = urlRecord.EntityId;
                model.IsActive = urlRecord.IsActive;
                model.LanguageId = urlRecord.LanguageId;

                if (urlRecord.EntityName.IsCaseInsensitiveEqual("BlogPost"))
                {
                    model.EntityUrl = Url.Action("Edit", "Blog", new { id = urlRecord.EntityId });
                }
                else if (urlRecord.EntityName.IsCaseInsensitiveEqual("Forum"))
                {
                    model.EntityUrl = Url.Action("EditForum", "Forum", new { id = urlRecord.EntityId });
                }
                else if (urlRecord.EntityName.IsCaseInsensitiveEqual("ForumGroup"))
                {
                    model.EntityUrl = Url.Action("EditForumGroup", "Forum", new { id = urlRecord.EntityId });
                }
                else if (urlRecord.EntityName.IsCaseInsensitiveEqual("NewsItem"))
                {
                    model.EntityUrl = Url.Action("Edit", "News", new { id = urlRecord.EntityId });
                }
                else
                {
                    model.EntityUrl = Url.Action("Edit", urlRecord.EntityName, new { id = urlRecord.EntityId });
                }
            }
        }
        public ActionResult List(GridCommand command, UrlRecordListModel model)
        {
            var gridModel = new GridModel<UrlRecordModel>();

            if (_services.Permissions.Authorize(StandardPermissionProvider.ManageUrlRecords))
            {
                var allLanguages = _languageService.GetAllLanguages(true);
                var defaultLanguageName = T("Admin.System.SeNames.Language.Standard");

                var urlRecords = _urlRecordService.GetAllUrlRecords(command.Page - 1, command.PageSize,
                    model.SeName, model.EntityName, model.EntityId, model.LanguageId, model.IsActive);

                var slugsPerEntity = _urlRecordService.CountSlugsPerEntity(urlRecords.Select(x => x.Id).Distinct().ToArray());

                gridModel.Data = urlRecords.Select(x =>
                {
                    string languageName;

                    if (x.LanguageId == 0)
                    {
                        languageName = defaultLanguageName;
                    }
                    else
                    {
                        var language = allLanguages.FirstOrDefault(y => y.Id == x.LanguageId);
                        languageName = (language != null ? language.Name : "".NaIfEmpty());
                    }

                    var urlRecordModel = new UrlRecordModel();
                    PrepareUrlRecordModel(urlRecordModel, x, true);

                    urlRecordModel.Language = languageName;
                    urlRecordModel.SlugsPerEntity = (slugsPerEntity.ContainsKey(x.Id) ? slugsPerEntity[x.Id] : 0);

                    return urlRecordModel;
                });

                gridModel.Total = urlRecords.TotalCount;
            }
            else
            {
                gridModel.Data = Enumerable.Empty<UrlRecordModel>();

                NotifyAccessDenied();
            }

            return new JsonResult
            {
                Data = gridModel
            };
        }
        public ActionResult Edit(UrlRecordModel model, bool continueEditing)
        {
            if (!_services.Permissions.Authorize(StandardPermissionProvider.ManageUrlRecords))
                return AccessDeniedView();

            var urlRecord = _urlRecordService.GetUrlRecordById(model.Id);
            if (urlRecord == null)
                return RedirectToAction("List");

            if (!urlRecord.IsActive && model.IsActive)
            {
                var urlRecords = _urlRecordService.GetAllUrlRecords(0, int.MaxValue, null, model.EntityName, model.EntityId, model.LanguageId, true);
                if (urlRecords.Count > 0)
                {
                    ModelState.AddModelError("IsActive", T("Admin.System.SeNames.ActiveSlugAlreadyExist"));
                }
            }

            if (ModelState.IsValid)
            {
                urlRecord.Slug = model.Slug;
                urlRecord.EntityName = model.EntityName;
                urlRecord.IsActive = model.IsActive;
                urlRecord.LanguageId = model.LanguageId;

                _urlRecordService.UpdateUrlRecord(urlRecord);

                NotifySuccess(T("Admin.Common.DataEditSuccess"));

                return continueEditing ? RedirectToAction("Edit", new { id = urlRecord.Id }) : RedirectToAction("List");
            }

            PrepareUrlRecordModel(model, null);

            return View(model);
        }
Пример #6
0
        /// <summary>
        /// Prepare paged URL record list model
        /// </summary>
        /// <param name="searchModel">URL record search model</param>
        /// <returns>URL record list model</returns>
        public virtual UrlRecordListModel PrepareUrlRecordListModel(UrlRecordSearchModel searchModel)
        {
            if (searchModel == null)
            {
                throw new ArgumentNullException(nameof(searchModel));
            }

            //get URL records
            var urlRecords = _urlRecordService.GetAllUrlRecords(slug: searchModel.SeName,
                                                                pageIndex: searchModel.Page - 1, pageSize: searchModel.PageSize);

            //get URL helper
            var urlHelper = _urlHelperFactory.GetUrlHelper(_actionContextAccessor.ActionContext);

            //prepare list model
            var model = new UrlRecordListModel
            {
                Data = urlRecords.Select(urlRecord =>
                {
                    //fill in model values from the entity
                    var urlRecordModel = new UrlRecordModel
                    {
                        Id         = urlRecord.Id,
                        Name       = urlRecord.Slug,
                        EntityId   = urlRecord.EntityId,
                        EntityName = urlRecord.EntityName,
                        IsActive   = urlRecord.IsActive
                    };

                    //fill in additional values (not existing in the entity)
                    urlRecordModel.Language = urlRecord.LanguageId == 0
                        ? _localizationService.GetResource("Admin.System.SeNames.Language.Standard")
                        : _languageService.GetLanguageById(urlRecord.LanguageId)?.Name ?? "Unknown";

                    //details URL
                    var detailsUrl = string.Empty;
                    var entityName = urlRecord.EntityName?.ToLowerInvariant() ?? string.Empty;
                    switch (entityName)
                    {
                    case "blogpost":
                        detailsUrl = urlHelper.Action("Edit", "Blog", new { id = urlRecord.EntityId });
                        break;

                    case "category":
                        detailsUrl = urlHelper.Action("Edit", "Category", new { id = urlRecord.EntityId });
                        break;

                    case "manufacturer":
                        detailsUrl = urlHelper.Action("Edit", "Manufacturer", new { id = urlRecord.EntityId });
                        break;

                    case "product":
                        detailsUrl = urlHelper.Action("Edit", "Product", new { id = urlRecord.EntityId });
                        break;

                    case "newsitem":
                        detailsUrl = urlHelper.Action("Edit", "News", new { id = urlRecord.EntityId });
                        break;

                    case "topic":
                        detailsUrl = urlHelper.Action("Edit", "Topic", new { id = urlRecord.EntityId });
                        break;

                    case "vendor":
                        detailsUrl = urlHelper.Action("Edit", "Vendor", new { id = urlRecord.EntityId });
                        break;
                    }

                    urlRecordModel.DetailsUrl = detailsUrl;

                    return(urlRecordModel);
                }),
                Total = urlRecords.TotalCount
            };

            return(model);
        }