mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-12-02 11:44:41 +08:00
#18380: Fixing content type deletiong
Work Item: 18380 --HG-- branch : 1.x
This commit is contained in:
@@ -159,13 +159,7 @@ namespace Orchard.ContentTypes.Controllers {
|
||||
if (typeViewModel == null)
|
||||
return HttpNotFound();
|
||||
|
||||
_contentDefinitionManager.DeleteTypeDefinition(id);
|
||||
|
||||
// delete all content items (but keep versions)
|
||||
var contentItems = Services.ContentManager.Query(id).List();
|
||||
foreach (var contentItem in contentItems) {
|
||||
Services.ContentManager.Remove(contentItem);
|
||||
}
|
||||
_contentDefinitionService.RemoveType(id, true);
|
||||
|
||||
Services.Notifier.Information(T("\"{0}\" has been removed.", typeViewModel.DisplayName));
|
||||
|
||||
@@ -348,7 +342,8 @@ namespace Orchard.ContentTypes.Controllers {
|
||||
if (partViewModel == null)
|
||||
return HttpNotFound();
|
||||
|
||||
_contentDefinitionManager.DeletePartDefinition(id);
|
||||
_contentDefinitionService.RemovePart(id);
|
||||
|
||||
Services.Notifier.Information(T("\"{0}\" has been removed.", partViewModel.DisplayName));
|
||||
|
||||
return RedirectToAction("ListParts");
|
||||
|
||||
@@ -145,8 +145,30 @@ namespace Orchard.ContentTypes.Services {
|
||||
});
|
||||
}
|
||||
|
||||
public void RemoveType(string name) {
|
||||
throw new NotImplementedException();
|
||||
public void RemoveType(string name, bool deleteContent) {
|
||||
|
||||
// first remove all attached parts
|
||||
var typeDefinition = _contentDefinitionManager.GetTypeDefinition(name);
|
||||
var partDefinitions = typeDefinition.Parts.ToArray();
|
||||
foreach (var partDefinition in partDefinitions) {
|
||||
RemovePartFromType(partDefinition.PartDefinition.Name, name);
|
||||
|
||||
// delete the part if it's its own part
|
||||
if(partDefinition.PartDefinition.Name == name) {
|
||||
RemovePart(name);
|
||||
}
|
||||
}
|
||||
|
||||
_contentDefinitionManager.DeleteTypeDefinition(name);
|
||||
|
||||
// delete all content items (but keep versions)
|
||||
if (deleteContent) {
|
||||
var contentItems = Services.ContentManager.Query(name).List();
|
||||
foreach (var contentItem in contentItems) {
|
||||
Services.ContentManager.Remove(contentItem);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void AddPartToType(string partName, string typeName) {
|
||||
@@ -211,7 +233,13 @@ namespace Orchard.ContentTypes.Services {
|
||||
}
|
||||
|
||||
public void RemovePart(string name) {
|
||||
throw new NotImplementedException();
|
||||
var partDefinition = _contentDefinitionManager.GetPartDefinition(name);
|
||||
var fieldDefinitions = partDefinition.Fields.ToArray();
|
||||
foreach(var fieldDefinition in fieldDefinitions) {
|
||||
RemoveFieldFromPart(fieldDefinition.Name, name);
|
||||
}
|
||||
|
||||
_contentDefinitionManager.DeletePartDefinition(name);
|
||||
}
|
||||
|
||||
public IEnumerable<ContentFieldInfo> GetFields() {
|
||||
|
||||
@@ -10,7 +10,7 @@ namespace Orchard.ContentTypes.Services {
|
||||
EditTypeViewModel GetType(string name);
|
||||
ContentTypeDefinition AddType(string name, string displayName);
|
||||
void AlterType(EditTypeViewModel typeViewModel, IUpdateModel updater);
|
||||
void RemoveType(string name);
|
||||
void RemoveType(string name, bool deleteContent);
|
||||
void AddPartToType(string partName, string typeName);
|
||||
void RemovePartFromType(string partName, string typeName);
|
||||
string GenerateContentTypeNameFromDisplayName(string displayName);
|
||||
|
||||
Reference in New Issue
Block a user