Example #1
0
    /// <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);
    }
Example #2
0
    /// <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();
        }
    }
Example #3
0
    /// <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");
        }
    }
Example #4
0
    /// <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);
    }
Example #5
0
    /// <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();
        }
    }
Example #6
0
    /// <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();
    }
Example #7
0
    /// <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;
            }
        }
    }
Example #8
0
    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);
    }