예제 #1
0
        public static void AddLocale(string providerName, IEnumerable <Type> interfaceTypes, CultureInfo cultureInfo)
        {
            XmlDataProviderConfiguration xmlDataProviderConfiguration = new XmlDataProviderConfiguration(providerName);

            foreach (Type type in interfaceTypes)
            {
                if (!DataLocalizationFacade.IsLocalized(type))
                {
                    continue;
                }

                var dataTypeDescriptor = DynamicTypeManager.GetDataTypeDescriptor(type);

                object key = xmlDataProviderConfiguration.Section.Interfaces.GetKey(dataTypeDescriptor);

                var oldConfigurationElement = xmlDataProviderConfiguration.Section.Interfaces.Get(key);
                var newConfigurationElement = BuildXmlProviderInterfaceConfigurationElement(dataTypeDescriptor, cultureInfo, null, oldConfigurationElement);

                xmlDataProviderConfiguration.Section.Interfaces.Remove(key);
                xmlDataProviderConfiguration.Section.Interfaces.Add(newConfigurationElement);

                foreach (Dictionary <string, DataScopeConfigurationElement> filesByCulture in newConfigurationElement.DataScopes.Values)
                {
                    XmlDataProviderStoreManipulator.CreateStore(providerName, filesByCulture[cultureInfo.Name]);
                }
            }

            xmlDataProviderConfiguration.Save();
        }
        public static IQueryable OrderData(IQueryable source, Type interfaceType)
        {
            var typeDescriptor = DynamicTypeManager.GetDataTypeDescriptor(interfaceType);

            List <DataFieldDescriptor> orderFields = typeDescriptor.Fields.Where(f => f.TreeOrderingProfile.OrderPriority.HasValue).OrderBy(f => f.TreeOrderingProfile.OrderPriority).ToList();

            if (orderFields.Any())
            {
                IOrderedQueryable ordered = source.OrderBy(interfaceType, orderFields.First().Name, orderFields.First().TreeOrderingProfile.OrderDescending);

                foreach (DataFieldDescriptor field in orderFields.Skip(1))
                {
                    ordered = ordered.ThenBy(interfaceType, field.Name, field.TreeOrderingProfile.OrderDescending);
                }

                return(ordered);
            }

            if (!string.IsNullOrEmpty(typeDescriptor.LabelFieldName))
            {
                return(source.OrderBy(interfaceType, typeDescriptor.LabelFieldName));
            }

            return(source);
        }
        /// <exclude />
        public static IData GetMetaData(this IPage page, string definitionName, Guid metaDataTypeId)
        {
            DataTypeDescriptor dataTypeDescriptor = DynamicTypeManager.GetDataTypeDescriptor(metaDataTypeId);
            Type metaDataType = TypeManager.GetType(dataTypeDescriptor.TypeManagerTypeName);

            return(GetMetaData(page, definitionName, metaDataType));
        }
        private void enterDefaultValuesCodeActivity_Initialize_ExecuteCode(object sender, EventArgs e)
        {
            Type type = this.GetBinding <Type>(SelectedTypeBindingName);
            DataTypeDescriptor dataTypeDescriptor = DynamicTypeManager.GetDataTypeDescriptor(type.GetImmutableTypeId());

            DataTypeDescriptorFormsHelper helper = new DataTypeDescriptorFormsHelper(dataTypeDescriptor);

            helper.LayoutIconHandle = "associated-data-add";

            GeneratedTypesHelper generatedTypesHelper = new GeneratedTypesHelper(dataTypeDescriptor);

            helper.AddReadOnlyFields(generatedTypesHelper.NotEditableDataFieldDescriptorNames);

            IData newData = DataFacade.BuildNew(type);

            helper.UpdateWithNewBindings(this.Bindings);
            helper.ObjectToBindings(newData, this.Bindings);

            this.DeliverFormData(
                type.Name,
                StandardUiContainerTypes.Wizard,
                helper.GetForm(),
                this.Bindings,
                helper.GetBindingsValidationRules(newData)
                );
        }
        private static XhtmlDocument BuildDefaultDocument(IVisualFunction newFunction)
        {
            XElement htmlTable = new XElement(Namespaces.Xhtml + "table");

            Type interfaceType = TypeManager.GetType(newFunction.TypeManagerName);
            DataTypeDescriptor typeDescriptor = DynamicTypeManager.GetDataTypeDescriptor(interfaceType);

            foreach (DataFieldDescriptor dataField in typeDescriptor.Fields.OrderBy(f => f.Position))
            {
                if (!typeDescriptor.KeyPropertyNames.Contains(dataField.Name) &&
                    dataField.FormRenderingProfile != null &&
                    !string.IsNullOrEmpty(dataField.FormRenderingProfile.Label))
                {
                    string fieldMarkup = string.Format("<data:fieldreference fieldname=\"{0}\" typemanagername=\"{1}\" xmlns:data=\"{2}\" />", dataField.Name, newFunction.TypeManagerName, Namespaces.DynamicData10);

                    htmlTable.Add(new XElement(Namespaces.Xhtml + "tr",
                                               new XElement(Namespaces.Xhtml + "td",
                                                            dataField.FormRenderingProfile.Label),
                                               new XElement(Namespaces.Xhtml + "td",
                                                            XElement.Parse(fieldMarkup))));
                }
            }
            XhtmlDocument defaultDocument = new XhtmlDocument();

            defaultDocument.Body.Add(htmlTable);
            return(defaultDocument);
        }
