예제 #1
0
        private FieldSetting CreateNewFieldType(FieldDescriptor fieldInfo, Dictionary <string, List <string> > newBindings, ContentListType listType, SlotTable slotTable, SchemaEditor editor)
        {
            List <string> bindList = new List <string>();

            foreach (RepositoryDataType slotType in FieldManager.GetDataTypes(fieldInfo.FieldTypeShortName))
            {
                if (slotType == RepositoryDataType.NotDefined)
                {
                    continue;
                }
                int    slotNumber = slotTable.ReserveSlot((DataType)slotType);
                string binding    = EncodeBinding(slotType, slotNumber);
                bindList.Add(binding);

                PropertyType pt = editor.PropertyTypes[binding];
                if (pt == null)
                {
                    pt = editor.CreateContentListPropertyType((DataType)slotType, slotNumber);
                }
                editor.AddPropertyTypeToPropertySet(pt, listType);
            }
            newBindings.Add(fieldInfo.FieldName, bindList);

            return(FieldSetting.Create(fieldInfo, bindList, null));
        }
예제 #2
0
        public void UpdateField(FieldSetting fieldSetting)
        {
            if (fieldSetting == null)
            {
                throw new ArgumentNullException("fieldSetting");
            }

            if (!FieldExists(fieldSetting))
            {
                throw new ArgumentException("List field does not exist: " + fieldSetting.Name);
            }

            foreach (var fs in this.FieldSettings)
            {
                if (fs.Name.CompareTo(fieldSetting.Name) != 0)
                {
                    continue;
                }

                if (fs.ShortName.CompareTo(fieldSetting.ShortName) != 0)
                {
                    throw new ArgumentException(string.Format("List field types does not match: {0}, {1}", fs.ShortName, fieldSetting.ShortName));
                }

                break;
            }

            UpdateFieldInternal(fieldSetting);
        }
예제 #3
0
        public static void AddToDefaultView(FieldSetting fieldSetting, ContentList contentList)
        {
            if (fieldSetting == null || contentList == null)
                return;

            var iv = LoadDefaultView(contentList) as IView;
            if (iv == null) 
                return;

            var viewNode = iv as Node;
            if (viewNode == null)
                return;

            //if the view is global, create local copy first
            if (!viewNode.Path.StartsWith(contentList.Path))
            {
                viewNode = ViewManager.CopyViewLocal(contentList.Path, viewNode.Path, true);
                iv = viewNode as IView;
            }

            fieldSetting.Owner = ContentType.GetByName("ContentList");

            iv.AddColumn(new Column
                             {
                                 FullName = fieldSetting.FullName,
                                 BindingName = fieldSetting.BindingName,
                                 Title = fieldSetting.DisplayName,
                                 Index = iv.GetColumns().Count() + 1
                             });

            viewNode.Save();
        }
예제 #4
0
 void LoadData()
 {
     if (cboField.Items.Count > 0)
     {
         gridControl1.DataSource = FieldSetting.GetByFieldDataTable(cboField.Text, Type);
     }
 }
예제 #5
0
        protected override void CopyPropertiesFrom(FieldSetting source)
        {
            base.CopyPropertiesFrom(source);
            var etSource = (PageBreakFieldSetting)source;

            Rule = etSource.Rule;
        }
예제 #6
0
파일: IMetaNode.cs 프로젝트: y1027/sensenet
 public PropertyType(FieldSetting fieldSetting, Class @class)
 {
     _fieldSetting  = fieldSetting;
     _class         = @class;
     Required       = fieldSetting.Compulsory ?? false;
     UnderlyingType = _fieldSetting.FieldDataType;
 }
예제 #7
0
    // Start is called before the first frame update
    void Start()
    {
        var settings = FieldSetting.getDefault();

        settings.HorzDimension = BrickSetting.FieldSize;
        settings.VertDimension = BrickSetting.FieldSize;
        settings.SideDimension = BrickSetting.SideFieldSize;

        var sliderValue = PlayerPrefs.GetFloat("Sound");

        _audioSource.SetFloat("MusicVol", Mathf.Log10(sliderValue) * 20);

        _gameSceneLogic = new Scene(settings);

        _gameSceneLogic.ScoreUpdated         += ScoreUpdated;
        _gameSceneLogic.CombinationDestroyed += CombinationDestroyed;
        _gameSceneLogic.GameOver             += GameOver;
        _gameSceneLogic.GameWon += GameWon;

        InstantiateMainField(_gameSceneLogic.MainFieldMatrix, _gameSceneLogic.MovingSquare);

        InstantiateTopSideField(_gameSceneLogic.GetSideMatrix(Side.Top));
        InstantiateLeftSideField(_gameSceneLogic.GetSideMatrix(Side.Left));
        InstantiateBottomSideField(_gameSceneLogic.GetSideMatrix(Side.Bottom));
        InstantiateRightSideField(_gameSceneLogic.GetSideMatrix(Side.Right));
    }
예제 #8
0
        private static int CompareFields(FieldSetting x, FieldSetting y)
        {
            var left  = x.DisplayName ?? string.Empty;
            var right = y.DisplayName ?? string.Empty;

            return(left.CompareTo(right));
        }
예제 #9
0
        private static int CompareFields(FieldSetting x, FieldSetting y)
        {
            var left  = x.DisplayName ?? string.Empty;
            var right = y.DisplayName ?? string.Empty;

            return(string.Compare(left, right, StringComparison.InvariantCulture));
        }
