private void PrepareStoresMappingModel(NewsItemModel model, NewsItem newsItem, bool excludeProperties) { if (model == null) throw new ArgumentNullException("model"); model.AvailableStores = _storeService .GetAllStores() .Select(s => s.ToModel()) .ToList(); if (!excludeProperties) { if (newsItem != null) { model.SelectedStoreIds = _storeMappingService.GetStoresIdsWithAccess(newsItem); } else { model.SelectedStoreIds = new int[0]; } } }
public ActionResult Edit(NewsItemModel model, bool continueEditing) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageNews)) return AccessDeniedView(); var newsItem = _newsService.GetNewsById(model.Id); if (newsItem == null) //No news item found with the specified id return RedirectToAction("List"); if (ModelState.IsValid) { newsItem = model.ToEntity(newsItem); newsItem.StartDateUtc = model.StartDate; newsItem.EndDateUtc = model.EndDate; _newsService.UpdateNews(newsItem); //search engine name var seName = newsItem.ValidateSeName(model.SeName, model.Title, true); _urlRecordService.SaveSlug(newsItem, seName, newsItem.LanguageId); //Stores SaveStoreMappings(newsItem, model); SuccessNotification(_localizationService.GetResource("Admin.ContentManagement.News.NewsItems.Updated")); return continueEditing ? RedirectToAction("Edit", new { id = newsItem.Id }) : RedirectToAction("List"); } //If we got this far, something failed, redisplay form ViewBag.AllLanguages = _languageService.GetAllLanguages(true); //Store PrepareStoresMappingModel(model, newsItem, true); return View(model); }
protected void SaveStoreMappings(NewsItem newsItem, NewsItemModel model) { var existingStoreMappings = _storeMappingService.GetStoreMappings(newsItem); var allStores = _storeService.GetAllStores(); foreach (var store in allStores) { if (model.SelectedStoreIds != null && model.SelectedStoreIds.Contains(store.Id)) { //new role if (existingStoreMappings.Count(sm => sm.StoreId == store.Id) == 0) _storeMappingService.InsertStoreMapping(newsItem, store.Id); } else { //removed role var storeMappingToDelete = existingStoreMappings.FirstOrDefault(sm => sm.StoreId == store.Id); if (storeMappingToDelete != null) _storeMappingService.DeleteStoreMapping(storeMappingToDelete); } } }
public ActionResult Create() { if (!_permissionService.Authorize(StandardPermissionProvider.ManageNews)) return AccessDeniedView(); ViewBag.AllLanguages = _languageService.GetAllLanguages(true); var model = new NewsItemModel(); //Stores PrepareStoresMappingModel(model, null, false); //default values model.Published = true; model.AllowComments = true; return View(model); }