Skip to content

Commit 47b74b9

Browse files
committed
changed: assignment of group experts was moved to the group members page
1 parent dc119d3 commit 47b74b9

File tree

3 files changed

+81
-17
lines changed

3 files changed

+81
-17
lines changed
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
<?php
2+
3+
namespace ColdTrick\Questions\Menus;
4+
5+
use Elgg\Menu\MenuItems;
6+
7+
/**
8+
* Add menu items to the relationship menu
9+
*/
10+
class Relationship {
11+
12+
/**
13+
* (un)assign group question expert
14+
*
15+
* @param \Elgg\Event $event 'register', 'menu:relationship'
16+
*
17+
* @return MenuItems|null
18+
*/
19+
public static function toggleGroupExpert(\Elgg\Event $event): ?MenuItems {
20+
$user = elgg_get_logged_in_user_entity();
21+
if (!questions_experts_enabled() || !$user instanceof \ElggUser) {
22+
return null;
23+
}
24+
25+
$relationship = $event->getParam('relationship');
26+
if (!$relationship instanceof \ElggRelationship || $relationship->relationship !== 'member') {
27+
return null;
28+
}
29+
30+
$member = get_user($relationship->guid_one);
31+
$group = get_entity($relationship->guid_two);
32+
if (!$member instanceof \ElggUser || !$group instanceof \ElggGroup) {
33+
return null;
34+
}
35+
36+
if (!$group->canEdit($user->guid) || !$group->isToolEnabled('questions')) {
37+
return null;
38+
}
39+
40+
/** @var MenuItems $items */
41+
$result = $event->getValue();
42+
43+
$is_expert = $member->hasRelationship($group->guid, QUESTIONS_EXPERT_ROLE);
44+
45+
$result[] = \ElggMenuItem::factory([
46+
'name' => 'questions_expert',
47+
'icon' => 'level-up-alt',
48+
'text' => elgg_echo('questions:menu:user_hover:make_expert'),
49+
'href' => elgg_generate_action_url('questions/toggle_expert', [
50+
'user_guid' => $member->guid,
51+
'guid' => $group->guid,
52+
]),
53+
'data-toggle' => 'questions-expert-undo',
54+
'item_class' => $is_expert ? 'hidden' : null,
55+
]);
56+
57+
$result[] = \ElggMenuItem::factory([
58+
'name' => 'questions_expert_undo',
59+
'icon' => 'level-down-alt',
60+
'text' => elgg_echo('questions:menu:user_hover:remove_expert'),
61+
'href' => elgg_generate_action_url('questions/toggle_expert', [
62+
'user_guid' => $member->guid,
63+
'guid' => $group->guid,
64+
]),
65+
'data-toggle' => 'questions-expert',
66+
'item_class' => $is_expert ? null : 'hidden',
67+
]);
68+
69+
return $result;
70+
}
71+
}

classes/ColdTrick/Questions/Menus/UserHover.php

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class UserHover {
1818
*/
1919
public static function registerToggleExpert(\Elgg\Event $event): ?MenuItems {
2020
// are experts enabled
21-
if (!questions_experts_enabled()) {
21+
if (!questions_experts_enabled() || !elgg_is_admin_logged_in()) {
2222
return null;
2323
}
2424

@@ -28,32 +28,22 @@ public static function registerToggleExpert(\Elgg\Event $event): ?MenuItems {
2828
return null;
2929
}
3030

31-
// get page owner
32-
$page_owner = elgg_get_page_owner_entity();
33-
if (!$page_owner instanceof \ElggGroup) {
34-
$page_owner = elgg_get_site_entity();
35-
}
36-
37-
// can the current person edit the page owner, to assign the role
38-
// and is the current user not the owner of this page owner
39-
if (!$page_owner->canEdit()) {
40-
return null;
41-
}
31+
$site = elgg_get_site_entity();
4232

4333
/* @var $items MenuItems */
4434
$items = $event->getValue();
4535

46-
$is_expert = $user->hasRelationship($page_owner->guid, QUESTIONS_EXPERT_ROLE);
36+
$is_expert = $user->hasRelationship($site->guid, QUESTIONS_EXPERT_ROLE);
4737

4838
$items[] = \ElggMenuItem::factory([
4939
'name' => 'questions_expert',
5040
'icon' => 'level-up-alt',
5141
'text' => elgg_echo('questions:menu:user_hover:make_expert'),
5242
'href' => elgg_generate_action_url('questions/toggle_expert', [
5343
'user_guid' => $user->guid,
54-
'guid' => $page_owner->guid,
44+
'guid' => $site->guid,
5545
]),
56-
'section' => ($page_owner instanceof \ElggSite) ? 'admin' : 'action',
46+
'section' => 'admin',
5747
'data-toggle' => 'questions-expert-undo',
5848
'item_class' => $is_expert ? 'hidden' : null,
5949
]);
@@ -64,9 +54,9 @@ public static function registerToggleExpert(\Elgg\Event $event): ?MenuItems {
6454
'text' => elgg_echo('questions:menu:user_hover:remove_expert'),
6555
'href' => elgg_generate_action_url('questions/toggle_expert', [
6656
'user_guid' => $user->guid,
67-
'guid' => $page_owner->guid,
57+
'guid' => $site->guid,
6858
]),
69-
'section' => ($page_owner instanceof \ElggSite) ? 'admin' : 'action',
59+
'section' => 'admin',
7060
'data-toggle' => 'questions-expert',
7161
'item_class' => $is_expert ? null : 'hidden',
7262
]);

elgg-plugin.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,9 @@
122122
'menu:filter:questions/groups' => [
123123
'\ColdTrick\Questions\Menus\Filter::registerQuestionsGroups' => [],
124124
],
125+
'menu:relationship' => [
126+
'\ColdTrick\Questions\Menus\Relationship::toggleGroupExpert' => [],
127+
],
125128
'menu:owner_block' => [
126129
'\ColdTrick\Questions\Menus\OwnerBlock::registerQuestions' => [],
127130
],

0 commit comments

Comments
 (0)