]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
stockage de la vue et du tri en session
authornicosomb <nicolas@loeuillet.org>
Tue, 16 Apr 2013 09:52:25 +0000 (11:52 +0200)
committernicosomb <nicolas@loeuillet.org>
Tue, 16 Apr 2013 09:52:25 +0000 (11:52 +0200)
inc/config.php
inc/functions.php
index.php
js/poche.js
process.php [deleted file]
tpl/entries.html [new file with mode: 0644]
tpl/footer.html
tpl/home.html

index 84b86998de69754dfb8b70a7ee10cb5fb2f4b0ee..4c1978b545153e9a7e063ebc1285d0b2cbfff418 100644 (file)
@@ -17,6 +17,7 @@ require_once 'rain.tpl.class.php';
 
 $db = new db(DB_PATH);
 
+# Initialisation de RainTPL
 raintpl::$tpl_dir   = './tpl/';
 raintpl::$cache_dir = './cache/';
 raintpl::$base_url  = get_poche_url();
@@ -24,10 +25,23 @@ raintpl::configure('path_replace', false);
 raintpl::configure('debug', false);
 $tpl = new raintpl();
 
+# Démarrage session et initialisation du jeton de sécurité
 session_start();
 
 if (!isset($_SESSION['token_poche'])) {
     $token = md5(uniqid(rand(), TRUE));
     $_SESSION['token_poche'] = $token;
     $_SESSION['token_time_poche'] = time();
+}
+
+# Traitement des paramètres et déclenchement des actions
+$action             = (isset ($_REQUEST['action'])) ? htmlentities($_REQUEST['action']) : '';
+$_SESSION['view']   = (isset ($_GET['view'])) ? htmlentities($_GET['view']) : 'index';
+$_SESSION['sort']   = (isset ($_REQUEST['sort'])) ? htmlentities($_REQUEST['sort']) : 'id';
+$id                 = (isset ($_REQUEST['id'])) ? htmlspecialchars($_REQUEST['id']) : '';
+$url                = (isset ($_GET['url'])) ? $_GET['url'] : '';
+$token              = (isset ($_REQUEST['token'])) ? $_REQUEST['token'] : '';
+
+if ($action != '') {
+    action_to_do($action, $id, $url, $token);
 }
\ No newline at end of file
index 3ee238ddd1cf28e7aa33b7ba579263a862be143d..a7430585ba80989caa8c9910fb09b7fd8ff8a385 100755 (executable)
@@ -46,9 +46,9 @@ function get_external_file($url, $timeout)
 
         // create http context and add timeout and user-agent
         $context = stream_context_create(array('http'=>array('timeout' => $timeout, // Timeout : time until we stop waiting for the response.
-                                                                                    'header'=> "User-Agent: ".$useragent, // spoot Mozilla Firefox
-                                                                                    'follow_location' => true
-                                                        )));
+        'header'=> "User-Agent: ".$useragent, // spoot Mozilla Firefox
+        'follow_location' => true
+        )));
 
         // only download page lesser than 4MB
         $data = @file_get_contents($url, false, $context, -1, 4000000); // We download at most 4 MB from source.
@@ -146,6 +146,20 @@ function action_to_do($action, $id, $url, $token)
             }
             else die('CSRF problem');
             break;
+        case 'toggle_fav' :
+            if (verif_token($token)) {
+                $sql_action     = "UPDATE entries SET is_fav=~is_fav WHERE id=?";
+                $params_action  = array($id);
+            }
+            else die('CSRF problem');
+            break;
+        case 'toggle_archive' :
+            if (verif_token($token)) {
+                $sql_action     = "UPDATE entries SET is_read=~is_read WHERE id=?";
+                $params_action  = array($id);
+            }
+            else die('CSRF problem');
+            break;
         default:
             break;
     }
@@ -168,22 +182,41 @@ function action_to_do($action, $id, $url, $token)
 /**
  * Détermine quels liens afficher : home, fav ou archives
  */
