private void OnVersioning(VersionContentContext context, EntityMetadataPart existing, EntityMetadataPart building) {
     building.Record.FieldMetadataRecords = new List<FieldMetadataRecord>();
     foreach (var record in existing.Record.FieldMetadataRecords) {
         var newRecord = new FieldMetadataRecord();
         _fieldMetadataRepository.Copy(record, newRecord);
         newRecord.OriginalId = record.Id;
         newRecord.EntityMetadataRecord = building.Record;
         _fieldMetadataRepository.Create(newRecord);
         building.Record.FieldMetadataRecords.Add(newRecord);
     }
 }
 public void UpdateField(FieldMetadataRecord record, string displayName, IUpdateModel updateModel) {
     var settingsDictionary = ParseSetting(record.Settings);
     settingsDictionary["DisplayName"] = displayName;
     _contentDefinitionEditorEvents.UpdateFieldSettings(record.ContentFieldDefinitionRecord.Name, record.Name, settingsDictionary, updateModel);
     record.Settings = CompileSetting(settingsDictionary);
 }
        private void AddField(string entityName, FieldMetadataRecord field, bool needEvent = true) {
            var settings = _settingsFormatter.Map(Parse(field.Settings));

            // add field to part
            _contentDefinitionManager.AlterPartDefinition(entityName, builder => {
                string fieldTypeName = field.ContentFieldDefinitionRecord.Name;
                builder.WithField(field.Name, fieldBuilder =>
                    fieldBuilder.OfType(fieldTypeName).WithSetting("Storage", "Part"));
            });

            // update field settings
            _contentDefinitionManager.AlterPartDefinition(entityName, builder =>
                builder.WithField(field.Name, fieldBuilder =>
                    _contentDefinitionEditorEvents.UpdateFieldSettings(fieldBuilder, settings))
                );

            field.Settings = _settingsFormatter.Map(settings).ToString();

            if (needEvent) {
                _fieldEvents.OnCreated(entityName, field.Name, bool.Parse(settings["AddInLayout"]));
            }
        }
 public void CreateField(EntityMetadataPart entity, AddFieldViewModel viewModel, IUpdateModel updateModel) {
     var settingsDictionary = new SettingsDictionary();
     settingsDictionary["DisplayName"] = viewModel.DisplayName;
     settingsDictionary["AddInLayout"] = viewModel.AddInLayout.ToString();
     settingsDictionary["EntityName"] = entity.Name;
     var field = new FieldMetadataRecord {
         ContentFieldDefinitionRecord = FetchFieldDefinition(viewModel.FieldTypeName),
         Name = viewModel.Name
     };
     entity.FieldMetadataRecords.Add(field);
     _contentDefinitionEditorEvents.UpdateFieldSettings(viewModel.FieldTypeName, viewModel.Name, settingsDictionary, updateModel);
     field.Settings = CompileSetting(settingsDictionary);
     field.EntityMetadataRecord = entity.Record;
 }