Exemple #1
0
    /// <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);
    }
Exemple #7
0
    /// <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;
            }
        }
    }
Exemple #8
0
 /// <summary>
 /// Updates curent project task info after uploader events (upload and delete).
 /// </summary>
 private void TouchProjectTaskInfo()
 {
     if (ProjectTaskObj != null)
     {
         ProjectTaskInfoProvider.SetProjectTaskInfo(ProjectTaskObj);
     }
 }
Exemple #9
0
    /// <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);
    }
Exemple #10
0
    /// <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);
    }
Exemple #11
0
    /// <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);
    }
Exemple #12
0
    /// <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\">&nbsp;</span>" + HTMLHelper.HTMLEncode(pi.ProjectTaskDisplayName);
         }
     }
     // Dsiplay new task breadcrumb
     else
     {
         lblEditBack.Text = " <span class=\"TitleBreadCrumbSeparator\">&nbsp;</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");
     }
 }
Exemple #15
0
    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();
        }
    }
Exemple #17
0
    /// <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"));
            }
        }
    }
Exemple #20
0
    /// <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);
    }
Exemple #21
0
    /// <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);
    }
Exemple #22
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);
    }
Exemple #23
0
    /// <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);
    }
Exemple #24
0
    /// <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;\"  />&nbsp;" + 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);
    }
Exemple #25
0
    /// <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;
        }
    }
Exemple #26
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 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;
            }
        }
    }
Exemple #27
0
    /// <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;
        }
    }
Exemple #28
0
    /// <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);
    }
Exemple #29
0
    /// <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);
    }