/// <summary> /// Validates the form. If validation succeeds returns true, otherwise returns false. /// </summary> private bool Validate() { string codename = this.txtTaskStatusName.Text.Trim(); // Validate required fields string errorMessage = new Validator() .NotEmpty(this.txtTaskStatusDisplayName.Text.Trim(), this.rfvTaskStatusDisplayName.ErrorMessage) .NotEmpty(codename, this.rfvTaskStatusName.ErrorMessage) .IsCodeName(codename, GetString("general.invalidcodename")).Result; // Check the uniqueness of the codename ProjectTaskStatusInfo ptsi = ProjectTaskStatusInfoProvider.GetProjectTaskStatusInfo(codename); if ((ptsi != null) && (ptsi.TaskStatusID != this.TaskStatusID)) { errorMessage = GetString("general.codenameexists"); } // Give error if status is both: started and finished if (this.chkTaskStatusIsFinished.Checked && this.chkTaskStatusIsNotStarted.Checked) { errorMessage = GetString("pm.projectstatus.startandfinish"); } // Set the error message if (!String.IsNullOrEmpty(errorMessage)) { this.lblError.Text = errorMessage; return(false); } return(true); }
/// <summary> // Processes the form - saves the data. /// </summary> private void Process() { // Validate the form if (Validate()) { // Ensure the info object if (ProjecttaskstatusObj == null) { ProjecttaskstatusObj = new ProjectTaskStatusInfo(); ProjecttaskstatusObj.TaskStatusOrder = ProjectTaskStatusInfoProvider.GetStatusCount(false) + 1; } // Initialize object ProjecttaskstatusObj.TaskStatusName = txtTaskStatusName.Text.Trim(); ProjecttaskstatusObj.TaskStatusDisplayName = txtTaskStatusDisplayName.Text.Trim(); ProjecttaskstatusObj.TaskStatusColor = colorPicker.SelectedColor; ProjecttaskstatusObj.TaskStatusIcon = txtTaskStatusIcon.Text.Trim(); ProjecttaskstatusObj.TaskStatusIsFinished = chkTaskStatusIsFinished.Checked; ProjecttaskstatusObj.TaskStatusIsNotStarted = chkTaskStatusIsNotStarted.Checked; ProjecttaskstatusObj.TaskStatusEnabled = chkTaskStatusEnabled.Checked; // Save object data to database ProjectTaskStatusInfoProvider.SetProjectTaskStatusInfo(ProjecttaskstatusObj); ItemID = ProjecttaskstatusObj.TaskStatusID; RaiseOnSaved(); // Set the info message ShowChangesSaved(); } }
/// <summary> // Processes the form - saves the data. /// </summary> private void Process() { // Validate the form if (Validate()) { // Ensure the info object if (this.ProjecttaskstatusObj == null) { this.ProjecttaskstatusObj = new ProjectTaskStatusInfo(); this.ProjecttaskstatusObj.TaskStatusOrder = ProjectTaskStatusInfoProvider.GetStatusCount(false) + 1; } // Initialize object this.ProjecttaskstatusObj.TaskStatusName = this.txtTaskStatusName.Text.Trim(); this.ProjecttaskstatusObj.TaskStatusDisplayName = this.txtTaskStatusDisplayName.Text.Trim(); this.ProjecttaskstatusObj.TaskStatusColor = this.colorPicker.SelectedColor; this.ProjecttaskstatusObj.TaskStatusIcon = this.txtTaskStatusIcon.Text.Trim(); this.ProjecttaskstatusObj.TaskStatusIsFinished = this.chkTaskStatusIsFinished.Checked; this.ProjecttaskstatusObj.TaskStatusIsNotStarted = this.chkTaskStatusIsNotStarted.Checked; this.ProjecttaskstatusObj.TaskStatusEnabled = this.chkTaskStatusEnabled.Checked; // Save object data to database ProjectTaskStatusInfoProvider.SetProjectTaskStatusInfo(this.ProjecttaskstatusObj); this.ItemID = this.ProjecttaskstatusObj.TaskStatusID; this.RaiseOnSaved(); // Set the info message this.lblInfo.Text = GetString("general.changessaved"); } }
/// <summary> /// Creates project task. Called when the "Create task" button is pressed. /// </summary> private bool CreateProjectTask() { ProjectInfo project = ProjectInfoProvider.GetProjectInfo("MyNewProject", SiteContext.CurrentSiteID, 0); ProjectTaskStatusInfo status = ProjectTaskStatusInfoProvider.GetProjectTaskStatusInfo("NotStarted"); ProjectTaskPriorityInfo priority = ProjectTaskPriorityInfoProvider.GetProjectTaskPriorityInfo("Normal"); if ((project != null) && (status != null) && (priority != null)) { // Create new project task object ProjectTaskInfo newTask = new ProjectTaskInfo(); int currentUserID = MembershipContext.AuthenticatedUser.UserID; // Set the properties newTask.ProjectTaskDisplayName = "My new task"; newTask.ProjectTaskCreatedByID = currentUserID; newTask.ProjectTaskOwnerID = currentUserID; newTask.ProjectTaskAssignedToUserID = currentUserID; newTask.ProjectTaskStatusID = status.TaskStatusID; newTask.ProjectTaskPriorityID = priority.TaskPriorityID; newTask.ProjectTaskProjectID = project.ProjectID; // Save the project task ProjectTaskInfoProvider.SetProjectTaskInfo(newTask); return(true); } return(false); }
/// <summary> /// Loads the data into the form. /// </summary> private void LoadData() { // If dealayed reload or not postback with not delayed reload if (!URLHelper.IsPostback() || (drpTaskStatus.Items.Count == 0)) { drpTaskStatus.DataSource = ProjectTaskStatusInfoProvider.GetProjectTaskStatuses(true); drpTaskStatus.DataValueField = "TaskStatusID"; drpTaskStatus.DataTextField = "TaskStatusDisplayName"; drpTaskStatus.DataBind(); drpTaskPriority.DataSource = ProjectTaskPriorityInfoProvider.GetProjectTaskPriorities(true); drpTaskPriority.DataValueField = "TaskPriorityID"; drpTaskPriority.DataTextField = "TaskPriorityDisplayName"; drpTaskPriority.DataBind(); } // Clear selector selection selectorOwner.UniSelector.Value = String.Empty; selectorAssignee.UniSelector.Value = String.Empty; // Load the form from the info object if (ProjectTaskObj != null) { txtProjectTaskDisplayName.Text = ProjectTaskObj.ProjectTaskDisplayName; if (ProjectTaskObj.ProjectTaskAssignedToUserID > 0) { selectorAssignee.UniSelector.Value = ProjectTaskObj.ProjectTaskAssignedToUserID; selectorAssignee.ReloadData(); } txtProjectTaskProgress.Text = ProjectTaskObj.ProjectTaskProgress.ToString(); txtProjectTaskHours.Text = ProjectTaskObj.ProjectTaskHours.ToString(); if (ProjectTaskObj.ProjectTaskOwnerID > 0) { selectorOwner.UniSelector.Value = ProjectTaskObj.ProjectTaskOwnerID; selectorOwner.ReloadData(); } dtpProjectTaskDeadline.SelectedDateTime = ProjectTaskObj.ProjectTaskDeadline; chkProjectTaskIsPrivate.Checked = ProjectTaskObj.ProjectTaskIsPrivate; htmlTaskDescription.ResolvedValue = ProjectTaskObj.ProjectTaskDescription; SetStatusDrp(ProjectTaskObj.ProjectTaskStatusID); SetPriorityDrp(ProjectTaskObj.ProjectTaskPriorityID); } else { // Set only available user var cui = MembershipContext.AuthenticatedUser; if (!IsLiveSite || !cui.UserIsDisabledManually) { // Load default data selectorOwner.UniSelector.Value = (mProjectTaskOwnerID > 0) ? mProjectTaskOwnerID : MembershipContext.AuthenticatedUser.UserID; selectorAssignee.UniSelector.Value = (mProjectTaskAssigneeID > 0) ? mProjectTaskAssigneeID : MembershipContext.AuthenticatedUser.UserID; selectorAssignee.ReloadData(); selectorOwner.ReloadData(); } LoadDefaultPriority(); } }
/// <summary> /// Selects status in the drop down list. /// </summary> /// <param name="value">The selected value</param> private void SetStatusDrp(int value) { if (drpTaskStatus.Items.FindByValue(value.ToString()) == null) { // Status not found (is disabled) - add manually ProjectTaskStatusInfo status = ProjectTaskStatusInfoProvider.GetProjectTaskStatusInfo(value); drpTaskStatus.Items.Add(new ListItem(status.TaskStatusDisplayName, status.TaskStatusID.ToString())); } drpTaskStatus.SelectedValue = value.ToString(); }
/// <summary> /// Handles UniGrid's OnAction event. /// </summary> /// <param name="actionName">Name of the action which should be performed</param> /// <param name="actionArgument">ID of the item the action should be performed with</param> protected void gridElem_OnAction(string actionName, object actionArgument) { int projecttaskstatusId = ValidationHelper.GetInteger(actionArgument, 0); if (projecttaskstatusId > 0) { switch (actionName.ToLowerCSafe()) { case "edit": SelectedItemID = projecttaskstatusId; RaiseOnEdit(); break; case "delete": if (!ProjectTaskStatusInfoProvider.CheckDependencies(projecttaskstatusId)) { ShowError(GetString("pm.projecttaskstatus.removedenied")); return; } if (ProjectTaskStatusInfoProvider.GetStatusCount() <= 1) { ltlInfo.Text = ScriptHelper.GetScript("alert('" + GetString("pm.projectstatus.deletealert") + "');"); return; } // Delete the object ProjectTaskStatusInfoProvider.DeleteProjectTaskStatusInfo(projecttaskstatusId); RaiseOnDelete(); // Reload data gridElem.ReloadData(); break; case "up": ProjectTaskStatusInfoProvider.MoveStatusUp(projecttaskstatusId); break; case "down": ProjectTaskStatusInfoProvider.MoveStatusDown(projecttaskstatusId); break; } } }
protected void Page_Load(object sender, EventArgs e) { // Keep current user object CurrentUserInfo currentUser = CMSContext.CurrentUser; // Title element settings titleElem.TitleImage = GetImageUrl("Objects/PM_ProjectTask/object.png"); titleElem.TitleText = GetString("pm.projecttask.edit"); #region "Header actions" if (CMSContext.CurrentUser.IsAuthenticated()) { // New task link string[,] actions = new string[1, 7]; actions[0, 0] = HeaderActions.TYPE_LINKBUTTON; actions[0, 1] = GetString("pm.projecttask.newpersonal"); actions[0, 2] = null; actions[0, 4] = null; actions[0, 5] = GetImageUrl("Objects/PM_Project/add.png"); actions[0, 6] = "new_task"; HeaderActions.Actions = actions; HeaderActions.ActionPerformed += new CommandEventHandler(actionsElem_ActionPerformed); HeaderActions.ReloadData(); } #endregion // Switch by display type and set correct list grid name switch (this.TasksDisplayType) { // Project tasks case TasksDisplayTypeEnum.ProjectTasks: ucTaskList.OrderByType = ProjectTaskOrderByEnum.NotSpecified; ucTaskList.Grid.OrderBy = "TaskPriorityOrder ASC,ProjectTaskDeadline DESC"; ucTaskList.Grid.GridName = "~/CMSModules/ProjectManagement/Controls/LiveControls/ProjectTasks.xml"; pnlListActions.Visible = false; break; // Tasks owned by me case TasksDisplayTypeEnum.TasksOwnedByMe: ucTaskList.OrderByType = ProjectTaskOrderByEnum.NotSpecified; ucTaskList.Grid.OrderBy = "TaskPriorityOrder ASC,ProjectTaskDeadline DESC"; ucTaskList.Grid.GridName = "~/CMSModules/ProjectManagement/Controls/LiveControls/TasksOwnedByMe.xml"; break; // Tasks assigned to me case TasksDisplayTypeEnum.TasksAssignedToMe: // Set not specified order by default ucTaskList.OrderByType = ProjectTaskOrderByEnum.NotSpecified; // If sitename is not defined => display task from all sites => use user order if (String.IsNullOrEmpty(this.SiteName)) { ucTaskList.OrderByType = ProjectTaskOrderByEnum.UserOrder; } ucTaskList.Grid.OrderBy = "TaskPriorityOrder ASC,ProjectTaskDeadline DESC"; ucTaskList.Grid.GridName = "~/CMSModules/ProjectManagement/Controls/LiveControls/TasksAssignedToMe.xml"; break; } #region "Force edit by TaskID in querystring" // Check whether is not postback if (!RequestHelper.IsPostBack()) { // Try get value from request stroage which indicates whether force dialog is displayed bool isDisplayed = ValidationHelper.GetBoolean(RequestStockHelper.GetItem("cmspmforceitemdisplayed", true), false); // Try get task id from querystring int forceTaskId = QueryHelper.GetInteger("taskid", 0); if ((forceTaskId > 0) && (!isDisplayed)) { ProjectTaskInfo pti = ProjectTaskInfoProvider.GetProjectTaskInfo(forceTaskId); ProjectInfo pi = ProjectInfoProvider.GetProjectInfo(pti.ProjectTaskProjectID); // Check whether task is defined // and if is assigned to some project, this project is assigned to current site if ((pti != null) && ((pi == null) || (pi.ProjectSiteID == CMSContext.CurrentSiteID))) { bool taskIdValid = false; // Switch by display type switch (this.TasksDisplayType) { // Tasks created by me case TasksDisplayTypeEnum.TasksOwnedByMe: if (pti.ProjectTaskOwnerID == currentUser.UserID) { taskIdValid = true; } break; // Tasks assigned to me case TasksDisplayTypeEnum.TasksAssignedToMe: if (pti.ProjectTaskAssignedToUserID == currentUser.UserID) { taskIdValid = true; } break; // Project task case TasksDisplayTypeEnum.ProjectTasks: if (!String.IsNullOrEmpty(ProjectNames) && (pi != null)) { string projectNames = ";" + ProjectNames.ToLower() + ";"; if (projectNames.Contains(";" + pi.ProjectName.ToLower() + ";")) { // Check whether user can see private task if (!pti.ProjectTaskIsPrivate || ((pti.ProjectTaskOwnerID == currentUser.UserID) || (pti.ProjectTaskAssignedToUserID == currentUser.UserID)) || ((pi.ProjectGroupID > 0) && currentUser.IsGroupAdministrator(pi.ProjectGroupID)) || ((pi.ProjectGroupID == 0) && (currentUser.IsAuthorizedPerResource("CMS.ProjectManagement", CMSAdminControl.PERMISSION_MANAGE)))) { taskIdValid = true; } } } break; } bool displayValid = true; // Check whether do not display finished tasks is required if (!this.ShowFinishedTasks) { ProjectTaskStatusInfo ptsi = ProjectTaskStatusInfoProvider.GetProjectTaskStatusInfo(pti.ProjectTaskStatusID); if ((ptsi != null) && (ptsi.TaskStatusIsFinished)) { displayValid = false; } } // Check whether private task should be edited if (!this.ShowPrivateTasks) { if (pti.ProjectTaskProjectID == 0) { displayValid = false; } } // Check whether ontime task should be edited if (!this.ShowOnTimeTasks) { if ((pti.ProjectTaskDeadline != DateTimeHelper.ZERO_TIME) && (pti.ProjectTaskDeadline < DateTime.Now)) { displayValid = false; } } // Check whether overdue task should be edited if (!this.ShowOverdueTasks) { if ((pti.ProjectTaskDeadline != DateTimeHelper.ZERO_TIME) && (pti.ProjectTaskDeadline > DateTime.Now)) { displayValid = false; } } // Check whether user is allowed to see project if ((pi != null) && (ProjectInfoProvider.IsAuthorizedPerProject(pi.ProjectID, ProjectManagementPermissionType.READ, CMSContext.CurrentUser))) { displayValid = false; } // If task is valid and user has permissions to see this task display edit task dialog if (displayValid && taskIdValid && ProjectTaskInfoProvider.IsAuthorizedPerTask(forceTaskId, ProjectManagementPermissionType.READ, CMSContext.CurrentUser, CMSContext.CurrentSiteID)) { this.ucTaskEdit.ItemID = forceTaskId; this.ucTaskEdit.ReloadData(); // Render dialog this.ucPopupDialog.Visible = true; this.ucPopupDialog.Show(); // Set "force dialog displayed" flag RequestStockHelper.Add("cmspmforceitemdisplayed", true, true); } } } } #endregion #region "Event handlers registration" // Register list action handler ucTaskList.OnAction += new CommandEventHandler(ucTaskList_OnAction); #endregion #region "Pager settings" // Paging if (!EnablePaging) { ucTaskList.Grid.PageSize = "##ALL##"; ucTaskList.Grid.Pager.DefaultPageSize = -1; } else { ucTaskList.Grid.Pager.DefaultPageSize = PageSize; ucTaskList.Grid.PageSize = this.PageSize.ToString(); ucTaskList.Grid.FilterLimit = PageSize; } #endregion // Use postbacks on list actions ucTaskList.UsePostbackOnEdit = true; // Check delete permission ucTaskList.OnCheckPermissionsExtended += new CheckPermissionsExtendedEventHandler(ucTaskList_OnCheckPermissionsExtended); // Dont register JS edit script ucTaskList.RegisterEditScript = false; // Hide default ok button on edit ucTaskEdit.ShowOKButton = false; // Disable on site validators ucTaskEdit.DisableOnSiteValidators = true; // Check modify permission ucTaskEdit.OnCheckPermissionsExtended += new CheckPermissionsExtendedEventHandler(ucTaskEdit_OnCheckPermissionsExtended); // Build condition event ucTaskList.BuildCondition += new CMSModules_ProjectManagement_Controls_UI_ProjectTask_List.BuildConditionEvent(ucTaskList_BuildCondition); }