Skip to content

Commit

Permalink
Updated pagination
Browse files Browse the repository at this point in the history
  • Loading branch information
rmathis committed Mar 5, 2021
1 parent e49555a commit e6f473f
Show file tree
Hide file tree
Showing 6 changed files with 177 additions and 114 deletions.
4 changes: 2 additions & 2 deletions Controller/GrouperGroupsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ class GrouperGroupsController extends GrouperLiteAppController
//page navigation unless change record count and go back to lower number on Display record selection!! Sucks!
public $paginate = array(
//Default records per page.
'limit' => 20,
'maxlimit' => 60,
'limit' => 2,
'maxlimit' => 4,
'page' => 1
);

Expand Down
2 changes: 2 additions & 0 deletions Lib/lang.php
Original file line number Diff line number Diff line change
Expand Up @@ -84,4 +84,6 @@
'pl.grouperlite.form.group.action.save' => 'Save Group',

'pl.grouperlite.search.tags.text' => 'Search',

'pl.grouperlite.pagination.counter' => 'Viewing {:start}-{:end} of {:count}'
);
206 changes: 107 additions & 99 deletions View/Elements/pagination.ctp
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<?php

/**
* COmanage Registry Pagination
*
Expand Down Expand Up @@ -26,108 +27,115 @@
*/
?>

<div id="pagination">
<span class="paginationCounter">
<?php
// pagination information
print $this->Paginator->counter(array(
'format' => _txt('in.pagination.format')
));
?>
</span>
<?php if($this->Paginator->hasPage(2)): ?>
<span class="paginationFirst">
<?php
// Shows the first link
print $this->Paginator->first(_txt('op.first'));
?>
</span>
<span class="paginationPrev">
<?php
// Shows the previous link
print $this->Paginator->prev(
_txt('op.previous'),
null,
null,
array('class' => 'disabled')
);
?>
</span>
<span class="paginationNumbers">
<?php
// Shows the page numbers
print $this->Paginator->numbers();
?>
</span>
<span class="paginationNext">
<?php
// Shows the next link
print $this->Paginator->next(
_txt('op.next'),
null,
null,
array('class' => 'disabled')
);
?>
</span>
<span class="paginationLast">
<?php
// Shows the last link
print $this->Paginator->last(_txt('op.last'));
?>
</span>
<?php endif; ?>
<?php

<?php if($this->Paginator->hasPage(2)): ?>
<?php
// show the Goto page form if there is more than 1 page
?>
<form id="goto-page"
class="pagination-form"
method="get"
onsubmit="gotoPage(this.pageNum.value,
<?php print $this->Paginator->counter('{:pages}');?>,
'<?php print _txt('er.pagenum.nan');?>',
'<?php print _txt('er.pagenum.exceeded', array($this->Paginator->counter('{:pages}')));?>');
$includeCounter = isset($counter) ? $counter : true;
$includeNumbers = isset($numbers) ? $numbers : true;
$includeLimit = isset($limit) ? $limit : true;
$includeGoto = isset($goto) ? $goto : true;

?>

<div class="pagination d-flex justify-content-start align-items-center">
<?php if ($includeCounter) : ?>
<div class="pagination-element pagination-counter muted">
<?php
// pagination information
print $this->Paginator->counter(array(
'format' => _txt(is_string($counter) ? $counter : 'pl.grouperlite.pagination.counter')
));
?>
</div>
<?php endif; ?>

