mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-25 10:59:18 +08:00
committed by
Sébastien Ros
parent
2c5021f8d1
commit
a9261d879d
@@ -1,21 +1,24 @@
|
|||||||
using Orchard.ContentManagement;
|
using System.Linq;
|
||||||
|
using System.Web.Routing;
|
||||||
|
using Orchard.ContentManagement;
|
||||||
|
using Orchard.ContentManagement.Handlers;
|
||||||
using Orchard.ContentManagement.MetaData;
|
using Orchard.ContentManagement.MetaData;
|
||||||
using Orchard.Core.Title.Models;
|
using Orchard.Core.Title.Models;
|
||||||
using Orchard.Taxonomies.Fields;
|
|
||||||
using Orchard.Taxonomies.Services;
|
|
||||||
using Orchard.Taxonomies.Models;
|
|
||||||
using Orchard.ContentManagement.Handlers;
|
|
||||||
using Orchard.Data;
|
using Orchard.Data;
|
||||||
|
using Orchard.Localization.Models;
|
||||||
|
using Orchard.Localization.Services;
|
||||||
|
using Orchard.Taxonomies.Fields;
|
||||||
|
using Orchard.Taxonomies.Models;
|
||||||
|
using Orchard.Taxonomies.Services;
|
||||||
using Orchard.Taxonomies.Settings;
|
using Orchard.Taxonomies.Settings;
|
||||||
using System;
|
|
||||||
using System.Web.Routing;
|
|
||||||
|
|
||||||
namespace Orchard.Taxonomies.Handlers {
|
namespace Orchard.Taxonomies.Handlers {
|
||||||
public class TaxonomyPartHandler : ContentHandler {
|
public class TaxonomyPartHandler : ContentHandler {
|
||||||
public TaxonomyPartHandler(
|
public TaxonomyPartHandler(
|
||||||
IRepository<TaxonomyPartRecord> repository,
|
IRepository<TaxonomyPartRecord> repository,
|
||||||
ITaxonomyService taxonomyService,
|
ITaxonomyService taxonomyService,
|
||||||
IContentDefinitionManager contentDefinitionManager) {
|
IContentDefinitionManager contentDefinitionManager,
|
||||||
|
ILocalizationService localizationService = null) { //Localization feature may not be active
|
||||||
|
|
||||||
string previousName = null;
|
string previousName = null;
|
||||||
|
|
||||||
@@ -33,6 +36,21 @@ namespace Orchard.Taxonomies.Handlers {
|
|||||||
if (field.FieldDefinition.Name == typeof(TaxonomyField).Name) {
|
if (field.FieldDefinition.Name == typeof(TaxonomyField).Name) {
|
||||||
|
|
||||||
if (field.Settings.GetModel<TaxonomyFieldSettings>().Taxonomy == previousName) {
|
if (field.Settings.GetModel<TaxonomyFieldSettings>().Taxonomy == previousName) {
|
||||||
|
//could either be a name change, or we could be publishing a translation
|
||||||
|
if (localizationService != null) { //Localization feature may not be active
|
||||||
|
var locPart = part.ContentItem.As<LocalizationPart>();
|
||||||
|
if (locPart != null) {
|
||||||
|
var localizedTaxonomies = localizationService
|
||||||
|
.GetLocalizations(part.ContentItem) //versions in all cultures
|
||||||
|
.Where(pa => pa.ContentItem.Id != part.ContentItem.Id) //but not the one we are publishing
|
||||||
|
.Select(pa => {
|
||||||
|
var tax = pa.ContentItem.As<TaxonomyPart>(); //the TaxonomyPart
|
||||||
|
return tax == null ? string.Empty : tax.Name; //get its name (with sanity check)
|
||||||
|
});
|
||||||
|
if (localizedTaxonomies.Contains(previousName))
|
||||||
|
continue; //this is a new localization, so move along
|
||||||
|
}
|
||||||
|
}
|
||||||
contentDefinitionManager.AlterPartDefinition(partDefinition.Name,
|
contentDefinitionManager.AlterPartDefinition(partDefinition.Name,
|
||||||
cfg => cfg.WithField(field.Name,
|
cfg => cfg.WithField(field.Name,
|
||||||
builder => builder.WithSetting("TaxonomyFieldSettings.Taxonomy", part.Name)));
|
builder => builder.WithSetting("TaxonomyFieldSettings.Taxonomy", part.Name)));
|
||||||
|
|||||||
@@ -229,6 +229,10 @@
|
|||||||
<Project>{66fccd76-2761-47e3-8d11-b45d0001ddaa}</Project>
|
<Project>{66fccd76-2761-47e3-8d11-b45d0001ddaa}</Project>
|
||||||
<Name>Orchard.Autoroute</Name>
|
<Name>Orchard.Autoroute</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\Orchard.Localization\Orchard.Localization.csproj">
|
||||||
|
<Project>{FBC8B571-ED50-49D8-8D9D-64AB7454A0D6}</Project>
|
||||||
|
<Name>Orchard.Localization</Name>
|
||||||
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\Orchard.Tokens\Orchard.Tokens.csproj">
|
<ProjectReference Include="..\Orchard.Tokens\Orchard.Tokens.csproj">
|
||||||
<Project>{6f759635-13d7-4e94-bcc9-80445d63f117}</Project>
|
<Project>{6f759635-13d7-4e94-bcc9-80445d63f117}</Project>
|
||||||
<Name>Orchard.Tokens</Name>
|
<Name>Orchard.Tokens</Name>
|
||||||
|
|||||||
Reference in New Issue
Block a user