Ejemplo n.º 1
0
        protected int?GetCurrentNavigationIncludeTypes(WebNavigationSettingsDefinition navigationModel)
        {
            int?globalNavigationIncludeTypes = null;

            if (navigationModel.GlobalNavigationShowPages == false &&
                navigationModel.GlobalNavigationShowSubsites == false)
            {
                globalNavigationIncludeTypes = 0;
            }
            else if (navigationModel.GlobalNavigationShowPages == true &&
                     navigationModel.GlobalNavigationShowSubsites == true)
            {
                globalNavigationIncludeTypes = 3;
            }
            else if (navigationModel.GlobalNavigationShowPages == true)
            {
                globalNavigationIncludeTypes = 2;
            }
            else if (navigationModel.GlobalNavigationShowSubsites == true)
            {
                globalNavigationIncludeTypes = 1;
            }

            return(globalNavigationIncludeTypes);
        }
        protected int?GetCurrentNavigationIncludeTypes(WebNavigationSettingsDefinition navigationModel,
                                                       int?navigationIncludeTypes)
        {
            if (navigationModel.CurrentNavigationShowPages.HasValue ||
                navigationModel.CurrentNavigationShowSubsites.HasValue)
            {
                if (!navigationIncludeTypes.HasValue)
                {
                    navigationIncludeTypes = 2;
                }
            }

            if (navigationModel.CurrentNavigationShowPages.HasValue)
            {
                if (navigationModel.CurrentNavigationShowPages.Value)
                {
                    navigationIncludeTypes |= 2;
                }
                else
                {
                    navigationIncludeTypes &= ~2;
                }
            }

            if (navigationModel.CurrentNavigationShowSubsites.HasValue)
            {
                if (navigationModel.CurrentNavigationShowSubsites.Value)
                {
                    navigationIncludeTypes |= 1;
                }
                else
                {
                    navigationIncludeTypes &= ~1;
                }
            }

            //if (navigationModel.CurrentNavigationShowPages == false
            //    && navigationModel.CurrentNavigationShowSubsites == false)__GlobalNavigationIncludeTypes
            //    currentNavigationIncludeTypes = 0;
            //else if (navigationModel.CurrentNavigationShowPages == true
            //    && navigationModel.CurrentNavigationShowSubsites == true)
            //    currentNavigationIncludeTypes = 3;
            //else if (navigationModel.CurrentNavigationShowPages == true)
            //    currentNavigationIncludeTypes = 2;
            //else if (navigationModel.CurrentNavigationShowSubsites == true)
            //    currentNavigationIncludeTypes = 1;

            return(navigationIncludeTypes);
        }
        public void CanDeploy_WebNavigationSettings_As_ShowGlobalNavigation()
        {
            var siteModel = SPMeta2Model.NewSiteModel(site =>
            {
                site.AddSiteFeature(BuiltInSiteFeatures.SharePointServerPublishingInfrastructure.Inherit(def =>
                {
                    def.Enable = true;
                }));
            });

            var navigationDef = new WebNavigationSettingsDefinition()
            {
                GlobalNavigationSource = BuiltInStandardNavigationSources.PortalProvider,

                GlobalNavigationShowSubsites = true,
                GlobalNavigationShowPages    = true,
            };

            var sunWebNavigationDef = navigationDef.Inherit();

            var webModel = SPMeta2Model.NewWebModel(web =>
            {
                web.AddWebFeature(BuiltInWebFeatures.SharePointServerPublishing.Inherit(def =>
                {
                    def.Enable = true;
                }));

                web.AddWebNavigationSettings(navigationDef);

                web.AddRandomWeb(subWeb =>
                {
                    subWeb.AddWebFeature(BuiltInWebFeatures.SharePointServerPublishing.Inherit(def =>
                    {
                        def.Enable = true;
                    }));

                    subWeb.AddWebNavigationSettings(sunWebNavigationDef);
                });
            });

            TestModel(siteModel, webModel);
        }
