App_Code.Controls.WidgetZone.OnLoad C# (CSharp) Method

OnLoad() protected method

Raises the event.
protected OnLoad ( EventArgs e ) : void
e System.EventArgs /// The object that contains the event data. ///
return void
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            var zone = this.XmlDocument.SelectNodes("//widget");
            if (zone == null)
            {
                return;
            }

            // This is for compatibility with older themes that do not have a WidgetContainer control.
            var widgetContainerExists = WidgetContainer.DoesThemeWidgetContainerExist(true);
            var widgetContainerVirtualPath = WidgetContainer.GetThemeWidgetContainerVirtualPath(false);

            foreach (XmlNode widget in zone)
            {
                var fileName = string.Format("{0}widgets/{1}/widget.ascx", Utils.ApplicationRelativeWebRoot, widget.InnerText);
                try
                {
                    //Mod RonC Added this conditional so that the admin widget isn't loaded for non authenticated
                    //         visitors.  This shaves 1 sec off of a cold server first page fetch
                    //         for a non admin visitor.
                    bool isAdminWidget = (fileName.ToLower().IndexOf("/administration/widget.ascx") >= 0);
                    if (!isAdminWidget || (isAdminWidget && Security.IsAuthenticated)) {

                        var control = (WidgetBase)this.Page.LoadControl(fileName);
                        if (widget.Attributes != null) {
                            control.WidgetId = new Guid(widget.Attributes["id"].InnerText);
                            control.Title = widget.Attributes["title"].InnerText;
                            control.ShowTitle = control.IsEditable
                                                    ? bool.Parse(widget.Attributes["showTitle"].InnerText)
                                                    : control.DisplayHeader;
                        }

                        control.ID = control.WidgetId.ToString().Replace("-", string.Empty);
                        control.Zone = this.zoneName;

                        control.LoadWidget();

                        // This will return the WidgetContainer with the control in it.
                        var widgetContainer = WidgetContainer.GetWidgetContainer(control, widgetContainerExists, widgetContainerVirtualPath);
                        this.Controls.Add(widgetContainer);
                    }
                }
                catch (Exception ex)
                {
                    var lit = new Literal
                        {
                           Text = string.Format("<p style=\"color:red\">Widget {0} not found.<p>", widget.InnerText)
                        };
                    lit.Text += ex.Message;
                    if (widget.Attributes != null)
                    {
                        lit.Text +=
                            string.Format(
                                "<a class=\"delete\" href=\"#\" onclick=\"BlogEngine.widgetAdmin.removeWidget('{0}');return false\" title=\"{1} widget\">X</a>",
                                widget.Attributes["id"].InnerText,
                                labels.delete);
                    }

                    this.Controls.Add(lit);
                }
            }
        }