예제 #10
0
        private static int CompareFields(FieldSetting fsX, FieldSetting fsY)
        {
            // Comparison: CTD fields come first ordered by
            // FieldIndex, than list fields ordered by FieldIndex

            if (fsX == null)
            {
                if (fsY == null)
                {
                    return(0);
                }

                return(-1);
            }

            if (fsY == null)
            {
                return(1);
            }

            if (fsX.Name.StartsWith("#"))
            {
                return(fsY.Name.StartsWith("#") ? (fsX.FieldIndex ?? 0).CompareTo(fsY.FieldIndex ?? 0) : 1);
            }

            if (fsY.Name.StartsWith("#"))
            {
                return(-1);
            }

            return((fsX.FieldIndex ?? 0).CompareTo(fsY.FieldIndex ?? 0));
        }
예제 #11
0
        public void ShouldSideFieldThrowsSquare(Side location)
        {
            var fieldSetting = new FieldSetting()
            {
                HorzDimension = 5, VertDimension = 4, SideDimension = 3
            };
            var sideField = SideField.Create(fieldSetting, location);

            bool same = true;

            for (uint i = 0; i < sideField.Width; i++)
            {
                var color       = sideField[i, 0].Color;
                var secondColor = sideField[i, 1].Color;
                var thirdColor  = sideField[i, 2].Color;

                var throwColor = sideField.Pop(i);
                color.ShouldBe(throwColor);
                sideField[i, 0].Color.ShouldBe(secondColor);
                sideField[i, 1].Color.ShouldBe(thirdColor);

                sideField[i, 2].Color.ShouldNotBe(Color.None);

                same &= sideField[i, 2].Color == thirdColor;
            }

            same.ShouldBeFalse();
        }
예제 #12
0
        public override void RenderValuesToHtmlInsideDataSet(DataSet ds, int moduleId, bool noScript)
        {
            var fields = new ArrayList();

            //List of columns that contains URLs
            foreach (DataRow row in ds.Tables[DataSetTableName.Fields].Rows)
            {
                if (row[FieldsTableColumn.Type].ToString() == Name)
                {
                    var fieldSetting = new FieldSetting
                    {
                        Title        = row[FieldsTableColumn.Title].ToString(),
                        SourceColumn = row[FieldsTableColumn.InputSettings].AsString()
                    };
                    if (!string.IsNullOrEmpty(fieldSetting.SourceColumn))
                    {
                        fieldSetting.TokenText  = row[FieldsTableColumn.Default].AsString();
                        fieldSetting.SourceType = GetTypeName(ds.Tables[DataSetTableName.Fields],
                                                              fieldSetting.SourceColumn);
                        fields.Add(fieldSetting);
                        row[FieldsTableColumn.ValueColumn] = XmlConvert.EncodeName(fieldSetting.Title);
                    }
                }
            }
            foreach (DataRow row in ds.Tables[DataSetTableName.Data].Rows)
            {
                foreach (FieldSetting field in fields)
                {
                    row[field.Title] = new TokenReplace(moduleId).GetValue(field.TokenText, row, field.SourceColumn,
                                                                           field.SourceType);
                }
            }
        }
예제 #13
0
        public static string GetColumnTitle(string fieldFullName, string listPath)
        {
            if (string.IsNullOrEmpty(fieldFullName))
            {
                return(string.Empty);
            }

            string fieldName;
            var    fs = FieldSetting.GetFieldSettingFromFullName(fieldFullName, out fieldName);

            //content list field
            if (fs == null && !string.IsNullOrEmpty(fieldName) && fieldName.StartsWith("#") && !string.IsNullOrEmpty(listPath))
            {
                var cl = Node.Load <ContentList>(listPath);
                if (cl != null)
                {
                    var fsNode = cl.FieldSettingContents.FirstOrDefault(f => f.Name == fieldName) as FieldSettingContent;
                    if (fsNode != null)
                    {
                        fs = fsNode.FieldSetting;
                    }
                }
            }
            else if (fs == null && fieldFullName.IndexOf(".", StringComparison.Ordinal) < 0)
            {
                // Workaround: field name does not contain a type prefix (it is not a real full name), fallback
                // to generic content. This works incorrectly in case of content types: we will display a title
                // for the generic content field instead of a content type field - but at this point we have
                // no way of knowing what kind of content will be displayed in the grid.
                fs = FieldSetting.GetFieldSettingFromFullName(typeof(GenericContent).Name + "." + fieldFullName, out fieldName);
            }

            return(fs != null?UITools.GetSafeText(fs.DisplayName) : string.Empty);
        }
예제 #14
0
        //======================================================================================================= Runtime ContentType

        internal static ContentType Create(Type type, string ctd)
        {
            var contentType = new ContentType(ContentType.GetByName("GenericContent"));//HACK: come from ctd

            var reader    = new StringReader(ctd);
            var xml       = new XPathDocument(reader);
            var nametable = new NameTable();
            var nav       = xml.CreateNavigator();
            var nsres     = new XmlNamespaceManager(nav.NameTable);

            nsres.AddNamespace("x", ContentDefinitionXmlNamespace);
            var contentTypeElement = nav.Select("/x:ContentType", nsres);

            contentTypeElement.MoveNext();
            var contentTypeName = contentTypeElement.Current.GetAttribute("name", "");

            contentType.Name = contentTypeName;
            var fieldElements = nav.Select("/x:ContentType/x:Fields/x:Field", nsres);

            foreach (XPathNavigator fieldElement in fieldElements)
            {
                var fieldDescriptor = FieldDescriptor.Parse(fieldElement, nsres, contentType);
                var fieldSetting    = FieldSetting.Create(fieldDescriptor);
                contentType.FieldSettings.Add(fieldSetting);
            }
            contentType.SetFieldSlots(type);
            return(contentType);
        }
