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); }
public void DefaultValue_Scripted_ShortText() { ContentType carType = ContentType.GetByName("Car"); string defaultValue = "The answer to life the universe and everything plus one = [Script:jScript]WhatIsTheAnswerToLifeTheUniverseAndEverything() + 1;[/Script]."; string evaluatedValue = "The answer to life the universe and everything plus one = 43."; string userInput = "-- UserInput --"; string fieldName = null; string fieldValue = null; //==== search a testable ShortText field foreach (var fieldSetting in carType.FieldSettings) { ShortTextFieldSetting shortTextSetting = fieldSetting as ShortTextFieldSetting; if (shortTextSetting == null || shortTextSetting.Name == "Name" || shortTextSetting.Name == "DisplayName") { continue; } fieldName = shortTextSetting.Name; var baseSettingAccessor = new PrivateObject(shortTextSetting, new PrivateType(typeof(FieldSetting))); baseSettingAccessor.SetField("_defaultValue", BindingFlags.NonPublic | BindingFlags.Instance, defaultValue); break; } if (fieldName == null) { Assert.Inconclusive("Car ContentType do not have any ShortText field."); } //==== create a new Content var newContent = Content.CreateNew("Car", _testRoot, "Car1"); var editedField = newContent.Fields[fieldName]; //==== simulating contentview: //-- create control RegisterFieldControl, SetData, Post default value ShortText shortTextControl = new ShortText(); ShortTextAccessor shortTextControlAcc = new ShortTextAccessor(shortTextControl); //-- RegisterFieldControl, SetData, Post default value shortTextControlAcc.ConnectToField(editedField); shortTextControlAcc.SetDataInternal(); //-- Post default value editedField.SetData(shortTextControl.GetData()); //==== Check default value fieldValue = (string)newContent[fieldName]; Assert.IsTrue(fieldValue == evaluatedValue, "#1"); //-- simulating userinput: overwrite default value shortTextControlAcc.InputTextBox.Text = userInput; //-- simulating contentview: PostData editedField.SetData(shortTextControl.GetData()); //==== Check user input fieldValue = (string)newContent[fieldName]; Assert.IsTrue(fieldValue == userInput, "#2"); }
public void ContentList_AddField() { string listDef = @"<?xml version='1.0' encoding='utf-8'?> <ContentListDefinition xmlns='http://schemas.com/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)); }