예제 #6
0
        internal static Type GetFileBuilderNewHandler(Type dataType)
        {
            Type result;

            if (!_fileBuildNewHandlerTypes.TryGetValue(dataType, out result))
            {
                lock (_lock)
                {
                    if (!_fileBuildNewHandlerTypes.TryGetValue(dataType, out result))
                    {
                        DataTypeDescriptor dataTypeDescriptor = DynamicTypeManager.GetDataTypeDescriptor(dataType);

                        string fullName = EmptyDataClassCodeGenerator.GetEmptyClassTypeFullName(dataTypeDescriptor);

                        result = TypeManager.TryGetType(fullName);

                        if (result == null)
                        {
                            CodeAttributeDeclaration codeAttributeDeclaration = new CodeAttributeDeclaration(
                                new CodeTypeReference(typeof(FileStreamManagerAttribute)),
                                new [] {
                                new CodeAttributeArgument(new CodeTypeOfExpression(typeof(IFileEmptyDataClassFileStreamManager)))
                            });

                            result = EmptyDataClassTypeManager.CreateEmptyDataClassType(dataTypeDescriptor, typeof(IFileEmptyDataClassBase), codeAttributeDeclaration);
                        }

                        _fileBuildNewHandlerTypes.Add(dataType, result);
                    }
                }
            }

            return(result);
        }
        protected override string GetJson(HttpContext context)
        {
            var list = DataFacade.GetAllInterfaces()
                       .Select(i =>
            {
                try
                {
                    return(DynamicTypeManager.GetDataTypeDescriptor(i));
                }
                catch
                {
                    return(null);
                }
            })
                       .Where(d => d != null)
                       .Select(d =>
                               new
            {
                d.Name,
                d.Namespace,
                TypeId     = d.DataTypeId,
                Properties = d.Fields.Select(f => new
                {
                    f.Name,
                    Type = f.InstanceType.FullName
                })
            })
                       .OrderBy(o => o.Name);

            var json = JsonConvert.SerializeObject(list);

            return(json);
        }
        private void initializeCodeActivity_ExecuteCode(object sender, EventArgs e)
        {
            DataEntityToken token    = (DataEntityToken)this.EntityToken;
            IVisualFunction function = (IVisualFunction)token.Data;

            this.Bindings.Add("OriginalFullName", string.Format("{0}.{1}", function.Namespace, function.Name));
            this.Bindings.Add("Function", function);
            this.Bindings.Add("XhtmlBody", function.XhtmlTemplate);

            Type interfaceType = TypeManager.GetType(function.TypeManagerName);
            DataTypeDescriptor typeDescriptor = DynamicTypeManager.GetDataTypeDescriptor(interfaceType);

            this.Bindings.Add("EmbedableFieldsTypes", new List <Type> {
                interfaceType
            });
            this.Bindings.Add("SourceTypeFullName", interfaceType.FullName);

            this.Bindings.Add("FieldNameList", FieldNames(typeDescriptor).ToList());

            Dictionary <Guid, string> templateInfos = new Dictionary <Guid, string>();

            foreach (PageTemplateDescriptor pageTemplate in PageTemplateFacade.GetPageTemplates())
            {
                if (pageTemplate.PlaceholderDescriptions.Any())
                {
                    templateInfos.Add(pageTemplate.Id, pageTemplate.Title);
                }
            }

            this.Bindings.Add("PreviewTemplateId", templateInfos.First().Key);
            this.Bindings.Add("TemplateList", templateInfos);
        }
        /// <summary>
        /// Returns (if any) folder types that are defined on the given page
        /// </summary>
        /// <param name="page"></param>
        /// <returns></returns>
        public static IEnumerable <Type> GetDefinedFolderTypes(this IPage page)
        {
            Verify.ArgumentNotNull(page, nameof(page));

            var folderDefinitions = DataFacade.GetData <IPageFolderDefinition>();

            IEnumerable <Guid> typeIds;

            if (folderDefinitions.IsEnumerableQuery())
            {
                typeIds = folderDefinitions
                          .Evaluate()
                          .Where(f => f.PageId == page.Id)
                          .Select(f => f.FolderTypeId);
            }
            else
            {
                typeIds = folderDefinitions
                          .Where(f => f.PageId == page.Id)
                          .Select(f => f.FolderTypeId)
                          .Evaluate();
            }

            foreach (Guid typeId in typeIds)
            {
                var dataTypeDescriptor = DynamicTypeManager.GetDataTypeDescriptor(typeId);
                Verify.IsNotNull(dataTypeDescriptor, "Missing a page data folder type with id '{0}', referenced by a IPageFolderDefinition record", typeId);

                yield return(TypeManager.GetType(dataTypeDescriptor.TypeManagerTypeName));
            }
        }
        private void collectDefaultValuesCodeActivity_ShowWizzard_ExecuteCode(object sender, EventArgs e)
        {
            Pair <string, Type> metaDataPair = this.GetBinding <Pair <string, Type> >("SelectedMetaDataDefinition");

            DataTypeDescriptor dataTypeDescriptor = DynamicTypeManager.GetDataTypeDescriptor(metaDataPair.Second);
            Type metaDataType = TypeManager.GetType(dataTypeDescriptor.TypeManagerTypeName);

            DataTypeDescriptorFormsHelper helper = new DataTypeDescriptorFormsHelper(dataTypeDescriptor);

            helper.LayoutLabel      = StringResourceSystemFacade.GetString("Composite.Plugins.PageTypeElementProvider", "PageType.AddPageTypeMetaDataFieldWorkflow.AddingDefaultMetaData.Title");
            helper.LayoutIconHandle = "pagetype-add-metedatafield";

            GeneratedTypesHelper generatedTypesHelper = new GeneratedTypesHelper(dataTypeDescriptor);

            helper.AddReadOnlyFields(generatedTypesHelper.NotEditableDataFieldDescriptorNames);

            IData newDataTemplate = DataFacade.BuildNew(metaDataType);

            helper.UpdateWithNewBindings(this.Bindings);
            helper.ObjectToBindings(newDataTemplate, this.Bindings);
            this.UpdateBinding("NewDataTemplate", newDataTemplate);

            this.DeliverFormData(
                metaDataType.GetTypeTitle(),
                StandardUiContainerTypes.Wizard,
                helper.GetForm(),
                this.Bindings,
                helper.GetBindingsValidationRules(newDataTemplate)
                );
        }
