예제 #1
0
        /// <summary>
        /// Called before render methods sends element to response output.
        /// </summary>
        /// <param name="controlRenderer">The html control renderer.</param>
        /// <param name="page">The page.</param>
        /// <param name="html">The html helper.</param>
        protected virtual void OnPreRender(HtmlControlRenderer controlRenderer, IPage page, HtmlHelper html)
        {
            if (Id != null)
            {
                controlRenderer.Attributes["id"] = Id(page);
            }

            if (CssClass != null)
            {
                string css = controlRenderer.Attributes["class"];

                if (!string.IsNullOrEmpty(css))
                {
                    css = string.Concat(css, " ", CssClass(page));
                }
                else
                {
                    css = CssClass(page);
                }

                controlRenderer.Attributes.Add("class", css);
            }

            if (Tooltip != null)
            {
                string tooltip = Tooltip(page);
                controlRenderer.Attributes.Add("title", tooltip);
            }

            controlRenderer.Attributes.Add("data-bcms-order", Order.ToString());
        }
예제 #2
0
        /// <summary>
        /// Renders an action projection to given html output.
        /// </summary>
        /// <param name="page">The page.</param>
        /// <param name="securityService"></param>
        /// <param name="html">The html helper.</param>
        /// <returns><c>true</c> on success, otherwise <c>false</c>.</returns>
        public override bool Render(IPage page, ISecurityService securityService, HtmlHelper html)
        {
            if (AccessRole != null && !securityService.IsAuthorized(AccessRole))
            {
                return(false);
            }

            using (HtmlControlRenderer control = new HtmlControlRenderer(Tag))
            {
                OnPreRender(control, page, html);

                using (HtmlTextWriter writer = new HtmlTextWriter(html.ViewContext.Writer))
                {
                    control.RenderBeginTag(writer);

                    if (ChildProjections != null)
                    {
                        foreach (var htmlElementProjection in ChildProjections.OrderBy(f => f.Order))
                        {
                            htmlElementProjection.Render(page, securityService, html);
                        }
                    }

                    control.RenderEndTag(writer);
                }
            }

            return(true);
        }
예제 #3
0
        /// <summary>
        /// Called before render methods sends element to response output.
        /// </summary>
        /// <param name="controlRenderer">The html control renderer.</param>
        /// <param name="page">The page.</param>
        /// <param name="html">The html helper.</param>
        protected override void OnPreRender(HtmlControlRenderer controlRenderer, IPage page, HtmlHelper html)
        {
            base.OnPreRender(controlRenderer, page, html);

            if (Title != null)
            {
                string title = Title(page);
                controlRenderer.Controls.Add(new LiteralControl(title));
            }

            if (OnClickAction != null && parentModuleInclude != null)
            {
                string cssClass = controlRenderer.Attributes["class"];
                if (!string.IsNullOrEmpty(cssClass) && !cssClass.Contains(ModuleActionMarkerCssClass))
                {
                    cssClass = cssClass + " " + ModuleActionMarkerCssClass;
                }
                else
                {
                    cssClass = ModuleActionMarkerCssClass;
                }

                controlRenderer.Attributes["class"] = cssClass;
                controlRenderer.Attributes.Add(ModuleNameAttribute, parentModuleInclude.Name);
                controlRenderer.Attributes.Add(ModuleActionAttribute, OnClickAction(page));
            }
        }
