示例#1
0
        public bool CanCreateTask()
        {
            if (RequestContext.IsInConcreteProject())
            {
                return(ProjectSecurity.CanCreateTask(RequestContext.GetCurrentProject()));
            }

            return(ProjectSecurity.IsAdministrator(SecurityContext.CurrentAccount.ID)
                ? RequestContext.HasAnyProjects()
                : Global.EngineFactory.GetProjectEngine().GetByParticipant(SecurityContext.CurrentAccount.ID).Where(ProjectSecurity.CanCreateTask).Any());
        }
示例#2
0
 public ProjectSecurityInfo(Project project)
 {
     CanCreateMessage   = ProjectSecurity.CanCreateMessage(project);
     CanCreateMilestone = ProjectSecurity.CanCreateMilestone(project);
     CanCreateTask      = ProjectSecurity.CanCreateTask(project);
     CanEditTeam        = ProjectSecurity.CanEditTeam(project);
     CanReadFiles       = ProjectSecurity.CanReadFiles(project);
     CanReadMilestones  = ProjectSecurity.CanReadMilestones(project);
     CanReadMessages    = ProjectSecurity.CanReadMessages(project);
     CanReadTasks       = ProjectSecurity.CanReadTasks(project);
 }
示例#3
0
        protected override void PageLoad()
        {
            AjaxPro.Utility.RegisterTypeForAjax(typeof(ProjectTeam));

            InitView();
            var userInfo = Global.EngineFactory.GetParticipantEngine().GetByID(Project.Responsible).UserInfo;

            _phProjectLeaderCard.Controls.Add(new EmployeeUserCard
            {
                EmployeeInfo          = userInfo,
                EmployeeUrl           = userInfo.GetUserProfilePageURL(),
                EmployeeDepartmentUrl = CommonLinkUtility.GetUserDepartment(Project.Responsible)
            });

            List <Participant> team = new List <Participant>();

            foreach (Participant prt in Global.EngineFactory.GetProjectEngine().GetTeam(Project.ID))
            {
                var u = CoreContext.UserManager.GetUsers(prt.ID);
                if (u.ID != ASC.Core.Users.Constants.LostUser.ID && u.Status != EmployeeStatus.Terminated)
                {
                    team.Add(prt);
                }
            }

            _ltlTeam.Text = RenderProjectTeam(team, team);


            ASC.Web.Studio.UserControls.Users.UserSelector userSelector = (ASC.Web.Studio.UserControls.Users.UserSelector)LoadControl(ASC.Web.Studio.UserControls.Users.UserSelector.Location);
            userSelector.BehaviorID = "UserSelector";
            userSelector.DisabledUsers.Add(Project.Responsible);
            userSelector.Title = ProjectResource.ManagmentTeam;
            userSelector.SelectedUserListTitle = ProjectResource.Team;
            userSelector.CustomBottomHtml      = string.Format("<div style='padding-top:10px'><input id='notify' type='checkbox'/><label for='notify' style='padding-left:10px' >{0}</label></div>", ProjectResource.NotifyProjectTeam);

            var selectedUsers = new List <Guid>();

            foreach (Participant participant in Global.EngineFactory.GetProjectEngine().GetTeam(Project.ID))
            {
                selectedUsers.Add(participant.ID);
            }

            userSelector.SelectedUsers = selectedUsers;

            _phUserSelector.Controls.Add(userSelector);

            if (ProjectSecurity.CanCreateTask(Project))
            {
                var taskAction = (TaskAction)LoadControl(PathProvider.GetControlVirtualPath("TaskAction.ascx"));
                phAddTaskPanel.Controls.Add(taskAction);
            }
        }
示例#4
0
 public ProjectSecurityInfo(Project project)
 {
     CanCreateMilestone = ProjectSecurity.CanCreateMilestone(project);
     CanCreateMessage   = ProjectSecurity.CanCreateMessage(project);
     CanCreateTask      = ProjectSecurity.CanCreateTask(project);
     CanEditTeam        = ProjectSecurity.CanEditTeam(project);
     CanReadFiles       = ProjectSecurity.CanReadFiles(project);
     CanReadMilestones  = ProjectSecurity.CanReadMilestones(project);
     CanReadMessages    = ProjectSecurity.CanReadMessages(project);
     CanReadTasks       = ProjectSecurity.CanReadTasks(project);
     IsInTeam           = ProjectSecurity.IsInTeam(project, SecurityContext.CurrentAccount.ID, false);
     CanLinkContact     = ProjectSecurity.CanLinkContact(project);
 }