예제 #11
0
        /// <exclude />
        public override IEnumerable <PackageFragmentValidationResult> Validate()
        {
            _validationResult = new List <PackageFragmentValidationResult>();

            if (this.Configuration.Count(f => f.Name == "Types") > 1)
            {
                _validationResult.AddFatal(GetText("DynamicDataTypePackageFragmentUninstaller.OnlyOneElement"));
                return(_validationResult);
            }

            XElement typesElement = this.Configuration.SingleOrDefault(f => f.Name == "Types");

            _dataTypeDescriptorsToDelete = new List <DataTypeDescriptor>();

            if (typesElement != null)
            {
                foreach (XElement typeElement in typesElement.Elements("Type").Reverse())
                {
                    XAttribute typeIdAttribute = typeElement.Attribute("typeId");
                    if (typeIdAttribute == null)
                    {
                        _validationResult.AddFatal(GetText("DynamicDataTypePackageFragmentUninstaller.MissingAttribute").FormatWith("typeId"), typeElement);
                        continue;
                    }

                    Guid typeId;
                    if (!typeIdAttribute.TryGetGuidValue(out typeId))
                    {
                        _validationResult.AddFatal(GetText("DynamicDataTypePackageFragmentUninstaller.WrongAttributeFormat"), typeIdAttribute);
                        continue;
                    }

                    var dataTypeDescriptor = DynamicTypeManager.GetDataTypeDescriptor(typeId);
                    if (dataTypeDescriptor == null)
                    {
                        continue;
                    }

                    _dataTypeDescriptorsToDelete.Add(dataTypeDescriptor);

                    Type interfaceType       = dataTypeDescriptor.GetInterfaceType();
                    var  foreignRefereeTypes = DataReferenceFacade.GetRefereeTypes(interfaceType).Where(f => !_dataTypeDescriptorsToDelete.Any(g => g.GetInterfaceType() == f));
                    foreach (Type foreignRefereeType in foreignRefereeTypes)
                    {
                        // TODO: localize
                        _validationResult.AddFatal(string.Format("Data type '{0}' has references to type '{1}' about to be uninstalled. References must be removed before the package can be uninstalled.", foreignRefereeType, dataTypeDescriptor.TypeManagerTypeName),
                                                   typeIdAttribute);
                    }

                    UninstallerContext.AddPendingForDeletionDataType(interfaceType);
                }
            }

            if (_validationResult.Count > 0)
            {
                _dataTypeDescriptorsToDelete = null;
            }

            return(_validationResult);
        }
