using System; using System.Web.UI.WebControls; using System.Data; using CMS.DataEngine; using CMS.ExtendedControls; using CMS.GlobalHelper; using CMS.SettingsProvider; using CMS.UIControls; using CMS.WebFarmSync; using CMS.WebFarmSyncHelper; public partial class CMSModules_WebFarm_Pages_WebFarm_Task_List : SiteManagerPage { private const string allServers = "##ALL##"; private string selectedServer = allServers; /// /// Messages placeholder /// public override MessagesPlaceHolder MessagesPlaceHolder { get { return plcMess; } } protected override void OnPreInit(EventArgs e) { ((Panel)CurrentMaster.PanelBody.FindControl("pnlContent")).CssClass = ""; base.OnPreInit(e); } protected void Page_Load(object sender, EventArgs e) { UniGrid.OnAction += new OnActionEventHandler(uniGrid_OnAction); UniGrid.ZeroRowsText = GetString("WebFarmTasks_List.ZeroRows"); UniGrid.GridView.DataBound += new EventHandler(GridView_DataBound); UniGrid.GridView.RowDataBound += GridView_RowDataBound; lblServer.Text = GetString("WebFarmTasks_List.ServerLabel"); btnEmptyTasks.Text = GetString("WebFarmTasks_List.EmptyButton"); btnRunTasks.Text = GetString("WebFarmTasks_List.RunButton"); uniSelector.SpecialFields = new string[1,2] { { GetString("WebFarmList.All"), allServers } }; uniSelector.DropDownSingleSelect.AutoPostBack = true; if (RequestHelper.IsPostBack()) { selectedServer = ValidationHelper.GetString(uniSelector.Value, allServers); } if (selectedServer != allServers) { UniGrid.WhereCondition = "ServerName = '" + SqlHelperClass.GetSafeQueryString(selectedServer, false) + "'"; } } protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); UniGrid.GridView.Columns[1].Visible = (selectedServer == allServers); } protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { string code = ValidationHelper.GetString(((DataRowView)(e.Row.DataItem)).Row["ErrorMessage"], string.Empty); if (code != String.Empty) { string color = ((e.Row.RowIndex & 1) == 1) ? "#EEC9C9" : "#FFDADA"; e.Row.Style.Add("background-color", color); } } } protected void GridView_DataBound(object sender, EventArgs e) { btnEmptyTasks.Visible = !DataHelper.DataSourceIsEmpty(UniGrid.GridView.DataSource); btnRunTasks.Visible = !DataHelper.DataSourceIsEmpty(UniGrid.GridView.DataSource); } /// /// Handles the UniGrid's OnAction event. /// /// Name of item (button) that throws event /// ID (value of Primary key) of corresponding data row protected void uniGrid_OnAction(string actionName, object actionArgument) { if (actionName == "delete") { // Delete object from database if (selectedServer == allServers) { // Delete task object WebFarmTaskInfoProvider.DeleteWebFarmTaskInfo(Convert.ToInt32(actionArgument)); } else { // Get infos for task and server WebFarmTaskInfo wfti = WebFarmTaskInfoProvider.GetWebFarmTaskInfo(Convert.ToInt32(actionArgument)); WebFarmServerInfo wfsi = WebFarmServerInfoProvider.GetWebFarmServerInfo(selectedServer); // Delete task binding to server WebFarmTaskInfoProvider.DeleteServerTask(wfsi.ServerID, wfti.TaskID); } UniGrid.ReloadData(); } } /// /// Clear task list. /// protected void btnEmptyTasks_Click(object sender, EventArgs e) { // Delete all task for specified server (or all servers) switch (selectedServer) { case allServers: // delete all task objects WebFarmTaskInfoProvider.DeleteAllTaskInfo(); break; default: // delete bindings to specified server WebFarmTaskInfoProvider.DeleteAllTaskInfo(SqlHelperClass.GetSafeQueryString(selectedServer, false)); break; } UniGrid.ReloadData(); } /// /// Run task list. /// protected void btnRunTasks_Click(object sender, EventArgs e) { switch (selectedServer) { case allServers: WebSyncHelper.SynchronizeWebFarm(true); // Call synchronization method WebSyncHelper.ProcessMyTasks(); break; default: // Get the server info object WebFarmServerInfo wfsi = WebFarmServerInfoProvider.GetWebFarmServerInfo(SqlHelperClass.GetSafeQueryString(selectedServer, false)); // If server is enabled if (wfsi.ServerEnabled) { if (wfsi.ServerName.ToLowerCSafe() == WebSyncHelperClass.ServerName.ToLowerCSafe()) { // Call synchronization method WebSyncHelper.ProcessMyTasks(); } else { if (WebSyncHelperClass.Servers.Contains(wfsi.ServerID)) { WebFarmUpdaterAsync wfu = new WebFarmUpdaterAsync(); // Add server for sync wfu.Urls.Add(wfsi.ServerURL.TrimEnd('/') + WebSyncHelperClass.WebFarmUpdaterPage); } } } break; } UniGrid.ReloadData(); // Show info label ShowInformation(GetString("webfarmtasks.taskexecuted")); } }