Commit d692dc7d authored by Son Nguyen's avatar Son Nguyen

Fix pagination in group homepage. Bug 1457246

Add editing and sortoption parameters when getting the list of group pages,
shared pages and shared collections

Change-Id: Ie1ca8ca225ac179c55629b25c4402645c959fb48
parent 6df28ecf
......@@ -21,26 +21,31 @@ require(dirname(dirname(dirname(__FILE__))) . '/init.php');
safe_require('blocktype', 'groupviews');
require_once(get_config('libroot') . 'view.php');
require_once(get_config('libroot') . 'group.php');
require_once(get_config('libroot') . 'pieforms/pieform.php');
$offset = param_integer('offset', 0);
$groupid = param_integer('group');
$editing = param_boolean('editing', false);
$group_homepage_view = group_get_homepage_view($groupid);
$bi = group_get_homepage_view_groupview_block($groupid);
if (!can_view_view($group_homepage_view)) {
if (!can_view_view($group_homepage_view)
|| !group_user_can_assess_submitted_views($groupid, $USER->get('id'))) {
json_reply(true, get_string('accessdenied', 'error'));
}
$configdata = $bi->get('configdata');
if (!isset($configdata['showsubmitted'])) {
$configdata['showsubmitted'] = 1;
}
$limit = isset($configdata['count']) ? intval($configdata['count']) : 5;
$limit = ($limit > 0) ? $limit : 5;
if (!isset($configdata['sortsubmittedby']) || $configdata['sortsubmittedby'] == PluginBlocktypeGroupViews::SORTBY_TITLE) {
$sortsubmittedby = 'c.name, v.title';
}
else {
$sortsubmittedby = 'c.submittedtime DESC, v.submittedtime DESC';
}
list($collections, $views) = View::get_views_and_collections(null, null, null, null, false, $groupid);
list($collections, $views) = View::get_views_and_collections(null, null, null, null, false, $groupid, $sortsubmittedby);
$allsubmitted = array_merge(array_values($collections), array_values($views));
$allsubmitted = array(
'data' => array_slice($allsubmitted, $offset, $limit),
......@@ -51,7 +56,7 @@ $allsubmitted = array(
if (!empty($configdata['showsubmitted'])) {
$baseurl = $group_homepage_view->get_url();
$baseurl .= (strpos($baseurl, '?') === false ? '?' : '&') . 'group=' . $groupid;
$baseurl .= (strpos($baseurl, '?') === false ? '?' : '&') . 'group=' . $groupid . '&editing=' . $editing;
$pagination = array(
'baseurl' => $baseurl,
'id' => 'allsubmitted_pagination',
......
......@@ -21,10 +21,11 @@ require(dirname(dirname(dirname(__FILE__))) . '/init.php');
safe_require('blocktype', 'groupviews');
require_once(get_config('libroot') . 'view.php');
require_once(get_config('libroot') . 'group.php');
require_once('pieforms/pieform.php');
require_once(get_config('libroot') . 'pieforms/pieform.php');
$offset = param_integer('offset', 0);
$groupid = param_integer('group');
$editing = param_boolean('editing', false);
$group_homepage_view = group_get_homepage_view($groupid);
$bi = group_get_homepage_view_groupview_block($groupid);
......@@ -37,15 +38,27 @@ $configdata = $bi->get('configdata');
if (!isset($configdata['showgroupviews'])) {
$configdata['showgroupviews'] = 1;
}
$limit = isset($configdata['count']) ? intval($configdata['count']) : 5;
$limit = ($limit > 0) ? $limit : 5;
$sort = array(array('column' => 'type=\'grouphomepage\'', 'desc' => true));
// Sortorder: Group homepage should be first, then sort by sortorder
$sort = array(
array(
'column' => "type='grouphomepage'",
'desc' => true
)
);
// Find out what order to sort them by (default is titles)
if (!isset($configdata['sortgroupviewsby']) || $configdata['sortgroupviewsby'] == PluginBlocktypeGroupViews::SORTBY_TITLE) {
$sort[] = array('column' => 'title');
}
else {
$sort[] = array('column' => 'mtime', 'desc' => true);
}
$groupviews = (array)View::view_search(null, null, (object) array('group' => $groupid), null, $limit, $offset, true, $sort);
foreach ($groupviews['data'] as &$view) {
if (isset($view['template']) && $view['template']) {
$view['form'] = pieform(create_view_form($group_homepage_view, null, $view->id));
$view['form'] = pieform(create_view_form(null, null, $view['id']));
}
}
if (!empty($configdata['showgroupviews']) && isset($groupviews)) {
......
......@@ -103,7 +103,7 @@ class PluginBlocktypeGroupViews extends SystemBlocktype {
$dwoo->assign('group', $data['group']);
$dwoo->assign('groupid', $data['group']->id);
$baseurl = $instance->get_view()->get_url();
$baseurl .= (strpos($baseurl, '?') === false ? '?' : '&') . 'group=' . $groupid;
$baseurl .= (strpos($baseurl, '?') === false ? '?' : '&') . 'group=' . $groupid . '&editing=' . $editing;
if (!empty($configdata['showgroupviews']) && isset($data['groupviews'])) {
$groupviews = (array)$data['groupviews'];
......
......@@ -21,9 +21,11 @@ require(dirname(dirname(dirname(__FILE__))) . '/init.php');
safe_require('blocktype', 'groupviews');
require_once(get_config('libroot') . 'view.php');
require_once(get_config('libroot') . 'group.php');
require_once(get_config('libroot') . 'pieforms/pieform.php');
$offset = param_integer('offset', 0);
$groupid = param_integer('group');
$editing = param_boolean('editing', false);
$group_homepage_view = group_get_homepage_view($groupid);
$bi = group_get_homepage_view_groupview_block($groupid);
......@@ -33,22 +35,45 @@ if (!can_view_view($group_homepage_view)) {
}
$configdata = $bi->get('configdata');
if (!isset($configdata['showsharedcollections'])) {
$configdata['showsharedcollections'] = 1;
}
$limit = isset($configdata['count']) ? intval($configdata['count']) : 5;
$limit = ($limit > 0) ? $limit : 5;
$sharedcollections = (array) View::get_sharedcollections_data(
$limit,
$offset,
$groupid,
($configdata['showsharedcollections'] == 2 ? true : false)
);
// Find out what order to sort them by (default is titles)
if (!isset($configdata['sortsharedviewsby']) || $configdata['sortsharedviewsby'] == PluginBlocktypeGroupViews::SORTBY_TITLE) {
$sortsharedcollectionsby = array(array('column'=>'c.name'));
}
else {
$sortsharedcollectionsby = array(
array(
'column'=>'GREATEST(c.mtime, (SELECT MAX(v.mtime) FROM {view} v INNER JOIN {collection_view} cv ON v.id=cv.view WHERE cv.collection=c.id))',
'desc' => true
)
);
}
// For group members, display a list of collections that others have
// shared to the group
if (empty($configdata['showsharedcollections'])) {
$sharedcollections = array(
'data' => array(),
'count' => 0,
'limit' => $limit,
'offset' => 0
);
}
else {
$sharedcollections = (array) View::get_sharedcollections_data(
$limit,
$offset,
$groupid,
($configdata['showsharedcollections'] == 2 ? false : true),
$sortsharedcollectionsby
);
}
if (!empty($configdata['showsharedcollections']) && isset($sharedcollections)) {
$baseurl = $group_homepage_view->get_url();
$baseurl .= (strpos($baseurl, '?') === false ? '?' : '&') . 'group=' . $groupid;
$baseurl .= (strpos($baseurl, '?') === false ? '?' : '&') . 'group=' . $groupid . '&editing=' . $editing;
$pagination = array(
'baseurl' => $baseurl,
'id' => 'sharedcollections_pagination',
......
......@@ -21,9 +21,11 @@ require(dirname(dirname(dirname(__FILE__))) . '/init.php');
safe_require('blocktype', 'groupviews');
require_once(get_config('libroot') . 'view.php');
require_once(get_config('libroot') . 'group.php');
require_once(get_config('libroot') . 'pieforms/pieform.php');
$offset = param_integer('offset', 0);
$groupid = param_integer('group');
$editing = param_boolean('editing', false);
$group_homepage_view = group_get_homepage_view($groupid);
$bi = group_get_homepage_view_groupview_block($groupid);
......@@ -33,27 +35,44 @@ if (!can_view_view($group_homepage_view)) {
}
$configdata = $bi->get('configdata');
if (!isset($configdata['showsharedviews'])) {
$configdata['showsharedviews'] = 1;
}
$limit = isset($configdata['count']) ? intval($configdata['count']) : 5;
$limit = ($limit > 0) ? $limit : 5;
// Find out what order to sort them by (default is titles)
if (!isset($configdata['sortsharedviewsby']) || $configdata['sortsharedviewsby'] == PluginBlocktypeGroupViews::SORTBY_TITLE) {
$sortsharedviewsby = 'v.title';
}
else {
$sortsharedviewsby = 'v.mtime DESC';
}
$sharedviews = (array) View::get_sharedviews_data(
$limit,
$offset,
$groupid,
($configdata['showsharedviews'] == 2 ? false : true)
);
foreach ($sharedviews['data'] as &$view) {
if (isset($view['template']) && $view['template']) {
$view['form'] = pieform(create_view_form($group_homepage_view, null, $view->id));
// For group members, display a list of views that others have
// shared to the group
if (empty($configdata['showsharedviews'])) {
$sharedviews = array(
'data' => array(),
'count' => 0,
'limit' => $limit,
'offset' => 0
);
}
else {
$sharedviews = (array) View::get_sharedviews_data(
$limit,
$offset,
$groupid,
($configdata['showsharedviews'] == 2 ? false : true),
$sortsharedviewsby
);
foreach ($sharedviews['data'] as &$view) {
if (!$editing && isset($view['template']) && $view['template']) {
$view['form'] = pieform(create_view_form($group, null, $view->id));
}
}
}
if (!empty($configdata['showsharedviews']) && isset($sharedviews)) {
$baseurl = $group_homepage_view->get_url();
$baseurl .= (strpos($baseurl, '?') === false ? '?' : '&') . 'group=' . $groupid;
$baseurl .= (strpos($baseurl, '?') === false ? '?' : '&') . 'group=' . $groupid . '&editing=' . $editing;
$pagination = array(
'baseurl' => $baseurl,
'id' => 'sharedviews_pagination',
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment