예제 #1
0
        protected override void Render(HtmlTextWriter writer)
        {
            if (EmployeeInfo != null)
            {
                var isRetina = TenantLogoManager.IsRetina(HttpContext.Current.Request);

                StringBuilder sb = new StringBuilder();
                sb.AppendFormat("<div {1} style=\"width: {0}px;overflow:hidden;\"><table cellpadding=\"0\" border=\"0\" cellspacing=\"0\" width=\"100%\" >", Width.Value,
                                EmployeeInfo.ActivationStatus == EmployeeActivationStatus.Pending ? "class=\"pending\"" : "");

                sb.Append("<tr valign='top'>");
                sb.Append("<td align=\"left\" style=\"width:56px; padding-right:10px;\">");
                sb.AppendFormat("<a class=\"borderBase\" {1} href=\"{0}\">", EmployeeUrl, "style=\"position:relative;  text-decoration:none; display:block; height:48px; width:48px;\"");
                sb.Append("<img align=\"center\" alt=\"\" style='display:block;margin:0; position:relative;width:48px;' border=0 src=\"" + (isRetina ? EmployeeInfo.GetBigPhotoURL() : EmployeeInfo.GetMediumPhotoURL()) + "\"/>");
                if (EmployeeInfo.ActivationStatus == EmployeeActivationStatus.Pending)
                {
                    sb.Append("<div class=\"pendingInfo borderBase tintMedium\"><div>" + Resource.PendingTitle + "</div></div>");
                }
                sb.Append("</a>");
                sb.Append("</td>");

                sb.Append("<td>");
                if (!EmployeeInfo.ID.Equals(ASC.Core.Users.Constants.LostUser.ID))
                {
                    sb.Append("<div>");
                    sb.AppendFormat("<a class=\"link header-base middle bold\" data-id=\"{2}\" href=\"{0}\" title=\"{1}\">{1}</a>", EmployeeUrl, EmployeeInfo.DisplayUserName(), EmployeeInfo.ID);
                    sb.Append("</div>");

                    //department
                    sb.Append("<div style=\"padding-top: 6px;\">");
                    if (EmployeeInfo.Status != EmployeeStatus.Terminated)
                    {
                        var removecoma = false;
                        foreach (var g in CoreContext.UserManager.GetUserGroups(EmployeeInfo.ID))
                        {
                            sb.AppendFormat("<a class=\"link\" href=\"{0}\">", CommonLinkUtility.GetDepartment(g.ID));
                            sb.Append(HttpUtility.HtmlEncode(g.Name));
                            sb.Append("</a>, ");
                            removecoma = true;
                        }
                        if (removecoma)
                        {
                            sb.Remove(sb.Length - 2, 2);
                        }
                    }
                    sb.Append("&nbsp;</div>");

                    sb.Append("<div style=\"padding-top: 6px;\">");
                    sb.Append(HttpUtility.HtmlEncode(EmployeeInfo.Title) ?? "");
                    sb.Append("&nbsp;</div>");
                }

                sb.Append("</td>");
                sb.Append("</tr>");
                sb.Append("</table></div>");
                writer.Write(sb.ToString());
            }

            base.Render(writer);
        }
