|
@@ -61,8 +61,9 @@ TFD = function(id, head) { |
|
|
this.id = id; |
|
|
this.id = id; |
|
|
this.head = head; |
|
|
this.head = head; |
|
|
this.box = null; |
|
|
this.box = null; |
|
|
// TODO: pending conditions for submit button |
|
|
|
|
|
|
|
|
|
|
|
this._guard = false; |
|
|
this._guard = false; |
|
|
|
|
|
this._submit_blockers = []; |
|
|
this._wikitext = undefined; |
|
|
this._wikitext = undefined; |
|
|
this._wikitext_callbacks = []; |
|
|
this._wikitext_callbacks = []; |
|
|
}; |
|
|
}; |
|
@@ -101,7 +102,24 @@ Date.prototype.toDatePickerFormat = function() { |
|
|
return this.toISOString().slice(0, 10); |
|
|
return this.toISOString().slice(0, 10); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
TFD.prototype._block_submit = function(reason) { |
|
|
|
|
|
if (this._submit_blockers.indexOf(reason) < 0) |
|
|
|
|
|
this._submit_blockers.push(reason); |
|
|
|
|
|
|
|
|
|
|
|
this.box.find(".tfdclerk-submit").prop("disabled", true); |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
TFD.prototype._unblock_submit = function(reason) { |
|
|
|
|
|
var index = this._submit_blockers.indexOf(reason); |
|
|
|
|
|
if (index >= 0) |
|
|
|
|
|
this._submit_blockers.splice(index, 1); |
|
|
|
|
|
|
|
|
|
|
|
if (this._submit_blockers.length == 0) |
|
|
|
|
|
this.box.find(".tfdclerk-submit").prop("disabled", false); |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
TFD.prototype._error = function(msg, extra) { |
|
|
TFD.prototype._error = function(msg, extra) { |
|
|
|
|
|
// TODO: expand: advise refreshing, reporting persistent errors |
|
|
var elem = $("<span/>", { |
|
|
var elem = $("<span/>", { |
|
|
text: "Error: " + (extra ? msg + ": " : msg), |
|
|
text: "Error: " + (extra ? msg + ": " : msg), |
|
|
style: "color: #A00;" |
|
|
style: "color: #A00;" |
|
@@ -111,9 +129,8 @@ TFD.prototype._error = function(msg, extra) { |
|
|
text: extra, |
|
|
text: extra, |
|
|
style: "font-family: monospace;" |
|
|
style: "font-family: monospace;" |
|
|
})); |
|
|
})); |
|
|
// TODO: more - advise refreshing, reporting persistent errors |
|
|
|
|
|
elem.insertAfter(this.box.find("h5")); |
|
|
elem.insertAfter(this.box.find("h5")); |
|
|
this.box.find(".tfdclerk-submit").prop("disabled", true); |
|
|
|
|
|
|
|
|
this._block_submit("error"); |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
TFD.prototype._get_section_number = function() { |
|
|
TFD.prototype._get_section_number = function() { |
|
@@ -286,6 +303,26 @@ TFD.prototype._add_close_actions = 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(); |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
TFD.prototype._on_date_change = function() { |
|
|
|
|
|
var date = this._get_relist_date(); |
|
|
|
|
|
var this_date = mw.config.get("wgTitle").split("/Log/")[1]; |
|
|
|
|
|
|
|
|
|
|
|
if (date == null || date == this_date) |
|
|
|
|
|
this._block_submit("bad-date"); |
|
|
|
|
|
else |
|
|
|
|
|
this._unblock_submit("bad-date"); |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
TFD.prototype.close = function() { |
|
|
TFD.prototype.close = function() { |
|
|
if (this._guard) |
|
|
if (this._guard) |
|
|
return; |
|
|
return; |
|
@@ -325,6 +362,7 @@ TFD.prototype.close = function() { |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
TFD.prototype.relist = function() { |
|
|
TFD.prototype.relist = function() { |
|
|
|
|
|
var self = this; |
|
|
if (this._guard) |
|
|
if (this._guard) |
|
|
return; |
|
|
return; |
|
|
this._guard = true; |
|
|
this._guard = true; |
|
@@ -341,7 +379,8 @@ TFD.prototype.relist = function() { |
|
|
id: "tfdclerk-date-" + this.id, |
|
|
id: "tfdclerk-date-" + this.id, |
|
|
name: "date", |
|
|
name: "date", |
|
|
type: "date", |
|
|
type: "date", |
|
|
value: new Date().toDatePickerFormat() |
|
|
|
|
|
|
|
|
value: new Date().toDatePickerFormat(), |
|
|
|
|
|
change: function() { self._on_date_change(); } |
|
|
}) |
|
|
}) |
|
|
], |
|
|
], |
|
|
[ |
|
|
[ |
|
|