コード例 #1
0
        private SearchSettingsConfig InternalGetCurrentSearchConfig(SPWeb web, bool isWebLevel)
        {
            SearchSettingsConfig result = null;
            var serializer = new JavaScriptSerializer();

            var propertyBagName = "SRCH_SB_SET_SITE";

            if (isWebLevel)
            {
                propertyBagName = "SRCH_SB_SET_WEB";
            }

            try
            {
                var rawSearchSettings = ConvertUtils.ToStringAndTrim(web.AllProperties[propertyBagName]);
                result = serializer.Deserialize <SearchSettingsConfig>(rawSearchSettings);

                // no setup -> an empty string gives NULL
                // create default one to push the setting
                if (result == null)
                {
                    result = new SearchSettingsConfig();
                }
            }
            catch (Exception)
            {
            }

            return(result);
        }
コード例 #2
0
        private void InternalSetCurrentSearchConfig(SPWeb web,
                                                    SearchSettingsConfig searchSettings, bool isWebLevel)
        {
            var propertyBagName = "SRCH_SB_SET_SITE";

            if (isWebLevel)
            {
                propertyBagName = "SRCH_SB_SET_WEB";
            }

            var serializer = new JavaScriptSerializer();

            web.AllProperties[propertyBagName] = serializer.Serialize(searchSettings);
        }
コード例 #3
0
 protected virtual void SetCurrentSearchConfigAtSiteLevel(CSOMModelHostBase modelHost, Web web, SearchSettingsConfig searchSettings)
 {
     InternalSetCurrentSearchConfig(modelHost, web, searchSettings, false);
 }
コード例 #4
0
        public override void DeployModel(object modelHost, DefinitionBase model)
        {
            var definition = model.WithAssertAndCast <SearchSettingsDefinition>("model", value => value.RequireNotNull());

            SPWeb spObject = null;
            SearchSettingsConfig searchSettings = null;
            var searchCenterUrl = String.Empty;

            if (modelHost is SiteModelHost)
            {
                spObject = (modelHost as SiteModelHost).HostSite.RootWeb;

                searchSettings  = GetCurrentSearchConfigAtSiteLevel(spObject);
                searchCenterUrl = GetSearchCenterUrlAtSiteLevel(spObject);
            }
            else if (modelHost is WebModelHost)
            {
                spObject = (modelHost as WebModelHost).HostWeb;

                searchSettings  = GetCurrentSearchConfigAtWebLevel(spObject);
                searchCenterUrl = GetSearchCenterUrlAtWebLevel(spObject);
            }

            var assert = ServiceFactory.AssertService
                         .NewAssert(definition, spObject)
                         .ShouldNotBeNull(spObject);

            if (!string.IsNullOrEmpty(definition.SearchCenterUrl))
            {
                assert.ShouldBeEqual((p, s, d) =>
                {
                    var srcProp = s.GetExpressionValue(m => m.SearchCenterUrl);
                    var isValid = s.SearchCenterUrl == searchCenterUrl;

                    return(new PropertyValidationResult
                    {
                        Tag = p.Tag,
                        Src = srcProp,
                        Dst = null,
                        IsValid = isValid
                    });
                });
            }
            else
            {
                assert.SkipProperty(m => m.SearchCenterUrl);
            }

            if (!string.IsNullOrEmpty(definition.UseCustomResultsPageUrl))
            {
                assert.ShouldBeEqual((p, s, d) =>
                {
                    var srcProp = s.GetExpressionValue(m => m.UseCustomResultsPageUrl);
                    var isValid = s.UseCustomResultsPageUrl == searchSettings.ResultsPageAddress;

                    return(new PropertyValidationResult
                    {
                        Tag = p.Tag,
                        Src = srcProp,
                        Dst = null,
                        IsValid = isValid
                    });
                });
            }
            else
            {
                assert.SkipProperty(m => m.UseCustomResultsPageUrl);
            }

            if (definition.UseParentResultsPageUrl.HasValue)
            {
                assert.ShouldBeEqual((p, s, d) =>
                {
                    var srcProp = s.GetExpressionValue(m => m.UseParentResultsPageUrl);
                    var isValid = s.UseParentResultsPageUrl.Value == searchSettings.Inherit;

                    return(new PropertyValidationResult
                    {
                        Tag = p.Tag,
                        Src = srcProp,
                        Dst = null,
                        IsValid = isValid
                    });
                });
            }
            else
            {
                assert.SkipProperty(m => m.UseParentResultsPageUrl, "UseParentResultsPageUrl is null");
            }

            if (definition.UseFirstSearchNavigationNode.HasValue)
            {
            }
            else
            {
                assert.SkipProperty(m => m.UseFirstSearchNavigationNode, "UseFirstSearchNavigationNode is null");
            }
        }
コード例 #5
0
 protected virtual void SetCurrentSearchConfigAtSiteLevel(Web web, SearchSettingsConfig searchSettings)
 {
     InternalSetCurrentSearchConfig(web, searchSettings, false);
 }
コード例 #6
0
 protected virtual void SetCurrentSearchConfigAtWebLevel(SPWeb web, SearchSettingsConfig searchSettings)
 {
     InternalSetCurrentSearchConfig(web, searchSettings, true);
 }