예제 #1
0
        /// <summary>
        /// Sets a single sitemap item.
        /// </summary>
        /// <param name="objQuestion"></param>
        /// <param name="ps"></param>
        /// <returns></returns>
        private static SitemapUrl GetQuestionUrl(AlbumInfo objQuestion, PortalSettings ps)
        {
            var pageUrl = new SitemapUrl
                            {
                                Url = Links.ViewQuestion(objQuestion.AlbumID, objQuestion.TabID, ps),
                                Priority = (float) 0.5,
                                LastModified = objQuestion.LastModifiedOnDate,
                                ChangeFrequency = SitemapChangeFrequency.Daily
                            };

            return pageUrl;
        }
예제 #2
0
        public override List<SitemapUrl> GetUrls(int portalId, DotNetNuke.Entities.Portals.PortalSettings ps, string version)
        {
            var listOfUrls = new List<SitemapUrl>();

            foreach (var a in Article.GetAllArticlesList(portalId))
            {

                var pageUrl = new SitemapUrl
                                  {
                                      Url = Utility.GetItemLinkUrl(a.ItemId, portalId),
                                      Priority = (float)0.5,
                                      LastModified = Convert.ToDateTime(a.LastUpdated),
                                      ChangeFrequency = SitemapChangeFrequency.Daily
                                  };
                listOfUrls.Add(pageUrl);

            }
            return listOfUrls;
        }
예제 #3
0
        public override List<SitemapUrl> GetUrls(int portalId, PortalSettings ps, string version)
        {
            var listOfUrls = new List<SitemapUrl>();

            foreach(Article ai in ArticleController.GetAllArticles(portalId))
            {

            var pageUrl = new SitemapUrl
                          {
                              Url =
                                  ArticleController.GetArticleLink(ai.TabID,ai.ArticleId),
                              Priority = (float) 0.5,
                              LastModified = ai.LastModifiedOnDate,
                              ChangeFrequency = SitemapChangeFrequency.Daily
                        };
            listOfUrls.Add(pageUrl);

            }
            return listOfUrls;
        }
예제 #4
0
        /// <summary>
        ///   Return the sitemap url node for the page
        /// </summary>
        /// <param name = "objTab">The page being indexed</param>
        /// <param name="language">Culture code to use in the URL</param>
        /// <returns>A SitemapUrl object for the current page</returns>
        /// <remarks>
        /// </remarks>
        private SitemapUrl GetPageUrl(TabInfo objTab, string language)
        {
            var pageUrl = new SitemapUrl();

            pageUrl.Url = Globals.NavigateURL(objTab.TabID, objTab.IsSuperTab, ps, "", language);

            string portalAlias = !String.IsNullOrEmpty(ps.DefaultPortalAlias)
                                ? ps.DefaultPortalAlias
                                : ps.PortalAlias.HTTPAlias;

            if (pageUrl.Url.ToLower().IndexOf(portalAlias.ToLower(), StringComparison.Ordinal) == -1)
            {
                // code to fix a bug in dnn5.1.2 for navigateurl
                if ((HttpContext.Current != null))
                {
                    pageUrl.Url = Globals.AddHTTP(HttpContext.Current.Request.Url.Host + pageUrl.Url);
                }
                else
                {
                    // try to use the portalalias
                    pageUrl.Url = Globals.AddHTTP(portalAlias.ToLower()) + pageUrl.Url;
                }
            }

            pageUrl.Priority     = GetPriority(objTab);
            pageUrl.LastModified = objTab.LastModifiedOnDate;
            var modCtrl = new ModuleController();

            foreach (ModuleInfo m in modCtrl.GetTabModules(objTab.TabID).Values)
            {
                if (m.LastModifiedOnDate > objTab.LastModifiedOnDate)
                {
                    pageUrl.LastModified = m.LastModifiedOnDate;
                }
            }
            pageUrl.ChangeFrequency = SitemapChangeFrequency.Daily;

            return(pageUrl);
        }
