예제 #1
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"));
    }
예제 #2
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)
    {
        RaiseOnAction(actionName, actionArgument);
        int projectId = ValidationHelper.GetInteger(actionArgument, 0);

        if (projectId > 0)
        {
            switch (actionName.ToLowerCSafe())
            {
            case "edit":
                SelectedItemID = projectId;
                RaiseOnEdit();
                break;

            case "delete":
                // Set deleted item id
                SetValue("DeletedItemID", projectId);
                if (CheckPermissions("CMS.ProjectManagement", PERMISSION_MANAGE))
                {
                    // Use try/catch due to license check
                    try
                    {
                        // Delete the object
                        ProjectInfoProvider.DeleteProjectInfo(projectId);
                        RaiseOnDelete();
                    }
                    catch (Exception ex)
                    {
                        ShowError(ex.Message);
                    }
                }
                break;
            }
        }
    }
예제 #3
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;
            }
        }
    }
예제 #4
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;
        }
    }
예제 #5
0
    /// <summary>
    /// Gets and bulk updates projects. Called when the "Get and bulk update projects" button is pressed.
    /// Expects the CreateProject method to be run first.
    /// </summary>
    private bool GetAndBulkUpdateProjects()
    {
        // Prepare the parameters
        string where = "ProjectName LIKE N'MyNewProject%'";
        string orderBy = "";
        int    topN    = 0;
        string columns = "";

        // Get the data
        DataSet projects = ProjectInfoProvider.GetProjects(where, orderBy, topN, columns);

        if (!DataHelper.DataSourceIsEmpty(projects))
        {
            // Loop through the individual items
            foreach (DataRow projectDr in projects.Tables[0].Rows)
            {
                // Create object from DataRow
                ProjectInfo modifyProject = new ProjectInfo(projectDr);

                // Update the properties
                modifyProject.ProjectDisplayName = modifyProject.ProjectDisplayName.ToUpper();

                // Save the changes
                ProjectInfoProvider.SetProjectInfo(modifyProject);
            }

            return(true);
        }

        return(false);
    }
예제 #6
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;
    }
예제 #7
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);
    }
예제 #8
0
    /// <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;
        }
    }
예제 #9
0
    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);
    }
예제 #10
0
 /// <summary>
 /// Updates current project info after upload events (upload and delete).
 /// </summary>
 private void TouchProjectInfo()
 {
     if (ProjectObj != null)
     {
         ProjectInfoProvider.SetProjectInfo(ProjectObj);
     }
 }
예제 #11
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"));
            }
        }

        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);
    }
    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");
        }
    }
예제 #13
0
    /// <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;
        }
    }
예제 #14
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);
    }
        /// <summary>
        /// Initialization of the package; this method is called right after the package is sited, so this is the place
        /// where you can put all the initialization code that rely on services provided by VisualStudio.
        /// </summary>
        protected override void Initialize()
        {
            IProjectInfoProvider solutionInfoProvider = new SolutionInfoProvider(this);
            IProjectInfoProvider projectInfoProvider  = new ProjectInfoProvider(this);
            IProjectInfoProvider fileInfoProvider     = new FileInfoProvider(this);

            IProjectInfoProvider solutionSnapshotInfoProvider = new SolutionInfoProvider(this, true);
            IProjectInfoProvider projectSnapshotInfoProvider  = new ProjectInfoProvider(this, true);

            IDexterInfoProvider dexterInfoProvider = new SettingsStoreDexterInfoProvider(this);

            ConfigurationProvider solutionConfigProvider = new ConfigurationProvider(solutionInfoProvider, dexterInfoProvider);
            ConfigurationProvider projectConfigProvider  = new ConfigurationProvider(projectInfoProvider, dexterInfoProvider);
            ConfigurationProvider fileConfigProvider     = new ConfigurationProvider(fileInfoProvider, dexterInfoProvider);

            ConfigurationProvider solutionSnapshotConfigProvider = new ConfigurationProvider(solutionSnapshotInfoProvider, dexterInfoProvider);
            ConfigurationProvider projectSnapshotConfigProvider  = new ConfigurationProvider(projectSnapshotInfoProvider, dexterInfoProvider);

            var commandSet = new Guid("2ed6d891-bce1-414d-8251-80a0800a831f");

            DexterAnalysisCommand fileAnalysisCommand     = new DexterFileAnalysisCommand(this, 0x0102, commandSet, fileConfigProvider);
            DexterAnalysisCommand projectAnalysisCommand  = new DexterSolutionAnalysisCommand(this, 0x0101, commandSet, projectConfigProvider);
            DexterAnalysisCommand solutionAnalysisCommand = new DexterSolutionAnalysisCommand(this, 0x0100, commandSet, solutionConfigProvider);
            DexterAnalysisCommand projectSnapshotCommand  = new DexterSolutionAnalysisCommand(this, 0x0111, commandSet, projectSnapshotConfigProvider);
            DexterAnalysisCommand solutionSnapshotCommand = new DexterSolutionAnalysisCommand(this, 0x0110, commandSet, solutionSnapshotConfigProvider);

            settingsCommand  = new SettingsCommand(this, 0x0103, commandSet);
            dashboardCommand = new DashboardCommand(this, 0x0104, commandSet, dexterInfoProvider);
            cancelCommand    = new CancelCommand(this, 0x0105, commandSet);

            DexterAnalysisCommand solutionAnalysisToolbarCommand = new DexterSolutionAnalysisCommand(this, 0x0200, commandSet, solutionConfigProvider);

            settingsToolbarCommand  = new SettingsCommand(this, 0x0203, commandSet);
            dashboardToolbarCommand = new DashboardCommand(this, 0x0204, commandSet, dexterInfoProvider);
            cancelToolbarCommand    = new CancelCommand(this, 0x0205, commandSet);

            analysisCommands.Add(fileAnalysisCommand);
            analysisCommands.Add(projectAnalysisCommand);
            analysisCommands.Add(solutionAnalysisCommand);
            analysisCommands.Add(projectSnapshotCommand);
            analysisCommands.Add(solutionSnapshotCommand);
            analysisCommands.Add(solutionAnalysisToolbarCommand);

            foreach (DexterAnalysisCommand analysisCommand in analysisCommands)
            {
                analysisCommand.AnalysisStarted  += onAnalysisStarted;
                analysisCommand.AnalysisFinished += onAnalysisFinished;
            }

            SettingsPage settingsPage = (SettingsPage)GetDialogPage(typeof(SettingsPage));

            settingsPage.SettingsChanged += onSettingsChanged;

            PeerReviewService.Instance = new PeerReviewService(new DexterTextService());

            RegisterSolutionManager();
            CreateReviewCommentManager();

            base.Initialize();
        }
