mobile: add preferences

This commit is contained in:
Andrew Dolgov 2009-12-18 13:01:02 +03:00
parent 74357409fa
commit f0a0c1ff3d
5 changed files with 134 additions and 31 deletions

View File

@ -35,6 +35,12 @@
publishArticlesById($link, array($id), $cmode); publishArticlesById($link, array($id), $cmode);
break; break;
case "setPref":
$id = db_escape_string($_REQUEST["id"]);
$value = db_escape_string($_REQUEST["to"]);
mobile_set_pref($link, $id, $value);
print_r($_SESSION);
break;
default: default:
print json_encode(array("error", "UNKNOWN_METHOD")); print json_encode(array("error", "UNKNOWN_METHOD"));
break; break;

View File

@ -1,6 +1,21 @@
<?php <?php
define('TTRSS_SESSION_NAME', 'ttrss_m_sid'); define('TTRSS_SESSION_NAME', 'ttrss_m_sid');
/* TODO replace with interface to db-prefs */
function mobile_pref_toggled($link, $id) {
if ($_SESSION["mobile-prefs"][$id]) return "true";
}
function mobile_get_pref($link, $id) {
return $_SESSION["mobile-prefs"][$id];
}
function mobile_set_pref($link, $id, $value) {
$_SESSION["mobile-prefs"][$id] = $value;
}
function mobile_feed_has_icon($id) { function mobile_feed_has_icon($id) {
$filename = "../".ICONS_DIR."/$id.ico"; $filename = "../".ICONS_DIR."/$id.ico";
@ -10,6 +25,12 @@
function render_flat_feed_list($link) { function render_flat_feed_list($link) {
$owner_uid = $_SESSION["uid"]; $owner_uid = $_SESSION["uid"];
if (mobile_get_pref($link, "SORT_FEEDS_UNREAD")) {
$order_by = "unread DESC, title";
} else {
$order_by = "title";
}
$result = db_query($link, "SELECT id, $result = db_query($link, "SELECT id,
title, title,
(SELECT COUNT(id) FROM ttrss_entries,ttrss_user_entries (SELECT COUNT(id) FROM ttrss_entries,ttrss_user_entries
@ -21,9 +42,10 @@
ttrss_feeds.hidden = false AND ttrss_feeds.hidden = false AND
ttrss_feeds.owner_uid = '$owner_uid' AND ttrss_feeds.owner_uid = '$owner_uid' AND
parent_feed IS NULL parent_feed IS NULL
ORDER BY unread DESC,title"); ORDER BY $order_by");
print '<ul id="home" title="Feeds" selected="true">'; print '<ul id="home" title="Feeds" selected="true"
myBackLabel="Logout" myBackHref="logout.php" myBackTarget="_self">';
// print "<li><a href='#cat-actions'>".__('Actions...')."</a></li>"; // print "<li><a href='#cat-actions'>".__('Actions...')."</a></li>";
@ -46,9 +68,11 @@
$icon_url = "../images/blank_icon.gif"; $icon_url = "../images/blank_icon.gif";
} }
print "<li class='$class'><a href='feed.php?id=$id'>" . if ($unread > 0 || !mobile_get_pref($link, "HIDE_READ")) {
"<img class='tinyIcon' src='$icon_url'/>". print "<li class='$class'><a href='feed.php?id=$id'>" .
$line["title"] . "</a></li>"; "<img class='tinyIcon' src='$icon_url'/>".
$line["title"] . "</a></li>";
}
} }
print "</ul>"; print "</ul>";
@ -68,6 +92,12 @@
$cat_query = "cat_id IS NULL"; $cat_query = "cat_id IS NULL";
} }
if (mobile_get_pref($link, "SORT_FEEDS_UNREAD")) {
$order_by = "unread DESC, title";
} else {
$order_by = "title";
}
$result = db_query($link, "SELECT id, $result = db_query($link, "SELECT id,
title, title,
(SELECT COUNT(id) FROM ttrss_entries,ttrss_user_entries (SELECT COUNT(id) FROM ttrss_entries,ttrss_user_entries
@ -80,7 +110,7 @@
ttrss_feeds.owner_uid = '$owner_uid' AND ttrss_feeds.owner_uid = '$owner_uid' AND
parent_feed IS NULL AND parent_feed IS NULL AND
$cat_query $cat_query
ORDER BY unread DESC,title"); ORDER BY $order_by");
$title = getCategoryTitle($link, $cat_id); $title = getCategoryTitle($link, $cat_id);
@ -108,9 +138,11 @@
$icon_url = "../images/blank_icon.gif"; $icon_url = "../images/blank_icon.gif";
} }
print "<li class='$class'><a href='feed.php?id=$id&cat=$cat_id'>" . if ($unread > 0 || !mobile_get_pref($link, "HIDE_READ")) {
"<img class='tinyIcon' src='$icon_url'/>". print "<li class='$class'><a href='feed.php?id=$id&cat=$cat_id'>" .
$line["title"] . "</a></li>"; "<img class='tinyIcon' src='$icon_url'/>".
$line["title"] . "</a></li>";
}
} }
print "</ul>"; print "</ul>";
@ -132,8 +164,10 @@
$class = 'oldItem'; $class = 'oldItem';
} }
print "<li class='$class'> if ($unread > 0 || !mobile_get_pref($link, "HIDE_READ")) {
<a href='feed.php?id=$id&cat_id=-1'>$title</a></li>"; print "<li class='$class'>
<a href='feed.php?id=$id&cat_id=-1'>$title</a></li>";
}
} }
print "</ul>"; print "</ul>";
@ -163,9 +197,10 @@
$class = 'oldItem'; $class = 'oldItem';
} }
print "<li class='$class'> if ($unread > 0 || !mobile_get_pref($link, "HIDE_READ")) {
<a href='feed.php?id=$id&cat=-2'>$title</a></li>"; print "<li class='$class'>
<a href='feed.php?id=$id&cat=-2'>$title</a></li>";
}
} }
print "</ul>"; print "</ul>";
} }
@ -175,7 +210,8 @@
$owner_uid = $_SESSION["uid"]; $owner_uid = $_SESSION["uid"];
print '<ul id="home" title="Feeds" selected="true">'; print '<ul id="home" title="'.__('Categories').'" selected="true"
myBackLabel="Logout" myBackHref="logout.php" myBackTarget="_self">';
foreach (array(-1, -2) as $id) { foreach (array(-1, -2) as $id) {
$title = getCategoryTitle($link, $id); $title = getCategoryTitle($link, $id);
@ -202,8 +238,6 @@
ttrss_feed_categories.title ttrss_feed_categories.title
ORDER BY ttrss_feed_categories.title"); ORDER BY ttrss_feed_categories.title");
$cat_ids = array();
while ($line = db_fetch_assoc($result)) { while ($line = db_fetch_assoc($result)) {
if ($line["num_feeds"] > 0) { if ($line["num_feeds"] > 0) {
@ -218,12 +252,10 @@
$class = 'oldItem'; $class = 'oldItem';
} }
if ($unread > 0 || !mobile_get_pref($link, "HIDE_READ")) {
print "<li class='$class'><a href='cat.php?id=$id'>" . print "<li class='$class'><a href='cat.php?id=$id'>" .
$line["title"] . "</a></li>"; $line["title"] . "</a></li>";
}
array_push($cat_ids, $id);
} }
} }
@ -244,9 +276,9 @@
$class = 'oldItem'; $class = 'oldItem';
} }
array_push($cat_ids, 0); if ($unread > 0 || !mobile_get_pref($link, "HIDE_READ")) {
print "<li class='$class'><a href='cat.php?id=0'>$title</a></li>";
print "<li class='$class'><a href='cat.php?id=0'>$title</a></li>"; }
} }
print "</ul>"; print "</ul>";
@ -367,6 +399,10 @@
$content = sanitize_rss($link, $line["content"]); $content = sanitize_rss($link, $line["content"]);
$content = preg_replace("/href=/i", "target=\"_blank\" href=", $content); $content = preg_replace("/href=/i", "target=\"_blank\" href=", $content);
if (!mobile_get_pref($link, "SHOW_IMAGES")) {
$content = preg_replace('/<img[^>]+>/is', '', $content);
}
print "<p>$content</p>"; print "<p>$content</p>";
print "<fieldset>"; print "<fieldset>";
@ -386,6 +422,5 @@
print "</div>"; print "</div>";
} }
} }
?> ?>

