Пример #1
0
 internal static void LocalizeNavigationNode(this Microsoft.SharePoint.Client.NavigationNode navigationNode, Web web, string token, TokenParser parser, PnPMonitoredScope scope)
 {
     if (CanUseAcceptLanguageHeaderForLocalization(web))
     {
         web.EnsureProperties(w => w.Language, w => w.IsMultilingual, w => w.SupportedUILanguageIds);
         if (web.IsMultilingual)
         {
             var context        = web.Context;
             var resourceValues = parser.GetResourceTokenResourceValues(token);
             foreach (var resourceValue in resourceValues)
             {
                 var translationculture = new CultureInfo(resourceValue.Item1);
                 if (web.SupportedUILanguageIds.Contains(translationculture.LCID))
                 {
                     // Save property with correct locale on the request to make it stick
                     // http://sadomovalex.blogspot.no/2015/09/localize-web-part-titles-via-client.html
                     context.PendingRequest.RequestExecutor.WebRequest.Headers["Accept-Language"] = resourceValue.Item1;
                     navigationNode.Title = resourceValue.Item2;
                     navigationNode.Update();
                     context.ExecuteQueryRetry();
                 }
             }
         }
         else
         {
             scope.LogWarning(CoreResources.Provisioning_Extensions_NavigationLocalization_NoMUI_Skip);
         }
     }
     else
     {
         // warning
         scope.LogWarning(CoreResources.Provisioning_Extensions_NavigationLocalization_Skip);
     }
 }
 internal static void LocalizeNavigationNode(this Microsoft.SharePoint.Client.NavigationNode navigationNode, Web web, string token, TokenParser parser, PnPMonitoredScope scope)
 {
     if (CanUseAcceptLanguageHeaderForLocalization(web))
     {
         web.EnsureProperties(w => w.Language, w => w.IsMultilingual, w => w.SupportedUILanguageIds);
         if (web.IsMultilingual)
         {
             var context        = web.Context;
             var resourceValues = parser.GetResourceTokenResourceValues(token);
             foreach (var resourceValue in resourceValues)
             {
                 var translationculture = new CultureInfo(resourceValue.Item1);
                 if (web.SupportedUILanguageIds.Contains(translationculture.LCID))
                 {
                     navigationNode.TitleResource.SetValueForUICulture(resourceValue.Item1, resourceValue.Item2);
                     navigationNode.Update();
                     context.ExecuteQueryRetry();
                 }
             }
         }
         else
         {
             scope.LogWarning(CoreResources.Provisioning_Extensions_NavigationLocalization_NoMUI_Skip);
         }
     }
     else
     {
         // warning
         scope.LogWarning(CoreResources.Provisioning_Extensions_NavigationLocalization_Skip);
     }
 }
Пример #3
0
        internal static Model.NavigationNode ToDomainModelNavigationNode(this Microsoft.SharePoint.Client.NavigationNode node, Web web)
        {
            var result = new Model.NavigationNode
            {
                Title      = node.Title,
                IsExternal = node.IsExternal,
                Url        = node.Url.Replace(web.ServerRelativeUrl, "{site}"),
            };

            node.Context.Load(node.Children);
            node.Context.ExecuteQueryRetry();

            result.NavigationNodes.AddRange(from n in node.Children.AsEnumerable()
                                            select n.ToDomainModelNavigationNode(web));

            return(result);
        }
Пример #4
0
        internal static Model.NavigationNode ToDomainModelNavigationNode(this Microsoft.SharePoint.Client.NavigationNode node, Web web, bool PersistLanguage, CultureInfo currentCulture, int ParentNodeId = 0)
        {
            string nodeTitle = node.Title;

#if !SP2013
            if (PersistLanguage && !string.IsNullOrWhiteSpace(nodeTitle))
            {
                if (UserResourceExtensions.PersistResourceValue($"NavigationNode_{ParentNodeId}_{node.Id}_Title", currentCulture.LCID, nodeTitle))
                {
                    nodeTitle = $"{{res:NavigationNode_{ParentNodeId}_{node.Id}_Title}}";
                }
            }
#endif
            var result = new Model.NavigationNode
            {
                Title      = nodeTitle,
                IsExternal = node.IsExternal,
                Url        = web.ServerRelativeUrl != "/" ? node.Url.Replace(web.ServerRelativeUrl, "{site}") : $"{{site}}{node.Url}"
            };

            node.Context.Load(node.Children);
#if !SP2013
            var acceptLanguage = node.Context.PendingRequest.RequestExecutor.WebRequest.Headers["Accept-Language"];
            if (PersistLanguage)
            {
                node.Context.PendingRequest.RequestExecutor.WebRequest.Headers["Accept-Language"] = currentCulture.Name;
            }
#endif
            node.Context.ExecuteQueryRetry();

            result.NavigationNodes.AddRange(from n in node.Children.AsEnumerable()
                                            select n.ToDomainModelNavigationNode(web, PersistLanguage, currentCulture, node.Id));

#if !SP2013
            if (PersistLanguage)
            {
                node.Context.PendingRequest.RequestExecutor.WebRequest.Headers["Accept-Language"] = acceptLanguage;
            }
#endif
            return(result);
        }