protected void Page_Load(object sender, EventArgs e)
    {
        int projectId = QueryHelper.GetInteger("projectid", 0);

        ProjectInfo pi = ProjectInfoProvider.GetProjectInfo(projectId);

        if (pi != null)
        {
            if (pi.ProjectSiteID != SiteContext.CurrentSiteID)
            {
                RedirectToInformation(GetString("general.notassigned"));
            }
        }

        if (projectId > 0)
        {
            // Display project tasks
            listElem.ProjectID   = projectId;
            listElem.OrderByType = ProjectTaskOrderByEnum.ProjectOrder;
            listElem.OrderBy     = "TaskPriorityOrder ASC, ProjectTaskDeadline DESC";
        }
        else
        {
            // Display all task (project + ad-hoc tasks)
            listElem.Grid.GridName = "~/CMSModules/ProjectManagement/Controls/UI/ProjectTask/ListAll.xml";
            listElem.OrderBy       = "ProjectTaskDisplayName";
            listElem.SiteName      = SiteContext.CurrentSiteName;
        }

        HeaderAction action = new HeaderAction();

        action.Text        = (projectId > 0) ? GetString("pm.projecttask.new") : GetString("pm.projecttask.newpersonal");
        action.RedirectUrl = ResolveUrl("Edit.aspx" + ((projectId > 0) ? ("?projectid=" + projectId) : ""));
        CurrentMaster.HeaderActions.AddAction(action);
    }
Beispiel #2
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);
    }
Beispiel #3
0
    protected void Page_Load(object sender, EventArgs e)
    {
        int         projectID = QueryHelper.GetInteger("projectid", 0);
        ProjectInfo pi        = ProjectInfoProvider.GetProjectInfo(projectID);

        if (pi != null)
        {
            if (pi.ProjectSiteID != CMSContext.CurrentSiteID)
            {
                RedirectToInformation(GetString("general.notassigned"));
            }
        }

        // Prepare the actions
        string[,] actions = new string[1, 6];
        actions[0, 0]     = HeaderActions.TYPE_HYPERLINK;
        actions[0, 1]     = GetString("pm.project.new");
        actions[0, 3]     = ResolveUrl("Edit.aspx");
        actions[0, 5]     = GetImageUrl("Objects/PM_Project/add.png");

        // Set the actions
        ICMSMasterPage master = this.CurrentMaster;

        master.HeaderActions.Actions = actions;

        // Set the title
        PageTitle title = master.Title;

        ScriptHelper.RegisterTitleScript(this, GetString("projectmanagement.projects"));
    }
    /// <summary>
    /// Handles the Load event of the Page control.
    /// </summary>
    protected void Page_Load(object sender, EventArgs e)
    {
        gridMatrix.OnItemChanged       += gridMatrix_OnItemChanged;
        gridMatrix.StopProcessing       = true;
        gridMatrix.ColumnsPreferedOrder = string.Join(",", mAllowedPermissions);

        if (ProjectID > 0)
        {
            mProject = ProjectInfoProvider.GetProjectInfo(ProjectID);

            // Check whether the project still exists
            EditedObject = mProject;
        }

        // Handle page chnaged event
        gridMatrix.OnPageChanged += gridMatrix_OnPageChanged;

        // Disable permission matrix if user has no MANAGE rights
        if (!ProjectInfoProvider.IsAuthorizedPerProject(ProjectID, PERMISSION_MANAGE, MembershipContext.AuthenticatedUser))
        {
            Enable             = false;
            gridMatrix.Enabled = false;
            lblError.Text      = String.Format(GetString("general.accessdeniedonpermissionname"), "Manage");
            lblError.Visible   = true;
        }
    }
    protected override void OnInit(EventArgs e)
    {
        // Get the IDs from query string
        projectId = QueryHelper.GetInteger("projectid", 0);

        ProjectInfo pi = ProjectInfoProvider.GetProjectInfo(projectId);

        if (pi != null)
        {
            if (pi.ProjectSiteID != CMSContext.CurrentSiteID)
            {
                RedirectToInformation(GetString("general.notassigned"));
            }
        }

        assigneeId = QueryHelper.GetInteger("assigneeid", 0);
        ownerId    = QueryHelper.GetInteger("ownerid", 0);

        editElem.ProjectID             = projectId;
        editElem.ItemID                = QueryHelper.GetInteger("projecttaskid", 0);
        editElem.ProjectTaskAssigneeID = assigneeId;
        editElem.ProjectTaskOwnerID    = ownerId;
        editElem.OnSaved              += new EventHandler(editElem_OnSaved);

        base.OnInit(e);
    }
    /// <summary>
    /// Check whether user can delete project.
    /// </summary>
    private void ucProjectList_OnCheckPermissions(string permissionType, CMSAdminControl sender)
    {
        // Indicates whether current user is owner
        bool isOwner = false;

        // Get project id
        int projectId = ValidationHelper.GetInteger(sender.GetValue("DeletedItemID"), 0);

        // Check whether project id is valid
        if (projectId > 0)
        {
            // Try get project info
            ProjectInfo proj = ProjectInfoProvider.GetProjectInfo(projectId);

            // Check whethr peoject object exists and if current user is owner
            if ((proj != null) && (proj.ProjectOwner == CMSContext.CurrentUser.UserID))
            {
                isOwner = true;
            }
        }

        // If user is owner or can create project, allow delete project
        if (!isOwner && !IsAuthorizedPerCreateProject())
        {
            // Show error
            lblError.Visible = true;
            // Set error message
            lblError.Text = GetString("pm.project.permission");
            // Stop edit control processing
            sender.StopProcessing = true;
        }
    }
