]> git.agnieray.net Git - galette.git/commitdiff
Public pages filtering
authorJohan Cwiklinski <johan@x-tnd.be>
Tue, 15 Nov 2016 06:10:24 +0000 (07:10 +0100)
committerJohan Cwiklinski <johan@x-tnd.be>
Tue, 15 Nov 2016 06:12:26 +0000 (07:12 +0100)
galette/includes/main.inc.php
galette/includes/routes/public_pages.routes.php
galette/templates/default/liste_membres.tpl
galette/templates/default/page.tpl
galette/templates/default/public_page.tpl

index 96d3f589b1202a28a3478390c08bbfedd62369ff..1af7db3bce3fbe6a6ab3dd3ecd84c64a4e4466bb 100644 (file)
@@ -445,8 +445,9 @@ $app->add(function ($request, $response, $next) {
 
         $missing_acls = [];
         $excluded_names = [
-            'public_members',
-            'public_trombinoscope'
+            'publicMembers',
+            'filterPublicMemberslist',
+            'publicTrombinoscope'
         ];
         foreach ($routes as $route) {
             $name = $route->getName();
@@ -490,8 +491,8 @@ $app->add(function ($request, $response, $next) {
             $named_routes = $app->router()->getNamedRoutes();
             $missing_acls = [];
             $excluded_names = [
-                'public_members',
-                'public_trombinoscope'
+                'publicMembers',
+                'publicTrombinoscope'
             ];
             foreach ( $named_routes as $name=>$route ) {
                 //check if route has $authenticate middleware
index 52b7086a0984bab7c715ad5abcf6e014fe56ffcd..fbf9e6339276a0b410ff39d6a3fb3c05a39cbe48 100644 (file)
@@ -45,7 +45,7 @@ use Galette\Filters\MembersList;
 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;
 
@@ -66,40 +66,38 @@ $showPublicPages = function ($request, $response, $next) use ($container, &$sess
 $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);
@@ -117,7 +115,36 @@ $app->group(__('/public', 'routes'), function () {
             );
             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(
@@ -139,5 +166,5 @@ $app->group(__('/public', 'routes'), function () {
             );
             return $response;
         }
-    )->setName('public_trombinoscope');
+    )->setName('publicTrombinoscope');
 })->add($showPublicPages);
index 6c15af2d6df598352f6bab210d05f53935210fbe..d51fa39cdef5e36f700e365f701343ed1970789d 100644 (file)
@@ -2,7 +2,7 @@
 {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>
@@ -21,7 +21,7 @@
 
                 <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')}
@@ -33,7 +33,7 @@
                         </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')}
@@ -50,7 +50,7 @@
                     </th>
                     {/if}
                     <th class="left">
-                        <a href="?tri=infos" class="listing">{_T string="Informations"}</a>
+                        {_T string="Informations"}
                     </th>
                 </tr>
             </thead>
@@ -95,6 +95,7 @@
     <div id="infobox">{_T string="No member to show"}</div>
 {/if}
 {/block}
+
 {block name="javascripts"}
     {if $members|@count > 0}
         <script type="text/javascript">
index cc77b459b64be3f96f414134b308133a7cae4f13..fb9d1b581df6d015d4d47d4617e1c31fa1c15d5a 100644 (file)
@@ -138,8 +138,8 @@ We have to use a template file, so Smarty will do its work (like replacing varia
 {if $preferences->showPublicPages($login) eq true}
         <h1 class="nojs">{_T string="Public pages"}</h1>
         <ul>
-            <li><a href="{path_for name="public_members"}" title="{_T string="Members list"}">{_T string="Members list"}</a></li>
-            <li><a href="{path_for name="public_trombinoscope"}" title="{_T string="Trombinoscope"}">{_T string="Trombinoscope"}</a></li>
+            <li><a href="{path_for name="publicMembers"}" title="{_T string="Members list"}">{_T string="Members list"}</a></li>
+            <li><a href="{path_for name="publicTrombinoscope"}" title="{_T string="Trombinoscope"}">{_T string="Trombinoscope"}</a></li>
             {* Include plugins menu entries *}
             {$plugins->getPublicMenus($tpl)}
         </ul>
index e8fdb0c3fe7b6db74fd76899c9cab091f925ecfd..22a2d5439ace66d19bf45f04e122cead386c4184 100644 (file)
@@ -67,8 +67,8 @@ We have to use a template file, so Smarty will do its work (like replacing varia
         {/if}
     {/if}
     {if $preferences->showPublicPages($login) eq true}
-            <a id="memberslist" class="button{if $cur_route eq "public_members"} selected{/if}" href="{path_for name="public_members"}" title="{_T string="Members list"}">{_T string="Members list"}</a>
-            <a id="trombino" class="button{if $cur_route eq "public_trombinoscope"} selected{/if}" href="{path_for name="public_trombinoscope"}" title="{_T string="Trombinoscope"}">{_T string="Trombinoscope"}</a>
+            <a id="memberslist" class="button{if $cur_route eq "publicMembers"} selected{/if}" href="{path_for name="publicMembers"}" title="{_T string="Members list"}">{_T string="Members list"}</a>
+            <a id="trombino" class="button{if $cur_route eq "publicTrombinoscope"} selected{/if}" href="{path_for name="publicTrombinoscope"}" title="{_T string="Trombinoscope"}">{_T string="Trombinoscope"}</a>
             {* Include plugins menu entries *}
             {$plugins->getPublicMenus($tpl, true)}
     {/if}