diff --git a/Scrummer/Code/Controls/ChatControl.cs b/Scrummer/Code/Controls/ChatControl.cs index f19b972..0cc7b86 100644 --- a/Scrummer/Code/Controls/ChatControl.cs +++ b/Scrummer/Code/Controls/ChatControl.cs @@ -1,10 +1,11 @@ using System; +using System.Text; using System.Web.UI; using System.Web.UI.WebControls; namespace Scrummer.Code.Controls { - public class ChatControl : Control + public class ChatControl : Control, INamingContainer { #region Declarations @@ -18,6 +19,7 @@ namespace Scrummer.Code.Controls private Unit _height = new Unit(300, UnitType.Pixel); private Panel _divChatWindow = null; + private Panel _divChatContainer = null; #endregion @@ -47,9 +49,9 @@ namespace Scrummer.Code.Controls set { _width = value; - if (_divChatWindow != null) + if (_divChatContainer != null) { - _divChatWindow.Width = value; + _divChatContainer.Width = value; } } } @@ -60,9 +62,9 @@ namespace Scrummer.Code.Controls set { _height = value; - if (_divChatWindow != null) + if (_divChatContainer != null) { - _divChatWindow.Height = value; + _divChatContainer.Height = value; } } } @@ -87,16 +89,21 @@ namespace Scrummer.Code.Controls private void InitializeControls() { + string strCfgName = string.Format("{0}_cfg", this.ClientID); + _divChatWindow = new Panel { ID = "divChatWindow", CssClass = "divChatWindow" }; Controls.Add(_divChatWindow); - _divChatWindow.Width = _width; - _divChatWindow.Height = _height; + + _divChatContainer = new Panel { ID = "divChatContainer", CssClass = "divChatContainer" }; + _divChatWindow.Controls.Add(_divChatContainer); + _divChatContainer.Width = _width; + _divChatContainer.Height = _height; var divChat = new Panel { ID = "divChat", CssClass = "divChat" }; - _divChatWindow.Controls.Add(divChat); + _divChatContainer.Controls.Add(divChat); var divChatControls = new Panel { ID = "divChatControls", CssClass = "divChatControls" }; - _divChatWindow.Controls.Add(divChatControls); + _divChatContainer.Controls.Add(divChatControls); var hidUserName = new HiddenField { ID = "hidUserName", Value = _userName }; divChatControls.Controls.Add(hidUserName); @@ -113,13 +120,29 @@ namespace Scrummer.Code.Controls var btnSend = new Button { ID = "btnSend", Text = "Send", CssClass = "chatButton" }; divChatControls.Controls.Add(btnSend); - btnSend.Attributes.Add("onclick", String.Format("SendChat('{0}', '{1}', {2}, '{3}'); return false;", - _serviceUrl, txtText.ClientID, _idBoard, hidUserName.ClientID)); + btnSend.Attributes.Add("onclick", String.Format("SendChat({0}); return false;", strCfgName)); - LiteralControl litScript = new LiteralControl(); - litScript.Text = String.Format("", - _serviceUrl, divChat.ClientID, _idBoard, hidIDMessage.ClientID, hidUserName.ClientID, hidLastUser.ClientID); - Controls.Add(litScript); + StringBuilder sbCfg = new StringBuilder(); + sbCfg.AppendFormat("\n"); + LiteralControl liScript = new LiteralControl(sbCfg.ToString()); + Controls.Add(liScript); } #endregion diff --git a/Scrummer/Code/Pages/FrmBoard.cs b/Scrummer/Code/Pages/FrmBoard.cs index a8e2222..99cc0ca 100644 --- a/Scrummer/Code/Pages/FrmBoard.cs +++ b/Scrummer/Code/Pages/FrmBoard.cs @@ -19,6 +19,7 @@ namespace Scrummer.Code.Pages Controls.Add(lblTest); ChatControl chatControl = new ChatControl(); + chatControl.ID = "ctrChat"; chatControl.IDBoard = _idBoard; chatControl.UserName = Convert.ToString(new Random().Next()); Controls.Add(chatControl); diff --git a/Scrummer/Scripts/10. Chat.js b/Scrummer/Scripts/10. Chat.js index 91d84e3..d52c2df 100644 --- a/Scrummer/Scripts/10. Chat.js +++ b/Scrummer/Scripts/10. Chat.js @@ -1,8 +1,8 @@ -function RunChat(serviceUrl, divContainer, idBoard, hidIDMessage, hidUserName, hidLastUser) { - divContainer = GetElement(divContainer); - hidIDMessage = GetElement(hidIDMessage); - hidUserName = GetElement(hidUserName); - hidLastUser = GetElement(hidLastUser); +function RunChat(cfg) { + cfg.divChat = GetElement(cfg.divChat); + cfg.hidIDMessage = GetElement(cfg.hidIDMessage); + cfg.hidUserName = GetElement(cfg.hidUserName); + cfg.hidLastUser = GetElement(cfg.hidLastUser); var CreateMessageDOM = function (message, selfMessage, showUserName) { var divMessageRow = document.createElement("DIV"); @@ -36,27 +36,27 @@ }; var RequestChatData = function () { - var requestUrl = serviceUrl + "?idBoard=" + idBoard + "&idMessage=" + hidIDMessage.value; + var requestUrl = cfg.ServiceUrl + "?idBoard=" + cfg.IDBoard + "&idMessage=" + cfg.hidIDMessage.value; var ReciveChatData = function (responseText) { recvMsgs = JSON.parse(responseText); if (recvMsgs) { - var idMessage = parseInt(hidIDMessage.value); + var idMessage = parseInt(cfg.hidIDMessage.value); var frag = document.createDocumentFragment(); for (var i = 0, n = recvMsgs.length; i < n; i++) { var msg = recvMsgs[i]; if (idMessage < msg.IDMessage) { - hidIDMessage.value = msg.IDMessage; + cfg.hidIDMessage.value = msg.IDMessage; idMessage = msg.IDMessage; var elemMessage = CreateMessageDOM(msg, - (msg.UserName == hidUserName.value), - (hidLastUser.value !== msg.UserName)); - hidLastUser.value = msg.UserName; + (msg.UserName == cfg.hidUserName.value), + (cfg.hidLastUser.value !== msg.UserName)); + cfg.hidLastUser.value = msg.UserName; frag.appendChild(elemMessage); } } - divContainer.appendChild(frag); - divContainer.scrollTop = divContainer.scrollHeight; + cfg.divChat.appendChild(frag); + cfg.divChat.scrollTop = cfg.divChat.scrollHeight; } // Reset pool @@ -78,20 +78,20 @@ RequestChatData(); } -function SendChat(serviceUrl, txtText, idBoard, hidUserName) { - txtText = GetElement(txtText); - hidUserName = GetElement(hidUserName); +function SendChat(cfg) { + cfg.txtText = GetElement(cfg.txtText); + cfg.hidUserName = GetElement(cfg.hidUserName); - if (txtText.value.trim() == "") { + if (cfg.txtText.value.trim() == "") { return; } var data = { - "text": txtText.value, - "idBoard": idBoard, - "userName": hidUserName.value + "text": cfg.txtText.value, + "idBoard": cfg.IDBoard, + "userName": cfg.hidUserName.value }; - txtText.value = ""; - SendData(serviceUrl, data, null, null); - txtText.focus(); + cfg.txtText.value = ""; + SendData(cfg.ServiceUrl, data, null, null); + cfg.txtText.focus(); }