예제 #15
0
        private void ChangeInheritedField(FieldSetting parent)
        {
            //==== Change the fieldSetting parent if its owner is this contentType
            int index = GetFieldSettingIndexByName(parent.Name);

            if (index == -1)
            {
                return;
            }

            FieldSetting fieldSetting = this.FieldSettings[index];

            //-- break recursion if owner of field is this contenttype
            if (fieldSetting.Owner == this)
            {
                fieldSetting.ParentFieldSetting = parent;
                return;
            }

            //-- with postorder recursion
            foreach (ContentType child in this.ChildTypes)
            {
                child.ChangeInheritedField(parent);
            }
            this.FieldSettings[index] = parent;
        }
예제 #16
0
        private void btnAdd_Click(object sender, EventArgs e)
        {
            if (CheckData() && cboField.Items.Count > 0)
            {
                switch (status)
                {
                case Status.Add:
                    obj.Field     = cboField.Text.Trim();
                    obj.Control   = cboControl.Text.Trim();
                    obj.Attribute = cboAttribute.Text.Trim();
                    obj.Value     = txtValue.Text.Trim();
                    obj.Type      = Type;
                    FieldSetting.Insert(obj);

                    LoadData();
                    break;

                case Status.Edit:
                    obj.Control   = cboControl.Text.Trim();
                    obj.Attribute = cboAttribute.Text.Trim();
                    obj.Value     = txtValue.Text.Trim();
                    obj.Type      = Type;
                    FieldSetting.Update(obj);
                    LoadData();

                    status = Status.Add;
                    break;
                }
                FormStatus();
                txtValue.Text = "";
            }
        }
예제 #17
0
        public void ShouldScoreStateManagerRestoreToPreviousStates()
        {
            var setting           = new FieldSetting();
            var score             = new Score(setting);
            var scoreStateManager = new ScoreStateManager(score, 2);

            scoreStateManager.Save();
            score.Add(2);

            scoreStateManager.Save();
            score.Add(3);

            scoreStateManager.Save();
            score.Add(4);

            score.Value.ShouldBe(9);

            var result = scoreStateManager.BackToPrevious();

            result.ShouldBeTrue();
            score.Value.ShouldBe(5);

            result = scoreStateManager.BackToPrevious();
            result.ShouldBeTrue();
            score.Value.ShouldBe(2);

            result = scoreStateManager.BackToPrevious();
            result.ShouldBeFalse();
            score.Value.ShouldBe(2);
        }
예제 #18
0
        public void ShouldCreateScoreStateManager()
        {
            var setting           = new FieldSetting();
            var scoreStateManager = new ScoreStateManager(new Score(setting), 2);

            scoreStateManager.ShouldNotBeNull();
        }
예제 #19
0
        protected override void CopyPropertiesFrom(FieldSetting source)
        {
            base.CopyPropertiesFrom(source);
            var binaryFieldSettingSource = (BinaryFieldSetting)source;

            IsText = binaryFieldSettingSource.IsText;
        }
예제 #20
0
파일: Aspect.cs 프로젝트: y1027/sensenet
        private void AddFieldInternal(FieldSetting fieldSetting)
        {
            if (string.IsNullOrEmpty(this.AspectDefinition))
            {
                this.AspectDefinition = DefaultAspectDefinition;
            }

            fieldSetting.Aspect = this;

            DeleteFieldInternal(fieldSetting.Name);

            var doc = new XmlDocument();

            doc.LoadXml(this.AspectDefinition);
            var nsmgr = new XmlNamespaceManager(doc.NameTable);

            nsmgr.AddNamespace("x", AspectDefinitionXmlNamespace);

            var fields = doc.DocumentElement.SelectSingleNode("/x:AspectDefinition/x:Fields", nsmgr);

            using (var writer = fields.CreateNavigator().AppendChild())
            {
                fieldSetting.WriteXml(writer);
            }

            this.AspectDefinition = doc.OuterXml;
        }
예제 #21
0
        private ContentListType ManageContentListTypeOneAttempt(Dictionary <string, FieldDescriptor> fieldInfoList, Dictionary <string, List <string> > oldBindings, bool modify, out List <FieldSetting> fieldSettings)
        {
            fieldSettings = new List <FieldSetting>();
            if (!modify)
            {
                // Load
                foreach (string name in fieldInfoList.Keys)
                {
                    fieldSettings.Add(FieldSetting.Create(fieldInfoList[name], oldBindings[name], null));
                }
                return(this.ContentListType);
            }

            SchemaEditor editor = new SchemaEditor();

            editor.Load();
            bool hasChanges = false;
            var  listType   = this.ContentListType;
            Dictionary <string, List <string> > newBindings = new Dictionary <string, List <string> >();
            SlotTable slotTable = new SlotTable(oldBindings);

            if (listType == null)
            {
                // new
                listType = editor.CreateContentListType(Guid.NewGuid().ToString());
                foreach (string name in fieldInfoList.Keys)
                {
                    fieldSettings.Add(CreateNewFieldType(fieldInfoList[name], newBindings, listType, slotTable, editor));
                }
                hasChanges = true;
            }
            else
            {
                // merge
                listType    = editor.ContentListTypes[listType.Name];
                hasChanges |= RemoveUnusedFields(fieldInfoList, oldBindings, listType, editor);
                foreach (string name in fieldInfoList.Keys)
                {
                    FieldSetting origField = GetFieldTypeByName(name, _fieldSettings);
                    if (origField == null)
                    {
                        fieldSettings.Add(CreateNewFieldType(fieldInfoList[name], newBindings, listType, slotTable, editor));
                        hasChanges = true;
                    }
                    else
                    {
                        List <string> bindList = new List <string>(origField.Bindings.ToArray());
                        fieldSettings.Add(FieldSetting.Create(fieldInfoList[name], bindList, null));
                        newBindings.Add(name, bindList);
                    }
                }
            }
            if (hasChanges)
            {
                editor.Register();
            }
            this.ContentListBindings = newBindings;
            return(ActiveSchema.ContentListTypes[listType.Name]);
        }