예제 #4
0
        /// <summary>
        /// Renders an action projection to given html output.
        /// </summary>
        /// <param name="page">The page.</param>
        /// <param name="securityService"></param>
        /// <param name="html">The html helper.</param>
        /// <returns><c>true</c> on success, otherwise <c>false</c>.</returns>
        public override bool Render(IPage page, ISecurityService securityService, HtmlHelper html)
        {
            if (AccessRole != null && !securityService.IsAuthorized(AccessRole))
            {
                return false;
            }

            using (HtmlControlRenderer control = new HtmlControlRenderer(Tag))
            {
                OnPreRender(control, page, html);

                using (HtmlTextWriter writer = new HtmlTextWriter(html.ViewContext.Writer))
                {
                    control.RenderBeginTag(writer);
                    
                    if (ChildProjections != null)
                    {
                        foreach (var htmlElementProjection in ChildProjections.OrderBy(f => f.Order))
                        {
                            htmlElementProjection.Render(page, securityService, html);
                        }
                    }

                    control.RenderEndTag(writer);
                }
            }

            return true;
        }
        /// <summary>
        /// Called before render methods sends element to response output.
        /// </summary>
        /// <param name="page">The page.</param>
        /// <param name="html">The html helper.</param>
        protected override void OnPreRender(HtmlControlRenderer controlRenderer, IPage page, HtmlHelper html)
        {
            base.OnPreRender(controlRenderer, page, html);

            controlRenderer.Attributes["href"] = LinkAddress(page);
            controlRenderer.Attributes["target"] = "_blank";
            controlRenderer.InnerText = InnerText(page);
        }
예제 #6
0
        /// <summary>
        /// Called before render methods sends element to response output.
        /// </summary>
        /// <param name="page">The page.</param>
        /// <param name="html">The html helper.</param>
        protected override void OnPreRender(HtmlControlRenderer controlRenderer, IPage page, HtmlHelper html)
        {
            base.OnPreRender(controlRenderer, page, html);

            controlRenderer.Attributes["href"]   = LinkAddress(page);
            controlRenderer.Attributes["target"] = "_blank";
            controlRenderer.InnerText            = InnerText(page);
        }
예제 #7
0
 /// <summary>
 /// Called before render methods sends element to response output.
 /// </summary>
 /// <param name="controlRenderer">The html control renderer.</param>
 /// <param name="page">The page.</param>
 /// <param name="html">The html helper.</param>
 protected override void OnPreRender(HtmlControlRenderer controlRenderer, IPage page, HtmlHelper html)
 {
     controlRenderer.Attributes["rel"] = relation;
     controlRenderer.Attributes["href"] = link;
     if (!string.IsNullOrWhiteSpace(type))
     {
         controlRenderer.Attributes["type"] = type;
     }
 }
예제 #8
0
 /// <summary>
 /// Called before render methods sends element to response output.
 /// </summary>
 /// <param name="controlRenderer">The html control renderer.</param>
 /// <param name="page">The page.</param>
 /// <param name="html">The html helper.</param>
 protected override void OnPreRender(HtmlControlRenderer controlRenderer, IPage page, HtmlHelper html)
 {
     controlRenderer.Attributes["rel"]  = relation;
     controlRenderer.Attributes["href"] = link;
     if (!string.IsNullOrWhiteSpace(type))
     {
         controlRenderer.Attributes["type"] = type;
     }
 }
예제 #9
0
        /// <summary>
        /// Called before render methods sends element to response output.
        /// </summary>
        /// <param name="page">The page.</param>
        /// <param name="html">The html helper.</param>
        protected override void OnPreRender(HtmlControlRenderer controlRenderer, IPage page, HtmlHelper html)
        {
            base.OnPreRender(controlRenderer, page, html);

            if (Items != null && Items.Any())
            {
                var innerDiv = new HtmlGenericControl("div");
                controlRenderer.Controls.Add(innerDiv);
                var items = Items
                            .Select(f => f(page))
                            .OrderBy(f => f.Order)
                            .Select(
                    f => new SelectListItem
                {
                    Selected = f.IsSelected,
                    Text     = f.Text != null ? f.Text() : string.Empty,
                    Value    = f.Value
                })
                            .ToList();

                foreach (var item in items)
                {
                    var option = new HtmlGenericControl("div");
                    option.Controls.Add(new LiteralControl(item.Text));
                    option.Attributes["value"] = item.Value;
                    if (item.Selected)
                    {
                        option.Attributes["selected"] = "selected";
                    }

                    innerDiv.Controls.Add(option);
                }
            }

            if (OnChangeAction != null && parentModuleInclude != null)
            {
                string cssClass = controlRenderer.Attributes["class"];
                if (!string.IsNullOrEmpty(cssClass) && !cssClass.Contains(ModuleActionMarkerCssClass))
                {
                    cssClass = string.Concat(cssClass, " ", ModuleActionMarkerCssClass);
                }
                else
                {
                    cssClass = ModuleActionMarkerCssClass;
                }

                controlRenderer.Attributes["class"] = cssClass;
                controlRenderer.Attributes.Add(ModuleNameAttribute, parentModuleInclude.Name);
                controlRenderer.Attributes.Add(ModuleActionAttribute, OnChangeAction(page));
            }
        }