Beispiel #7
0
    protected void Page_Load(object sender, EventArgs e)
    {
        SetupControls();

        // Set edited task
        EditedObject = ProjectTaskObj ?? new ProjectTaskInfo();

        // Check whether the project still exists
        if ((ProjectID > 0) && (ProjectInfoProvider.GetProjectInfo(ProjectID) == null))
        {
            RedirectToInformation("editedobject.notexists");
        }

        // Initialize HTML Editor
        htmlTaskDescription.AutoDetectLanguage = false;
        htmlTaskDescription.DefaultLanguage    = Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName;
        htmlTaskDescription.EditorAreaCSS      = "";
        htmlTaskDescription.ToolbarSet         = "ProjectManagement";

        // Check stop processing
        if (StopProcessing)
        {
            return;
        }

        ReloadData();

        btnOk.Visible = ShowOKButton;
        dtpProjectTaskDeadline.IsLiveSite = IsLiveSite;

        // Set associated controls for form controls due to validity
        lblProjectTaskOwnerID.AssociatedControlClientID          = selectorOwner.ValueElementID;
        lblProjectTaskAssignedToUserID.AssociatedControlClientID = selectorAssignee.ValueElementID;
    }
Beispiel #8
0
    /// <summary>
    /// Handles the Load event of the Page control.
    /// </summary>
    protected void Page_Load(object sender, EventArgs e)
    {
        gridMatrix.OnItemChanged       += new UniMatrix.ItemChangedEventHandler(gridMatrix_OnItemChanged);
        gridMatrix.StopProcessing       = true;
        gridMatrix.ColumnsPreferedOrder = string.Join(",", allowedPermissions);


        if (ProjectID > 0)
        {
            project = ProjectInfoProvider.GetProjectInfo(ProjectID);

            // Check whether the project still exists
            EditedObject = project;
        }

        // Handle page chnaged event
        gridMatrix.OnPageChanged += new EventHandler <EventArgs>(gridMatrix_OnPageChanged);

        // Disable permission matrix if user has no MANAGE rights
        if (!ProjectInfoProvider.IsAuthorizedPerProject(ProjectID, PERMISSION_MANAGE, CMSContext.CurrentUser))
        {
            Enable             = false;
            gridMatrix.Enabled = false;
            lblError.Text      = String.Format(GetString("CMSSiteManager.AccessDeniedOnPermissionName"), "Manage");
            lblError.Visible   = true;
        }
    }
Beispiel #9
0
    /// <summary>
    /// Gets the sorting arrows visibility according to the settings of the project or other circumstances.
    /// </summary>
    private bool GetSortingArrowsVisibility()
    {
        bool arrowsVisible = false;

        // Hide/show sorting arrows  with dependence on project ordering
        if (ProjectID > 0)
        {
            if (ProjectInfoProvider.IsAuthorizedPerProject(ProjectID, ProjectManagementPermissionType.MODIFY, CMSContext.CurrentUser) ||
                CMSContext.CurrentUser.IsAuthorizedPerResource("CMS.ProjectManagement", CMSAdminControl.PERMISSION_MANAGE))
            {
                arrowsVisible = true;
                if (OrderByType == ProjectTaskOrderByEnum.ProjectOrder)
                {
                    ProjectInfo projectObj = ProjectInfoProvider.GetProjectInfo(ProjectID);
                    if (projectObj != null)
                    {
                        arrowsVisible = projectObj.ProjectAllowOrdering;
                    }
                }
            }
        }
        // Tasks list only
        else
        {
            // Show sorting only for all site tasks
            if (String.IsNullOrEmpty(SiteName))
            {
                arrowsVisible = true;
            }
        }

        return(arrowsVisible);
    }
Beispiel #10
0
    /// <summary>
    /// Deletes project. Called when the "Delete project" button is pressed.
    /// Expects the CreateProject method to be run first.
    /// </summary>
    private bool DeleteProject()
    {
        // Get the project
        ProjectInfo deleteProject = ProjectInfoProvider.GetProjectInfo("MyNewProject", SiteContext.CurrentSiteID, 0);

        // Delete the project
        ProjectInfoProvider.DeleteProjectInfo(deleteProject);

        return(deleteProject != null);
    }
Beispiel #11
0
    /// <summary>
    /// Handles the Load event of the Page control.
    /// </summary>
    protected void Page_Load(object sender, EventArgs e)
    {
        int projectId   = QueryHelper.GetInteger("projectid", 0);
        int groupId     = QueryHelper.GetInteger("groupid", 0);
        int selectedTab = QueryHelper.GetInteger("tab", 0);

        // Prepare the tabs
        string[,] tabs = new string[3, 4];

        tabs[0, 0] = GetString("pm.projecttask");
        tabs[0, 1] = "SetHelpTopic('helpTopic', 'pm_project_tasks');";
        tabs[0, 2] = URLHelper.ResolveUrl("~/CMSModules/Groups/Tools/ProjectManagement/ProjectTask/List.aspx?projectid=" + projectId + "&groupid=" + groupId);

        tabs[1, 0] = GetString("general.general");
        tabs[1, 1] = "SetHelpTopic('helpTopic', 'pm_project_edit');";
        tabs[1, 2] = URLHelper.ResolveUrl("~/CMSModules/Groups/Tools/ProjectManagement/Project/Edit.aspx?projectid=" + projectId + "&groupid=" + groupId);

        tabs[2, 0] = GetString("general.security");
        tabs[2, 1] = "SetHelpTopic('helpTopic', 'pm_project_security');";
        tabs[2, 2] = URLHelper.ResolveUrl("~/CMSModules/Groups/Tools/ProjectManagement/Project/Security.aspx?projectid=" + projectId + "&groupid=" + groupId);

        // Set the tabs
        ICMSMasterPage master = this.CurrentMaster;

        master.Tabs.Tabs        = tabs;
        master.Tabs.SelectedTab = selectedTab;
        master.Tabs.UrlTarget   = "content";

        ProjectInfo projectObj  = ProjectInfoProvider.GetProjectInfo(projectId);
        string      projectName = "";

        if (projectObj != null)
        {
            projectName = projectObj.ProjectDisplayName;
        }

        // Set the title
        PageTitle title = this.CurrentMaster.Title;

        title.HelpName      = "helpTopic";
        title.HelpTopicName = "pm_project_tasks";

        // Prepare the breadcrumbs
        string[,] breadcrumbs = new string[2, 3];
        breadcrumbs[0, 0]     = GetString("pm.project.list");
        breadcrumbs[0, 1]     = URLHelper.ResolveUrl("~/CMSModules/Groups/Tools/ProjectManagement/Project/List.aspx?groupid=" + groupId);
        breadcrumbs[0, 2]     = "_parent";
        breadcrumbs[1, 0]     = HTMLHelper.HTMLEncode(projectName);

        // Set the title
        title.Breadcrumbs = breadcrumbs;
    }
    /// <summary>
    /// Check permission handler.
    /// </summary>
    private void controls_OnCheckPermissions(string permissionType, CMSAdminControl sender)
    {
        ProjectInfo pi = ProjectInfoProvider.GetProjectInfo(ProjectID);

        if (pi != null)
        {
            // If user is group admin => allow all actions
            if (!CMSContext.CurrentUser.IsGroupAdministrator(pi.ProjectGroupID))
            {
                sender.StopProcessing = true;
            }
        }
    }
