/// <summary> /// Reminder button OK clicked. /// </summary> /// <param name="sender">Sender object</param> /// <param name="e">Event args</param> protected void btnReminderOK_onClick(object sender, EventArgs e) { string errorMessage = ""; if (txtReminderText.Text.Length > 0) { ProjectTaskInfo taskInfo = ProjectTaskInfoProvider.GetProjectTaskInfo(this.ReminderTaskID); if (taskInfo != null) { if (taskInfo.ProjectTaskAssignedToUserID > 0) { ProjectTaskInfoProvider.SendNotificationEmail(ProjectTaskEmailNotificationTypeEnum.TaskReminder, taskInfo, CMSContext.CurrentSiteName, txtReminderText.Text); lblInfo.Text = GetString("pm.projecttask.remindersent"); } else { errorMessage = GetString("pm.projecttask.remindernoassignee"); } } } else { errorMessage = GetString("pm.projecttask.remindermessageerror"); } if (String.IsNullOrEmpty(errorMessage)) { CloseAjaxWindow(); } else { ShowReminderPopup(); lblReminderError.Text = errorMessage; } }
/// <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); }
void Control_OnAfterDataLoad(object sender, EventArgs e) { if (Project == null) { return; } int groupId = QueryHelper.GetInteger("parentobjectid", 0); // Set group ID to user selector for project owner var ownerControl = Control.FieldControls["ProjectOwner"]; Type ownerControlType = ownerControl.GetType(); PropertyInfo groupIdProperty = ownerControlType.GetProperty("GroupID"); if (groupIdProperty != null) { groupIdProperty.SetValue(ownerControl, groupId, null); } if (Project.ProjectID > 0) { // Load progress int progress = ProjectInfoProvider.GetProjectProgress(Project.ProjectID); Control.FieldControls["ProjectProgress"].Text = ProjectTaskInfoProvider.GenerateProgressHtml(progress, true); } else { Project.ProjectGroupID = groupId; Control.FieldsToHide.Add("ProjectProgress"); Control.FieldsToHide.Add("ProjectAttachments"); } }
/// <summary> /// Gets and updates project task. Called when the "Get and update task" button is pressed. /// Expects the CreateProjectTask method to be run first. /// </summary> private bool GetAndUpdateProjectTask() { // Prepare the parameters string where = "ProjectTaskDisplayName LIKE N'My new task%'"; string orderBy = ""; int topN = 0; string columns = ""; // Get the data DataSet tasks = ProjectTaskInfoProvider.GetProjectTasks(where, orderBy, topN, columns); if (!DataHelper.DataSourceIsEmpty(tasks)) { // Get the project task ProjectTaskInfo updateTask = new ProjectTaskInfo(tasks.Tables[0].Rows[0]); if (updateTask != null) { // Update the properties updateTask.ProjectTaskDisplayName = updateTask.ProjectTaskDisplayName.ToLowerCSafe(); // Save the changes ProjectTaskInfoProvider.SetProjectTaskInfo(updateTask); return(true); } } return(false); }
/// <summary> /// Ensures displaying of task detail with dependence on querystring settings. /// </summary> protected void EnsureForceTask() { // Check whethe isn't postback if (!RequestHelper.IsPostBack()) { // Try get task id from query string int taskId = QueryHelper.GetInteger("taskid", 0); if (taskId > 0) { // Try get task info and check whether is assigned to current project ProjectTaskInfo pti = ProjectTaskInfoProvider.GetProjectTaskInfo(taskId); if ((pti != null) && (pti.ProjectTaskProjectID == ProjectID)) { // Check whether current user can see required private task if (pti.ProjectTaskIsPrivate) { // Keep current user var cui = MembershipContext.AuthenticatedUser; if (!IsAuthorizedPerProjectEdit() && (pti.ProjectTaskOwnerID != cui.UserID) && (pti.ProjectTaskAssignedToUserID != cui.UserID)) { return; } } EditTask(taskId); } } } }
/// <summary> /// Gets and bulk updates project tasks. Called when the "Get and bulk update tasks" button is pressed. /// Expects the CreateProjectTask method to be run first. /// </summary> private bool GetAndBulkUpdateProjectTasks() { // Prepare the parameters string where = "ProjectTaskDisplayName LIKE N'My new task%'"; string orderBy = ""; int topN = 0; string columns = ""; // Get the data DataSet tasks = ProjectTaskInfoProvider.GetProjectTasks(where, orderBy, topN, columns); if (!DataHelper.DataSourceIsEmpty(tasks)) { // Loop through the individual items foreach (DataRow taskDr in tasks.Tables[0].Rows) { // Create object from DataRow ProjectTaskInfo modifyTask = new ProjectTaskInfo(taskDr); // Update the properties modifyTask.ProjectTaskDisplayName = modifyTask.ProjectTaskDisplayName.ToUpper(); // Save the changes ProjectTaskInfoProvider.SetProjectTaskInfo(modifyTask); } return(true); } return(false); }
/// <summary> /// Checks whether current user can delete task. /// </summary> /// <param name="permissionType">Permission type</param> /// <param name="modulePermissionType">Module permission type</param> /// <param name="sender">Sender object</param> void ucTaskList_OnCheckPermissionsExtended(string permissionType, string modulePermissionType, CMSAdminControl sender) { int itemID = ucTaskEdit.ItemID; // If edit task ItemID is 0, try get from list if (itemID == 0) { itemID = ucTaskList.SelectedItemID; } // Get task info for currently deleted task ProjectTaskInfo pti = ProjectTaskInfoProvider.GetProjectTaskInfo(itemID); // Check permission only for existing tasks and tasks assigned to some project if ((pti != null) && (pti.ProjectTaskProjectID > 0)) { // Check whether user is allowed to modify or delete task if (!ProjectInfoProvider.IsAuthorizedPerProject(pti.ProjectTaskProjectID, permissionType, CMSContext.CurrentUser)) { lblError.Visible = true; lblError.Text = GetString("pm.project.permission"); sender.StopProcessing = true; } } }
/// <summary> /// Updates curent project task info after uploader events (upload and delete). /// </summary> private void TouchProjectTaskInfo() { if (ProjectTaskObj != null) { ProjectTaskInfoProvider.SetProjectTaskInfo(ProjectTaskObj); } }
/// <summary> /// Adds specific conditions to the list where condition. /// </summary> string ucTaskList_BuildCondition(object sender, string whereCondition) { CurrentUserInfo currentUser = CMSContext.CurrentUser; // Display onlyt task assigned to me whereCondition = SqlHelperClass.AddWhereCondition(whereCondition, "ProjectTaskAssignedToUserID = " + currentUser.UserID); // Add security condition - display only tasks which are assigned or owned by the current user or which are a part of a project where the current user is authorised to Read from whereCondition = SqlHelperClass.AddWhereCondition(whereCondition, ProjectTaskInfoProvider.CombineSecurityWhereCondition(whereCondition, currentUser, null)); return(whereCondition); }
/// <summary> /// Adds specific conditions to the list where condition. /// </summary> private string ucTaskList_BuildCondition(object sender, string whereCondition) { var currentUser = MembershipContext.AuthenticatedUser; // Display onlyt task assigned to me whereCondition = SqlHelper.AddWhereCondition(whereCondition, "ProjectTaskOwnerID = " + currentUser.UserID); // Add security condition - display only tasks which are assigned or owned by the current user or which are a part of a project where the current user is authorised to Read from whereCondition = SqlHelper.AddWhereCondition(whereCondition, ProjectTaskInfoProvider.CombineSecurityWhereCondition(whereCondition, currentUser, null)); return(whereCondition); }
/// <summary> /// Control OnExternalDataBound event. /// </summary> private object Control_OnExternalDataBound(object sender, string sourceName, object parameter) { DataRowView row = null; switch (sourceName.ToLowerCSafe()) { case "delete": case "#delete": { if (CommunityGroupID != 0) { // Group project has special permission check - user has to have Manage permission or be a group admin // The default permission check is suppressed in UIElement (using custom attribute) if (!isGroupAdministrator && !hasGroupManagePermission) { CMSGridActionButton newPostButton = ((CMSGridActionButton)sender); newPostButton.Enabled = false; } } } break; case "projectprogress": row = (DataRowView)parameter; int progress = ValidationHelper.GetInteger(row["ProjectProgress"], 0); return(ProjectTaskInfoProvider.GenerateProgressHtml(progress, true)); case "statusicon": row = (DataRowView)parameter; string iconUrl = ValidationHelper.GetString(row["ProjectStatusIcon"], ""); // Get row color rowColor = ValidationHelper.GetString(row["ProjectStatusColor"], ""); if (!String.IsNullOrEmpty(iconUrl)) { string statusText = ValidationHelper.GetString(row["ProjectStatus"], ""); statusText = HTMLHelper.HTMLEncode(statusText); return("<div class=\"ProjectStatusIcon\"><img alt=\"" + statusText + "\" title=\"" + statusText + "\" src=\"" + HTMLHelper.HTMLEncode(Control.GetImageUrl(iconUrl)) + "\" class=\"ProjectStatusIcon\" /></div>"); } return(""); } return(null); }
/// <summary> /// Check permissions event handler. /// </summary> void ucTasks_OnCheckPermissionsExtended(string permissionType, string modulePermissionType, CMSAdminControl sender) { // No permissions by default sender.StopProcessing = true; // Current item ID int taskId = 0; // Check permission for delete task if (permissionType == ProjectManagementPermissionType.DELETE) { // Get list object CMSAdminListControl listControl = sender as CMSAdminListControl; // Check whether list object is defined if (listControl != null) { taskId = listControl.SelectedItemID; } } // Check permision for task modify else if (permissionType == ProjectManagementPermissionType.MODIFY) { // Get edit object CMSAdminEditControl editControl = sender as CMSAdminEditControl; // Check whether edit control is defined if (editControl != null) { taskId = editControl.ItemID; } } // Check permissions only for existing tasks if (taskId > 0) { // If user has no permission for current action, display error message if (ProjectTaskInfoProvider.IsAuthorizedPerTask(taskId, permissionType, CMSContext.CurrentUser, CMSContext.CurrentSiteID)) { sender.StopProcessing = false; } else { messageElem.Visible = true; messageElem.ErrorMessage = ResHelper.GetString("pm.project.permission"); } } }
/// <summary> /// Sets breacrumbs for edit. /// </summary> private void SetBreadcrumbs(int projectTaskID) { // If project task is defined display task specific breadcrumbs if (projectTaskID != 0) { // Load project name ProjectTaskInfo pi = ProjectTaskInfoProvider.GetProjectTaskInfo(projectTaskID); if (pi != null) { lblEditBack.Text = " <span class=\"TitleBreadCrumbSeparator\"> </span>" + HTMLHelper.HTMLEncode(pi.ProjectTaskDisplayName); } } // Dsiplay new task breadcrumb else { lblEditBack.Text = " <span class=\"TitleBreadCrumbSeparator\"> </span>" + GetString("pm.projecttask.new"); } }
/// <summary> /// Sets breadcrumbs for edit. /// </summary> private void SetBreadcrumbs(int projectTaskID) { // If project task is defined display task specific breadcrumbs if (projectTaskID != 0) { // Load project name ProjectTaskInfo pi = ProjectTaskInfoProvider.GetProjectTaskInfo(projectTaskID); if (pi != null) { ucBreadcrumbs.Items[1].Text = HTMLHelper.HTMLEncode(pi.ProjectTaskDisplayName); } } // Display new task breadcrumb else { ucBreadcrumbs.Items[1].Text = GetString("pm.projecttask.new"); } }
void Control_OnAfterDataLoad(object sender, EventArgs e) { if (Project == null) { return; } if (Project.ProjectID != 0) { // Load progress int progress = ProjectInfoProvider.GetProjectProgress(Project.ProjectID); Control.FieldControls["ProjectProgress"].Text = ProjectTaskInfoProvider.GenerateProgressHtml(progress, true); } else { Control.FieldsToHide.Add("ProjectProgress"); Control.FieldsToHide.Add("ProjectAttachments"); } }
/// <summary> /// Checks modify permission on task edit. /// </summary> /// <param name="permissionType">Permission type</param> /// <param name="modulePermissionType">Module permission type</param> /// <param name="sender">Sender object</param> private void ucTaskEdit_OnCheckPermissionsExtended(string permissionType, string modulePermissionType, CMSAdminControl sender) { // Indicates whether user is owner or assignee bool isInvolved = false; // Check whether taks is in edit mode if (ucTaskEdit.ItemID > 0) { // Get task info ProjectTaskInfo pti = ProjectTaskInfoProvider.GetProjectTaskInfo(ucTaskEdit.ItemID); // Check whether task exists if (pti != null) { // Keep current user var cui = MembershipContext.AuthenticatedUser; // If user is assignee or owenr set flag if ((pti.ProjectTaskAssignedToUserID == cui.UserID) || (pti.ProjectTaskOwnerID == cui.UserID)) { isInvolved = true; } } } // Check whether user is allowed to modify task if (!isInvolved && !ProjectInfoProvider.IsAuthorizedPerProject(ProjectID, permissionType, MembershipContext.AuthenticatedUser) && !IsAuthorizedPerProjectAccess()) { // Set error message to the dialog ucTaskEdit.SetError(GetString("pm.project.permission")); // Stop edit control processing sender.StopProcessing = true; // Display dialog with HTML editor ucPopupDialogTask.Visible = true; // Set current project ID ucTaskEdit.ProjectID = ProjectID; // Show popup dialog for possibility of error on task edit form ucPopupDialogTask.Show(); // Updade modal dialog update panel pnlUpdateModalTask.Update(); } }
/// <summary> /// Checks whether current user can modify task. /// </summary> /// <param name="permissionType">Permission type</param> /// <param name="modulePermissionType">Module permission type</param> /// <param name="sender">Sender object</param> void ucTaskEdit_OnCheckPermissionsExtended(string permissionType, string modulePermissionType, CMSAdminControl sender) { // Get task info for currently deleted task ProjectTaskInfo pti = ProjectTaskInfoProvider.GetProjectTaskInfo(ucTaskEdit.ItemID); // Check permission only for existing tasks and tasks assigned to some project if ((pti != null) && (pti.ProjectTaskProjectID > 0)) { // Keep current user CurrentUserInfo cui = CMSContext.CurrentUser; // Check access to project permission for modify action if ((String.Compare(permissionType, ProjectManagementPermissionType.MODIFY, true) == 0) && ProjectInfoProvider.IsAuthorizedPerProject(pti.ProjectTaskProjectID, ProjectManagementPermissionType.READ, cui)) { // If user is owner or assignee => allow taks edit if ((pti.ProjectTaskOwnerID == cui.UserID) || (pti.ProjectTaskAssignedToUserID == cui.UserID)) { return; } } // Check whether user is allowed to modify task if (!ProjectInfoProvider.IsAuthorizedPerProject(pti.ProjectTaskProjectID, permissionType, cui)) { // Set error message to the dialog ucTaskEdit.SetError(GetString("pm.project.permission")); // Stop edit control processing sender.StopProcessing = true; // Render dialog this.ucPopupDialog.Visible = true; // Show dialog ucPopupDialog.Show(); // Update dialog panel pnlUpdateList.Update(); } } }
/// <summary> /// Deletes project task. Called when the "Delete task" button is pressed. /// Expects the CreateProjectTask method to be run first. /// </summary> private bool DeleteProjectTask() { // Prepare the parameters string where = "ProjectTaskDisplayName LIKE N'My new task%'"; string orderBy = ""; int topN = 0; string columns = ""; // Get the data DataSet tasks = ProjectTaskInfoProvider.GetProjectTasks(where, orderBy, topN, columns); if (!DataHelper.DataSourceIsEmpty(tasks)) { // Get the project task ProjectTaskInfo deleteTask = new ProjectTaskInfo(tasks.Tables[0].Rows[0]); // Delete the project task ProjectTaskInfoProvider.DeleteProjectTaskInfo(deleteTask); return(deleteTask != null); } return(false); }
/// <summary> /// Setup control. /// </summary> protected void SetupControl() { if (!StopProcessing) { // Get active tasks int count = ProjectTaskInfoProvider.GetUserActiveTasksCount(CMSContext.CurrentUser.UserID, null, this.IncludeFinishedTasks, this.IncludeNotStartedTasks); // Fill link text lnkProjects.Text = String.Format(InfoText, count); lnkProjects.ToolTip = lnkProjects.Text; // Set specified task detail page if (!String.IsNullOrEmpty(this.TaskDetailUrl)) { lnkProjects.NavigateUrl = URLHelper.ResolveUrl(this.TaskDetailUrl); } // Set default task detail page else { lnkProjects.NavigateUrl = URLHelper.ResolveUrl(SettingsKeyProvider.GetStringValue(CMSContext.CurrentSiteName + ".CMSTaskDetailPage")); } } }
/// <summary> /// Saves control with actual data. /// </summary> public bool Save() { if (!CheckPermissions("CMS.ProjectManagement", CMSAdminControl.PERMISSION_MANAGE)) { return(false); } // Validate the form if (Validate()) { // Indicates whether project is new bool isNew = false; int progress = 0; // Ensure the info object if (this.ProjectObj == null) { // New project ProjectInfo pi = new ProjectInfo(); // First initialization of the Access propery - allow authenticated users pi.ProjectAccess = 1222; pi.ProjectCreatedByID = CMSContext.CurrentUser.UserID; pi.ProjectOwner = 0; if (CommunityGroupID != 0) { pi.ProjectGroupID = CommunityGroupID; // Set default access to the group pi.ProjectAccess = 3333; } mProjectObj = pi; isNew = true; } else { // Existing project // Reset ProjectOrder if checkbox was unchecked if ((this.ProjectObj.ProjectAllowOrdering) && (!this.chkProjectAllowOrdering.Checked)) { ProjectInfoProvider.ResetProjectOrder(this.ProjectObj.ProjectID); } // Clear the hashtables if the codename has been changed if ((this.ProjectObj.ProjectGroupID > 0) && this.ProjectObj.ProjectName != this.txtProjectName.Text) { ProjectInfoProvider.Clear(true); } progress = ProjectInfoProvider.GetProjectProgress(this.ProjectObj.ProjectID); } this.ltrProjectProgress.Text = ProjectTaskInfoProvider.GenerateProgressHtml(progress, true); // Initialize object this.ProjectObj.ProjectSiteID = CMSContext.CurrentSiteID; if (DisplayMode == ControlDisplayModeEnum.Simple) { if (isNew) { this.ProjectObj.ProjectName = ValidationHelper.GetCodeName(txtProjectDisplayName.Text, 50) + ((CommunityGroupID > 0) ? "_group_" : "_general_") + this.CodenameGUID; } } else { this.ProjectObj.ProjectName = this.txtProjectName.Text.Trim(); } this.ProjectObj.ProjectDisplayName = this.txtProjectDisplayName.Text.Trim(); this.ProjectObj.ProjectDescription = this.txtProjectDescription.Text.Trim(); this.ProjectObj.ProjectStartDate = this.dtpProjectStartDate.SelectedDateTime; this.ProjectObj.ProjectDeadline = this.dtpProjectDeadline.SelectedDateTime; this.ProjectObj.ProjectOwner = ValidationHelper.GetInteger(userSelector.UniSelector.Value, 0); this.ProjectObj.ProjectStatusID = ValidationHelper.GetInteger(drpProjectStatus.SelectedValue, 0); this.ProjectObj.ProjectAllowOrdering = this.chkProjectAllowOrdering.Checked; // Set ProjectNodeID if (!this.ShowPageSelector) { // Set current node id for new project if (isNew && (CMSContext.CurrentDocument != null)) { this.ProjectObj.ProjectNodeID = CMSContext.CurrentDocument.NodeID; } } else { TreeProvider treeProvider = new TreeProvider(); TreeNode node = treeProvider.SelectSingleNode(ValidationHelper.GetGuid(this.pageSelector.Value, Guid.Empty), TreeProvider.ALL_CULTURES, CMSContext.CurrentSiteName); if (node != null) { this.ProjectObj.ProjectNodeID = node.NodeID; } else { this.ProjectObj.ProjectNodeID = 0; } } // Use try/catch due to license check try { // Save object data to database ProjectInfoProvider.SetProjectInfo(this.ProjectObj); this.ProjectID = this.ProjectObj.ProjectID; this.ItemID = this.ProjectObj.ProjectID; this.RaiseOnSaved(); // Set the info message this.lblInfo.Text = GetString("general.changessaved"); return(true); } catch (Exception ex) { lblError.Visible = true; lblError.Text = ex.Message; } } return(false); }
/// <summary> /// Saves the data. /// </summary> public bool Save() { // Validate the form if (Validate()) { // New task if (this.ProjectTaskObj == null) { // New task - check permission of project task (ad-hoc task are allowed to create) if (!CheckPermissions("CMS.ProjectManagement", ProjectManagementPermissionType.CREATE, CMSAdminControl.PERMISSION_MANAGE)) { return(false); } ProjectTaskInfo pi = new ProjectTaskInfo(); pi.ProjectTaskProjectOrder = 0; pi.ProjectTaskUserOrder = 0; pi.ProjectTaskProjectID = ProjectID; pi.ProjectTaskCreatedByID = CMSContext.CurrentUser.UserID; mProjectTaskObj = pi; } else { this.ItemID = ProjectTaskObj.ProjectTaskID; if (!CheckPermissions("CMS.ProjectManagement", ProjectManagementPermissionType.MODIFY, CMSAdminControl.PERMISSION_MANAGE)) { return(false); } } // Initialize object this.ProjectTaskObj.ProjectTaskDisplayName = this.txtProjectTaskDisplayName.Text.Trim(); int assignedToUserId = ValidationHelper.GetInteger(selectorAssignee.UniSelector.Value, 0); if (assignedToUserId != this.ProjectTaskObj.ProjectTaskAssignedToUserID) { // If the task is reassigned - reset user order this.ProjectTaskObj.ProjectTaskUserOrder = ProjectTaskInfoProvider.GetTaskMaxOrder(ProjectTaskOrderByEnum.UserOrder, assignedToUserId) + 1; this.ProjectTaskObj.ProjectTaskAssignedToUserID = assignedToUserId; } this.ProjectTaskObj.ProjectTaskProgress = ValidationHelper.GetInteger(this.txtProjectTaskProgress.Text, 0); this.ProjectTaskObj.ProjectTaskHours = ValidationHelper.GetDouble(this.txtProjectTaskHours.Text, 0); this.ProjectTaskObj.ProjectTaskOwnerID = ValidationHelper.GetInteger(selectorOwner.UniSelector.Value, 0); this.ProjectTaskObj.ProjectTaskDeadline = this.dtpProjectTaskDeadline.SelectedDateTime; if ((this.ProjectTaskObj.ProjectTaskDeadline != DateTimeHelper.ZERO_TIME) && (this.ProjectTaskObj.ProjectTaskDeadline > DateTime.Now)) { this.ProjectTaskObj.ProjectTaskNotificationSent = false; } this.ProjectTaskObj.ProjectTaskStatusID = ValidationHelper.GetInteger(drpTaskStatus.SelectedValue, 0); this.ProjectTaskObj.ProjectTaskPriorityID = ValidationHelper.GetInteger(drpTaskPriority.SelectedValue, 0); this.ProjectTaskObj.ProjectTaskIsPrivate = this.chkProjectTaskIsPrivate.Checked; this.ProjectTaskObj.ProjectTaskDescription = htmlTaskDescription.ResolvedValue; // Use try/catch due to license check try { // Save object data to database ProjectTaskInfoProvider.SetProjectTaskInfo(this.ProjectTaskObj); this.ItemID = this.ProjectTaskObj.ProjectTaskID; this.RaiseOnSaved(); this.lblInfo.Text = GetString("general.changessaved"); return(true); } catch (Exception ex) { lblError.Visible = true; lblError.Text = ex.Message; } } return(false); }
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); }
/// <summary> /// Build list where condition. /// </summary> string ucTaskList_BuildCondition(object sender, string whereCondition) { // Keep current user CurrentUserInfo currentUser = CMSContext.CurrentUser; // Switch by display type switch (this.TasksDisplayType) { // Tasks owned by me case TasksDisplayTypeEnum.TasksOwnedByMe: whereCondition = SqlHelperClass.AddWhereCondition(whereCondition, "ProjectTaskOwnerID = " + currentUser.UserID); break; // Tasks assigned to me case TasksDisplayTypeEnum.TasksAssignedToMe: whereCondition = SqlHelperClass.AddWhereCondition(whereCondition, "ProjectTaskAssignedToUserID = " + currentUser.UserID); break; // Project tasks case TasksDisplayTypeEnum.ProjectTasks: // Check whether project names are defined if (!String.IsNullOrEmpty(ProjectNames)) { string condition = SqlHelperClass.GetSafeQueryString(ProjectNames, false); condition = "N'" + condition.Replace(";", "',N'") + "'"; // Add condition for specified projects condition = "ProjectTaskProjectID IN (SELECT ProjectID FROM PM_Project WHERE ProjectName IN (" + condition + "))"; // Add condition for private task, only if current user isn't project management admin if (!currentUser.IsAuthorizedPerResource("CMS.ProjectManagement", CMSAdminControl.PERMISSION_MANAGE)) { condition = SqlHelperClass.AddWhereCondition(condition, "(ProjectTaskIsPrivate = 0 OR ProjectTaskIsPrivate IS NULL) OR (ProjectTaskOwnerID = " + currentUser.UserID + " OR ProjectTaskAssignedToUserID = " + currentUser.UserID + " OR ProjectOwner = " + currentUser.UserID + ")"); } // Complete where condition whereCondition = SqlHelperClass.AddWhereCondition(whereCondition, condition); } // If project names aren't defined do nothing else { whereCondition = "(1=2)"; } break; } // Do not dsiplay finished tasks if (!ShowFinishedTasks) { whereCondition = SqlHelperClass.AddWhereCondition(whereCondition, "TaskStatusIsFinished = 0"); } // Do not display on time tasks if (!ShowOnTimeTasks) { whereCondition = SqlHelperClass.AddWhereCondition(whereCondition, "((ProjectTaskDeadline < @Now) OR (ProjectTaskDeadline IS NULL))"); } // Do not display overdue tasks if (!ShowOverdueTasks) { whereCondition = SqlHelperClass.AddWhereCondition(whereCondition, "((ProjectTaskDeadline > @Now) OR (ProjectTaskDeadline IS NULL))"); } // Do not display private tasks if (!ShowPrivateTasks) { whereCondition = SqlHelperClass.AddWhereCondition(whereCondition, "ProjectTaskIsPrivate = 0"); } // Task assigned to me, Task owned by me webparts object[,] projectParameters = null; if ((!ShowOnTimeTasks) || (!ShowOverdueTasks)) { projectParameters = new object[1, 3]; projectParameters[0, 0] = "@Now"; projectParameters[0, 1] = DateTime.Now; this.ucTaskList.Grid.QueryParameters = QueryDataParameters.FromArray(projectParameters); } // Add security condition - display only tasks which are assigned or owned by the current user or which are a part of a project where the current user is authorised to Read from whereCondition = SqlHelperClass.AddWhereCondition(whereCondition, ProjectTaskInfoProvider.CombineSecurityWhereCondition(whereCondition, currentUser, SiteName)); return(whereCondition); }
/// <summary> /// Handles UniGrid's OnExternalDataBound event. /// </summary> /// <param name="sender">Sender object (image button if it is an external databoud for action button)</param> /// <param name="sourceName">External source name of the column specified in the grid XML</param> /// <param name="parameter">Source parameter (original value of the field)</param> protected object gridElem_OnExternalDataBound(object sender, string sourceName, object parameter) { DataRowView row = null; switch (sourceName.ToLower()) { case "up": case "down": ImageButton button = ((ImageButton)sender); button.Visible = showArrows; break; case "taskprogress": row = (DataRowView)parameter; int progress = ValidationHelper.GetInteger(row["ProjectTaskProgress"], 0); return(ProjectTaskInfoProvider.GenerateProgressHtml(progress, true)); case "projecttaskdisplayname": case "projectdisplayname": string displayname = parameter.ToString(); if (displayname.Length > MAX_TITLE_LENGTH) { return("<span title=\"" + HTMLHelper.HTMLEncode(displayname) + "\">" + HTMLHelper.HTMLEncode(TextHelper.LimitLength(displayname, MAX_TITLE_LENGTH)) + "</span>"); } else { return(HTMLHelper.HTMLEncode(displayname)); } case "projecttaskdeadline": DateTime dt = ValidationHelper.GetDateTime(parameter, DateTimeHelper.ZERO_TIME); if (dt == DateTimeHelper.ZERO_TIME) { return(String.Empty); } return(CMSContext.ConvertDateTime(dt, this)); case "taskstatus": row = parameter as DataRowView; if (row != null) { string statusName = ValidationHelper.GetString(row["TaskStatusDisplayName"], String.Empty); statusName = HTMLHelper.HTMLEncode(statusName); string iconPath = HTMLHelper.HTMLEncode(ValidationHelper.GetString(row["TaskStatusIcon"], String.Empty)); // Get row color rowColor = ValidationHelper.GetString(row["TaskStatusColor"], ""); switch (StatusDisplayType) { // Text case StatusDisplayTypeEnum.Text: return(statusName); // Icon case StatusDisplayTypeEnum.Icon: if (!String.IsNullOrEmpty(iconPath)) { return("<div style=\"text-align:center;\"><img src=\"" + URLHelper.ResolveUrl(iconPath) + "\" alt=\"" + statusName + "\" title=\"" + statusName + "\" class=\"StatusImage\" style=\"max-width:50px; max-height: 50px;\" /></div>"); } return(statusName); // Icon and text case StatusDisplayTypeEnum.IconAndText: if (!String.IsNullOrEmpty(iconPath)) { return("<img src=\"" + URLHelper.ResolveUrl(iconPath) + "\" title=\"" + statusName + "\" class=\"StatusImage\" style=\"max-width:50px; max-height: 50px;\" /> " + statusName); } return(statusName); } } return(row.ToString()); case "assigneeformattedfullname": row = (DataRowView)parameter; string assigneeUserName = ValidationHelper.GetString(row["AssigneeUserName"], String.Empty); string assigneeFullName = ValidationHelper.GetString(row["AssigneeFullName"], String.Empty); return(HTMLHelper.HTMLEncode(Functions.GetFormattedUserName(assigneeUserName, assigneeFullName, IsLiveSite))); case "ownerformattedfullname": row = (DataRowView)parameter; string ownerUserName = ValidationHelper.GetString(row["OwnerUserName"], String.Empty); string ownerFullName = ValidationHelper.GetString(row["OwnerFullName"], String.Empty); return(HTMLHelper.HTMLEncode(Functions.GetFormattedUserName(ownerUserName, ownerFullName, IsLiveSite))); // Display name with link - used in webparts case "linkeddisplayname": row = (DataRowView)parameter; string displayName = ValidationHelper.GetString(row["ProjectTaskDisplayName"], String.Empty); int projectTaskID = ValidationHelper.GetInteger(row["ProjectTaskID"], 0); string url = SettingsKeyProvider.GetStringValue(CMSContext.CurrentSiteName + ".CMSTaskDetailPage"); return(String.Format("<a href=\"{0}\" title=\"{1}\">{2}</a>", url + "?ProjectTaskID=" + projectTaskID, HTMLHelper.HTMLEncode(displayName), HTMLHelper.HTMLEncode(TextHelper.LimitLength(displayName, MAX_TITLE_LENGTH)))); // Display name with link to ajax window case "editlinkdisplayname": row = (DataRowView)parameter; string editDisplayName = ValidationHelper.GetString(row["ProjectTaskDisplayName"], String.Empty); int editProjectTaskID = ValidationHelper.GetInteger(row["ProjectTaskID"], 0); return(String.Format("<a href=\"javascript:" + ControlsHelper.GetPostBackEventReference(this, editProjectTaskID.ToString()) + "\" title=\"{0}\">{1}</a>", HTMLHelper.HTMLEncode(editDisplayName), HTMLHelper.HTMLEncode(TextHelper.LimitLength(editDisplayName, MAX_TITLE_LENGTH)))); } return(parameter); }
/// <summary> /// Loads the data into the form. /// </summary> public void LoadData() { // Check if the projects belongs to the current site if ((ProjectObj != null) && (ProjectObj.ProjectSiteID != SiteContext.CurrentSiteID)) { return; } // If delayed reload or not post back with not delayed reload if (((!URLHelper.IsPostback()) && (!DelayedReload)) || (DelayedReload)) { LoadDropDown(); } // Load the form from the info object if (ProjectObj != null) { txtProjectName.Text = ProjectObj.ProjectName; txtProjectDisplayName.Text = ProjectObj.ProjectDisplayName; txtProjectDescription.Text = ProjectObj.ProjectDescription; dtpProjectStartDate.SelectedDateTime = ProjectObj.ProjectStartDate; dtpProjectDeadline.SelectedDateTime = ProjectObj.ProjectDeadline; int progress = ProjectInfoProvider.GetProjectProgress(ProjectObj.ProjectID); ltrProjectProgress.Text = ProjectTaskInfoProvider.GenerateProgressHtml(progress, true); if (ProjectObj.ProjectOwner != 0) { userSelector.UniSelector.Value = ProjectObj.ProjectOwner; userSelector.ReloadData(); } else { userSelector.UniSelector.Value = String.Empty; } chkProjectAllowOrdering.Checked = ProjectObj.ProjectAllowOrdering; SetStatusDrp(ProjectObj.ProjectStatusID); if (ProjectObj.ProjectNodeID != 0) { SetProjectPage(ProjectObj.ProjectNodeID); } plcAttachments.Visible = true; lstAttachments.ObjectID = ProjectObj.ProjectID; lstAttachments.ReloadData(true); } else { userSelector.UniSelector.Value = ""; var cui = MembershipContext.AuthenticatedUser; if (!IsLiveSite || !cui.UserIsDisabledManually) { // Load default data userSelector.UniSelector.Value = MembershipContext.AuthenticatedUser.UserID; } pageSelector.Value = String.Empty; if (ProjectNodeID != 0) { SetProjectPage(ProjectNodeID); } ltrProjectProgress.Text = ProjectTaskInfoProvider.GenerateProgressHtml(0, true); // Hide progress bar for a new project plcProgress.Visible = false; // Hide atachments for a new project plcAttachments.Visible = false; } }
/// <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 projectTaskId = ValidationHelper.GetInteger(actionArgument, 0); RaiseOnAction(actionName, actionArgument); if (projectTaskId > 0) { switch (actionName.ToLower()) { case "edit": this.SelectedItemID = projectTaskId; this.RaiseOnEdit(); break; case "delete": // Delete the object this.SelectedItemID = projectTaskId; if (CheckPermissions("CMS.ProjectManagement", ProjectManagementPermissionType.DELETE, CMSAdminControl.PERMISSION_MANAGE)) { // Use try/catch due to license check try { ProjectTaskInfoProvider.DeleteProjectTaskInfo(projectTaskId); this.RaiseOnDelete(); } catch (Exception ex) { lblError.Visible = true; lblError.Text = ex.Message; } } // Reload data gridElem.ReloadData(); break; case "up": // Do not check permissions for user order if ((OrderByType != ProjectTaskOrderByEnum.ProjectOrder) || (CheckPermissions("CMS.ProjectManagement", ProjectManagementPermissionType.MODIFY, CMSAdminControl.PERMISSION_MANAGE) && showArrows)) { // Use try/catch due to license check try { gridElem.SortDirect = string.Empty; gridElem.ReloadData(); ProjectTaskInfoProvider.MoveTaskUp(projectTaskId, OrderByType); } catch (Exception ex) { lblError.Visible = true; lblError.Text = ex.Message; } } break; case "down": // Do not check permissions for user order if ((OrderByType != ProjectTaskOrderByEnum.ProjectOrder) || (CheckPermissions("CMS.ProjectManagement", ProjectManagementPermissionType.MODIFY, CMSAdminControl.PERMISSION_MANAGE) && showArrows)) { // Use try/catch due to license check try { gridElem.SortDirect = string.Empty; gridElem.ReloadData(); ProjectTaskInfoProvider.MoveTaskDown(projectTaskId, OrderByType); } catch (Exception ex) { lblError.Visible = true; lblError.Text = ex.Message; } } break; case "reminder": this.ReminderTaskID = projectTaskId; txtReminderText.Text = string.Empty; ShowReminderPopup(); break; } } }
/// <summary> /// Loads the data into the form. /// </summary> public void LoadData() { // Check if the projects belongs to the current site if ((this.ProjectObj != null) && (this.ProjectObj.ProjectSiteID != CMSContext.CurrentSiteID)) { return; } // If dealayed reload or not postback with not delayed reload if (((!URLHelper.IsPostback()) && (!DelayedReload)) || (DelayedReload)) { LoadDropDown(); } // Load the form from the info object if (this.ProjectObj != null) { this.txtProjectName.Text = this.ProjectObj.ProjectName; this.txtProjectDisplayName.Text = this.ProjectObj.ProjectDisplayName; this.txtProjectDescription.Text = this.ProjectObj.ProjectDescription; this.dtpProjectStartDate.SelectedDateTime = this.ProjectObj.ProjectStartDate; this.dtpProjectDeadline.SelectedDateTime = this.ProjectObj.ProjectDeadline; int progress = ProjectInfoProvider.GetProjectProgress(this.ProjectObj.ProjectID); this.ltrProjectProgress.Text = ProjectTaskInfoProvider.GenerateProgressHtml(progress, true); if (this.ProjectObj.ProjectOwner != 0) { userSelector.UniSelector.Value = this.ProjectObj.ProjectOwner; } else { userSelector.UniSelector.Value = String.Empty; } this.chkProjectAllowOrdering.Checked = this.ProjectObj.ProjectAllowOrdering; SetStatusDrp(this.ProjectObj.ProjectStatusID); if (this.ProjectObj.ProjectNodeID != 0) { SetProjectPage(this.ProjectObj.ProjectNodeID); } } else { userSelector.UniSelector.Value = ""; CurrentUserInfo cui = CMSContext.CurrentUser; if (!this.IsLiveSite || cui.UserEnabled) { // Load default data userSelector.UniSelector.Value = CMSContext.CurrentUser.UserID; } this.pageSelector.Value = String.Empty; if (ProjectNodeID != 0) { SetProjectPage(ProjectNodeID); } this.ltrProjectProgress.Text = ProjectTaskInfoProvider.GenerateProgressHtml(0, true); // Hide progress bar for a new project this.plcProgress.Visible = false; } }
/// <summary> /// Handles UniGrid's OnExternalDataBound event. /// </summary> /// <param name="sender">Sender object (image button if it is an external databoud for action button)</param> /// <param name="sourceName">External source name of the column specified in the grid XML</param> /// <param name="parameter">Source parameter (original value of the field)</param> protected object gridElem_OnExternalDataBound(object sender, string sourceName, object parameter) { DataRowView row = null; switch (sourceName.ToLowerCSafe()) { case "projectdisplayname": string displayname = parameter.ToString(); if (displayname.Length > MAX_TITLE_LENGTH) { return("<span title=\"" + HTMLHelper.HTMLEncode(displayname) + "\">" + HTMLHelper.HTMLEncode(TextHelper.LimitLength(displayname, MAX_TITLE_LENGTH)) + "</span>"); } else { return(HTMLHelper.HTMLEncode(displayname)); } case "projectprogress": row = (DataRowView)parameter; int progress = ValidationHelper.GetInteger(row["ProjectProgress"], 0); return(ProjectTaskInfoProvider.GenerateProgressHtml(progress, true)); case "statusicon": row = (DataRowView)parameter; string statusText = ValidationHelper.GetString(row["ProjectStatus"], ""); statusText = HTMLHelper.HTMLEncode(statusText); string iconUrl = ValidationHelper.GetString(row["ProjectStatusIcon"], ""); // Get row color rowColor = ValidationHelper.GetString(row["ProjectStatusColor"], ""); if (!String.IsNullOrEmpty(iconUrl)) { return("<div style=\"text-align:center;\"><img alt=\"" + statusText + "\" title=\"" + statusText + "\" src=\"" + HTMLHelper.HTMLEncode(GetImageUrl(iconUrl)) + "\" style=\"max-width:50px; max-height: 50px;\" /></div>"); } return(""); case "ownerfullname": row = (DataRowView)parameter; string userName = ValidationHelper.GetString(row["ProjectOwnerUserName"], String.Empty); string fullName = ValidationHelper.GetString(row["ProjectOwnerFullName"], String.Empty); return(HTMLHelper.HTMLEncode(Functions.GetFormattedUserName(userName, fullName, IsLiveSite))); case "projectdeadline": DateTime dt = ValidationHelper.GetDateTime(parameter, DateTimeHelper.ZERO_TIME); if (dt == DateTimeHelper.ZERO_TIME) { return(String.Empty); } return(TimeZoneMethods.ConvertDateTime(dt, this)); case "linkeddisplayname": row = (DataRowView)parameter; string displayName = HTMLHelper.HTMLEncode(ValidationHelper.GetString(row["ProjectDisplayName"], String.Empty)); string path = ValidationHelper.GetString(row["NodeAliasPath"], String.Empty); int projectId = ValidationHelper.GetInteger(row["ProjectID"], 0); if (!String.IsNullOrEmpty(path)) { string target = String.Empty; if (!String.IsNullOrEmpty(ProjectLinkTarget)) { target = " target=\"" + ProjectLinkTarget + "\" "; } path = URLHelper.ResolveUrl(DocumentURLProvider.GetUrl(path)); return(String.Format("<a href=\"{1}?projectid={2}\" {3} title=\"{4}\">{0}</a>", TextHelper.LimitLength(displayName, MAX_TITLE_LENGTH), path, projectId, target, HTMLHelper.HTMLEncode(displayName))); } else { return(displayName); } case "editlinkdisplayname": row = (DataRowView)parameter; string editDisplayName = ValidationHelper.GetString(row["ProjectDisplayName"], String.Empty); editDisplayName = TextHelper.LimitLength(editDisplayName, MAX_TITLE_LENGTH); int editProjectTaskID = ValidationHelper.GetInteger(row["ProjectID"], 0); return(String.Format("<a href=\"javascript:" + ControlsHelper.GetPostBackEventReference(this, editProjectTaskID.ToString()) + "\" title=\"{0}\">{1}</a>", HTMLHelper.HTMLEncode(editDisplayName), HTMLHelper.HTMLEncode(TextHelper.LimitLength(editDisplayName, MAX_TITLE_LENGTH)))); } return(parameter); }
/// <summary> /// Saves the data. /// </summary> public bool Save() { // Validate the form if (Validate()) { // New task if (ProjectTaskObj == null) { // New task - check permission of project task (ad-hoc task are allowed to create) if (!CheckPermissions("CMS.ProjectManagement", ProjectManagementPermissionType.CREATE, PERMISSION_MANAGE)) { return(false); } ProjectTaskInfo pi = new ProjectTaskInfo(); pi.ProjectTaskProjectOrder = 0; pi.ProjectTaskUserOrder = 0; pi.ProjectTaskProjectID = ProjectID; pi.ProjectTaskCreatedByID = MembershipContext.AuthenticatedUser.UserID; mProjectTaskObj = pi; } else { ItemID = ProjectTaskObj.ProjectTaskID; if (!CheckPermissions("CMS.ProjectManagement", ProjectManagementPermissionType.MODIFY, PERMISSION_MANAGE)) { return(false); } } // Initialize object ProjectTaskObj.ProjectTaskDisplayName = txtProjectTaskDisplayName.Text.Trim(); int assignedToUserId = ValidationHelper.GetInteger(selectorAssignee.UniSelector.Value, 0); if (assignedToUserId != ProjectTaskObj.ProjectTaskAssignedToUserID) { // If the task is reassigned - reset user order ProjectTaskObj.ProjectTaskUserOrder = ProjectTaskInfoProvider.GetTaskMaxOrder(ProjectTaskOrderByEnum.UserOrder, assignedToUserId) + 1; ProjectTaskObj.ProjectTaskAssignedToUserID = assignedToUserId; } ProjectTaskObj.ProjectTaskProgress = ValidationHelper.GetInteger(txtProjectTaskProgress.Text, 0); ProjectTaskObj.ProjectTaskHours = ValidationHelper.GetDouble(txtProjectTaskHours.Text, 0); ProjectTaskObj.ProjectTaskOwnerID = ValidationHelper.GetInteger(selectorOwner.UniSelector.Value, 0); ProjectTaskObj.ProjectTaskDeadline = dtpProjectTaskDeadline.SelectedDateTime; if ((ProjectTaskObj.ProjectTaskDeadline != DateTimeHelper.ZERO_TIME) && (ProjectTaskObj.ProjectTaskDeadline > DateTime.Now)) { ProjectTaskObj.ProjectTaskNotificationSent = false; } ProjectTaskObj.ProjectTaskStatusID = ValidationHelper.GetInteger(drpTaskStatus.SelectedValue, 0); ProjectTaskObj.ProjectTaskPriorityID = ValidationHelper.GetInteger(drpTaskPriority.SelectedValue, 0); ProjectTaskObj.ProjectTaskIsPrivate = chkProjectTaskIsPrivate.Checked; ProjectTaskObj.ProjectTaskDescription = htmlTaskDescription.ResolvedValue; // Use try/catch due to license check try { // Save object data to database ProjectTaskInfoProvider.SetProjectTaskInfo(ProjectTaskObj); ItemID = ProjectTaskObj.ProjectTaskID; RaiseOnSaved(); ShowChangesSaved(); return(true); } catch (Exception ex) { ShowError(ex.Message); } } return(false); }