/// <summary> /// Gets and bulk updates group members. Called when the "Get and bulk update members" button is pressed. /// Expects the CreateGroupMember method to be run first. /// </summary> private bool GetAndBulkUpdateGroupMembers() { // Prepare the parameters string where = "MemberUserID =" + CMSContext.CurrentUser.UserID; // Get the data DataSet members = GroupMemberInfoProvider.GetGroupMembers(where, null); if (!DataHelper.DataSourceIsEmpty(members)) { // Loop through the individual items foreach (DataRow memberDr in members.Tables[0].Rows) { // Create object from DataRow GroupMemberInfo modifyMember = new GroupMemberInfo(memberDr); // Update the properties modifyMember.MemberComment = modifyMember.MemberComment.ToUpper(); // Save the changes GroupMemberInfoProvider.SetGroupMemberInfo(modifyMember); } return(true); } return(false); }
protected void memberListElem_GridOnAction(object sender, CommandEventArgs args) { switch (args.CommandName.ToLower()) { case "approve": lblInfo.Text = GetString("group.member.userhasbeenapproved"); lblInfo.Visible = true; break; case "reject": lblInfo.Text = GetString("group.member.userhasbeenrejected"); lblInfo.Visible = true; break; case "edit": int memberId = ValidationHelper.GetInteger(args.CommandArgument, 0); memberEditElem.MemberID = memberId; memberEditElem.GroupID = GroupID; plcList.Visible = false; plcEdit.Visible = true; memberEditElem.Visible = true; memberEditElem.ReloadData(); GroupMemberInfo gmi = GroupMemberInfoProvider.GetGroupMemberInfo(memberId); if (gmi != null) { UserInfo ui = UserInfoProvider.GetUserInfo(gmi.MemberUserID); if (ui != null) { lblEditBack.Text = " <span class=\"TitleBreadCrumbSeparator\"> </span> " + HTMLHelper.HTMLEncode(ui.FullName); } } break; } }
/// <summary> /// Gets and updates group member. Called when the "Get and update member" button is pressed. /// Expects the CreateGroupMember method to be run first. /// </summary> private bool GetAndUpdateGroupMember() { // Get the group GroupInfo group = GroupInfoProvider.GetGroupInfo("MyNewGroup", CMSContext.CurrentSiteName); if (group != null) { // Get the user UserInfo user = UserInfoProvider.GetUserInfo(CMSContext.CurrentUser.UserName); if (user != null) { // Get the group member GroupMemberInfo updateMember = GroupMemberInfoProvider.GetGroupMemberInfo(user.UserID, group.GroupID); if (updateMember != null) { // Update the properties updateMember.MemberComment = updateMember.MemberComment.ToLowerCSafe(); // Save the changes GroupMemberInfoProvider.SetGroupMemberInfo(updateMember); return(true); } } } return(false); }
/// <summary> /// Approves member. /// </summary> public bool RejectMember() { // Check MANAGE permission for groups module if (!CheckPermissions("cms.groups", CMSAdminControl.PERMISSION_MANAGE, this.GroupID)) { return(false); } EnsureMember(); if ((this.gmi != null) && (CMSContext.CurrentUser != null)) { // Set properties this.gmi.MemberApprovedByUserID = CMSContext.CurrentUser.UserID; this.gmi.MemberStatus = GroupMemberStatus.Rejected; this.gmi.MemberApprovedWhen = DataHelper.DATETIME_NOT_SELECTED; this.gmi.MemberRejectedWhen = DateTime.Now; // Save to database GroupMemberInfoProvider.SetGroupMemberInfo(this.gmi); GroupInfo group = GroupInfoProvider.GetGroupInfo(this.GroupID); if ((group != null) && (group.GroupSendWaitingForApprovalNotification)) { // Send notification email GroupMemberInfoProvider.SendNotificationMail("Groups.MemberRejected", CMSContext.CurrentSiteName, this.gmi, false); } this.lblMemberApproved.Text = GetApprovalInfoText(gmi.MemberApprovedWhen, gmi.MemberApprovedByUserID); this.lblMemberRejected.Text = GetApprovalInfoText(gmi.MemberRejectedWhen, gmi.MemberApprovedByUserID); return(true); } return(false); }
/// <summary> /// Creates group member. Called when the "Create member" button is pressed. /// </summary> private bool CreateGroupMember() { // Get the group GroupInfo group = GroupInfoProvider.GetGroupInfo("MyNewGroup", CMSContext.CurrentSiteName); if (group != null) { // Get the user UserInfo user = UserInfoProvider.GetUserInfo(CMSContext.CurrentUser.UserName); if (user != null) { // Create new group member object GroupMemberInfo newMember = new GroupMemberInfo(); //Set the properties newMember.MemberGroupID = group.GroupID; newMember.MemberApprovedByUserID = CurrentUser.UserID; newMember.MemberApprovedWhen = DateTime.Now; newMember.MemberInvitedByUserID = CurrentUser.UserID; newMember.MemberUserID = user.UserID; newMember.MemberJoined = DateTime.Now; newMember.MemberComment = "New member added by API example."; // Save the member GroupMemberInfoProvider.SetGroupMemberInfo(newMember); } return(true); } return(false); }
protected void Page_Load(object sender, EventArgs e) { // Get memberId memberId = QueryHelper.GetInteger("memberid", 0); // Initialize editing control memberEditElem.MemberID = memberId; CurrentMaster.Title.HelpTopicName = "group_members_edit"; CurrentMaster.Title.HelpName = "helpTopic"; GroupMemberInfo gmi = GroupMemberInfoProvider.GetGroupMemberInfo(memberId); if (gmi != null) { memberEditElem.GroupID = gmi.MemberGroupID; UserInfo ui = UserInfoProvider.GetUserInfo(gmi.MemberUserID); if (ui != null) { // Initialize breadcrumbs string[,] pageTitleTabs = new string[2, 3]; pageTitleTabs[0, 0] = GetString("group.members"); pageTitleTabs[0, 1] = "~/CMSModules/Groups/Tools/Members/Member_List.aspx"; pageTitleTabs[0, 1] += "?groupId=" + gmi.MemberGroupID; pageTitleTabs[0, 2] = "_self"; pageTitleTabs[1, 0] = HTMLHelper.HTMLEncode(ui.FullName); pageTitleTabs[1, 1] = ""; pageTitleTabs[1, 2] = ""; CurrentMaster.Title.Breadcrumbs = pageTitleTabs; } } }
protected void Page_Load(object sender, EventArgs e) { // Get memberId memberId = QueryHelper.GetInteger("memberid", 0); // Initialize editing control memberEditElem.MemberID = memberId; GroupMemberInfo gmi = GroupMemberInfoProvider.GetGroupMemberInfo(memberId); if (gmi != null) { memberEditElem.GroupID = gmi.MemberGroupID; UserInfo ui = UserInfoProvider.GetUserInfo(gmi.MemberUserID); if (ui != null) { // Initialize breadcrumbs PageBreadcrumbs.Items.Add(new BreadcrumbItem() { Text = GetString("group.members"), RedirectUrl = "~/CMSModules/Groups/Tools/Members/Member_List.aspx?groupId=" + gmi.MemberGroupID, Target = "_self" }); PageBreadcrumbs.Items.Add(new BreadcrumbItem() { Text = HTMLHelper.HTMLEncode(ui.FullName) }); } } }
/// <summary> /// Handles the UniGrid's OnAction event. /// </summary> /// <param name="actionName">Name of item (button) that throws event</param> /// <param name="actionArgument">ID (value of Primary key) of corresponding data row</param> protected void gridElem_OnAction(string actionName, object actionArgument) { switch (actionName) { case "delete": case "approve": case "reject": // Check MANAGE permission for groups module if (!CheckPermissions("cms.groups", CMSAdminControl.PERMISSION_MANAGE, this.GroupID)) { return; } break; } if (actionName == "delete") { // Delete member GroupMemberInfoProvider.DeleteGroupMemberInfo(ValidationHelper.GetInteger(actionArgument, 0)); } else if (actionName == "approve") { // Approve member GroupMemberInfo gmi = GroupMemberInfoProvider.GetGroupMemberInfo(ValidationHelper.GetInteger(actionArgument, 0)); if (gmi != null) { gmi.MemberApprovedByUserID = CMSContext.CurrentUser.UserID; gmi.MemberStatus = GroupMemberStatus.Approved; gmi.MemberApprovedWhen = DateTime.Now; gmi.MemberRejectedWhen = DataHelper.DATETIME_NOT_SELECTED; GroupMemberInfoProvider.SetGroupMemberInfo(gmi); GroupInfo group = GroupInfoProvider.GetGroupInfo(this.GroupID); if ((group != null) && (group.GroupSendWaitingForApprovalNotification)) { GroupMemberInfoProvider.SendNotificationMail("Groups.MemberApproved", CMSContext.CurrentSiteName, gmi, false); } } } else if (actionName == "reject") { // Reject member GroupMemberInfo gmi = GroupMemberInfoProvider.GetGroupMemberInfo(ValidationHelper.GetInteger(actionArgument, 0)); if (gmi != null) { gmi.MemberApprovedByUserID = CMSContext.CurrentUser.UserID; gmi.MemberStatus = GroupMemberStatus.Rejected; gmi.MemberApprovedWhen = DataHelper.DATETIME_NOT_SELECTED; gmi.MemberRejectedWhen = DateTime.Now; GroupMemberInfoProvider.SetGroupMemberInfo(gmi); GroupInfo group = GroupInfoProvider.GetGroupInfo(this.GroupID); if ((group != null) && (group.GroupSendWaitingForApprovalNotification)) { GroupMemberInfoProvider.SendNotificationMail("Groups.MemberRejected", CMSContext.CurrentSiteName, gmi, false); } } } this.RaiseOnAction(actionName, actionArgument); }
/// <summary> /// Approves member. /// </summary> public bool RejectMember() { // Check MANAGE permission for groups module if (!CheckPermissions("cms.groups", PERMISSION_MANAGE, GroupID)) { return(false); } if ((CurrentMember != null) && (MembershipContext.AuthenticatedUser != null)) { // Set properties CurrentMember.MemberApprovedByUserID = MembershipContext.AuthenticatedUser.UserID; CurrentMember.MemberStatus = GroupMemberStatus.Rejected; CurrentMember.MemberApprovedWhen = DateTimeHelper.ZERO_TIME; CurrentMember.MemberRejectedWhen = DateTime.Now; // Save to database GroupMemberInfoProvider.SetGroupMemberInfo(CurrentMember); GroupInfo group = GroupInfoProvider.GetGroupInfo(GroupID); if ((group != null) && (group.GroupSendWaitingForApprovalNotification)) { // Send notification email GroupMemberInfoProvider.SendNotificationMail("Groups.MemberRejected", SiteContext.CurrentSiteName, CurrentMember, false); } lblMemberApproved.Text = GetApprovalInfoText(CurrentMember.MemberApprovedWhen, CurrentMember.MemberApprovedByUserID); lblMemberRejected.Text = GetApprovalInfoText(CurrentMember.MemberRejectedWhen, CurrentMember.MemberApprovedByUserID); return(true); } return(false); }
/// <summary> /// Deletes group member. Called when the "Delete member" button is pressed. /// Expects the CreateGroupMember method to be run first. /// </summary> private bool DeleteGroupMember() { // Get the group GroupInfo group = GroupInfoProvider.GetGroupInfo("MyNewGroup", CMSContext.CurrentSiteName); if (group != null) { // Get the user UserInfo user = UserInfoProvider.GetUserInfo(CMSContext.CurrentUser.UserName); if (user != null) { // Get the group member GroupMemberInfo deleteMember = GroupMemberInfoProvider.GetGroupMemberInfo(user.UserID, group.GroupID); if (deleteMember != null) { // Save the changes GroupMemberInfoProvider.DeleteGroupMemberInfo(deleteMember); return(true); } } } return(false); }
/// <summary> /// Ensures the memberinfo object is initialized. /// </summary> private void EnsureMember() { if (this.MemberID > 0) { if (this.gmi == null) { // Get group member this.gmi = GroupMemberInfoProvider.GetGroupMemberInfo(this.MemberID); } } }
/// <summary> /// Creates invitation for specified user. /// </summary> /// <param name="groupInfo">Inviting group</param> /// <param name="invitedUser">User info</param> private InvitationInfo InviteUser(GroupInfo groupInfo, UserInfo invitedUser) { // Check whether group exists if (groupInfo == null) { return(null); } int userId = (invitedUser != null) ? invitedUser.UserID : 0; int currentUserId = MembershipContext.AuthenticatedUser.UserID; // User cannot invite herself if (userId == currentUserId) { return(null); } // Check whether user is in group or is invited if ((!GroupMemberInfoProvider.IsMemberOfGroup(userId, Group.GroupID) && !InvitationInfoProvider.InvitationExists(userId, Group.GroupID)) || radNewUser.Checked) { // Create new info object var invitation = new InvitationInfo { InvitationComment = txtComment.Text, InvitationCreated = DateTime.Now, InvitationGroupID = GroupID, InvitationGUID = new Guid(), InvitationLastModified = DateTime.Now, InvitedByUserID = currentUserId }; // Create 'Valid to' value if set in settings var validTo = SettingsKeyInfoProvider.GetIntValue(SiteContext.CurrentSiteName + ".CMSInvitationValidity"); if (validTo > 0) { invitation.InvitationValidTo = DateTime.Now.AddDays(validTo); } if (radSiteMember.Checked) { invitation.InvitedUserID = userId; } else { invitation.InvitationUserEmail = txtEmail.Text; } InvitationInfoProvider.SetInvitationInfo(invitation); return(invitation); } return(null); }
/// <summary> /// Initializes the control properties. /// </summary> public void SetupControl() { if ((CommunityContext.CurrentGroup != null) && GroupMemberInfoProvider.IsMemberOfGroup(MembershipContext.AuthenticatedUser.UserID, CommunityContext.CurrentGroup.GroupID)) { groupLeave.IsOnModalPage = false; groupLeave.LeaveText = LeaveText; groupLeave.SuccessfulLeaveText = SuccessfullLeaveText; groupLeave.UnSuccessfulLeaveText = UnSuccessfullLeaveText; groupLeave.Group = CommunityContext.CurrentGroup; } else { Visible = false; } }
/// <summary> /// Returns group member info, reult is cached in request. /// </summary> /// <param name="userId">User ID</param> /// <param name="groupId">Group ID</param> private GroupMemberInfo GetGroupMember(int userId, int groupId) { GroupMemberInfo gmi = RequestStockHelper.GetItem("CommunityShortCuts" + userId.ToString() + "_" + groupId.ToString()) as GroupMemberInfo; if ((gmi == null) && (!RequestStockHelper.Contains("CommunityShortCuts" + userId.ToString() + "_" + groupId.ToString()))) { gmi = GroupMemberInfoProvider.GetGroupMemberInfo(userId, groupId); if (gmi != null) { RequestStockHelper.Add("CommunityShortCuts" + userId.ToString() + "_" + groupId.ToString(), gmi); } else { RequestStockHelper.Add("CommunityShortCuts" + userId.ToString() + "_" + groupId.ToString(), false); } } return(gmi); }
/// <summary> /// Join handler. /// </summary> /// <param name="sender">Sender</param> /// <param name="e">EventArgs</param> protected void btnLeave_Click(object sender, EventArgs e) { LeaveButton.Visible = false; // Set up js action if webpart is placed on modal page if (IsOnModalPage) { CancelButton.Text = GetString("General.Close"); CancelButton.OnClientClick = "if (wopener != null) {wopener.ReloadPage();} CloseDialog();"; } else { CancelButton.Text = GetString("General.Ok"); CancelButton.Click += new EventHandler(btnCancel_Click); } if (Group == null) { return; } // Get group member info GroupMemberInfo gmi = GroupMemberInfoProvider.GetGroupMemberInfo(MembershipContext.AuthenticatedUser.UserID, Group.GroupID); if (gmi != null) { GroupMemberInfoProvider.DeleteGroupMemberInfo(gmi); // Log activity LogLeaveActivity(gmi, Group); if (Group.GroupSendJoinLeaveNotification) { GroupMemberInfoProvider.SendNotificationMail("Groups.MemberLeave", SiteContext.CurrentSiteName, gmi, true); } lblInfo.Text = SuccessfulLeaveText; return; } lblInfo.Text = SuccessfulLeaveText; }
protected void Page_Load(object sender, EventArgs e) { ScriptHelper.RegisterWOpenerScript(Page); JoinButton.Click += new EventHandler(btnJoin_Click); CancelButton.Text = GetString("General.Cancel"); JoinButton.Text = GetString("General.Join"); if (MembershipContext.AuthenticatedUser.IsPublic()) { JoinButton.Visible = false; lblInfo.Visible = false; return; } // Check whether user is not already a member, has requested membership or has been denied. GroupMemberInfo groupMemberInfo = GroupMemberInfoProvider.GetGroupMemberInfo(MembershipContext.AuthenticatedUser.UserID, Group.GroupID); if (groupMemberInfo != null) { if ((groupMemberInfo.MemberStatus == GroupMemberStatus.Approved) || (groupMemberInfo.MemberStatus == GroupMemberStatus.GroupAdmin)) { lblInfo.Text = GetString("community.group.join.alreadyamember"); } else { lblInfo.Text = GetString("community.group.join.pendingordenied"); } JoinButton.Visible = false; CancelButton.Text = GetString("General.Close"); } else { lblInfo.Text = JoinText; } CancelButton.OnClientClick = "CloseDialog()"; }
protected void memberListElem_GridOnAction(object sender, CommandEventArgs args) { switch (args.CommandName.ToLowerCSafe()) { case "approve": lblInfo.Text = GetString("group.member.userhasbeenapproved"); lblInfo.Visible = true; break; case "reject": lblInfo.Text = GetString("group.member.userhasbeenrejected"); lblInfo.Visible = true; break; case "edit": int memberId = ValidationHelper.GetInteger(args.CommandArgument, 0); memberEditElem.MemberID = memberId; memberEditElem.GroupID = GroupID; plcList.Visible = false; plcEdit.Visible = true; memberEditElem.Visible = true; memberEditElem.ReloadData(); GroupMemberInfo gmi = GroupMemberInfoProvider.GetGroupMemberInfo(memberId); if (gmi != null) { UserInfo ui = UserInfoProvider.GetUserInfo(gmi.MemberUserID); if (ui != null) { ucBreadcrumbs.Items[1].Text = ui.FullName; ViewState["UserID"] = ui.UserID; } } break; } }
/// <summary> /// Initializes the control properties. /// </summary> protected void SetupControl() { if (StopProcessing) { // Do nothing } else { if (!RequestHelper.IsPostBack()) { // If user is public if (MembershipContext.AuthenticatedUser.IsPublic()) { // Get logon URL string logonUrl = AuthenticationHelper.GetSecuredAreasLogonPage(SiteContext.CurrentSiteName); logonUrl = DataHelper.GetNotEmpty(LoginURL, logonUrl); // Create redirect URL logonUrl = UrlResolver.ResolveUrl(logonUrl) + "?ReturnURL=" + HttpUtility.UrlEncode(RequestContext.CurrentURL); URLHelper.Redirect(logonUrl); } else { // Get invitation by GUID Guid invitationGuid = QueryHelper.GetGuid("invitationguid", Guid.Empty); if (invitationGuid != Guid.Empty) { InvitationInfo invitation = InvitationInfoProvider.GetInvitationInfo(invitationGuid); if (invitation != null) { // Check if invitation is valid if ((invitation.InvitationValidTo == DateTimeHelper.ZERO_TIME) || (invitation.InvitationValidTo >= DateTime.Now)) { GroupInfo group = GroupInfoProvider.GetGroupInfo(invitation.InvitationGroupID); if (group != null) { // Check whether current user is the user who should be invited if ((invitation.InvitedUserID > 0) && (invitation.InvitedUserID != MembershipContext.AuthenticatedUser.UserID)) { lblInfo.CssClass = "InvitationErrorLabel"; lblInfo.Text = InvitationIsNotValid; lblInfo.Visible = true; return; } // If user was invited by e-mail if (invitation.InvitedUserID == 0) { invitation.InvitedUserID = MembershipContext.AuthenticatedUser.UserID; } if (!GroupMemberInfoProvider.IsMemberOfGroup(invitation.InvitedUserID, invitation.InvitationGroupID)) { // Create group member info object GroupMemberInfo groupMember = new GroupMemberInfo(); groupMember.MemberInvitedByUserID = invitation.InvitedByUserID; groupMember.MemberUserID = MembershipContext.AuthenticatedUser.UserID; groupMember.MemberGroupID = invitation.InvitationGroupID; groupMember.MemberJoined = DateTime.Now; // Set proper status depending on grouo settings switch (group.GroupApproveMembers) { // Only approved members can join case GroupApproveMembersEnum.ApprovedCanJoin: groupMember.MemberStatus = GroupMemberStatus.WaitingForApproval; lblInfo.Text = MemberWaiting.Replace("##GROUPNAME##", HTMLHelper.HTMLEncode(group.GroupDisplayName)); break; // Only invited members case GroupApproveMembersEnum.InvitedWithoutApproval: // Any site members can join case GroupApproveMembersEnum.AnyoneCanJoin: groupMember.MemberApprovedWhen = DateTime.Now; groupMember.MemberStatus = GroupMemberStatus.Approved; lblInfo.Text = MemberJoined.Replace("##GROUPNAME##", HTMLHelper.HTMLEncode(group.GroupDisplayName)); break; } // Store info object to database GroupMemberInfoProvider.SetGroupMemberInfo(groupMember); // Handle sending e-mails if (SendEmailToInviter || SendDefaultGroupEmails) { UserInfo sender = UserInfoProvider.GetFullUserInfo(groupMember.MemberUserID); UserInfo recipient = UserInfoProvider.GetFullUserInfo(groupMember.MemberInvitedByUserID); if (SendEmailToInviter) { EmailTemplateInfo template = EmailTemplateProvider.GetEmailTemplate("Groups.MemberAcceptedInvitation", SiteContext.CurrentSiteName); // Resolve macros MacroResolver resolver = MacroContext.CurrentResolver; resolver.SetAnonymousSourceData(sender, recipient, group, groupMember); resolver.SetNamedSourceData("Sender", sender); resolver.SetNamedSourceData("Recipient", recipient); resolver.SetNamedSourceData("Group", group); resolver.SetNamedSourceData("GroupMember", groupMember); if (!String.IsNullOrEmpty(recipient.Email) && !String.IsNullOrEmpty(sender.Email)) { // Send e-mail EmailMessage message = new EmailMessage(); message.EmailFormat = EmailFormatEnum.Default; message.Recipients = recipient.Email; message.From = SettingsKeyInfoProvider.GetValue(SiteContext.CurrentSiteName + ".CMSNoreplyEmailAddress"); EmailSender.SendEmailWithTemplateText(SiteContext.CurrentSiteName, message, template, resolver, false); } } if (SendDefaultGroupEmails) { // Send join or leave notification if (group.GroupSendJoinLeaveNotification && (groupMember.MemberStatus == GroupMemberStatus.Approved)) { GroupMemberInfoProvider.SendNotificationMail("Groups.MemberJoin", SiteContext.CurrentSiteName, groupMember, true); GroupMemberInfoProvider.SendNotificationMail("Groups.MemberJoinedConfirmation", SiteContext.CurrentSiteName, groupMember, false); } // Send 'waiting for approval' notification if (group.GroupSendWaitingForApprovalNotification && (groupMember.MemberStatus == GroupMemberStatus.WaitingForApproval)) { GroupMemberInfoProvider.SendNotificationMail("Groups.MemberWaitingForApproval", SiteContext.CurrentSiteName, groupMember, true); GroupMemberInfoProvider.SendNotificationMail("Groups.MemberJoinedWaitingForApproval", SiteContext.CurrentSiteName, groupMember, false); } } } // Delete all invitations to specified group for specified user (based on e-mail or userId) string whereCondition = "InvitationGroupID = " + invitation.InvitationGroupID + " AND (InvitedUserID=" + MembershipContext.AuthenticatedUser.UserID + " OR InvitationUserEmail = N'" + SqlHelper.GetSafeQueryString(MembershipContext.AuthenticatedUser.Email, false) + "')"; InvitationInfoProvider.DeleteInvitations(whereCondition); } else { lblInfo.Text = UserIsAlreadyMember.Replace("##GROUPNAME##", HTMLHelper.HTMLEncode(group.GroupDisplayName)); lblInfo.CssClass = "InvitationErrorLabel"; // Delete this invitation InvitationInfoProvider.DeleteInvitationInfo(invitation); } } else { lblInfo.Text = GroupNoLongerExists; lblInfo.CssClass = "InvitationErrorLabel"; // Delete this invitation InvitationInfoProvider.DeleteInvitationInfo(invitation); } } else { lblInfo.Text = InvitationIsNotValid; lblInfo.CssClass = "InvitationErrorLabel"; // Delete this invitation InvitationInfoProvider.DeleteInvitationInfo(invitation); } } else { lblInfo.Text = InvitationNoLongerExists; lblInfo.CssClass = "InvitationErrorLabel"; } lblInfo.Visible = true; } else { // Hide control if invitation GUID isn't set Visible = false; } } } } }
/// <summary> /// Initializes the control properties. /// </summary> protected void SetupControl() { if (StopProcessing) { // Do nothing } else { // Initialize properties string script = ""; // Set current user currentUser = MembershipContext.AuthenticatedUser; // Initialize strings lnkSignIn.Text = SignInText; lnkJoinCommunity.Text = JoinCommunityText; lnkMyProfile.Text = MyProfileText; lnkEditMyProfile.Text = EditMyProfileText; btnSignOut.Text = SignOutText; lnkCreateNewGroup.Text = CreateNewGroupText; lnkCreateNewBlog.Text = CreateNewBlogText; lnkJoinGroup.Text = JoinGroupText; lnkLeaveGroup.Text = LeaveGroupText; lnkInviteToGroup.Text = InviteGroupText; lnkManageGroup.Text = ManageGroupText; lnkMyInvitations.Text = MyInvitationsText; // If current user is public... if (currentUser.IsPublic()) { // Display Sign In link if set so if (DisplaySignIn) { // SignInPath returns URL - because of settings value lnkSignIn.NavigateUrl = MacroResolver.ResolveCurrentPath(SignInPath); pnlSignIn.Visible = true; pnlSignInOut.Visible = true; } // Display Join the community link if set so if (DisplayJoinCommunity) { lnkJoinCommunity.NavigateUrl = GetUrl(JoinCommunityPath); pnlJoinCommunity.Visible = true; pnlPersonalLinks.Visible = true; } } // If user is logged in else { // Display Sign out link if set so if (DisplaySignOut && !AuthenticationMode.IsWindowsAuthentication()) { pnlSignOut.Visible = true; pnlSignInOut.Visible = true; } // Display Edit my profile link if set so if (DisplayEditMyProfileLink) { lnkEditMyProfile.NavigateUrl = UrlResolver.ResolveUrl(DocumentURLProvider.GetUrl(GroupMemberInfoProvider.GetMemberManagementPath(currentUser.UserName, SiteContext.CurrentSiteName))); pnlEditMyProfile.Visible = true; pnlProfileLinks.Visible = true; } // Display My profile link if set so if (DisplayMyProfileLink) { lnkMyProfile.NavigateUrl = UrlResolver.ResolveUrl(DocumentURLProvider.GetUrl(GroupMemberInfoProvider.GetMemberProfilePath(currentUser.UserName, SiteContext.CurrentSiteName))); pnlMyProfile.Visible = true; pnlProfileLinks.Visible = true; } // Display Create new group link if set so if (DisplayCreateNewGroup) { lnkCreateNewGroup.NavigateUrl = GetUrl(CreateNewGroupPath); pnlCreateNewGroup.Visible = true; pnlGroupLinks.Visible = true; } // Display Create new blog link if set so if (DisplayCreateNewBlog) { // Check that Community Module is present var entry = ModuleManager.GetModule(ModuleName.BLOGS); if (entry != null) { lnkCreateNewBlog.NavigateUrl = GetUrl(CreateNewBlogPath); pnlCreateNewBlog.Visible = true; pnlBlogLinks.Visible = true; } } // Display My invitations link if (DisplayMyInvitations) { lnkMyInvitations.NavigateUrl = GetUrl(MyInvitationsPath); pnlMyInvitations.Visible = true; pnlPersonalLinks.Visible = true; } GroupMemberInfo gmi = null; if (CommunityContext.CurrentGroup != null) { // Get group info from community context GroupInfo currentGroup = CommunityContext.CurrentGroup; if (DisplayGroupLinks) { // Display Join group link if set so and user is visiting a group page gmi = GetGroupMember(MembershipContext.AuthenticatedUser.UserID, currentGroup.GroupID); if (gmi == null) { if (String.IsNullOrEmpty(JoinGroupPath)) { script += "function JoinToGroupRequest() {\n" + "modalDialog('" + ApplicationUrlHelper.ResolveDialogUrl("~/CMSModules/Groups/CMSPages/JoinTheGroup.aspx") + "?groupid=" + currentGroup.GroupID + "','requestJoinToGroup', 500, 180); \n" + " } \n"; lnkJoinGroup.Attributes.Add("onclick", "JoinToGroupRequest();return false;"); lnkJoinGroup.NavigateUrl = RequestContext.CurrentURL; } else { lnkJoinGroup.NavigateUrl = GetUrl(JoinGroupPath); } pnlJoinGroup.Visible = true; pnlGroupLinks.Visible = true; } else if ((gmi.MemberStatus == GroupMemberStatus.Approved) || (MembershipContext.AuthenticatedUser.CheckPrivilegeLevel(UserPrivilegeLevelEnum.Admin))) // Display Leave the group link if user is the group member { if (String.IsNullOrEmpty(LeaveGroupPath)) { script += "function LeaveTheGroupRequest() {\n" + "modalDialog('" + ApplicationUrlHelper.ResolveDialogUrl("~/CMSModules/Groups/CMSPages/LeaveTheGroup.aspx") + "?groupid=" + currentGroup.GroupID + "','requestLeaveThGroup', 500, 180); \n" + " } \n"; lnkLeaveGroup.Attributes.Add("onclick", "LeaveTheGroupRequest();return false;"); lnkLeaveGroup.NavigateUrl = RequestContext.CurrentURL; } else { lnkLeaveGroup.NavigateUrl = GetUrl(LeaveGroupPath); } pnlLeaveGroup.Visible = true; pnlGroupLinks.Visible = true; } } // Display Manage the group link if set so and user is logged as group administrator and user is visiting a group page if (DisplayManageGroup && (currentUser.IsGroupAdministrator(currentGroup.GroupID) || (currentUser.CheckPrivilegeLevel(UserPrivilegeLevelEnum.Admin)))) { lnkManageGroup.NavigateUrl = ResolveUrl(DocumentURLProvider.GetUrl(GroupInfoProvider.GetGroupManagementPath(currentGroup.GroupName, SiteContext.CurrentSiteName))); pnlManageGroup.Visible = true; pnlGroupLinks.Visible = true; } } // Get user info from site context UserInfo siteContextUser = MembershipContext.CurrentUserProfile; if (DisplayInviteToGroup) { // Get group info from community context GroupInfo currentGroup = CommunityContext.CurrentGroup; // Display invite to group link for user who is visiting a group page if (currentGroup != null) { // Get group user if (gmi == null) { gmi = GetGroupMember(MembershipContext.AuthenticatedUser.UserID, currentGroup.GroupID); } if (((gmi != null) && (gmi.MemberStatus == GroupMemberStatus.Approved)) || (MembershipContext.AuthenticatedUser.CheckPrivilegeLevel(UserPrivilegeLevelEnum.Admin))) { pnlInviteToGroup.Visible = true; if (String.IsNullOrEmpty(InviteGroupPath)) { script += "function InviteToGroup() {\n modalDialog('" + ApplicationUrlHelper.ResolveDialogUrl("~/CMSModules/Groups/CMSPages/InviteToGroup.aspx") + "?groupid=" + currentGroup.GroupID + "','inviteToGroup', 800, 450); \n } \n"; lnkInviteToGroup.Attributes.Add("onclick", "InviteToGroup();return false;"); lnkInviteToGroup.NavigateUrl = RequestContext.CurrentURL; } else { lnkInviteToGroup.NavigateUrl = GetUrl(InviteGroupPath); } } } // Display invite to group link for user who is visiting another user's page else if ((siteContextUser != null) && (siteContextUser.UserName != currentUser.UserName) && (GroupInfoProvider.GetUserGroupsCount(currentUser, SiteContext.CurrentSite) != 0)) { pnlInviteToGroup.Visible = true; if (String.IsNullOrEmpty(InviteGroupPath)) { script += "function InviteToGroup() {\n modalDialog('" + ApplicationUrlHelper.ResolveDialogUrl("~/CMSModules/Groups/CMSPages/InviteToGroup.aspx") + "?invitedid=" + siteContextUser.UserID + "','inviteToGroup', 700, 400); \n } \n"; lnkInviteToGroup.Attributes.Add("onclick", "InviteToGroup();return false;"); lnkInviteToGroup.NavigateUrl = RequestContext.CurrentURL; } else { lnkInviteToGroup.NavigateUrl = GetUrl(InviteGroupPath); } } } } // Register menu management scripts ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "Shortcuts_" + ClientID, ScriptHelper.GetScript(script)); // Register the dialog script ScriptHelper.RegisterDialogScript(Page); } }
/// <summary> /// Initializes the control properties. /// </summary> protected void SetupControl() { if (StopProcessing) { // Do nothing } else { if (AuthenticationHelper.IsAuthenticated()) { // Get requested action action = (FriendsActionEnum)Enum.Parse(typeof(FriendsActionEnum), QueryHelper.GetString("action", "request"), true); friendship = CommunityContext.CurrentFriendship; friend = CommunityContext.CurrentFriend; // Prepare My Friends link lnkMyFriends.Text = MyFriendsCaption; if (MyFriendsPath != string.Empty) { lnkMyFriends.NavigateUrl = URLHelper.GetAbsoluteUrl(DocumentURLProvider.GetUrl(MyFriendsPath)); } else { lnkMyFriends.Visible = false; } // Validate requested action if (!ValidateAction()) { return; } btnApprove.Click += btnApprove_Click; btnReject.Click += btnReject_Click; if (friendship != null) { // If friendship is rejected -> display error switch (friendship.FriendStatus) { case FriendshipStatusEnum.Rejected: plcMessage.Visible = true; plcConfirm.Visible = false; lblInfo.Text = AlreadyRejectedCaption; lblInfo.ForeColor = Color.Red; break; case FriendshipStatusEnum.Approved: plcMessage.Visible = true; plcConfirm.Visible = false; lblInfo.Text = AlreadyApprovedCaption; lblInfo.ForeColor = Color.Red; break; default: plcMessage.Visible = false; plcConfirm.Visible = true; btnApprove.Text = GetString("general.approve"); btnReject.Text = GetString("general.reject"); string profilePath = GroupMemberInfoProvider.GetMemberProfilePath(friend.UserName, SiteContext.CurrentSiteName); string profileUrl = ResolveUrl(DocumentURLProvider.GetUrl(profilePath)); string link = "<a href=\"" + profileUrl + "\" >" + HTMLHelper.HTMLEncode(Functions.GetFormattedUserName(friend.UserName, friend.FullName, true)) + "</a>"; lblConfirm.Text = string.Format(GetString("friends.approvaltext"), link); break; } } else { Visible = false; } } else { plcMessage.Visible = true; plcConfirm.Visible = false; lblInfo.ForeColor = Color.Red; lblInfo.Text = GetString("friends.notloggedin"); } } }
/// <summary> /// Join handler. /// </summary> /// <param name="sender">Sender</param> /// <param name="e">EventArgs</param> protected void btnJoin_Click(object sender, EventArgs e) { if (MembershipContext.AuthenticatedUser.IsPublic()) { return; } CancelButton.Text = GetString("General.Close"); JoinButton.Enabled = false; CancelButton.OnClientClick = "if ((wopener != null)&&(wopener.ReloadPage != null)) {wopener.ReloadPage();} CloseDialog();"; if (Group == null) { return; } // Check whether user is not already in group or group is not approved or group is not enabled if (GroupMemberInfoProvider.IsMemberOfGroup(MembershipContext.AuthenticatedUser.UserID, Group.GroupID) || !Group.GroupApproved) { lblInfo.Text = UnSuccessfulJoinText; return; } GroupMemberInfo gmi = new GroupMemberInfo(); ; gmi.MemberJoined = DateTime.Now; gmi.MemberRejectedWhen = DateTimeHelper.ZERO_TIME; gmi.MemberStatus = GroupMemberStatus.Rejected; switch (Group.GroupApproveMembers) { // Only approved members can join case GroupApproveMembersEnum.ApprovedCanJoin: // Only invited members case GroupApproveMembersEnum.InvitedWithoutApproval: gmi.MemberGroupID = Group.GroupID; gmi.MemberUserID = MembershipContext.AuthenticatedUser.UserID; gmi.MemberStatus = GroupMemberStatus.WaitingForApproval; GroupMemberInfoProvider.SetGroupMemberInfo(gmi); if (Group.GroupSendWaitingForApprovalNotification) { GroupMemberInfoProvider.SendNotificationMail("Groups.MemberWaitingForApproval", SiteContext.CurrentSiteName, gmi, true); GroupMemberInfoProvider.SendNotificationMail("Groups.MemberJoinedWaitingForApproval", SiteContext.CurrentSiteName, gmi, false); } LogJoinActivity(gmi, Group); lblInfo.Text = SuccessfulJoinTextWaitingForApproval; break; // Any site members can join case GroupApproveMembersEnum.AnyoneCanJoin: gmi.MemberGroupID = Group.GroupID; gmi.MemberUserID = MembershipContext.AuthenticatedUser.UserID; gmi.MemberStatus = GroupMemberStatus.Approved; gmi.MemberApprovedWhen = DateTime.Now; GroupMemberInfoProvider.SetGroupMemberInfo(gmi); if (Group.GroupSendJoinLeaveNotification) { GroupMemberInfoProvider.SendNotificationMail("Groups.MemberJoin", SiteContext.CurrentSiteName, gmi, true); GroupMemberInfoProvider.SendNotificationMail("Groups.MemberJoinedConfirmation", SiteContext.CurrentSiteName, gmi, false); } LogJoinActivity(gmi, Group); lblInfo.Text = SuccessfulJoinText; break; } }
/// <summary> /// Reloads data. /// </summary> public override void ReloadData() { base.ReloadData(); // Get member object info if ((this.MemberID > 0)) { this.gmi = GroupMemberInfoProvider.GetGroupMemberInfo(this.MemberID); } // Get roles for current user LoadCurrentRoles(); string where = CreateWhereCondition(); usRoles.WhereCondition = where; // Show message or uniselector? if (DataHelper.DataSourceIsEmpty(RoleInfoProvider.GetRoles("RoleID", where, null, 1))) { usRoles.Visible = false; lblRole.Visible = true; } else { usRoles.Visible = true; lblRole.Visible = false; } // Enable or disable buttons according to state of user's approval process if (gmi != null) { // Current user cannot approve/reject him self if (IsLiveSite && (gmi.MemberUserID == CMSContext.CurrentUser.UserID)) { // Member can nothing btnApprove.Enabled = false; btnReject.Enabled = false; } else if (gmi.MemberStatus == GroupMemberStatus.Approved) { // Member can be rejected btnApprove.Enabled = false; btnReject.Enabled = true; } else if (gmi.MemberStatus == GroupMemberStatus.Rejected) { // Member can be approved btnApprove.Enabled = true; btnReject.Enabled = false; } else if (gmi.MemberStatus == GroupMemberStatus.WaitingForApproval) { // Member can be rejected and approved btnApprove.Enabled = true; btnReject.Enabled = true; } } InitializeForm(); usRoles.Value = currentValues; }
/// <summary> /// Updates the current Group or creates new if no GroupID is present. /// </summary> public void SaveData() { // Check banned IP if (!BannedIPInfoProvider.IsAllowed(SiteContext.CurrentSiteName, BanControlEnum.AllNonComplete)) { ShowError(GetString("General.BannedIP")); return; } // Validate form entries string errorMessage = ValidateForm(); if (errorMessage == string.Empty) { try { codeName = GetSafeCodeName(); codeName = GetUniqueCodeName(codeName); GroupInfo group = new GroupInfo(); group.GroupDisplayName = txtDisplayName.Text; group.GroupName = codeName; group.GroupDescription = txtDescription.Text; group.GroupAccess = GetGroupAccess(); group.GroupSiteID = mSiteId; group.GroupApproveMembers = GetGroupApproveMembers(); // Set columns GroupCreatedByUserID and GroupApprovedByUserID to current user var user = MembershipContext.AuthenticatedUser; if (user != null) { group.GroupCreatedByUserID = user.UserID; if ((!RequireApproval) || (CurrentUserIsAdmin())) { group.GroupApprovedByUserID = user.UserID; group.GroupApproved = true; } } // Save Group in the database GroupInfoProvider.SetGroupInfo(group); // Create group admin role RoleInfo roleInfo = new RoleInfo(); roleInfo.DisplayName = "Group admin"; roleInfo.RoleName = group.GroupName + "_groupadmin"; roleInfo.RoleGroupID = group.GroupID; roleInfo.RoleIsGroupAdministrator = true; roleInfo.SiteID = mSiteId; // Save group admin role RoleInfoProvider.SetRoleInfo(roleInfo); if (user != null) { // Set user as member of group GroupMemberInfo gmi = new GroupMemberInfo(); gmi.MemberUserID = user.UserID; gmi.MemberGroupID = group.GroupID; gmi.MemberJoined = DateTime.Now; gmi.MemberStatus = GroupMemberStatus.Approved; gmi.MemberApprovedWhen = DateTime.Now; gmi.MemberApprovedByUserID = user.UserID; // Save user as member of group GroupMemberInfoProvider.SetGroupMemberInfo(gmi); // Set user as member of admin group role UserRoleInfo userRole = new UserRoleInfo(); userRole.UserID = user.UserID; userRole.RoleID = roleInfo.RoleID; // Save user as member of admin group role UserRoleInfoProvider.SetUserRoleInfo(userRole); } // Clear user session a request MembershipContext.AuthenticatedUser.Generalized.Invalidate(false); MembershipContext.AuthenticatedUser = null; string culture = CultureHelper.EnglishCulture.ToString(); if (DocumentContext.CurrentDocument != null) { culture = DocumentContext.CurrentDocument.DocumentCulture; } // Copy document errorMessage = GroupInfoProvider.CopyGroupDocument(group, GroupTemplateSourceAliasPath, GroupTemplateTargetAliasPath, GroupProfileURLPath, culture, CombineWithDefaultCulture, MembershipContext.AuthenticatedUser, roleInfo); if (!String.IsNullOrEmpty(errorMessage)) { // Display error message ShowError(errorMessage); return; } // Create group forum if (CreateForum) { CreateGroupForum(group); // Create group forum search index if (CreateSearchIndexes) { CreateGroupForumSearchIndex(group); } } // Create group media library if (CreateMediaLibrary) { CreateGroupMediaLibrary(group); } // Create search index for group documents if (CreateSearchIndexes) { CreateGroupContentSearchIndex(group); } // Display information on success ShowConfirmation(GetString("group.group.createdinfo")); // If URL is set, redirect user to specified page if (!String.IsNullOrEmpty(RedirectToURL)) { URLHelper.Redirect(ResolveUrl(DocumentURLProvider.GetUrl(RedirectToURL))); } // After registration message if ((RequireApproval) && (!CurrentUserIsAdmin())) { ShowConfirmation(SuccessfullRegistrationWaitingForApprovalText); // Send approval email to admin if (!String.IsNullOrEmpty(SendWaitingForApprovalEmailTo)) { // Create the message EmailTemplateInfo eti = EmailTemplateProvider.GetEmailTemplate("Groups.WaitingForApproval", SiteContext.CurrentSiteName); if (eti != null) { EmailMessage message = new EmailMessage(); if (String.IsNullOrEmpty(eti.TemplateFrom)) { message.From = SettingsKeyInfoProvider.GetStringValue(SiteContext.CurrentSiteName + ".CMSSendEmailNotificationsFrom"); } else { message.From = eti.TemplateFrom; } MacroResolver resolver = MacroContext.CurrentResolver; resolver.SetAnonymousSourceData(group); resolver.SetNamedSourceData("Group", group); message.Recipients = SendWaitingForApprovalEmailTo; message.Subject = resolver.ResolveMacros(eti.TemplateSubject); message.Body = resolver.ResolveMacros(eti.TemplateText); resolver.Settings.EncodeResolvedValues = false; message.PlainTextBody = resolver.ResolveMacros(eti.TemplatePlainText); // Send the message using email engine EmailSender.SendEmail(message); } } } else { string groupPath = SettingsKeyInfoProvider.GetStringValue(SiteContext.CurrentSiteName + ".CMSGroupProfilePath"); string url = String.Empty; if (!String.IsNullOrEmpty(groupPath)) { url = DocumentURLProvider.GetUrl(groupPath.Replace("{GroupName}", group.GroupName)); } ShowConfirmation(String.Format(SuccessfullRegistrationText, url)); } // Hide form if (HideFormAfterRegistration) { plcForm.Visible = false; } else { ClearForm(); } } catch (Exception ex) { // Display error message ShowError(GetString("general.saveerror"), ex.Message, null); } } else { // Display error message ShowError(errorMessage); } }
/// <summary> /// Accepts invitation. /// </summary> protected void btnAccept_OnCommand(object sender, CommandEventArgs e) { if (e.CommandName == "accept") { // Accept int invitationId = ValidationHelper.GetInteger(e.CommandArgument, 0); InvitationInfo invitation = InvitationInfoProvider.GetInvitationInfo(invitationId); // Check if time is correct if ((invitation.InvitationValidTo == DateTimeHelper.ZERO_TIME) || (invitation.InvitationValidTo >= DateTime.Now)) { GroupInfo group = GroupInfoProvider.GetGroupInfo(invitation.InvitationGroupID); if (group != null) { // Check if invitation is from group member if (!GroupMemberInfoProvider.IsMemberOfGroup(invitation.InvitedUserID, invitation.InvitationGroupID)) { // Transfer user name to user info if (userInfo == null) { userInfo = UserInfoProvider.GetUserInfo(UserName); } if (userInfo != null) { // Create group member info object GroupMemberInfo groupMember = new GroupMemberInfo(); groupMember.MemberInvitedByUserID = invitation.InvitedByUserID; groupMember.MemberUserID = userInfo.UserID; groupMember.MemberGroupID = invitation.InvitationGroupID; groupMember.MemberJoined = DateTime.Now; // Set proper status depending on group settings switch (group.GroupApproveMembers) { case GroupApproveMembersEnum.ApprovedCanJoin: groupMember.MemberStatus = GroupMemberStatus.WaitingForApproval; lblInfo.Text = MemberWaiting.Replace("##GROUPNAME##", HTMLHelper.HTMLEncode(group.GroupDisplayName)) + "<br /><br />"; break; default: groupMember.MemberApprovedByUserID = invitation.InvitedByUserID; groupMember.MemberApprovedWhen = DateTime.Now; groupMember.MemberStatus = GroupMemberStatus.Approved; lblInfo.Text = MemberJoined.Replace("##GROUPNAME##", HTMLHelper.HTMLEncode(group.GroupDisplayName)) + "<br /><br />"; break; } // Store info object to database GroupMemberInfoProvider.SetGroupMemberInfo(groupMember); // Delete all invitations to specified group for specified user string whereCondition = "InvitationGroupID = " + invitation.InvitationGroupID + " AND (InvitedUserID=" + userInfo.UserID + ")"; InvitationInfoProvider.DeleteInvitations(whereCondition); // Log activity LogJoinActivity(groupMember, group); } } else { // Show error message and delete invitation lblInfo.Text = UserIsAlreadyMember.Replace("##GROUPNAME##", HTMLHelper.HTMLEncode(group.GroupDisplayName)) + "<br /><br />"; lblInfo.CssClass = "InvitationErrorLabel"; InvitationInfoProvider.DeleteInvitationInfo(invitation); } } else { // Show error message and delete invitation lblInfo.Text = GroupNoLongerExists + "<br /><br />"; lblInfo.CssClass = "InvitationErrorLabel"; InvitationInfoProvider.DeleteInvitationInfo(invitation); } } else { // Show error message and delete invitation lblInfo.Text = InvitationIsNotValid + "<br /><br />"; lblInfo.CssClass = "InvitationErrorLabel"; InvitationInfoProvider.DeleteInvitationInfo(invitation); } lblInfo.Visible = true; BindData(); } }
/// <summary> /// Initializes the control properties. /// </summary> protected void SetupControl() { if (StopProcessing) { // Do nothing } else { // Initialize properties string script = ""; // Set current user currentUser = MembershipContext.AuthenticatedUser; // Get Enable Friends setting bool friendsEnabled = UIHelper.IsFriendsModuleEnabled(SiteContext.CurrentSiteName); // Initialize strings lnkSignIn.Text = SignInText; lnkJoinCommunity.Text = JoinCommunityText; lnkMyProfile.Text = MyProfileText; lnkEditMyProfile.Text = EditMyProfileText; btnSignOut.Text = SignOutText; lnkCreateNewGroup.Text = CreateNewGroupText; lnkCreateNewBlog.Text = CreateNewBlogText; lnkJoinGroup.Text = JoinGroupText; lnkLeaveGroup.Text = LeaveGroupText; lnkRejectFriendship.Text = RejectFriendshipText; requestFriendshipElem.LinkText = RequestFriendshipText; lnkSendMessage.Text = SendMessageText; lnkAddToContactList.Text = AddToContactListText; lnkAddToIgnoreList.Text = AddToIgnoreListText; lnkInviteToGroup.Text = InviteGroupText; lnkManageGroup.Text = ManageGroupText; lnkMyMessages.Text = MyMessagesText; lnkMyFriends.Text = MyFriendsText; lnkMyInvitations.Text = MyInvitationsText; lnkMyTasks.Text = MyTasksText; // If current user is public... if (currentUser.IsPublic()) { // Display Sign In link if set so if (DisplaySignIn) { // SignInPath returns URL - because of settings value lnkSignIn.NavigateUrl = MacroResolver.ResolveCurrentPath(SignInPath); pnlSignIn.Visible = true; pnlSignInOut.Visible = true; } // Display Join the community link if set so if (DisplayJoinCommunity) { lnkJoinCommunity.NavigateUrl = GetUrl(JoinCommunityPath); pnlJoinCommunity.Visible = true; pnlPersonalLinks.Visible = true; } } // If user is logged in else { // Display Sign out link if set so if (DisplaySignOut && !RequestHelper.IsWindowsAuthentication()) { pnlSignOut.Visible = true; pnlSignInOut.Visible = true; } // Display Edit my profile link if set so if (DisplayEditMyProfileLink) { lnkEditMyProfile.NavigateUrl = URLHelper.ResolveUrl(DocumentURLProvider.GetUrl(GroupMemberInfoProvider.GetMemberManagementPath(currentUser.UserName, SiteContext.CurrentSiteName))); pnlEditMyProfile.Visible = true; pnlProfileLinks.Visible = true; } // Display My profile link if set so if (DisplayMyProfileLink) { lnkMyProfile.NavigateUrl = URLHelper.ResolveUrl(DocumentURLProvider.GetUrl(GroupMemberInfoProvider.GetMemberProfilePath(currentUser.UserName, SiteContext.CurrentSiteName))); pnlMyProfile.Visible = true; pnlProfileLinks.Visible = true; } // Display Create new group link if set so if (DisplayCreateNewGroup) { lnkCreateNewGroup.NavigateUrl = GetUrl(CreateNewGroupPath); pnlCreateNewGroup.Visible = true; pnlGroupLinks.Visible = true; } // Display Create new blog link if set so if (DisplayCreateNewBlog) { // Check that Community Module is present var entry = ModuleManager.GetModule(ModuleName.BLOGS); if (entry != null) { lnkCreateNewBlog.NavigateUrl = GetUrl(CreateNewBlogPath); pnlCreateNewBlog.Visible = true; pnlBlogLinks.Visible = true; } } // Display My messages link if (DisplayMyMessages) { lnkMyMessages.NavigateUrl = GetUrl(MyMessagesPath); pnlMyMessages.Visible = true; pnlPersonalLinks.Visible = true; } // Display My friends link if (DisplayMyFriends && friendsEnabled) { lnkMyFriends.NavigateUrl = GetUrl(MyFriendsPath); pnlMyFriends.Visible = true; pnlPersonalLinks.Visible = true; } // Display My invitations link if (DisplayMyInvitations) { lnkMyInvitations.NavigateUrl = GetUrl(MyInvitationsPath); pnlMyInvitations.Visible = true; pnlPersonalLinks.Visible = true; } // Display My tasks link if (DisplayMyTasks) { lnkMyTasks.NavigateUrl = GetUrl(MyTasksPath); pnlMyTasks.Visible = true; pnlPersonalLinks.Visible = true; } GroupMemberInfo gmi = null; if (CommunityContext.CurrentGroup != null) { // Get group info from community context GroupInfo currentGroup = CommunityContext.CurrentGroup; if (DisplayGroupLinks) { script += "function ReloadPage(){" + ControlsHelper.GetPostBackEventReference(this, "") + "}"; // Display Join group link if set so and user is visiting a group page gmi = GetGroupMember(MembershipContext.AuthenticatedUser.UserID, currentGroup.GroupID); if (gmi == null) { if (String.IsNullOrEmpty(JoinGroupPath)) { script += "function JoinToGroupRequest() {\n" + "modalDialog('" + AuthenticationHelper.ResolveDialogUrl("~/CMSModules/Groups/CMSPages/JoinTheGroup.aspx") + "?groupid=" + currentGroup.GroupID + "','requestJoinToGroup', 500, 180); \n" + " } \n"; lnkJoinGroup.Attributes.Add("onclick", "JoinToGroupRequest();return false;"); lnkJoinGroup.NavigateUrl = RequestContext.CurrentURL; } else { lnkJoinGroup.NavigateUrl = GetUrl(JoinGroupPath); } pnlJoinGroup.Visible = true; pnlGroupLinks.Visible = true; } else if ((gmi.MemberStatus == GroupMemberStatus.Approved) || (MembershipContext.AuthenticatedUser.IsGlobalAdministrator)) // Display Leave the group link if user is the group member { if (String.IsNullOrEmpty(LeaveGroupPath)) { script += "function LeaveTheGroupRequest() {\n" + "modalDialog('" + AuthenticationHelper.ResolveDialogUrl("~/CMSModules/Groups/CMSPages/LeaveTheGroup.aspx") + "?groupid=" + currentGroup.GroupID + "','requestLeaveThGroup', 500, 180); \n" + " } \n"; lnkLeaveGroup.Attributes.Add("onclick", "LeaveTheGroupRequest();return false;"); lnkLeaveGroup.NavigateUrl = RequestContext.CurrentURL; } else { lnkLeaveGroup.NavigateUrl = GetUrl(LeaveGroupPath); } pnlLeaveGroup.Visible = true; pnlGroupLinks.Visible = true; } } // Display Manage the group link if set so and user is logged as group administrator and user is visiting a group page if (DisplayManageGroup && (currentUser.IsGroupAdministrator(currentGroup.GroupID) || (currentUser.IsGlobalAdministrator))) { lnkManageGroup.NavigateUrl = ResolveUrl(DocumentURLProvider.GetUrl(GroupInfoProvider.GetGroupManagementPath(currentGroup.GroupName, SiteContext.CurrentSiteName))); pnlManageGroup.Visible = true; pnlGroupLinks.Visible = true; } } if (DisplayInviteToGroup) { // Get group info from community context GroupInfo currentGroup = CommunityContext.CurrentGroup; // Get user info from site context UserInfo siteContextUser = MembershipContext.CurrentUserProfile; // Display invite to group link for user who is visiting a group page if (currentGroup != null) { // Get group user if (gmi == null) { gmi = GetGroupMember(MembershipContext.AuthenticatedUser.UserID, currentGroup.GroupID); } if (((gmi != null) && (gmi.MemberStatus == GroupMemberStatus.Approved)) || (MembershipContext.AuthenticatedUser.IsGlobalAdministrator)) { pnlInviteToGroup.Visible = true; if (String.IsNullOrEmpty(InviteGroupPath)) { script += "function InviteToGroup() {\n modalDialog('" + AuthenticationHelper.ResolveDialogUrl("~/CMSModules/Groups/CMSPages/InviteToGroup.aspx") + "?groupid=" + currentGroup.GroupID + "','inviteToGroup', 800, 450); \n } \n"; lnkInviteToGroup.Attributes.Add("onclick", "InviteToGroup();return false;"); lnkInviteToGroup.NavigateUrl = RequestContext.CurrentURL; } else { lnkInviteToGroup.NavigateUrl = GetUrl(InviteGroupPath); } } } // Display invite to group link for user who is visiting another user's page else if ((siteContextUser != null) && (siteContextUser.UserName != currentUser.UserName) && (GroupInfoProvider.GetUserGroupsCount(currentUser, SiteContext.CurrentSite) != 0)) { pnlInviteToGroup.Visible = true; if (String.IsNullOrEmpty(InviteGroupPath)) { script += "function InviteToGroup() {\n modalDialog('" + AuthenticationHelper.ResolveDialogUrl("~/CMSModules/Groups/CMSPages/InviteToGroup.aspx") + "?invitedid=" + siteContextUser.UserID + "','inviteToGroup', 700, 400); \n } \n"; lnkInviteToGroup.Attributes.Add("onclick", "InviteToGroup();return false;"); lnkInviteToGroup.NavigateUrl = RequestContext.CurrentURL; } else { lnkInviteToGroup.NavigateUrl = GetUrl(InviteGroupPath); } } } if (SiteContext.CurrentUser != null) { // Get user info from site context UserInfo siteContextUser = MembershipContext.CurrentUserProfile; // Display Friendship link if set so and user is visiting an user's page if (DisplayFriendshipLinks && (currentUser.UserID != siteContextUser.UserID) && friendsEnabled) { FriendshipStatusEnum status = MembershipContext.AuthenticatedUser.HasFriend(siteContextUser.UserID); switch (status) { case FriendshipStatusEnum.Approved: // Friendship rejection script += "function ShortcutFriendshipReject(id) { \n" + "modalDialog('" + AuthenticationHelper.ResolveDialogUrl("~/CMSModules/Friends/CMSPages/Friends_Reject.aspx") + "?userid=" + currentUser.UserID + "&requestid=' + id , 'rejectFriend', 410, 270); \n" + " } \n"; lnkRejectFriendship.Attributes.Add("onclick", "ShortcutFriendshipReject('" + siteContextUser.UserID + "');return false;"); lnkRejectFriendship.NavigateUrl = RequestContext.CurrentURL; pnlRejectFriendship.Visible = true; pnlFriendshipLinks.Visible = true; break; case FriendshipStatusEnum.None: requestFriendshipElem.UserID = currentUser.UserID; requestFriendshipElem.RequestedUserID = siteContextUser.UserID; pnlFriendshipLink.Visible = true; pnlFriendshipLinks.Visible = true; break; } } // Show messaging links if enabled if (MessagingPresent && (currentUser.UserID != siteContextUser.UserID)) { // Display Send message link if user is visiting an user's page if (DisplaySendMessage) { // Send private message script += "function ShortcutPrivateMessage(id) { \n" + "modalDialog('" + AuthenticationHelper.ResolveDialogUrl("~/CMSModules/Messaging/CMSPages/SendMessage.aspx") + "?userid=" + currentUser.UserID + "&requestid=' + id , 'sendMessage', 390, 390); \n" + " } \n"; lnkSendMessage.Attributes.Add("onclick", "ShortcutPrivateMessage('" + siteContextUser.UserID + "');return false;"); lnkSendMessage.NavigateUrl = RequestContext.CurrentURL; pnlSendMessage.Visible = true; pnlMessageLinks.Visible = true; } // Display Add to contact list link if user is visiting an user's page if (DisplayAddToContactList) { // Check if user is in contact list bool isInContactList = ModuleCommands.MessagingIsInContactList(currentUser.UserID, siteContextUser.UserID); // Add to actions if (!isInContactList) { lnkAddToContactList.Attributes.Add("onclick", "return ShortcutAddToContactList('" + siteContextUser.UserID + "')"); lnkAddToContactList.NavigateUrl = RequestContext.CurrentURL; pnlAddToContactList.Visible = true; pnlMessageLinks.Visible = true; // Add to contact list script += "function ShortcutAddToContactList(usertoadd) { \n" + "var confirmation = confirm(" + ScriptHelper.GetString(GetString("messaging.contactlist.addconfirmation")) + ");" + "if(confirmation)" + "{" + "selectedIdElem = document.getElementById('" + hdnSelectedId.ClientID + "'); \n" + "if (selectedIdElem != null) { selectedIdElem.value = usertoadd;}" + ControlsHelper.GetPostBackEventReference(this, "addtocontactlist", false) + "} return false;}\n"; } } // Display Add to ignore list link if user is visiting an user's page if (DisplayAddToIgnoreList) { // Check if user is in ignore list bool isInIgnoreList = ModuleCommands.MessagingIsInIgnoreList(currentUser.UserID, siteContextUser.UserID); // Add to ignore list if (!isInIgnoreList) { lnkAddToIgnoreList.Attributes.Add("onclick", "return ShortcutAddToIgnoretList('" + siteContextUser.UserID + "')"); lnkAddToIgnoreList.NavigateUrl = RequestContext.CurrentURL; pnlAddToIgnoreList.Visible = true; pnlMessageLinks.Visible = true; // Add to ignore list script += "function ShortcutAddToIgnoretList(usertoadd) { \n" + "var confirmation = confirm(" + ScriptHelper.GetString(GetString("messaging.ignorelist.addconfirmation")) + ");" + "if(confirmation)" + "{" + "selectedIdElem = document.getElementById('" + hdnSelectedId.ClientID + "'); \n" + "if (selectedIdElem != null) { selectedIdElem.value = usertoadd;}" + ControlsHelper.GetPostBackEventReference(this, "addtoignorelist", false) + "} return false; } \n"; } } } } } // Register menu management scripts ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "Shortcuts_" + ClientID, ScriptHelper.GetScript(script)); // Register the dialog script ScriptHelper.RegisterDialogScript(Page); } }
/// <summary> /// Updates the current Group or creates new if no MemberID is present. /// </summary> public bool SaveData() { // Check MANAGE permission for groups module if (!CheckPermissions("cms.groups", CMSAdminControl.PERMISSION_MANAGE, this.GroupID)) { return(false); } EnsureMember(); newItem = (this.MemberID == 0); if (gmi != null) { // Get user info UserInfo ui = UserInfoProvider.GetUserInfo(gmi.MemberUserID); if (ui != null) { // Save user roles SaveRoles(ui.UserID); gmi.MemberComment = this.txtComment.Text; GroupMemberInfoProvider.SetGroupMemberInfo(gmi); return(true); } } else { // New member if (newItem) { int userId = ValidationHelper.GetInteger(userSelector.Value, 0); // Check if some user was selected if (userId == 0) { lblError.Visible = true; lblError.ResourceString = "group.member.selectuser"; return(false); } // Check if user is not already group member gmi = GroupMemberInfoProvider.GetGroupMemberInfo(userId, this.GroupID); if (gmi != null) { lblError.Visible = true; lblError.ResourceString = "group.member.userexists"; return(false); } // New member object gmi = new GroupMemberInfo(); gmi.MemberGroupID = this.GroupID; gmi.MemberJoined = DateTime.Now; gmi.MemberUserID = userId; gmi.MemberComment = this.txtComment.Text; if (this.chkApprove.Checked) { // Approve member gmi.MemberStatus = GroupMemberStatus.Approved; gmi.MemberApprovedWhen = DateTime.Now; gmi.MemberApprovedByUserID = CMSContext.CurrentUser.UserID; } else { gmi.MemberStatus = GroupMemberStatus.WaitingForApproval; gmi.MemberApprovedByUserID = CMSContext.CurrentUser.UserID; } // Save member to database GroupMemberInfoProvider.SetGroupMemberInfo(gmi); GroupInfo group = GroupInfoProvider.GetGroupInfo(this.GroupID); if (group != null) { // Send notification email if ((this.chkApprove.Checked) && (group.GroupSendWaitingForApprovalNotification)) { GroupMemberInfoProvider.SendNotificationMail("Groups.MemberJoinedConfirmation", CMSContext.CurrentSiteName, gmi, false); } else { if (group.GroupSendWaitingForApprovalNotification) { GroupMemberInfoProvider.SendNotificationMail("Groups.MemberJoinedWaitingForApproval ", CMSContext.CurrentSiteName, gmi, false); } } } // Save user roles SaveRoles(userId); this.MemberID = gmi.MemberID; return(true); } } return(false); }
/// <summary> /// Invite button handling. /// </summary> /// <param name="sender">Sender</param> /// <param name="e">EventArgs</param> protected void btnInvite_Click(object sender, EventArgs e) { if (!IsLiveSite) { if (!CheckPermissions("cms.groups", CMSAdminControl.PERMISSION_MANAGE, this.GroupID)) { return; } } if (DisplayGroupSelector) { GroupID = ValidationHelper.GetInteger(groupSelector.Value, 0); } Group = GroupInfoProvider.GetGroupInfo(GroupID); string recipientEmail = string.Empty; if (Group != null) { // Check whether user is group member if (CMSContext.CurrentUser.IsGroupMember(GroupID)) { // If user can select the user if (plcUserSelector.Visible) { int userId = ValidationHelper.GetInteger(userSelector.Value, 0); if (userId > 0) { InvitedUser = UserInfoProvider.GetUserInfo(userId); bool userNotFound = true; // Check if user is filtered if (InvitedUser != null) { if (this.IsLiveSite) { userNotFound = InvitedUser.UserIsHidden || !InvitedUser.UserEnabled; } else { userNotFound = false; } } if (!userNotFound) { // Create invitation info InvitationInfo ii = InviteUser(Group, InvitedUser); if (ii != null) { // Send e-mail InvitationInfoProvider.SendInvitationEmail(ii, CMSContext.CurrentSiteName); } else { // User is member GroupMemberInfo gmi = GroupMemberInfoProvider.GetGroupMemberInfo(InvitedUser.UserID, GroupID); if (gmi != null) { lblError.Text = GetString("groupinvitation.invitationunsuccessismember").Replace("##GROUPNAME##", HTMLHelper.HTMLEncode(Group.GroupDisplayName)).Replace("##USERNAME##", HTMLHelper.HTMLEncode(Functions.GetFormattedUserName(InvitedUser.UserName, this.IsLiveSite))); lblError.Visible = true; return; } // User is invited DataSet ds = InvitationInfoProvider.GetInvitations("InvitedUserID=" + InvitedUser.UserID + " AND InvitationGroupID=" + GroupID, "InvitationCreated", 1); if (!DataHelper.DataSourceIsEmpty(ds)) { int invitedByuserId = ValidationHelper.GetInteger(ds.Tables[0].Rows[0]["InvitedByUserID"], 0); UserInfo ui = UserInfoProvider.GetUserInfo(invitedByuserId); if (ui != null) { lblError.Text = GetString("groupinvitation.invitationunsuccesinvexists").Replace("##GROUPNAME##", HTMLHelper.HTMLEncode(Group.GroupDisplayName)).Replace("##USERNAME##", HTMLHelper.HTMLEncode(InvitedUser.UserName)).Replace("##INVITEDBY##", HTMLHelper.HTMLEncode(Functions.GetFormattedUserName(ui.UserName, this.IsLiveSite))); lblError.Visible = true; } return; } // General error lblError.Text = GetString("groupinvitation.invitationunsuccessmult").Replace("##GROUPNAME##", HTMLHelper.HTMLEncode(Group.GroupDisplayName)).Replace("##USERNAME##", HTMLHelper.HTMLEncode(Functions.GetFormattedUserName(InvitedUser.UserName, this.IsLiveSite))); lblError.Visible = true; return; } } else { lblError.Text = GetString("general.usernotfound"); lblError.Visible = true; return; } } else { lblError.Text = GetString("groupinvitation.emptyusers"); lblError.Visible = true; return; } // Succesfull invitation lblInfo.Text = SuccessfulInviteText; lblInfo.Visible = true; DisableAfterSuccess(); if (DisplayAdvancedOptions) { CancelButton.ResourceString = "general.back"; CancelButton.PostBackUrl = ResolveUrl("~/CMSModules/Groups/Tools/Members/Member_List.aspx?groupId=" + GroupID); } else { CancelButton.ResourceString = "general.close"; CancelButton.OnClientClick = "Close();"; } } // Single invite else { // Check the email address if it is new user if (radNewUser.Checked) { string result = new Validator().IsEmail(txtEmail.Text, rfvEmail.ErrorMessage).Result; if (result != String.Empty) { lblError.Text = result; lblError.Visible = true; return; } } InvitedUser = UserInfoProvider.GetUserInfo(InvitedUserID); if ((GroupID != 0) || (InvitedUser != null) || (radNewUser.Checked)) { // Create invitation info InvitationInfo ii = InviteUser(Group, InvitedUser); if (ii != null) { lblInfo.Text = SuccessfulInviteText; DisableAfterSuccess(); if (DisplayAdvancedOptions) { CancelButton.ResourceString = "general.back"; CancelButton.PostBackUrl = ResolveUrl("~/CMSModules/Groups/Tools/Members/Member_List.aspx?groupId=" + GroupID); } else { CancelButton.ResourceString = "general.close"; if (UseMultipleUserSelector) { CancelButton.OnClientClick = "Close();"; } else { CancelButton.OnClientClick = "CloseAndRefresh();"; } } InvitationInfoProvider.SendInvitationEmail(ii, CMSContext.CurrentSiteName); // Succesfull invitation lblInfo.Text = SuccessfulInviteText; lblInfo.Visible = true; } else { if (InvitedUser != null) { string username = HTMLHelper.HTMLEncode(Functions.GetFormattedUserName(InvitedUser.UserName, this.IsLiveSite)); // User is member GroupMemberInfo gmi = GroupMemberInfoProvider.GetGroupMemberInfo(InvitedUser.UserID, GroupID); if (gmi != null) { lblError.Text = GetString("groupinvitation.invitationunsuccessismember").Replace("##GROUPNAME##", HTMLHelper.HTMLEncode(Group.GroupDisplayName)).Replace("##USERNAME##", username); lblError.Visible = true; return; } // User is invited DataSet ds = InvitationInfoProvider.GetInvitations("InvitedUserID=" + InvitedUser.UserID + " AND InvitationGroupID=" + GroupID, "InvitationCreated", 1); if (!DataHelper.DataSourceIsEmpty(ds)) { int invitedByuserId = ValidationHelper.GetInteger(ds.Tables[0].Rows[0]["InvitedByUserID"], 0); UserInfo ui = UserInfoProvider.GetUserInfo(invitedByuserId); if (ui != null) { lblError.Text = GetString("groupinvitation.invitationunsuccesinvexists").Replace("##GROUPNAME##", HTMLHelper.HTMLEncode(Group.GroupDisplayName)).Replace("##USERNAME##", username).Replace("##INVITEDBY##", HTMLHelper.HTMLEncode(Functions.GetFormattedUserName(ui.UserName, this.IsLiveSite))); lblError.Visible = true; } return; } // General error lblError.Text = GetString("groupinvitation.invitationunsuccessmult").Replace("##GROUPNAME##", HTMLHelper.HTMLEncode(Group.GroupDisplayName)).Replace("##USERNAME##", username); lblError.Visible = true; return; } else { UnSuccess(); } } } else { UnSuccess(); } } } } }
/// <summary> /// Updates the current Group or creates new if no MemberID is present. /// </summary> public bool SaveData() { // Check MANAGE permission for groups module if (!CheckPermissions("cms.groups", PERMISSION_MANAGE, GroupID)) { return(false); } newItem = (MemberID == 0); if (CurrentMember != null) { if (CurrentMember.MemberID > 0) { // Get user info UserInfo ui = UserInfoProvider.GetUserInfo(CurrentMember.MemberUserID); if (ui != null) { // Save user roles SaveRoles(ui.UserID); CurrentMember.MemberComment = txtComment.Text; GroupMemberInfoProvider.SetGroupMemberInfo(CurrentMember); return(true); } } else { // New member if (newItem) { int userId = ValidationHelper.GetInteger(userSelector.Value, 0); // Check if some user was selected if (userId == 0) { ShowError(GetString("group.member.selectuser")); return(false); } // Check if user is not already group member var existing = GroupMemberInfoProvider.GetGroupMemberInfo(userId, GroupID); if (existing != null) { ShowError(GetString("group.member.userexists")); return(false); } // New member object CurrentMember.MemberGroupID = GroupID; CurrentMember.MemberJoined = DateTime.Now; CurrentMember.MemberUserID = userId; CurrentMember.MemberComment = txtComment.Text; if (chkApprove.Checked) { // Approve member CurrentMember.MemberStatus = GroupMemberStatus.Approved; CurrentMember.MemberApprovedWhen = DateTime.Now; CurrentMember.MemberApprovedByUserID = MembershipContext.AuthenticatedUser.UserID; } else { CurrentMember.MemberStatus = GroupMemberStatus.WaitingForApproval; CurrentMember.MemberApprovedByUserID = MembershipContext.AuthenticatedUser.UserID; } // Save member to database GroupMemberInfoProvider.SetGroupMemberInfo(CurrentMember); GroupInfo group = GroupInfoProvider.GetGroupInfo(GroupID); if (group != null) { // Send notification email if ((chkApprove.Checked) && (group.GroupSendWaitingForApprovalNotification)) { GroupMemberInfoProvider.SendNotificationMail("Groups.MemberJoinedConfirmation", SiteContext.CurrentSiteName, CurrentMember, false); } else { if (group.GroupSendWaitingForApprovalNotification) { GroupMemberInfoProvider.SendNotificationMail("Groups.MemberJoinedWaitingForApproval ", SiteContext.CurrentSiteName, CurrentMember, false); } } } // Save user roles SaveRoles(userId); MemberID = CurrentMember.MemberID; return(true); } } } return(false); }