Beispiel #13
0
    protected void Page_Load(object sender, EventArgs e)
    {
        int         projectID = QueryHelper.GetInteger("projectid", 0);
        ProjectInfo pi        = ProjectInfoProvider.GetProjectInfo(projectID);

        if (pi != null)
        {
            if (pi.ProjectSiteID != SiteContext.CurrentSiteID)
            {
                RedirectToInformation(GetString("general.notassigned"));
            }
        }
    }
Beispiel #14
0
    /// <summary>
    /// Load data.
    /// </summary>
    public void LoadData()
    {
        process = true;
        if (!Visible || StopProcessing)
        {
            EnableViewState = false;
            process         = false;
        }

        IsLiveSite = false;

        if (ProjectID > 0)
        {
            // Get information on current project
            project = ProjectInfoProvider.GetProjectInfo(ProjectID);
        }

        // Get project resource
        resProjects = ResourceInfoProvider.GetResourceInfo("CMS.ProjectManagement");

        if ((resProjects != null) && (project != null))
        {
            QueryDataParameters parameters = new QueryDataParameters();
            parameters.Add("@ID", resProjects.ResourceId);
            parameters.Add("@ProjectID", project.ProjectID);
            parameters.Add("@SiteID", CMSContext.CurrentSiteID);

            string where = "";
            int groupId = project.ProjectGroupID;

            // Build where condition
            if (groupId > 0)
            {
                where = "RoleGroupID=" + groupId.ToString() + " AND PermissionDisplayInMatrix = 0";
            }
            else
            {
                where = "RoleGroupID IS NULL AND PermissionDisplayInMatrix = 0";
            }

            // Setup matrix control
            gridMatrix.IsLiveSite      = IsLiveSite;
            gridMatrix.QueryParameters = parameters;
            gridMatrix.WhereCondition  = where;
            gridMatrix.ContentBefore   = "<table class=\"PermissionMatrix\" cellspacing=\"0\" cellpadding=\"0\" rules=\"rows\" border=\"1\" style=\"border-collapse:collapse;\">";
            gridMatrix.ContentAfter    = "</table>";
        }
    }
    /// <summary>
    /// Load data.
    /// </summary>
    public void LoadData()
    {
        mProcess = true;
        if (!Visible || StopProcessing)
        {
            EnableViewState = false;
            mProcess        = false;
        }

        IsLiveSite = false;

        if (ProjectID > 0)
        {
            // Get information on current project
            mProject = ProjectInfoProvider.GetProjectInfo(ProjectID);
        }

        // Get project resource
        mResProjects = ResourceInfoProvider.GetResourceInfo("CMS.ProjectManagement");

        if ((mResProjects != null) && (mProject != null))
        {
            QueryDataParameters parameters = new QueryDataParameters();
            parameters.Add("@ID", mResProjects.ResourceId);
            parameters.Add("@ProjectID", mProject.ProjectID);
            parameters.Add("@SiteID", SiteContext.CurrentSiteID);

            string where;
            int groupId = mProject.ProjectGroupID;

            // Build where condition
            if (groupId > 0)
            {
                where = "RoleGroupID=" + groupId + " AND PermissionDisplayInMatrix = 0";
            }
            else
            {
                where = "RoleGroupID IS NULL AND PermissionDisplayInMatrix = 0";
            }

            // Setup matrix control
            gridMatrix.IsLiveSite      = IsLiveSite;
            gridMatrix.QueryParameters = parameters;
            gridMatrix.WhereCondition  = where;
            gridMatrix.CssClass        = "permission-matrix";
        }
    }
    /// <summary>
    /// Checks whether current user can edit the project.
    /// </summary>
    protected bool IsAuthorizedPerProjectEdit()
    {
        // Keep current user info object
        var cui = MembershipContext.AuthenticatedUser;

        // Global admin is allowed for all actions
        if (cui.IsGlobalAdministrator)
        {
            return(true);
        }

        // Get project info object
        ProjectInfo pi = ProjectInfoProvider.GetProjectInfo(ProjectID);

        bool result = false;

        // Check whether project info is available, if not, user can't edit project
        if (pi != null)
        {
            // Project owner can edit the project
            if (pi.ProjectOwner == cui.UserID)
            {
                result = true;
            }
            // Community admin and group admin can edit project on group pages
            else if (pi.ProjectGroupID > 0)
            {
                result = cui.IsGroupAdministrator(pi.ProjectGroupID);
            }
            // Project managmnet admin can edt projects on regular pages
            else
            {
                result = cui.IsAuthorizedPerResource("CMS.ProjectManagement", PERMISSION_MANAGE);
            }
        }

        // Check project access
        if (!result)
        {
            return(IsAuthorizedPerProjectAccess());
        }

        return(result);

        ;
    }