示例#5
0
        public string GetActionContent(int prjID, Guid userID)
        {
            ProjectSecurity.DemandAuthentication();

            var project = Global.EngineFactory.GetProjectEngine().GetByID(prjID);
            var sb      = new StringBuilder();
            var ui      = CoreContext.UserManager.GetUsers(userID);

            if (ProjectSecurity.CanCreateTask(project))
            {
                //sb.AppendFormat("<a class='pm-dropdown-item' onclick=\"ASC.Projects.TaskActionPage.init(-1, null, '{0}');ASC.Projects.TaskActionPage.show();\">{1}</a>", userID, TaskResource.AddNewTask);
                sb.AppendFormat("<a class='pm-dropdown-item' onclick=\"showNewTaskPopup('{0}','{1}')\">{2}</a>", userID, ui.DisplayUserName(), TaskResource.AddNewTask);
            }
            sb.AppendFormat("<a class='pm-dropdown-item' onclick=\"ASC.Projects.Reports.generateReportByUrl('{0}')\">{1}</a>",
                            GetReportUri(true, userID), ReportResource.ReportOpenTasks);
            sb.AppendFormat("<a class='pm-dropdown-item' onclick=\"ASC.Projects.Reports.generateReportByUrl('{0}')\">{1}</a>",
                            GetReportUri(false, userID), ReportResource.ReportClosedTasks);
            sb.AppendFormat("<a class='pm-dropdown-item' onclick=\"location.replace('mailto:{0}')\">{1}</a>", ui.Email, ProjectResource.ClosedProjectTeamWriteMail);
            sb.AppendFormat("<a class='pm-dropdown-item' onclick=\"ASC.Controls.JabberClient.open('{0}')\">{1}</a>", ui.UserName, ProjectResource.ClosedProjectTeamWriteInMessenger);

            return(sb.ToString());
        }
 public bool CanCreateTask()
 {
     return(ProjectSecurity.CanCreateTask(Project));
 }
示例#7
0
        protected override IEnumerable <KeyValuePair <string, object> > GetClientVariables(HttpContext context)
        {
            var result = new List <KeyValuePair <string, object> >(5)
            {
                RegisterObject("EntryCountOnPage", Global.EntryCountOnPage),
                RegisterObject("VisiblePageCount", Global.VisiblePageCount)
            };

            var filter = new TaskFilter
            {
                SortBy          = "title",
                SortOrder       = true,
                ProjectStatuses = new List <ProjectStatus> {
                    ProjectStatus.Open
                }
            };

            var projects = Global.EngineFactory.ProjectEngine.GetByFilter(filter)
                           .Select(pr => new
            {
                id          = pr.ID,
                title       = pr.Title,
                responsible = pr.Responsible,
                //created = (ApiDateTime) pr.CreateOn,
                security = new
                {
                    canCreateMilestone = ProjectSecurity.CanCreateMilestone(pr),
                    canCreateMessage   = ProjectSecurity.CanCreateMessage(pr),
                    canCreateTask      = ProjectSecurity.CanCreateTask(pr),
                    canEditTeam        = ProjectSecurity.CanEditTeam(pr),
                    canReadFiles       = ProjectSecurity.CanReadFiles(pr),
                    canReadMilestones  = ProjectSecurity.CanReadMilestones(pr),
                    canReadMessages    = ProjectSecurity.CanReadMessages(pr),
                    canReadTasks       = ProjectSecurity.CanReadTasks(pr),
                    isInTeam           = ProjectSecurity.IsInTeam(pr, SecurityContext.CurrentAccount.ID, false),
                    canLinkContact     = ProjectSecurity.CanLinkContact(pr),
                },
                isPrivate = pr.Private,
                status    = pr.Status
            });

            var tags = Global.EngineFactory.TagEngine.GetTags().Select(r => new { value = r.Key, title = r.Value.HtmlEncode() });

            result.Add(RegisterObject("Projects", new { response = projects }));
            result.Add(RegisterObject("Tags", new { response = tags }));


            if (context.Request.UrlReferrer != null && string.IsNullOrEmpty(HttpUtility.ParseQueryString(context.Request.GetUrlRewriter().Query)["prjID"]) && string.IsNullOrEmpty(HttpUtility.ParseQueryString(context.Request.UrlReferrer.Query)["prjID"]))
            {
                filter = new TaskFilter
                {
                    SortBy            = "deadline",
                    SortOrder         = false,
                    MilestoneStatuses = new List <MilestoneStatus> {
                        MilestoneStatus.Open
                    }
                };

                var milestones = Global.EngineFactory.MilestoneEngine.GetByFilter(filter)
                                 .Select(m => new
                {
                    id           = m.ID,
                    title        = m.Title,
                    deadline     = SetDate(m.DeadLine, TimeZoneInfo.Local),
                    projectOwner = new { id = m.Project.ID }
                });

                result.Add(RegisterObject("Milestones", new { response = milestones }));
            }

            return(result);
        }