예제 #12
0
        /// <exclude />
        public void SetForeignKeyReference(Type targetDataType, DataAssociationType dataAssociationType)
        {
            if (dataAssociationType == DataAssociationType.None) throw new ArgumentException("dataAssociationType");

            DataTypeDescriptor targetDataTypeDescriptor = DynamicTypeManager.GetDataTypeDescriptor(targetDataType);

            SetForeignKeyReference(targetDataTypeDescriptor, dataAssociationType);
        }
        /// <summary>
        /// Return all allowed metadata types on the given page
        /// </summary>
        /// <param name="page"></param>
        /// <returns></returns>
        public static IEnumerable <Type> GetAllowedMetaDataTypes(this IPage page)
        {
            foreach (Guid metaDataTypeId in GetAllowedMetaDataDefinitions(page).Select(f => f.MetaDataTypeId).Distinct())
            {
                DataTypeDescriptor dataTypeDescriptor = DynamicTypeManager.GetDataTypeDescriptor(metaDataTypeId);

                yield return(TypeManager.GetType(dataTypeDescriptor.TypeManagerTypeName));
            }
        }
        /// <exclude />
        public GeneratedTypesHelper(Type oldType)
        {
            Verify.ArgumentNotNull(oldType, "oldType");

            _oldType = oldType;
            _oldDataTypeDescriptor = DynamicTypeManager.GetDataTypeDescriptor(oldType);

            Initialize();
        }
예제 #15
0
        private void CanSkipStep2(object sender, ConditionalEventArgs e)
        {
            IPage newPage            = this.GetBinding <IPage>("NewPage");
            var   dataTypeDescriptor = DynamicTypeManager.GetDataTypeDescriptor(typeof(IPage));

            e.Result = this.GetBinding <string>("SelectedSortOrder") != "Relative" &&
                       UrlTitleIsUniqueAmongSiblings() &&
                       newPage.UrlTitle.Length <= dataTypeDescriptor.Fields["UrlTitle"].StoreType.MaximumLength &&
                       newPage.MenuTitle.Length <= dataTypeDescriptor.Fields["MenuTitle"].StoreType.MaximumLength;
        }
