private void finalizeCodeActivity_Finalize_ExecuteCode(object sender, EventArgs e) { var dataEntityToken = (DataEntityToken)this.EntityToken; Type type = this.GetBinding <Type>(SelectedTypeBindingName); IPage page = (IPage)dataEntityToken.Data; Guid dataTypeId = type.GetImmutableTypeId(); lock (_lock) { if (page.GetFolderDefinitionId(dataTypeId) == Guid.Empty) { page.AddFolderDefinition(dataTypeId); } } SpecificTreeRefresher specificTreeRefresher = this.CreateSpecificTreeRefresher(); specificTreeRefresher.PostRefreshMesseges(this.EntityToken); var folderEntityToken = new AssociatedDataElementProviderHelperEntityToken( TypeManager.SerializeType(typeof(IPage)), PageElementProvider.DefaultConfigurationName, page.Id.ToString(), TypeManager.SerializeType(type)); SelectElement(folderEntityToken); }
internal static bool AddPageTypePageFoldersAndApplications(IPage page) { #warning Validate that having a page type with associated PageType PageFolders or Applications does not break on 2nd add for same page id Guid pageTypeId = page.PageTypeId; bool treeRefreshindNeeded = false; // Adding page folders IEnumerable <IPageTypeDataFolderTypeLink> pageTypeDataFolderTypeLinks = DataFacade.GetData <IPageTypeDataFolderTypeLink>(). Where(f => f.PageTypeId == pageTypeId). Evaluate(). RemoveDeadLinks(); foreach (IPageTypeDataFolderTypeLink pageTypeDataFolderTypeLink in pageTypeDataFolderTypeLinks) { page.AddFolderDefinition(pageTypeDataFolderTypeLink.DataTypeId); treeRefreshindNeeded = true; } // Adding applications IEnumerable <IPageTypeTreeLink> pageTypeTreeLinks = DataFacade.GetData <IPageTypeTreeLink>(). Where(f => f.PageTypeId == pageTypeId). Evaluate(). RemoveDeadLinks(); var entityToken = page.GetDataEntityToken(); foreach (IPageTypeTreeLink pageTypeTreeLink in pageTypeTreeLinks) { var tree = TreeFacade.GetTree(pageTypeTreeLink.TreeId); if (tree.HasAttachmentPoints(entityToken)) { continue; } TreeFacade.AddPersistedAttachmentPoint(pageTypeTreeLink.TreeId, typeof(IPage), page.Id); treeRefreshindNeeded = true; } return(treeRefreshindNeeded); }
public static void InsertForm(Control control, ParameterList parameters) { Page currentPageHandler = HttpContext.Current.Handler as Page; if (currentPageHandler == null) { throw new InvalidOperationException("The Current HttpContext Handler must be a System.Web.Ui.Page"); } Type dataType = null; DataTypeDescriptor dataTypeDescriptor = null; string dataTypeName = parameters.GetParameter <string>("DataType"); dataType = TypeManager.GetType(dataTypeName); dataTypeDescriptor = DynamicTypeManager.GetDataTypeDescriptor(dataType); IFormChannelIdentifier channelIdentifier = FormsRendererChannel.Identifier; formHelper = new DataTypeDescriptorFormsHelper(dataTypeDescriptor); newData = DataFacade.BuildNew(dataType); GeneratedTypesHelper.SetNewIdFieldValue(newData); //Hide not editable fields, fox example - PageId GeneratedTypesHelper generatedTypesHelper = new GeneratedTypesHelper(dataTypeDescriptor); formHelper.AddReadOnlyFields(generatedTypesHelper.NotEditableDataFieldDescriptorNames); //If is Page Datatype if (PageFolderFacade.GetAllFolderTypes().Contains(dataType)) { IPage currentPage = PageRenderer.CurrentPage; if (currentPage.GetDefinedFolderTypes().Contains(dataType) == false) { currentPage.AddFolderDefinition(dataType.GetImmutableTypeId()); } PageFolderFacade.AssignFolderDataSpecificValues(newData, currentPage); } _compiler = new FormTreeCompiler(); //bindings = formHelper.GetBindings(newData); bindings = new Dictionary <string, object>(); formHelper.UpdateWithNewBindings(bindings); formHelper.ObjectToBindings(newData, bindings); using (XmlReader reader = XDocument.Parse(formHelper.GetForm()).CreateReader()) { try { _compiler.Compile(reader, channelIdentifier, bindings, formHelper.GetBindingsValidationRules(newData)); #region ClientValidationRules clientValidationRules = new Dictionary <string, List <ClientValidationRule> >(); foreach (var item in _compiler.GetField <object>("_context").GetProperty <IEnumerable>("Rebindings")) { var SourceProducer = item.GetProperty <object>("SourceProducer"); var uiControl = SourceProducer as IWebUiControl; if (uiControl != null) { clientValidationRules[uiControl.UiControlID] = uiControl.ClientValidationRules; } } #endregion } catch (ConfigurationErrorsException e) { if (e.Message.Contains("Failed to load the configuration for IUiControlFactory")) { throw new ConfigurationErrorsException("Composite.Forms.Renderer does not support widget. " + e.Message); } else { throw new ConfigurationErrorsException(e.Message); } } } webUiControl = (IWebUiControl)_compiler.UiControl; Control form = webUiControl.BuildWebControl(); control.Controls.Add(form); /*if (currentPageHandler.IsPostBack) * try * { * compiler.SaveControlProperties(); * } * catch { }*/ if (!currentPageHandler.IsPostBack) { webUiControl.InitializeViewState(); } return; }
private void stepFinalize_codeActivity_ExecuteCode(object sender, EventArgs e) { AddNewTreeRefresher addNewTreeRefresher = this.CreateAddNewTreeRefresher(this.EntityToken); Guid parentId = GetParentId(); IPage newPage = this.GetBinding <IPage>("NewPage"); newPage.SourceCultureName = UserSettings.ActiveLocaleCultureInfo.Name; IPageType selectedPageType = DataFacade.GetData <IPageType>().Single(f => f.Id == newPage.PageTypeId); IQueryable <IPageTypePageTemplateRestriction> templateRestrictions = DataFacade.GetData <IPageTypePageTemplateRestriction>(). Where(f => f.PageTypeId == newPage.PageTypeId); if (selectedPageType.DefaultTemplateId != Guid.Empty) { newPage.TemplateId = selectedPageType.DefaultTemplateId; } else if (templateRestrictions.Any()) { newPage.TemplateId = templateRestrictions.First().PageTemplateId; } bool addToTop = this.GetBinding <string>("SelectedSortOrder") == "Top"; bool addToBottom = this.GetBinding <string>("SelectedSortOrder") == "Bottom"; bool addToAlphabetic = this.GetBinding <string>("SelectedSortOrder") == "Alphabetic"; bool addToRelative = this.GetBinding <string>("SelectedSortOrder") == "Relative"; using (new DataScope(DataScopeIdentifier.Administrated)) { if (addToTop) { newPage = newPage.AddPageAtTop(parentId); } else if (addToBottom) { newPage = newPage.AddPageAtBottom(parentId); } else if (addToAlphabetic) { newPage = newPage.AddPageAlphabetic(parentId); } else if (addToRelative) { Guid relativeSelectedPageId = this.GetBinding <Guid>("RelativeSelectedPageId"); newPage = newPage.AddPageAfter(parentId, relativeSelectedPageId); } } // Adding default page content IEnumerable <IPageTypeDefaultPageContent> pageTypeDefaultPageContents = DataFacade.GetData <IPageTypeDefaultPageContent>(). Where(f => f.PageTypeId == selectedPageType.Id). Evaluate(); foreach (IPageTypeDefaultPageContent pageTypeDefaultPageContent in pageTypeDefaultPageContents) { IPagePlaceholderContent pagePlaceholderContent = DataFacade.BuildNew <IPagePlaceholderContent>(); pagePlaceholderContent.PageId = newPage.Id; pagePlaceholderContent.PlaceHolderId = pageTypeDefaultPageContent.PlaceHolderId; pagePlaceholderContent.Content = pageTypeDefaultPageContent.Content; DataFacade.AddNew <IPagePlaceholderContent>(pagePlaceholderContent); } // Adding page folders IEnumerable <IPageTypeDataFolderTypeLink> pageTypeDataFolderTypeLinks = DataFacade.GetData <IPageTypeDataFolderTypeLink>(). Where(f => f.PageTypeId == selectedPageType.Id). Evaluate(). RemoveDeadLinks(); foreach (IPageTypeDataFolderTypeLink pageTypeDataFolderTypeLink in pageTypeDataFolderTypeLinks) { newPage.AddFolderDefinition(pageTypeDataFolderTypeLink.DataTypeId); } // Adding applications IEnumerable <IPageTypeTreeLink> pageTypeTreeLinks = DataFacade.GetData <IPageTypeTreeLink>(). Where(f => f.PageTypeId == selectedPageType.Id). Evaluate(). RemoveDeadLinks(); foreach (IPageTypeTreeLink pageTypeTreeLink in pageTypeTreeLinks) { Tree tree = TreeFacade.GetTree(pageTypeTreeLink.TreeId); if (tree.HasAttachmentPoints(newPage.GetDataEntityToken())) { continue; } TreeFacade.AddPersistedAttachmentPoint(pageTypeTreeLink.TreeId, typeof(IPage), newPage.Id); } SetSaveStatus(true); addNewTreeRefresher.PostRefreshMesseges(newPage.GetDataEntityToken()); this.ExecuteWorklow(newPage.GetDataEntityToken(), typeof(EditPageWorkflow)); }
internal void CopyPageData(IPage sourcePage, IPage newPage) { Guid sourcePageId = sourcePage.Id; Guid newPageId = newPage.Id; Guid sourceVersionId = sourcePage.VersionId; Guid newVersionId = newPage.VersionId; var newPlaceholders = new List <IPagePlaceholderContent>(); var placeholders = DataFacade.GetData <IPagePlaceholderContent>(false) .Where(ph => ph.PageId == sourcePageId && ph.VersionId == sourceVersionId) .ToList(); foreach (var placeholderContent in placeholders) { var newPlaceholder = DataFacade.BuildNew <IPagePlaceholderContent>(); newPlaceholder.PageId = newPageId; newPlaceholder.PlaceHolderId = placeholderContent.PlaceHolderId; newPlaceholder.Content = placeholderContent.Content; newPlaceholder.VersionId = newVersionId; newPlaceholders.Add(newPlaceholder); } DataFacade.AddNew <IPagePlaceholderContent>(newPlaceholders); var sourceMetaData = sourcePage.GetMetaData().Cast <IPageMetaData>() .Where(d => d.VersionId == sourceVersionId); foreach (var metaDataItem in sourceMetaData) { var metaDataType = metaDataItem.DataSourceId.InterfaceType; var typeDescriptor = DataMetaDataFacade.GetDataTypeDescriptor(metaDataType.GetImmutableTypeId()); var definition = PageMetaDataFacade.GetMetaDataDefinition(sourcePageId, metaDataItem.GetTypeTitle()); var newDataItem = (IPageMetaData)DataFacade.BuildNew(metaDataType); var properties = metaDataType.GetPropertiesRecursively().ToDictionary(p => p.Name); foreach (var field in typeDescriptor.Fields) { var propertyInfo = properties[field.Name]; propertyInfo.SetValue(newDataItem, propertyInfo.GetValue(metaDataItem)); } newDataItem.VersionId = newVersionId; newDataItem.Id = Guid.NewGuid(); newDataItem.PageId = newPageId; newDataItem.PublicationStatus = GenericPublishProcessController.Draft; newDataItem = (IPageMetaData)DataFacade.AddNew((IData)newDataItem); if (definition != null) { string title = newDataItem.GetTypeTitle(); newPage.AddMetaDataDefinition(title, title, newDataItem.GetImmutableTypeId(), definition.MetaDataContainerId); } } List <string> selectableTreeIds = TreeFacade.AllTrees.Where( tree => tree.HasAttachmentPoints(sourcePage.GetDataEntityToken())) .Where(tree => !tree.HasAttachmentPoints(newPage.GetDataEntityToken())) .Select(tree => tree.TreeId).ToList(); foreach (var selectableTreeId in selectableTreeIds) { TreeFacade.AddPersistedAttachmentPoint(selectableTreeId, newPage.DataSourceId.InterfaceType, newPage.DataSourceId.GetKeyValue()); } foreach (var dataFolderType in sourcePage.GetDefinedFolderTypes()) { newPage.AddFolderDefinition(dataFolderType); } }
internal static bool AddPageTypePageFoldersAndApplications(IPage page) { #warning Validate that having a page type with associated PageType PageFolders or Applications does not break on 2nd add for same page id Guid pageTypeId = page.PageTypeId; bool treeRefreshindNeeded = false; // Adding page folders IEnumerable<IPageTypeDataFolderTypeLink> pageTypeDataFolderTypeLinks = DataFacade.GetData<IPageTypeDataFolderTypeLink>(). Where(f => f.PageTypeId == pageTypeId). Evaluate(). RemoveDeadLinks(); foreach (IPageTypeDataFolderTypeLink pageTypeDataFolderTypeLink in pageTypeDataFolderTypeLinks) { page.AddFolderDefinition(pageTypeDataFolderTypeLink.DataTypeId); treeRefreshindNeeded = true; } // Adding applications IEnumerable<IPageTypeTreeLink> pageTypeTreeLinks = DataFacade.GetData<IPageTypeTreeLink>(). Where(f => f.PageTypeId == pageTypeId). Evaluate(). RemoveDeadLinks(); var entityToken = page.GetDataEntityToken(); foreach (IPageTypeTreeLink pageTypeTreeLink in pageTypeTreeLinks) { var tree = TreeFacade.GetTree(pageTypeTreeLink.TreeId); if (tree.HasAttachmentPoints(entityToken)) continue; TreeFacade.AddPersistedAttachmentPoint(pageTypeTreeLink.TreeId, typeof(IPage), page.Id); treeRefreshindNeeded = true; } return treeRefreshindNeeded; }