use Galette\Repository\Groups;
use \Analog\Analog;
-$showPublicPages = function ($request, $response, $next) use ($container, &$session) {
+$showPublicPages = function ($request, $response, $next) use ($container) {
$login = $container->login;
$preferences = $container->preferences;
$app->group(__('/public', 'routes'), function () {
//public members list
$this->get(
- __('/members', 'routes'),
+ __('/members', 'routes') . '[/{option:' . __('page', 'routes') . '|' . __('order', 'routes') . '}/{value:\d+}]',
function ($request, $response) {
- if (isset($this->session->public_filters_members)) {
- $filters = $this->session->public_filters_members;
- } else {
- $filters = new MembersList();
+ $option = null;
+ if (isset($args['option'])) {
+ $option = $args['option'];
}
-
- /*// Filters
- if (isset($_GET['page'])) {
- $filters->current_page = (int)$_GET['page'];
+ $value = null;
+ if (isset($args['value'])) {
+ $value = $args['value'];
}
- if ( isset($_GET['clear_filter']) ) {
- $filters->reinit();
+ if (isset($this->session->public_filter_members)) {
+ $filters = $this->session->public_filter_members;
+ } else {
+ $filters = new MembersList();
}
- //numbers of rows to display
- if ( isset($_GET['nbshow']) && is_numeric($_GET['nbshow'])) {
- $filters->show = $_GET['nbshow'];
+ if ($option !== null) {
+ switch ($option) {
+ case __('page', 'routes'):
+ $filters->current_page = (int)$value;
+ break;
+ case __('order', 'routes'):
+ $filters->orderby = $value;
+ break;
+ }
}
- // Sorting
- if ( isset($_GET['tri']) ) {
- $filters->orderby = $_GET['tri'];
- }*/
-
-
$m = new Members();
$members = $m->getPublicList(false, null);
- $session = $this->session;
- $session->public_filters_members = $filters;
- $this->session = $session;
+ $this->session->public_filter_members = $filters;
//assign pagination variables to the template and add pagination links
$filters->setSmartyPagination($this->router, $this->view->getSmarty(), false);
);
return $response;
}
- )->setName('public_members');
+ )->setName('publicMembers');
+
+ //members list filtering
+ $this->post(
+ __('/members/filter', 'routes') . '[/{from}]',
+ function ($request, $response, $args) {
+ $post = $request->getParsedBody();
+ if (isset($this->session->public_filter_members)) {
+ $filters = $this->session->public_filter_members;
+ } else {
+ $filters = new MembersList();
+ }
+
+ //reintialize filters
+ if (isset($post['clear_filter'])) {
+ $filters->reinit();
+ } else {
+ //number of rows to show
+ if (isset($post['nbshow'])) {
+ $filters->show = $post['nbshow'];
+ }
+ }
+
+ $this->session->public_filter_members = $filters;
+
+ return $response
+ ->withStatus(301)
+ ->withHeader('Location', $this->router->pathFor('publicMembers'));
+ }
+ )->setName('filterPublicMemberslist');
//public trombinoscope
$this->get(
);
return $response;
}
- )->setName('public_trombinoscope');
+ )->setName('publicTrombinoscope');
})->add($showPublicPages);
{block name="content"}
{if $members|@count > 0}
<p>{_T string="This page shows only members who have choosen to be visible on the public lists and are up-to-date within their contributions. If you want your account to be visible here, edit your profile and check 'Be visible in the members list'"}</p>
- <form action="liste_membres.php" method="get" id="filtre">
+ <form action="{path_for name="filterPublicMemberslist"}" method="POST" id="filtre">
<table class="infoline">
<tr>
<td class="left">{$nb_members} {if $nb_members != 1}{_T string="members"}{else}{_T string="member"}{/if}</td>
<tr>
<th class="left">
- <a href="?tri={Galette\Repository\Members::ORDERBY_NAME}" class="listing">
+ <a href="{path_for name="publicMembers" data=["option" => {_T string="order" domain="routes"}, "value" => {Galette\Repository\Members::ORDERBY_NAME}]}" class="listing">
{_T string="Name"}
{if $filters->orderby eq constant('Galette\Repository\Members::ORDERBY_NAME')}
{if $filters->ordered eq constant('Galette\Filters\MembersList::ORDER_ASC')}
</a>
</th>
<th class="left">
- <a href="?tri={Galette\Repository\Members::ORDERBY_NICKNAME}" class="listing">
+ <a href="{path_for name="publicMembers" data=["option" => {_T string="order" domain="routes"}, "value" => {Galette\Repository\Members::ORDERBY_NICKNAME}]}" class="listing">
{_T string="Nickname"}
{if $filters->orderby eq constant('Galette\Repository\Members::ORDERBY_NICKNAME')}
{if $filters->ordered eq constant('Galette\Filters\MembersList::ORDER_ASC')}
</th>
{/if}
<th class="left">
- <a href="?tri=infos" class="listing">{_T string="Informations"}</a>
+ {_T string="Informations"}
</th>
</tr>
</thead>
<div id="infobox">{_T string="No member to show"}</div>
{/if}
{/block}
+
{block name="javascripts"}
{if $members|@count > 0}
<script type="text/javascript">