예제 #16
0
        public List <Element> GetChildren(T data, EntityToken parentEntityToken)
        {
            var children = new List <Element>();

            PropertyInfo idPropertyInfo = typeof(T).GetKeyProperties()[0];

            foreach (Type type in PageFolderFacade.GetDefinedFolderTypes((IPage)data).OrderBy(t => t.Name))
            {
                var entityToken = new AssociatedDataElementProviderHelperEntityToken(
                    TypeManager.SerializeType(typeof(T)),
                    _elementProviderContext.ProviderName,
                    ValueTypeConverter.Convert <string>(idPropertyInfo.GetValue(data, null)),
                    TypeManager.SerializeType(type)
                    );

                DataTypeDescriptor dataTypeDescriptor = DynamicTypeManager.GetDataTypeDescriptor(type);

                var element = new Element(_elementProviderContext.CreateElementHandle(entityToken))
                {
                    VisualData = new ElementVisualizedData
                    {
                        Label       = dataTypeDescriptor.Title ?? type.Name,
                        ToolTip     = dataTypeDescriptor.Title ?? type.Name,
                        Icon        = this.InterfaceClosedIcon,
                        OpenedIcon  = this.InterfaceOpenIcon,
                        HasChildren = true // This is sat to always true to boost performance.
                    }
                };


                element.AddAction(new ElementAction(new ActionHandle(new WorkflowActionToken(WorkflowFacade.GetWorkflowType("Composite.C1Console.Elements.ElementProviderHelpers.AssociatedDataElementProviderHelper.DeleteDataFolderWorkflow"), RemoveAssociatedTypePermissionTypes)))
                {
                    VisualData = new ActionVisualizedData
                    {
                        Label          = StringResourceSystemFacade.GetString("Composite.Management", "AssociatedDataElementProviderHelper.RemoveAssociatedTypeLabel"),
                        ToolTip        = StringResourceSystemFacade.GetString("Composite.Management", "AssociatedDataElementProviderHelper.RemoveAssociatedTypeToolTip"),
                        Icon           = this.RemoveDataAssociationTypeIcon,
                        Disabled       = false,
                        ActionLocation = new ActionLocation
                        {
                            ActionType  = ActionType.Delete,
                            IsInFolder  = false,
                            IsInToolbar = false,
                            ActionGroup = AppendedActionGroup
                        }
                    }
                });

                AddAddAssociatedDataAction(element, true);

                children.Add(element);
            }

            return(children);
        }
        /// <summary>
        /// Using the given pageType this methods adds meta data instances that are missing
        /// </summary>
        /// <param name="definingPageType"></param>
        /// <param name="metaDataDefinitionName"></param>
        /// <param name="newDataTemplate"></param>
        public static void AddNewMetaDataToExistingPages(this IPageType definingPageType, string metaDataDefinitionName, IData newDataTemplate)
        {
            IPageMetaDataDefinition pageMetaDataDefinition = GetMetaDataDefinition(definingPageType.Id, metaDataDefinitionName);

            DataTypeDescriptor dataTypeDescriptor = DynamicTypeManager.GetDataTypeDescriptor(pageMetaDataDefinition.MetaDataTypeId);
            Type metaDataType = TypeManager.GetType(dataTypeDescriptor.TypeManagerTypeName);

            IEnumerable <IPage> affectedPages = PageMetaDataFacade.GetMetaDataAffectedPagesByPageTypeId(definingPageType.Id);

            AddNewMetaDataToExistingPages(affectedPages, metaDataDefinitionName, metaDataType, newDataTemplate);
        }
예제 #18
0
            public static IEnumerable <string> OrderByFieldNames(string typeManagerName)
            {
                yield return("(random)");

                Type interfaceType = TypeManager.GetType(typeManagerName);

                foreach (DataFieldDescriptor dataField in DynamicTypeManager.GetDataTypeDescriptor(interfaceType).Fields.OrderBy(f => f.Position))
                {
                    yield return(dataField.Name);
                }
            }
예제 #19
0
        public DataTypeHelper(Guid targetId, Guid?pageId)
        {
            DataSourceId dataSourceId;

            TargetDataSourceFacade.TryDeserialize(targetId, pageId, out dataSourceId);

            if (dataSourceId != null)
            {
                _dataSourceId       = dataSourceId;
                _dataTypeDescriptor = DynamicTypeManager.GetDataTypeDescriptor(dataSourceId.InterfaceType);
            }
        }
