/// <inheritdoc/> public IServer Update(IServer server, bool isReplace = true) { // Gets the staging server ServerInfo updateServer = ServerInfoProvider.GetServerInfo(server.ServerName, server.ServerSiteID); if (updateServer != null) { if (isReplace) { updateServer = server.UndoActLike(); } else { // Updates the server properties updateServer.ServerDisplayName = server.ServerDisplayName ?? updateServer.ServerDisplayName; updateServer.ServerURL = server.ServerURL ?? updateServer.ServerURL; updateServer.ServerEnabled = server.ServerEnabled == null ? updateServer.ServerEnabled : (bool)server.ServerEnabled; updateServer.ServerAuthentication = server.ServerAuthentication; updateServer.ServerUsername = server.ServerUsername ?? updateServer.ServerUsername; updateServer.ServerPassword = server.ServerPassword ?? updateServer.ServerPassword; } // Saves the updated server to the database ServerInfoProvider.SetServerInfo(updateServer); } return(updateServer.ActLike <IServer>()); }
/// <summary> /// Gets and bulk updates staging servers. Called when the "Get and bulk update servers" button is pressed. /// Expects the CreateStagingServer method to be run first. /// </summary> private bool GetAndBulkUpdateStagingServers() { // Prepare the parameters string where = "ServerName LIKE N'MyNewServer%'"; // Get the data for the current site DataSet servers = ServerInfoProvider.GetSiteServers(SiteContext.CurrentSiteID, where, null, -1, null, false); if (!DataHelper.DataSourceIsEmpty(servers)) { // Loop through the individual items foreach (DataRow serverDr in servers.Tables[0].Rows) { // Create object from DataRow ServerInfo modifyServer = new ServerInfo(serverDr); // Update the properties modifyServer.ServerDisplayName = modifyServer.ServerDisplayName.ToUpper(); // Save the changes ServerInfoProvider.SetServerInfo(modifyServer); } return(true); } return(false); }
/// <summary> /// Synchronizes all tasks. Called when the "Get and synchronize tasks" button is pressed. /// Expects the CreateStagingServer method to be run first and that there are tasks logged /// for the server. /// </summary> private bool GetAndSynchronizeTasks() { // Get server ServerInfo server = ServerInfoProvider.GetServerInfo("MyNewServer", SiteContext.CurrentSiteID); if (server != null) { // Get tasks for the server DataSet tasks = StagingTaskInfoProvider.SelectTaskList(SiteContext.CurrentSiteID, server.ServerID, null, null); if (!DataHelper.DataSourceIsEmpty(tasks)) { foreach (DataRow taskDr in tasks.Tables[0].Rows) { // Create task info object from data row StagingTaskInfo task = new StagingTaskInfo(taskDr); // Synchronize the task if (!string.IsNullOrEmpty(StagingHelper.RunSynchronization(task.TaskID, server.ServerID))) { apiGetAndSynchronizeTasks.ErrorMessage = "Synchronization failed."; return(false); } } return(true); } apiGetAndSynchronizeTasks.ErrorMessage = "No tasks found."; } return(false); }
protected override void OnPreRender(EventArgs e) { // Get task data if (taskId > 0) { StagingTaskInfo ti = StagingTaskInfoProvider.GetTaskInfo(taskId); if (ti != null) { lblInfo.Text += String.Format(GetString("Task.LogTaskInfo"), HTMLHelper.HTMLEncode(ti.TaskTitle)); } } // Get server data if (serverId > 0) { ServerInfo si = ServerInfoProvider.GetServerInfo(serverId); if (si != null) { if (lblInfo.Text != "") { lblInfo.Text += "<br /><br />"; } lblInfo.Text += String.Format(GetString("Task.LogServerInfo"), si.ServerDisplayName); } } lblInfo.Visible = (lblInfo.Text != ""); base.OnPreRender(e); }
protected void Page_Load(object sender, EventArgs e) { // Check 'Manage servers' permission if (!CMSContext.CurrentUser.IsAuthorizedPerResource("cms.staging", "ManageServers")) { RedirectToAccessDenied("cms.staging", "ManageServers"); } rfvServerDisplayName.ErrorMessage = GetString("Server_Edit.ErrorEmptyServerDisplayName"); rfvServerName.ErrorMessage = GetString("Server_Edit.ErrorEmptyServerCodeName"); rfvServerURL.ErrorMessage = GetString("Server_Edit.ErrorEmptyServerURL"); radUserName.CheckedChanged += Authentication_CheckedChanged; radX509.CheckedChanged += Authentication_CheckedChanged; ScriptHelper.RegisterStartupScript(this, typeof(string), "setHelpTopic", ScriptHelper.GetScript("parent.frames['stagingHeader'].SetHelpTopic('helpTopic', 'new_server');")); string currentServer = GetString("Server_Edit.NewItemCaption"); serverID = QueryHelper.GetInteger("serverID", 0); if (serverID > 0) { // Check hash if (!QueryHelper.ValidateHash("hash")) { RedirectToAccessDenied(ResHelper.GetString("dialogs.badhashtitle")); } if (!RequestHelper.IsPostBack() && (Request.QueryString["saved"] != null)) { lblInfo.Visible = true; lblInfo.Text = GetString("General.ChangesSaved"); } serverObj = ServerInfoProvider.GetServerInfo(serverID); // Set edited object EditedObject = serverObj; currentServer = serverObj.ServerDisplayName; // Fill editing form if (!RequestHelper.IsPostBack()) { LoadData(serverObj); } } // Associate server checker control serverChecker.TextBoxControlID = txtServerURL.ID; // Initializes page title control InitializeBreadcrumbs(currentServer); if (serverID > 0) { CurrentMaster.Title.TitleImage = GetImageUrl("Objects/Staging_Server/object.png"); } else { CurrentMaster.Title.TitleImage = GetImageUrl("Objects/Staging_Server/new.png"); } }
/// <summary> /// Deletes staging tasks. Called when the "Delete tasks" button is pressed. /// Expects the CreateStagingServer method to be run first. /// </summary> private bool DeleteTasks() { // Get server ServerInfo server = ServerInfoProvider.GetServerInfo("MyNewServer", SiteContext.CurrentSiteID); if (server != null) { // Get tasks for the server DataSet tasks = StagingTaskInfoProvider.SelectTaskList(SiteContext.CurrentSiteID, server.ServerID, null, null); if (!DataHelper.DataSourceIsEmpty(tasks)) { foreach (DataRow taskDr in tasks.Tables[0].Rows) { // Create task info object from data row StagingTaskInfo deleteTask = new StagingTaskInfo(taskDr); // Delete the task StagingTaskInfoProvider.DeleteTaskInfo(deleteTask); } return(true); } apiDeleteTasks.ErrorMessage = "No tasks found."; } return(false); }
/// <summary> /// Custom Staging Task generation /// </summary> /// <param name="RelationshipSiteObj"></param> /// <param name="TaskType"></param> private void RelationshipNameSite_CreateStagingTask(RelationshipNameSiteInfo RelationshipSiteObj, TaskTypeEnum TaskType) { List <ServerInfo> ActiveServers = ServerInfoProvider.GetServers().WhereEquals("ServerSiteID", SiteContext.CurrentSiteID).WhereEquals("ServerEnabled", true).ToList(); RelationshipNameInfo RelationshipObj = RelationshipNameInfoProvider.GetRelationshipNameInfo(RelationshipSiteObj.RelationshipNameID); // If relationship obj is already gone, then the Site deletion thing is already handled with the deletion of the relationship name. if (RelationshipObj == null) { return; } if (IsCustomAdhocRelationshipName(RelationshipObj) && ActiveServers.Count > 0) { string Data = "<NewDataSet>" + RelationshipObj.ToXML("CMS_RelationshipName", false) + "</NewDataSet>"; string TaskTitle = ""; string TaskTitleEnd = ""; switch (TaskType) { case TaskTypeEnum.AddToSite: TaskTitle = "Add"; TaskTitleEnd = "to"; break; case TaskTypeEnum.RemoveFromSite: TaskTitle = "Remove"; TaskTitleEnd = "from"; break; } StagingTaskInfo SiteTask = new CMS.Synchronization.StagingTaskInfo() { TaskTitle = string.Format("{0} Relationship name '{1}' {2} site", TaskTitle, RelationshipObj.RelationshipDisplayName, TaskTitleEnd), TaskType = TaskType, TaskObjectType = RelationshipNameInfo.OBJECT_TYPE, TaskObjectID = RelationshipObj.RelationshipNameId, TaskData = Data, TaskTime = DateTime.Now, TaskSiteID = SiteContext.CurrentSiteID }; StagingTaskInfoProvider.SetTaskInfo(SiteTask); foreach (ServerInfo ServerObj in ActiveServers) { // Create synchronization SynchronizationInfo SyncSiteInfo = new SynchronizationInfo() { SynchronizationTaskID = SiteTask.TaskID, SynchronizationServerID = ServerObj.ServerID }; SynchronizationInfoProvider.SetSynchronizationInfo(SyncSiteInfo); } TaskGroupInfo TaskGroup = TaskGroupInfoProvider.GetUserTaskGroupInfo(MembershipContext.AuthenticatedUser.UserID); if (TaskGroup != null) { TaskGroupTaskInfoProvider.AddTaskGroupToTask(TaskGroup.TaskGroupID, SiteTask.TaskID); } } }
/// <summary> /// Deletes staging server. Called when the "Delete server" button is pressed. /// Expects the CreateStagingServer method to be run first. /// </summary> private bool DeleteStagingServer() { // Get the staging server ServerInfo deleteServer = ServerInfoProvider.GetServerInfo("MyNewServer", SiteContext.CurrentSiteID); // Delete the staging server ServerInfoProvider.DeleteServerInfo(deleteServer); return(deleteServer != null); }
public HttpResponseMessage ShowGeneralInformation() { string serverName = "", url = "", lastModified = "", lastStart = ""; SiteInfo site; string siteName = "", siteDomainName = "", siteLastModified = "", licenseExpiration = ""; ServerInfo serverInfo; long virtualMemory, workingPeak; try { siteName = SiteContext.CurrentSiteName; serverName = StagingTaskInfoProvider.ServerName; site = SiteContext.CurrentSite; if (site != null) { siteDomainName = site.DomainName; siteLastModified = site.SiteLastModified.ToShortDateString(); serverInfo = ServerInfoProvider.GetServerInfo(serverName, site.SiteID); if (serverInfo != null) { lastModified = serverInfo.ServerLastModified.ToShortDateString(); } } lastStart = CMSApplication.ApplicationStart.ToShortDateString(); virtualMemory = SystemHelper.GetVirtualMemorySize(); workingPeak = SystemHelper.GetPeakWorkingSetSize(); licenseExpiration = LicenseHelper.ApplicationExpires.ToShortDateString(); //everything is OK, general information are also returned return(Request.CreateResponse(HttpStatusCode.OK, new { serverName = serverName, serverURL = url, serverLastModified = lastModified, serverLastStart = lastStart, virtualMemory = virtualMemory, workingPeak = workingPeak, siteName = siteName, siteDomainName = siteDomainName, siteLastModified = siteLastModified, licenseExpiration = licenseExpiration, })); } catch (NullReferenceException e) { return(Request.CreateResponse(HttpStatusCode.BadRequest, new { errorMessage = e.Message })); } catch (Exception e) { return(Request.CreateResponse(HttpStatusCode.ServiceUnavailable, new { errorMessage = e.Message })); } }
/// <inheritdoc/> public void Delete(IServer server) { // Gets the staging server ServerInfo deleteServer = ServerInfoProvider.GetServerInfo(server.ServerName, server.ServerSiteID); if (deleteServer != null) { // Deletes the staging server ServerInfoProvider.DeleteServerInfo(deleteServer); } }
protected void Page_Load(object sender, EventArgs e) { string siteName = CMSContext.CurrentSiteName; // Check enabled servers if (!ServerInfoProvider.IsEnabledServer(CMSContext.CurrentSiteID)) { lblInfo.Text = GetString("ObjectStaging.NoEnabledServer"); } else { // Check logging bool somethingLogged = false; // Site object tasks if (SettingsKeyProvider.GetBoolValue(siteName + ".CMSStagingLogObjectChanges")) { somethingLogged = true; } // Global object tasks if (SettingsKeyProvider.GetBoolValue("CMSStagingLogObjectChanges")) { somethingLogged = true; } // Document tasks if (SettingsKeyProvider.GetBoolValue(siteName + ".CMSStagingLogChanges")) { somethingLogged = true; } // Data tasks if (SettingsKeyProvider.GetBoolValue("CMSStagingLogDataChanges")) { somethingLogged = true; } if (somethingLogged) { // Check DLL required for for staging if (SiteManagerFunctions.CheckStagingDLL()) { URLHelper.Redirect("Frameset.aspx"); } lblInfo.Text = GetString("ObjectStaging.RenameDll"); } else { lblInfo.Text = GetString("AllTasks.TaskSeparator"); } } }
/// <summary> /// Creates the Staging Task manually /// </summary> /// <param name="RelationshipObj"></param> /// <param name="TaskType"></param> private void RelationshipName_CreateStagingTask(RelationshipNameInfo RelationshipObj, TaskTypeEnum TaskType) { List <ServerInfo> ActiveServers = ServerInfoProvider.GetServers().WhereEquals("ServerSiteID", SiteContext.CurrentSiteID).WhereEquals("ServerEnabled", true).ToList(); if (IsCustomAdhocRelationshipName(RelationshipObj) && ActiveServers.Count > 0) { string Data = "<NewDataSet>" + RelationshipObj.ToXML("CMS_RelationshipName", false) + "</NewDataSet>"; string TaskTitle = ""; switch (TaskType) { case TaskTypeEnum.CreateObject: TaskTitle = "Create"; break; case TaskTypeEnum.UpdateObject: TaskTitle = "Update"; break; case TaskTypeEnum.DeleteObject: TaskTitle = "Delete"; break; } StagingTaskInfo Task = new StagingTaskInfo() { TaskTitle = string.Format("{0} Relationship name '{1}'", TaskTitle, RelationshipObj.RelationshipDisplayName), TaskType = TaskType, TaskObjectType = RelationshipNameInfo.OBJECT_TYPE, TaskObjectID = RelationshipObj.RelationshipNameId, TaskData = Data, TaskTime = DateTime.Now }; StagingTaskInfoProvider.SetTaskInfo(Task); foreach (ServerInfo ServerObj in ActiveServers) { // Create synchronization SynchronizationInfo SyncInfo = new SynchronizationInfo() { SynchronizationTaskID = Task.TaskID, SynchronizationServerID = ServerObj.ServerID }; SynchronizationInfoProvider.SetSynchronizationInfo(SyncInfo); } TaskGroupInfo TaskGroup = TaskGroupInfoProvider.GetUserTaskGroupInfo(MembershipContext.AuthenticatedUser.UserID); if (TaskGroup != null) { TaskGroupTaskInfoProvider.AddTaskGroupToTask(TaskGroup.TaskGroupID, Task.TaskID); } } }
/// <summary> /// Loads the page. /// </summary> /// <param name="e">Event arguments</param> protected override void OnLoad(EventArgs e) { base.OnLoad(e); CheckPermissions(); CurrentMaster.DisplaySiteSelectorPanel = true; // Check enabled servers var isCallback = RequestHelper.IsCallback(); if (!isCallback && !ServerInfoProvider.IsEnabledServer(SiteContext.CurrentSiteID)) { ShowInformation(GetString("ObjectStaging.NoEnabledServer")); HideUI(); return; } InitServerSelector(); mCurrentTaskGroup = TaskGroupInfoProvider.GetTaskGroupInfo(UIContext.ObjectID); // Register script for pendingCallbacks repair ScriptHelper.FixPendingCallbacks(Page); if (!isCallback) { CheckPermissions(); PrepareDisabledModuleInfo(); if (!ucDisabledModule.Check()) { HideUI(); return; } ScriptHelper.RegisterDialogScript(this); // Setup title if (!ControlsHelper.CausedPostBack(btnSyncSelected, btnSyncAll)) { plcContent.Visible = true; InitButtons(); InitUniGrid(); TaskGroupSelectorEnabled = false; pnlLog.Visible = false; } } }
/// <summary> /// Handles the UniGrid's OnAction event. /// </summary> /// <param name="actionName">Name of item (button) that throws event</param> /// <param name="actionArgument">ID (value of Primary key) of corresponding data row</param> protected void uniGrid_OnAction(string actionName, object actionArgument) { switch (actionName.ToLower()) { case "edit": string detailUrl = "Server_Edit.aspx?serverid=" + Convert.ToString(actionArgument); detailUrl = URLHelper.AddParameterToUrl(detailUrl, "hash", QueryHelper.GetHash(detailUrl)); URLHelper.Redirect(detailUrl); break; case "delete": ServerInfoProvider.DeleteServerInfo(Convert.ToInt32(actionArgument)); break; } }
protected void Page_Load(object sender, EventArgs e) { // Check enabled servers if (!ServerInfoProvider.IsEnabledServer(CMSContext.CurrentSiteID)) { ShowInformation(GetString("ObjectStaging.NoEnabledServer")); } else { // Check DLL required for for staging if (SiteManagerFunctions.CheckStagingDLL()) { URLHelper.Redirect("Frameset.aspx"); } ShowInformation(GetString("ObjectStaging.RenameDll")); } }
protected void Page_Load(object sender, EventArgs e) { // Check enabled servers if (!ServerInfoProvider.IsEnabledServer(SiteContext.CurrentSiteID)) { ShowInformation(GetString("ObjectStaging.NoEnabledServer")); } else { // Check DLL required for for staging if (SystemContext.IsFullTrustLevel) { URLHelper.Redirect("Frameset.aspx"); } ShowInformation(GetString("objectstaging.fulltrustrequired")); } }
/// <summary> /// Gets and updates staging server. Called when the "Get and update server" button is pressed. /// Expects the CreateStagingServer method to be run first. /// </summary> private bool GetAndUpdateStagingServer() { // Get the staging server ServerInfo updateServer = ServerInfoProvider.GetServerInfo("MyNewServer", SiteContext.CurrentSiteID); if (updateServer != null) { // Update the properties updateServer.ServerDisplayName = updateServer.ServerDisplayName.ToLowerCSafe(); // Save the changes ServerInfoProvider.SetServerInfo(updateServer); return(true); } return(false); }
/// <inheritdoc/> public IServer Create(IServer server) { var newServer = new ServerInfo { ServerDisplayName = server.ServerDisplayName, ServerName = server.ServerName, ServerEnabled = (bool)server.ServerEnabled, ServerURL = server.ServerURL, ServerAuthentication = server.ServerAuthentication, ServerUsername = server.ServerUsername, ServerPassword = server.ServerPassword, ServerSiteID = server.ServerSiteID, }; // Saves the staging server to the database ServerInfoProvider.SetServerInfo(newServer); return(newServer.ActLike <IServer>()); }
/// <summary> /// Creates staging server. Called when the "Create server" button is pressed. /// </summary> private bool CreateStagingServer() { // Create new staging server object ServerInfo newServer = new ServerInfo(); // Set the properties newServer.ServerDisplayName = "My new server"; newServer.ServerName = "MyNewServer"; newServer.ServerEnabled = true; newServer.ServerSiteID = SiteContext.CurrentSiteID; newServer.ServerURL = "http://localhost/KenticoCMS/"; newServer.ServerAuthentication = ServerAuthenticationEnum.UserName; newServer.ServerUsername = "******"; newServer.ServerPassword = "******"; // Save the staging server ServerInfoProvider.SetServerInfo(newServer); return(true); }
protected void Page_Load(object sender, EventArgs e) { if (CultureHelper.IsUICultureRTL()) { ControlsHelper.ReverseFrames(colsFrameset); } // Check 'Manage object tasks' permission if (!MembershipContext.AuthenticatedUser.IsAuthorizedPerResource("cms.staging", "ManageObjectsTasks")) { RedirectToAccessDenied("cms.staging", "ManageObjectsTasks"); } // Check enabled servers if (!ServerInfoProvider.IsEnabledServer(SiteContext.CurrentSiteID)) { URLHelper.Redirect(UrlResolver.ResolveUrl("Tasks.aspx")); } ScriptHelper.HideVerticalTabs(this); }
protected void Page_Load(object sender, EventArgs e) { // Check enabled servers if (!ServerInfoProvider.IsEnabledServer(CMSContext.CurrentSiteID)) { lblInfo.Text = GetString("ObjectStaging.NoEnabledServer"); } else if (SettingsKeyProvider.GetBoolValue("CMSStagingLogDataChanges")) { // Check DLL required for for staging if (SiteManagerFunctions.CheckStagingDLL()) { URLHelper.Redirect("Frameset.aspx"); } lblInfo.Text = GetString("ObjectStaging.RenameDll"); } else { lblInfo.Text = GetString("DataStaging.TaskSeparator"); } }
protected override void OnLoad(EventArgs e) { base.OnLoad(e); // Check 'Manage object tasks' permission if (!CurrentUser.IsAuthorizedPerResource("cms.staging", "ManageAllTasks")) { RedirectToAccessDenied("cms.staging", "ManageAllTasks"); } CurrentMaster.DisplaySiteSelectorPanel = true; // Check enabled servers var isCallback = RequestHelper.IsCallback(); if (!isCallback && !ServerInfoProvider.IsEnabledServer(SiteContext.CurrentSiteID)) { ShowInformation(GetString("ObjectStaging.NoEnabledServer")); CurrentMaster.PanelHeader.Visible = false; plcContent.Visible = false; pnlFooter.Visible = false; return; } // Setup server dropdown selectorElem.DropDownList.AutoPostBack = true; selectorElem.UniSelector.OnSelectionChanged += UniSelector_OnSelectionChanged; // Set server ID SelectedServerID = ValidationHelper.GetInteger(selectorElem.Value, 0); // All servers if (SelectedServerID == UniSelector.US_ALL_RECORDS) { SelectedServerID = 0; } // Register script for pendingCallbacks repair ScriptHelper.FixPendingCallbacks(Page); if (!isCallback) { // Check 'Manage object tasks' permission if (!CurrentUser.IsAuthorizedPerResource("cms.staging", "ManageAllTasks")) { RedirectToAccessDenied("cms.staging", "ManageAllTasks"); } ucDisabledModule.TestAnyKey = true; ucDisabledModule.TestSettingKeys = "CMSStagingLogObjectChanges;CMSStagingLogDataChanges;CMSStagingLogChanges"; ucDisabledModule.ParentPanel = pnlNotLogged; ucDisabledModule.InfoText = GetString("staging.disabledModule.allTasks"); if (!ucDisabledModule.Check()) { CurrentMaster.PanelHeader.Visible = false; plcContent.Visible = false; pnlFooter.Visible = false; return; } // Register the dialog script ScriptHelper.RegisterDialogScript(this); // Setup title if (!ControlsHelper.CausedPostBack(btnSyncSelected, btnSyncAll)) { plcContent.Visible = true; // Initialize buttons btnDeleteAll.OnClientClick = "return confirm(" + ScriptHelper.GetString(GetString("Tasks.ConfirmDeleteAll")) + ");"; btnDeleteSelected.OnClientClick = "return confirm(" + ScriptHelper.GetString(GetString("general.confirmdelete")) + ");"; btnSyncSelected.OnClientClick = "return !" + gridTasks.GetCheckSelectionScript(); // Initialize grid gridTasks.ZeroRowsText = GetString("Tasks.NoTasks"); gridTasks.OnDataReload += gridTasks_OnDataReload; gridTasks.ShowActionsMenu = true; gridTasks.Columns = "TaskID, TaskSiteID, TaskDocumentID, TaskNodeAliasPath, TaskTitle, TaskTime, TaskType, TaskObjectType, TaskObjectID, TaskRunning, (SELECT COUNT(*) FROM Staging_Synchronization WHERE SynchronizationTaskID = TaskID AND SynchronizationErrorMessage IS NOT NULL AND (SynchronizationServerID = @ServerID OR (@ServerID = 0 AND (@TaskSiteID = 0 OR SynchronizationServerID IN (SELECT ServerID FROM Staging_Server WHERE ServerSiteID = @TaskSiteID AND ServerEnabled=1))))) AS FailedCount"; StagingTaskInfo ti = new StagingTaskInfo(); gridTasks.AllColumns = SqlHelper.MergeColumns(ti.ColumnNames); pnlLog.Visible = false; } } }
/// <summary> /// Sets data to database. /// </summary> protected void btnOK_Click(object sender, EventArgs e) { // Check 'Manage servers' permission if (!CMSContext.CurrentUser.IsAuthorizedPerResource("cms.staging", "ManageServers")) { RedirectToAccessDenied("cms.staging", "ManageServers"); } string errorMessage = new Validator().NotEmpty(txtServerDisplayName, GetString("General.requiresDisplayName")).NotEmpty(txtServerName, GetString("General.RequiresCodeName")). IsCodeName(txtServerName.Text, GetString("general.invalidcodename")) .Result; if (errorMessage == "") { // Server name must be unique serverObj = ServerInfoProvider.GetServerInfo(txtServerName.Text.Trim(), CMSContext.CurrentSite.SiteID); // If server name is unique if ((serverObj == null) || (serverObj.ServerID == serverID)) { // If server name is unique -> determine whether it is update or insert if ((serverObj == null)) { // Get ServerInfo object by primary key serverObj = ServerInfoProvider.GetServerInfo(serverID) ?? new ServerInfo(); } serverObj.ServerSiteID = CMSContext.CurrentSite.SiteID; serverObj.ServerX509ServerKeyID = txtServerX509ServerKeyID.Text.Trim(); serverObj.ServerPassword = encryptedPassword.Value.ToString(); serverObj.ServerAuthentication = (radX509.Checked) ? ServerAuthenticationEnum.X509 : ServerAuthenticationEnum.UserName; serverObj.ServerDisplayName = txtServerDisplayName.Text.Trim(); serverObj.ServerURL = txtServerURL.Text.Trim(); serverObj.ServerX509ClientKeyID = txtServerX509ClientKeyID.Text.Trim(); serverObj.ServerName = txtServerName.Text.Trim(); serverObj.ServerUsername = txtServerUsername.Text.Trim(); serverObj.ServerEnabled = chkServerEnabled.Checked; ServerInfoProvider.SetServerInfo(serverObj); // Refresh breadcrumbs InitializeBreadcrumbs(serverObj.ServerDisplayName); ShowChangesSaved(); if (serverID <= 0) { string detailUrl = "Server_Edit.aspx?serverid=" + serverObj.ServerID + "&saved=1"; detailUrl = URLHelper.AddParameterToUrl(detailUrl, "hash", QueryHelper.GetHash(detailUrl)); URLHelper.Redirect(detailUrl); } } else { ShowError(GetString("Server_Edit.ServerNameExists")); } } else { ShowError(errorMessage); } }
/// <summary> /// Handles the logic of assigning categories to the document. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void SaveToDocumentCategories() { SetPossibleAndSelectedCategories(); // Do check of min/max here // Do check of min/max here if (MinimumCategories > 0 && SelectedCategories.Count() < MinimumCategories) { AddError("Must select at least " + MinimumCategories + " " + (MinimumCategories == 1 ? "category" : "categories")); return; } if (MaximumCategories > 0 && SelectedCategories.Count() > MaximumCategories) { AddError("Can select no more than " + MaximumCategories + " " + (MaximumCategories == 1 ? "category" : "categories")); return; } int DocumentID = ValidationHelper.GetInteger(PageDocument.GetValue("DocumentID"), -1); // Can only do Document/Category if there is a DocumentID on the current object. if (DocumentID > 0) { // Get selected categories, except only those in the possible categories List <int> DocumentCategoryIds = new List <int>(); foreach (var DocCategory in DocumentCategoryInfoProvider.GetDocumentCategories(DocumentID)) { DocumentCategoryIds.Add(DocCategory.CategoryID); } // Find IDs we need to add and remove. List <int> NotSelectedIds = PossibleCategoryIDs.Except(SelectedCategoryIDs).ToList(); List <int> DeselectIds = DocumentCategoryIds.Intersect(NotSelectedIds).ToList(); List <int> SelectIds = SelectedCategoryIDs.Except(DocumentCategoryIds).ToList(); bool CategoriesChanged = false; foreach (int DeselectId in DeselectIds) { DocumentCategoryInfoProvider.DeleteDocumentCategoryInfo(DocumentID, DeselectId); CategoriesChanged = true; } foreach (int SelectId in SelectIds) { DocumentCategoryInfoProvider.AddDocumentToCategory(DocumentID, SelectId); CategoriesChanged = true; } // Page changes require custom logic for staging if (CategoriesChanged && LicenseHelper.CheckFeature(Request.Url.AbsoluteUri, FeatureEnum.Staging)) { TreeProvider tree = new TreeProvider(MembershipContext.AuthenticatedUser); List <ServerInfo> targetServers = ServerInfoProvider.GetServers().Where(x => x.ServerSiteID == SiteContext.CurrentSiteID && x.ServerEnabled).ToList(); foreach (ServerInfo targetServer in targetServers) { var docObj = DocumentHelper.GetDocument(DocumentID, tree); var settings = new LogMultipleDocumentChangeSettings() { EnsurePublishTask = true, NodeAliasPath = docObj.NodeAliasPath, TaskType = TaskTypeEnum.UpdateDocument, ServerID = targetServer.ServerID, KeepTaskData = false, RunAsynchronously = false, SiteName = docObj.Site.SiteName }; // Logs parent task, which will run through the task on insert event and do the same check. var currentNodeUpdateTask = DocumentSynchronizationHelper.LogDocumentChange(settings); } } AddConfirmation(string.Format("{0} Categories Added, {1} Categories Removed.", SelectIds.Count, DeselectIds.Count)); } }
/// <inheritdoc/> public IServer GetServer(int id) { return((ServerInfoProvider.GetServerInfo(id) as ServerInfo)?.ActLike <IServer>()); }
/// <inheritdoc/> public IServer GetServer(string serverName, int serverSiteId) { return((ServerInfoProvider.GetServerInfo(serverName, serverSiteId) as ServerInfo)?.ActLike <IServer>()); }
private IEnumerable <KeyValuePair <string, string> > GetMetricData() { string stringData = null; IEnumerable <KeyValuePair <string, string> > tupleData = null; // Gather data for each row, return special message if data is null switch (MetricCodeName) { // Categories case MetricDataEnum.support_metrics: case MetricDataEnum.support_metrics_system: case MetricDataEnum.support_metrics_environment: case MetricDataEnum.support_metrics_counters: case MetricDataEnum.support_metrics_ecommerce: case MetricDataEnum.support_metrics_tasks: case MetricDataEnum.support_metrics_eventlog: return(null); #region System case MetricDataEnum.support_metrics_system_version: stringData = CMSVersion.GetVersion(true, true, true, true); break; case MetricDataEnum.support_metrics_system_appname: stringData = SettingsHelper.AppSettings["CMSApplicationName"]; break; case MetricDataEnum.support_metrics_system_instancename: stringData = SystemContext.InstanceName; break; case MetricDataEnum.support_metrics_system_physicalpath: stringData = SystemContext.WebApplicationPhysicalPath; break; case MetricDataEnum.support_metrics_system_apppath: stringData = SystemContext.ApplicationPath; break; case MetricDataEnum.support_metrics_system_uiculture: stringData = LocalizationContext.CurrentUICulture.CultureName; break; case MetricDataEnum.support_metrics_system_installtype: stringData = SystemContext.IsWebApplicationProject ? "Web App" : "Web site"; break; case MetricDataEnum.support_metrics_system_portaltemplatepage: stringData = URLHelper.PortalTemplatePage; break; case MetricDataEnum.support_metrics_system_timesinceapprestart: stringData = (DateTime.Now - CMSApplication.ApplicationStart).ToString(@"dd\:hh\:mm\:ss"); break; case MetricDataEnum.support_metrics_system_discoveredassemblies: tupleData = AssemblyDiscoveryHelper.GetAssemblies(true).Select((a, i) => GetKeyValuePair(i, a.FullName)); break; case MetricDataEnum.support_metrics_system_targetframework: HttpRuntimeSection httpRuntime = ConfigurationManager.GetSection("system.web/httpRuntime") as HttpRuntimeSection; stringData = httpRuntime.TargetFramework; break; case MetricDataEnum.support_metrics_system_authmode: AuthenticationSection Authentication = ConfigurationManager.GetSection("system.web/authentication") as AuthenticationSection; stringData = Authentication?.Mode.ToString(); break; case MetricDataEnum.support_metrics_system_sessionmode: SessionStateSection SessionState = ConfigurationManager.GetSection("system.web/sessionState") as SessionStateSection; stringData = SessionState?.Mode.ToString(); break; case MetricDataEnum.support_metrics_system_debugmode: CompilationSection Compilation = ConfigurationManager.GetSection("system.web/compilation") as CompilationSection; stringData = Compilation?.Debug.ToString(); break; case MetricDataEnum.support_metrics_system_runallmanagedmodules: var xmlDoc = new System.Xml.XmlDocument(); xmlDoc.Load(URLHelper.GetPhysicalPath("~/Web.config")); stringData = xmlDoc.SelectSingleNode("/configuration/system.webServer/modules").Attributes["runAllManagedModulesForAllRequests"]?.Value; break; #endregion System #region Environment case MetricDataEnum.support_metrics_environment_trustlevel: AspNetHostingPermissionLevel trustLevel = AspNetHostingPermissionLevel.None; if (!SystemContext.IsWebSite) { trustLevel = AspNetHostingPermissionLevel.Unrestricted; } // Check the trust level by evaluation of levels foreach (AspNetHostingPermissionLevel permissionLevel in new[] { AspNetHostingPermissionLevel.Unrestricted, AspNetHostingPermissionLevel.High, AspNetHostingPermissionLevel.Medium, AspNetHostingPermissionLevel.Low, AspNetHostingPermissionLevel.Minimal }) { try { new AspNetHostingPermission(permissionLevel).Demand(); } catch (SecurityException) { continue; } trustLevel = permissionLevel; break; } stringData = trustLevel.ToString(); break; case MetricDataEnum.support_metrics_environment_iisversion: stringData = MetricServerVariables["SERVER_SOFTWARE"]; break; case MetricDataEnum.support_metrics_environment_https: stringData = MetricServerVariables["HTTPS"]; break; case MetricDataEnum.support_metrics_environment_windowsversion: using (RegistryKey versionKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion")) { var productName = versionKey?.GetValue("ProductName"); var currentBuild = versionKey?.GetValue("CurrentBuild"); var releaseId = versionKey?.GetValue("ReleaseId"); stringData = String.Format("{0}, build {1}, release {2}", productName.ToString(), currentBuild.ToString(), releaseId.ToString()); } break; case MetricDataEnum.support_metrics_environment_netversion: using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\")) { var keyValue = ndpKey?.GetValue("Release"); if (keyValue != null) { var releaseKey = (int)keyValue; if (releaseKey >= 461808) { stringData = "4.7.2 or later"; } else if (releaseKey >= 461308) { stringData = "4.7.1"; } else if (releaseKey >= 460798) { stringData = "4.7"; } else if (releaseKey >= 394802) { stringData = "4.6.2"; } else if (releaseKey >= 394254) { stringData = "4.6.1"; } else if (releaseKey >= 393295) { stringData = "4.6"; } else if (releaseKey >= 379893) { stringData = "4.5.2"; } else if (releaseKey >= 378675) { stringData = "4.5.1"; } else if (releaseKey >= 378389) { stringData = "4.5"; } } } break; case MetricDataEnum.support_metrics_environment_sqlserverversion: var dtm = new TableManager(null); stringData = dtm.DatabaseServerVersion; break; case MetricDataEnum.support_metrics_environment_azure: var azureStats = new Dictionary <string, string>(4) { { "Is a Cloud Service", (SettingsHelper.AppSettings["CMSAzureProject"] == "true").ToString("false") }, { "Is file system on Azure", (SettingsHelper.AppSettings["CMSExternalStorageName"] == "azure").ToString("false") }, { "Azure storage account", SettingsHelper.AppSettings["CMSAzureAccountName"] ?? String.Empty }, { "Azure CDN endpoint", SettingsHelper.AppSettings["CMSAzureCDNEndpoint"] ?? String.Empty } }; tupleData = azureStats.Select(s => GetKeyValuePair(s.Key, s.Value)); break; case MetricDataEnum.support_metrics_environment_amazon: var amazonStats = new Dictionary <string, string>(3) { { "Is file system on Amazon", (SettingsHelper.AppSettings["CMSExternalStorageName"] == "amazon").ToString() }, { "Amazon bucket name", SettingsHelper.AppSettings["CMSAmazonBucketName"] ?? String.Empty }, { "Amazon public access", SettingsHelper.AppSettings["CMSAmazonPublicAccess"] ?? String.Empty }, }; tupleData = amazonStats.Select(s => GetKeyValuePair(s.Key, s.Value)); break; case MetricDataEnum.support_metrics_environment_services: tupleData = ServiceManager.GetServices().Select(s => GetKeyValuePair(s.ServiceName, s.Status)); break; #endregion Environment #region Counters case MetricDataEnum.support_metrics_counters_webfarmservers: stringData = CoreServices.WebFarm.GetEnabledServerNames().Count().ToString(); break; case MetricDataEnum.support_metrics_counters_stagingservers: stringData = ServerInfoProvider.GetServers().GetCount().ToString(); break; case MetricDataEnum.support_metrics_counters_pagemostchildren: CMS.DocumentEngine.TreeProvider tree = new CMS.DocumentEngine.TreeProvider(); var pageWithMostChildren = tree.SelectNodes().OnCurrentSite().Published() .ToDictionary(n => n, n => n.Children.Count) .Aggregate((l, r) => l.Value > r.Value ? l : r); tupleData = new[] { GetKeyValuePair(URLHelper.GetAbsoluteUrl("~" + pageWithMostChildren.Key.NodeAliasPath), pageWithMostChildren.Value) }; break; case MetricDataEnum.support_metrics_counters_modules: stringData = ResourceInfoProvider.GetResources().GetCount().ToString(); break; case MetricDataEnum.support_metrics_counters_medialibraries: stringData = MediaLibraryInfoProvider.GetMediaLibraries().WhereNull("LibraryGroupID").GetCount().ToString(); break; case MetricDataEnum.support_metrics_counters_activities: stringData = ActivityInfoProvider.GetActivities().GetCount().ToString(); break; case MetricDataEnum.support_metrics_counters_contacts: stringData = ContactInfoProvider.GetContacts().GetCount().ToString(); break; case MetricDataEnum.support_metrics_counters_contactgroups: stringData = ContactGroupInfoProvider.GetContactGroups().GetCount().ToString(); break; case MetricDataEnum.support_metrics_counters_omrules: stringData = RuleInfoProvider.GetRules().GetCount().ToString(); break; case MetricDataEnum.support_metrics_counters_products: stringData = SKUInfoProvider.GetSKUs(SiteContext.CurrentSiteID).WhereNull("SKUOptionCategoryID").GetCount().ToString(); break; #endregion Counters #region Tasks case MetricDataEnum.support_metrics_tasks_webfarm: stringData = WebFarmTaskInfoProvider.GetWebFarmTasks() .WhereLessThan("TaskCreated", DateTime.Now.AddDays(-1)) .GetCount().ToString(); break; case MetricDataEnum.support_metrics_tasks_staging: stringData = StagingTaskInfoProvider.GetTasks() .WhereLessThan("TaskTime", DateTime.Now.AddDays(-1)) .GetCount().ToString(); break; case MetricDataEnum.support_metrics_tasks_integration: stringData = IntegrationTaskInfoProvider.GetIntegrationTasks() .WhereLessThan("TaskTime", DateTime.Now.AddDays(-1)) .GetCount().ToString(); break; case MetricDataEnum.support_metrics_tasks_scheduled: stringData = TaskInfoProvider.GetTasks() .WhereTrue("TaskDeleteAfterLastRun") .WhereLessThan("TaskNextRunTime", DateTime.Now.AddDays(-1)) .GetCount().ToString(); break; case MetricDataEnum.support_metrics_tasks_search: stringData = SearchTaskInfoProvider.GetSearchTasks() .WhereLessThan("SearchTaskCreated", DateTime.Now.AddDays(-1)) .GetCount().ToString(); break; case MetricDataEnum.support_metrics_tasks_email: stringData = EmailInfoProvider.GetEmailCount("EmailStatus = 1 AND EmailLastSendResult IS NOT NULL").ToString(); break; #endregion Tasks #region Event log case MetricDataEnum.support_metrics_eventlog_macroerrors: var macroErrors = EventLogProvider.GetEvents() .WhereEquals("Source", "MacroResolver") .WhereGreaterThan("EventTime", DateTime.Now.Subtract(TimeSpan.FromDays(7))) .OrderByDescending("EventTime") .TopN(10); tupleData = macroErrors.Select(e => GetKeyValuePair(String.Format("{0} from {1} at {2} in {3}", e.EventCode, e.Source, e.EventTime, e.EventMachineName), e.EventDescription.Length > CUTOFF ? e.EventDescription.Substring(0, CUTOFF) : e.EventDescription) ); break; case MetricDataEnum.support_metrics_eventlog_stagingerrors: var stagingErrors = EventLogProvider.GetEvents() .WhereEquals("Source", "staging") .WhereIn("EventType", new[] { "E", "W" }) .WhereGreaterThan("EventTime", DateTime.Now.Subtract(TimeSpan.FromDays(7))) .OrderByDescending("EventTime") .TopN(10); tupleData = stagingErrors.Select(e => GetKeyValuePair(String.Format("{0} from {1} at {2} in {3}", e.EventCode, e.Source, e.EventTime, e.EventMachineName), e.EventDescription.Length > CUTOFF ? e.EventDescription.Substring(0, CUTOFF) : e.EventDescription) ); break; case MetricDataEnum.support_metrics_eventlog_searcherrors: var searchErrors = EventLogProvider.GetEvents() .WhereEquals("Source", "search") .WhereIn("EventType", new[] { "E", "W" }) .WhereGreaterThan("EventTime", DateTime.Now.Subtract(TimeSpan.FromDays(7))) .OrderByDescending("EventTime") .TopN(10); tupleData = searchErrors.Select(e => GetKeyValuePair(String.Format("{0} from {1} at {2} in {3}", e.EventCode, e.Source, e.EventTime, e.EventMachineName), e.EventDescription.Length > CUTOFF ? e.EventDescription.Substring(0, CUTOFF) : e.EventDescription) ); break; case MetricDataEnum.support_metrics_eventlog_contenterrors: var contentErrors = EventLogProvider.GetEvents() .WhereEquals("Source", "content") .WhereIn("EventType", new[] { "E", "W" }) .WhereGreaterThan("EventTime", DateTime.Now.Subtract(TimeSpan.FromDays(7))) .OrderByDescending("EventTime") .TopN(10); tupleData = contentErrors.Select(e => GetKeyValuePair(String.Format("{0} from {1} at {2} in {3}", e.EventCode, e.Source, e.EventTime, e.EventMachineName), e.EventDescription.Length > CUTOFF ? e.EventDescription.Substring(0, CUTOFF) : e.EventDescription) ); break; case MetricDataEnum.support_metrics_eventlog_exceptions: var exceptions = EventLogProvider.GetEvents() .WhereEquals("EventCode", "exception") .WhereGreaterThan("EventTime", DateTime.Now.Subtract(TimeSpan.FromDays(7))) .OrderByDescending("EventTime") .TopN(10); tupleData = exceptions.Select(e => GetKeyValuePair(String.Format("{0} from {1} at {2} in {3}", e.EventCode, e.Source, e.EventTime, e.EventMachineName), e.EventDescription.Length > CUTOFF ? e.EventDescription.Substring(0, CUTOFF) : e.EventDescription) ); break; case MetricDataEnum.support_metrics_eventlog_upgrade: EventLogInfo upgrade = EventLogProvider.GetEvents().WhereLike("Source", "upgrade%").FirstOrDefault(); var version = upgrade?.Source.Split(' ')[2]; if (!String.IsNullOrEmpty(version)) { var parameters = new QueryDataParameters { { "@versionnumber", version } }; var events = ConnectionHelper.ExecuteQuery("SupportHelper.CustomMetric.checkupgrade", parameters); tupleData = (from DataRow row in events.Tables[0]?.Rows select row) .Select(r => new EventLogInfo(r)).Select(e => GetKeyValuePair(String.Format("{0} from {1} at {2} in {3}", e.EventCode, e.Source, e.EventTime, e.EventMachineName), e.EventDescription.Length > CUTOFF ? e.EventDescription.Substring(0, CUTOFF) : e.EventDescription) ); } break; #endregion Event log } if (tupleData?.Count() > 0) { return(tupleData); } if (stringData != null) { return(new[] { GetKeyValuePair(0, stringData) }); } return(new[] { GetKeyValuePair(0, ResHelper.GetStringFormat("support.metrics.invalid", MetricDisplayName, MetricCodeName)) }); }
protected override void OnLoad(EventArgs e) { base.OnLoad(e); // Check 'Manage objects tasks' permission if (!CurrentUser.IsAuthorizedPerResource("cms.staging", "ManageObjectsTasks")) { RedirectToAccessDenied("cms.staging", "ManageObjectsTasks"); } CurrentMaster.DisplaySiteSelectorPanel = true; // Check enabled servers var isCallback = RequestHelper.IsCallback(); if (!isCallback && !ServerInfoProvider.IsEnabledServer(SiteContext.CurrentSiteID)) { ShowInformation(GetString("ObjectStaging.NoEnabledServer")); CurrentMaster.PanelHeader.Visible = false; plcContent.Visible = false; pnlFooter.Visible = false; return; } // Register script for pendingCallbacks repair ScriptHelper.FixPendingCallbacks(Page); // Setup server dropdown selectorElem.DropDownList.AutoPostBack = true; selectorElem.UniSelector.OnSelectionChanged += UniSelector_OnSelectionChanged; // Set server ID SelectedServerID = ValidationHelper.GetInteger(selectorElem.Value, QueryHelper.GetInteger("serverId", 0)); // All servers if (SelectedServerID == UniSelector.US_ALL_RECORDS) { SelectedServerID = 0; selectorElem.Value = UniSelector.US_ALL_RECORDS; } else { selectorElem.Value = SelectedServerID.ToString(); } ltlScript.Text += ScriptHelper.GetScript("var currentServerId = " + SelectedServerID + ";"); HeaderActions.ActionPerformed += HeaderActions_ActionPerformed; if (!isCallback) { // Check 'Manage object tasks' permission if (!CurrentUser.IsAuthorizedPerResource("cms.staging", "ManageObjectsTasks")) { RedirectToAccessDenied("cms.staging", "ManageObjectsTasks"); } synchronizedSiteId = QueryHelper.GetInteger("siteid", 0); CurrentSiteID = SiteContext.CurrentSiteID; ucDisabledModule.TestSettingKeys = "CMSStagingLogObjectChanges"; ucDisabledModule.ParentPanel = pnlNotLogged; if (synchronizedSiteId == -1) { ucDisabledModule.InfoText = GetString("objectstaging.globalandsitenotlogged"); ucDisabledModule.KeyScope = DisabledModuleScope.CurrentSiteAndGlobal; ucDisabledModule.GlobalButtonText = GetString("objectstaging.enableglobalandsiteobjects"); } else if (synchronizedSiteId == 0) { ucDisabledModule.InfoText = GetString("objectstaging.globalnotlogged"); ucDisabledModule.KeyScope = DisabledModuleScope.Global; ucDisabledModule.GlobalButtonText = GetString("objectstaging.enableglobalobjects"); } else { ucDisabledModule.InfoText = GetString("ObjectStaging.SiteNotLogged"); ucDisabledModule.KeyScope = DisabledModuleScope.Site; ucDisabledModule.SiteButtonText = GetString("objectstaging.enablesiteobjects"); } // Check logging if (!ucDisabledModule.Check()) { CurrentMaster.PanelHeader.Visible = false; plcContent.Visible = false; return; } // Get object type objectType = QueryHelper.GetString("objecttype", string.Empty); // Create "synchronize current" header action for tree root, nodes or objects with database representation if (String.IsNullOrEmpty(objectType) || objectType.StartsWith("##", StringComparison.Ordinal) || (ModuleManager.GetReadOnlyObject(objectType) != null)) { HeaderActions.AddAction(new HeaderAction { Text = GetString("ObjectTasks.SyncCurrent"), EventName = SYNCHRONIZE_CURRENT }); } // Add CSS class to panels wrapper in order it could be stacked CurrentMaster.PanelHeader.AddCssClass("header-container-multiple-panels"); // Setup title ctlAsyncLog.TitleText = GetString("Synchronization.Title"); // Get the selected types ObjectTypeTreeNode selectedNode = StagingTaskInfoProvider.ObjectTree.FindNode(objectType, (synchronizedSiteId > 0)); objectType = (selectedNode != null) ? selectedNode.GetObjectTypes(true) : string.Empty; if (!ControlsHelper.CausedPostBack(HeaderActions, btnSyncSelected, btnSyncAll)) { // Register the dialog script ScriptHelper.RegisterDialogScript(this); plcContent.Visible = true; // Initialize buttons btnDeleteAll.OnClientClick = "return confirm(" + ScriptHelper.GetString(GetString("Tasks.ConfirmDeleteAll")) + ");"; btnDeleteSelected.OnClientClick = "return confirm(" + ScriptHelper.GetString(GetString("general.confirmdelete")) + ");"; btnSyncSelected.OnClientClick = "return !" + gridTasks.GetCheckSelectionScript(); // Initialize grid gridTasks.ZeroRowsText = GetString("Tasks.NoTasks"); gridTasks.OnDataReload += gridTasks_OnDataReload; gridTasks.ShowActionsMenu = true; gridTasks.Columns = "TaskID, TaskSiteID, TaskDocumentID, TaskNodeAliasPath, TaskTitle, TaskTime, TaskType, TaskObjectType, TaskObjectID, TaskRunning, (SELECT COUNT(*) FROM Staging_Synchronization WHERE SynchronizationTaskID = TaskID AND SynchronizationErrorMessage IS NOT NULL AND (SynchronizationServerID = @ServerID OR (@ServerID = 0 AND (@TaskSiteID = 0 OR SynchronizationServerID IN (SELECT ServerID FROM Staging_Server WHERE ServerSiteID = @TaskSiteID AND ServerEnabled=1))))) AS FailedCount"; StagingTaskInfo ti = new StagingTaskInfo(); gridTasks.AllColumns = SqlHelper.MergeColumns(ti.ColumnNames); pnlLog.Visible = false; TaskTypeCategories = TaskHelper.TASK_TYPE_CATEGORY_GENERAL + ";" + TaskHelper.TASK_TYPE_CATEGORY_OBJECTS + ";" + TaskHelper.TASK_TYPE_CATEGORY_DATA; } } }
protected override void OnLoad(EventArgs e) { base.OnLoad(e); // Check 'Manage servers' permission if (!CurrentUser.IsAuthorizedPerResource("cms.staging", "ManageDocumentsTasks")) { RedirectToAccessDenied("cms.staging", "ManageDocumentsTasks"); } CurrentMaster.DisplaySiteSelectorPanel = true; // Check enabled servers var isCallback = RequestHelper.IsCallback(); if (!isCallback && !ServerInfoProvider.IsEnabledServer(SiteContext.CurrentSiteID)) { ShowInformation(GetString("ObjectStaging.NoEnabledServer")); CurrentMaster.PanelHeader.Visible = false; plcContent.Visible = false; pnlFooter.Visible = false; return; } // Setup server dropdown selectorElem.DropDownList.AutoPostBack = true; selectorElem.UniSelector.OnSelectionChanged += UniSelector_OnSelectionChanged; // Set server ID SelectedServerID = ValidationHelper.GetInteger(selectorElem.Value, QueryHelper.GetInteger("serverId", 0)); // All servers if (SelectedServerID == UniSelector.US_ALL_RECORDS) { SelectedServerID = 0; selectorElem.Value = UniSelector.US_ALL_RECORDS; } else { selectorElem.Value = SelectedServerID.ToString(); } ltlScript.Text += ScriptHelper.GetScript("var currentServerId = " + SelectedServerID + ";"); // Register script for pendingCallbacks repair ScriptHelper.FixPendingCallbacks(Page); HeaderActions.ActionPerformed += HeaderActions_ActionPerformed; if (!isCallback) { int nodeId = QueryHelper.GetInteger("stagingnodeid", 0); aliasPath = "/"; // Get the document node if (nodeId > 0) { TreeProvider tree = new TreeProvider(CurrentUser); TreeNode node = tree.SelectSingleNode(nodeId, TreeProvider.ALL_CULTURES); if (node != null) { aliasPath = node.NodeAliasPath; } } // Setup title ucDisabledModule.TestSettingKeys = "CMSStagingLogChanges"; ucDisabledModule.InfoText = GetString("ContentStaging.TaskSeparator"); ucDisabledModule.ParentPanel = pnlNotLogged; // Check logging if (!ucDisabledModule.Check()) { CurrentMaster.PanelHeader.Visible = false; plcContent.Visible = false; pnlFooter.Visible = false; return; } // Create header actions HeaderActions.AddAction(new HeaderAction { Text = GetString("Tasks.SyncCurrent"), EventName = SYNCHRONIZE_CURRENT }); HeaderActions.AddAction(new HeaderAction { Text = GetString("Tasks.SyncSubtree"), EventName = SYNCHRONIZE_SUBTREE, ButtonStyle = ButtonStyle.Default }); // Create header action HeaderActions.AddAction(new HeaderAction { Text = GetString("Tasks.CompleteSync"), EventName = SYNCHRONIZE_COMPLETE, ButtonStyle = ButtonStyle.Default }); // Add CSS class to panels wrapper in order it could be stacked CurrentMaster.PanelHeader.AddCssClass("header-container-multiple-panels"); if (!ControlsHelper.CausedPostBack(HeaderActions, btnSyncSelected, btnSyncAll)) { // Check 'Manage servers' permission if (!CurrentUser.IsAuthorizedPerResource("cms.staging", "ManageDocumentsTasks")) { RedirectToAccessDenied("cms.staging", "ManageDocumentsTasks"); } // Register the dialog script ScriptHelper.RegisterDialogScript(this); ltlScript.Text += ScriptHelper.GetScript("function ConfirmDeleteTask(taskId) { return confirm(" + ScriptHelper.GetString(GetString("Tasks.ConfirmDelete")) + "); }"); ltlScript.Text += ScriptHelper.GetScript("function CompleteSync(){" + Page.ClientScript.GetPostBackEventReference(btnSyncComplete, "") + "}"); // Initialize grid tasksUniGrid.OnDataReload += tasksUniGrid_OnDataReload; tasksUniGrid.ShowActionsMenu = true; tasksUniGrid.Columns = "TaskID, TaskSiteID, TaskDocumentID, TaskNodeAliasPath, TaskTitle, TaskTime, TaskType, TaskObjectType, TaskObjectID, TaskRunning, (SELECT COUNT(*) FROM Staging_Synchronization WHERE SynchronizationTaskID = TaskID AND SynchronizationErrorMessage IS NOT NULL AND (SynchronizationServerID = @ServerID OR (@ServerID = 0 AND (@TaskSiteID = 0 OR SynchronizationServerID IN (SELECT ServerID FROM Staging_Server WHERE ServerSiteID = @TaskSiteID AND ServerEnabled=1))))) AS FailedCount"; StagingTaskInfo ti = new StagingTaskInfo(); tasksUniGrid.AllColumns = SqlHelper.MergeColumns(ti.ColumnNames); plcContent.Visible = true; // Initialize buttons btnSyncSelected.OnClientClick = "return !" + tasksUniGrid.GetCheckSelectionScript(); btnDeleteAll.OnClientClick = "return confirm(" + ScriptHelper.GetString(GetString("Tasks.ConfirmDeleteAll")) + ");"; btnDeleteSelected.OnClientClick = "return confirm(" + ScriptHelper.GetString(GetString("general.confirmdelete")) + ");"; pnlLog.Visible = false; TaskTypeCategories = TaskHelper.TASK_TYPE_CATEGORY_CONTENT + ";" + TaskHelper.TASK_TYPE_CATEGORY_GENERAL; } } var script = @"var currentNodeId = 0, selectDocuments = false; function ChangeServer(value) { currentServerId = value; } function SelectNode(serverId, nodeId) { currentServerId = serverId; currentNodeId = nodeId; document.location = 'Tasks.aspx?serverId=' + currentServerId + '&stagingnodeid=' + nodeId; } function SelectDocNode(serverId, nodeId) { currentNodeId = nodeId; document.location = 'DocumentsList.aspx?serverId=' + currentServerId + '&stagingnodeid=' + nodeId; }"; ScriptHelper.RegisterClientScriptBlock(Page, typeof(string), ClientID + "HandlingTasks", ScriptHelper.GetScript(script)); }