protected override bool IsFieldExcluded(SPField field) { if (!HttpContext.Current.Request[SPConstants.AdminModeUrlParameter].IsNullOrEmpty() && field.ParentList.DoesUserHavePermissions(SPBasePermissions.ManageWeb)) { _controlsToRenderCount++; return false; } var isExcluded = base.IsFieldExcluded(field); // This properties are null by default. If they won't be set in content type, field won't be shown in corresponding form if ((base.ControlMode == SPControlMode.Display && !field.ShowInDisplayForm.HasValue) || (base.ControlMode == SPControlMode.Edit && !field.ShowInEditForm.HasValue) || (base.ControlMode == SPControlMode.New && !field.ShowInNewForm.HasValue)) return true; if (field.ReadOnlyField) { // Because it's not posible to override IsFieldExcluded (becouse of many internal fields) I'm checking if field is excluded becouse of Readonly property. field.ReadOnlyField = false; isExcluded = base.IsFieldExcluded(field) && isExcluded; field.ReadOnlyField = true; } // ContentType selection if (field.Type == SPFieldType.Computed && field.InternalName == SPConstants.ContentType) { var changeContentType = new FPSChangeContentType(); changeContentType.DisplayName = field.Title; var filterItems = field.GetCustomizationValues<string>(CustomPropertyType.Filter) ?? new List<string>(); var allowedContentTypes = new Dictionary<string, string>(); foreach (var item in filterItems) { var nameValuePair = item.Split('_'); if (!allowedContentTypes.ContainsKey(nameValuePair[0])) allowedContentTypes.Add(nameValuePair[0], nameValuePair.Length > 1 ? nameValuePair[1] : null); } changeContentType.AllowedContentTypes = allowedContentTypes; if (!ContentTypeTemplateName.IsNullOrEmpty()) changeContentType.TemplateName = ContentTypeTemplateName; Controls.Add(changeContentType); } if (!isExcluded) _controlsToRenderCount++; return isExcluded; }