예제 #10
0
        /// <summary>
        /// Renders a control.
        /// </summary>
        /// <param name="page">The page.</param>
        /// <param name="securityService"></param>
        /// <param name="html">The HTML.</param>
        /// <returns><c>true</c> on success, otherwise <c>false</c>.</returns>
        public virtual bool Render(IPage page, ISecurityService securityService, HtmlHelper html)
        {
            if (AccessRole != null && !securityService.IsAuthorized(AccessRole))
            {
                return(false);
            }

            using (HtmlControlRenderer control = new HtmlControlRenderer(Tag, isSelfClosing))
            {
                OnPreRender(control, page, html);

                using (HtmlTextWriter writer = new HtmlTextWriter(html.ViewContext.Writer))
                {
                    control.RenderControl(writer);
                }
            }

            return(true);
        }
예제 #11
0
        protected override void OnPreRender(HtmlControlRenderer controlRenderer, IPage page, HtmlHelper html)
        {
            base.OnPreRender(controlRenderer, page, html);

            if (Title != null)
            {
                var title = Title(page);
                controlRenderer.Attributes["title"] = title;
            }

            var innerDivOn = new HtmlGenericControl("div");

            innerDivOn.Attributes["class"] = "bcms-switch-text";
            innerDivOn.Controls.Add(new LiteralControl("Yes"));
            controlRenderer.Controls.Add(innerDivOn);

            var innerDivOff = new HtmlGenericControl("div");

            innerDivOff.Attributes["class"] = "bcms-switch-text";
            innerDivOff.Controls.Add(new LiteralControl("No"));
            controlRenderer.Controls.Add(innerDivOff);

            if (OnClickAction == null || parentModuleInclude == null)
            {
                return;
            }

            var cssClass = controlRenderer.Attributes["class"];

            if (!string.IsNullOrEmpty(cssClass) && !cssClass.Contains(ModuleActionMarkerCssClass))
            {
                cssClass = cssClass + " " + ModuleActionMarkerCssClass;
            }
            else
            {
                cssClass = ModuleActionMarkerCssClass;
            }

            controlRenderer.Attributes["class"] = cssClass;
            controlRenderer.Attributes.Add(ModuleNameAttribute, parentModuleInclude.Name);
            controlRenderer.Attributes.Add(ModuleActionAttribute, OnClickAction(page));
        }
예제 #12
0
        /// <summary>
        /// Renders an action projection to given html output.
        /// </summary>
        /// <param name="page">The page.</param>
        /// <param name="html">The html helper.</param>
        public override void Render(IPage page, HtmlHelper html)
        {
            using (HtmlControlRenderer control = new HtmlControlRenderer(Tag))
            {
                OnPreRender(control, page, html);

                using (HtmlTextWriter writer = new HtmlTextWriter(html.ViewContext.Writer))
                {
                    control.RenderBeginTag(writer);

                    if (ChildProjections != null)
                    {
                        foreach (var htmlElementProjection in ChildProjections.OrderBy(f => f.Order))
                        {
                            htmlElementProjection.Render(page, html);
                        }
                    }

                    control.RenderEndTag(writer);
                }
            }
        }
예제 #13
0
        /// <summary>
        /// Called before render methods sends element to response output.
        /// </summary>
        /// <param name="controlRenderer">The html control renderer.</param>
        /// <param name="page">The page.</param>
        /// <param name="html">The html helper.</param>
        protected override void OnPreRender(HtmlControlRenderer controlRenderer, IPage page, System.Web.Mvc.HtmlHelper html)
        {
            base.OnPreRender(controlRenderer, page, html);

            controlRenderer.Attributes.Add("href", "#");
        }
