add (disabled) dialog to recategorize feeds via draganddrop

This commit is contained in:
Andrew Dolgov 2007-08-20 16:04:37 +01:00
parent 85bd574bb0
commit 6016d5408e
3 changed files with 153 additions and 0 deletions

View File

@ -517,6 +517,65 @@
}
if ($subop == "categorizeDlg") {
$action = $_REQUEST["action"];
print "<div id=\"infoBoxTitle\">".__('Category editor')."</div>";
print "<div class=\"infoBoxContents\">";
$result = db_query($link, "SELECT title,id FROM ttrss_feed_categories
WHERE owner_uid = ".$_SESSION["uid"]."
ORDER BY title");
if (db_num_rows($result) != 0) {
print "<ul class=\"nomarks\" id=\"prefFeedCatList2\">";
$lnum = 0;
while ($line = db_fetch_assoc($result)) {
$class = ($lnum % 2) ? "even" : "odd";
$cat_id = $line["id"];
print "<li id='FCATR-$cat_id'>";
$edit_title = htmlspecialchars($line["title"]);
print "<span id=\"FCATT-$cat_id\">" .
$edit_title . "</span>";
$tmp_result = db_query($link, "SELECT id, title FROM ttrss_feeds WHERE owner_uid = ".
$_SESSION["uid"]. " AND cat_id = $cat_id ORDER BY title");
print "<ul id=\"FCNTR-$cat_id\" class=\"nomarks\">";
while ($tmp_line = db_fetch_assoc($tmp_result)) {
print "<li class=\"feedEntry\" id=\"FCFID-".$tmp_line["id"]."\">" . $tmp_line["title"] . "</li>";
}
print "</ul>";
print "</li>";
++$lnum;
}
print "</ul>";
print "<input type=\"submit\" class=\"button\"
onclick=\"return closeInfoBox()\" value=\"".__('Close this window')."\">";
print "</div>";
}
return;
}
if ($subop == "editCats") {
$action = $_REQUEST["action"];
@ -964,6 +1023,11 @@
print " <input type=\"submit\" class=\"button\" disabled=\"true\"
onclick=\"javascript:categorizeSelectedFeeds()\" value=\"".
__('Recategorize')."\">";
/* print " <input type=\"submit\" class=\"button\"
onclick=\"javascript:recategorizeFeeds()\" value=\"".
__('Recategorize')."\">"; */
}
print "</span>";

View File

@ -241,6 +241,63 @@ function infobox_feed_cat_callback() {
}
}
function recat_onChange(elem) {
debug(elem);
}
function recat_onUpdate(ctr) {
debug(ctr);
}
function infobox_recategorize_callback() {
if (xmlhttp.readyState == 4) {
try {
infobox_callback();
var ctr = document.getElementById("prefFeedCatList2");
if (ctr) {
var elems = ctr.getElementsByTagName("SPAN");
for (var i = 0; i < elems.length; i++) {
if (elems[i].id && elems[i].id.match("FCATT-")) {
var cat_id = elems[i].id.replace("FCATT-", "");
new Ajax.InPlaceEditor(elems[i],
'backend.php?op=pref-feeds&subop=editCats&action=save&cid=' + cat_id);
}
}
elems = ctr.getElementsByTagName("UL");
ctrs = new Array();
ctr_ids = new Array();
for (var i = 0; i < elems.length; i++) {
if (elems[i].id.match("FCNTR-")) {
ctrs.push(elems[i]);
ctr_ids.push(elems[i].id);
}
}
Position.includeScrollOffsets = true;
for (var i = 0; i < ctrs.length; i++) {
Sortable.create(elems[i], { scroll: ctr, ghosting: false,
containment: ctrs, dropOnEmpty: true, onChange: recat_onChange, onUpdate: recat_onUpdate });
}
}
} catch (e) {
exception_error("infobox_recategorize_callback", e);
}
}
}
function updateFeedList(sort_key) {
if (!xmlhttp_ready(xmlhttp)) {
@ -1673,6 +1730,25 @@ function editFeedCats() {
xmlhttp.send(null);
}
function recategorizeFeeds() {
if (!xmlhttp_ready(xmlhttp)) {
printLockingError();
return
}
document.getElementById("subscribe_to_feed_btn").disabled = true;
try {
document.getElementById("top25_feeds_btn").disabled = true;
} catch (e) {
// this button is not always available, no-op if not found
}
xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=categorizeDlg", true);
xmlhttp.onreadystatechange=infobox_recategorize_callback;
xmlhttp.send(null);
}
function showFeedsWithErrors() {
displayDlg('feedUpdateErrors');
}

View File

@ -1684,3 +1684,16 @@ div.autocomplete ul li {
cursor : pointer;
}
ul#prefFeedCatList2 {
height : 300px;
overflow : scroll;
list-style-type : none;
border : 1px solid #99d67a;
background-color : white;
margin : 0px 0px 5px 0px;
padding : 0px;
}
ul#prefFeedCatList2 li.feedEntry {
cursor : move;
}