예제 #1
0
    /// <summary>
    /// Adds a widget of the specified type.
    /// </summary>
    /// <param name="type">The type of widget.</param>
    private void AddWidget(string type)
    {
        WidgetBase widget = (WidgetBase)LoadControl(Utils.RelativeWebRoot + "widgets/" + type + "/widget.ascx");

        widget.WidgetID  = Guid.NewGuid();
        widget.ID        = widget.WidgetID.ToString().Replace("-", string.Empty);
        widget.Title     = type;
        widget.ShowTitle = widget.DisplayHeader;
        widget.LoadWidget();

        Response.Clear();
        try
        {
            using (StringWriter sw = new StringWriter())
            {
                widget.RenderControl(new HtmlTextWriter(sw));
                Response.Write(sw);
            }
        }
        catch (System.Web.HttpException)
        {
            Response.Write("reload");
        }

        SaveNewWidget(widget);
        WidgetEditBase.OnSaved();
        Response.End();
    }
예제 #2
0
    /// <summary>
    /// Adds a widget of the specified type.
    /// </summary>
    /// <param name="type">The type of widget.</param>
    /// <param name="zone">The zone a widget is being added to.</param>
    private void AddWidget(string type, string zone)
    {
        WidgetBase widget = (WidgetBase)LoadControl(Utils.RelativeWebRoot + "widgets/" + type + "/widget.ascx");

        widget.WidgetID  = Guid.NewGuid();
        widget.ID        = widget.WidgetID.ToString().Replace("-", string.Empty);
        widget.Title     = type;
        widget.Zone      = zone;
        widget.ShowTitle = widget.DisplayHeader;
        widget.LoadWidget();

        Response.Clear();
        try
        {
            using (StringWriter sw = new StringWriter())
            {
                widget.RenderControl(new HtmlTextWriter(sw));

                // Using ? as a delimiter. ? is a safe delimiter because it cannot appear in a
                // zonename because ? is one of the characters removed by Utils.RemoveIllegalCharacters().
                Response.Write(zone + "?" + sw);
            }
        }
        catch (System.Web.HttpException)
        {
            Response.Write("reload");
        }

        SaveNewWidget(widget, zone);
        WidgetEditBase.OnSaved();
        Response.End();
    }
예제 #3
0
        /// <summary>
        /// Raises the <see cref="E:System.Web.UI.Control.Load"></see> event.
        /// </summary>
        /// <param name="e">The <see cref="T:System.EventArgs"></see> object that contains the event data.</param>
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            XmlNodeList zone = XML_DOCUMENT.SelectNodes("//widget");

            foreach (XmlNode widget in zone)
            {
                string fileName = Utils.RelativeWebRoot + "widgets/" + widget.InnerText + "/widget.ascx";
                try
                {
                    WidgetBase control = (WidgetBase)Page.LoadControl(fileName);
                    control.WidgetID = new Guid(widget.Attributes["id"].InnerText);
                    control.ID       = control.WidgetID.ToString().Replace("-", string.Empty);
                    control.Title    = widget.Attributes["title"].InnerText;
                    control.Zone     = _ZoneName;

                    if (control.IsEditable)
                    {
                        control.ShowTitle = bool.Parse(widget.Attributes["showTitle"].InnerText);
                    }
                    else
                    {
                        control.ShowTitle = control.DisplayHeader;
                    }

                    control.LoadWidget();
                    this.Controls.Add(control);
                }
                catch (Exception ex)
                {
                    Literal lit = new Literal();
                    lit.Text  = "<p style=\"color:red\">Widget " + widget.InnerText + " not found.<p>";
                    lit.Text += ex.Message;
                    lit.Text += "<a class=\"delete\" href=\"javascript:void(0)\" onclick=\"BlogEngine.widgetAdmin.removeWidget('" + widget.Attributes["id"].InnerText + "');return false\" title=\"" + Resources.labels.delete + " widget\">X</a>";

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