Exemple #1
0
        // Definition Field
        public static ID GetOrCreateSitecoreDynamicFieldFieldId(this DefinitionField @this, ID parentId)
        {
            var id = new ID(@this.Guid);

            DynamicFieldIds.Add(id);
            return(id);
        }
        /// <summary>
        /// HACK/TODO: This was quickly added after some third party testing discovered that the
        ///       'SitefinityId' DefinitionField is not getting added on the fly in the Taxonomy RTS
        ///       flow.  Refactor this out of here, either making a separate RTS operation/flow for
        ///       custom property definitions or figure out why UCommerce/nHibernate is not
        ///       creating new Definition Fields on the fly as part of cascade saves in the Taxonomy flow.
        /// </summary>
        private void WriteCustomSitefinityIdDefinitionField()
        {
            const string sitefinityUniqueIdPropertyName = "SitefinityId";
            var          definitionField = _session.Query <DefinitionField>().FirstOrDefault(x => x.Name == sitefinityUniqueIdPropertyName);

            if (definitionField != null)
            {
                return;
            }

            using (var tx = _session.BeginTransaction())
            {
                var defaultDefinition = _session.Query <Definition>()
                                        .FirstOrDefault(x => x.Name == "Default Category Definition");
                var dataType = _session.Query <DataType>().FirstOrDefault(x => x.TypeName == "ShortText");
                definitionField = new DefinitionField()
                {
                    Name          = sitefinityUniqueIdPropertyName,
                    Multilingual  = false,
                    Searchable    = false,
                    BuiltIn       = false,
                    DefaultValue  = string.Empty,
                    DisplayOnSite = false,
                    DataType      = dataType,
                    Definition    = defaultDefinition
                };
                _session.SaveOrUpdate(definitionField);
                tx.Commit();
            }

            _session.Flush();
        }
        private DefinitionField GetCategoryPropertyDefinitionField(string sourceDefinitionFieldName)
        {
            var definitionField = _session.Query <DefinitionField>().FirstOrDefault(x => x.Name == sourceDefinitionFieldName);

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

            var defaultDefinition = _session.Query <Definition>().FirstOrDefault(x => x.Name == "Default Category Definition");
            var dataType          = _session.Query <DataType>().FirstOrDefault(x => x.TypeName == "ShortText");

            definitionField = new DefinitionField()
            {
                Name          = sourceDefinitionFieldName,
                Multilingual  = true,
                Searchable    = false,
                BuiltIn       = false,
                DefaultValue  = string.Empty,
                DisplayOnSite = false,
                DataType      = dataType,
                Definition    = defaultDefinition
            };

            return(definitionField);
        }
Exemple #4
0
        private static IProperty GetDynamicProperty(FieldChange fieldChange, Category category)
        {
            IProperty property;
            var       definition =
                DefinitionField.SingleOrDefault(
                    x => x.Name == fieldChange.Definition.Name && x.Definition.DefinitionType.DefinitionTypeId == 1);

            property = definition.Multilingual
                                ? category.GetProperty(fieldChange.Definition.Name, fieldChange.Language.CultureInfo.ToString())
                                : category.GetProperty(fieldChange.Definition.Name);
            return(property);
        }
        private IExtractedEntity CreateGenericHandle(IGenericContext gc, Handle handle)
        {
            IExtractedEntity entity;

            switch (handle.Kind)
            {
            case HandleKind.MethodDefinition:
                entity = new DefinitionMethod(gc, (MethodDefinitionHandle)handle);
                break;

            case HandleKind.MemberReference:
                entity = Create(gc, (MemberReferenceHandle)handle);
                break;

            case HandleKind.MethodSpecification:
                entity = new MethodSpecificationMethod(gc, (MethodSpecificationHandle)handle);
                break;

            case HandleKind.FieldDefinition:
                entity = new DefinitionField(gc.Context, (FieldDefinitionHandle)handle);
                break;

            case HandleKind.TypeReference:
                var tr = new TypeReferenceType(this, (TypeReferenceHandle)handle);
                if (tr.TryGetPrimitiveType(out var pt))
                {
                    // Map special names like `System.Int32` to `int`
                    return(pt);
                }
                entity = tr;
                break;

            case HandleKind.TypeSpecification:
                return(Entities.Type.DecodeType(gc, (TypeSpecificationHandle)handle));

            case HandleKind.TypeDefinition:
                entity = new TypeDefinitionType(this, (TypeDefinitionHandle)handle);
                break;

            case HandleKind.StandaloneSignature:
                var signature = MdReader.GetStandaloneSignature((StandaloneSignatureHandle)handle);
                var method    = signature.DecodeMethodSignature(gc.Context.TypeSignatureDecoder, gc);
                entity = new FunctionPointerType(this, method);
                break;

            default:
                throw new InternalError("Unhandled handle kind " + handle.Kind);
            }

            Populate(entity);
            return(entity);
        }
