using System; using System.Web.UI; using System.Web.UI.WebControls; using System.Xml; using CMS.FormControls; using CMS.GlobalHelper; using TreeNode = CMS.DocumentEngine.TreeNode; /// /// Form control for displaying and storing pinged trackback URLs. /// public partial class CMSModules_Blogs_FormControls_PingedUrls : FormEngineUserControl { #region "Variables" private string mValue = String.Empty; private XmlDocument xmlPinged = null; private XmlNodeList pingedList = null; private XmlNodeList readyList = null; private XmlNodeList waitingList = null; #endregion #region "Properties" /// /// Gets or sets field value. /// public override object Value { get { TreeNode node = (TreeNode)Form.EditedObject; mValue = ValidationHelper.GetString(node.GetValue("BlogPostPingedUrls"), ""); return mValue; } set { // Set XML for controls mValue = Convert.ToString(value); } } #endregion #region "Page events" protected void Page_Load(object sender, EventArgs e) { } protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); // Hide "Already pinged" label Label lblNotPinged = null; if (Form != null) { lblNotPinged = Form.FieldLabels["BlogPostPingedUrls"] as Label; if (lblNotPinged != null) { lblNotPinged.Visible = false; } } // Load data in prerender so that not-pinged urls control has time to save new values LoadFromXML(); } #endregion #region "Methods" /// /// Loads XML from given string. /// private void LoadXML(string value) { if (!String.IsNullOrEmpty(value)) { xmlPinged = new XmlDocument(); xmlPinged.LoadXml(value); if (xmlPinged.DocumentElement != null) { pingedList = xmlPinged.DocumentElement.SelectNodes("url[(@status!='ready') and (@status!='waiting')]"); readyList = xmlPinged.DocumentElement.SelectNodes("url[@status='ready']"); waitingList = xmlPinged.DocumentElement.SelectNodes("url[@status='waiting']"); } } } /// /// Loads labels with data from XML. /// protected void LoadFromXML() { LoadXML(Convert.ToString(Value)); // Check if is there anything to display if (((pingedList != null) && (pingedList.Count > 0)) || ((readyList != null) && (readyList.Count > 0)) || ((waitingList != null) && (waitingList.Count > 0))) { // Setup panel pnlPingedValues.Visible = true; pnlPingedValues.Controls.Add(new LiteralControl("")); // Go through all not pinged URLs if ((waitingList != null) && (waitingList.Count > 0)) { foreach (XmlNode node in waitingList) { Image img = null; Label lbl = null; pnlPingedValues.Controls.Add(new LiteralControl("")); pnlPingedValues.Controls.Add(new LiteralControl("")); pnlPingedValues.Controls.Add(new LiteralControl("")); pnlPingedValues.Controls.Add(new LiteralControl("")); } } // Go through all URLs which are ready for ping if ((readyList != null) && (readyList.Count > 0)) { foreach (XmlNode node in readyList) { Image img = null; Label lbl = null; pnlPingedValues.Controls.Add(new LiteralControl("")); pnlPingedValues.Controls.Add(new LiteralControl("")); pnlPingedValues.Controls.Add(new LiteralControl("")); pnlPingedValues.Controls.Add(new LiteralControl("")); } } // Go through all pinged URLs if ((pingedList != null) && (pingedList.Count > 0)) { foreach (XmlNode node in pingedList) { bool error = ValidationHelper.GetBoolean(node.Attributes["error"].Value, false); Image img = null; Label lbl = null; pnlPingedValues.Controls.Add(new LiteralControl("")); pnlPingedValues.Controls.Add(new LiteralControl("")); pnlPingedValues.Controls.Add(new LiteralControl("")); pnlPingedValues.Controls.Add(new LiteralControl("")); } } pnlPingedValues.Controls.Add(new LiteralControl("
")); // Add image img = new Image(); img.ImageUrl = GetImageUrl("CMSModules/CMS_Blog/pingwaiting.png"); img.ToolTip = GetString("blog.trackbacks.waiting"); pnlPingedValues.Controls.Add(img); pnlPingedValues.Controls.Add(new LiteralControl("")); // Add URL label lbl = new Label(); lbl.Text = node.Attributes["value"].Value; pnlPingedValues.Controls.Add(lbl); pnlPingedValues.Controls.Add(new LiteralControl("
")); // Add image img = new Image(); img.ImageUrl = GetImageUrl("CMSModules/CMS_Blog/pingready.png"); img.ToolTip = GetString("blog.trackbacks.ready"); pnlPingedValues.Controls.Add(img); pnlPingedValues.Controls.Add(new LiteralControl("")); // Add URL label lbl = new Label(); lbl.Text = node.Attributes["value"].Value; pnlPingedValues.Controls.Add(lbl); pnlPingedValues.Controls.Add(new LiteralControl("
")); // Add error image if (error) { img = new Image(); img.ImageUrl = GetImageUrl("CMSModules/CMS_Blog/pingerror.png"); if ((node != null) && (node.Attributes["message"] != null)) { img.ToolTip = GetString("blogs.trackbacks.failed") + ": " + node.Attributes["message"].Value; } pnlPingedValues.Controls.Add(img); } // Add error image else { img = new Image(); img.ImageUrl = GetImageUrl("CMSModules/CMS_Blog/pingok.png"); if ((node != null) && (node.Attributes["message"] != null)) { img.ToolTip = GetString("blogs.trackbacks.success"); } pnlPingedValues.Controls.Add(img); } pnlPingedValues.Controls.Add(new LiteralControl("")); // Add URL label lbl = new Label(); lbl.Text = node.Attributes["value"].Value; pnlPingedValues.Controls.Add(lbl); pnlPingedValues.Controls.Add(new LiteralControl("
")); } } #endregion }