예제 #2
0
        public JavaScriptObject GetFullUserInfo(Guid userID, Guid productID, Object userValue)
        {
            var userInfo = CoreContext.UserManager.GetUsers(userID);

            var jsUserInfo = new JavaScriptObject();

            jsUserInfo.Add("id", new JavaScriptString(userInfo.ID.ToString()));
            var department = userInfo.GetUserDepartment();

            if (department != null)
            {
                jsUserInfo.Add("departmentId", new JavaScriptString(department.ID.ToString()));
                jsUserInfo.Add("departmentURL", new JavaScriptString(CommonLinkUtility.GetDepartment(productID, department.ID)));
            }
            jsUserInfo.Add("userName", new JavaScriptString(userInfo.UserName));
            jsUserInfo.Add("displayName", new JavaScriptString(userInfo.DisplayUserName()));
            jsUserInfo.Add("profileURL", new JavaScriptString(userInfo.GetUserProfilePageURL(productID)));
            jsUserInfo.Add("email", new JavaScriptString(userInfo.Email));
            jsUserInfo.Add("photo", new JavaScriptString(userInfo.GetPhotoURL()));
            jsUserInfo.Add("bigPhoto", new JavaScriptString(userInfo.GetBigPhotoURL()));
            jsUserInfo.Add("mediumPhoto", new JavaScriptString(userInfo.GetMediumPhotoURL()));
            jsUserInfo.Add("smallPhoto", new JavaScriptString(userInfo.GetSmallPhotoURL()));
            jsUserInfo.Add("title", new JavaScriptString(HttpUtility.HtmlEncode(userInfo.Title)));
            jsUserInfo.Add("departmentTitle", new JavaScriptString(HttpUtility.HtmlEncode(userInfo.Department)));
            jsUserInfo.Add("workFromDate", new JavaScriptString(userInfo.WorkFromDate == null ? String.Empty : userInfo.WorkFromDate.Value.ToShortDateString()));
            jsUserInfo.Add("userValue", new JavaScriptString(userValue.ToString()));

            return(jsUserInfo);
        }
예제 #3
0
        public AjaxResponse GetUserInfo(Guid userID, Guid productID, string popupBoxID)
        {
            var resp = new AjaxResponse {
                rs1 = popupBoxID
            };

            var userInfo = CoreContext.UserManager.GetUsers(userID);
            var sb       = new StringBuilder();

            sb.Append("<div style=\"overflow: hidden; margin-right: 10px; padding: 10px 0pt 10px 10px;\"><table cellspacing='0' cellpadding='0' style='width:100%;'><tr valign=\"top\">");

            //avatar
            sb.Append("<td style=\"width:90px;\">");
            sb.Append("<img alt=\"\" class='userPhoto' src=\"" + userInfo.GetBigPhotoURL() + "\"/>");
            sb.Append("</td>");

            sb.Append("<td style='padding-left:10px;'>");

            //name
            sb.Append("<div>");
            sb.Append("<a class='linkHeaderLight' href='" + userInfo.GetUserProfilePageURL(productID) + "'>" + userInfo.DisplayUserName() + "</a>");
            sb.Append("</div>");

            //department
            var dep = userInfo.GetUserDepartment();

            if (dep != null)
            {
                sb.Append("<div style=\"margin-top:6px;\">");
                sb.Append("<a href='" + CommonLinkUtility.GetDepartment(productID, dep.ID) + "'>" + dep.Name.HtmlEncode() + "</a>");
                sb.Append("</div>");
            }

            //title
            sb.Append("<div style=\"margin-top:6px;\">");
            sb.Append(HttpUtility.HtmlEncode(userInfo.Title));
            sb.Append("</div>");

            //communications
            sb.Append("<div style=\"margin-top:6px;\">");
            sb.Append(userInfo.RenderUserCommunication());
            sb.Append("</div>");

            sb.Append("</td>");
            sb.Append("</tr></table></div>");

            resp.rs2 = sb.ToString();
            return(resp);
        }
예제 #4
0
        protected string RenderDepartment()
        {
            if (UserInfo.Status == EmployeeStatus.Terminated)
            {
                return(HttpUtility.HtmlEncode(UserInfo.Department ?? ""));
            }

            var dep = UserInfo.GetUserDepartment();

            if (dep != null)
            {
                return("<a href=\"" + CommonLinkUtility.GetDepartment(CommonLinkUtility.GetProductID(), dep.ID) + "\">" + HttpUtility.HtmlEncode(dep.Name) + "</a>");
            }

            return(HttpUtility.HtmlEncode(UserInfo.Department ?? ""));
        }
예제 #5
0
        private List <object> GetAdminsData(List <UserInfo> users)
        {
            var data = new List <object>();

            foreach (var ui in users)
            {
                GroupInfo dep = ui.GetUserDepartment();
                data.Add(new
                {
                    UserName = ui.DisplayUserName(),
                    UserPost = EncodeElement(ui.Title),
                    UserUrl  = CommonLinkUtility.GetUserProfile(ui.ID, ProductID),
                    PhotoUrl = ui.GetSmallPhotoURL(),
                    DepName  = (dep == null ? "" : EncodeElement(dep.Name)),
                    DepUrl   = (dep == null ? "" : CommonLinkUtility.GetDepartment(ProductID, dep.ID))
                });
            }
            return(data);
        }