Ejemplo n.º 4
0
        protected int?GetCurrentNavigationIncludeTypes(
            WebNavigationSettingsDefinition navigationModel,
            int?navigationIncludeTypes)
        {
            if (navigationModel.CurrentNavigationShowPages.HasValue ||
                navigationModel.CurrentNavigationShowSubsites.HasValue)
            {
                if (!navigationIncludeTypes.HasValue)
                {
                    navigationIncludeTypes = 2;
                }
            }

            if (navigationModel.CurrentNavigationShowPages.HasValue)
            {
                if (navigationModel.CurrentNavigationShowPages.Value)
                {
                    navigationIncludeTypes |= 2;
                }
                else
                {
                    navigationIncludeTypes &= ~2;
                }
            }

            if (navigationModel.CurrentNavigationShowSubsites.HasValue)
            {
                if (navigationModel.CurrentNavigationShowSubsites.Value)
                {
                    navigationIncludeTypes |= 1;
                }
                else
                {
                    navigationIncludeTypes &= ~1;
                }
            }

            return(navigationIncludeTypes);
        }
Ejemplo n.º 5
0
        private void DeployNavigationSettings(object modelHost, WebModelHost webModelHost, WebNavigationSettingsDefinition navigationModel)
        {
            var shouldUpdateWeb = false;

            var site = webModelHost.HostSite;
            var web  = webModelHost.HostWeb;

            var context = web.Context;

            var thisWebNavSettings = GetWebNavigationSettings(webModelHost, navigationModel);

            StandardNavigationSource?globalSource  = null;
            StandardNavigationSource?currentSource = null;

            if (!string.IsNullOrEmpty(navigationModel.GlobalNavigationSource))
            {
                globalSource = (StandardNavigationSource)Enum.Parse(typeof(StandardNavigationSource), navigationModel.GlobalNavigationSource);
            }

            if (!string.IsNullOrEmpty(navigationModel.CurrentNavigationSource))
            {
                currentSource = (StandardNavigationSource)Enum.Parse(typeof(StandardNavigationSource), navigationModel.CurrentNavigationSource);
            }

            TermStore currentTermStore = null;
            TermSet   currentTermSet   = null;

            if (currentSource == StandardNavigationSource.TaxonomyProvider)
            {
                currentTermStore = TaxonomyTermStoreModelHandler.FindTermStore(site,
                                                                               navigationModel.CurrentNavigationTermStoreName,
                                                                               navigationModel.CurrentNavigationTermStoreId,
                                                                               navigationModel.CurrentNavigationUseDefaultSiteCollectionTermStore);

                currentTermSet = TaxonomyFieldModelHandler.LookupTermSet(currentTermStore.Context,
                                                                         currentTermStore,
                                                                         site,
                                                                         null,
                                                                         null,
                                                                         null,
                                                                         navigationModel.CurrentNavigationTermSetName,
                                                                         navigationModel.CurrentNavigationTermSetId,
                                                                         navigationModel.CurrentNavigationTermSetLCID);
            }

            TermStore globalTermStore = null;
            TermSet   globalTermSet   = null;

            if (globalSource == StandardNavigationSource.TaxonomyProvider)
            {
                globalTermStore = TaxonomyTermStoreModelHandler.FindTermStore(site,
                                                                              navigationModel.GlobalNavigationTermStoreName,
                                                                              navigationModel.GlobalNavigationTermStoreId,
                                                                              navigationModel.GlobalNavigationUseDefaultSiteCollectionTermStore);

                globalTermSet = TaxonomyFieldModelHandler.LookupTermSet(site.Context,
                                                                        globalTermStore,
                                                                        site,
                                                                        null,
                                                                        null,
                                                                        null,
                                                                        navigationModel.GlobalNavigationTermSetName,
                                                                        navigationModel.GlobalNavigationTermSetId,
                                                                        navigationModel.GlobalNavigationTermSetLCID);
            }

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model            = null,
                EventType        = ModelEventType.OnProvisioning,
                Object           = thisWebNavSettings,
                ObjectType       = typeof(WebNavigationSettings),
                ObjectDefinition = navigationModel,
                ModelHost        = modelHost
            });

            if (!string.IsNullOrEmpty(navigationModel.GlobalNavigationSource) ||
                !string.IsNullOrEmpty(navigationModel.CurrentNavigationSource))
            {
                if (globalSource.HasValue)
                {
                    TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Setting GlobalNavigation to: [{0}]", navigationModel.GlobalNavigationSource);

                    thisWebNavSettings.GlobalNavigation.Source = globalSource.Value;

                    if (globalTermStore != null)
                    {
                        thisWebNavSettings.GlobalNavigation.TermStoreId = globalTermStore.Id;
                        thisWebNavSettings.GlobalNavigation.TermSetId   = globalTermSet.Id;
                    }
                    else
                    {
                        int?globalNavigationIncludeTypes = GetGlobalNavigationIncludeTypes(navigationModel);

                        if (globalNavigationIncludeTypes != null)
                        {
                            TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Setting GlobalNavigationIncludeTypes to: [{0}]", globalNavigationIncludeTypes);
                            web.AllProperties[BuiltInWebPropertyId.GlobalNavigationIncludeTypes] = globalNavigationIncludeTypes;

                            shouldUpdateWeb = true;
                        }

                        if (navigationModel.GlobalNavigationMaximumNumberOfDynamicItems.HasValue)
                        {
                            TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Setting GlobalDynamicChildLimit to: [{0}]", navigationModel.GlobalNavigationMaximumNumberOfDynamicItems.Value);
                            web.AllProperties[BuiltInWebPropertyId.GlobalDynamicChildLimit] = navigationModel.GlobalNavigationMaximumNumberOfDynamicItems.Value;

                            shouldUpdateWeb = true;
                        }
                    }
                }

                if (currentSource.HasValue)
                {
                    TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall,
                                               "Setting CurrentNavigation to: [{0}]", navigationModel.CurrentNavigationSource);

                    thisWebNavSettings.CurrentNavigation.Source = currentSource.Value;

                    if (currentTermStore != null)
                    {
                        thisWebNavSettings.CurrentNavigation.TermStoreId = currentTermStore.Id;
                        thisWebNavSettings.CurrentNavigation.TermSetId   = currentTermSet.Id;
                    }
                    else
                    {
                        int?currentNavigationIncludeTypes = GetCurrentNavigationIncludeTypes(navigationModel);

                        if (currentNavigationIncludeTypes != null)
                        {
                            TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Setting CurrentNavigationIncludeTypes to: [{0}]", currentNavigationIncludeTypes);
                            web.AllProperties[BuiltInWebPropertyId.CurrentNavigationIncludeTypes] = currentNavigationIncludeTypes;

                            shouldUpdateWeb = true;
                        }

                        if (navigationModel.CurrentNavigationMaximumNumberOfDynamicItems.HasValue)
                        {
                            TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Setting CurrentDynamicChildLimit to: [{0}]", navigationModel.CurrentNavigationMaximumNumberOfDynamicItems.Value);
                            web.AllProperties[BuiltInWebPropertyId.CurrentDynamicChildLimit] = navigationModel.CurrentNavigationMaximumNumberOfDynamicItems.Value;

                            shouldUpdateWeb = true;
                        }
                    }
                }
            }

            if (navigationModel.DisplayShowHideRibbonAction.HasValue)
            {
                web.AllProperties["__DisplayShowHideRibbonActionId"] = navigationModel.DisplayShowHideRibbonAction.ToString();
                shouldUpdateWeb = true;
            }

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model            = null,
                EventType        = ModelEventType.OnProvisioned,
                Object           = thisWebNavSettings,
                ObjectType       = typeof(WebNavigationSettings),
                ObjectDefinition = navigationModel,
                ModelHost        = modelHost
            });

            if (!string.IsNullOrEmpty(navigationModel.GlobalNavigationSource) ||
                !string.IsNullOrEmpty(navigationModel.CurrentNavigationSource))
            {
                TraceService.Verbose((int)LogEventId.ModelProvisionCoreCall, "Updating navigation settings");

                thisWebNavSettings.Update(null);
                context.ExecuteQueryWithTrace();
            }

            // update include types

            if (shouldUpdateWeb)
            {
                TraceService.Verbose((int)LogEventId.ModelProvisionCoreCall, "Updating web");
                web.Update();
                context.ExecuteQueryWithTrace();
            }
        }
