Inheritance: TextFieldSetting
Exemple #1
0
        public void ContentList_AddField()
        {
            string listDef = @"<?xml version='1.0' encoding='utf-8'?>
<ContentListDefinition xmlns='http://schemas.sensenet.com/SenseNet/ContentRepository/ContentListDefinition'>
	<DisplayName>Cars title</DisplayName>
	<Description>Cars description</Description>
	<Icon>automobile.gif</Icon>
	<Fields>
		<ContentListField name='#ListField1' type='ShortText'>
			<DisplayName>ContentListField1</DisplayName>
			<Description>ContentListField1 Description</Description>
			<Icon>icon.gif</Icon>
			<Configuration>
				<MaxLength>100</MaxLength>
			</Configuration>
		</ContentListField>
		<ContentListField name='#ListField2' type='WhoAndWhen'>
			<DisplayName>ContentListField2</DisplayName>
			<Description>ContentListField2 Description</Description>
			<Icon>icon.gif</Icon>
			<Configuration>
			</Configuration>
		</ContentListField>
		<ContentListField name='#ListField3' type='ShortText'>
			<DisplayName>ContentListField3</DisplayName>
			<Description>ContentListField3 Description</Description>
			<Icon>icon.gif</Icon>
			<Configuration>
				<MaxLength>200</MaxLength>
			</Configuration>
		</ContentListField>
	</Fields>
</ContentListDefinition>
";
            string path = RepositoryPath.Combine(this.TestRoot.Path, "Cars");
            if (Node.Exists(path))
                Node.ForceDelete(path);

            var list = new ContentList(this.TestRoot)
                           {
                               Name = "Cars",
                               ContentListDefinition = listDef,
                               AllowedChildTypes = new ContentType[] { ContentType.GetByName("Car") }
                           };

            list.Save();

            Node car = new GenericContent(list, "Car");
            car.Name = "Kispolszki";
            car["#String_0"] = "ABC 34-78";
            car.Save();

            list = Node.Load<ContentList>(list.Path);
            var fs = new ShortTextFieldSetting
                         {
                             Name = "#NewField",
                             ShortName = "ShortText",
                             MaxLength = 100,
                             MinLength = 10,
                             DisplayName = "New field title"
                         };

            list.AddField(fs);

            var cc = Content.Load(car.Path);

            Assert.IsTrue(cc.Fields.ContainsKey(fs.Name));
        }
        private Dictionary<string, string> CreateNonExistentListFields(string contentTypeName, Node parent, Dictionary<string, string> fieldData)
        {
            var nonExistentListFields = new Dictionary<string, string>();

            if (parent is ContentList)
            {
                var cList = parent as ContentList;
                ContentType cType = ContentType.GetByName(contentTypeName);
                foreach (KeyValuePair<string, string> fData in fieldData)
                {
                    if (!IsFieldOnCTD(cType.FieldSettings, fData.Key))
                    {
                        var fSetting = new ShortTextFieldSetting
                        {
                            Name = string.Format("#{0}", fData.Key),
                            ShortName = "ShortText",
                            DisplayName = fData.Key
                        };
                        if (!IsFieldOnList(cList.FieldSettingContents, fData.Key))
                            cList.AddField(fSetting);
                        nonExistentListFields.Add(fData.Key, fData.Value);
                    }
                }
                cList.Save(SavingMode.KeepVersion);
            }
            return nonExistentListFields;
        }