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));
 }
예제 #6
0
        protected Label FindLabelInTerm(Term termSet, TaxonomyTermLabelDefinition labelModel)
        {
            var result = termSet.Labels.FirstOrDefault(l => l.Value.ToUpper() == labelModel.Name.ToUpper());

            return(result);
        }
예제 #7
0
 public static ModelNode AddTaxonomyTermLabel(this ModelNode model, TaxonomyTermLabelDefinition definition, Action <ModelNode> action)
 {
     return(model.AddDefinitionNode(definition, action));
 }
예제 #8
0
 public static ModelNode AddTaxonomyTermLabel(this ModelNode model, TaxonomyTermLabelDefinition definition)
 {
     return(AddTaxonomyTermLabel(model, definition, null));
 }