Ejemplo n.º 6
0
        protected WebNavigationSettings GetWebNavigationSettings(WebModelHost webModelHost, WebNavigationSettingsDefinition navigationModel)
        {
            var web = webModelHost.HostWeb;

            var context            = web.Context;
            var thisWebNavSettings = new WebNavigationSettings(context, web);

            context.Load(thisWebNavSettings);
            context.ExecuteQueryWithTrace();

            return(thisWebNavSettings);
        }
        private void DeployNavigationSettings(object modelHost, WebModelHost webModelHost, WebNavigationSettingsDefinition navigationModel)
        {
            var site = webModelHost.HostWeb.Site;
            var web  = webModelHost.HostWeb;
            var thisWebNavSettings = GetWebNavigationSettings(webModelHost, navigationModel);

            var shouldUpdateWeb = false;
            var allProperties   = web.AllProperties;

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model            = null,
                EventType        = ModelEventType.OnProvisioning,
                Object           = thisWebNavSettings,
                ObjectType       = typeof(WebNavigationSettings),
                ObjectDefinition = navigationModel,
                ModelHost        = modelHost
            });

            if (!string.IsNullOrEmpty(navigationModel.GlobalNavigationSource) ||
                !string.IsNullOrEmpty(navigationModel.CurrentNavigationSource))
            {
                if (!string.IsNullOrEmpty(navigationModel.GlobalNavigationSource))
                {
                    var globalSource = (StandardNavigationSource)Enum.Parse(typeof(StandardNavigationSource), navigationModel.GlobalNavigationSource);

                    thisWebNavSettings.GlobalNavigation.Source = globalSource;

                    if (globalSource == StandardNavigationSource.TaxonomyProvider)
                    {
                        var globalTermStore = TaxonomyTermStoreModelHandler.FindTermStore(site,
                                                                                          navigationModel.GlobalNavigationTermStoreName,
                                                                                          navigationModel.GlobalNavigationTermStoreId,
                                                                                          navigationModel.GlobalNavigationUseDefaultSiteCollectionTermStore);

                        var globalTermSet = TaxonomyFieldModelHandler.LookupTermSet(globalTermStore,
                                                                                    null, null, null, null,
                                                                                    navigationModel.GlobalNavigationTermSetName,
                                                                                    navigationModel.GlobalNavigationTermSetId,
                                                                                    navigationModel.GlobalNavigationTermSetLCID);

                        thisWebNavSettings.GlobalNavigation.TermStoreId = globalTermStore.Id;
                        thisWebNavSettings.GlobalNavigation.TermSetId   = globalTermSet.Id;
                    }
                    else
                    {
                        int?globalNavigationIncludeTypes = GetGlobalNavigationIncludeTypes(navigationModel,
                                                                                           ConvertUtils.ToInt(allProperties[BuiltInWebPropertyId.GlobalNavigationIncludeTypes]));

                        if (globalNavigationIncludeTypes != null)
                        {
                            allProperties[BuiltInWebPropertyId.GlobalNavigationIncludeTypes] = globalNavigationIncludeTypes.Value;
                            shouldUpdateWeb = true;
                        }

                        if (navigationModel.GlobalNavigationMaximumNumberOfDynamicItems.HasValue)
                        {
                            allProperties[BuiltInWebPropertyId.GlobalDynamicChildLimit] = navigationModel.GlobalNavigationMaximumNumberOfDynamicItems.Value;
                            shouldUpdateWeb = true;
                        }
                    }
                }

                if (!string.IsNullOrEmpty(navigationModel.CurrentNavigationSource))
                {
                    var currentSource = (StandardNavigationSource)Enum.Parse(typeof(StandardNavigationSource), navigationModel.CurrentNavigationSource);

                    thisWebNavSettings.CurrentNavigation.Source = currentSource;

                    if (currentSource == StandardNavigationSource.TaxonomyProvider)
                    {
                        var currentTermStore = TaxonomyTermStoreModelHandler.FindTermStore(site,
                                                                                           navigationModel.CurrentNavigationTermStoreName,
                                                                                           navigationModel.CurrentNavigationTermStoreId,
                                                                                           navigationModel.CurrentNavigationUseDefaultSiteCollectionTermStore);

                        var currentTermSet = TaxonomyFieldModelHandler.LookupTermSet(currentTermStore,
                                                                                     null, null, null, null,
                                                                                     navigationModel.CurrentNavigationTermSetName,
                                                                                     navigationModel.CurrentNavigationTermSetId,
                                                                                     navigationModel.CurrentNavigationTermSetLCID);

                        thisWebNavSettings.CurrentNavigation.TermStoreId = currentTermStore.Id;
                        thisWebNavSettings.CurrentNavigation.TermSetId   = currentTermSet.Id;
                    }
                    else
                    {
                        int?currentNavigationIncludeTypes = GetCurrentNavigationIncludeTypes(navigationModel,
                                                                                             ConvertUtils.ToInt(allProperties[BuiltInWebPropertyId.CurrentNavigationIncludeTypes]));

                        if (currentNavigationIncludeTypes != null)
                        {
                            allProperties[BuiltInWebPropertyId.CurrentNavigationIncludeTypes] = currentNavigationIncludeTypes.Value;
                            shouldUpdateWeb = true;
                        }

                        if (navigationModel.CurrentNavigationMaximumNumberOfDynamicItems.HasValue)
                        {
                            allProperties[BuiltInWebPropertyId.CurrentDynamicChildLimit] = navigationModel.CurrentNavigationMaximumNumberOfDynamicItems.Value;
                            shouldUpdateWeb = true;
                        }
                    }
                }
            }

            if (navigationModel.AddNewPagesToNavigation.HasValue)
            {
                thisWebNavSettings.AddNewPagesToNavigation = navigationModel.AddNewPagesToNavigation.Value;
            }

            if (navigationModel.CreateFriendlyUrlsForNewPages.HasValue)
            {
                thisWebNavSettings.CreateFriendlyUrlsForNewPages = navigationModel.CreateFriendlyUrlsForNewPages.Value;
            }

            if (navigationModel.DisplayShowHideRibbonAction.HasValue)
            {
                allProperties[BuiltInWebPropertyId.DisplayShowHideRibbonActionId] = navigationModel.DisplayShowHideRibbonAction.ToString();
                shouldUpdateWeb = true;
            }

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model            = null,
                EventType        = ModelEventType.OnProvisioned,
                Object           = thisWebNavSettings,
                ObjectType       = typeof(WebNavigationSettings),
                ObjectDefinition = navigationModel,
                ModelHost        = modelHost
            });

            if (shouldUpdateWeb)
            {
                web.Update();
            }

            if (!string.IsNullOrEmpty(navigationModel.GlobalNavigationSource) ||
                !string.IsNullOrEmpty(navigationModel.CurrentNavigationSource))
            {
                thisWebNavSettings.Update(null);
            }
        }
        protected WebNavigationSettings GetWebNavigationSettings(WebModelHost webModelHost, WebNavigationSettingsDefinition navigationModel)
        {
            var web = webModelHost.HostWeb;
            var thisWebNavSettings = new WebNavigationSettings(web);

            return(thisWebNavSettings);
        }
