mirror of
https://github.com/wallabag/wallabag.git
synced 2024-12-27 10:00:29 +00:00
stockage de la vue et du tri en session
This commit is contained in:
parent
643e3037e6
commit
139769aa24
8 changed files with 99 additions and 88 deletions
|
@ -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);
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
|
|
21
index.php
21
index.php
|
@ -10,22 +10,17 @@
|
|||
|
||||
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');
|
||||
|
||||
$tpl->draw('head');
|
||||
$tpl->draw('home');
|
||||
$tpl->draw('entries');
|
||||
$tpl->draw('js');
|
||||
$tpl->draw('footer');
|
|
@ -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 } );
|
||||
}
|
40
process.php
40
process.php
|
@ -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');
|
16
tpl/entries.html
Normal file
16
tpl/entries.html
Normal file
|
@ -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}
|
|
@ -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>
|
||||
</footer>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -1,4 +1,3 @@
|
|||
{include="head"}
|
||||
<body>
|
||||
<header>
|
||||
<h1><img src="./img/logo.png" alt="logo poche" />poche</h1>
|
||||
|
@ -10,26 +9,10 @@
|
|||
<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">
|
Loading…
Reference in a new issue