<?php if ($includeNumbers && $this->Paginator->hasPage(2)) : ?>
<div class="pagination-element pagination-numbers d-flex align-items-center">
<div class="pagination-first pagination-numbers-link"><?php print $this->Paginator->first(_txt('op.first')); ?></div>
<div class="pagination-prev pagination-numbers-link">
<?php
// Shows the previous link
print $this->Paginator->prev(
_txt('op.previous'),
null,
null,
array('class' => 'disabled')
);
?>
</div>
<div class="pagination-numbers-list">
<?php
// Shows the page numbers
print $this->Paginator->numbers(array(
'separator' => '',
'class' => 'pagination-numbers-item'
));
?>
</div>
<div class="pagination-next pagination-numbers-link">
<?php
// Shows the next link
print $this->Paginator->next(
_txt('op.next'),
null,
null,
array('class' => 'disabled')
);
?>
</div>
<div class="pagination-last pagination-numbers-link ">
<?php
// Shows the last link
print $this->Paginator->last(_txt('op.last'));
?>
</div>
</div>
<?php endif; ?>

<?php if ($includeGoto && $this->Paginator->hasPage(2)) : ?>
<?php
// show the Goto page form if there is more than 1 page
?>
<form id="goto-page" class="pagination-form pagination-element pagination-goto" method="get" onsubmit="gotoPage(this.pageNum.value,
<?php print $this->Paginator->counter('{:pages}'); ?>,
'<?php print _txt('er.pagenum.nan'); ?>',
'<?php print _txt('er.pagenum.exceeded', array($this->Paginator->counter('{:pages}'))); ?>');
return false;">
<label for="pageNum"><?php print _txt('fd.page.goto'); ?></label>
<input type="text" size="3" name="pageNum" id="pageNum"/>
<input type="submit" value="<?php print _txt('op.go'); ?>"/>
</form>
<?php endif; ?>
<label for="pageNum"><?php print _txt('fd.page.goto'); ?></label>
<input type="text" size="3" name="pageNum" id="pageNum" />
<input type="submit" value="<?php print _txt('op.go'); ?>" />
</form>
<?php endif; ?>

<?php
<?php
// Provide a form for setting the page limit.
// Default is 25 records, current maximum is 100.
// For now we will simply hard-code the options from 25 - 100.
?>
<script type="text/javascript">
var recordCount = '<?php print $this->Paginator->params()['count']; ?>';
var currentPage = '<?php print $this->Paginator->params()['page']; ?>';
var currentLimit = '<?php print $this->Paginator->params()['limit']; ?>';
var currentPath = '<?php print filter_var($this->request->here,FILTER_SANITIZE_SPECIAL_CHARS); ?>';
var currentAction = '<?php print filter_var($this->request->action,FILTER_SANITIZE_SPECIAL_CHARS); ?>';
</script>

