//members list
$app->get(
- '/members',
+ '/members(/:option/:value)',
$authenticate($app),
- function () use ($app, $login, &$session) {
- /*if ( isset($session['filters']['members'])
- && !isset($_POST['mailing'])
- && !isset($_POST['mailing_new'])
- ) {*/
+ function ($option = null, $value = null) use (
+ $app, $login, &$session
+ ) {
if ( isset($session['filters']['members']) ) {
$filters = unserialize($session['filters']['members']);
} else {
$filters = new MembersList();
}
+ if ( $option !== null ) {
+ switch ( $option ) {
+ case 'page':
+ $filters->current_page = (int)$value;
+ break;
+ case 'order':
+ $filters->orderby = $value;
+ break;
+ }
+ }
+
$members = new Members($filters);
$members_list = array();
$groups = new Groups();
$groups_list = $groups->getList();
- $session['filters']['members'] = serialize($filters);
-
- $smarty = $app->view()->getInstance();
+ $view = $app->view();
+ $smarty = $view->getInstance();
//assign pagination variables to the template and add pagination links
- $filters->setSmartyPagination($smarty);
+ $filters->setSmartyPagination($app, $view, false);
+ $filters->setViewCommonsFilters($view);
+
+ $session['filters']['members'] = serialize($filters);
$app->render(
'gestion_adherents.tpl',
'filter_groups_options' => $groups_list,
'nb_members' => $members->getCount(),
'filters' => $filters,
- 'filter_field_options' => array(
- Members::FILTER_NAME => _T("Name"),
- Members::FILTER_COMPANY_NAME => _T("Company name"),
- Members::FILTER_ADDRESS => _T("Address"),
- Members::FILTER_MAIL => _T("Email,URL,IM"),
- Members::FILTER_JOB => _T("Job"),
- Members::FILTER_INFOS => _T("Infos")
- ),
- 'filter_membership_options' => array(
- 0 => _T("All members"),
- 3 => _T("Up to date members"),
- 1 => _T("Close expiries"),
- 2 => _T("Latecomers"),
- 4 => _T("Never contributed"),
- 5 => _T("Staff members"),
- 6 => _T("Administrators")
- ),
- 'filter_accounts_options' => array(
- 0 => _T("All accounts"),
- 1 => _T("Active accounts"),
- 2 => _T("Inactive accounts")
- )
+ 'adv_filters' => $filters instanceof AdvancedMembersList
)
);
}
-)->name('members');
+)->name(
+ 'members'
+)->conditions(
+ array(
+ 'option' => '(page|order)',
+ 'value' => '\d+'
+ )
+);
//members list filtering
$app->post(
) {
$filters->group_filter = (int)$request->post('group_filter');
}
+ //number of rows to show
+ if ( $request->post('nbshow') !== null ) {
+ $filters->show = $request->post('nbshow');
+ }
}
$session['filters']['members'] = serialize($filters);
namespace Galette\Core;
+use Slim\Slim;
use Analog\Analog;
/**
* Creates pagination links and assign some usefull variables to the
* Smarty template
*
- * @param Smarty $tpl Smarty template
+ * @param Slim $app Application instance
+ * @param Smarty $view View instance
* @param boolean $restricted Do not permit to display all
*
* @return void
*/
- public function setSmartyPagination($tpl, $restricted = true)
+ public function setSmartyPagination(Slim $app, Smarty $view, $restricted = true)
{
$paginate = null;
- $tabs = "\t\t\t\t\t\t";
//Create pagination links
if ( $this->current_page < 11 ) {
$previous = $this->current_page - 1;
if ( $this->current_page != 1 ) {
- $paginate .= "\n" . $tabs . "<li><a href=\"?page=1\" title=\"" .
- _T("First page") . "\"><<</a></li>\n";
- $paginate .= $tabs . "<li><a href=\"?page=" . $previous . "\" title=\"" .
- preg_replace("(%i)", $previous, _T("Previous page (%i)")) .
- "\"><</a></li>\n";
+ $paginate .= $this->_getLink(
+ '<<',
+ $this->_getHref($app, 1),
+ preg_replace("(%i)", $next, _T("First page"))
+ );
+
+ $paginate .= $this->_getLink(
+ '<',
+ $this->_getHref($app, $previous),
+ preg_replace("(%i)", $previous, _T("Previous page (%i)"))
+ );
}
for ( $i = $idepart ; $i <= $ifin ; $i++ ) {
if ( $i == $this->current_page ) {
- $paginate .= $tabs . "<li class=\"current\"><a href=\"#\" title=\"" .
- preg_replace("(%i)", $this->current_page, _T("Current page (%i)")) .
- "\">- $i -</a></li>\n";
+ $paginate .= $this->_getLink(
+ "- $i -",
+ $this->_getHref($app, $this->current_page),
+ preg_replace(
+ "(%i)",
+ $this->current_page,
+ _T("Current page (%i)")
+ ),
+ true
+ );
} else {
- $paginate .= $tabs . "<li><a href=\"?page=" . $i . "\" title=\"" .
- preg_replace("(%i)", $i, _T("Page %i")) . "\">" . $i . "</a></li>\n";
+ $paginate .= $this->_getLink(
+ $i,
+ $this->_getHref($app, $i),
+ preg_replace("(%i)", $i, _T("Page %i"))
+ );
}
}
if ($this->current_page != $this->pages ) {
- $paginate .= $tabs . "<li><a href=\"?page=" . $next . "\" title=\"" .
- preg_replace("(%i)", $next, _T("Next page (%i)")) . "\">></a></li>\n";
- $paginate .= $tabs . "<li><a href=\"?page=" . $this->pages . "\" title=\"" .
- preg_replace("(%i)", $this->pages, _T("Last page (%i)")) .
- "\">>></a></li>\n";
- }
+ $paginate .= $this->_getLink(
+ '>',
+ $this->_getHref($app, $next),
+ preg_replace("(%i)", $next, _T("Next page (%i)"))
+ );
- //Now, we assign common variables to Smarty template
- $tpl->assign('nb_pages', $this->pages);
- $tpl->assign('page', $this->current_page);
- $tpl->assign('numrows', $this->show);
- $tpl->assign('pagination', $paginate);
+ $paginate .= $this->_getLink(
+ '>>',
+ $this->_getHref($app, $this->pages),
+ preg_replace("(%i)", $this->pages, _T("Last page (%i)"))
+ );
+ }
$options = array(
10 => "10",
$options[0] = _T("All");
}
- $tpl->assign(
- 'nbshow_options',
- $options
+ //Now, we assign common variables to Smarty template
+ $view->setData(
+ array(
+ 'nb_pages' => $this->pages,
+ 'page' => $this->current_page,
+ 'numrows' => $this->show,
+ 'pagination' => $paginate,
+ 'nbshow_options' => $options
+ )
+ );
+ }
+
+ /**
+ * Get a pagination link
+ *
+ * @param string $content Links content
+ * @param string $url URL the link to point on
+ * @param string $title Link's title
+ * @param bool $current Is current page
+ *
+ * @return string
+ */
+ private function _getLink($content, $url, $title, $current = false)
+ {
+ $tabs = "\t\t\t\t\t\t";
+ $link = $tabs . "<li";
+ if ( $current === true ) {
+ $link .= " class=\"current\" ";
+ }
+ $link .= "><a href=\"" . $url . "\" " .
+ "title=\"" . $title . "\">" . $content . "</a></li>\n";
+ return $link;
+ }
+
+ /**
+ * Build href
+ *
+ * @param Slim $app Application instance
+ * @param int $page Page
+ *
+ * @return string
+ */
+ private function _getHref($app, $page)
+ {
+ $view = $app->view();
+ $href = $app->urlFor(
+ $view->getData('cur_route'), [
+ 'option' => 'page',
+ 'value' => $page
+ ]
);
+ return $href;
}
/**
namespace Galette\Filters;
use Analog\Analog;
+use Galette\Core\Smarty;
use Galette\Core\Pagination;
use Galette\Entity\Group;
use Galette\Repository\Members;
*
* @return void
*/
- public function setTplCommonsFilters($prefs, $tpl)
+ public function setViewCommonsFilters($prefs, Smarty $view)
{
$filter_options = array(
Members::FILTER_NAME => _T("Name"),
$filter_options[Members::FILTER_NUMBER] = _T("Member number");
}
- $tpl->assign(
+ $view->setData(
'filter_field_options',
$filter_options
);
- $tpl->assign(
+ $view->setData(
'filter_membership_options',
array(
Members::MEMBERSHIP_ALL => _T("All members"),
)
);
- $tpl->assign(
+ $view->setData(
'filter_accounts_options',
array(
Members::ALL_ACCOUNTS => _T("All accounts"),
<th class="id_row">#</th>
{/if}
<th class="left">
- <a href="gestion_adherents.php?tri={php}echo Galette\Repository\Members::ORDERBY_NAME;{/php}">
+ <a href="{urlFor name="members" options=["option" => 'order', "value" => "Galette\Repository\Members::ORDERBY_NAME"|constant]}">
{_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="gestion_adherents.php?tri={php}echo Galette\Repository\Members::ORDERBY_NICKNAME;{/php}">
+ <a href="{urlFor name="members" options=["option" => 'order', "value" => "Galette\Repository\Members::ORDERBY_NICKNAME"|constant]}">
{_T string="Nickname"}
{if $filters->orderby eq constant('Galette\Repository\Members::ORDERBY_NICKNAME')}
{if $filters->ordered eq constant('Galette\Filters\MembersList::ORDER_ASC')}
</a>
</th>
<th class="left">
- <a href="gestion_adherents.php?tri={php}echo Galette\Repository\Members::ORDERBY_STATUS;{/php}">
+ <a href="{urlFor name="members" options=["option" => 'order', "value" => "Galette\Repository\Members::ORDERBY_STATUS"|constant]}">
{_T string="Status"}
{if $filters->orderby eq constant('Galette\Repository\Members::ORDERBY_STATUS')}
{if $filters->ordered eq constant('Galette\Filters\MembersList::ORDER_ASC')}
</th>
{if $login->isAdmin() or $login->isStaff()}
<th class="left">
- <a href="gestion_adherents.php?tri={php}echo Galette\Repository\Members::ORDERBY_FEE_STATUS;{/php}">
+ <a href="{urlFor name="members" options=["option" => 'order', "value" => "Galette\Repository\Members::ORDERBY_FEE_STATUS"|constant]}">
{_T string="State of dues"}
{if $filters->orderby eq constant('Galette\Repository\Members::ORDERBY_FEE_STATUS')}
{if $filters->ordered eq constant('Galette\Filters\MembersList::ORDER_ASC')}
</a>
</th>
<th class="left">
- <a href="gestion_adherents.php?tri={php}echo Galette\Repository\Members::ORDERBY_MODIFDATE;{/php}">
+ <a href="{urlFor name="members" options=["option" => 'order', "value" => "Galette\Repository\Members::ORDERBY_MODIFDATE"|constant]}">
{_T string="Modified"}
{if $filters->orderby eq constant('Galette\Repository\Members::ORDERBY_MODIFDATE')}
{if $filters->ordered eq constant('Galette\Filters\MembersList::ORDER_ASC')}