Пример #1
0
 private void GetDescendentPath(out string descendentPath, out string[] sections)
 {
     if (CurrentRequest.Value["DescendentPathExpression.Evaluate.Sections"] == null)
     {
         if (ContentManager.RequestedPage == null)
         {
             descendentPath = SprocketPath.Value;
             sections       = SprocketPath.Sections;
         }
         else
         {
             descendentPath = SprocketPath.GetDescendentPath(ContentManager.RequestedPage.Path);
             sections       = descendentPath.Split('/');
         }
         if (descendentPath == "")
         {
             sections = new string[0];
         }
         CurrentRequest.Value["DescendentPathExpression.Evaluate.Sections"] = sections;
         CurrentRequest.Value["DescendentPathExpression.Evaluate.Path"]     = descendentPath;
     }
     else
     {
         sections       = (string[])CurrentRequest.Value["DescendentPathExpression.Evaluate.Sections"];
         descendentPath = (string)CurrentRequest.Value["DescendentPathExpression.Evaluate.Path"];
     }
 }
Пример #2
0
 public PageEntry FromPath(string sprocketPath)
 {
     if (requestPaths.ContainsKey(sprocketPath))
     {
         return(requestPaths[sprocketPath]);
     }
     foreach (PageEntry page in flexiblePaths)
     {
         if (!File.Exists(SprocketPath.Physical))
         {
             if (page.Path == "")
             {
                 return(page);
             }
             else if (SprocketPath.IsCurrentPathDescendentOf(page.Path))
             {
                 return(page);
             }
         }
     }
     return(null);
 }
Пример #3
0
        void WebEvents_OnLoadRequestedPath(HandleFlag handled)
        {
            if (handled.Handled)
            {
                return;
            }
            if (!IsAdminRequest)
            {
                return;
            }

            PageEntry page = pages.FromPath(SprocketPath.Value);

            if (page == null)
            {
                return;
            }

            KeyValuePair <string, object>[] vars;
            if (!SprocketPath.StartsWith("admin", "login"))
            {
                if (!WebAuthentication.VerifyAccess(PermissionType.AccessAdminArea))
                {
                    WebUtility.Redirect("admin/login");
                    return;
                }

                AdminInterface   admin   = new AdminInterface();
                WebClientScripts scripts = WebClientScripts.Instance;
                admin.AddMainMenuLink(new AdminMenuLink("Website Home", WebUtility.MakeFullPath(""), ObjectRank.Last, "website_home"));
                admin.AddMainMenuLink(new AdminMenuLink("Overview", WebUtility.MakeFullPath("admin"), ObjectRank.First, "website_overview"));
                admin.AddMainMenuLink(new AdminMenuLink("Log Out", WebUtility.MakeFullPath("admin/logout"), ObjectRank.Last, "log_out"));

                admin.AddFooterLink(new AdminMenuLink("Log Out", WebUtility.MakeFullPath("admin/logout"), ObjectRank.Early));
                admin.AddFooterLink(new AdminMenuLink("&copy; 2005-" + DateTime.UtcNow.Year + " " + SprocketSettings.GetValue("WebsiteName"), "", ObjectRank.Late));
                admin.AddFooterLink(new AdminMenuLink("Powered by Sprocket", "http://www.sprocketcms.com", ObjectRank.Last));
                admin.AddHeadSection(new AdminSection(scripts.BuildStandardScriptsBlock(), ObjectRank.Late));
                admin.WebsiteName = GetWebsiteName();

                if (OnLoadAdminPage != null)
                {
                    OnLoadAdminPage(admin, page, handled);
                    if (handled.Handled)
                    {
                        return;
                    }
                }

                vars = admin.GetScriptVariables();
            }
            else
            {
                vars    = new KeyValuePair <string, object> [1];
                vars[0] = new KeyValuePair <string, object>("_admin_websitename", GetWebsiteName());
            }

            ContentManager.RequestedPage = page;
            if (pagePreProcessors.ContainsKey(page.PageCode))
            {
                foreach (PagePreprocessorHandler method in pagePreProcessors[page.PageCode])
                {
                    method(page);
                }
            }
            string txt = page.Render(vars);

            Response.ContentType = page.ContentType;
            Response.Write(txt);
            handled.Set();
        }