Feature #11201
closedAdd "Request to Join this Site" button?
0%
Description
When groups are private there is a button to request membership. Can a similar button be created for private (only users can view) sites? A professor is teaching a course and wants students to be able to search and join her site without necessarily having to make the site public to all commons members.
Would be useful if students are lagging on accepting email invitations and:
A) students want to search the site and join through the Commons Home>Sites interface and/or
B) the professor wants to make the site private to class members at a certain point in the semester because of sensitive reading responses and discussion
Files
Related issues
Updated by Boone Gorges over 5 years ago
- Target version set to 1.16
I can imagine this being part of the 'more' dropdown suggested in #10464
Updated by Raymond Hoh over 5 years ago
I created a plugin for another site that does something similar.
There are a few admin options for setting the default role, allowing auto-joining without needing confirmation and turning on/off email notification to the site admin. The entry point for regular members requires the use of a widget though, and not the Sites Directory as what Boone mentions for #10464.
The plugin was meant for public sites and having members of the network easily join a site for collaboration though.
The one thing that my plugin will need to add is the ability to add a join button on private sites as requested by Laurie. This button would most likely need to go on the WP login prompt page or whatever prompt is shown on private sites when not authenticated.
Could be an easy win for 1.15? Might need some adaptation for the Commons and UX testing by Sonja.
I should note that there are also some very similar plugins on the wordpress.org repository. Depending on the needs for the Commons, those plugins could also be a consideration.
Updated by Raymond Hoh over 5 years ago
- Category name set to WordPress (misc)
- Assignee set to Raymond Hoh
Moving this to 1.15 for feedback, but could be moved back to 1.16 if we have enough on our plate for 1.15.
Updated by Sonja Leix over 5 years ago
Boone wrote:
I can imagine this being part of the 'more' dropdown suggested in #10464
Yes, if we decide to implement this, I think it should go into the same UI pattern as 'Remove site'.
The bigger question is, if this is a feature a large percentage of site owners (particularly of private sites) would be interested in. Or if this is a feature that only a few site owners have requested. I agree with the concerns mentioned during the call that admins of private sites might not want people to join or that they might feel overwhelmed by requests to join their site.
If this is a feature we want to move ahead with, I would advice to set the default for this feature to what the majority of private site admins is requesting (disable it if the majority won't use it, but give the option to enable it as an option, or the other way around).
Do we have some insight into how many private site owners would want to use such a feature?
Updated by Matt Gold over 5 years ago
I think this is much prevalent in teaching situations than in others. Would it be possible, as part of our next release, to make this feature automatically present for people who have chosen "teaching" as the purpose of their site and optional for everyone else?
Updated by Raymond Hoh over 5 years ago
Would it be possible, as part of our next release, to make this feature automatically present for people who have chosen "teaching" as the purpose of their site and optional for everyone else?
Yes, this is possible. I would have to look at how we are saving the site meta for "Primary Purpose" in #10987 before I do this though. However, that information would only be available for new sites. We could also use the Plugin Packages marker (#9942) to determine if the Teaching package was activated.
Updated by Raymond Hoh about 5 years ago
- File current.png current.png added
- File proposed.png proposed.png added
After re-reading this ticket, the main request is to add a "Request Membership" button to the Sites Directory for private sites.
We currently do not record private sites in the Sites Directory, so this would be hard to achieve.
Also, this is kind of tied to what we were discussing about on the monthly call last week about how a course is a super-structure and doesn't really contain information about membership at the moment.
I think with the new filtering and searching that will happen on the main Courses page (#11298), students can search for their course there and we can add a "Request Membership" button when navigating to a private site of which they are not authorized to view.
Below I have attached what a logged-in user currently sees when attempting to view a private site that they do not have access to:
It's not very friendly and the style doesn't look that great.
I'm proposing we change this page to add a bit more context and to add the "Request Membership" button:
As to what the "Request Membership" button will do technically, we can check to see if there is a pending invite under the Invite Anyone system. If not, we can activate the plugin I already made as mentioned in comment 2 and use its functionality to create the membership request. There is a bit of overlap with the Invite Anyone plugin, but the main difference is my plugin only works for sites, while Invite Anyone works mostly within Groups, but also handles sites connected to a group (Group + Site).
Feedback welcome.
Updated by Boone Gorges about 5 years ago
Thanks, Ray! Just to note, we're not really using the Invite Anyone system anymore (I think it's just there as a fallback). Invitations are stored using cac-invitations. If we go with something like what you've described here, we'll need to interface with that system.
Updated by Raymond Hoh about 5 years ago
Invitations are stored using cac-invitations. If we go with something like what you've described here, we'll need to interface with that system.
Ah, you're right! Totally forgot about cac-invitations. I'll need to look through that codebase to refresh my memory.
Updated by Raymond Hoh about 5 years ago
One thing I forgot to mention is the "Request Membership" button should only be shown if the site admin enables this functionality.
We have three non-public privacy options:
[ 'value' => -1, 'label' => 'I would like my site to be visible only to registered users of the CUNY Academic Commons', ], [ 'value' => -2, 'label' => 'I would like my site to be visible only to users I add to it.', ], [ 'value' => -3, 'label' => 'I would like my site to be visible only to its Admins.', ]
It seems like the -2
option would be the only logical place to use the "Request Membership" button. During site creation, if the privacy option is set to -2
, we could show a conditional field for the site creator to allow members to request membership. This option can also show up somewhere in the admin dashboard. Perhaps under "Settings > General"?
Updated by Sonja Leix about 5 years ago
Raymond Hoh wrote:
One thing I forgot to mention is the "Request Membership" button should only be shown if the site admin enables this functionality.
We have three non-public privacy options:
[...]
It seems like the
-2
option would be the only logical place to use the "Request Membership" button. During site creation, if the privacy option is set to-2
, we could show a conditional field for the site creator to allow members to request membership. This option can also show up somewhere in the admin dashboard. Perhaps under "Settings > General"?
Ray, I finally had a moment to look at your recommended solution and I like it! (https://redmine.gc.cuny.edu/attachments/12401/proposed.png)
This would, as it sounds, only show up for logged in users. Is there a fallback for public view or would private sites not show in the list at all – that's I think what you described on the call this morning. In that case we should move forward with this.
I also like the option for site admins to turn this feature off.
Thanks!
Updated by Laurie Hurson about 5 years ago
Hi All,
I am wondering if the "request to join site" button might useful in several instances (all of which would require an admin to make the button visible):
A: in the instance of the site being "public". A professor may be teaching an open/OER course and asks students to join. I know that professors can invite students through the invitation system but if selected by the professor, this would provide an alternative pathway for students to join the site.
B: The #1 option above, when site is visible to all users of the Commons. Again a professor could be teaching a course that is open to the Commons (in connection with OER and open pedagogy. The admins may want users to request membership to join as an alternative to using the invitation system.
C: And the #2 option ray suggested above - When a faculty member requests that the site is only visible to users that are added.
I realize that A and B circumvent the invitation system and maybe that is why they have not been suggested. I can think of several use cases where students have trouble finding the invitation email and go to the commons directly to search for their site. In these instances, I think it would be useful to create alternate pathways for joining sites (similar to the pathways for joining groups).
Updated by Raymond Hoh about 5 years ago
Thanks for the suggestions, Laurie.
Options A and B are already implemented in the plugin I created for another site. As I mentioned in comment 2, the admin would need to activate the specialized plugin and then add a widget to their theme so users can add themselves to the site. The admin can choose whether or not the user can be auto-added to the site or whether the request would require confirmation by the admin.
I'll have something ready for testing on the development site hopefully by next week.
Updated by Raymond Hoh about 5 years ago
- File private-site-request-membership.png private-site-request-membership.png added
- File users-pending-requests.png users-pending-requests.png added
- File setings-request-membership.png setings-request-membership.png added
- File widget-request-membership.png widget-request-membership.png added
So, I've got most of the things working here.
I'm going to outline various scenarios that this ticket has raised and what I've done to address them:
1. User: Requesting membership on a "Members Only" site
A "Members Only" site is when the site is set to "I would like my site to be visible only to users I add to it" on the "Settings > Reading" admin page.
If a logged-in user, but non-member attempts to visit a Members Only site, that user will see this page:
When the "Request Membership" button is pressed, the site admin will receive an email about this request.
If the user already has a pending invite for the site from the main Invitations functionality (#8641), we'll automatically accept the invite and the user will not see this screen.
2. Admin: Managing membership requests
When the admin receives an email about a new membership request, there is a link in the email that would open this page:
This page is available at "Users > Pending Requests" in the admin dashboard.
Once on this page, the admin can either approve or decline the request. If the admin accepts the request, the pending user will receive an email about this by default.
Also by default, membership requests are pending, but there is an option to enable auto-join instead on the Request Membership settings page.
3. Admin: Request Membership settings
The Request Membership settings page is located at "Settings > Request Membership".
Here, you can set the default role when the membership is approved, as well as other things like auto-join and email notifications.
4. Admin: Enabling membership requests on public sites
Currently, I have made it so that "Members Only" sites have automatic access to this new request membership functionality.
But, a site admin can also enable this functionality on public sites by manually activating the "WP MS Request Membership" plugin. Once enabled, the site admin will need to add the special "Request Membership" widget so members can join the site.
The widget looks like this:
Once the widget is enabled, on the frontend, if the user that wants to join the site is logged-in, that user will see a button to join the site. If the user is not logged in, a login form will be shown.
This satisfies what Laurie mentioned in comment 13 for public sites.
A note for Boone, the plugin that handles the Request Membership functionality is located here. It stores pending users as an array in the current blog's options table. I tried to pull the latest changes to the dev site, but I think the dev site IP has changed. Do you happen to know what the dev site IP is?
Once we get the dev site up and running again, we can open up testing. In the meantime, let me know what you think of the workflow or whether I'm missing anything.
Updated by Raymond Hoh about 5 years ago
Hi Sonja, I mentioned that the "Request Membership" section is automatic for "Members Only" sites. These are sites that have set their privacy option to "I would like my site to be visible only to users I add to it" under "Settings > Reading" in the admin area.
If you're using a public site, you'll have to manually activate the plugin since this is not functionality that all sites will need.
Let me know what you think.
Updated by Sonja Leix about 5 years ago
Raymond Hoh wrote:
Hi Sonja, I mentioned that the "Request Membership" section is automatic for "Members Only" sites. These are sites that have set their privacy option to "I would like my site to be visible only to users I add to it" under "Settings > Reading" in the admin area.
If you're using a public site, you'll have to manually activate the plugin since this is not functionality that all sites will need.
Let me know what you think.
Sorry I missed that, that makes sense.
Updated by Raymond Hoh almost 5 years ago
- Related to Bug #12240: wp-ms-request-membership not added properly as a git submodule added
Updated by Raymond Hoh about 2 years ago
- Related to Support #17193: Plugin: "WP Multisite Request Membership" added