예제 #14
0
        protected override void OnPreRender(HtmlControlRenderer controlRenderer, IPage page, HtmlHelper html)
        {
            base.OnPreRender(controlRenderer, page, html);

            if (Title != null)
            {
                var title = Title(page);
                controlRenderer.Attributes["title"] = title;
            }

            var innerDivOn = new HtmlGenericControl("div");
            innerDivOn.Attributes["class"] = "bcms-switch-text";
            innerDivOn.Controls.Add(new LiteralControl("Yes"));
            controlRenderer.Controls.Add(innerDivOn);

            var innerDivOff = new HtmlGenericControl("div");
            innerDivOff.Attributes["class"] = "bcms-switch-text";
            innerDivOff.Controls.Add(new LiteralControl("No"));
            controlRenderer.Controls.Add(innerDivOff);

            if (OnClickAction == null || parentModuleInclude == null)
            {
                return;
            }

            var cssClass = controlRenderer.Attributes["class"];
            if (!string.IsNullOrEmpty(cssClass) && !cssClass.Contains(ModuleActionMarkerCssClass))
            {
                cssClass = cssClass + " " + ModuleActionMarkerCssClass;
            }
            else
            {
                cssClass = ModuleActionMarkerCssClass;
            }

            controlRenderer.Attributes["class"] = cssClass;
            controlRenderer.Attributes.Add(ModuleNameAttribute, parentModuleInclude.Name);
            controlRenderer.Attributes.Add(ModuleActionAttribute, OnClickAction(page));
        }
예제 #15
0
        /// <summary>
        /// Called before render methods sends element to response output.
        /// </summary>
        /// <param name="page">The page.</param>
        /// <param name="html">The html helper.</param>
        protected override void OnPreRender(HtmlControlRenderer controlRenderer, IPage page, HtmlHelper html)
        {
            base.OnPreRender(controlRenderer, page, html);

            if (Items != null && Items.Any())
            {
                var items = Items
                    .Select(f => f(page))
                    .OrderBy(f => f.Order)
                    .Select(
                        f => new SelectListItem
                        {
                            Selected = f.IsSelected,
                            Text = f.Text != null ? f.Text() : string.Empty,
                            Value = f.Value
                        })
                    .ToList();

                foreach (var item in items)
                {
                    var option = new HtmlGenericControl("option");
                    option.Controls.Add(new LiteralControl(item.Text));
                    option.Attributes["value"] = item.Value;
                    if (item.Selected)
                    {
                        option.Attributes["selected"] = "selected";
                    }

                    controlRenderer.Controls.Add(option);
                }
            }

            if (OnChangeAction != null && parentModuleInclude != null)
            {
                string cssClass = controlRenderer.Attributes["class"];
                if (!string.IsNullOrEmpty(cssClass) && !cssClass.Contains(ModuleActionMarkerCssClass))
                {
                    cssClass = string.Concat(cssClass, " ", ModuleActionMarkerCssClass);
                }
                else
                {
                    cssClass = ModuleActionMarkerCssClass;
                }

                controlRenderer.Attributes["class"] = cssClass;
                controlRenderer.Attributes.Add(ModuleNameAttribute, parentModuleInclude.Name);
                controlRenderer.Attributes.Add(ModuleActionAttribute, OnChangeAction(page));
            }
        }
예제 #16
0
 /// <summary>
 /// Called before render methods sends element to response output.
 /// </summary>
 /// <param name="controlRenderer">The html control renderer.</param>
 /// <param name="page">The page.</param>
 /// <param name="html">The html helper.</param>
 protected override void OnPreRender(HtmlControlRenderer controlRenderer, IPage page, HtmlHelper html)
 {
     controlRenderer.Attributes["name"]    = name;
     controlRenderer.Attributes["content"] = content;
 }