예제 #22
0
        protected override void CopyPropertiesFrom(FieldSetting source)
        {
            base.CopyPropertiesFrom(source);

            var colorFieldSettingSource = (ColorFieldSetting)source;

            Palette = colorFieldSettingSource.Palette;
        }
예제 #23
0
        protected override void CopyPropertiesFrom(FieldSetting source)
        {
            base.CopyPropertiesFrom(source);
            var binaryFieldSettingSource = (BinaryFieldSetting)source;

            IsText = binaryFieldSettingSource.IsText;

        }
예제 #24
0
 public FieldMetadata(bool canRead, bool canWrite, string fieldName, string fieldDisplayName, FieldSetting fieldSetting)
 {
     this.CanRead      = canRead;
     this.CanWrite     = canWrite;
     this.FieldName    = fieldName;
     this.DisplayName  = fieldDisplayName;
     this.FieldSetting = fieldSetting;
 }
예제 #25
0
        protected override void CopyPropertiesFrom(FieldSetting source)
        {
            base.CopyPropertiesFrom(source);

            var currentSource = (CurrencyFieldSetting)source;

            Format = currentSource.Format;
        }
예제 #26
0
        protected override void CopyPropertiesFrom(FieldSetting source)
        {
            base.CopyPropertiesFrom(source);

            var etSource = (HyperLinkFieldSetting)source;

            UrlFormat = etSource.UrlFormat;
        }
예제 #27
0
        protected override void CopyPropertiesFrom(FieldSetting source)
        {
            base.CopyPropertiesFrom(source);

            var currentSource = (CurrencyFieldSetting)source;

            Format = currentSource.Format;
        }
예제 #28
0
        protected override void CopyPropertiesFrom(FieldSetting source)
        {
            base.CopyPropertiesFrom(source);

            var shortTextFieldSettingSource = (ShortTextFieldSetting)source;

            Regex = shortTextFieldSettingSource.Regex;
        }
예제 #29
0
        protected override void CopyPropertiesFrom(FieldSetting source)
        {
            base.CopyPropertiesFrom(source);

            var fsSource = (XmlFieldSetting)source;

            ExpectedXmlNamespace = fsSource.ExpectedXmlNamespace;
        }
예제 #30
0
        protected override void CopyPropertiesFrom(FieldSetting source)
        {
            base.CopyPropertiesFrom(source);

            var etSource = (HyperLinkFieldSetting)source;

            UrlFormat = etSource.UrlFormat;
        }
예제 #31
0
 public void DeleteField(FieldSetting fieldSetting)
 {
     //do not throw an exception, if field does not exist
     if (FieldExists(fieldSetting))
     {
         DeleteFieldInternal(fieldSetting);
     }
 }
예제 #32
0
        public FieldSettingContent(FieldSetting fieldSetting, ContentType contentType) :
            this(Repository.Root, GetNodeTypeName(fieldSetting))
        {
            this.FieldSetting = fieldSetting;
            this.ContentType = contentType;

            this.Name = this.FieldSetting.Name;
            this._isNew = false;
        }
예제 #33
0
        protected override void CopyPropertiesFrom(FieldSetting source)
        {
            base.CopyPropertiesFrom(source);

            var shortTextFieldSettingSource = (ShortTextFieldSetting) source;

            Regex = shortTextFieldSettingSource.Regex;

        }
예제 #34
0
        private bool FieldExists(FieldSetting fieldSetting)
        {
            if (fieldSetting == null || fieldSetting.Name == null)
            {
                return(false);
            }

            return(this.ContentListBindings.Keys.Contains(fieldSetting.Name));
        }
예제 #35
0
        protected override void CopyPropertiesFrom(FieldSetting source)
        {
            base.CopyPropertiesFrom(source);

            var textFieldSettingSource = (TextFieldSetting)source;

            MaxLength = textFieldSettingSource.MaxLength;
            MinLength = textFieldSettingSource.MinLength;
        }
예제 #36
0
파일: Aspect.cs 프로젝트: y1027/sensenet
 /// <summary>
 /// Adds one or more new fields to this instance or replaces existing ones and saves the modifications.
 /// </summary>
 /// <param name="fieldInfos">Array of <see cref="Schema.FieldInfo"/>s that will be added.</param>
 public void AddFields(params SenseNet.ContentRepository.Schema.FieldInfo[] fieldInfos)
 {
     foreach (var fieldInfo in fieldInfos)
     {
         AddFieldInternal(FieldSetting.Create(fieldInfo, this));
     }
     Build();
     Save();
 }
예제 #37
0
        //================================================================= Constructors

        public FieldSettingContent(FieldSetting fieldSetting, ContentList contentList) :
            this(contentList ?? Repository.Root as Node, GetNodeTypeName(fieldSetting))
        {
            this.FieldSetting = fieldSetting;
            this.ContentList = contentList;

            this.AddToDefaultView = false;
            this.Name = this.FieldSetting.Name;
            this._isNew = false;
        }
예제 #38
0
        public static MessageDescriptor<Room> CreateDescriptor()
        {
            FieldSetting<Room>[] settings = new FieldSetting<Room>[]
            {
                FieldSetting<Room>.CreateInt32(1, x => x.Capacity, (x, y) => x.Capacity = y),
                FieldSetting<Room>.CreateString(2, x => x.Name, (x, y) => x.Name = y),
                FieldSetting<Room>.CreateMessageArray(3, x => x.People, (x, y) => x.People.Add(y), Person.CreateDescriptor())
            };

            return MessageDescriptor<Room>.Create(settings);
        }