예제 #6
0
        public AjaxResponse AddDepartment(Guid pid, string name, Guid managerID)
        {
            var resp = new AjaxResponse();

            resp.rs1 = "0";
            if (String.IsNullOrEmpty(name.Trim()))
            {
                resp.rs2 = Resources.Resource.ErrorEmptyName;
            }
            else
            {
                try
                {
                    SecurityContext.DemandPermissions(Constants.Action_EditGroups, Constants.Action_AddRemoveUser);

                    var newDep = CoreContext.GroupManager.SaveGroupInfo(new GroupInfo {
                        Name = name
                    });

                    if (CoreContext.UserManager.UserExists(managerID))
                    {
                        CoreContext.UserManager.SetDepartmentManager(newDep.ID, managerID);
                        var manager = CoreContext.UserManager.GetUsers(managerID);
                        if (manager.GetUserDepartment() == null)
                        {
                            UserManagerWrapper.TransferUser2Department(manager.ID, newDep.ID);
                        }
                    }

                    resp.rs3 = CommonLinkUtility.GetDepartment(pid, newDep.ID);
                    resp.rs1 = "1";
                }
                catch (Exception exc)
                {
                    resp.rs1 = "0";
                    resp.rs2 = exc.Message;
                }
            }
            return(resp);
        }
        protected override void PageLoad()
        {
            InitView();

            Manager           = Global.EngineFactory.GetParticipantEngine().GetByID(Project.Responsible).UserInfo;
            ManagerName       = Manager.DisplayUserName();
            ManagerAvatar     = Manager.GetBigPhotoURL();
            ManagerProfileUrl = Manager.GetUserProfilePageURL();
            foreach (var g in CoreContext.UserManager.GetUserGroups(Manager.ID))
            {
                ManagerDepartmentUrl += string.Format("<a href=\"{0}\" class=\"linkMedium\">{1}</a>, ", CommonLinkUtility.GetDepartment(g.ID), HttpUtility.HtmlEncode(g.Name));
            }
            if (!string.IsNullOrEmpty(ManagerDepartmentUrl))
            {
                ManagerDepartmentUrl = ManagerDepartmentUrl.Substring(0, ManagerDepartmentUrl.Length - 2);
            }

            Title = HeaderStringHelper.GetPageTitle(ProjectResource.ProjectTeam);
        }
