Skip to content

Commit

Permalink
feature(routing): Render groups pages with views
Browse files Browse the repository at this point in the history
  • Loading branch information
ewinslow committed May 28, 2015
1 parent 7dc40a1 commit 89651a3
Show file tree
Hide file tree
Showing 14 changed files with 459 additions and 519 deletions.
491 changes: 0 additions & 491 deletions mod/groups/lib/groups.php

Large diffs are not rendered by default.

38 changes: 10 additions & 28 deletions mod/groups/start.php
Expand Up @@ -239,43 +239,25 @@ function groups_page_handler($page) {
elgg_push_breadcrumb(elgg_echo('groups'), "groups/all");

switch ($page[0]) {
case 'add':
case 'all':
groups_handle_all_page();
break;
case 'search':
groups_search_page();
break;
case 'owner':
groups_handle_owned_page();
break;
case 'member':
set_input('username', $page[1]);
groups_handle_mine_page();
case 'search':
echo elgg_view("resources/groups/{$page[0]}");
break;
case 'invitations':
case 'member':
set_input('username', $page[1]);
groups_handle_invitations_page();
break;
case 'add':
groups_handle_edit_page('add');
break;
case 'edit':
groups_handle_edit_page('edit', $page[1]);
break;
case 'profile':
groups_handle_profile_page($page[1]);
echo elgg_view("resources/groups/{$page[0]}");
break;
case 'activity':
groups_handle_activity_page($page[1]);
break;
case 'members':
groups_handle_members_page($page[1]);
break;
case 'edit':
case 'invite':
groups_handle_invite_page($page[1]);
break;
case 'members':
case 'profile':
case 'requests':
groups_handle_requests_page($page[1]);
set_input('guid', $page[1]);
echo elgg_view("resources/groups/{$page[0]}");
break;
default:
return false;
Expand Down
37 changes: 37 additions & 0 deletions mod/groups/views/default/resources/groups/activity.php
@@ -0,0 +1,37 @@
<?php

$guid = get_input('guid');
elgg_entity_gatekeeper($guid, 'group');

elgg_set_page_owner_guid($guid);

elgg_group_gatekeeper();

$group = get_entity($guid);

$title = elgg_echo('groups:activity');

elgg_push_breadcrumb($group->name, $group->getURL());
elgg_push_breadcrumb($title);

$db_prefix = elgg_get_config('dbprefix');

$content = elgg_list_river(array(
'joins' => array(
"JOIN {$db_prefix}entities e1 ON e1.guid = rv.object_guid",
"LEFT JOIN {$db_prefix}entities e2 ON e2.guid = rv.target_guid",
),
'wheres' => array(
"(e1.container_guid = $group->guid OR e2.container_guid = $group->guid)",
),
'no_results' => elgg_echo('groups:activity:none'),
));

$params = array(
'content' => $content,
'title' => $title,
'filter' => '',
);
$body = elgg_view_layout('content', $params);

echo elgg_view_page($title, $body);
23 changes: 23 additions & 0 deletions mod/groups/views/default/resources/groups/add.php
@@ -0,0 +1,23 @@
<?php

elgg_gatekeeper();

elgg_require_js('elgg/groups/edit');

elgg_set_page_owner_guid(elgg_get_logged_in_user_guid());
$title = elgg_echo('groups:add');
elgg_push_breadcrumb($title);
if (elgg_get_plugin_setting('limited_groups', 'groups') != 'yes' || elgg_is_admin_logged_in()) {
$content = elgg_view('groups/edit');
} else {
$content = elgg_echo('groups:cantcreate');
}

$params = array(
'content' => $content,
'title' => $title,
'filter' => '',
);
$body = elgg_view_layout('content', $params);

echo elgg_view_page($title, $body);
69 changes: 69 additions & 0 deletions mod/groups/views/default/resources/groups/all.php
@@ -0,0 +1,69 @@
<?php

// all groups doesn't get link to self
elgg_pop_breadcrumb();
elgg_push_breadcrumb(elgg_echo('groups'));

if (elgg_get_plugin_setting('limited_groups', 'groups') != 'yes' || elgg_is_admin_logged_in()) {
elgg_register_title_button();
}

$selected_tab = get_input('filter', 'newest');

switch ($selected_tab) {
case 'popular':
$content = elgg_list_entities_from_relationship_count(array(
'type' => 'group',
'relationship' => 'member',
'inverse_relationship' => false,
'full_view' => false,
'no_results' => elgg_echo('groups:none'),
));
break;
case 'discussion':
$content = elgg_list_entities(array(
'type' => 'object',
'subtype' => 'groupforumtopic',
'order_by' => 'e.last_action desc',
'limit' => 40,
'full_view' => false,
'no_results' => elgg_echo('discussion:none'),
'distinct' => false,
'preload_containers' => true,
));
break;
case 'featured':
$content = elgg_list_entities_from_metadata(array(
'type' => 'group',
'metadata_name' => 'featured_group',
'metadata_value' => 'yes',
'full_view' => false,
));
if (!$content) {
$content = elgg_echo('groups:nofeatured');
}
break;
case 'newest':
default:
$content = elgg_list_entities(array(
'type' => 'group',
'full_view' => false,
'no_results' => elgg_echo('groups:none'),
'distinct' => false,
));
break;
}

$filter = elgg_view('groups/group_sort_menu', array('selected' => $selected_tab));

$sidebar = elgg_view('groups/sidebar/find');
$sidebar .= elgg_view('groups/sidebar/featured');

$params = array(
'content' => $content,
'sidebar' => $sidebar,
'filter' => $filter,
);
$body = elgg_view_layout('content', $params);

echo elgg_view_page(elgg_echo('groups:all'), $body);
27 changes: 27 additions & 0 deletions mod/groups/views/default/resources/groups/edit.php
@@ -0,0 +1,27 @@
<?php

elgg_gatekeeper();

elgg_require_js('elgg/groups/edit');

$guid = get_input('guid');
$title = elgg_echo("groups:edit");
$group = get_entity($guid);

if (elgg_instanceof($group, 'group') && $group->canEdit()) {
elgg_set_page_owner_guid($group->getGUID());
elgg_push_breadcrumb($group->name, $group->getURL());
elgg_push_breadcrumb($title);
$content = elgg_view("groups/edit", array('entity' => $group));
} else {
$content = elgg_echo('groups:noaccess');
}

$params = array(
'content' => $content,
'title' => $title,
'filter' => '',
);
$body = elgg_view_layout('content', $params);

echo elgg_view_page($title, $body);
31 changes: 31 additions & 0 deletions mod/groups/views/default/resources/groups/invitations.php
@@ -0,0 +1,31 @@
<?php

elgg_gatekeeper();

$username = get_input('username');
if ($username) {
$user = get_user_by_username($username);
elgg_set_page_owner_guid($user->guid);
} else {
$user = elgg_get_logged_in_user_entity();
elgg_set_page_owner_guid($user->guid);
}

if (!$user || !$user->canEdit()) {
register_error(elgg_echo('noaccess'));
forward('');
}

$title = elgg_echo('groups:invitations');
elgg_push_breadcrumb($title);

$content = elgg_view('groups/invitationrequests');

$params = array(
'content' => $content,
'title' => $title,
'filter' => '',
);
$body = elgg_view_layout('content', $params);

echo elgg_view_page($title, $body);
33 changes: 33 additions & 0 deletions mod/groups/views/default/resources/groups/invite.php
@@ -0,0 +1,33 @@
<?php

elgg_gatekeeper();

$guid = get_input('guid');
elgg_set_page_owner_guid($guid);

$title = elgg_echo('groups:invite:title');

$group = get_entity($guid);
if (!elgg_instanceof($group, 'group') || !$group->canEdit()) {
register_error(elgg_echo('groups:noaccess'));
forward(REFERER);
}

$content = elgg_view_form('groups/invite', array(
'id' => 'invite_to_group',
'class' => 'elgg-form-alt mtm',
), array(
'entity' => $group,
));

elgg_push_breadcrumb($group->name, $group->getURL());
elgg_push_breadcrumb(elgg_echo('groups:invite'));

$params = array(
'content' => $content,
'title' => $title,
'filter' => '',
);
$body = elgg_view_layout('content', $params);

echo elgg_view_page($title, $body);
36 changes: 36 additions & 0 deletions mod/groups/views/default/resources/groups/member.php
@@ -0,0 +1,36 @@
<?php

$page_owner = elgg_get_page_owner_entity();

if ($page_owner->guid == elgg_get_logged_in_user_guid()) {
$title = elgg_echo('groups:yours');
} else {
$title = elgg_echo('groups:user', array($page_owner->name));
}
elgg_push_breadcrumb($title);

if (elgg_get_plugin_setting('limited_groups', 'groups') != 'yes' || elgg_is_admin_logged_in()) {
elgg_register_title_button();
}

$dbprefix = elgg_get_config('dbprefix');

$content = elgg_list_entities_from_relationship(array(
'type' => 'group',
'relationship' => 'member',
'relationship_guid' => elgg_get_page_owner_guid(),
'inverse_relationship' => false,
'full_view' => false,
'joins' => array("JOIN {$dbprefix}groups_entity ge ON e.guid = ge.guid"),
'order_by' => 'ge.name ASC',
'no_results' => elgg_echo('groups:none'),
));

$params = array(
'content' => $content,
'title' => $title,
'filter' => '',
);
$body = elgg_view_layout('content', $params);

echo elgg_view_page($title, $body);
35 changes: 35 additions & 0 deletions mod/groups/views/default/resources/groups/members.php
@@ -0,0 +1,35 @@
<?php

$guid = get_input('guid');
elgg_entity_gatekeeper($guid, 'group');

$group = get_entity($guid);

elgg_set_page_owner_guid($guid);

elgg_group_gatekeeper();

$title = elgg_echo('groups:members:title', array($group->name));

elgg_push_breadcrumb($group->name, $group->getURL());
elgg_push_breadcrumb(elgg_echo('groups:members'));

$db_prefix = elgg_get_config('dbprefix');
$content = elgg_list_entities_from_relationship(array(
'relationship' => 'member',
'relationship_guid' => $group->guid,
'inverse_relationship' => true,
'type' => 'user',
'limit' => (int)get_input('limit', max(20, elgg_get_config('default_limit')), false),
'joins' => array("JOIN {$db_prefix}users_entity u ON e.guid=u.guid"),
'order_by' => 'u.name ASC',
));

$params = array(
'content' => $content,
'title' => $title,
'filter' => '',
);
$body = elgg_view_layout('content', $params);

echo elgg_view_page($title, $body);
34 changes: 34 additions & 0 deletions mod/groups/views/default/resources/groups/owner.php
@@ -0,0 +1,34 @@
<?php

$page_owner = elgg_get_page_owner_entity();

if ($page_owner->guid == elgg_get_logged_in_user_guid()) {
$title = elgg_echo('groups:owned');
} else {
$title = elgg_echo('groups:owned:user', array($page_owner->name));
}
elgg_push_breadcrumb($title);

if (elgg_get_plugin_setting('limited_groups', 'groups') != 'yes' || elgg_is_admin_logged_in()) {
elgg_register_title_button();
}

$dbprefix = elgg_get_config('dbprefix');
$content = elgg_list_entities(array(
'type' => 'group',
'owner_guid' => elgg_get_page_owner_guid(),
'joins' => array("JOIN {$dbprefix}groups_entity ge ON e.guid = ge.guid"),
'order_by' => 'ge.name ASC',
'full_view' => false,
'no_results' => elgg_echo('groups:none'),
'distinct' => false,
));

$params = array(
'content' => $content,
'title' => $title,
'filter' => '',
);
$body = elgg_view_layout('content', $params);

echo elgg_view_page($title, $body);

0 comments on commit 89651a3

Please sign in to comment.