예제 #39
0
        public static MessageDescriptor<Test.Mess> CreateMessAllPackedDescriptor()
        {
            FieldSetting<Test.Mess>[] settings = new FieldSetting<Test.Mess>[]
            {
                FieldSetting<Test.Mess>.CreateDouble(Test.Mess.DoubleValFieldNumber, x => x.DoubleVal, (x, y) => x.DoubleVal = y),
                FieldSetting<Test.Mess>.CreateFloat(Test.Mess.FloatValFieldNumber, x => x.FloatVal, (x, y) => x.FloatVal = y),
                FieldSetting<Test.Mess>.CreateInt32(Test.Mess.Int32ValFieldNumber, x => x.Int32Val, (x, y) => x.Int32Val = y),
                FieldSetting<Test.Mess>.CreateInt64(Test.Mess.Int64ValFieldNumber, x => x.Int64Val, (x, y) => x.Int64Val = y),
                FieldSetting<Test.Mess>.CreateUInt32(Test.Mess.UInt32ValFieldNumber, x => x.UInt32Val, (x, y) => x.UInt32Val = y),
                FieldSetting<Test.Mess>.CreateUInt64(Test.Mess.UInt64ValFieldNumber, x => x.UInt64Val, (x, y) => x.UInt64Val = y),
                FieldSetting<Test.Mess>.CreateSInt32(Test.Mess.SInt32ValFieldNumber, x => x.SInt32Val, (x, y) => x.SInt32Val = y),
                FieldSetting<Test.Mess>.CreateSInt64(Test.Mess.SInt64ValFieldNumber, x => x.SInt64Val, (x, y) => x.SInt64Val = y),
                FieldSetting<Test.Mess>.CreateFixed32(Test.Mess.Fixed32ValFieldNumber, x => x.Fixed32Val, (x, y) => x.Fixed32Val = y),
                FieldSetting<Test.Mess>.CreateFixed64(Test.Mess.Fixed64ValFieldNumber, x => x.Fixed64Val, (x, y) => x.Fixed64Val = y),
                FieldSetting<Test.Mess>.CreateSFixed32(Test.Mess.SFixed32ValFieldNumber, x => x.SFixed32Val, (x, y) => x.SFixed32Val = y),
                FieldSetting<Test.Mess>.CreateSFixed64(Test.Mess.SFixed64ValFieldNumber, x => x.SFixed64Val, (x, y) => x.SFixed64Val = y),
                FieldSetting<Test.Mess>.CreateBool(Test.Mess.BoolValFieldNumber, x => x.BoolVal, (x, y) => x.BoolVal = y),
                FieldSetting<Test.Mess>.CreateString(Test.Mess.StringValFieldNumber, x => x.StringVal, (x, y) => x.StringVal = y),
                FieldSetting<Test.Mess>.CreateBytes(Test.Mess.BytesValFieldNumber, x => x.BytesVal.ToByteArray(), (x, y) => x.BytesVal = ByteString.CopyFrom(y)),

                FieldSetting<Test.Mess>.CreateDoublePackedArray(Test.Mess.DoubleArrFieldNumber, x => x.DoubleArr, (x, y) => x.DoubleArr.Add(y)),
                FieldSetting<Test.Mess>.CreateFloatPackedArray(Test.Mess.FloatArrFieldNumber, x => x.FloatArr, (x, y) => x.FloatArr.Add(y)),
                FieldSetting<Test.Mess>.CreateInt32PackedArray(Test.Mess.Int32ArrFieldNumber, x => x.Int32Arr, (x, y) => x.Int32Arr.Add(y)),
                FieldSetting<Test.Mess>.CreateInt64PackedArray(Test.Mess.Int64ArrFieldNumber, x => x.Int64Arr, (x, y) => x.Int64Arr.Add(y)),
                FieldSetting<Test.Mess>.CreateUInt32PackedArray(Test.Mess.UInt32ArrFieldNumber, x => x.UInt32Arr, (x, y) => x.UInt32Arr.Add(y)),
                FieldSetting<Test.Mess>.CreateUInt64PackedArray(Test.Mess.UInt64ArrFieldNumber, x => x.UInt64Arr, (x, y) => x.UInt64Arr.Add(y)),
                FieldSetting<Test.Mess>.CreateSInt32PackedArray(Test.Mess.SInt32ArrFieldNumber, x => x.SInt32Arr, (x, y) => x.SInt32Arr.Add(y)),
                FieldSetting<Test.Mess>.CreateSInt64PackedArray(Test.Mess.SInt64ArrFieldNumber, x => x.SInt64Arr, (x, y) => x.SInt64Arr.Add(y)),
                FieldSetting<Test.Mess>.CreateFixed32PackedArray(Test.Mess.Fixed32ArrFieldNumber, x => x.Fixed32Arr, (x, y) => x.Fixed32Arr.Add(y)),
                FieldSetting<Test.Mess>.CreateFixed64PackedArray(Test.Mess.Fixed64ArrFieldNumber, x => x.Fixed64Arr, (x, y) => x.Fixed64Arr.Add(y)),
                FieldSetting<Test.Mess>.CreateSFixed32PackedArray(Test.Mess.SFixed32ArrFieldNumber, x => x.SFixed32Arr, (x, y) => x.SFixed32Arr.Add(y)),
                FieldSetting<Test.Mess>.CreateSFixed64PackedArray(Test.Mess.SFixed64ArrFieldNumber, x => x.SFixed64Arr, (x, y) => x.SFixed64Arr.Add(y)),
                FieldSetting<Test.Mess>.CreateBoolPackedArray(Test.Mess.BoolArrFieldNumber, x => x.BoolArr, (x, y) => x.BoolArr.Add(y)),
                FieldSetting<Test.Mess>.CreateStringArray(Test.Mess.StringArrFieldNumber, x => x.StringArr, (x, y) => x.StringArr.Add(y)),
                FieldSetting<Test.Mess>.CreateBytesArray(Test.Mess.BytesArrFieldNumber, x => x.BytesArr.Select(y => y.ToByteArray()), (x, y) => x.BytesArr.Add(ByteString.CopyFrom(y))),

                FieldSetting<Test.Mess>.CreateDoublePackedArray(Test.Mess.DoublePackedFieldNumber, x => x.DoublePacked, (x, y) => x.DoublePacked.Add(y)),
                FieldSetting<Test.Mess>.CreateFloatPackedArray(Test.Mess.FloatPackedFieldNumber, x => x.FloatPacked, (x, y) => x.FloatPacked.Add(y)),
                FieldSetting<Test.Mess>.CreateInt32PackedArray(Test.Mess.Int32PackedFieldNumber, x => x.Int32Packed, (x, y) => x.Int32Packed.Add(y)),
                FieldSetting<Test.Mess>.CreateInt64PackedArray(Test.Mess.Int64PackedFieldNumber, x => x.Int64Packed, (x, y) => x.Int64Packed.Add(y)),
                FieldSetting<Test.Mess>.CreateUInt32PackedArray(Test.Mess.UInt32PackedFieldNumber, x => x.UInt32Packed, (x, y) => x.UInt32Packed.Add(y)),
                FieldSetting<Test.Mess>.CreateUInt64PackedArray(Test.Mess.UInt64PackedFieldNumber, x => x.UInt64Packed, (x, y) => x.UInt64Packed.Add(y)),
                FieldSetting<Test.Mess>.CreateSInt32PackedArray(Test.Mess.SInt32PackedFieldNumber, x => x.SInt32Packed, (x, y) => x.SInt32Packed.Add(y)),
                FieldSetting<Test.Mess>.CreateSInt64PackedArray(Test.Mess.SInt64PackedFieldNumber, x => x.SInt64Packed, (x, y) => x.SInt64Packed.Add(y)),
                FieldSetting<Test.Mess>.CreateFixed32PackedArray(Test.Mess.Fixed32PackedFieldNumber, x => x.Fixed32Packed, (x, y) => x.Fixed32Packed.Add(y)),
                FieldSetting<Test.Mess>.CreateFixed64PackedArray(Test.Mess.Fixed64PackedFieldNumber, x => x.Fixed64Packed, (x, y) => x.Fixed64Packed.Add(y)),
                FieldSetting<Test.Mess>.CreateSFixed32PackedArray(Test.Mess.SFixed32PackedFieldNumber, x => x.SFixed32Packed, (x, y) => x.SFixed32Packed.Add(y)),
                FieldSetting<Test.Mess>.CreateSFixed64PackedArray(Test.Mess.SFixed64PackedFieldNumber, x => x.SFixed64Packed, (x, y) => x.SFixed64Packed.Add(y)),
                FieldSetting<Test.Mess>.CreateBoolPackedArray(Test.Mess.BoolPackedFieldNumber, x => x.BoolPacked, (x, y) => x.BoolPacked.Add(y)),
            };

            return MessageDescriptor<Test.Mess>.Create(settings);
        }