示例#8
0
        protected override IEnumerable <KeyValuePair <string, object> > GetClientVariables(HttpContext context)
        {
            var filter = new TaskFilter
            {
                SortBy          = "title",
                SortOrder       = true,
                ProjectStatuses = new List <ProjectStatus> {
                    ProjectStatus.Open
                }
            };

            var projects = Global.EngineFactory.ProjectEngine.GetByFilter(filter)
                           .Select(pr => new
            {
                id          = pr.ID,
                title       = pr.Title,
                responsible = pr.Responsible,
                //created = (ApiDateTime) pr.CreateOn,
                security = new
                {
                    canCreateMilestone = ProjectSecurity.CanCreateMilestone(pr),
                    canCreateMessage   = ProjectSecurity.CanCreateMessage(pr),
                    canCreateTask      = ProjectSecurity.CanCreateTask(pr),
                    canCreateTimeSpend = ProjectSecurity.CanCreateTimeSpend(pr),
                    canEditTeam        = ProjectSecurity.CanEditTeam(pr),
                    canReadFiles       = ProjectSecurity.CanReadFiles(pr),
                    canReadMilestones  = ProjectSecurity.CanReadMilestones(pr),
                    canReadMessages    = ProjectSecurity.CanReadMessages(pr),
                    canReadTasks       = ProjectSecurity.CanReadTasks(pr),
                    isInTeam           = ProjectSecurity.IsInTeam(pr, SecurityContext.CurrentAccount.ID, false),
                    canLinkContact     = ProjectSecurity.CanLinkContact(pr)
                },
                isPrivate      = pr.Private,
                status         = pr.Status,
                taskCountTotal = pr.TaskCountTotal
            }).ToList();

            var tags = Global.EngineFactory.TagEngine.GetTags().Select(r => new { value = r.Key, title = r.Value.HtmlEncode() }).ToList();

            var result = new List <KeyValuePair <string, object> >(1)
            {
                RegisterObject(
                    new
                {
                    Global.EntryCountOnPage,
                    Global.VisiblePageCount,
                    Projects      = new { response = projects },
                    Tags          = new { response = tags },
                    ProjectsCount = Global.EngineFactory.ProjectEngine.GetByFilterCount(new TaskFilter())
                })
            };

            filter = new TaskFilter
            {
                SortBy            = "deadline",
                SortOrder         = false,
                MilestoneStatuses = new List <MilestoneStatus> {
                    MilestoneStatus.Open
                }
            };

            var milestones = Global.EngineFactory.MilestoneEngine.GetByFilter(filter)
                             .Select(m => new
            {
                id           = m.ID,
                title        = m.Title,
                deadline     = SetDate(m.DeadLine, TimeZoneInfo.Local),
                projectOwner = new { id = m.Project.ID },
                status       = (int)m.Status
            }).ToList();

            result.Add(RegisterObject(new { Milestones = new { response = milestones } }));

            return(result);
        }
示例#9
0
 public bool CanCreateTask()
 {
     return(ProjectSecurity.CanCreateTask(RequestContext.GetCurrentProject()));
 }