예제 #20
0
        public IEnumerable <ReferenceFailingPropertyInfo> GetReferencingLocalizeFailingProperties(ILocalizedControlled data)
        {
            DataTypeDescriptor dataTypeDescriptor = DynamicTypeManager.GetDataTypeDescriptor(data.DataSourceId.InterfaceType);

            IEnumerable <DataFieldDescriptor> requiredDataFieldDescriptors = dataTypeDescriptor.Fields.Where(f => f.ForeignKeyReferenceTypeName != null);

            foreach (DataFieldDescriptor dataFieldDescriptor in requiredDataFieldDescriptors)
            {
                Type referencedType = TypeManager.GetType(dataFieldDescriptor.ForeignKeyReferenceTypeName);
                if (!DataLocalizationFacade.IsLocalized(referencedType))
                {
                    continue;                                                      // No special handling for not localized data.
                }
                IData referencedData = data.GetReferenced(dataFieldDescriptor.Name);
                if (referencedData != null)
                {
                    continue;                         // Data has already been localized
                }
                bool optionalReferenceWithValue = false;
                if (dataFieldDescriptor.IsNullable)
                {
                    PropertyInfo propertyInfo = data.DataSourceId.InterfaceType.GetPropertiesRecursively().Single(f => f.Name == dataFieldDescriptor.Name);
                    object       value        = propertyInfo.GetValue(data, null);

                    if (value == null || object.Equals(value, dataFieldDescriptor.DefaultValue))
                    {
                        continue; // Optional reference is null;
                    }

                    optionalReferenceWithValue = true;
                }

                CultureInfo locale = data.DataSourceId.LocaleScope;

                using (new DataScope(locale))
                {
                    referencedData = data.GetReferenced(dataFieldDescriptor.Name);
                }

                ReferenceFailingPropertyInfo referenceFailingPropertyInfo = new ReferenceFailingPropertyInfo
                                                                            (
                    dataFieldDescriptor,
                    referencedType,
                    referencedData,
                    optionalReferenceWithValue
                                                                            );

                yield return(referenceFailingPropertyInfo);
            }
        }
예제 #21
0
        private void ValidateUrlTitle(object sender, ConditionalEventArgs e)
        {
            IPage newPage = this.GetBinding <IPage>("NewPage");

            if (this.CurrentStateName == "step1State")
            {
                SetDefaultValues(newPage);
            }

            e.Result = true;

            if (!UrlTitleIsUniqueAmongSiblings())
            {
                string fieldName = "NewPage.UrlTitle";

                if (this.CurrentStateName == "step1State")
                {
                    fieldName = "NewPage.Title";
                }

                this.ShowFieldMessage(fieldName, GetText("UrlTitleNotUniqueError"));
                e.Result = false;
            }
            else
            {
                ValidationResults validationResults = ValidationFacade.Validate <IPage>(newPage);

                if (!validationResults.IsValid && validationResults.Any(f => f.Key == "UrlTitle"))
                {
                    this.ShowFieldMessage("NewPage.Title", "${Composite.Plugins.PageElementProvider, UrlTitleNotValidError}");
                    e.Result = false;
                }
            }

            DataTypeDescriptor dataTypeDescriptor = DynamicTypeManager.GetDataTypeDescriptor(typeof(IPage));

            if (newPage.UrlTitle.Length > dataTypeDescriptor.Fields["UrlTitle"].StoreType.MaximumLength)
            {
                this.ShowFieldMessage("NewPage.UrlTitle", GetText("UrlTitleTooLong"));
                e.Result = false;
                return;
            }

            if (newPage.MenuTitle.Length > dataTypeDescriptor.Fields["MenuTitle"].StoreType.MaximumLength)
            {
                this.ShowFieldMessage("NewPage.MenuTitle", GetText("AddNewPageStep1.MenuTitleTooLong"));
                e.Result = false;
                return;
            }
        }
예제 #22
0
        protected override string GetJson(HttpContext context)
        {
            var typeId = context.Request.Form["typeId"];

            using (new DataScope(PublicationScope.Published))
            {
                var type = DynamicTypeManager.GetDataTypeDescriptor(Guid.Parse(typeId)).GetInterfaceType();
                var list = DataFacade.GetData(type).ToListOfObjects();

                var json = JsonConvert.SerializeObject(list);

                return(json);
            }
        }