예제 #40
0
        public static MessageDescriptor<Person> CreateDescriptor()
        {
            FieldSetting<Person>[] settings = new FieldSetting<Person>[]
            {
                FieldSetting<Person>.CreateInt32(1, x => x.Age, (x, y) => x.Age = y),
                FieldSetting<Person>.CreateInt32(2, x => x.Height, (x, y) => x.Height = y),
                FieldSetting<Person>.CreateDouble(3, x => x.Weight, (x, y) => x.Weight = y),
                FieldSetting<Person>.CreateString(4, x => x.Name, (x, y) => x.Name = y),
                FieldSetting<Person>.CreateString(5, x => x.Phone, (x, y) => x.Phone = y, x => x.Phone != null)
            };

            return MessageDescriptor<Person>.Create(settings);
        }
예제 #41
0
        private void AddFieldInternal(FieldSetting fieldSetting)
        {
            if (string.IsNullOrEmpty(this.ContentListDefinition))
                this.ContentListDefinition = DefaultContentListDefinition;

            var doc = new XmlDocument();
            doc.LoadXml(this.ContentListDefinition);
            var nsmgr = new XmlNamespaceManager(doc.NameTable);
            nsmgr.AddNamespace("x", ContentListDefinitionXmlNamespace);

            var fields = doc.DocumentElement.SelectSingleNode("/x:ContentListDefinition/x:Fields", nsmgr);

            using (var writer = fields.CreateNavigator().AppendChild())
            {
                fieldSetting.WriteXml(writer);
            }
            
            this.ContentListDefinition = doc.OuterXml;
            this.Save();
        }
예제 #42
0
 private static int CompareFields(FieldSetting x, FieldSetting y)
 {
     var left = x.DisplayName ?? string.Empty;
     var right = y.DisplayName ?? string.Empty;
     return left.CompareTo(right);
 }
예제 #43
0
        private bool FieldExists(FieldSetting fieldSetting)
        {
            if (fieldSetting == null || fieldSetting.Name == null)
                return false;

            return this.ContentListBindings.Keys.Contains(fieldSetting.Name);
        }
예제 #44
0
	    private void DeleteFieldInternal(FieldSetting fieldSetting, bool saveImmediately)
        {
	        XmlDocument doc;
	        var node = FindFieldXmlNode(fieldSetting.Name, out doc);

            if (node == null)
                return;

	        node.ParentNode.RemoveChild(node);

            this.ContentListDefinition = doc.OuterXml;

	        if (!saveImmediately) 
                return;

	        this.Save();
        }
