Browse Source

bayes: properly reset score when going good -> ugly
article: add helper to refresh article score pic, properly set scorepic title

Andrew Dolgov 5 years ago
parent
commit
a72cd54ce1
4 changed files with 45 additions and 3 deletions
  1. 12 0
      classes/article.php
  2. 29 0
      js/viewfeed.js
  3. 2 1
      plugins/af_sort_bayes/init.js
  4. 2 2
      plugins/af_sort_bayes/init.php

+ 12 - 0
classes/article.php

@@ -215,6 +215,18 @@ class Article extends Handler_Protected {
 			score = '$score' WHERE ref_id IN ($ids) AND owner_uid = " . $_SESSION["uid"]);
 
 		print json_encode(array("id" => $ids,
+			"score" => (int)$score,
+			"score_pic" => get_score_pic($score)));
+	}
+
+	function getScore() {
+		$id = $this->dbh->escape_string($_REQUEST['id']);
+
+		$result = $this->dbh->query("SELECT score FROM ttrss_user_entries WHERE ref_id = $id AND owner_uid = " . $_SESSION["uid"]);
+		$score = $this->dbh->fetch_result($result, 0, "score");
+
+		print json_encode(array("id" => $id,
+			"score" => (int)$score,
 			"score_pic" => get_score_pic($score)));
 	}
 

+ 29 - 0
js/viewfeed.js

@@ -2293,6 +2293,34 @@ function setSelectionScore() {
 	}
 }
 
+function updateScore(id) {
+	try {
+		var pic = $$("#RROW-" + id + " .hlScorePic")[0];
+
+		if (pic) {
+
+			var query = "op=article&method=getScore&id=" + param_escape(id);
+
+			new Ajax.Request("backend.php", {
+				parameters: query,
+				onComplete: function(transport) {
+					console.log(transport.responseText);
+
+					var reply = JSON.parse(transport.responseText);
+
+					if (reply) {
+						pic.src = pic.src.replace(/score_.*?\.png/, reply["score_pic"]);
+						pic.setAttribute("score", reply["score"]);
+						pic.setAttribute("title", reply["score"]);
+					}
+				} });
+		}
+
+	} catch (e) {
+		exception_error("updateScore", e);
+	}
+}
+
 function changeScore(id, pic) {
 	try {
 		var score = pic.getAttribute("score");
@@ -2312,6 +2340,7 @@ function changeScore(id, pic) {
 					if (reply) {
 						pic.src = pic.src.replace(/score_.*?\.png/, reply["score_pic"]);
 						pic.setAttribute("score", new_score);
+						pic.setAttribute("title", new_score);
 					}
 				} });
 		}

+ 2 - 1
plugins/af_sort_bayes/init.js

@@ -2,12 +2,13 @@ function bayesTrain(id, train_up) {
 	try {
 
 		var query = "backend.php?op=pluginhandler&plugin=af_sort_bayes&method=trainArticle&article_id=" + param_escape(id) +
-			"&train_up=" + train_up;
+			"&train_up=" + param_escape(train_up);
 
 		new Ajax.Request("backend.php", {
 			parameters: query,
 			onComplete: function(transport) {
 				notify(transport.responseText);
+				updateScore(id);
 			} });
 
 	} catch (e) {

+ 2 - 2
plugins/af_sort_bayes/init.php

@@ -79,14 +79,14 @@ class Af_Sort_Bayes extends Plugin {
 				switch ($current_category) {
 					case "UGLY":
 						$dst_category = "BAD";
-						$score = -$this->score_modifier;
+						$score = $this->score_modifier;
 						break;
 					case "BAD":
 						$dst_category = "BAD";
 						break;
 					case "GOOD":
 						$dst_category = "UGLY";
-						$score = -$this->score_modifier;
+						$score = 0;
 						break;
 				}
 			}