예제 #17
0
        /// <summary>
        /// Called before render methods sends element to response output.
        /// </summary>
        /// <param name="controlRenderer">The html control renderer.</param>
        /// <param name="page">The page.</param>
        /// <param name="html">The html helper.</param>
        protected override void OnPreRender(HtmlControlRenderer controlRenderer, IPage page, HtmlHelper html)
        {
            base.OnPreRender(controlRenderer, page, html);

            if (Title != null)
            {
                string title = Title(page);
                controlRenderer.Controls.Add(new LiteralControl(title));
            }

            if (OnClickAction != null && parentModuleInclude != null)
            {
                string cssClass = controlRenderer.Attributes["class"];
                if (!string.IsNullOrEmpty(cssClass) && !cssClass.Contains(ModuleActionMarkerCssClass))
                {
                    cssClass = cssClass + " " + ModuleActionMarkerCssClass;
                }
                else
                {
                    cssClass = ModuleActionMarkerCssClass;
                }

                controlRenderer.Attributes["class"] = cssClass;
                controlRenderer.Attributes.Add(ModuleNameAttribute, parentModuleInclude.Name);
                controlRenderer.Attributes.Add(ModuleActionAttribute, OnClickAction(page));
            }            
        }
 /// <summary>
 /// Called before render methods sends element to response output.
 /// </summary>
 /// <param name="controlRenderer">The html control renderer.</param>
 /// <param name="page">The page.</param>
 /// <param name="html">The html helper.</param>
 protected override void OnPreRender(HtmlControlRenderer controlRenderer, IPage page, HtmlHelper html)
 {
     controlRenderer.Attributes["property"] = property;
     controlRenderer.Attributes["content"] = content;
 }
예제 #19
0
        /// <summary>
        /// Called before render methods sends element to response output.
        /// </summary>
        /// <param name="controlRenderer">The html control renderer.</param>
        /// <param name="page">The page.</param>
        /// <param name="html">The html helper.</param>
        protected override void OnPreRender(HtmlControlRenderer controlRenderer, IPage page, System.Web.Mvc.HtmlHelper html)
        {
            base.OnPreRender(controlRenderer, page, html);

            controlRenderer.Attributes.Add("href", "#");
        }
예제 #20
0
        /// <summary>
        /// Called before render methods sends element to response output.
        /// </summary>
        /// <param name="controlRenderer">The html control renderer.</param>
        /// <param name="page">The page.</param>
        /// <param name="html">The html helper.</param>
        protected virtual void OnPreRender(HtmlControlRenderer controlRenderer, IPage page, HtmlHelper html)
        {
            if (Id != null)
            {
                controlRenderer.Attributes["id"] = Id(page);
            }

            if (CssClass != null)
            {
                string css = controlRenderer.Attributes["class"];

                if (!string.IsNullOrEmpty(css))
                {
                    css = string.Concat(css, " ", CssClass(page));
                }
                else
                {
                    css = CssClass(page);
                }

                controlRenderer.Attributes.Add("class", css);
            }

            if (Tooltip != null)
            {
                string tooltip = Tooltip(page);
                controlRenderer.Attributes.Add("title", tooltip);
            }

            controlRenderer.Attributes.Add("data-bcms-order", Order.ToString());
        }
        /// <summary>
        /// Renders a control.
        /// </summary>
        /// <param name="page">The page.</param>
        /// <param name="securityService"></param>
        /// <param name="html">The HTML.</param>
        /// <returns><c>true</c> on success, otherwise <c>false</c>.</returns>
        public virtual bool Render(IPage page, ISecurityService securityService, HtmlHelper html)
        {
            if (ShouldBeRendered != null && !ShouldBeRendered.Invoke(page))
            {
                return false;
            }

            if (AccessRole != null && !securityService.IsAuthorized(AccessRole))
            {
                return false;
            }

            using (HtmlControlRenderer control = new HtmlControlRenderer(Tag, isSelfClosing))
            {
                OnPreRender(control, page, html);

                using (HtmlTextWriter writer = new HtmlTextWriter(html.ViewContext.Writer))
                {
                    control.RenderControl(writer);
                }
            }

            return true;
        }
예제 #22
0
        /// <summary>
        /// Renders a control.
        /// </summary>
        /// <param name="page">The page.</param>
        /// <param name="html">The HTML.</param>
        public virtual void Render(IPage page, HtmlHelper html)
        {
            using (HtmlControlRenderer control = new HtmlControlRenderer(Tag))
            {
                OnPreRender(control, page, html);

                using (HtmlTextWriter writer = new HtmlTextWriter(html.ViewContext.Writer))
                {
                    control.RenderControl(writer);
                }
            }
        }