コード例 #1
0
ファイル: FieldManager.cs プロジェクト: olemp/sherpa
 /// <summary>
 /// We don't want to update all properties of an existing field. For now, only the Hidden property is being updated.
 /// </summary>
 /// <param name="configField"></param>
 /// <param name="existingField"></param>
 private void UpdateExistingField(ShField configField, Field existingField)
 {
     var fieldUpdated = false;
     if (configField.Hidden != existingField.Hidden)
     {
         existingField.Hidden = configField.Hidden;
         fieldUpdated = true;
     }
     if (configField.DisplayName != existingField.Title)
     {
         existingField.Title = configField.DisplayName;
         fieldUpdated = true;
     }
     if (configField.Group != existingField.Group)
     {
         existingField.Group = configField.Group;
         fieldUpdated = true;
     }
     if (configField.Default != existingField.DefaultValue && !string.IsNullOrEmpty(configField.Default))
     {
         existingField.DefaultValue = configField.Default;
         fieldUpdated = true;
     }
     if (fieldUpdated)
     {
         existingField.UpdateAndPushChanges(true);
         ClientContext.ExecuteQuery();
     }
 }
コード例 #2
0
ファイル: FieldManager.cs プロジェクト: olemp/sherpa
        private Guid GetTermSetId(ShField field)
        {
            if (field.TermSetId != Guid.Empty) return field.TermSetId;

            if (string.IsNullOrEmpty(field.TermSetName))
            {
                throw new Exception("Invalid taxonomy configuration settings for field " + field.DisplayName);
            }
            var manager = new TaxonomyManager();
            return manager.GetTermSetId(ClientContext, field.TermSetName);
        }
コード例 #3
0
ファイル: FieldManager.cs プロジェクト: olemp/sherpa
        private void CreateField(ShField field, FieldCollection fields)
        {
            // code to handle lookup fields. does not work if the list has not been created...
            if (field.Type == "Lookup" || field.Type == "LookupMulti")
            {
                var web = ClientContext.Web;
                if (!web.IsObjectPropertyInstantiated("Lists"))
                {
                    ClientContext.Load(web, x => x.Lists);
                    ClientContext.ExecuteQuery();
                }

                var listTitle = field.List;
                var list = web.Lists.GetByTitle(listTitle);

                try
                {
                    ClientContext.Load(list, x=>x.Id);
                    ClientContext.ExecuteQuery();
                    field.List = list.Id.ToString();
                }
                catch (Exception)
                {
                    Log.Info("Lookup field " + field.DisplayName + " id:" + field.ID + " cannot be created since the list " + listTitle + " has not been created. Please rund content type creation again after setting up the site hierarchy");
                    return;
                }

            }

            var fieldXml = field.GetFieldAsXml();
            Field newField = fields.AddFieldAsXml(fieldXml, true, AddFieldOptions.AddFieldInternalNameHint);

            ClientContext.Load(newField);
            ClientContext.ExecuteQuery();
        }
コード例 #4
0
ファイル: FieldManager.cs プロジェクト: olemp/sherpa
        private void CreateTaxonomyField(ShField field, FieldCollection fields)
        {
            Log.Debug("Attempting to create taxonomy field " + field.DisplayName);
            var fieldSchema = field.GetFieldAsXml();
            var newField = fields.AddFieldAsXml(fieldSchema, false, AddFieldOptions.AddFieldInternalNameHint);
            ClientContext.Load(newField);
            ClientContext.ExecuteQuery();

            var termSetId = GetTermSetId(field);
            var newTaxonomyField = ClientContext.CastTo<TaxonomyField>(newField);
            newTaxonomyField.SspId = field.SspId;
            newTaxonomyField.TermSetId = termSetId;
            newTaxonomyField.TargetTemplate = String.Empty;
            newTaxonomyField.AnchorId = Guid.Empty;
            newTaxonomyField.CreateValuesInEditForm = field.OpenTermSet;
            newTaxonomyField.Open = field.OpenTermSet;
            newTaxonomyField.Update();
            ClientContext.ExecuteQuery();
        }
コード例 #5
0
ファイル: FieldManager.cs プロジェクト: ceg692001/sherpa
 /// <summary>
 /// We don't want to update all properties of an existing field. For now, only the Hidden property is being updated.
 /// </summary>
 /// <param name="configField"></param>
 /// <param name="existingField"></param>
 private void UpdateExistingField(ShField configField, Field existingField)
 {
     var fieldUpdated = false;
     if (configField.Hidden != existingField.Hidden)
     {
         existingField.Hidden = configField.Hidden;
         fieldUpdated = true;
     }
     if (configField.DisplayName != existingField.Title)
     {
         existingField.Title = configField.DisplayName;
         fieldUpdated = true;
     }
     if (configField.Group != existingField.Group)
     {
         existingField.Group = configField.Group;
         fieldUpdated = true;
     }
     if (fieldUpdated)
     {
         existingField.Update();
         ClientContext.ExecuteQuery();
     }
 }