예제 #1
0
 protected override void OnInit(EventArgs e)
 {
     foreach (string controlName in _controls)
     {
         var skin = HostInfo.GetAggregateSkin();
         var skinControlLoader = new SkinControlLoader(this, skin);
         Control control = skinControlLoader.LoadControl(controlName);
         CenterBodyControl.Controls.Add(control);
     }
     base.OnInit(e);
 }
        public void LoadControl_WithControlName_ReplacesDotWithUnderscoreInId()
        {
            // arrange
            var containerControl = new Mock<IContainerControl>();
            var loadedControl = new UserControl {ID = "Foo.Bar"};
            containerControl.Setup(tc => tc.LoadControl("~/Skins/OfMyChinnyChinChin/Controls/ViewPost.ascx")).Returns(loadedControl);
            var skin = new SkinConfig { TemplateFolder = "OfMyChinnyChinChin" };
            var skinControlLoader = new SkinControlLoader(containerControl.Object, skin);

            // act
            var control = skinControlLoader.LoadControl("ViewPost");

            // assert
            Assert.AreEqual("Foo_Bar", control.ID);
        }
        public void LoadControl_WithControlName_LoadsTheControlFromTheSkinFolder()
        {
            // arrange
            var containerControl = new Mock<IContainerControl>();
            var loadedControl = new UserControl { ID = "Foo.Bar" };
            containerControl.Setup(tc => tc.LoadControl("~/Skins/OfMyChinnyChinChin/Controls/ViewPost.ascx")).Returns(loadedControl);
            var skin = new SkinConfig {TemplateFolder = "OfMyChinnyChinChin"};
            var skinControlLoader = new SkinControlLoader(containerControl.Object, skin);

            // act
            var control = skinControlLoader.LoadControl("ViewPost");

            // assert
            Assert.AreSame(loadedControl, control);
        }
        public void LoadControl_WithControlThrowingHttpException_LoadsFallbackControl()
        {
            // arrange
            var containerControl = new Mock<IContainerControl>();
            var fallbackControl = new UserControl { ID = "Foo.Bar" };
            containerControl.Setup(tc => tc.LoadControl("~/Skins/OfMyChinnyChinChin/Controls/ViewPost.ascx")).Throws(new HttpException());
            containerControl.Setup(tc => tc.LoadControl("~/Skins/_System/Controls/ViewPost.ascx")).Returns(fallbackControl);
            var skin = new SkinConfig { TemplateFolder = "OfMyChinnyChinChin" };
            var skinControlLoader = new SkinControlLoader(containerControl.Object, skin);

            // act
            var control = skinControlLoader.LoadControl("ViewPost");

            // assert
            Assert.AreSame(fallbackControl, control);
        }
        public void LoadControl_WithControlAndFallbackThrowingHttpException_LoadsErrorControl()
        {
            // arrange
            var containerControl = new Mock<IContainerControl>();
            var errorControl = new Error();
            containerControl.Setup(tc => tc.LoadControl("~/Skins/OfMyChinnyChinChin/Controls/ViewPost.ascx")).Throws(new HttpException());
            containerControl.Setup(tc => tc.LoadControl("~/Skins/_System/Controls/ViewPost.ascx")).Throws(new HttpException());
            containerControl.Setup(tc => tc.LoadControl("~/Skins/_System/Controls/Error.ascx")).Returns(errorControl);
            var skin = new SkinConfig { TemplateFolder = "OfMyChinnyChinChin" };
            var skinControlLoader = new SkinControlLoader(containerControl.Object, skin);

            // act
            var control = skinControlLoader.LoadControl("ViewPost") as Error;

            // assert
            Assert.AreSame(errorControl, control);
            Assert.AreEqual("~/Skins/OfMyChinnyChinChin/Controls/ViewPost.ascx", control.Exception.ControlPath);
        }
        public void LoadControl_WithControlThrowingHttpParseException_LoadsErrorControlWithExceptionProperty()
        {
            // arrange
            var containerControl = new Mock<IContainerControl>();
            var exception = new HttpParseException();
            var userControl = new Mock<UserControl>();
            userControl.Stub(c => c.ID);
            var errorControl = userControl.As<IErrorControl>();
            userControl.Object.ID = "Foo.Bar";
            errorControl.Stub(c => c.Exception);
            containerControl.Setup(tc => tc.LoadControl("~/Skins/VsShirts/Controls/ViewPost.ascx")).Throws(exception);
            containerControl.Setup(tc => tc.LoadControl("~/Skins/_System/Controls/Error.ascx")).Returns((UserControl)errorControl.Object);
            var skin = new SkinConfig { TemplateFolder = "VsShirts" };
            var skinControlLoader = new SkinControlLoader(containerControl.Object, skin);

            // act
            var control = skinControlLoader.LoadControl("ViewPost") as IErrorControl;

            // assert
            Assert.AreEqual(exception, control.Exception.InnerException);
        }
예제 #7
0
        public void InitializeBlogPage()
        {
            var skin = SkinConfig.GetCurrentSkin(Blog, SubtextContext.HttpContext);
            var skinControlLoader = new SkinControlLoader(this, skin);

            InitializeControls(skinControlLoader);

            if (skin.HasCustomCssText)
            {
                CustomCss.Attributes.Add("href", Url.CustomCssUrl());
            }
            else
            {
                //MAC IE does not like the empy CSS file, plus its a waste :)
                CustomCss.Visible = false;
            }

            if (Rsd != null)
            {
                Rsd.Attributes.Add("href", Url.RsdUrl(Blog).ToString());
            }

            if (wlwmanifest != null)
            {
                wlwmanifest.Attributes.Add("href", Url.WlwManifestUrl());
            }

            if (opensearch != null)
            {
                opensearch.Attributes.Add("href", Url.OpenSearchDescriptorUrl());
                opensearch.Attributes.Add("title", Blog.Title);
            }

            if (RSSLink != null)
            {
                RSSLink.Attributes.Add("href", Url.RssUrl(Blog).ToString());
            }

            // if specified, add script elements
            if (scripts != null)
            {
                scripts.Text = ScriptRenderer.RenderScriptElementCollection(skin.SkinKey);
            }

            if (styles != null)
            {
                styles.Text = StyleRenderer.RenderStyleElementCollection(skin.SkinKey);
            }

            if (openIDServer != null && !string.IsNullOrEmpty(Blog.OpenIdServer))
            {
                openIDServer.Text = string.Format(OpenIdServerLocation, Blog.OpenIdServer);
            }

            if (openIDDelegate != null && !string.IsNullOrEmpty(Blog.OpenIdDelegate))
            {
                openIDDelegate.Text = string.Format(OpenIdDelegateLocation, Blog.OpenIdDelegate);
            }

            if (metaTags != null)
            {
                metaTags.Blog = Blog;
            }
        }