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); }
/// <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); }
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; } }
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; }
/// <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; } }
/// <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); }
/// <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); }
/// <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; } } }
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")); } } }
/// <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); ; }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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"); } }
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")); }
/// <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); }
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\"> </span>" + HTMLHelper.HTMLEncode(pi.ProjectDisplayName); lblNewBack.Text = " <span class=\"TitleBreadCrumbSeparator\"> </span>" + HTMLHelper.HTMLEncode(pi.ProjectDisplayName); } } // Display breadcrumbs for ne project else { lblEditBack.Text = " <span class=\"TitleBreadCrumbSeparator\"> </span>" + GetString("pm.project.new"); lblNewBack.Text = " <span class=\"TitleBreadCrumbSeparator\"> </span>" + GetString("pm.project.new"); } }
/// <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; } } }
/// <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 = " "; 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 = " "; 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 = " "; 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 = " "; 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); } } } }