Beispiel #1
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 OpenSitemapUrl GetPageUrl(TabInfo objTab, string language, params string[] AdditionalParameters)
        {
            var pageUrl = new OpenSitemapUrl();

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

            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);
        }
Beispiel #2
0
        /// <summary>
        ///   Includes page urls on the sitemap
        /// </summary>
        /// <remarks>
        ///   Pages that are included:
        ///   - are not deleted
        ///   - are not disabled
        ///   - are normal pages (not links,...)
        ///   - are visible (based on date and permissions)
        /// </remarks>
        public override List <SitemapUrl> GetUrls(int portalId, PortalSettings ps, string version)
        {
            var            objTabs = new TabController();
            OpenSitemapUrl pageUrl = null;
            var            urls    = new List <SitemapUrl>();

            useLevelBasedPagePriority = bool.Parse(PortalController.GetPortalSetting("SitemapLevelMode", portalId, "False"));
            minPagePriority           = float.Parse(PortalController.GetPortalSetting("SitemapMinPriority", portalId, "0.1"), CultureInfo.InvariantCulture);
            includeHiddenPages        = bool.Parse(PortalController.GetPortalSetting("SitemapIncludeHidden", portalId, "False"));

            PortalController portalController = new PortalController();
            PortalInfo       objPortal        = new PortalController().GetPortal(portalId);

            this.ps = ps;

            var Locales = ps.ContentLocalizationEnabled ?
                          LocaleController.Instance.GetPublishedLocales(ps.PortalId).Values :
                          LocaleController.Instance.GetLocales(ps.PortalId).Values;

            bool MultiLanguage = Locales.Count > 1;

            foreach (Locale loc in Locales)
            {
                foreach (TabInfo objTab in objTabs.GetTabsByPortal(portalId).Values)
                {
                    if (objTab.CultureCode == loc.Code || objTab.IsNeutralCulture)
                    {
                        if (MultiLanguage)
                        {
                            objPortal = new PortalController().GetPortal(portalId, loc.Code);
                        }
                        if (!objTab.IsDeleted && !objTab.DisableLink && objTab.TabType == TabType.Normal && (Null.IsNull(objTab.StartDate) || objTab.StartDate < DateTime.Now) &&
                            (Null.IsNull(objTab.EndDate) || objTab.EndDate > DateTime.Now) && IsTabPublic(objTab.TabPermissions) &&
                            objTab.TabID != objPortal.SearchTabId && objTab.TabID != objPortal.UserTabId && (objPortal.UserTabId == Null.NullInteger || objTab.ParentId != objPortal.UserTabId) && objTab.TabID != objPortal.LoginTabId && objTab.TabID != objPortal.RegisterTabId)
                        {
                            var allowIndex = true;
                            if ((!objTab.TabSettings.ContainsKey("AllowIndex") || !bool.TryParse(objTab.TabSettings["AllowIndex"].ToString(), out allowIndex) || allowIndex) &&
                                (includeHiddenPages || objTab.IsVisible))
                            {
                                // page url
                                pageUrl = GetPageUrl(objTab, MultiLanguage ? loc.Code : null);
                                pageUrl.Alternates.AddRange(GetAlternates(objTab.TabID));
                                urls.Add(pageUrl);

                                // modules urls
                                var rules = UrlRuleConfiguration.GetConfig(portalId).Rules;
                                foreach (var rule in rules.Where(r => r.RuleType == UrlRuleType.Module && r.Action == UrlRuleAction.Rewrite && r.TabId == objTab.TabID && r.InSitemap == true))
                                {
                                    if (rule.CultureCode == null || rule.CultureCode == loc.Code)
                                    {
                                        string[] pars = rule.Parameters.Split('&');
                                        pageUrl = GetPageUrl(objTab, MultiLanguage ? loc.Code : null, pars);
                                        // if module support ML
                                        //pageUrl.Alternates.AddRange(GetAlternates(objTab.TabID, pars));
                                        urls.Add(pageUrl);
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return(urls);
        }