private void saveCodeActivity_Save_ExecuteCode(object sender, EventArgs e) { IPageTypeMetaDataTypeLink pageTypeMetaDataTypeLink = this.GetDataItemFromEntityToken <IPageTypeMetaDataTypeLink>(); string metaDataDescriptionLabel = this.GetBinding <string>("CompositionDescriptionLabel"); Guid containerId = this.GetBinding <Guid>("CompositionContainerId"); PageMetaDataFacade.UpdateDefinition(pageTypeMetaDataTypeLink.PageTypeId, pageTypeMetaDataTypeLink.Name, metaDataDescriptionLabel, containerId); SetSaveStatus(true); this.RefreshCurrentEntityToken(); }
private void finalizeCodeActivity_Finalize_ExecuteCode(object sender, EventArgs e) { using (TransactionScope transactionScope = TransactionsFacade.CreateNewScope()) { List <Guid> oldPageIds = GetOldAffectedPageIds(); List <Guid> newPageIds = GetNewAffectedPageIds(); Pair <string, Type> metaDataPair = this.GetBinding <Pair <string, Type> >("SelectedMetaDataDefinition"); Guid newMetaDataContainerId = this.GetBinding <Guid>("SelectedMetaDataContainer"); string newLabel = this.GetBinding <string>("Label"); int startLevel = this.GetBinding <int>("SelectedStartDisplay"); int levels = this.GetBinding <int>("SelectedInheritDisplay"); PageMetaDataFacade.UpdateDefinition(GetCurrentPageId(), metaDataPair.First, newLabel, startLevel, levels, newMetaDataContainerId); IEnumerable <Guid> oldPageIdsToRemove = oldPageIds.Except(newPageIds); foreach (Guid id in oldPageIdsToRemove) { IPage page = Composite.Data.PageManager.GetPageById(id); bool otherDefinitionExists = page.GetAllowedMetaDataDefinitions().Where(f => f.Name == metaDataPair.First).Any(); if (otherDefinitionExists) { continue; } using (new DataScope(DataScopeIdentifier.Public)) { IData dataToDelete = page.GetMetaData(metaDataPair.First, metaDataPair.Second); if (dataToDelete != null) { DataFacade.Delete(dataToDelete); } } using (new DataScope(DataScopeIdentifier.Administrated)) { IData dataToDelete = page.GetMetaData(metaDataPair.First, metaDataPair.Second); if (dataToDelete != null) { DataFacade.Delete(dataToDelete); } } } IData newDataTemplate = null; if (this.BindingExist("NewDataTemplate")) { newDataTemplate = this.GetBinding <IData>("NewDataTemplate"); DataTypeDescriptor dataTypeDescriptor = DynamicTypeManager.GetDataTypeDescriptor(metaDataPair.Second.GetImmutableTypeId()); DataTypeDescriptorFormsHelper helper = new DataTypeDescriptorFormsHelper(dataTypeDescriptor); helper.BindingsToObject(this.Bindings, newDataTemplate); } IEnumerable <Guid> newPageIdsToAdd = newPageIds.Except(oldPageIds); foreach (Guid id in newPageIdsToAdd) { IPage page = Composite.Data.PageManager.GetPageById(id); page.AddNewMetaDataToExistingPage(metaDataPair.First, metaDataPair.Second, newDataTemplate); } transactionScope.Complete(); } }