Exemplo n.º 1
0
        // <RemoveContentDefinition>
        //  <Types>
        //   <Blog creatable = "true" >
        //    <Body format="abodyformat"/>
        //   </Blog>
        //  </Types>
        //  <Parts>
        //  </Parts>
        // </RemoveContentDefinition>
        public override void Execute(RecipeExecutionContext context)
        {
            foreach (var metadataElement in context.RecipeStep.Step.Elements())
            {
                Logger.Debug("Processing element '{0}'.", metadataElement.Name.LocalName);
                switch (metadataElement.Name.LocalName)
                {
                case "Types":
                    foreach (var element in metadataElement.Elements())
                    {
                        var typeName = XmlConvert.DecodeName(element.Name.LocalName);

                        Logger.Information("Removing content type '{0}'.", typeName);
                        try {
                            _contentDefinitionManager.DeleteTypeDefinition(typeName);
                            _contentDefinitonEventHandlers.ContentTypeRemoved(new ContentTypeRemovedContext {
                                ContentTypeDefinition = _contentDefinitionManager.GetTypeDefinition(typeName)
                            });
                        }
                        catch (Exception ex) {
                            Logger.Error(ex, "Error while removing content type '{0}'.", typeName);
                            throw;
                        }
                    }
                    break;

                case "Parts":
                    foreach (var element in metadataElement.Elements())
                    {
                        var partElement = element;
                        var partName    = XmlConvert.DecodeName(element.Name.LocalName);

                        Logger.Information("Removing content part definition '{0}'.", partName);
                        try {
                            _contentDefinitionManager.DeletePartDefinition(partName);
                            _contentDefinitonEventHandlers.ContentPartRemoved(new ContentPartRemovedContext {
                                ContentPartDefinition = _contentDefinitionManager.GetPartDefinition(partName)
                            });
                        }
                        catch (Exception ex) {
                            Logger.Error(ex, "Error while removing content part definition for '{0}'.", partName);
                            throw;
                        }
                    }
                    break;

                default:
                    Logger.Warning("Unrecognized element '{0}' encountered; skipping", metadataElement.Name.LocalName);
                    break;
                }
            }
        }
        public void RemovePart(string name)
        {
            var partDefinition   = _contentDefinitionManager.GetPartDefinition(name);
            var fieldDefinitions = partDefinition.Fields.ToArray();

            foreach (var fieldDefinition in fieldDefinitions)
            {
                RemoveFieldFromPart(fieldDefinition.Name, name);
            }

            _contentDefinitionManager.DeletePartDefinition(name);
            _contentDefinitionEventHandlers.ContentPartRemoved(new ContentPartRemovedContext {
                ContentPartDefinition = partDefinition
            });
        }