Exemple #6
0
        IExtractedEntity CreateGenericHandle(GenericContext gc, Handle handle)
        {
            IExtractedEntity entity;

            switch (handle.Kind)
            {
            case HandleKind.MethodDefinition:
                entity = new DefinitionMethod(gc, (MethodDefinitionHandle)handle);
                break;

            case HandleKind.MemberReference:
                entity = Create(gc, (MemberReferenceHandle)handle);
                break;

            case HandleKind.MethodSpecification:
                entity = new MethodSpecificationMethod(gc, (MethodSpecificationHandle)handle);
                break;

            case HandleKind.FieldDefinition:
                entity = new DefinitionField(gc, (FieldDefinitionHandle)handle);
                break;

            case HandleKind.TypeReference:
                var tr = new TypeReferenceType(this, (TypeReferenceHandle)handle);
                if (tr.TryGetPrimitiveType(out var pt))
                {
                    // Map special names like `System.Int32` to `int`
                    return(pt);
                }
                entity = tr;
                break;

            case HandleKind.TypeSpecification:
                return(Entities.Type.DecodeType(gc, (TypeSpecificationHandle)handle));

            case HandleKind.TypeDefinition:
                entity = new TypeDefinitionType(this, (TypeDefinitionHandle)handle);
                break;

            default:
                throw new InternalError("Unhandled handle kind " + handle.Kind);
            }

            Populate(entity);
            return(entity);
        }
        public void RemoveDefinitionFields(Definition category, params string[] names)
        {
            foreach (var name in names)
            {
                try
                {
                    DefinitionField toBeRemoved = _definitionFields.Value.SingleOrDefault(x => x.Name == name && x.Definition == category && !x.Deleted);

                    if (toBeRemoved != null)
                    {
                        category.DefinitionFields.Remove(toBeRemoved);
                    }
                }
                catch (Exception ex)
                {
                    string message = string.Format("'{0}' category definition field doesn't exist.", name);
                    throw new InvalidOperationException(message, ex);
                }
            }
        }
        public DefinitionField AddDefinitionField(string name, Definition category, DataType type, bool multilingual = false)
        {
            DefinitionField field = _definitionFields.Value
                                    .SingleOrDefault(x => x.Name == name);

            if (field == null)
            {
                field = new DefinitionField();
            }
            field.Definition     = category;
            field.DataType       = type;
            field.Name           = name;
            field.DisplayOnSite  = true;
            field.Multilingual   = multilingual;
            field.RenderInEditor = true;
            field.Deleted        = false;

            category.DefinitionFields.Add(field);

            return(field);
        }
        private static void AddMultilingualDescriptions(PropertyInfo propertyInfo, DefinitionField field)
        {
            foreach (var language in propertyInfo.GetCustomAttributes<LanguageAttribute>())
            {
                var fieldDescription = field.DefinitionFieldDescriptions
                    .EmptyIfNull()
                    .SingleOrDefault(x => x.CultureCode == language.Language);

                if (fieldDescription == null)
                {
                    fieldDescription = new DefinitionFieldDescription
                    {
                        CultureCode = language.Language
                    };
                    field.AddDescription(fieldDescription);
                }

                fieldDescription.DisplayName = language.DisplayName;
                fieldDescription.Description = language.Description ?? string.Empty;
            }
        }
 internal static Tuple cil_internal(DefinitionField field) =>
 new Tuple("cil_internal", field);
        private DefinitionField CreateField(PropertyInfo propertyInfo, Definition definition)
        {
            var propertyAttribute = propertyInfo.AssertGetAttribute<FieldAttribute>();
            var fieldName = propertyAttribute.Name.IsNotEmpty()
                ? propertyAttribute.Name
                : propertyInfo.Name;

            var field = definition.DefinitionFields
                .EmptyIfNull()
                .SingleOrDefault(x => x.Name == fieldName);

            if (field == null)
            {
                var dataType = _session.QueryOver<DataType>()
                    .Where(x => x.TypeName == propertyAttribute.DataType)
                    .SingleOrDefault();

                field = new DefinitionField
                {
                    Name = fieldName,
                    DataType = dataType
                };

                if (definition.DefinitionFields == null)
                    definition.DefinitionFields = new Collection<DefinitionField>();
                definition.AddDefinitionField(field);
            }

            field.DisplayOnSite = propertyAttribute.DisplayOnSite;
            field.Multilingual = propertyAttribute.Multilingual;
            field.RenderInEditor = propertyAttribute.RenderInEditor;
            field.Searchable = propertyAttribute.Searchable;
            field.SortOrder = propertyAttribute.SortOrder;
            field.DefaultValue = propertyAttribute.DefaultValue;

            return field;
        }