예제 #1
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            // If printmode, simply exit.
            if (Request.QueryString["dnnprintmode"] != null)
                return;

            // Do a conversion if needed
            // TODO: Figure out what's happening here
            if (ModuleId > 0)
            {
                if (MainSettings.NeedsConversion)
                {
                    if (!(string.IsNullOrEmpty(UserForumsList)))
                    {
                        var move = new Helpers.SettingConversion();
                        move.MoveSettings(ForumModuleId, ModuleId);

                    }
                }
            }

            var p = new List<string>();

            var viewType = Request.Params[ParamKeys.ViewType];

            // Topic View
            if (TopicId > 0 && (viewType == Views.Topic))
            {
                p.Add(ParamKeys.TopicId + "=" + TopicId);

                var firstNewPost = Request.Params[ParamKeys.FirstNewPost];
                if(!string.IsNullOrWhiteSpace(firstNewPost))
                    p.Add(ParamKeys.FirstNewPost + "=" + firstNewPost);

                var contentJumpId = Request.Params[ParamKeys.ContentJumpId];
                if (!string.IsNullOrWhiteSpace(contentJumpId))
                    p.Add(ParamKeys.ContentJumpId + "=" + contentJumpId);

                var pageId = Request.Params[ParamKeys.PageId];
                if (!string.IsNullOrWhiteSpace(pageId))
                {
                    int parsedPageId;
                    if(int.TryParse(pageId, out parsedPageId) && parsedPageId > 1)
                        p.Add(ParamKeys.PageId + "=" + pageId);
                }

                var pageJumpId = Request.Params[ParamKeys.PageJumpId];
                if (!string.IsNullOrWhiteSpace(pageJumpId))
                {
                    int parsedPageJumpId;
                    if (int.TryParse(pageJumpId, out parsedPageJumpId) && parsedPageJumpId > 1)
                        p.Add(ParamKeys.PageJumpId + "=" + pageJumpId);
                }

                var sort = Request.QueryString[ParamKeys.Sort];
                if(!string.IsNullOrWhiteSpace(sort) && Request.IsAuthenticated)
                {
                    sort = sort.ToUpperInvariant();
                    if(sort == "ASC" || sort == "DESC")
                        p.Add(ParamKeys.Sort + "=" + sort);
                }
            }

            // Topics View
            else if (ForumId > 0 && viewType == Views.Topics)
            {
                p.Add(ParamKeys.ForumId + "=" + ForumId);

                var pageId = Request.Params[ParamKeys.PageId];
                if (!string.IsNullOrWhiteSpace(pageId))
                {
                    int parsedPageId;
                    if (int.TryParse(pageId, out parsedPageId) && parsedPageId > 1)
                        p.Add(ParamKeys.PageId + "=" + pageId);
                }

                var pageJumpId = Request.Params[ParamKeys.PageJumpId];
                if (!string.IsNullOrWhiteSpace(pageJumpId))
                {
                    int parsedPageJumpId;
                    if (int.TryParse(pageJumpId, out parsedPageJumpId) && parsedPageJumpId > 1)
                        p.Add(ParamKeys.PageJumpId + "=" + pageJumpId);
                }
            }

            if (p.Count <= 0)
                return;

            var sURL = Utilities.NavigateUrl(TabId, string.Empty, p.ToArray());
            if (string.IsNullOrEmpty(sURL))
                return;

            Response.Clear();
            Response.Status = "301 Moved Permanently";
            Response.AddHeader("Location", sURL);
            Response.End();
        }
예제 #2
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            // If printmode, simply exit.
            if (Request.QueryString["dnnprintmode"] != null)
            {
                return;
            }

            // Do a conversion if needed
            // TODO: Figure out what's happening here
            if (ModuleId > 0)
            {
                if (MainSettings.NeedsConversion)
                {
                    if (!(string.IsNullOrEmpty(UserForumsList)))
                    {
                        var move = new Helpers.SettingConversion();
                        move.MoveSettings(ForumModuleId, ModuleId);
                    }
                }
            }

            var p = new List <string>();

            var viewType = Request.Params[ParamKeys.ViewType];

            // Topic View
            if (TopicId > 0 && (viewType == Views.Topic))
            {
                p.Add(ParamKeys.TopicId + "=" + TopicId);

                var firstNewPost = Request.Params[ParamKeys.FirstNewPost];
                if (!string.IsNullOrWhiteSpace(firstNewPost))
                {
                    p.Add(ParamKeys.FirstNewPost + "=" + firstNewPost);
                }

                var contentJumpId = Request.Params[ParamKeys.ContentJumpId];
                if (!string.IsNullOrWhiteSpace(contentJumpId))
                {
                    p.Add(ParamKeys.ContentJumpId + "=" + contentJumpId);
                }

                var pageId = Request.Params[ParamKeys.PageId];
                if (!string.IsNullOrWhiteSpace(pageId))
                {
                    int parsedPageId;
                    if (int.TryParse(pageId, out parsedPageId) && parsedPageId > 1)
                    {
                        p.Add(ParamKeys.PageId + "=" + pageId);
                    }
                }

                var pageJumpId = Request.Params[ParamKeys.PageJumpId];
                if (!string.IsNullOrWhiteSpace(pageJumpId))
                {
                    int parsedPageJumpId;
                    if (int.TryParse(pageJumpId, out parsedPageJumpId) && parsedPageJumpId > 1)
                    {
                        p.Add(ParamKeys.PageJumpId + "=" + pageJumpId);
                    }
                }

                var sort = Request.QueryString[ParamKeys.Sort];
                if (!string.IsNullOrWhiteSpace(sort))
                {
                    var defaultSort = (Request.IsAuthenticated &&
                                       !string.IsNullOrWhiteSpace(ForumUser.Profile.PrefDefaultSort))
                                          ? ForumUser.Profile.PrefDefaultSort.ToUpperInvariant().Trim()
                                          : "ASC";

                    sort = sort.ToUpperInvariant();
                    if ((sort != defaultSort) && (sort == "ASC" || sort == "DESC"))
                    {
                        p.Add(ParamKeys.Sort + "=" + sort);
                    }
                }
            }

            // Topics View
            else if (ForumId > 0 && viewType == Views.Topics)
            {
                p.Add(ParamKeys.ForumId + "=" + ForumId);

                var pageId = Request.Params[ParamKeys.PageId];
                if (!string.IsNullOrWhiteSpace(pageId))
                {
                    int parsedPageId;
                    if (int.TryParse(pageId, out parsedPageId) && parsedPageId > 1)
                    {
                        p.Add(ParamKeys.PageId + "=" + pageId);
                    }
                }

                var pageJumpId = Request.Params[ParamKeys.PageJumpId];
                if (!string.IsNullOrWhiteSpace(pageJumpId))
                {
                    int parsedPageJumpId;
                    if (int.TryParse(pageJumpId, out parsedPageJumpId) && parsedPageJumpId > 1)
                    {
                        p.Add(ParamKeys.PageJumpId + "=" + pageJumpId);
                    }
                }
            }


            if (p.Count <= 0)
            {
                return;
            }

            var sURL = Utilities.NavigateUrl(TabId, string.Empty, p.ToArray());

            if (string.IsNullOrEmpty(sURL))
            {
                return;
            }

            Response.Clear();
            Response.Status = "301 Moved Permanently";
            Response.AddHeader("Location", sURL);
            Response.End();
        }