Beispiel #17
0
    /// <summary>
    /// Removes authorized role to project. Called when the "Remove authorized role" button is pressed.
    /// Expects the CreateProject and AddAuthorizedRole methods to be run first.
    /// </summary>
    private bool RemoveAuthorizedRole()
    {
        // Get the project
        ProjectInfo        project    = ProjectInfoProvider.GetProjectInfo("MyNewProject", SiteContext.CurrentSiteID, 0);
        RoleInfo           role       = RoleInfoProvider.GetRoleInfo("CMSDeskAdmin", SiteContext.CurrentSiteID);
        PermissionNameInfo permission = PermissionNameInfoProvider.GetPermissionNameInfo("AccessToProject", "ProjectManagement", null);

        if ((project != null) && (role != null) && (permission != null))
        {
            // Remove relationship
            ProjectRolePermissionInfoProvider.RemoveRelationship(project.ProjectID, role.RoleID, permission.PermissionId);

            return(true);
        }

        return(false);
    }
Beispiel #18
0
    /// <summary>
    /// CreateURL of current task from current document.
    /// </summary>
    private string CreateTaskURL()
    {
        String url = String.Empty;

        if (ProjectTaskObj != null)
        {
            if (ProjectTaskObj.ProjectTaskProjectID != 0)
            {
                // Find project node url
                ProjectInfo pi = ProjectInfoProvider.GetProjectInfo(ProjectTaskObj.ProjectTaskProjectID);
                if (pi != null)
                {
                    TreeProvider tree     = new TreeProvider(MembershipContext.AuthenticatedUser);
                    TreeNode     treeNode = tree.SelectSingleNode(pi.ProjectNodeID);
                    if (treeNode != null)
                    {
                        SiteInfo si = SiteInfoProvider.GetSiteInfo(pi.ProjectSiteID);
                        if (si != null)
                        {
                            // Create absolute URL of project's node
                            url = URLHelper.GetAbsoluteUrl(DocumentURLProvider.GetUrl(treeNode.NodeAliasPath, String.Empty, si.SiteName));

                            // Add projectID as parameter
                            url = URLHelper.UpdateParameterInUrl(url, "projectid", ProjectTaskObj.ProjectTaskProjectID.ToString());

                            // Add taskID as parameter
                            url = URLHelper.UpdateParameterInUrl(url, "taskid", ProjectTaskObj.ProjectTaskID.ToString());
                        }
                    }
                }
            }
            else
            {
                // If Ad hoc task create url to current node
                url = URLHelper.GetAbsoluteUrl(RequestContext.CurrentURL);

                // Remove query
                url = URLHelper.RemoveQuery(url);

                // Add task ID
                url = URLHelper.UpdateParameterInUrl(url, "taskid", ProjectTaskObj.ProjectTaskID.ToString());
            }
        }
        return(url);
    }
Beispiel #19
0
    /// <summary>
    /// Gets and updates project. Called when the "Get and update project" button is pressed.
    /// Expects the CreateProject method to be run first.
    /// </summary>
    private bool GetAndUpdateProject()
    {
        // Get the project
        ProjectInfo updateProject = ProjectInfoProvider.GetProjectInfo("MyNewProject", SiteContext.CurrentSiteID, 0);

        if (updateProject != null)
        {
            // Update the properties
            updateProject.ProjectDisplayName = updateProject.ProjectDisplayName.ToLowerCSafe();

            // Save the changes
            ProjectInfoProvider.SetProjectInfo(updateProject);

            return(true);
        }

        return(false);
    }
Beispiel #20
0
    /// <summary>
    /// Validates the form. If validation succeeds returns true, otherwise returns false.
    /// </summary>
    private bool Validate()
    {
        string codename = this.txtProjectName.Text.Trim();

        if (this.DisplayMode == ControlDisplayModeEnum.Simple)
        {
            codename = ValidationHelper.GetCodeName(txtProjectDisplayName.Text, 50) + ((CommunityGroupID > 0) ? "_group_" : "_general_") + this.CodenameGUID;
        }

        // Validate required fields
        string errorMessage = new Validator()
                              .NotEmpty(this.txtProjectDisplayName.Text.Trim(), this.rfvProjectDisplayName.ErrorMessage)
                              .NotEmpty(codename, this.rfvProjectName.ErrorMessage)
                              .IsCodeName(codename, GetString("general.invalidcodename")).Result;


        if (!dtpProjectDeadline.IsValidRange() || !dtpProjectStartDate.IsValidRange())
        {
            errorMessage = GetString("general.errorinvaliddatetimerange");
        }

        // Check the uniqueness of the codename
        ProjectInfo pi = ProjectInfoProvider.GetProjectInfo(codename, CMSContext.CurrentSiteID, CommunityGroupID);

        if ((pi != null) && (pi.ProjectID != this.ProjectID))
        {
            errorMessage = GetString("general.codenameexists");
        }

        // Check if there is at least one status defined
        if (ValidationHelper.GetInteger(drpProjectStatus.SelectedValue, 0) == 0)
        {
            errorMessage = GetString("pm.projectstatus.warningnorecord");
        }

        // Set the error message
        if (!String.IsNullOrEmpty(errorMessage))
        {
            this.lblError.Text = errorMessage;
            return(false);
        }

        return(true);
    }
Beispiel #21
0
 /// <summary>
 /// Sets breadcrumbs for project.
 /// </summary>
 /// <param name="projectID">ID of project</param>
 private void SetBreadcrumbs(int projectID)
 {
     // If project id is defined display actual project name
     if (projectID != 0)
     {
         // Load project info
         ProjectInfo pi = ProjectInfoProvider.GetProjectInfo(projectID);
         // Check whether project info is defined
         if (pi != null)
         {
             ucBreadcrumbs.Items[1].Text = HTMLHelper.HTMLEncode(pi.ProjectDisplayName);
         }
     }
     // Display breadcrumbs for new project
     else
     {
         ucBreadcrumbs.Items[1].Text = GetString("pm.project.new");
     }
 }
