Retiring ContentItemViewModel

...and all that entails
- things like IZone and IZoneCollection are barely roughed in

--HG--
branch : theming
This commit is contained in:
Nathan Heskew
2010-09-03 16:04:42 -07:00
parent 0d91cf30ac
commit 043bcf54ee
76 changed files with 419 additions and 357 deletions

View File

@@ -7,10 +7,10 @@ using Orchard.Core.Localization.Models;
using Orchard.Core.Localization.Services;
using Orchard.Core.Localization.ViewModels;
using Orchard.Core.Routable.Models;
using Orchard.DisplayManagement;
using Orchard.Localization;
using Orchard.Localization.Services;
using Orchard.Mvc.Results;
using Orchard.Mvc.ViewModels;
using Orchard.UI.Notify;
namespace Orchard.Core.Localization.Controllers {
@@ -20,14 +20,21 @@ namespace Orchard.Core.Localization.Controllers {
private readonly ICultureManager _cultureManager;
private readonly ILocalizationService _localizationService;
public AdminController(IOrchardServices orchardServices, IContentManager contentManager, ICultureManager cultureManager, ILocalizationService localizationService) {
public AdminController(
IOrchardServices orchardServices,
IContentManager contentManager,
ICultureManager cultureManager,
ILocalizationService localizationService,
IShapeHelperFactory shapeHelperFactory) {
_contentManager = contentManager;
_cultureManager = cultureManager;
_localizationService = localizationService;
T = NullLocalizer.Instance;
Services = orchardServices;
Shape = shapeHelperFactory.CreateHelper();
}
dynamic Shape { get; set; }
public Localizer T { get; set; }
public IOrchardServices Services { get; set; }
@@ -60,12 +67,11 @@ namespace Orchard.Core.Localization.Controllers {
Id = id,
SelectedCulture = selectedCulture,
SiteCultures = siteCultures,
Content = _contentManager.BuildEditorShape(contentItem)
Content = _contentManager.BuildEditorModel(contentItem)
};
Services.TransactionManager.Cancel();
PrepareEditorViewModel(model.Content);
return View(model);
return View(Shape.Model(model));
}
[HttpPost, ActionName("Translate")]
@@ -75,11 +81,11 @@ namespace Orchard.Core.Localization.Controllers {
if (contentItem == null)
return new NotFoundResult();
var viewModel = new AddLocalizationViewModel();
TryUpdateModel(viewModel);
var model = new AddLocalizationViewModel();
TryUpdateModel(model);
ContentItem contentItemTranslation = null;
var existingTranslation = _localizationService.GetLocalizedContentItem(contentItem, viewModel.SelectedCulture);
var existingTranslation = _localizationService.GetLocalizedContentItem(contentItem, model.SelectedCulture);
if (existingTranslation != null) {
// edit existing
contentItemTranslation = _contentManager.Get(existingTranslation.ContentItem.Id, VersionOptions.DraftRequired);
@@ -89,8 +95,8 @@ namespace Orchard.Core.Localization.Controllers {
contentItemTranslation = _contentManager.New(contentItem.ContentType);
var localized = contentItemTranslation.As<LocalizationPart>();
localized.MasterContentItem = contentItem;
if (!string.IsNullOrWhiteSpace(viewModel.SelectedCulture))
localized.Culture = _cultureManager.GetCultureByName(viewModel.SelectedCulture);
if (!string.IsNullOrWhiteSpace(model.SelectedCulture))
localized.Culture = _cultureManager.GetCultureByName(model.SelectedCulture);
_contentManager.Create(contentItemTranslation, VersionOptions.Draft);
if (!contentItem.Has<IPublishingControlAspect>() && contentItem.VersionRecord != null && contentItem.VersionRecord.Published) {
@@ -98,32 +104,25 @@ namespace Orchard.Core.Localization.Controllers {
}
}
viewModel.Content = _contentManager.UpdateEditorShape(contentItemTranslation, this);
model.Content = _contentManager.UpdateEditorModel(contentItemTranslation, this);
if (!ModelState.IsValid) {
Services.TransactionManager.Cancel();
viewModel.SiteCultures = _cultureManager.ListCultures().Where(s => s != _localizationService.GetContentCulture(contentItem) && s != _cultureManager.GetSiteCulture());
model.SiteCultures = _cultureManager.ListCultures().Where(s => s != _localizationService.GetContentCulture(contentItem) && s != _cultureManager.GetSiteCulture());
contentItem.As<LocalizationPart>().Culture.Culture = null;
viewModel.Content = _contentManager.BuildEditorShape(contentItem);
PrepareEditorViewModel(viewModel.Content);
return View(viewModel);
model.Content = _contentManager.BuildEditorModel(contentItem);
return View(Shape.Model(model));
}
Services.Notifier.Information(T("Created content item translation."));
var metadata = _contentManager.GetItemMetadata(viewModel.Content.Item);
var metadata = _contentManager.GetItemMetadata(model.Content);
if (metadata.EditorRouteValues == null)
return null; //todo: (heskew) redirect to somewhere better than nowhere
return RedirectToRoute(metadata.EditorRouteValues);
}
private static void PrepareEditorViewModel(ContentItemViewModel itemViewModel) {
if (string.IsNullOrEmpty(itemViewModel.TemplateName)) {
itemViewModel.TemplateName = "Items/Contents.Item";
}
}
bool IUpdateModel.TryUpdateModel<TModel>(TModel model, string prefix, string[] includeProperties, string[] excludeProperties) {
return TryUpdateModel(model, prefix, includeProperties, excludeProperties);
}