From 307d187c6ca4fd31523ef9b9d0b483021126328c Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Fri, 23 Jan 2009 14:20:05 +0100 Subject: [PATCH] rework assigning articles to tags --- functions.php | 122 ++++++++++++++++------------------------ modules/backend-rpc.php | 6 +- tt-rss.css | 4 -- viewfeed.js | 47 +++++----------- 4 files changed, 67 insertions(+), 112 deletions(-) diff --git a/functions.php b/functions.php index b4636927c..2b81a10c5 100644 --- a/functions.php +++ b/functions.php @@ -4533,54 +4533,15 @@ print "
" . $line["title"] . "$entry_author
"; } - $tags = get_article_tags($link, $id); - - $tags_str = ""; - $tags_nolinks_str = ""; - $f_tags_str = ""; - - $num_tags = 0; - - if ($_SESSION["theme"] == "3pane") { - $tag_limit = 3; - } else { - $tag_limit = 6; - } - - foreach ($tags as $tag) { - $num_tags++; - $tag_escaped = str_replace("'", "\\'", $tag); - - $tag_str = "$tag, "; - - if ($num_tags == $tag_limit) { - $tags_str .= "…"; - $tags_nolinks_str .= "…"; - - } else if ($num_tags < $tag_limit) { - $tags_str .= $tag_str; - $tags_nolinks_str .= "$tag, "; - } - $f_tags_str .= $tag_str; - } - - $tags_str = preg_replace("/, $/", "", $tags_str); - $tags_nolinks_str = preg_replace("/, $/", "", $tags_nolinks_str); - $f_tags_str = preg_replace("/, $/", "", $f_tags_str); - - $all_tags_div = "
All Tags: $f_tags_str
"; - $tags_str = preg_replace("/\.\.\.$/", "$all_tags_div", $tags_str); + $tags_str = format_tags_string(get_article_tags($link, $id), $id); if (!$entry_comments) $entry_comments = " "; # placeholder - if (!$tags_str) $tags_str = ''.__('no tags').''; - if (!$tags_nolinks_str) $tags_nolinks_str = ''.__('no tags').''; - print "
Tags"; if (!$zoom_mode) { - print "$tags_str + print "$tags_str (+)"; @@ -4597,8 +4558,6 @@ style=\"cursor : pointer\" style=\"cursor : pointer\" onclick=\"zoomToArticle($id)\" alt='Zoom' title='".__('Show article summary in new window')."'>"; - } else { - print "$tags_nolinks_str"; } print "
"; print "
$entry_comments
"; @@ -4609,8 +4568,6 @@ print "
"; - #print "
".__('Tags:')." $f_tags_str
"; - $article_content = sanitize_rss($link, $line["content"]); if (get_pref($link, 'OPEN_LINKS_IN_NEW_WINDOW')) { @@ -5253,38 +5210,15 @@ alt='Zoom' title='".__('Show article summary in new window')."'>"; - $tags = get_article_tags($link, $id); - - $tags_str = ""; - $full_tags_str = ""; - $num_tags = 0; - - foreach ($tags as $tag) { - $num_tags++; - $full_tags_str .= "$tag, "; - if ($num_tags < 5) { - $tags_str .= "$tag, "; - } else if ($num_tags == 5) { - $tags_str .= "…"; - } - } - - $tags_str = preg_replace("/, $/", "", $tags_str); - $full_tags_str = preg_replace("/, $/", "", $full_tags_str); - - $all_tags_div = "
All Tags: $full_tags_str
"; - - $tags_str = preg_replace("/\.\.\.$/", "$all_tags_div", $tags_str); - - - if ($tags_str == "") $tags_str = "no tags"; + $tags_str = format_tags_string(get_article_tags($link, $id), $id); // print ""; print " - Tags $tags_str (+)"; + Tags + $tags_str + (+)"; print ""; @@ -6011,4 +5945,46 @@ } } } + + function format_tags_string($tags, $id) { + + $tags_str = ""; + $tags_nolinks_str = ""; + + $num_tags = 0; + + if ($_SESSION["theme"] == "3pane") { + $tag_limit = 3; + } else { + $tag_limit = 6; + } + + $formatted_tags = array(); + + foreach ($tags as $tag) { + $num_tags++; + $tag_escaped = str_replace("'", "\\'", $tag); + + $tag_str = "$tag"; + + array_push($formatted_tags, $tag_str); + + if ($num_tags == $tag_limit) { + break; + } + } + + $tags_str = implode(", ", $formatted_tags); + + if ($num_tags < count($tags)) { + $tags_str .= ", …"; + } + + if ($num_tags == 0) { + $tags_str = __("no tags"); + } + + return $tags_str; + + } ?> diff --git a/modules/backend-rpc.php b/modules/backend-rpc.php index a6ab9340a..b26304c2b 100644 --- a/modules/backend-rpc.php +++ b/modules/backend-rpc.php @@ -296,7 +296,7 @@ continue; } - print ""; +// print ""; if ($tag != '') { db_query($link, "INSERT INTO ttrss_tags @@ -307,8 +307,10 @@ db_query($link, "COMMIT"); + $tags_str = format_tags_string(get_article_tags($link, $id), $id); + print " - $id + "; return; diff --git a/tt-rss.css b/tt-rss.css index 4bff63dae..26c2729c6 100644 --- a/tt-rss.css +++ b/tt-rss.css @@ -909,10 +909,6 @@ div.postHeader div.postDateRTL { float : right; } -div.postReply span.tagList { - color : gray; -} - div.postHeader div { padding-bottom : 3px; font-size : 12px; diff --git a/viewfeed.js b/viewfeed.js index a638cbe71..513350497 100644 --- a/viewfeed.js +++ b/viewfeed.js @@ -2,13 +2,6 @@ var active_post_id = false; var last_article_view = false; var active_real_feed_id = false; -var _tag_active_post_id = false; -var _tag_active_feed_id = false; -var _tag_active_cdm = false; - -// FIXME: kludge, to restore scrollTop after tag editor terminates -var _tag_cdm_scroll = false; - // FIXME: kludges, needs proper implementation var _reload_feedlist_after_view = false; @@ -233,15 +226,6 @@ function headlines_callback2(transport, feed_cur_page) { debug("not in CDM mode or watchdog disabled"); } - if (_tag_cdm_scroll) { - try { - document.getElementById("headlinesInnerContainer").scrollTop = _tag_cdm_scroll; - _tag_cdm_scroll = false; - debug("resetting headlinesInner scrollTop"); - - } catch (e) { } - } - _feed_cur_page = feed_cur_page; _infscroll_request_sent = 0; @@ -1228,15 +1212,6 @@ function catchupSelection() { } function editArticleTags(id, feed_id, cdm_enabled) { - _tag_active_post_id = id; - _tag_active_feed_id = feed_id; - _tag_active_cdm = cdm_enabled; - - cache_invalidate(id); - - try { - _tag_cdm_scroll = document.getElementById("headlinesInnerContainer").scrollTop; - } catch (e) { } displayDlg('editArticleTags', id); } @@ -1252,18 +1227,24 @@ function tag_saved_callback(transport) { _reload_feedlist_after_view = true; } - if (!_tag_active_cdm) { - if (active_post_id == _tag_active_post_id) { - debug("reloading current article"); - view(_tag_active_post_id, _tag_active_feed_id); + + if (transport.responseXML) { + var tags_str = transport.responseXML.getElementsByTagName("tags-str")[0]; + + if (tags_str) { + var id = tags_str.getAttribute("id"); + + if (id) { + var tags = document.getElementById("ATSTR-" + id); + if (tags) { + tags.innerHTML = tags_str.firstChild.nodeValue; + } + } } - } else { - debug("reloading current feed"); - viewCurrentFeed(); } } catch (e) { - exception_error("catchup_callback", e); + exception_error("tag_saved_callback", e); } }