Beispiel #22
0
    protected void Page_Load(object sender, EventArgs e)
    {
        int projectId = QueryHelper.GetInteger("projectid", 0);

        ProjectInfo pi = ProjectInfoProvider.GetProjectInfo(projectId);

        if (pi != null)
        {
            if (pi.ProjectSiteID != CMSContext.CurrentSiteID)
            {
                RedirectToInformation(GetString("general.notassigned"));
            }
        }

        if (projectId > 0)
        {
            // Display project tasks
            listElem.ProjectID   = projectId;
            listElem.OrderByType = ProjectTaskOrderByEnum.ProjectOrder;
            listElem.OrderBy     = "TaskPriorityOrder ASC, ProjectTaskDeadline DESC";
        }
        else
        {
            // Display all task (project + ad-hoc tasks)
            listElem.Grid.GridName = "~/CMSModules/ProjectManagement/Controls/UI/ProjectTask/ListAll.xml";
            listElem.OrderBy       = "ProjectTaskDisplayName";
            listElem.SiteName      = CMSContext.CurrentSiteName;
        }

        // Prepare the actions
        string[,] actions = new string[1, 6];
        actions[0, 0]     = HeaderActions.TYPE_HYPERLINK;
        actions[0, 1]     = (projectId > 0) ? GetString("pm.projecttask.new") : GetString("pm.projecttask.newpersonal");
        actions[0, 3]     = ResolveUrl("Edit.aspx" + ((projectId > 0) ? ("?projectid=" + projectId) : ""));
        actions[0, 5]     = GetImageUrl("Objects/PM_ProjectTask/add.png");

        // Set the actions
        ICMSMasterPage master = this.CurrentMaster;

        master.HeaderActions.Actions = actions;

        ScriptHelper.RegisterTitleScript(this, GetString("projectmanagement.tasks"));
    }
Beispiel #23
0
    /// <summary>
    /// Sets project's security. Called when the "Set project's security" button is pressed.
    /// Expects the CreateProject method to be run first.
    /// </summary>
    private bool SetSecurity()
    {
        // Get the project
        ProjectInfo project = ProjectInfoProvider.GetProjectInfo("MyNewProject", SiteContext.CurrentSiteID, 0);

        if (project != null)
        {
            // Set properties
            project.AllowCreate = SecurityAccessEnum.AllUsers;
            project.AllowDelete = SecurityAccessEnum.Owner;
            project.AllowRead   = SecurityAccessEnum.AuthorizedRoles;

            ProjectInfoProvider.SetProjectInfo(project);

            return(true);
        }

        return(false);
    }
Beispiel #24
0
    protected override void OnInit(EventArgs e)
    {
        // Get the ID from query string
        projectId = QueryHelper.GetInteger("projectid", 0);

        ProjectInfo pi = ProjectInfoProvider.GetProjectInfo(projectId);

        if (pi != null)
        {
            if (pi.ProjectSiteID != SiteContext.CurrentSiteID)
            {
                RedirectToInformation(GetString("general.notassigned"));
            }
        }

        editElem.ProjectID = projectId;
        editElem.OnSaved  += editElem_OnSaved;

        base.OnInit(e);
    }
 /// <summary>
 /// Sets breadcrumbs for project.
 /// </summary>
 /// <param name="projectID">ID of project</param>
 private void SetBreadcrumbs(int projectID)
 {
     // If project id is defined display actual project name
     if (projectID != 0)
     {
         // Load project info
         ProjectInfo pi = ProjectInfoProvider.GetProjectInfo(projectID);
         // Check whether project info is defined
         if (pi != null)
         {
             lblEditBack.Text = " <span class=\"TitleBreadCrumbSeparator\">&nbsp;</span>" + HTMLHelper.HTMLEncode(pi.ProjectDisplayName);
             lblNewBack.Text  = " <span class=\"TitleBreadCrumbSeparator\">&nbsp;</span>" + HTMLHelper.HTMLEncode(pi.ProjectDisplayName);
         }
     }
     // Display breadcrumbs for ne project
     else
     {
         lblEditBack.Text = " <span class=\"TitleBreadCrumbSeparator\">&nbsp;</span>" + GetString("pm.project.new");
         lblNewBack.Text  = " <span class=\"TitleBreadCrumbSeparator\">&nbsp;</span>" + GetString("pm.project.new");
     }
 }