예제 #23
0
        private void ValidateFirstPage(object sender, ConditionalEventArgs e)
        {
            IPage newPage = this.GetBinding <IPage>("NewPage");

            var dataTypeDescriptor = DynamicTypeManager.GetDataTypeDescriptor(typeof(IPage));

            if (newPage.Title.Length > dataTypeDescriptor.Fields["Title"].StoreType.MaximumLength)
            {
                this.ShowFieldMessage("NewPage.Title", GetText("AddNewPageStep1.TitleTooLong"));
                e.Result = false;
                return;
            }

            e.Result = true;
        }
        /// <summary>
        /// Using the given page this methods adds meta data instances that are missing
        /// </summary>
        /// <param name="definingPage">If null, empty guid is used</param>
        /// <param name="metaDataDefinitionName"></param>
        /// <param name="newDataTemplate"></param>
        public static void AddNewMetaDataToExistingPages(this IPage definingPage, string metaDataDefinitionName, IData newDataTemplate)
        {
            Guid pageId = definingPage.GetPageIdOrNull();

            IPageMetaDataDefinition pageMetaDataDefinition = GetMetaDataDefinition(pageId, metaDataDefinitionName);

            DataTypeDescriptor dataTypeDescriptor = DynamicTypeManager.GetDataTypeDescriptor(pageMetaDataDefinition.MetaDataTypeId);
            Type metaDataType = TypeManager.GetType(dataTypeDescriptor.TypeManagerTypeName);

            IEnumerable <IPage> affectedPages = definingPage.GetMetaDataAffectedPages(metaDataDefinitionName);

            foreach (IPage affectedPage in affectedPages)
            {
                AddNewMetaDataToExistingPage(affectedPage, metaDataDefinitionName, metaDataType, newDataTemplate);
            }
        }
        private void editPreviewCodeActivity_ExecuteCode(object sender, EventArgs e)
        {
            try
            {
                XhtmlDocument templateDocument = GetTemplateDocumentFromBindings();

                IVisualFunction function      = this.GetBinding <IVisualFunction>("Function");
                Type            interfaceType = TypeManager.GetType(function.TypeManagerName);

                DataTypeDescriptor typeDescriptor = DynamicTypeManager.GetDataTypeDescriptor(interfaceType);

                this.LogMessage(Composite.Core.Logging.LogLevel.Info, DataScopeManager.CurrentDataScope.Name);

                FunctionContextContainer fcc = PageRenderer.GetPageRenderFunctionContextContainer();

                XhtmlDocument result = RenderingHelper.RenderCompleteDataList(function, templateDocument, typeDescriptor, fcc);

                IPage previewPage = DataFacade.BuildNew <IPage>();
                previewPage.Id    = GetRootPageId();
                previewPage.Title = function.Name;
                previewPage.DataSourceId.DataScopeIdentifier = DataScopeIdentifier.Administrated;
                previewPage.DataSourceId.LocaleScope         = LocalizationScopeManager.CurrentLocalizationScope;

                previewPage.TemplateId = this.GetBinding <Guid>("PreviewTemplateId");

                var pageTemplate = PageTemplateFacade.GetPageTemplate(previewPage.TemplateId);
                IPagePlaceholderContent placeHolderContent = DataFacade.BuildNew <IPagePlaceholderContent>();
                placeHolderContent.Content       = string.Concat((result.Body.Elements().Select(b => b.ToString())).ToArray());
                placeHolderContent.PlaceHolderId = pageTemplate.DefaultPlaceholderId;

                string output = PagePreviewBuilder.RenderPreview(previewPage, new List <IPagePlaceholderContent> {
                    placeHolderContent
                });

                var serviceContainer = WorkflowFacade.GetFlowControllerServicesContainer(WorkflowEnvironment.WorkflowInstanceId);

                var webRenderService = serviceContainer.GetService <IFormFlowWebRenderingService>();
                webRenderService.SetNewPageOutput(new LiteralControl(output));
            }
            catch (Exception ex)
            {
                FlowControllerServicesContainer serviceContainer = WorkflowFacade.GetFlowControllerServicesContainer(WorkflowEnvironment.WorkflowInstanceId);
                Control errOutput        = new LiteralControl("<pre>" + ex + "</pre>");
                var     webRenderService = serviceContainer.GetService <IFormFlowWebRenderingService>();
                webRenderService.SetNewPageOutput(errOutput);
            }
        }
