Skip to content

Commit

Permalink
feat(groups): break down groups/all page in smaller views
Browse files Browse the repository at this point in the history
Make it easier to override individual parts and add new listing types
to the groups/all page
  • Loading branch information
hypeJunction committed Sep 24, 2016
1 parent 77e3e85 commit c6de14c
Show file tree
Hide file tree
Showing 8 changed files with 90 additions and 68 deletions.
27 changes: 27 additions & 0 deletions mod/discussions/views/default/discussion/listing/all.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?php

/**
* Renders a list of discussions, optionally filtered by container type
*
* @uses $vars['container_type'] Container type filter to apply
*/
$options = array(
'type' => 'object',
'subtype' => 'discussion',
'order_by' => 'e.last_action desc',
'limit' => max(20, elgg_get_config('default_limit')),
'full_view' => false,
'no_results' => elgg_echo('discussion:none'),
'preload_owners' => true,
'preload_containers' => true,
);

$container_type = elgg_extract('container_type', $vars);
if ($container_type) {
$dbprefix = elgg_get_config('dbprefix');
$container_type = sanitize_string($container_type);
$options['joins'][] = "JOIN {$dbprefix}entities ce ON ce.guid = e.container_guid";
$options['wheres'][] = "ce.type = '$container_type'";
}

echo elgg_list_entities($options);
9 changes: 9 additions & 0 deletions mod/discussions/views/default/groups/listing/discussion.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?php

/**
* Rendered on /groups/all?filter=discussion
* Displays a list of discussions created within groups
*/
echo elgg_view('discussion/listing/all', [
'container_type' => 'group',
]);
11 changes: 1 addition & 10 deletions mod/discussions/views/default/resources/discussion/all.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,7 @@
elgg_pop_breadcrumb();
elgg_push_breadcrumb(elgg_echo('discussion'));

$content = elgg_list_entities(array(
'type' => 'object',
'subtype' => 'discussion',
'order_by' => 'e.last_action desc',
'limit' => max(20, elgg_get_config('default_limit')),
'full_view' => false,
'no_results' => elgg_echo('discussion:none'),
'preload_owners' => true,
'preload_containers' => true,
));
$content = elgg_view('discussion/listing/all');

$title = elgg_echo('discussion:latest');

Expand Down
14 changes: 14 additions & 0 deletions mod/groups/views/default/groups/listing/alpha.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

/**
* Renders a list of groups ordered alphabetically
*/
$dbprefix = elgg_get_config('dbprefix');
echo elgg_list_entities(array(
'type' => 'group',
'joins' => ["JOIN {$dbprefix}groups_entity ge ON e.guid = ge.guid"],
'order_by' => 'ge.name',
'full_view' => false,
'no_results' => elgg_echo('groups:none'),
'distinct' => false,
));
12 changes: 12 additions & 0 deletions mod/groups/views/default/groups/listing/featured.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

/**
* Renders a list of featured groups
*/
echo elgg_list_entities_from_metadata(array(
'type' => 'group',
'metadata_name' => 'featured_group',
'metadata_value' => 'yes',
'full_view' => false,
'no_results' => elgg_echo('groups:nofeatured'),
));
11 changes: 11 additions & 0 deletions mod/groups/views/default/groups/listing/newest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?php

/**
* Renders a list of groups by creation date
*/
echo elgg_list_entities(array(
'type' => 'group',
'full_view' => false,
'no_results' => elgg_echo('groups:none'),
'distinct' => false,
));
12 changes: 12 additions & 0 deletions mod/groups/views/default/groups/listing/popular.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

/**
* Renders a list of groups with most members
*/
echo elgg_list_entities_from_relationship_count(array(
'type' => 'group',
'relationship' => 'member',
'inverse_relationship' => false,
'full_view' => false,
'no_results' => elgg_echo('groups:none'),
));
62 changes: 4 additions & 58 deletions mod/groups/views/default/resources/groups/all.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,66 +9,12 @@
}

$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':
// Get only the discussions that have been created inside a group
$dbprefix = elgg_get_config('dbprefix');
$content = elgg_list_entities(array(
'type' => 'object',
'subtype' => 'discussion',
'order_by' => 'e.last_action desc',
'limit' => 40,
'full_view' => false,
'no_results' => elgg_echo('discussion:none'),
'joins' => array("JOIN {$dbprefix}entities ce ON ce.guid = e.container_guid"),
'wheres' => array('ce.type = "group"'),
'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 'alpha':
$dbprefix = elgg_get_config('dbprefix');
$content = elgg_list_entities(array(
'type' => 'group',
'joins' => ["JOIN {$dbprefix}groups_entity ge ON e.guid = ge.guid"],
'order_by' => 'ge.name',
'full_view' => false,
'no_results' => elgg_echo('groups:none'),
'distinct' => false,
));
break;
case 'newest':
default:
$content = elgg_list_entities(array(
'type' => 'group',
'full_view' => false,
'no_results' => elgg_echo('groups:none'),
'distinct' => false,
));
break;
if (!elgg_view_exists("groups/listing/$selected_tab")) {
$selected_tab = 'newest';
}

$content = elgg_view("groups/listing/$selected_tab", $vars);

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

$sidebar = elgg_view('groups/sidebar/find');
Expand Down

0 comments on commit c6de14c

Please sign in to comment.