Beispiel #26
0
    /// <summary>
    /// OnPreRender - ensures default displaying.
    /// </summary>
    protected override void OnPreRender(EventArgs e)
    {
        // Display list by default
        if ((!displayControlPerformed) && (!RequestHelper.IsPostBack()))
        {
            DisplayControl("list");
        }

        // Ensure breadcrumbs
        if (String.IsNullOrEmpty(ucBreadcrumbs.Items[1].Text))
        {
            int projectID = ValidationHelper.GetInteger(ViewState["SelectedProject"], 0);
            if (projectID > 0)
            {
                ProjectInfo pi = ProjectInfoProvider.GetProjectInfo(projectID);
                ucBreadcrumbs.Items[1].Text = (pi != null) ? pi.ProjectDisplayName : "";
            }
        }

        base.OnPreRender(e);
    }
    /// <summary>
    /// OnLoad - base initialization.
    /// </summary>
    protected void Page_Load(object sender, EventArgs e)
    {
        // Set current project ID to the sub-controls
        ucTaskList.ProjectID = ProjectID;
        ucTaskEdit.ProjectID = ProjectID;
        ucSecurity.ProjectID = ProjectID;

        // Set order column
        ucTaskList.OrderByType = ProjectTaskOrderByEnum.ProjectOrder;


        #region "New project task link"

        // Check whether user is allowed to create new tasks
        if (IsAuthorizedPerCreateTask())
        {
            // New item link
            string[,] actions = new string[1, 7];
            actions[0, 0]     = HeaderActions.TYPE_LINKBUTTON;
            actions[0, 1]     = GetString("pm.projecttask.new");
            actions[0, 2]     = null;
            actions[0, 4]     = null;
            actions[0, 5]     = GetImageUrl("Objects/PM_Project/add.png");
            actions[0, 6]     = "new_task";

            actionsElem.Actions          = actions;
            actionsElem.ActionPerformed += new CommandEventHandler(actionsElem_ActionPerformed);
        }
        // If user is not authorized to create new task, hide new task link
        else
        {
            pnlListActions.Visible = false;
        }

        #endregion


        #region "Tab settings"

        string[,] tabs      = new string[2, 4];
        tabs[0, 0]          = GetString("general.general");
        tabs[1, 0]          = GetString("general.security");
        tabControlElem.Tabs = tabs;

        tabControlElem.UsePostback   = true;
        tabControlElem.OnTabClicked += new EventHandler(tabControlElem_OnTabClicked);

        #endregion


        // Popupp dialogs title images and texts
        titleElem.TitleImage     = GetImageUrl("Objects/PM_Project/object.png");
        titleElem.TitleText      = GetString("pm.project.edit");
        titleTaskElem.TitleImage = GetImageUrl("Objects/PM_ProjectTask/object.png");
        titleTaskElem.TitleText  = GetString("pm.projecttask.edit");

        // Task list settings
        ucTaskList.UsePostbackOnEdit           = true;
        ucTaskList.OnAction                   += new CommandEventHandler(ucTaskList_OnAction);
        ucTaskList.OnCheckPermissionsExtended += new CheckPermissionsExtendedEventHandler(ucTaskList_OnCheckPermissionsExtended);

        // Task new/edit settings
        ucTaskEdit.DisableOnSiteValidators = true;
        ucTaskEdit.OnSaved += new EventHandler(ucTaskEdit_OnSaved);
        ucTaskEdit.OnCheckPermissionsExtended += new CheckPermissionsExtendedEventHandler(ucTaskEdit_OnCheckPermissionsExtended);

        // Project edit settings
        ucProjectEdit.DisableOnSiteValidators = true;
        ucProjectEdit.OnSaved            += new EventHandler(ucProjectEdit_OnSaved);
        ucProjectEdit.OnCheckPermissions += new CheckPermissionsEventHandler(ucProjectEdit_OnCheckPermissions);

        // Handle page changed event
        ucSecurity.OnCheckPermissions += new CheckPermissionsEventHandler(ucSecurity_OnCheckPermissions);

        // Show edit task if it is required
        EnsureForceTask();

        // Check whether edit project button should be displayed
        if (!IsAuthorizedPerProjectEdit())
        {
            // Hide button if user can't edit the project
            pnlUpdateProjectEdit.Visible = false;
        }

        // Set community id
        ProjectInfo pi = ProjectInfoProvider.GetProjectInfo(ProjectID);
        if (pi != null)
        {
            ucTaskList.CommunityGroupID = pi.ProjectGroupID;
        }

        // Build condition handler
        ucTaskList.BuildCondition += new CMSModules_ProjectManagement_Controls_UI_ProjectTask_List.BuildConditionEvent(ucTaskList_BuildCondition);
    }
    /// <summary>
    /// OnLoad - base initialization.
    /// </summary>
    protected void Page_Load(object sender, EventArgs e)
    {
        // Set current project ID to the sub-controls
        ucTaskList.ProjectID = ProjectID;
        ucTaskEdit.ProjectID = ProjectID;
        ucSecurity.ProjectID = ProjectID;

        // Set order column
        ucTaskList.OrderByType = ProjectTaskOrderByEnum.ProjectOrder;


        #region "New project task link"

        // Check whether user is allowed to create new tasks
        if (IsAuthorizedPerCreateTask())
        {
            HeaderAction action = new HeaderAction();
            action.Text        = GetString("pm.projecttask.new");
            action.CommandName = "new_task";
            actionsElem.AddAction(action);
            actionsElem.ActionPerformed += actionsElem_ActionPerformed;
        }
        // If user is not authorized to create new task, hide new task link
        else
        {
            pnlListActions.Visible = false;
        }

        #endregion


        #region "Tab settings"

        tabControlElem.AddTab(new TabItem
        {
            Text = GetString("general.general"),
        });
        tabControlElem.AddTab(new TabItem
        {
            Text = GetString("general.security"),
        });

        tabControlElem.UsePostback   = true;
        tabControlElem.OnTabClicked += new EventHandler(tabControlElem_OnTabClicked);

        #endregion


        // Listen on security save
        ucSecurity.OnSaved += ucSecurity_OnSaved;


        // Popupp dialogs title images and texts
        titleElem.TitleText     = GetString("pm.project.edit");
        titleTaskElem.TitleText = GetString("pm.projecttask.edit");

        // Task list settings
        ucTaskList.UsePostbackOnEdit           = true;
        ucTaskList.OnAction                   += ucTaskList_OnAction;
        ucTaskList.OnCheckPermissionsExtended += ucTaskList_OnCheckPermissionsExtended;

        // Task new/edit settings
        ucTaskEdit.DisableOnSiteValidators = true;
        ucTaskEdit.OnSaved += ucTaskEdit_OnSaved;
        ucTaskEdit.OnCheckPermissionsExtended += ucTaskEdit_OnCheckPermissionsExtended;

        // Project edit settings
        ucProjectEdit.DisableOnSiteValidators = true;
        ucProjectEdit.OnSaved            += ucProjectEdit_OnSaved;
        ucProjectEdit.OnCheckPermissions += ucProjectEdit_OnCheckPermissions;

        // Handle page changed event
        ucSecurity.OnCheckPermissions += ucSecurity_OnCheckPermissions;

        // Show edit task if it is required
        EnsureForceTask();

        // Check whether edit project button should be displayed
        if (!IsAuthorizedPerProjectEdit())
        {
            // Hide button if user can't edit the project
            pnlUpdateProjectEdit.Visible = false;
        }

        // Set community id
        ProjectInfo pi = ProjectInfoProvider.GetProjectInfo(ProjectID);
        if (pi != null)
        {
            ucTaskList.CommunityGroupID = pi.ProjectGroupID;
        }

        // Build condition handler
        ucTaskList.BuildCondition += ucTaskList_BuildCondition;
    }
    /// <summary>
    /// Generates the permission matrix for the cutrrent project.
    /// </summary>
    private void CreateMatrix()
    {
        // Get project resource info
        if (mResProjects == null)
        {
            mResProjects = ResourceInfoProvider.GetResourceInfo("CMS.ProjectManagement");
        }

        // Get project object
        if ((mProject == null) && (ProjectID > 0))
        {
            mProject = ProjectInfoProvider.GetProjectInfo(ProjectID);
        }

        if ((mResProjects != null) && (mProject != null))
        {
            // Get permissions for the current project resource
            DataSet permissions = PermissionNameInfoProvider.GetResourcePermissions(mResProjects.ResourceId);
            if (DataHelper.DataSourceIsEmpty(permissions))
            {
                lblInfo.Text    = GetString("general.emptymatrix");
                lblInfo.Visible = true;
            }
            else
            {
                TableRow headerRow = new TableRow();
                headerRow.TableSection = TableRowSection.TableHeader;
                headerRow.CssClass     = "unigrid-head";

                TableHeaderCell newHeaderCell = new TableHeaderCell();
                newHeaderCell.CssClass = "first-column";
                headerRow.Cells.Add(newHeaderCell);

                foreach (string permission in mAllowedPermissions)
                {
                    DataRow[] drArray = permissions.Tables[0].DefaultView.Table.Select("PermissionName = '" + permission + "'");
                    if (drArray.Length > 0)
                    {
                        DataRow dr = drArray[0];
                        newHeaderCell         = new TableHeaderCell();
                        newHeaderCell.Text    = dr["PermissionDisplayName"].ToString();
                        newHeaderCell.ToolTip = dr["PermissionDescription"].ToString();
                        headerRow.Cells.Add(newHeaderCell);
                    }
                    else
                    {
                        throw new Exception("[Security matrix] Column '" + permission + "' cannot be found.");
                    }
                }

                tblMatrix.Rows.Add(headerRow);

                // Render project access permissions
                object[,] accessNames = new object[5, 2];
                accessNames[0, 0]     = GetString("security.nobody");
                accessNames[0, 1]     = SecurityAccessEnum.Nobody;
                accessNames[1, 0]     = GetString("security.allusers");
                accessNames[1, 1]     = SecurityAccessEnum.AllUsers;
                accessNames[2, 0]     = GetString("security.authenticated");
                accessNames[2, 1]     = SecurityAccessEnum.AuthenticatedUsers;
                accessNames[3, 0]     = GetString("security.groupmembers");
                accessNames[3, 1]     = SecurityAccessEnum.GroupMembers;
                accessNames[4, 0]     = GetString("security.authorizedroles");
                accessNames[4, 1]     = SecurityAccessEnum.AuthorizedRoles;

                TableRow newRow;
                int      rowIndex = 0;
                for (int access = 0; access <= accessNames.GetUpperBound(0); access++)
                {
                    SecurityAccessEnum currentAccess = ((SecurityAccessEnum)accessNames[access, 1]);

                    // If the security isn't displayed as part of group section
                    if ((currentAccess == SecurityAccessEnum.GroupMembers) && (mProject.ProjectGroupID == 0))
                    {
                        // Do not render this access item
                    }
                    else
                    {
                        // Generate cell holding access item name
                        newRow = new TableRow();
                        TableCell newCell = new TableCell();
                        newCell.Text     = accessNames[access, 0].ToString();
                        newCell.CssClass = "matrix-header";
                        newRow.Cells.Add(newCell);
                        rowIndex++;

                        // Render the permissions access items
                        int permissionIndex = 0;
                        for (int permission = 0; permission < (tblMatrix.Rows[0].Cells.Count - 1); permission++)
                        {
                            newCell = new TableCell();

                            // Check if the currently processed access is applied for permission
                            bool isAllowed = CheckPermissionAccess(currentAccess, permission, tblMatrix.Rows[0].Cells[permission + 1].Text);

                            // Disable column in roles grid if needed
                            if ((currentAccess == SecurityAccessEnum.AuthorizedRoles) && !isAllowed)
                            {
                                gridMatrix.DisableColumn(permissionIndex);
                            }

                            // Insert the radio button for the current permission
                            var radio = new CMSRadioButton
                            {
                                Checked = isAllowed,
                                Enabled = Enable,
                            };
                            radio.Attributes.Add("onclick", ControlsHelper.GetPostBackEventReference(this, permission + ";" + Convert.ToInt32(currentAccess)));
                            newCell.Controls.Add(radio);

                            newRow.Cells.Add(newCell);
                            permissionIndex++;
                        }

                        // Add the access row to the table
                        tblMatrix.Rows.Add(newRow);
                    }
                }

                // Check if project has some roles assigned
                headTitle.Visible = gridMatrix.HasData;
            }
        }
    }