예제 #16
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);
    }
 /// <summary>
 /// Checks delete and modify permissions (delete and up/down actions)
 /// </summary>
 /// <param name="permissionType">Permission type</param>
 /// <param name="modulePermissionType">Module permission type</param>
 /// <param name="sender">Sender object</param>
 private void ucTaskList_OnCheckPermissionsExtended(string permissionType, string modulePermissionType, CMSAdminControl sender)
 {
     // Check whether user is allowed to modify or delete task
     if (!ProjectInfoProvider.IsAuthorizedPerProject(ProjectID, permissionType, MembershipContext.AuthenticatedUser) && !IsAuthorizedPerProjectAccess())
     {
         lblError.Visible      = true;
         lblError.Text         = GetString("pm.project.permission");
         sender.StopProcessing = true;
     }
 }
예제 #18
0
 protected void Page_Load(object sender, EventArgs e)
 {
     // Live site mode
     usProjects.IsLiveSite = this.IsLiveSite;
     // Where condition
     string where = "(ProjectGroupID IS NULL AND ProjectNodeID IS NOT NULL AND ProjectSiteID = " + CMSContext.CurrentSiteID + ")";
     // Security where
     where = ProjectInfoProvider.CombineSecurityWhereCondition(where, CMSContext.CurrentUser, CMSContext.CurrentSiteName);
     // Set where condition to uniselector
     usProjects.WhereCondition = where;
 }
예제 #19
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;
    }
예제 #20
0
    /// <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;
            }
        }
    }
예제 #21
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"));
            }
        }
    }
예제 #22
0
    /// <summary>
    /// Checks whether user can create new task.
    /// </summary>
    protected bool IsAuthorizedPerCreateTask()
    {
        // Keep current user info object
        CurrentUserInfo cui = CMSContext.CurrentUser;

        // If user can edit project => can create task
        if (IsAuthorizedPerProjectEdit())
        {
            return(true);
        }

        // Check create permission
        return(ProjectInfoProvider.IsAuthorizedPerProject(this.ProjectID, ProjectManagementPermissionType.CREATE, cui));
    }
    /// <summary>
    /// Checks whether user can create new task.
    /// </summary>
    protected bool IsAuthorizedPerCreateTask()
    {
        // Keep current user info object
        var cui = MembershipContext.AuthenticatedUser;

        // If user can edit project => can create task
        if (IsAuthorizedPerProjectEdit())
        {
            return(true);
        }

        // Check create permission
        return(ProjectInfoProvider.IsAuthorizedPerProject(ProjectID, ProjectManagementPermissionType.CREATE, cui));
    }
예제 #24
0
    protected override void OnInit(EventArgs e)
    {
        // Get project id from query string
        projectId = QueryHelper.GetInteger("projectid", 0);

        // Check whether user can see required project
        if (!ProjectInfoProvider.IsAuthorizedPerProject(projectId, ProjectManagementPermissionType.READ, CMSContext.CurrentUser))
        {
            RedirectToAccessDenied("CMS.ProjectManagement", "Manage");
        }

        editElem.ProjectID = QueryHelper.GetInteger("projectid", 0);

        base.OnInit(e);
    }
예제 #25
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>
    /// Builds where condition.
    /// </summary>
    private string ucProjectList_BuildCondition(object sender, string whereCondition)
    {
        // Do not display projects without relation to document
        whereCondition = SqlHelperClass.AddWhereCondition(whereCondition, "ProjectNodeID IS NOT NULL");

        // Finished projects
        if (!ShowFinishedProjects)
        {
            whereCondition = SqlHelperClass.AddWhereCondition(whereCondition, "StatusIsFinished=0");
        }

        // Security condition
        whereCondition = ProjectInfoProvider.CombineSecurityWhereCondition(whereCondition, CMSContext.CurrentUser, CMSContext.CurrentSiteName);

        return(whereCondition);
    }
예제 #27
0
    /// <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);

        ;
    }
예제 #29
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);
    }
예제 #30
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);
    }