| @@ -76,15 +76,17 @@ TFD = function(id, head) { | |||||
| TFDClerk.api_get = function(tfd, params, done, fail, always) { | TFDClerk.api_get = function(tfd, params, done, fail, always) { | ||||
| TFDClerk._api.get(params) | TFDClerk._api.get(params) | ||||
| .done(function(data) { | .done(function(data) { | ||||
| if (done !== undefined) | |||||
| if (done) | |||||
| done.call(tfd, data); | done.call(tfd, data); | ||||
| }) | }) | ||||
| .fail(function(error) { | .fail(function(error) { | ||||
| if (done !== undefined) | |||||
| if (fail) | |||||
| fail.call(tfd, error); | fail.call(tfd, error); | ||||
| else | |||||
| tfd._error("API query failure", error); | |||||
| }) | }) | ||||
| .always(function() { | .always(function() { | ||||
| if (always !== undefined) | |||||
| if (always) | |||||
| always.call(tfd); | always.call(tfd); | ||||
| }); | }); | ||||
| }; | }; | ||||
| @@ -207,9 +209,7 @@ TFD.prototype._with_content = function(callback) { | |||||
| callback.call(this, content); | callback.call(this, content); | ||||
| for (var i in this._wikitext_callbacks) | for (var i in this._wikitext_callbacks) | ||||
| this._wikitext_callbacks[i].call(this, content); | this._wikitext_callbacks[i].call(this, content); | ||||
| }, function(error) { | |||||
| this._error("API query failure", error); | |||||
| }, function() { | |||||
| }, null, function() { | |||||
| this._wikitext_callbacks = []; | this._wikitext_callbacks = []; | ||||
| }); | }); | ||||
| }; | }; | ||||
| @@ -339,6 +339,9 @@ TFD.prototype._build_close_results = function() { | |||||
| else | else | ||||
| var choices = ["Delete", "Keep", "Redirect", "No consensus"]; | var choices = ["Delete", "Keep", "Redirect", "No consensus"]; | ||||
| // TODO: block submit until one is selected; possibly disable individual | |||||
| // action options based on what is picked | |||||
| var elems = $("<div/>"); | var elems = $("<div/>"); | ||||
| $("<label/>").append($("<input/>", { | $("<label/>").append($("<input/>", { | ||||
| name: "result-speedy", | name: "result-speedy", | ||||
| @@ -372,21 +375,56 @@ TFD.prototype._build_close_results = function() { | |||||
| return elems; | return elems; | ||||
| }; | }; | ||||
| TFD.prototype._on_backlink_summary = function(tlinfo, ntrans, nmlinks) { | |||||
| TFD.prototype._on_backlink_summary = function(page, tlinfo, ntrans, nlinks) { | |||||
| tlinfo.empty().append($("<li/>").append($("<a/>", { | tlinfo.empty().append($("<li/>").append($("<a/>", { | ||||
| href: "/foobar", // TODO: actual URL here | href: "/foobar", // TODO: actual URL here | ||||
| title: "Transclusions of " + page, | title: "Transclusions of " + page, | ||||
| text: ntrans + " transclusions" | text: ntrans + " transclusions" | ||||
| }))); | }))); | ||||
| if (nmlinks > 0) | |||||
| if (nlinks != 0) | |||||
| tlinfo.append($("<li/>").append($("<a/>", { | tlinfo.append($("<li/>").append($("<a/>", { | ||||
| href: "/foobar", // TODO: actual URL here | href: "/foobar", // TODO: actual URL here | ||||
| title: "Mainspace links to " + page, | title: "Mainspace links to " + page, | ||||
| text: nmlinks + " mainspace links" | |||||
| text: nlinks + " mainspace links" | |||||
| }))); | }))); | ||||
| }; | }; | ||||
| TFD.prototype._load_backlink_summary = function(page, tlinfo) { | |||||
| var limit = TFDClerk._sysop ? 5000 : 500; | |||||
| TFDClerk.api_get(this, { | |||||
| action: "query", | |||||
| list: "embeddedin|backlinks", | |||||
| eititle: page, | |||||
| eilimit: limit, | |||||
| bltitle: page, | |||||
| blnamespace: "0|10", | |||||
| bllimit: limit, | |||||
| blredirect: "" | |||||
| }, function(data) { | |||||
| if (data["continue"] && data["continue"].eicontinue) | |||||
| var ntrans = limit + "+"; | |||||
| else | |||||
| var ntrans = data.query.embeddedin.length; | |||||
| if (data["continue"] && data["continue"].blcontinue) | |||||
| var nlinks = limit + "+"; | |||||
| else | |||||
| var nlinks = data.query.backlinks.reduce(function(acc, pg) { | |||||
| var c = 0; | |||||
| if (pg.ns == 0) | |||||
| c++; | |||||
| if (pg.redirlinks) | |||||
| c += pg.redirlinks.filter(function(rl) { | |||||
| return rl.ns == 0; | |||||
| }).length; | |||||
| return acc + c; | |||||
| }, 0); | |||||
| this._on_backlink_summary(page, tlinfo, ntrans, nlinks); | |||||
| }); | |||||
| } | |||||
| TFD.prototype._build_close_action_entry = function(page) { | TFD.prototype._build_close_action_entry = function(page) { | ||||
| var redlink = this.head.nextUntil("h4").filter("ul").first() | var redlink = this.head.nextUntil("h4").filter("ul").first() | ||||
| .find("a").filter(function() { return $(this).text() == page; }) | .find("a").filter(function() { return $(this).text() == page; }) | ||||
| @@ -394,7 +432,7 @@ TFD.prototype._build_close_action_entry = function(page) { | |||||
| var tlinfo = $("<ul/>", {style: "display: inline;"}) | var tlinfo = $("<ul/>", {style: "display: inline;"}) | ||||
| .append(this._build_loading_node("li", "Fetching transclusions")); | .append(this._build_loading_node("li", "Fetching transclusions")); | ||||
| // TODO: callback to fetch backlink data and call _on_backlink_summary | |||||
| this._load_backlink_summary(page, tlinfo); | |||||
| return $("<li/>").append($("<a/>", { | return $("<li/>").append($("<a/>", { | ||||
| href: mw.util.getUrl(page), | href: mw.util.getUrl(page), | ||||
| @@ -482,8 +520,6 @@ TFD.prototype._on_date_change = function() { | |||||
| })); | })); | ||||
| if (date == (new Date().toLogDateFormat())) | if (date == (new Date().toLogDateFormat())) | ||||
| info.append($("<span/>", {text: " (today)"})); | info.append($("<span/>", {text: " (today)"})); | ||||
| }, function(error) { | |||||
| this._error("API query failure", error); | |||||
| }); | }); | ||||
| }; | }; | ||||