Пример #1
0
        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);
        }
Пример #2
0
        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");
        }
Пример #3
0
        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));
        }