Beispiel #30
0
    /// <summary>
    /// Generates the permission matrix for the cutrrent project.
    /// </summary>
    private void CreateMatrix()
    {
        // Get project resource info
        if (resProjects == null)
        {
            resProjects = ResourceInfoProvider.GetResourceInfo("CMS.ProjectManagement");
        }

        // Get project object
        if ((project == null) && (ProjectID > 0))
        {
            project = ProjectInfoProvider.GetProjectInfo(ProjectID);
        }

        if ((resProjects != null) && (project != null))
        {
            // Get permissions for the current project resource
            DataSet permissions = PermissionNameInfoProvider.GetResourcePermissions(resProjects.ResourceId);
            if (DataHelper.DataSourceIsEmpty(permissions))
            {
                lblInfo.Text = GetString("general.emptymatrix");
            }
            else
            {
                TableRow headerRow = new TableRow();
                headerRow.CssClass = "UniGridHead";
                TableCell       newCell       = new TableCell();
                TableHeaderCell newHeaderCell = new TableHeaderCell();
                newHeaderCell.Text = "&nbsp;";
                newHeaderCell.Attributes["style"] = "width:200px;";
                headerRow.Cells.Add(newHeaderCell);

                foreach (string permission in allowedPermissions)
                {
                    DataRow[] drArray = permissions.Tables[0].DefaultView.Table.Select("PermissionName = '" + permission + "'");
                    if ((drArray != null) && (drArray.Length > 0))
                    {
                        DataRow dr = drArray[0];
                        newHeaderCell = new TableHeaderCell();
                        newHeaderCell.Attributes["style"] = "text-align:center;white-space:nowrap;";
                        newHeaderCell.Text            = dr["PermissionDisplayName"].ToString();
                        newHeaderCell.ToolTip         = dr["PermissionDescription"].ToString();
                        newHeaderCell.HorizontalAlign = HorizontalAlign.Center;
                        headerRow.Cells.Add(newHeaderCell);
                    }
                    else
                    {
                        throw new Exception("[Security matrix] Column '" + permission + "' cannot be found.");
                    }
                }
                newHeaderCell      = new TableHeaderCell();
                newHeaderCell.Text = "&nbsp;";
                headerRow.Cells.Add(newHeaderCell);

                tblMatrix.Rows.Add(headerRow);

                // Render project access permissions
                object[,] accessNames = new object[5, 2];
                accessNames[0, 0]     = GetString("security.nobody");
                accessNames[0, 1]     = SecurityAccessEnum.Nobody;
                accessNames[1, 0]     = GetString("security.allusers");
                accessNames[1, 1]     = SecurityAccessEnum.AllUsers;
                accessNames[2, 0]     = GetString("security.authenticated");
                accessNames[2, 1]     = SecurityAccessEnum.AuthenticatedUsers;
                accessNames[3, 0]     = GetString("security.groupmembers");
                accessNames[3, 1]     = SecurityAccessEnum.GroupMembers;
                accessNames[4, 0]     = GetString("security.authorizedroles");
                accessNames[4, 1]     = SecurityAccessEnum.AuthorizedRoles;

                TableRow newRow   = null;
                int      rowIndex = 0;
                for (int access = 0; access <= accessNames.GetUpperBound(0); access++)
                {
                    SecurityAccessEnum currentAccess = ((SecurityAccessEnum)accessNames[access, 1]);

                    // If the security isn't displayed as part of group section
                    if ((currentAccess == SecurityAccessEnum.GroupMembers) && (project.ProjectGroupID == 0))
                    {
                        // Do not render this access item
                    }
                    else
                    {
                        // Generate cell holding access item name
                        newRow           = new TableRow();
                        newRow.CssClass  = ((rowIndex % 2 == 0) ? "EvenRow" : "OddRow");
                        newCell          = new TableCell();
                        newCell.Text     = accessNames[access, 0].ToString();
                        newCell.Wrap     = false;
                        newCell.CssClass = "MatrixHeader";
                        newCell.Width    = new Unit(28, UnitType.Percentage);
                        newRow.Cells.Add(newCell);
                        rowIndex++;

                        // Render the permissions access items
                        bool isAllowed       = false;
                        bool isDisabled      = (!Enable);
                        int  permissionIndex = 0;
                        for (int permission = 0; permission < (tblMatrix.Rows[0].Cells.Count - 2); permission++)
                        {
                            newCell = new TableCell();

                            // Check if the currently processed access is applied for permission
                            isAllowed = CheckPermissionAccess(currentAccess, permission, tblMatrix.Rows[0].Cells[permission + 1].Text);

                            // Disable column in roles grid if needed
                            if ((currentAccess == SecurityAccessEnum.AuthorizedRoles) && !isAllowed)
                            {
                                gridMatrix.DisableColumn(permissionIndex);
                            }

                            // Insert the radio button for the current permission
                            string permissionText = tblMatrix.Rows[0].Cells[permission + 1].Text;
                            string elemId         = ClientID + "_" + permission + "_" + access;
                            newCell.Text = "<label style=\"display:none;\" for=\"" + elemId + "\">" + permissionText + "</label><input type=\"radio\" id=\"" + elemId + "\" name=\"" + permissionText + "\" onclick=\"" +
                                           ControlsHelper.GetPostBackEventReference(this, permission.ToString() + ";" + Convert.ToInt32(currentAccess).ToString()) + "\" " +
                                           ((isAllowed) ? "checked = \"checked\"" : "") + ((isDisabled) ? " disabled=\"disabled\"" : "") + "/>";

                            newCell.Wrap            = false;
                            newCell.Width           = new Unit(12, UnitType.Percentage);
                            newCell.HorizontalAlign = HorizontalAlign.Center;
                            newRow.Cells.Add(newCell);
                            permissionIndex++;
                        }

                        newCell      = new TableCell();
                        newCell.Text = "&nbsp;";
                        newRow.Cells.Add(newCell);

                        // Add the access row to the table
                        tblMatrix.Rows.Add(newRow);
                    }
                }

                // Check if project has some roles assigned
                mNoRolesAvailable = !gridMatrix.HasData;

                // Get permission matrix for current project resource
                if (!mNoRolesAvailable)
                {
                    // Security - Role separator
                    newRow       = new TableRow();
                    newCell      = new TableCell();
                    newCell.Text = "&nbsp;";
                    newCell.Attributes.Add("colspan", Convert.ToString(tblMatrix.Rows[0].Cells.Count));
                    newRow.Controls.Add(newCell);
                    tblMatrix.Rows.Add(newRow);

                    // Security - Role separator text
                    newRow           = new TableRow();
                    newCell          = new TableCell();
                    newCell.CssClass = "MatrixLabel";
                    newCell.Text     = GetString("SecurityMatrix.RolesAvailability");
                    newCell.Attributes.Add("colspan", Convert.ToString(tblMatrix.Rows[0].Cells.Count));
                    newRow.Controls.Add(newCell);
                    tblMatrix.Rows.Add(newRow);
                }
            }
        }
    }