mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-09-24 05:23:33 +08:00
#16872: Setting contentitem container. Fixing publish now.
--HG-- branch : dev
This commit is contained in:
@@ -3,6 +3,8 @@ using System.Linq;
|
||||
using System.Web.Mvc;
|
||||
using Orchard.ContentManagement;
|
||||
using Orchard.ContentManagement.Aspects;
|
||||
using Orchard.Core.Contents.Controllers;
|
||||
using Orchard.Core.Contents.Settings;
|
||||
using Orchard.Core.Routable.Models;
|
||||
using Orchard.DisplayManagement;
|
||||
using Orchard.Localization.Models;
|
||||
@@ -46,14 +48,14 @@ namespace Orchard.Localization.Controllers {
|
||||
var metadata = _contentManager.GetItemMetadata(contentItem);
|
||||
return RedirectToAction(Convert.ToString(metadata.EditorRouteValues["action"]), metadata.EditorRouteValues);
|
||||
}
|
||||
|
||||
|
||||
var siteCultures = _cultureManager.ListCultures().Where(s => s != _localizationService.GetContentCulture(contentItem) && s != _cultureManager.GetSiteCulture());
|
||||
var selectedCulture = siteCultures.SingleOrDefault(s => string.Equals(s, to, StringComparison.OrdinalIgnoreCase))
|
||||
?? _cultureManager.GetCurrentCulture(HttpContext); // could be null but the person doing the translating might be translating into their current culture
|
||||
|
||||
//todo: need a better solution for modifying some parts when translating - or go with a completely different experience
|
||||
if (contentItem.Has<RoutePart>()) {
|
||||
var routePart = contentItem.As<RoutePart>();
|
||||
RoutePart routePart = contentItem.As<RoutePart>();
|
||||
routePart.Slug = string.Format("{0}{2}{1}", routePart.Slug, siteCultures.Any(s => string.Equals(s, selectedCulture, StringComparison.OrdinalIgnoreCase)) ? selectedCulture : "", !string.IsNullOrWhiteSpace(routePart.Slug) ? "-" : "");
|
||||
routePart.Path = null;
|
||||
}
|
||||
@@ -66,13 +68,29 @@ namespace Orchard.Localization.Controllers {
|
||||
SiteCultures = siteCultures,
|
||||
Content = _contentManager.BuildEditor(contentItem)
|
||||
};
|
||||
|
||||
// Cancel transaction so that the routepart is not modified.
|
||||
Services.TransactionManager.Cancel();
|
||||
|
||||
return View(model);
|
||||
}
|
||||
|
||||
[HttpPost, ActionName("Translate")]
|
||||
[FormValueRequired("submit.Save")]
|
||||
public ActionResult TranslatePOST(int id) {
|
||||
return TranslatePOST(id, contentItem => {
|
||||
if (!contentItem.Has<IPublishingControlAspect>() && !contentItem.TypeDefinition.Settings.GetModel<ContentTypeSettings>().Draftable)
|
||||
Services.ContentManager.Publish(contentItem);
|
||||
});
|
||||
}
|
||||
|
||||
[HttpPost, ActionName("Translate")]
|
||||
[FormValueRequired("submit.Publish")]
|
||||
public ActionResult TranslateAndPublishPOST(int id) {
|
||||
return TranslatePOST(id, contentItem => Services.ContentManager.Publish(contentItem));
|
||||
}
|
||||
|
||||
public ActionResult TranslatePOST(int id, Action<ContentItem> conditionallyPublish) {
|
||||
var contentItem = _contentManager.Get(id, VersionOptions.Latest);
|
||||
|
||||
if (contentItem == null)
|
||||
@@ -86,19 +104,18 @@ namespace Orchard.Localization.Controllers {
|
||||
if (existingTranslation != null) {
|
||||
// edit existing
|
||||
contentItemTranslation = _contentManager.Get(existingTranslation.ContentItem.Id, VersionOptions.DraftRequired);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
// create
|
||||
contentItemTranslation = _contentManager.New(contentItem.ContentType);
|
||||
contentItemTranslation.As<ICommonPart>().Container = contentItem.As<ICommonPart>().Container;
|
||||
|
||||
var localized = contentItemTranslation.As<LocalizationPart>();
|
||||
localized.MasterContentItem = contentItem;
|
||||
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) {
|
||||
_contentManager.Publish(contentItemTranslation);
|
||||
}
|
||||
conditionallyPublish(contentItemTranslation);
|
||||
}
|
||||
|
||||
model.Content = _contentManager.UpdateEditor(contentItemTranslation, this);
|
||||
|
Reference in New Issue
Block a user