Group links widget not showing option to join group

Hi everyone, 

I'm stumped on this configuration issue in my 11.1.2 site and have made little progress on all troubleshooting attempts:

  • I have a Private (Listed) group available to only a subset of our community members (just our Partners and Employees, not customers)
  • Permissions are configured for the role of my test user (and real users I've tested with) to allow the user to read and join the group (All "employee" and "partner" roles have access to read and contribute to the group are not required to join):
  • The Group Links widget is placed on the group's home page, as well as other places around the group:

At this point, everything is set up the way I'd expect to work properly. I ran into and fixed one issue where the "Click here..." banner wasn't showing at the bottom of the page either. I found in this thread that the group join banner is part of the Group Banner widget which I had also removed from this group. I replaced it (and added a bunch of CSS changes to re-hide it, but still use the functionality) which caused the bottom banner to show. However, thie Group Links widget does not show for non-members. From there, more troubleshooting:

  • Changed the group from Private (Listed) to Private (unlisted) and back
  • Checked permissions across all applications, Site and Group roles, etc to confirm correct configuration
  • Checked where the widget SHOULD be in "Inspect Element" in Chrome to make sure it wasn't being hidden by some of the CSS customizations I've made in this group

The odd part is that when I join the group (as my test user), the option to leave the group appears. Then, the widget is gone again:

Finally, I checked  Release Notes for Community 11 to see if there are any fixed bugs since we're on such an old version, but I couldn't find anything.

Does anyone have any ideas why the logic of the Group Links widget's Join functionality would be different than the Group Banner's? 

Parents
  • As I finished typing this post up, I decided to take one more look at Widget Studio to compare the two widgets. When looking at Group Links > Content, I took a look specifically at : 

    #if (!$member.IsRoleMember)
    					#if ($member.MembershipType == "Owner" || $member.MembershipType == "Manager" || $member.MembershipType == "Member" || $member.MembershipType == "PendingMember")
    						#set ($canLeaveGroup = $member.MembershipType != "Owner" || $core_v2_groupUserMember.List($groupId, "%{MembershipType = 'Owner', PageSize = 1}").TotalCount > 1)
    						#if ($canLeaveGroup)
    							<li class="navigation-list-item leave-group">
    								<a href="#" class="internal-link leave-group" data-messagename="widget.${core_v2_widget.WrapperElementId}.canceljoin">
    									#if ($member.MembershipType == "PendingMember")
    										$core_v2_language.GetResource("Hubs_CancelJoinRequest")
    									#else
    										$core_v2_language.GetResource("Hubs_LeaveGroup")
    									#end
    								</a>
    							</li>
    							#set($hasLinks = true)
    						#end
    					#elseif ($canJoinGroupByRequest || $canJoinGroup)
    						#if ($group.GroupType == "PublicOpen")
    							<li class="navigation-list-item join-group">
    								<a href="#" class="internal-link join-group" data-messagename="widget.${core_v2_widget.WrapperElementId}.join">
    									$core_v2_language.GetResource('Hubs_JoinGroup')
    								</a>
    							</li>
    							#set($hasLinks = true)
    						#elseif ($group.GroupType == "PublicClosed")
    							<li class="navigation-list-item">
    								<a href="#" class="internal-link join-group" data-messagename="widget.${core_v2_widget.WrapperElementId}.requestjoin">
    									$core_v2_language.GetResource('Hubs_ApplyToJoin')
    								</a>
    							</li>
    							#set($hasLinks = true)

    I'm still trying to learn more about widget development, but it seems to me that there's missing logic here. The widget defines what to do (or not to do) with Joinless groups (a few lines earlier), then what to do for Existing Members, Public Open, and Public Closed groups in this block. I don't see anything defined to call out Private groups.

    This makes some sense since I'm using our permissions and role settings to circumvent the Group Privacy options, but I'd still expect them to be defined. Is this a bug and/or just a really obscure use case? I'd think updating (line 103 for me) from :

    #elseif ($canJoinGroupByRequest || $canJoinGroup)
    						#if ($group.GroupType == "PublicOpen")
    						

    to 

    #elseif ($canJoinGroupByRequest || $canJoinGroup)
    						#if ($group.GroupType == "PublicOpen" || $group.GroupType == "PrivateListed" || $group.GroupType == "PrivateUnlisted")
    						

    would take care of this use case, but I'm not sure if that would have any other ramifications (or if my change is "correct"). Any insight/validation is appreciated!

  • The widget logic appears to be based on the default permissions of the site, which is why its checking and allowing only Public Open and Public Closed to show links.  It should really just be relying on the permission check to handle situations where the default permissions have been altered.

    Probably something like this will work, haven't tested it though.

    #elseif ($canJoinGroup)
     <li class="navigation-list-item join-group">
       <a href="#" class="internal-link join-group" data-messagename="widget.${core_v2_widget.WrapperElementId}.join">
           $core_v2_language.GetResource('Hubs_JoinGroup')
       </a>
     </li>
     #set($hasLinks = true)
    #elseif ($canJoinGroupByRequest)
     <li class="navigation-list-item">
       <a href="#" class="internal-link join-group" data-messagename="widget.${core_v2_widget.WrapperElementId}.requestjoin">
           $core_v2_language.GetResource('Hubs_ApplyToJoin')
       </a>
     </li>
     #set($hasLinks = true)
    #end
Reply
  • The widget logic appears to be based on the default permissions of the site, which is why its checking and allowing only Public Open and Public Closed to show links.  It should really just be relying on the permission check to handle situations where the default permissions have been altered.

    Probably something like this will work, haven't tested it though.

    #elseif ($canJoinGroup)
     <li class="navigation-list-item join-group">
       <a href="#" class="internal-link join-group" data-messagename="widget.${core_v2_widget.WrapperElementId}.join">
           $core_v2_language.GetResource('Hubs_JoinGroup')
       </a>
     </li>
     #set($hasLinks = true)
    #elseif ($canJoinGroupByRequest)
     <li class="navigation-list-item">
       <a href="#" class="internal-link join-group" data-messagename="widget.${core_v2_widget.WrapperElementId}.requestjoin">
           $core_v2_language.GetResource('Hubs_ApplyToJoin')
       </a>
     </li>
     #set($hasLinks = true)
    #end
Children
No Data