View File

@ -65,7 +65,7 @@
<div class="toolbar"> <div class="toolbar">
<h1 id="pageTitle"></h1> <h1 id="pageTitle"></h1>
<a id="myBackButton" class="button" href="#"></a> <a id="myBackButton" class="button" href="#"></a>
<a class="button" target="_self" href="logout.php">Logout</a> <a class="button" href="prefs.php">Preferences</a>
</div> </div>
<?php <?php

View File

@ -39,3 +39,22 @@ function togglePublished(id, elem) {
} }
function setPref(elem) {
var toggled = false;
var id = elem.id;
if (elem.getAttribute("toggled") == "true") {
toggled = 1;
} else {
toggled = 0;
}
var query = "?op=setPref&id=" + id + "&to=" + toggled;
new Ajax.Request(backend, {
parameters: query,
onComplete: function (transport) {
//
} });
}

43
mobile/prefs.php Normal file
View File

@ -0,0 +1,43 @@
<?php
error_reporting(E_ERROR | E_WARNING | E_PARSE);
header('Content-Type: text/html; charset=utf-8');
define('MOBILE_VERSION', true);
require_once "../config.php";
require_once "functions.php";
require_once "../functions.php";
require_once "../sessions.php";
require_once "../version.php";
require_once "../db-prefs.php";
$link = db_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
init_connection($link);
login_sequence($link, true);
?>
<div class="panel" id="prefs" selected="yes" title="Preferences"
myBackLabel="Feeds" myBackHref="home.php">
<fieldset>
<div class="row">
<label>Hide read items</label>
<div class="toggle" id="HIDE_READ" onclick="setPref(this)" toggled="<?php echo mobile_pref_toggled($link, "HIDE_READ") ?>"><span class="thumb"></span><span class="toggleOn">ON</span><span class="toggleOff">OFF</span></div>
</div>
<div class="row">
<label>Sort feeds by unread</label>
<div class="toggle" id="SORT_FEEDS_UNREAD" onclick="setPref(this)" toggled="<?php echo mobile_pref_toggled($link, "SORT_FEEDS_UNREAD") ?>"><span class="thumb"></span><span class="toggleOn">ON</span><span class="toggleOff">OFF</span></div>
</div>
<div class="row">
<label>Show images</label>
<div class="toggle" id="SHOW_IMAGES" onclick="setPref(this)" toggled="<?php echo mobile_pref_toggled($link, "SHOW_IMAGES") ?>"><span class="thumb"></span><span class="toggleOn">ON</span><span class="toggleOff">OFF</span></div>
</div>
</fieldset>