예제 #26
0
        private static TypeInfo GetTypeInfo(string typeManagerName)
        {
            TypeInfo cachedValue = _typeLookup.Get(typeManagerName);

            if (cachedValue != null)
            {
                return(cachedValue);
            }

            Type type = TypeManager.GetType(typeManagerName);
            DataTypeDescriptor typeDescriptor = DynamicTypeManager.GetDataTypeDescriptor(type);

            var result = new TypeInfo(type, typeDescriptor);

            _typeLookup.Add(typeManagerName, result);
            return(result);
        }
        private void DefaultValuesAreValid(object sender, ConditionalEventArgs e)
        {
            IData newDataTemplate;

            if (!this.TryGetBinding("NewDataTemplate", out newDataTemplate))
            {
                e.Result = true;
                return;
            }
            
            IPageTypeMetaDataTypeLink pageTypeMetaDataTypeLink = this.GetBinding<IPageTypeMetaDataTypeLink>("NewMetaDataTypeLink");

            var dataTypeDescriptor = DynamicTypeManager.GetDataTypeDescriptor(pageTypeMetaDataTypeLink.DataTypeId);
            var helper = new DataTypeDescriptorFormsHelper(dataTypeDescriptor);

            e.Result = BindAndValidate(helper, newDataTemplate);
        }
        /// <summary>
        /// Returns all meta data types that are defined on the given page.
        /// </summary>
        /// <param name="page">If this is null, Guid.Empty is assumed as defining item id</param>
        /// <returns></returns>
        public static IEnumerable <Type> GetDefinedMetaDataTypes(this IPage page)
        {
            Guid pageId = page.GetPageIdOrNull();

            IEnumerable <Guid> metaDataTypeIds =
                DataFacade.GetData <IPageMetaDataDefinition>().
                Where(f => f.DefiningItemId == pageId).
                Select(f => f.MetaDataTypeId).
                Distinct();

            foreach (Guid metaDataTypeId in metaDataTypeIds)
            {
                DataTypeDescriptor dataTypeDescriptor = DynamicTypeManager.GetDataTypeDescriptor(metaDataTypeId);

                yield return(TypeManager.GetType(dataTypeDescriptor.TypeManagerTypeName));
            }
        }
        /// <exclude />
        public static IEnumerable <Tuple <Type, string> > GetDefinedMetaDataTypeAndNames(this IPage page)
        {
            Guid pageId = page.GetPageIdOrNull();

            IEnumerable <Tuple <Guid, string> > metaDataTypeIdAndNames =
                DataFacade.GetData <IPageMetaDataDefinition>().
                Where(f => f.DefiningItemId == pageId).
                Select(f => new Tuple <Guid, string>(f.MetaDataTypeId, f.Name)).
                Distinct();

            foreach (Tuple <Guid, string> metaDataTypeIdAndName in metaDataTypeIdAndNames)
            {
                DataTypeDescriptor dataTypeDescriptor = DynamicTypeManager.GetDataTypeDescriptor(metaDataTypeIdAndName.Item1);

                yield return(new Tuple <Type, string>(TypeManager.GetType(dataTypeDescriptor.TypeManagerTypeName), metaDataTypeIdAndName.Item2));
            }
        }
        private void initializeCodeActivity_UpdateBindings_ExecuteCode(object sender, EventArgs e)
        {
            IPageTypeMetaDataTypeLink pageTypeMetaDataTypeLink = this.GetDataItemFromEntityToken <IPageTypeMetaDataTypeLink>();

            IPageMetaDataDefinition pageMetaDataDefinition = PageMetaDataFacade.GetMetaDataDefinition(pageTypeMetaDataTypeLink.PageTypeId, pageTypeMetaDataTypeLink.Name);

            //this.UpdateBinding("CompositionDescriptionName", compositionDescription.Name);
            this.UpdateBinding("CompositionDescriptionLabel", pageMetaDataDefinition.Label);

            List <KeyValuePair <Guid, string> > metaDataContainerOptions = PageMetaDataFacade.GetAllMetaDataContainers();

            this.Bindings.Add("MetaDataContainerOptions", metaDataContainerOptions);
            this.Bindings.Add("CompositionContainerId", pageMetaDataDefinition.MetaDataContainerId);

            var dataTypeDescriptor = DynamicTypeManager.GetDataTypeDescriptor(pageTypeMetaDataTypeLink.DataTypeId);

            this.Bindings.Add("MetaTypeName", dataTypeDescriptor.TypeManagerTypeName);
        }