예제 #5
0
        /// <summary>
        ///   Return the sitemap url node for the page
        /// </summary>
        /// <param name = "objTab">The page being indexed</param>
        /// <param name="language">Culture code to use in the URL</param>
        /// <returns>A SitemapUrl object for the current page</returns>
        /// <remarks>
        /// </remarks>
        private SitemapUrl GetPageUrl(TabInfo objTab, string language)
        {
            var pageUrl = new SitemapUrl();
            pageUrl.Url = TestableGlobals.Instance.NavigateURL(objTab.TabID, objTab.IsSuperTab, ps, "", language);
            pageUrl.Priority = GetPriority(objTab);
            pageUrl.LastModified = objTab.LastModifiedOnDate;
            foreach (ModuleInfo m in ModuleController.Instance.GetTabModules(objTab.TabID).Values)
            {
                if (m.LastModifiedOnDate > objTab.LastModifiedOnDate)
                {
                    pageUrl.LastModified = m.LastModifiedOnDate;
                }
            }
            pageUrl.ChangeFrequency = SitemapChangeFrequency.Daily;

            // support for alternate pages: https://support.google.com/webmasters/answer/2620865?hl=en
            if (ps.ContentLocalizationEnabled && !objTab.IsNeutralCulture)
            {
                List<AlternateUrl> alternates = new List<AlternateUrl>();
                TabInfo currentTab = objTab;

                if (!objTab.IsDefaultLanguage)
                    currentTab = objTab.DefaultLanguageTab;

                foreach (TabInfo localized in currentTab.LocalizedTabs.Values)
                {
                    if ((!localized.IsDeleted && !localized.DisableLink && localized.TabType == TabType.Normal) &&
                        (Null.IsNull(localized.StartDate) || localized.StartDate < DateTime.Now) &&
                        (Null.IsNull(localized.EndDate) || localized.EndDate > DateTime.Now) &&
                        (IsTabPublic(localized.TabPermissions)) &&
                        (includeHiddenPages || localized.IsVisible) && localized.HasBeenPublished)
                    {
                        string alternateUrl = TestableGlobals.Instance.NavigateURL(localized.TabID, localized.IsSuperTab, ps, "", localized.CultureCode);
                        alternates.Add(new AlternateUrl() 
                        { 
                            Url = alternateUrl, 
                            Language = localized.CultureCode 
                        });
                    }
                }

                if (alternates.Count > 0)
                {
                    // add default language to the list
                    string alternateUrl = TestableGlobals.Instance.NavigateURL(currentTab.TabID, currentTab.IsSuperTab, ps, "", currentTab.CultureCode);
                    alternates.Add(new AlternateUrl()
                    {
                        Url = alternateUrl,
                        Language = currentTab.CultureCode
                    });
                    
                    pageUrl.AlternateUrls = alternates;
                }
            }

            return pageUrl;
        }
        /// <summary>
        ///   Return the sitemap url node for the page
        /// </summary>
        /// <param name = "objTab">The page being indexed</param>
        /// <param name="language">Culture code to use in the URL</param>
        /// <returns>A SitemapUrl object for the current page</returns>
        /// <remarks>
        /// </remarks>
        private SitemapUrl GetPageUrl(TabInfo objTab, string language, PortalSettings ps)
        {
            var pageUrl = new SitemapUrl();
            var url     = TestableGlobals.Instance.NavigateURL(objTab.TabID, objTab.IsSuperTab, ps, "", language);

            if ((ps.SSLEnforced || (objTab.IsSecure && ps.SSLEnabled)) && url.StartsWith("http://"))
            {
                url = "https://" + url.Substring("http://".Length);
            }
            pageUrl.Url          = url;
            pageUrl.Priority     = GetPriority(objTab);
            pageUrl.LastModified = objTab.LastModifiedOnDate;
            foreach (ModuleInfo m in ModuleController.Instance.GetTabModules(objTab.TabID).Values)
            {
                if (m.LastModifiedOnDate > objTab.LastModifiedOnDate)
                {
                    pageUrl.LastModified = m.LastModifiedOnDate;
                }
            }
            pageUrl.ChangeFrequency = SitemapChangeFrequency.Daily;

            // support for alternate pages: https://support.google.com/webmasters/answer/2620865?hl=en
            if (ps.ContentLocalizationEnabled && !objTab.IsNeutralCulture)
            {
                List <AlternateUrl> alternates = new List <AlternateUrl>();
                TabInfo             currentTab = objTab;

                if (!objTab.IsDefaultLanguage)
                {
                    currentTab = objTab.DefaultLanguageTab;
                }

                foreach (TabInfo localized in currentTab.LocalizedTabs.Values)
                {
                    if ((!localized.IsDeleted && !localized.DisableLink && localized.TabType == TabType.Normal) &&
                        (Null.IsNull(localized.StartDate) || localized.StartDate < DateTime.Now) &&
                        (Null.IsNull(localized.EndDate) || localized.EndDate > DateTime.Now) &&
                        (IsTabPublic(localized.TabPermissions)) &&
                        (includeHiddenPages || localized.IsVisible) && localized.HasBeenPublished)
                    {
                        string alternateUrl = TestableGlobals.Instance.NavigateURL(localized.TabID, localized.IsSuperTab, ps, "", localized.CultureCode);
                        alternates.Add(new AlternateUrl()
                        {
                            Url      = alternateUrl,
                            Language = localized.CultureCode
                        });
                    }
                }

                if (alternates.Count > 0)
                {
                    // add default language to the list
                    string alternateUrl = TestableGlobals.Instance.NavigateURL(currentTab.TabID, currentTab.IsSuperTab, ps, "", currentTab.CultureCode);
                    alternates.Add(new AlternateUrl()
                    {
                        Url      = alternateUrl,
                        Language = currentTab.CultureCode
                    });

                    pageUrl.AlternateUrls = alternates;
                }
            }

            return(pageUrl);
        }
