internal CatchScope(ActivationObject parent, Context argContext, JSParser parser) : base(parent, argContext, parser) { // get the name of the catch variable m_name = Context.Code; // add it to the catch-scope's name table JSVariableField field = new JSArgumentField(m_name, null); NameTable[m_name] = field; FieldTable.Add(field); }
/// <summary> /// Gets the child I ds section. /// </summary> /// <param name="section">The section.</param> /// <param name="context">The context.</param> /// <param name="sqlProvider">The SQL provider.</param> /// <returns> /// IDList. /// </returns> private IDList GetChildIDsSection(SectionInfo section, CallContext context, DataProvider sqlProvider) { var cls = TypeConfigurations.First(x => x.Value.TemplateId == section.TemplateId).Value; var fields = cls.Properties.OfType <SitecoreFieldConfiguration>(); var fieldIds = new IDList(); foreach (var field in fields) { if (field.PropertyInfo.DeclaringType != cls.Type) { continue; } if (field.CodeFirst && field.SectionName == section.Name && !ID.IsNullOrEmpty(field.FieldId)) { var record = FieldTable.FirstOrDefault(x => x.FieldId == field.FieldId); //test if the fields exists in the database: if so, we're using codefirst now, so remove it. var existing = sqlProvider.GetItemDefinition(field.FieldId, context); if (existing != null) { using (new SecurityDisabler()) sqlProvider.DeleteItem(existing, context); } if (record == null) { string fieldName = field.FieldName.IsNullOrEmpty() ? field.PropertyInfo.Name : field.FieldName; record = new FieldInfo(field.FieldId, section.SectionId, fieldName, field.FieldType, field.CustomFieldType, field.FieldSource, field.FieldTitle, field.IsShared, field.IsUnversioned, field.FieldSortOrder, field.ValidationRegularExpression, field.ValidationErrorText, field.IsRequired); if (field.FieldValueConfigs != null && field.FieldValueConfigs.Any()) { foreach (var ffv in field.FieldValueConfigs) { record.FieldFieldValues.Add(ffv.FieldId, ffv.FieldValue); } } } fieldIds.Add(record.FieldId); FieldTable.Add(record); } } return(fieldIds); }
/// <summary> /// Gets the child I ds section. /// </summary> /// <param name="section">The section.</param> /// <param name="context">The context.</param> /// <param name="sqlProvider">The SQL provider.</param> /// <returns> /// IDList. /// </returns> private IDList GetChildIDsSection(SectionInfo section, CallContext context, DataProvider sqlProvider) { var config = TypeConfigurations.First(x => x.Value.TemplateId == section.TemplateId); var cls = config.Value; var fields = cls.Properties.OfType <SitecoreFieldConfiguration>(); IDList fieldIds = new IDList(); var interfaces = cls.Type.GetInterfaces(); foreach (var field in fields) { //fix: added check on interfaces, if field resides on interface then skip here var propertyFromInterface = interfaces.FirstOrDefault(inter => inter.GetProperty(field.PropertyInfo.Name) != null && inter.GetProperty(field.PropertyInfo.Name).GetCustomAttributes(typeof(SitecoreFieldAttribute), false).Any()); if (field.PropertyInfo.DeclaringType != cls.Type || propertyFromInterface != null) { continue; } if (field.CodeFirst && field.SectionName == section.Name && !ID.IsNullOrEmpty(field.FieldId)) { var record = FieldTable.FirstOrDefault(x => x.FieldId == field.FieldId); //test if the fields exists in the database: if so, we're using codefirst now, so remove it. var existing = sqlProvider.GetItemDefinition(field.FieldId, context); if (existing != null) { using (new SecurityDisabler()) { if (DisableItemHandlerWhenDeletingFields) { using (new DisableItemHandler()) sqlProvider.DeleteItem(existing, context); } else { sqlProvider.DeleteItem(existing, context); } } } if (record == null) { string fieldName = field.FieldName.IsNullOrEmpty() ? field.PropertyInfo.Name : field.FieldName; record = new FieldInfo(field.FieldId, section.SectionId, fieldName, field.FieldType, field.CustomFieldType, field.FieldSource, field.FieldTitle, field.IsShared, field.IsUnversioned, field.FieldSortOrder, field.ValidationRegularExpression, field.ValidationErrorText, field.IsRequired); if (field.FieldValueConfigs != null && field.FieldValueConfigs.Any()) { foreach (var ffv in field.FieldValueConfigs) { record.FieldFieldValues.Add(ffv.FieldId, ffv.FieldValue); } } } fieldIds.Add(record.FieldId); FieldTable.Add(record); } } return(fieldIds); }