infobox-based feed category editor
This commit is contained in:
parent
c93d8e07fe
commit
9c4837460c
|
@ -1215,6 +1215,7 @@ function infobox_callback() {
|
||||||
box.style.display = "block";
|
box.style.display = "block";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
notify("");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -391,14 +391,14 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($subop == "saveCat") {
|
/* if ($subop == "saveCat") {
|
||||||
$cat_title = db_escape_string(trim($_GET["title"]));
|
$cat_title = db_escape_string(trim($_GET["title"]));
|
||||||
$cat_id = db_escape_string($_GET["id"]);
|
$cat_id = db_escape_string($_GET["id"]);
|
||||||
|
|
||||||
$result = db_query($link, "UPDATE ttrss_feed_categories SET
|
$result = db_query($link, "UPDATE ttrss_feed_categories SET
|
||||||
title = '$cat_title' WHERE id = '$cat_id' AND owner_uid = ".$_SESSION["uid"]);
|
title = '$cat_title' WHERE id = '$cat_id' AND owner_uid = ".$_SESSION["uid"]);
|
||||||
|
|
||||||
}
|
} */
|
||||||
|
|
||||||
if ($subop == "remove") {
|
if ($subop == "remove") {
|
||||||
|
|
||||||
|
@ -446,7 +446,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($subop == "addCat") {
|
/* if ($subop == "addCat") {
|
||||||
|
|
||||||
if (!WEB_DEMO_MODE) {
|
if (!WEB_DEMO_MODE) {
|
||||||
|
|
||||||
|
@ -502,7 +502,7 @@
|
||||||
db_query($link, "COMMIT");
|
db_query($link, "COMMIT");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} */
|
||||||
|
|
||||||
if ($subop == "categorize") {
|
if ($subop == "categorize") {
|
||||||
|
|
||||||
|
@ -538,6 +538,215 @@
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($subop == "editCats") {
|
||||||
|
|
||||||
|
print "<div id=\"infoBoxTitle\">Category editor</div>";
|
||||||
|
|
||||||
|
print "<div class=\"infoBoxContents\">";
|
||||||
|
|
||||||
|
$action = $_REQUEST["action"];
|
||||||
|
|
||||||
|
if ($action == "save") {
|
||||||
|
|
||||||
|
$cat_title = db_escape_string(trim($_GET["title"]));
|
||||||
|
$cat_id = db_escape_string($_GET["id"]);
|
||||||
|
|
||||||
|
$result = db_query($link, "UPDATE ttrss_feed_categories SET
|
||||||
|
title = '$cat_title' WHERE id = '$cat_id' AND owner_uid = ".$_SESSION["uid"]);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($action == "add") {
|
||||||
|
|
||||||
|
if (!WEB_DEMO_MODE) {
|
||||||
|
|
||||||
|
$feed_cat = db_escape_string(trim($_GET["cat"]));
|
||||||
|
|
||||||
|
$result = db_query($link,
|
||||||
|
"SELECT id FROM ttrss_feed_categories
|
||||||
|
WHERE title = '$feed_cat' AND owner_uid = ".$_SESSION["uid"]);
|
||||||
|
|
||||||
|
if (db_num_rows($result) == 0) {
|
||||||
|
|
||||||
|
$result = db_query($link,
|
||||||
|
"INSERT INTO ttrss_feed_categories (owner_uid,title)
|
||||||
|
VALUES ('".$_SESSION["uid"]."', '$feed_cat')");
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
print "<div class=\"warning\">
|
||||||
|
Category <b>$feed_cat</b> already exists in the database.
|
||||||
|
</div>";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($action == "remove") {
|
||||||
|
|
||||||
|
if (!WEB_DEMO_MODE) {
|
||||||
|
|
||||||
|
$ids = split(",", db_escape_string($_GET["ids"]));
|
||||||
|
|
||||||
|
foreach ($ids as $id) {
|
||||||
|
|
||||||
|
db_query($link, "BEGIN");
|
||||||
|
|
||||||
|
$result = db_query($link,
|
||||||
|
"SELECT count(id) as num_feeds FROM ttrss_feeds
|
||||||
|
WHERE cat_id = '$id'");
|
||||||
|
|
||||||
|
$num_feeds = db_fetch_result($result, 0, "num_feeds");
|
||||||
|
|
||||||
|
if ($num_feeds == 0) {
|
||||||
|
db_query($link, "DELETE FROM ttrss_feed_categories
|
||||||
|
WHERE id = '$id' AND owner_uid = " . $_SESSION["uid"]);
|
||||||
|
} else {
|
||||||
|
|
||||||
|
print "<div class=\"warning\">
|
||||||
|
Unable to delete non empty feed categories.</div>";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
db_query($link, "COMMIT");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
print "<div class=\"prefGenericAddBox\">
|
||||||
|
<input id=\"fadd_cat\"
|
||||||
|
onkeyup=\"toggleSubmitNotEmpty(this, 'catadd_submit_btn')\"
|
||||||
|
size=\"40\">
|
||||||
|
<input
|
||||||
|
type=\"submit\" class=\"button\" disabled=\"true\" id=\"catadd_submit_btn\"
|
||||||
|
onclick=\"javascript:addFeedCat()\" value=\"Create category\"></div>";
|
||||||
|
|
||||||
|
$result = db_query($link, "SELECT title,id FROM ttrss_feed_categories
|
||||||
|
WHERE owner_uid = ".$_SESSION["uid"]."
|
||||||
|
ORDER BY title");
|
||||||
|
|
||||||
|
print "<p>";
|
||||||
|
|
||||||
|
if (db_num_rows($result) != 0) {
|
||||||
|
|
||||||
|
print "<table width=\"100%\" class=\"prefFeedCatList\"
|
||||||
|
cellspacing=\"0\">";
|
||||||
|
|
||||||
|
print "<tr><td class=\"selectPrompt\" colspan=\"8\">
|
||||||
|
Select:
|
||||||
|
<a href=\"javascript:selectPrefRows('fcat', true)\">All</a>,
|
||||||
|
<a href=\"javascript:selectPrefRows('fcat', false)\">None</a>
|
||||||
|
</td></tr>";
|
||||||
|
|
||||||
|
print "</table>";
|
||||||
|
|
||||||
|
print "<div class=\"prefFeedCatHolder\">";
|
||||||
|
|
||||||
|
print "<form id=\"feed_cat_edit_form\">";
|
||||||
|
|
||||||
|
print "<table width=\"100%\" class=\"prefFeedCatList\"
|
||||||
|
cellspacing=\"0\" id=\"prefFeedCatList\">";
|
||||||
|
|
||||||
|
/* print "<tr class=\"title\">
|
||||||
|
<td width=\"5%\"> </td><td width=\"80%\">Title</td>
|
||||||
|
</tr>"; */
|
||||||
|
|
||||||
|
$lnum = 0;
|
||||||
|
|
||||||
|
while ($line = db_fetch_assoc($result)) {
|
||||||
|
|
||||||
|
$class = ($lnum % 2) ? "even" : "odd";
|
||||||
|
|
||||||
|
$cat_id = $line["id"];
|
||||||
|
|
||||||
|
$edit_cat_id = $_GET["id"];
|
||||||
|
|
||||||
|
if ($action == "edit" && $cat_id != $edit_cat_id) {
|
||||||
|
$class .= "Grayed";
|
||||||
|
$this_row_id = "";
|
||||||
|
} else {
|
||||||
|
$this_row_id = "id=\"FCATR-$cat_id\"";
|
||||||
|
}
|
||||||
|
|
||||||
|
print "<tr class=\"$class\" $this_row_id>";
|
||||||
|
|
||||||
|
$edit_title = htmlspecialchars(db_unescape_string($line["title"]));
|
||||||
|
|
||||||
|
if (!$edit_cat_id || $action != "edit") {
|
||||||
|
|
||||||
|
print "<td width='5%' align='center'><input onclick='toggleSelectPrefRow(this, \"fcat\");'
|
||||||
|
type=\"checkbox\" id=\"FCCHK-".$line["id"]."\"></td>";
|
||||||
|
|
||||||
|
print "<td><a href=\"javascript:editFeedCat($cat_id);\">" .
|
||||||
|
$edit_title . "</a></td>";
|
||||||
|
|
||||||
|
} else if ($cat_id != $edit_cat_id) {
|
||||||
|
|
||||||
|
print "<td width='5%' align='center'><input disabled=\"true\" type=\"checkbox\"
|
||||||
|
id=\"FRCHK-".$line["id"]."\"></td>";
|
||||||
|
|
||||||
|
print "<td>$edit_title</td>";
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
print "<td width='5%' align='center'><input disabled=\"true\" type=\"checkbox\" checked>";
|
||||||
|
|
||||||
|
print "<input type=\"hidden\" name=\"id\" value=\"$cat_id\">";
|
||||||
|
print "<input type=\"hidden\" name=\"op\" value=\"pref-feeds\">";
|
||||||
|
print "<input type=\"hidden\" name=\"subop\" value=\"editCats\">";
|
||||||
|
print "<input type=\"hidden\" name=\"action\" value=\"save\">";
|
||||||
|
|
||||||
|
print "</td>";
|
||||||
|
|
||||||
|
print "<td><input onkeypress=\"return filterCR(event)\"
|
||||||
|
name=\"title\" size=\"40\" value=\"$edit_title\"></td>";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
print "</tr>";
|
||||||
|
|
||||||
|
++$lnum;
|
||||||
|
}
|
||||||
|
|
||||||
|
print "</table>";
|
||||||
|
|
||||||
|
print "</form>";
|
||||||
|
|
||||||
|
print "</div>";
|
||||||
|
|
||||||
|
print "<div style='float : right'>
|
||||||
|
<input type='submit' class='button'
|
||||||
|
onclick=\"closeInfoBox()\" value=\"Close this window\"></div>";
|
||||||
|
|
||||||
|
print "<div id=\"catOpToolbar\">";
|
||||||
|
|
||||||
|
if ($action == "edit") {
|
||||||
|
print "<input type=\"submit\" class=\"button\"
|
||||||
|
onclick=\"return feedCatEditSave()\" value=\"Save\">
|
||||||
|
<input type=\"submit\" class=\"button\"
|
||||||
|
onclick=\"return feedCatEditCancel()\" value=\"Cancel\">";
|
||||||
|
} else {
|
||||||
|
|
||||||
|
print "
|
||||||
|
<input type=\"submit\" class=\"button\" disabled=\"true\"
|
||||||
|
onclick=\"return editSelectedFeedCat()\" value=\"Edit\">
|
||||||
|
<input type=\"submit\" class=\"button\" disabled=\"true\"
|
||||||
|
onclick=\"return removeSelectedFeedCats()\" value=\"Remove\">";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
print "</div>";
|
||||||
|
|
||||||
|
} else {
|
||||||
|
print "<p>No feed categories defined.</p>";
|
||||||
|
}
|
||||||
|
|
||||||
|
print "</div>";
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
if ($quiet) return;
|
if ($quiet) return;
|
||||||
|
|
||||||
// print "<h3>Edit Feeds</h3>";
|
// print "<h3>Edit Feeds</h3>";
|
||||||
|
@ -810,8 +1019,18 @@
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
print "</span>
|
print "</span>";
|
||||||
All feeds: <input type=\"submit\"
|
|
||||||
|
if (get_pref($link, 'ENABLE_FEED_CATS')) {
|
||||||
|
|
||||||
|
print " <input type=\"submit\" class=\"button\"
|
||||||
|
onclick=\"javascript:editFeedCats()\" value=\"Edit categories\">";
|
||||||
|
|
||||||
|
print " | ";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
print "All feeds: <input type=\"submit\"
|
||||||
class=\"button\" onclick=\"gotoExportOpml()\"
|
class=\"button\" onclick=\"gotoExportOpml()\"
|
||||||
value=\"Export OPML\">";
|
value=\"Export OPML\">";
|
||||||
}
|
}
|
||||||
|
@ -821,7 +1040,8 @@
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (get_pref($link, 'ENABLE_FEED_CATS')) {
|
|
||||||
|
/* if (get_pref($link, 'ENABLE_FEED_CATS')) {
|
||||||
|
|
||||||
print "<h3>Edit Categories</h3>";
|
print "<h3>Edit Categories</h3>";
|
||||||
|
|
||||||
|
@ -936,7 +1156,7 @@
|
||||||
} else {
|
} else {
|
||||||
print "<p>No feed categories defined.</p>";
|
print "<p>No feed categories defined.</p>";
|
||||||
}
|
}
|
||||||
}
|
} */
|
||||||
|
|
||||||
print "<h3>Import OPML</h3>
|
print "<h3>Import OPML</h3>
|
||||||
<form enctype=\"multipart/form-data\" method=\"POST\" action=\"opml.php\">
|
<form enctype=\"multipart/form-data\" method=\"POST\" action=\"opml.php\">
|
||||||
|
|
31
prefs.js
31
prefs.js
|
@ -245,9 +245,9 @@ function addFeedCat() {
|
||||||
} else {
|
} else {
|
||||||
notify("Adding feed category...");
|
notify("Adding feed category...");
|
||||||
|
|
||||||
xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=addCat&cat=" +
|
xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=editCats&action=add&cat=" +
|
||||||
param_escape(cat.value), true);
|
param_escape(cat.value), true);
|
||||||
xmlhttp.onreadystatechange=feedlist_callback;
|
xmlhttp.onreadystatechange=infobox_callback;
|
||||||
xmlhttp.send(null);
|
xmlhttp.send(null);
|
||||||
|
|
||||||
link.value = "";
|
link.value = "";
|
||||||
|
@ -365,9 +365,9 @@ function editFeedCat(cat) {
|
||||||
|
|
||||||
active_feed_cat = cat;
|
active_feed_cat = cat;
|
||||||
|
|
||||||
xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=editCat&id=" +
|
xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=editCats&action=edit&id=" +
|
||||||
param_escape(cat), true);
|
param_escape(cat), true);
|
||||||
xmlhttp.onreadystatechange=feedlist_callback;
|
xmlhttp.onreadystatechange=infobox_callback;
|
||||||
xmlhttp.send(null);
|
xmlhttp.send(null);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -549,9 +549,9 @@ function removeSelectedFeedCats() {
|
||||||
if (ok) {
|
if (ok) {
|
||||||
notify("Removing selected categories...");
|
notify("Removing selected categories...");
|
||||||
|
|
||||||
xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=removeCats&ids="+
|
xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=editCats&action=remove&ids="+
|
||||||
param_escape(sel_rows.toString()), true);
|
param_escape(sel_rows.toString()), true);
|
||||||
xmlhttp.onreadystatechange=feedlist_callback;
|
xmlhttp.onreadystatechange=infobox_callback;
|
||||||
xmlhttp.send(null);
|
xmlhttp.send(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -589,8 +589,8 @@ function feedCatEditCancel() {
|
||||||
|
|
||||||
// notify("Operation cancelled.");
|
// notify("Operation cancelled.");
|
||||||
|
|
||||||
xmlhttp.open("GET", "backend.php?op=pref-feeds", true);
|
xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=editCats", true);
|
||||||
xmlhttp.onreadystatechange=feedlist_callback;
|
xmlhttp.onreadystatechange=infobox_callback;
|
||||||
xmlhttp.send(null);
|
xmlhttp.send(null);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -637,7 +637,7 @@ function feedCatEditSave() {
|
||||||
var query = Form.serialize("feed_cat_edit_form");
|
var query = Form.serialize("feed_cat_edit_form");
|
||||||
|
|
||||||
xmlhttp.open("GET", "backend.php?" + query, true);
|
xmlhttp.open("GET", "backend.php?" + query, true);
|
||||||
xmlhttp.onreadystatechange=feedlist_callback;
|
xmlhttp.onreadystatechange=infobox_callback;
|
||||||
xmlhttp.send(null);
|
xmlhttp.send(null);
|
||||||
|
|
||||||
active_feed_cat = false;
|
active_feed_cat = false;
|
||||||
|
@ -1435,7 +1435,7 @@ function selectPrefRows(kind, select) {
|
||||||
} else if (kind == "fcat") {
|
} else if (kind == "fcat") {
|
||||||
opbarid = "catOpToolbar";
|
opbarid = "catOpToolbar";
|
||||||
nrow = "FCATR-";
|
nrow = "FCATR-";
|
||||||
nchk = "FCHK-";
|
nchk = "FCCHK-";
|
||||||
lname = "prefFeedCatList";
|
lname = "prefFeedCatList";
|
||||||
} else if (kind == "filter") {
|
} else if (kind == "filter") {
|
||||||
opbarid = "filterOpToolbar";
|
opbarid = "filterOpToolbar";
|
||||||
|
@ -1542,3 +1542,14 @@ function userSwitch() {
|
||||||
var user = chooser[chooser.selectedIndex].value;
|
var user = chooser[chooser.selectedIndex].value;
|
||||||
window.location = "prefs.php?swu=" + user;
|
window.location = "prefs.php?swu=" + user;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function editFeedCats() {
|
||||||
|
if (!xmlhttp_ready(xmlhttp)) {
|
||||||
|
printLockingError();
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=editCats", true);
|
||||||
|
xmlhttp.onreadystatechange=infobox_callback;
|
||||||
|
xmlhttp.send(null);
|
||||||
|
}
|
||||||
|
|
|
@ -315,6 +315,10 @@ tr.title td a:hover {
|
||||||
color : #5050aa;
|
color : #5050aa;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
div.prefFeedCatHolder {
|
||||||
|
border : 1px solid #c0c0c0;
|
||||||
|
}
|
||||||
|
|
||||||
table.prefFeedList td.feedEditCat {
|
table.prefFeedList td.feedEditCat {
|
||||||
font-size : large;
|
font-size : large;
|
||||||
border-color : #c0c0c0;
|
border-color : #c0c0c0;
|
||||||
|
|
|
@ -125,15 +125,16 @@ div.postReply > div.postHeader {
|
||||||
}
|
}
|
||||||
|
|
||||||
.evenGrayed, .evenGrayed td {
|
.evenGrayed, .evenGrayed td {
|
||||||
background-color : white;
|
background-color : #f9f9f9;
|
||||||
color : #909090;
|
color : gray;
|
||||||
border-width : 1px 0px 1px 0px;
|
border-width : 1px 0px 1px 0px;
|
||||||
border-style : solid;
|
border-style : solid;
|
||||||
border-color : #ebebeb;
|
border-color : #ebebeb;
|
||||||
}
|
}
|
||||||
|
|
||||||
.oddGrayed {
|
.oddGrayed {
|
||||||
color : #909090;
|
color : gray;
|
||||||
|
background-color : #f9f9f9;
|
||||||
}
|
}
|
||||||
|
|
||||||
.even, .even td {
|
.even, .even td {
|
||||||
|
@ -218,6 +219,10 @@ li.tagUnreadSelected a {
|
||||||
color : gray;
|
color : gray;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
div.prefFeedCatHolder {
|
||||||
|
border : 1px solid #999999;
|
||||||
|
}
|
||||||
|
|
||||||
table.prefFeedList td.feedEditCat {
|
table.prefFeedList td.feedEditCat {
|
||||||
font-weight : bold;
|
font-weight : bold;
|
||||||
border-width : 0px 0px 1px 0px;
|
border-width : 0px 0px 1px 0px;
|
||||||
|
|
10
tt-rss.css
10
tt-rss.css
|
@ -412,6 +412,13 @@ table.prefFeedList td.feedSelect {
|
||||||
text-align : center;
|
text-align : center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
div.prefFeedCatHolder {
|
||||||
|
height : 250px;
|
||||||
|
overflow : auto;
|
||||||
|
border : 1px solid #88b0f0;
|
||||||
|
margin : 5px 0px 5px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
a.helpLink {
|
a.helpLink {
|
||||||
color : #808080;
|
color : #808080;
|
||||||
}
|
}
|
||||||
|
@ -465,8 +472,9 @@ div.helpResponse {
|
||||||
}
|
}
|
||||||
|
|
||||||
div.infoBoxContents {
|
div.infoBoxContents {
|
||||||
padding : 5px;
|
padding : 10px;
|
||||||
margin-bottom : 5px;
|
margin-bottom : 5px;
|
||||||
|
font-size : small;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.infoBoxContents td {
|
div.infoBoxContents td {
|
||||||
|
|
Loading…
Reference in New Issue