예제 #8
0
        private String RenderContent()
        {
            var newUsers       = new List <UserInfo>();
            var widgetSettings = SettingsManager.Instance.LoadSettingsFor <NewEmployeeWidgetSettings>(SecurityContext.CurrentAccount.ID);

            var users = CoreContext.UserManager.GetUsers();

            foreach (var user in users)
            {
                //search new users
                if (user.WorkFromDate.HasValue && (newUsers.Find(u => u.ID.Equals(user.ID)) == null))
                {
                    if (newUsers.Count < widgetSettings.NewWorkerCount)
                    {
                        newUsers.Add(user);
                    }
                    else
                    {
                        newUsers.Sort(new UserInfoDateComparer(true));
                        for (int i = newUsers.Count - 1; i >= 0; i--)
                        {
                            var newUser = newUsers[i];
                            if (newUser.WorkFromDate.Value.CompareTo(user.WorkFromDate) < 0)
                            {
                                newUsers.Remove(newUser);
                                newUsers.Add(user);
                                break;
                            }
                        }
                    }
                }
            }

            newUsers.Sort(new UserInfoDateComparer(true));

            StringBuilder sb = new StringBuilder();

            if (newUsers.Count > 0)
            {
                foreach (var user in newUsers)
                {
                    sb.Append("<div style='margin-bottom:15px;'>");
                    var imageURL = user.GetSmallPhotoURL();
                    sb.Append("<table cellpadding=\"0\" cellspacing=\"0\"><tr valign='top'>");
                    sb.Append("<td style='width:30px;'><a href=\"" + CommonLinkUtility.GetUserProfile(user.ID, ProductID) + "\"><img class=\"borderBase\" border=0 alt=\"\" src='" + imageURL + "'/></a></td>");

                    sb.Append("<td style='padding-left:10px;'>");
                    sb.Append("<div style='margin-top:-3px;'>");
                    sb.Append("<a class='linkHeaderLightSmall' href=\"" + CommonLinkUtility.GetUserProfile(user.ID, ProductID) + "\">" + user.DisplayUserName() + "</a>");
                    sb.Append("</div>");

                    var dep = user.GetUserDepartment();
                    if (dep != null)
                    {
                        sb.Append("<div style='margin-top:4px;'>");
                        sb.Append("<a class='linkText' href='" + CommonLinkUtility.GetDepartment(ProductID, dep.ID) + "'>" + dep.Name.HtmlEncode() + "</a>");
                        sb.Append("</div>");
                    }

                    sb.Append("</td>");
                    sb.Append("</tr></table>");
                    sb.Append("</div>");
                }

                sb.Append("<div style='margin-top: 10px;'>");
                //all users
                sb.Append("<a href=\"" + CommonLinkUtility.GetEmployees(ProductID) + "&sort=InvAdmissionDate\">" + CustomNamingPeople.Substitute <Resources.Resource>("AllEmployees").HtmlEncode() + "</a>");
                sb.Append("</div>");
            }
            else
            {
                //check access rigths
                if (SecurityContext.CheckPermissions(ASC.Core.Users.Constants.Action_AddRemoveUser))
                {
                    sb.Append("<div class='empty-widget' style='padding:40px; text-align: center;'>");
                    var url = string.Format("<div style=\"padding-top:3px;\"><a class=\"promoAction\" href=\"javascript:ImportUsersManager.ShowImportControl();\">");
                    sb.Append(string.Format(CustomNamingPeople.Substitute <Resources.Resource>("InviteEmployeesWidgetTitle").HtmlEncode(), url, "</a></div>"));
                    sb.Append("</div>");
                }
                else
                {
                    sb.Append("<div class=\"empty-widget\" style=\"padding:40px; text-align: center;\">" + CustomNamingPeople.Substitute <Resources.Resource>("NoNewEmployees").HtmlEncode() + "</div>");
                }
            }


            return(sb.ToString());
        }
예제 #9
0
        protected override void PageLoad()
        {
            InitView();
            InitScripts();

            Manager           = Global.EngineFactory.GetParticipantEngine().GetByID(Project.Responsible).UserInfo;
            ManagerName       = Manager.DisplayUserName();
            ManagerAvatar     = Manager.GetBigPhotoURL();
            ManagerProfileUrl = Manager.GetUserProfilePageURL();
            foreach (var g in CoreContext.UserManager.GetUserGroups(Manager.ID))
            {
                ManagerDepartmentUrl += string.Format("<a href=\"{0}\" class=\"linkMedium\">{1}</a>, ", CommonLinkUtility.GetDepartment(g.ID), HttpUtility.HtmlEncode(g.Name));
            }
            if (!string.IsNullOrEmpty(ManagerDepartmentUrl))
            {
                ManagerDepartmentUrl = ManagerDepartmentUrl.Substring(0, ManagerDepartmentUrl.Length - 2);
            }

            var userSelector = (Studio.UserControls.Users.UserSelector)LoadControl(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='userSelectorNotify' type='checkbox'/><label for='userSelectorNotify' style='padding-left:10px' >{0}</label></div>", ProjectResource.NotifyProjectTeam);

            var selectedUsers = Global.EngineFactory.GetProjectEngine().GetTeam(Project.ID).Select(participant => participant.ID).ToList();

            userSelector.SelectedUsers = selectedUsers;

            _phTeamSelector.Controls.Add(userSelector);

            Title = HeaderStringHelper.GetPageTitle(ProjectResource.ProjectTeam);
        }