private void SharePointOnlineWait(TermModelHost termModelHost, TaxonomyTermLabelDefinition definition) { // wait until the group is there // Nested terms provisioning in Office 365 fails #995 // TermSet not found #994 var context = termModelHost.HostClientContext; if (IsSharePointOnlineContext(context)) { var term = termModelHost.HostTerm; var currentLabel = FindLabelInTerm(term, definition); if (currentLabel == null) { TryRetryService.TryWithRetry(() => { currentLabel = FindLabelInTerm(term, definition); return(currentLabel != null); }); } if (currentLabel == null) { throw new SPMeta2Exception(string.Format("Cannot find a term label after provision")); } } }
protected Label FindLabelInTerm(Term termSet, TaxonomyTermLabelDefinition labelModel) { var context = termSet.Context; var labels = termSet.Labels; context.Load(labels); context.ExecuteQueryWithTrace(); return(termSet.Labels.ToList().FirstOrDefault(l => l.Value.ToUpper() == labelModel.Name.ToUpper())); }
private void DeployTermLabel(object modelHost, TermModelHost termModelHost, TaxonomyTermLabelDefinition labelModel) { var termStore = termModelHost.HostTermStore; var context = termStore.Context; var term = termModelHost.HostTerm; var currentLabel = FindLabelInTerm(term, labelModel); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = currentLabel, ObjectType = typeof(Label), ObjectDefinition = labelModel, ModelHost = modelHost }); if (currentLabel == null) { TraceService.Verbose((int)LogEventId.ModelProvisionProcessingNewObject, "Processing new Label"); currentLabel = term.CreateLabel(labelModel.Name, labelModel.LCID, labelModel.IsDefault); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = currentLabel, ObjectType = typeof(Label), ObjectDefinition = labelModel, ModelHost = modelHost }); } else { TraceService.Information((int)LogEventId.ModelProvisionProcessingExistingObject, "Processing existing Term"); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = currentLabel, ObjectType = typeof(Label), ObjectDefinition = labelModel, ModelHost = modelHost }); } termStore.CommitAll(); context.ExecuteQueryWithTrace(); }
public static TModelNode AddTaxonomyTermLabel <TModelNode>(this TModelNode model, TaxonomyTermLabelDefinition definition, Action <TaxonomyTermLabelModelNode> action) where TModelNode : ModelNode, ITaxonomyTermModelNode, new() { return(model.AddTypedDefinitionNode(definition, action)); }
public static TModelNode AddTaxonomyTermLabel <TModelNode>(this TModelNode model, TaxonomyTermLabelDefinition definition) where TModelNode : ModelNode, ITaxonomyTermModelNode, new() { return(AddTaxonomyTermLabel(model, definition, null)); }
protected Label FindLabelInTerm(Term termSet, TaxonomyTermLabelDefinition labelModel) { var result = termSet.Labels.FirstOrDefault(l => l.Value.ToUpper() == labelModel.Name.ToUpper()); return(result); }
public static ModelNode AddTaxonomyTermLabel(this ModelNode model, TaxonomyTermLabelDefinition definition, Action <ModelNode> action) { return(model.AddDefinitionNode(definition, action)); }
public static ModelNode AddTaxonomyTermLabel(this ModelNode model, TaxonomyTermLabelDefinition definition) { return(AddTaxonomyTermLabel(model, definition, null)); }