예제 #7
0
        /// <summary>
        ///   Return the sitemap url node for the page
        /// </summary>
        /// <param name = "objTab">The page being indexed</param>
        /// <param name="language">Culture code to use in the URL</param>
        /// <returns>A SitemapUrl object for the current page</returns>
        /// <remarks>
        /// </remarks>
        private SitemapUrl GetPageUrl(TabInfo objTab, string language)
        {
            var pageUrl = new SitemapUrl();
            pageUrl.Url = Globals.NavigateURL(objTab.TabID, objTab.IsSuperTab, ps, "", language);

            if (pageUrl.Url.ToLower().IndexOf(ps.PortalAlias.HTTPAlias.ToLower()) == -1)
            {
                // code to fix a bug in dnn5.1.2 for navigateurl
                if ((HttpContext.Current != null))
                {
                    pageUrl.Url = Globals.AddHTTP(HttpContext.Current.Request.Url.Host + pageUrl.Url);
                }
                else
                {
                    // try to use the portalalias
                    pageUrl.Url = Globals.AddHTTP(ps.PortalAlias.HTTPAlias.ToLower()) + pageUrl.Url;
                }
            }
            pageUrl.Priority = GetPriority(objTab);
            pageUrl.LastModified = objTab.LastModifiedOnDate;
            var modCtrl = new ModuleController();
            foreach (ModuleInfo m in modCtrl.GetTabModules(objTab.TabID).Values)
            {
                if (m.LastModifiedOnDate > objTab.LastModifiedOnDate)
                {
                    pageUrl.LastModified = m.LastModifiedOnDate;
                }
            }
            pageUrl.ChangeFrequency = SitemapChangeFrequency.Daily;

            return pageUrl;
        }
예제 #8
0
 /// <summary>
 ///   Adds a new url to the sitemap
 /// </summary>
 /// <param name = "sitemapUrl">The url to be included in the sitemap</param>
 /// <remarks>
 /// </remarks>
 private void AddURL(SitemapUrl sitemapUrl)
 {
     writer.WriteStartElement("url");
     writer.WriteElementString("loc", sitemapUrl.Url);
     writer.WriteElementString("lastmod", sitemapUrl.LastModified.ToString("yyyy-MM-dd"));
     writer.WriteElementString("changefreq", sitemapUrl.ChangeFrequency.ToString().ToLower());
     writer.WriteElementString("priority", sitemapUrl.Priority.ToString("F01", CultureInfo.InvariantCulture));
     writer.WriteEndElement();
 }
예제 #9
0
        /// <summary>
        ///   Adds a new url to the sitemap
        /// </summary>
        /// <param name = "sitemapUrl">The url to be included in the sitemap</param>
        /// <remarks>
        /// </remarks>
        private void AddURL(SitemapUrl sitemapUrl)
        {
            writer.WriteStartElement("url");
            writer.WriteElementString("loc", sitemapUrl.Url);
            writer.WriteElementString("lastmod", sitemapUrl.LastModified.ToString("yyyy-MM-dd"));
            writer.WriteElementString("changefreq", sitemapUrl.ChangeFrequency.ToString().ToLower());
            writer.WriteElementString("priority", sitemapUrl.Priority.ToString("F01", CultureInfo.InvariantCulture));

            if (sitemapUrl.AlternateUrls != null)
            {
                foreach (AlternateUrl alternate in sitemapUrl.AlternateUrls)
                {
                    writer.WriteStartElement("link", "http://www.w3.org/1999/xhtml");
                    writer.WriteAttributeString("rel", "alternate");
                    writer.WriteAttributeString("hreflang", alternate.Language);
                    writer.WriteAttributeString("href", alternate.Url);
                    writer.WriteEndElement();
                }
            }
            writer.WriteEndElement();
        }
예제 #10
0
        /// <summary>
        ///   Adds a new url to the sitemap
        /// </summary>
        /// <param name = "sitemapUrl">The url to be included in the sitemap</param>
        /// <remarks>
        /// </remarks>
        private void AddURL(SitemapUrl sitemapUrl)
        {
            writer.WriteStartElement("url");
            writer.WriteElementString("loc", sitemapUrl.Url);
            writer.WriteElementString("lastmod", sitemapUrl.LastModified.ToString("yyyy-MM-dd"));
            writer.WriteElementString("changefreq", sitemapUrl.ChangeFrequency.ToString().ToLower());
            writer.WriteElementString("priority", sitemapUrl.Priority.ToString("F01", CultureInfo.InvariantCulture));

            OpenSitemapUrl openSitemapUrl = sitemapUrl as OpenSitemapUrl;

            if (openSitemapUrl != null) {

                foreach (var alt in openSitemapUrl.Alternates)
                {
                    writer.WriteStartElement("xhtml", "link", "http://www.w3.org/1999/xhtml");
                    writer.WriteAttributeString("rel", "alternate");
                    writer.WriteAttributeString("hreflang", alt.Hreflang);
                    writer.WriteAttributeString("href", alt.Href);
                    writer.WriteEndElement();
                }
                /*
                 <xhtml:link
                 rel="alternate"
                 hreflang="de"
                 href="http://www.exemple.com/deutsch/"
                 />
                 */
            }

            writer.WriteEndElement();
        }