<form id="limit-page"
class="pagination-form"
method="get"
onsubmit="limitPage(this.pageLimit.value,recordCount,currentPage,currentPath,currentAction); return false;">
<label for="pageLimit"><?php print _txt('fd.page.limit.display'); ?></label>
<select name="pageLimit" id="pageLimit">
<option value="20">20</option>
<option value="40">40</option>
<option value="60">60</option>
</select>
<?php print _txt('fd.page.limit.records'); ?>
<input type="submit" value="<?php print _txt('op.go'); ?>"/>
<script type="text/javascript">
$(function() {
// Check if the currentLimit holds an appropriate value on first load, and set the select option
if (currentLimit != '' && (currentLimit == '20' || currentLimit == '40' || currentLimit == '60')) {
$("#pageLimit").val(currentLimit);
}
});
</script>
</form>
</div>
?>
<?php if ($includeLimit !== false) : ?>
<script type="text/javascript">
var recordCount = '<?php print $this->Paginator->params()['count']; ?>';
var currentPage = '<?php print $this->Paginator->params()['page']; ?>';
var currentLimit = '<?php print $this->Paginator->params()['limit']; ?>';
var currentPath = '<?php print filter_var($this->request->here, FILTER_SANITIZE_SPECIAL_CHARS); ?>';
var currentAction = '<?php print filter_var($this->request->action, FILTER_SANITIZE_SPECIAL_CHARS); ?>';
</script>
<form id="limit-page" class="pagination-form pagination-element pagination-limit d-flex align-items-center" method="get" onsubmit="limitPage(this.pageLimit.value,recordCount,currentPage,currentPath,currentAction); return false;">
<label for="pageLimit"><?php print _txt('fd.page.limit.display'); ?></label>
<select name="pageLimit" id="pageLimit">
<option value="2">2</option>
<option value="4">4</option>
<option value="6">6</option>
</select>
<p class=""><?php print _txt('fd.page.limit.records'); ?></p>
<input type="submit" value="<?php print _txt('op.go'); ?>" class="btn btn-primary-light" />
<script type="text/javascript">
$(function() {
// Check if the currentLimit holds an appropriate value on first load, and set the select option
if (currentLimit != '' && (currentLimit == '2' || currentLimit == '4' || currentLimit == '6')) {
$("#pageLimit").val(currentLimit);
}
});
</script>
</form>
<?php endif; ?>
</div>
16 changes: 8 additions & 8 deletions View/GrouperGroups/emaillistsoptin.ctp
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@
<tbody>
<tr>
<td><?php echo $this->Html->link(
isset($group['name']) ? $group['domain'].':'.$group['name'] : "No Name",
array(
'controller' => 'groupergroups',
'action' => 'emaillistinfo',
'?' => array('groupname' => urlencode($group['name']))
)
) ?></td>
isset($group['name']) ? $group['domain'] . ':' . $group['name'] : "No Name",
array(
'controller' => 'groupergroups',
'action' => 'emaillistinfo',
'?' => array('groupname' => urlencode($group['name']))
)
) ?></td>
<td><?php echo isset($group['description']) ? $group['description'] : _txt('pl.grouperlite.value.descr.zerostate'); ?></td>
<td class="text-center">
<button class="btn btn-raised btn-success" type="submit">
Expand All @@ -32,4 +32,4 @@
</tr>
</tbody>
</table>
</div>
</div>
7 changes: 6 additions & 1 deletion View/GrouperGroups/groupoptin.ctp
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,12 @@
<tfoot>
<tr>
<th colspan="5">
<?php print $this->element("pagination"); ?>
<?php print $this->element( "pagination", array(
'goto' => false,
'limit' => true,
'numbers' => true,
'counter' => true
)); ?>
</th>
</tr>
</tfoot>
Expand Down
56 changes: 52 additions & 4 deletions webroot/css/co-grouper-plugin.css
Original file line number Diff line number Diff line change
Expand Up @@ -205,10 +205,58 @@ a.list-group-item-action:hover .fa {
opacity: 1;
}

.grouper #pagination {
background: var(--primary);
}

.grouper #pagination label {
margin-bottom: 0;
}

.grouper .pagination {
margin: 0;
background-color: var(--primary);
color: white;
padding: 2px;
}

.grouper .pagination a {
color: white;
}

.grouper .pagination .pagination-element:not(.pagination-numbers):not(.pagination-limit) {
border-right: 1px solid rgba(255, 255, 255, 0.5);
padding: 0.5rem 3rem;
}

.grouper .pagination .pagination-element.pagination-limit {
padding: 0 3rem;
}

.grouper .pagination .pagination-element.pagination-numbers .pagination-numbers-list>span {
border-right: 1px solid rgba(255, 255, 255, 0.5);
padding: 0.5rem 1rem;
}

.grouper .pagination .pagination-element.pagination-numbers .pagination-numbers-link:not(:empty) {
border-right: 1px solid rgba(255, 255, 255, 0.5);
padding: 0.5rem 1rem;
}

.grouper .pagination .pagination-element.pagination-numbers .pagination-numbers-list .current.pagination-numbers-item {
background: white;
color: var(--primary);
}

.grouper .pagination .pagination-element.pagination-form * {
margin: 0 0.5rem 0 0;
}

.grouper .pagination .btn {
padding: 0.2rem 1rem;
filter: brightness(120%);
}

.grouper .pagination label {
margin: 0;
}

.grouper .pagination .muted {
color: rgba(255, 255, 255, 0.8);
}

0 comments on commit e6f473f

Please sign in to comment.