| @@ -107,6 +107,18 @@ Date.prototype.toDatePickerFormat = function() { | |||||
| return this.toISOString().slice(0, 10); | return this.toISOString().slice(0, 10); | ||||
| } | } | ||||
| Date.prototype.toLogDateFormat = function() { | |||||
| if (isNaN(this.valueOf())) | |||||
| return null; | |||||
| var months = [ | |||||
| "January", "February", "March", "April", "May", "June", "July", | |||||
| "August", "September", "October", "November", "December"]; | |||||
| var month = months[this.getUTCMonth()]; | |||||
| return this.getUTCFullYear() + " " + month + " " + this.getUTCDate(); | |||||
| } | |||||
| TFD.prototype._block_submit = function(reason) { | TFD.prototype._block_submit = function(reason) { | ||||
| if (this._submit_blockers.indexOf(reason) < 0) | if (this._submit_blockers.indexOf(reason) < 0) | ||||
| this._submit_blockers.push(reason); | this._submit_blockers.push(reason); | ||||
| @@ -428,23 +440,51 @@ TFD.prototype._add_close_actions = function() { | |||||
| }; | }; | ||||
| TFD.prototype._get_relist_date = function() { | TFD.prototype._get_relist_date = function() { | ||||
| var months = [ | |||||
| "January", "February", "March", "April", "May", "June", "July", | |||||
| "August", "September", "October", "November", "December"]; | |||||
| var date = new Date($("#tfdclerk-date-" + this.id).val()); | |||||
| var month = months[date.getUTCMonth()]; | |||||
| return date.getUTCFullYear() + " " + month + " " + date.getUTCDate(); | |||||
| return new Date(this.box.find(".tfdclerk-date").val()).toLogDateFormat(); | |||||
| }; | }; | ||||
| TFD.prototype._on_date_change = function() { | TFD.prototype._on_date_change = function() { | ||||
| var date = this._get_relist_date(); | var date = this._get_relist_date(); | ||||
| var this_date = mw.config.get("wgTitle").split("/Log/")[1]; | |||||
| var title = "Wikipedia:Templates for discussion/Log/" + date; | |||||
| var info = this.box.find(".tfdclerk-discussion-info"); | |||||
| info.empty(); | |||||
| if (date == null || date == this_date) | |||||
| this._block_submit("bad-date"); | |||||
| if (mw.config.get("wgTitle") == "Templates for discussion") | |||||
| var this_date = this.head.prevAll().filter("h3").first().find("a") | |||||
| .prop("title").split("/Log/")[1]; | |||||
| else | else | ||||
| this._unblock_submit("bad-date"); | |||||
| var this_date = mw.config.get("wgTitle").split("/Log/")[1]; | |||||
| if (date == null || date == this_date) { | |||||
| this._block_submit("bad-date"); | |||||
| info.append($("<span/>", { | |||||
| text: date == this_date ? "Same as current date" : "Invalid date", | |||||
| style: "color: #A00;" | |||||
| })); | |||||
| return; | |||||
| } | |||||
| this._unblock_submit("bad-date"); | |||||
| this._block_submit("checking-discussion"); | |||||
| info.append(this._build_loading_node("span", "Checking discussion")); | |||||
| TFDClerk.api_get(this, { | |||||
| action: "query", | |||||
| indexpageids: "", | |||||
| titles: title | |||||
| }, function(data) { | |||||
| this._unblock_submit("checking-discussion"); | |||||
| info.empty().append($("<span/>", {text: "Log: "})).append($("<a/>", { | |||||
| href: mw.util.getUrl(title), | |||||
| title: title, | |||||
| text: date, | |||||
| addClass: data.query.pageids[0] < 0 ? "new" : "" | |||||
| })); | |||||
| if (date == (new Date().toLogDateFormat())) | |||||
| info.append($("<span/>", {text: " (today)"})); | |||||
| }, function(error) { | |||||
| this._error("API query failure", error); | |||||
| }); | |||||
| }; | }; | ||||
| TFD.prototype.close = function() { | TFD.prototype.close = function() { | ||||
| @@ -498,11 +538,15 @@ TFD.prototype.relist = function() { | |||||
| }), | }), | ||||
| $("<input/>", { | $("<input/>", { | ||||
| id: "tfdclerk-date-" + this.id, | id: "tfdclerk-date-" + this.id, | ||||
| addClass: "tfdclerk-date", | |||||
| name: "date", | name: "date", | ||||
| type: "date", | type: "date", | ||||
| value: new Date().toDatePickerFormat(), | value: new Date().toDatePickerFormat(), | ||||
| change: function() { self._on_date_change(); } | change: function() { self._on_date_change(); } | ||||
| }) | |||||
| }).add($("<span/>", { | |||||
| addClass: "tfdclerk-discussion-info", | |||||
| style: "margin-left: 0.5em; vertical-align: middle;" | |||||
| })) | |||||
| ], | ], | ||||
| [ | [ | ||||
| $("<label/>", { | $("<label/>", { | ||||
| @@ -518,6 +562,7 @@ TFD.prototype.relist = function() { | |||||
| }) | }) | ||||
| ] | ] | ||||
| ]); | ]); | ||||
| this._on_date_change(); | |||||
| }); | }); | ||||
| }; | }; | ||||