예제 #45
0
 private void DeleteFieldInternal(FieldSetting fieldSetting)
 {
     DeleteFieldInternal(fieldSetting, true);
 }
예제 #46
0
 public void DeleteField(FieldSetting fieldSetting)
 {
     //do not throw an exception, if field does not exist
     if (FieldExists(fieldSetting))
         DeleteFieldInternal(fieldSetting);
 }
예제 #47
0
        protected override void CopyPropertiesFrom(FieldSetting source)
        {
            base.CopyPropertiesFrom(source);

            var fsSource = (LongTextFieldSetting)source;

            TextType = fsSource.TextType;
            Rows = fsSource.Rows;
            AppendModifications = fsSource.AppendModifications;
        }
예제 #48
0
        public void AddField(FieldSetting fieldSetting)
        {
            if (fieldSetting == null)
                throw new ArgumentNullException("fieldSetting");

            if (FieldExists(fieldSetting))
                throw new ArgumentException("Existing list field: " + fieldSetting.Name);

            AddFieldInternal(fieldSetting);
        }
예제 #49
0
        protected override void CopyPropertiesFrom(FieldSetting source)
        {
            base.CopyPropertiesFrom(source);

            var etSource = (DateTimeFieldSetting)source;

            DateTimeMode = etSource.DateTimeMode;
            Precision = etSource.Precision;
        }
예제 #50
0
 private static int CompareFields(FieldSetting x, FieldSetting y)
 {
     return x.DisplayName.CompareTo(y.DisplayName);
 }
예제 #51
0
        protected override void CopyPropertiesFrom(FieldSetting source)
        {
            base.CopyPropertiesFrom(source);

            var refFieldSetting = (ReferenceFieldSetting) source;

            AllowMultiple = refFieldSetting.AllowMultiple;
            Query = refFieldSetting.Query;

            if (refFieldSetting.AllowedTypes != null)
                AllowedTypes = new List<string>(refFieldSetting.AllowedTypes);
            if (refFieldSetting.SelectionRoots != null)
                SelectionRoots = new List<string>(refFieldSetting.SelectionRoots);
        }
예제 #52
0
        protected override void CopyPropertiesFrom(FieldSetting source)
        {
            base.CopyPropertiesFrom(source);

            var fsSource = (XmlFieldSetting)source;
            ExpectedXmlNamespace = fsSource.ExpectedXmlNamespace;
        }
예제 #53
0
 public override void RenderValuesToHtmlInsideDataSet(DataSet ds, int moduleId, bool noScript)
 {
     var fields = new ArrayList();
     //List of columns that contains URLs
     foreach (DataRow row in ds.Tables[DataSetTableName.Fields].Rows)
     {
         if (row[FieldsTableColumn.Type].ToString() == Name)
         {
             var fieldTitle = row[FieldsTableColumn.Title].ToString();
             var fieldSetting = new FieldSetting
                                    {
                                        FormatString =
                                            row[FieldsTableColumn.OutputSettings].AsString("d"),
                                        Title = fieldTitle
                                    };
             fields.Add(fieldSetting);
             var localizedValueColumnName = fieldTitle + DataTableColumn.Appendix_LocalizedValue;
             ds.Tables[DataSetTableName.Data].Columns.Add(localizedValueColumnName, typeof (string));
             ds.Tables[DataSetTableName.Data].Columns.Add(fieldTitle + DataTableColumn.Appendix_Ticks,
                                                          typeof (long));
             row[FieldsTableColumn.ValueColumn] = XmlConvert.EncodeName(localizedValueColumnName);
         }
     }
     foreach (DataRow row in ds.Tables[DataSetTableName.Data].Rows)
     {
         foreach (FieldSetting field in fields)
         {
             if (Information.IsDate(row[field.Title]))
             {
                 var d = Convert.ToDateTime(row[field.Title]);
                 var format = "<!--{0:000000000000}-->{1:" + field.FormatString + "}";
                 row[field.Title + DataTableColumn.Appendix_LocalizedValue] = string.Format(format, d.Ticks/10000000, d);
                 row[field.Title + DataTableColumn.Appendix_Ticks] = d.Ticks;
             }
         }
     }
 }
예제 #54
0
 protected override void CopyPropertiesFrom(FieldSetting source)
 {
     base.CopyPropertiesFrom(source);
     var etSource = (PageBreakFieldSetting)source;
     Rule = etSource.Rule;
 }
예제 #55
0
		private static void CheckReference(PropertyInfo propInfo, Type[] type, ContentType cts, FieldSetting fs)
		{
			if (propInfo.PropertyType == (typeof(Node)))
				return;
			if (propInfo.PropertyType.IsSubclassOf(typeof(Node)))
				return;
			if (typeof(System.Collections.IEnumerable).IsAssignableFrom(propInfo.PropertyType))
				return;
			//if (propInfo.PropertyType == typeof(System.Collections.IEnumerable))
			//    return;
			//if (propInfo.PropertyType.Name == "IEnumerable`1")
			//    return;
			//if (propInfo.PropertyType.Name == "NodeList`1")
			//    return;
			throw new NotSupportedException(String.Format(CultureInfo.InvariantCulture,
				SR.Exceptions.Registration.Msg_InvalidReferenceField_2, cts.Name, fs.Name));
		}
예제 #56
0
        public void AddOrUpdateField(FieldSetting fieldSetting)
        {
            if (fieldSetting == null)
                throw new ArgumentNullException("fieldSetting");

            if (FieldExists(fieldSetting))
                UpdateFieldInternal(fieldSetting);
            else
                AddFieldInternal(fieldSetting);
        }
