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); }
/// <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); }