-function display_view($view)
+function display_view()
 {
     global $db;
 
-    switch ($view)
+    switch ($_SESSION['sort'])
+    {
+        case 'ia':
+            $order = 'ORDER BY id';
+            break;
+        case 'id':
+            $order = 'ORDER BY id DESC';
+            break;
+        case 'ta':
+            $order = 'ORDER BY lower(title)';
+            break;
+        case 'td':
+            $order = 'ORDER BY lower(title) DESC';
+            break;
+        default:
+            $order = 'ORDER BY id';
+            break;
+    }
+
+    switch ($_SESSION['view'])
     {
         case 'archive':
-            $sql    = "SELECT * FROM entries WHERE is_read=? ORDER BY id desc";
+            $sql    = "SELECT * FROM entries WHERE is_read=? " . $order;
             $params = array(-1);
             break;
         case 'fav' :
-            $sql    = "SELECT * FROM entries WHERE is_fav=? ORDER BY id desc";
+            $sql    = "SELECT * FROM entries WHERE is_fav=? " . $order;
             $params = array(-1);
             break;
         default:
-            $sql    = "SELECT * FROM entries WHERE is_read=? ORDER BY id desc";
+            $sql    = "SELECT * FROM entries WHERE is_read=? " . $order;
             $params = array(0);
             break;
     }
index d477d699d965cafa945d6c9e22233beecdb94d11..f62cf139af989ea8e8f0eb642a9c5033e8df79a7 100755 (executable)
--- a/index.php
+++ b/index.php
 
 include dirname(__FILE__).'/inc/config.php';
 
-$action = (isset ($_REQUEST['action'])) ? htmlentities($_REQUEST['action']) : '';
-$view   = (isset ($_GET['view'])) ? htmlentities($_GET['view']) : 'index';
-$id     = (isset ($_REQUEST['id'])) ? htmlspecialchars($_REQUEST['id']) : '';
-$url    = (isset ($_GET['url'])) ? $_GET['url'] : '';
-$token    = (isset ($_POST['token'])) ? $_POST['token'] : '';
-
-if ($action != '') {
-    action_to_do($action, $id, $url, $token);
-}
-
-$entries = display_view($view);
+$entries = display_view();
 
 $tpl->assign('title', 'poche, a read it later open source system');
-$tpl->assign('view', $view);
+$tpl->assign('view', $_SESSION['view']);
 $tpl->assign('poche_url', get_poche_url());
 $tpl->assign('entries', $entries);
 $tpl->assign('load_all_js', 1);
 $tpl->assign('token', $_SESSION['token_poche']);
-$tpl->draw('home');
\ No newline at end of file
+
+$tpl->draw('head');
+$tpl->draw('home');
+$tpl->draw('entries');
+$tpl->draw('js');
+$tpl->draw('footer');
\ No newline at end of file
index 0dcc0a35fa3a0e9aed739081b9fe748bd41a4a31..f0e39b381397d840ee8442f1dfc4f0420589dd70 100644 (file)
@@ -1,7 +1,7 @@
 function toggle_favorite(element, id, token) {
     $(element).toggleClass('fav-off');
     $.ajax ({
-        url: "process.php?action=toggle_fav",
+        url: "index.php?action=toggle_fav",
         data:{id:id, token:token}
     });
 }
@@ -9,7 +9,7 @@ function toggle_favorite(element, id, token) {
 function toggle_archive(element, id, token, view_article) {
     $(element).toggleClass('archive-off');
     $.ajax ({
-        url: "process.php?action=toggle_archive",
+        url: "index.php?action=toggle_archive",
         data:{id:id, token:token}
     });
     var obj = $('#entry-'+id);
@@ -20,4 +20,8 @@ function toggle_archive(element, id, token, view_article) {
         $('#content').masonry('reloadItems');
         $('#content').masonry('reload');
     }
+}
+
+function sort_links(sort, token) {
+    $('#content').load('process.php', { sort: sort, token: token } );
 }
\ No newline at end of file
diff --git a/process.php b/process.php
deleted file mode 100644 (file)
index 5a056ca..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-/**
- * poche, a read it later open source system
- *
- * @category   poche
- * @author     Nicolas Lœuillet <nicolas@loeuillet.org>
- * @copyright  2013
- * @license    http://www.wtfpl.net/ see COPYING file
- */
-
-include dirname(__FILE__).'/inc/config.php';
-$db = new db(DB_PATH);
-
-$action = (isset ($_GET['action'])) ? htmlentities($_GET['action']) : '';
-$id     = (isset ($_GET['id'])) ? htmlentities($_GET['id']) : '';
-$token  = (isset ($_GET['token'])) ? $_GET['token'] : '';
-
-if (verif_token($token)) {
-    switch ($action)
-    {
-        case 'toggle_fav' :
-            $sql_action     = "UPDATE entries SET is_fav=~is_fav WHERE id=?";
-            $params_action  = array($id);
-            break;
-        case 'toggle_archive' :
-            $sql_action     = "UPDATE entries SET is_read=~is_read WHERE id=?";
-            $params_action  = array($id);
-            break;
-        default:
-            break;
-    }
-
-    # action query
-    if (isset($sql_action))
-    {
-        $query = $db->getHandle()->prepare($sql_action);
-        $query->execute($params_action);
-    }
-}
-else die('CSRF problem');
\ No newline at end of file
diff --git a/tpl/entries.html b/tpl/entries.html
new file mode 100644 (file)
index 0000000..0d3e6bc
--- /dev/null
@@ -0,0 +1,16 @@
+                {loop="entries"}
+                    <div id="entry-{$value.id}" class="entrie mb2">
+                        <span class="content">
+                            <h2 class="h6-like">
+                                <a href="view.php?id={$value.id}">{$value.title}</a>
+                            </h2>
+                            <div class="tools">
+                                <ul>
+                                    <li><a title="toggle mark as read" class="tool archive {if="$value.is_read == '0'"}archive-off{/if}" onclick="toggle_archive(this, {$value.id}, '{$token}')"><span></span></a></li>
+                                    <li><a title="toggle favorite" class="tool fav {if="$value.is_fav == '0'"}fav-off{/if}" onclick="toggle_favorite(this, {$value.id}, '{$token}')"><span></span></a></li>
+                                    <li><form method="post" onsubmit="return confirm('Are you sure?')" style="display: inline;"><input type="hidden" name="token" id="token" value="{$token}" /><input type="hidden" id="action" name="action" value="delete" /><input type="hidden" id="id" name="id" value="{$value.id}" /><input type="submit" class="delete" title="toggle delete" /></form></li>
+                                </ul>
+                            </div>
+                        </span>
+                    </div>
+                {/loop}
\ No newline at end of file
index d225acbe3827c62c463eb93983cb424d441b8cee..04bedabcbe42e12852c337be6ca81a14efdb4778 100755 (executable)
@@ -1,3 +1,9 @@
+            </div>
+        </div>
+
         <footer class="mr2 mt3 smaller">
             <p>powered by <a href="http://inthepoche.com">poche</a><br />follow us on <a href="https://twitter.com/getpoche" title="follow us on twitter">twitter</a></p>
-        </footer>
\ No newline at end of file
+        </footer>
+
+    </body>
+</html>
\ No newline at end of file
index 0de8007b32680431d5612361357947ac0b4f38f3..d96125320af932e7e6c91f3e4cea859db9cef53d 100644 (file)
@@ -1,4 +1,3 @@
-{include="head"}
     <body>
         <header>
             <h1><img src="./img/logo.png" alt="logo poche" />poche</h1>
                 <li><a href="?view=archive" {if="$view == 'archive'"}class="current"{/if}>archive</a></li>
                 <li><a style="cursor: move" title="i am a bookmarklet, use me !" href="javascript:(function(){var%20url%20=%20location.href%20||%20url;window.open('{$poche_url}?action=add&url='%20+%20encodeURIComponent(url),'_self');})();">poche it !</a></li>
             </ul>
-            <div id="content">
-                {loop="entries"}
-                    <div id="entry-{$value.id}" class="entrie mb2">
-                        <span class="content">
-                            <h2 class="h6-like">
-                                <a href="view.php?id={$value.id}">{$value.title}</a>
-                            </h2>
-                            <div class="tools">
-                                <ul>
-                                    <li><a title="toggle mark as read" class="tool archive {if="$value.is_read == '0'"}archive-off{/if}" onclick="toggle_archive(this, {$value.id}, '{$token}')"><span></span></a></li>
-                                    <li><a title="toggle favorite" class="tool fav {if="$value.is_fav == '0'"}fav-off{/if}" onclick="toggle_favorite(this, {$value.id}, '{$token}')"><span></span></a></li>
-                                    <li><form method="post" onsubmit="return confirm('Are you sure?')" style="display: inline;"><input type="hidden" name="token" id="token" value="{$token}" /><input type="hidden" id="action" name="action" value="delete" /><input type="hidden" id="id" name="id" value="{$value.id}" /><input type="submit" class="delete" title="toggle delete" /></form></li>
-                                </ul>
-                            </div>
-                        </span>
-                    </div>
-                {/loop}
-            </div>
-        </div>
-        {include="footer"}
-        {include="js"}
-    </body>
-</html>
+<!--             <ul>
+                <li onclick="sort_links('ia', '{$token}');">tri par id asc</li>
+                <li onclick="sort_links('id', '{$token}');">tri par id desc</li>
+                <li onclick="sort_links('ta', '{$token}');">tri par title asc</li>
+                <li onclick="sort_links('td', '{$token}');">tri par title desc</li>
+            </ul> -->
+            <div id="content">
\ No newline at end of file