Ejemplo n.º 9
0
 public static ModelNode AddWebNavigationSettings(this ModelNode model, WebNavigationSettingsDefinition definition, Action <ModelNode> action)
 {
     return(model.AddDefinitionNode(definition, action));
 }
Ejemplo n.º 10
0
 public static ModelNode AddWebNavigationSettings(this ModelNode model, WebNavigationSettingsDefinition definition)
 {
     return(AddWebNavigationSettings(model, definition, null));
 }
 public static TModelNode AddWebNavigationSettings <TModelNode>(this TModelNode model, WebNavigationSettingsDefinition definition,
                                                                Action <WebNavigationSettingsModelNode> action)
     where TModelNode : ModelNode, IWebModelNode, new()
 {
     return(model.AddTypedDefinitionNode(definition, action));
 }
 public static TModelNode AddWebNavigationSettings <TModelNode>(this TModelNode model, WebNavigationSettingsDefinition definition)
     where TModelNode : ModelNode, IWebModelNode, new()
 {
     return(AddWebNavigationSettings(model, definition, null));
 }
        private void DeployNavigationSettings(object modelHost, WebModelHost webModelHost, WebNavigationSettingsDefinition navigationModel)
        {
            var web = webModelHost.HostWeb;
            var thisWebNavSettings = GetWebNavigationSettings(webModelHost, navigationModel);

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model            = null,
                EventType        = ModelEventType.OnProvisioning,
                Object           = thisWebNavSettings,
                ObjectType       = typeof(WebNavigationSettings),
                ObjectDefinition = navigationModel,
                ModelHost        = modelHost
            });



            if (!string.IsNullOrEmpty(navigationModel.GlobalNavigationSource) ||
                !string.IsNullOrEmpty(navigationModel.CurrentNavigationSource))
            {
                if (!string.IsNullOrEmpty(navigationModel.GlobalNavigationSource))
                {
                    thisWebNavSettings.GlobalNavigation.Source = (StandardNavigationSource)Enum.Parse(typeof(StandardNavigationSource), navigationModel.GlobalNavigationSource);
                }

                if (!string.IsNullOrEmpty(navigationModel.CurrentNavigationSource))
                {
                    thisWebNavSettings.CurrentNavigation.Source = (StandardNavigationSource)Enum.Parse(typeof(StandardNavigationSource), navigationModel.CurrentNavigationSource);
                }
            }

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model            = null,
                EventType        = ModelEventType.OnProvisioned,
                Object           = thisWebNavSettings,
                ObjectType       = typeof(WebNavigationSettings),
                ObjectDefinition = navigationModel,
                ModelHost        = modelHost
            });

            if (!string.IsNullOrEmpty(navigationModel.GlobalNavigationSource) ||
                !string.IsNullOrEmpty(navigationModel.CurrentNavigationSource))
            {
                thisWebNavSettings.Update(null);
            }

            // update include types
            int?currentNavigationIncludeTypes = null;

            if (navigationModel.CurrentNavigationShowPages == false &&
                navigationModel.CurrentNavigationShowSubsites == false)
            {
                currentNavigationIncludeTypes = 0;
            }
            else if (navigationModel.CurrentNavigationShowPages == true &&
                     navigationModel.CurrentNavigationShowSubsites == true)
            {
                currentNavigationIncludeTypes = 3;
            }
            else if (navigationModel.CurrentNavigationShowPages == true)
            {
                currentNavigationIncludeTypes = 2;
            }
            else if (navigationModel.CurrentNavigationShowSubsites == true)
            {
                currentNavigationIncludeTypes = 1;
            }

            if (currentNavigationIncludeTypes != null)
            {
                web.AllProperties[BuiltInWebPropertyId.CurrentNavigationIncludeTypes] = currentNavigationIncludeTypes;
            }

            int?globalNavigationIncludeTypes = null;

            if (navigationModel.GlobalNavigationShowPages == false &&
                navigationModel.GlobalNavigationShowSubsites == false)
            {
                globalNavigationIncludeTypes = 0;
            }
            else if (navigationModel.GlobalNavigationShowPages == true &&
                     navigationModel.GlobalNavigationShowSubsites == true)
            {
                globalNavigationIncludeTypes = 3;
            }
            else if (navigationModel.GlobalNavigationShowPages == true)
            {
                globalNavigationIncludeTypes = 2;
            }
            else if (navigationModel.GlobalNavigationShowSubsites == true)
            {
                globalNavigationIncludeTypes = 1;
            }

            if (globalNavigationIncludeTypes != null)
            {
                web.AllProperties[BuiltInWebPropertyId.GlobalNavigationIncludeTypes] = globalNavigationIncludeTypes;
            }

            if (navigationModel.CurrentNavigationMaximumNumberOfDynamicItems.HasValue)
            {
                web.AllProperties[BuiltInWebPropertyId.CurrentDynamicChildLimit] = navigationModel.CurrentNavigationMaximumNumberOfDynamicItems.Value;
            }

            if (navigationModel.GlobalNavigationMaximumNumberOfDynamicItems.HasValue)
            {
                web.AllProperties[BuiltInWebPropertyId.GlobalDynamicChildLimit] = navigationModel.GlobalNavigationMaximumNumberOfDynamicItems.Value;
            }

            if (currentNavigationIncludeTypes != null ||
                globalNavigationIncludeTypes != null ||
                navigationModel.CurrentNavigationMaximumNumberOfDynamicItems.HasValue ||
                navigationModel.GlobalNavigationMaximumNumberOfDynamicItems.HasValue)
            {
                web.Update();
            }
        }