예제 #57
0
        public void UpdateField(FieldSetting fieldSetting)
        {
            if (fieldSetting == null)
                throw new ArgumentNullException("fieldSetting");

            if (!FieldExists(fieldSetting))
                throw new ArgumentException("List field does not exist: " + fieldSetting.Name);

            foreach (var fs in this.FieldSettings)
            {
                if (fs.Name.CompareTo(fieldSetting.Name) != 0) 
                    continue;

                if (fs.ShortName.CompareTo(fieldSetting.ShortName) != 0)
                    throw new ArgumentException(string.Format("List field types does not match: {0}, {1}", fs.ShortName, fieldSetting.ShortName));
                    
                break;
            } 

            UpdateFieldInternal(fieldSetting);
        }
예제 #58
0
        private void UpdateFieldInternal(FieldSetting fieldSetting)
        {
            XmlDocument doc;
            var node = FindFieldXmlNode(fieldSetting.Name, out doc);
            var fields = node.ParentNode;
            
            fields.RemoveChild(node);

            using (var writer = fields.CreateNavigator().AppendChild())
            {
                fieldSetting.WriteXml(writer);
            }

            this.ContentListDefinition = doc.OuterXml;
            this.Save();
        }
예제 #59
0
        protected override void CopyPropertiesFrom(FieldSetting source)
        {
            base.CopyPropertiesFrom(source);

            var pwdFieldSetting = (PasswordFieldSetting)source;

            ReenterTitle = pwdFieldSetting.ReenterTitle;
            ReenterDescription = pwdFieldSetting.ReenterDescription;
            PasswordHistoryLength = pwdFieldSetting.PasswordHistoryLength;

        }
예제 #60
0
            public override void RenderValuesToHtmlInsideDataSet(DataSet ds, int moduleId, bool noScript)
            {
                if (ds != null)
                {
                    var fields = new ArrayList();
                    var tableData = ds.Tables[DataSetTableName.Data];
                    var tokenReplace = new TokenReplace {ModuleId = moduleId};
                    foreach (DataRow row in ds.Tables[DataSetTableName.Fields].Rows)
                    {
                        if (row[FieldsTableColumn.Type].ToString() == Name)
                        {
                            var fieldId = (int)row[FieldsTableColumn.Id];
                            var field = new FieldSetting
                                            {
                                                Title = row[FieldsTableColumn.Title].ToString(),
                                                TokenText = GetFieldSetting("TokenText", fieldId, ds).AsString(),
                                                ShowUserName = GetFieldSetting("ShowUserName", fieldId, ds).AsBoolean(),
                                                OpenInNewWindow = GetFieldSetting("OpenInNewWindow", fieldId, ds).AsBoolean()

                                            };
                            fields.Add(field);
                            tableData.Columns.Add(new DataColumn(field.Title + DataTableColumn.Appendix_Url,typeof (string)));
                            tableData.Columns.Add(new DataColumn(field.Title + DataTableColumn.Appendix_Original,typeof (string)));
                            tableData.Columns.Add(new DataColumn(field.Title + DataTableColumn.Appendix_Caption,typeof (string)));
                        }
                    }

                    if (fields.Count > 0)
                    {
                        PortalSettings portalSettings = null;
                        if (HttpContext.Current != null)
                        {
                            portalSettings = PortalController.GetCurrentPortalSettings();
                        }
                        var mc = new ModuleController();
                        var settings = mc.GetModuleSettings(moduleId);
             
                        foreach (DataRow row in tableData.Rows)
                        {
                            foreach (FieldSetting field in fields)
                            {
                                var strFieldvalue = string.Empty;
                                //Link showed to the user
                                var link = row[field.Title].ToString();


                                //set caption:
                                var caption = field.TokenText;
                                var url = string.Empty;
                                //Link readable by browsers

                                link = UrlUtil.StripURL(link);
                                if (link != string.Empty) //valid link
                                {
                                    //var isLink = true;
                                    var intUser = Convert.ToInt32(-1);
                                    if (link.Like( "userid=*") && portalSettings != null)
                                    {
                                        try
                                        {
                                            intUser = int.Parse(link.Substring(7));
                                            tokenReplace.User = new UserController().GetUser(portalSettings.PortalId,
                                                                                             intUser);
                                        }
                                        catch
                                        {
                                        }
                                    }
                                    if (intUser == -1)
                                    {
                                        tokenReplace.User = new UserInfo {Username = "******"};
                                    }


                                    if (caption == string.Empty)
                                    {
                                        caption = field.ShowUserName ? "[User:DisplayName]" : "[User:UserName]";
                                    }

                                    caption = tokenReplace.ReplaceEnvironmentTokens(caption, row);
                                    if (caption == string.Empty) //DisplayName empty
                                    {
                                        caption = tokenReplace.ReplaceEnvironmentTokens("[User:username]");
                                    }

                                    url =
                                        HttpUtility.HtmlEncode(Globals.LinkClick(link, portalSettings.ActiveTab.TabID,
                                                                                 moduleId));

                                    strFieldvalue = string.Format("<!--{1}--><a href=\"{0}\"{2}>{1}</a>",
                                                                  url,
                                                                  caption,
                                                                  (field.OpenInNewWindow ? " target=\"_blank\"" : ""));

                                }
                                row[field.Title] = strFieldvalue;
                                row[field.Title + DataTableColumn.Appendix_Original] = link;
                                row[field.Title + DataTableColumn.Appendix_Url] = url;
                                row[field.Title + DataTableColumn.Appendix_Caption] = caption;
                            }
                        }
                    }
                }
            }