Ejemplo n.º 14
0
        private void DeployNavigationSettings(object modelHost, WebModelHost webModelHost, WebNavigationSettingsDefinition navigationModel)
        {
            var web     = webModelHost.HostWeb;
            var context = web.Context;

            var thisWebNavSettings = GetWebNavigationSettings(webModelHost, navigationModel);

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model            = null,
                EventType        = ModelEventType.OnProvisioning,
                Object           = thisWebNavSettings,
                ObjectType       = typeof(WebNavigationSettings),
                ObjectDefinition = navigationModel,
                ModelHost        = modelHost
            });

            if (!string.IsNullOrEmpty(navigationModel.GlobalNavigationSource) ||
                !string.IsNullOrEmpty(navigationModel.CurrentNavigationSource))
            {
                if (!string.IsNullOrEmpty(navigationModel.GlobalNavigationSource))
                {
                    TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Setting GlobalNavigation to: [{0}]", navigationModel.GlobalNavigationSource);
                    thisWebNavSettings.GlobalNavigation.Source = (StandardNavigationSource)Enum.Parse(typeof(StandardNavigationSource), navigationModel.GlobalNavigationSource);
                }

                if (!string.IsNullOrEmpty(navigationModel.CurrentNavigationSource))
                {
                    TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Setting CurrentNavigation to: [{0}]", navigationModel.CurrentNavigationSource);
                    thisWebNavSettings.CurrentNavigation.Source = (StandardNavigationSource)Enum.Parse(typeof(StandardNavigationSource), navigationModel.CurrentNavigationSource);
                }
            }

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model            = null,
                EventType        = ModelEventType.OnProvisioned,
                Object           = thisWebNavSettings,
                ObjectType       = typeof(WebNavigationSettings),
                ObjectDefinition = navigationModel,
                ModelHost        = modelHost
            });

            if (!string.IsNullOrEmpty(navigationModel.GlobalNavigationSource) ||
                !string.IsNullOrEmpty(navigationModel.CurrentNavigationSource))
            {
                TraceService.Verbose((int)LogEventId.ModelProvisionCoreCall, "Updating navigation settings");

                thisWebNavSettings.Update(null);
                context.ExecuteQueryWithTrace();
            }

            // update include types
            int?currentNavigationIncludeTypes = null;

            if (navigationModel.CurrentNavigationShowPages == false &&
                navigationModel.CurrentNavigationShowSubsites == false)
            {
                currentNavigationIncludeTypes = 0;
            }
            else if (navigationModel.CurrentNavigationShowPages == true &&
                     navigationModel.CurrentNavigationShowSubsites == true)
            {
                currentNavigationIncludeTypes = 3;
            }
            else if (navigationModel.CurrentNavigationShowPages == true)
            {
                currentNavigationIncludeTypes = 2;
            }
            else if (navigationModel.CurrentNavigationShowSubsites == true)
            {
                currentNavigationIncludeTypes = 1;
            }

            if (currentNavigationIncludeTypes != null)
            {
                TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Setting CurrentNavigationIncludeTypes to: [{0}]", currentNavigationIncludeTypes);

                web.AllProperties[BuiltInWebPropertyId.CurrentNavigationIncludeTypes] = currentNavigationIncludeTypes;
            }

            int?globalNavigationIncludeTypes = null;

            if (navigationModel.GlobalNavigationShowPages == false &&
                navigationModel.GlobalNavigationShowSubsites == false)
            {
                globalNavigationIncludeTypes = 0;
            }
            else if (navigationModel.GlobalNavigationShowPages == true &&
                     navigationModel.GlobalNavigationShowSubsites == true)
            {
                globalNavigationIncludeTypes = 3;
            }
            else if (navigationModel.GlobalNavigationShowPages == true)
            {
                globalNavigationIncludeTypes = 2;
            }
            else if (navigationModel.GlobalNavigationShowSubsites == true)
            {
                globalNavigationIncludeTypes = 1;
            }

            if (globalNavigationIncludeTypes != null)
            {
                TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Setting GlobalNavigationIncludeTypes to: [{0}]", globalNavigationIncludeTypes);
                web.AllProperties[BuiltInWebPropertyId.GlobalNavigationIncludeTypes] = globalNavigationIncludeTypes;
            }

            if (navigationModel.CurrentNavigationMaximumNumberOfDynamicItems.HasValue)
            {
                TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Setting CurrentDynamicChildLimit to: [{0}]", navigationModel.CurrentNavigationMaximumNumberOfDynamicItems.Value);
                web.AllProperties[BuiltInWebPropertyId.CurrentDynamicChildLimit] = navigationModel.CurrentNavigationMaximumNumberOfDynamicItems.Value;
            }

            if (navigationModel.GlobalNavigationMaximumNumberOfDynamicItems.HasValue)
            {
                TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Setting GlobalDynamicChildLimit to: [{0}]", navigationModel.GlobalNavigationMaximumNumberOfDynamicItems.Value);
                web.AllProperties[BuiltInWebPropertyId.GlobalDynamicChildLimit] = navigationModel.GlobalNavigationMaximumNumberOfDynamicItems.Value;
            }

            if (currentNavigationIncludeTypes != null ||
                globalNavigationIncludeTypes != null ||
                navigationModel.CurrentNavigationMaximumNumberOfDynamicItems.HasValue ||
                navigationModel.GlobalNavigationMaximumNumberOfDynamicItems.HasValue)
            {
                TraceService.Verbose((int)LogEventId.ModelProvisionCoreCall, "Updating web");
                web.Update();
                context.ExecuteQueryWithTrace();
            }
        }