| @@ -28,17 +28,20 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |||||
| SOFTWARE. | SOFTWARE. | ||||
| */ | */ | ||||
| mw.loader.using(["mediawiki.api"], function() { | |||||
| mw.loader.using(["mediawiki.ui", "jquery.ui.core"], function() { | |||||
| if (mw.config.get("wgNamespaceNumber") != 4 || ( | if (mw.config.get("wgNamespaceNumber") != 4 || ( | ||||
| mw.config.get("wgTitle") != "Templates for discussion" && | mw.config.get("wgTitle") != "Templates for discussion" && | ||||
| mw.config.get("wgTitle").indexOf("Templates for discussion/Log/2") != 0)) | mw.config.get("wgTitle").indexOf("Templates for discussion/Log/2") != 0)) | ||||
| return; | return; | ||||
| TFDClerk = { | TFDClerk = { | ||||
| // TODO | |||||
| sysop: $.inArray("sysop", mw.config.get("wgUserGroups")) >= 0 | sysop: $.inArray("sysop", mw.config.get("wgUserGroups")) >= 0 | ||||
| }; | }; | ||||
| TFDClerk._get_today = function() { | |||||
| return new Date().toISOString().slice(0, 10); | |||||
| }; | |||||
| TFDClerk._guard = function(head) { | TFDClerk._guard = function(head) { | ||||
| if (head.data("guard")) | if (head.data("guard")) | ||||
| return false; | return false; | ||||
| @@ -54,38 +57,103 @@ mw.loader.using(["mediawiki.api"], function() { | |||||
| var head = box.prev("h4"); | var head = box.prev("h4"); | ||||
| box.remove(); | box.remove(); | ||||
| TFDClerk._unguard(head); | TFDClerk._unguard(head); | ||||
| } | |||||
| }; | |||||
| TFDClerk._add_option_box = function(head, verb) { | |||||
| var box = $("<div/>", { addClass: "tfdclerk-" + verb + "-box" }) | |||||
| TFDClerk._add_option_box = function(head, verb, title, callback, options) { | |||||
| var box = $("<div/>", { | |||||
| id: "tfdclerk-" + verb + "-box-" + head.uniqueId().prop("id"), | |||||
| addClass: "tfdclerk-" + verb + "-box" | |||||
| }) | |||||
| .css("border", "1px solid #AAA") | .css("border", "1px solid #AAA") | ||||
| .css("background-color", "#F5F5F5") | |||||
| .css("background-color", "#F9F9F9") | |||||
| .css("margin", "0.5em 0") | .css("margin", "0.5em 0") | ||||
| .css("padding", "1em"); | |||||
| box.append( | |||||
| $("<button/>", { | |||||
| .css("padding", "1em") | |||||
| .append($("<h5/>", {text: title, style: "padding-top: 0;"})); | |||||
| options(box); | |||||
| box.append($("<button/>", { | |||||
| text: verb.charAt(0).toUpperCase() + verb.slice(1), | |||||
| addClass: "mw-ui-button mw-ui-progressive", | |||||
| click: function() { | |||||
| callback(head, box); | |||||
| } | |||||
| })) | |||||
| .append($("<button/>", { | |||||
| text: "Cancel", | text: "Cancel", | ||||
| click: function(b) { | |||||
| return function() { TFDClerk._remove_option_box(b); }; | |||||
| }(box) | |||||
| addClass: "mw-ui-button", | |||||
| click: function() { | |||||
| TFDClerk._remove_option_box(box); | |||||
| } | |||||
| })) | })) | ||||
| .insertAfter(head); | .insertAfter(head); | ||||
| }; | }; | ||||
| TFDClerk._add_option_table = function(box, options) { | |||||
| var table = $("<table/>"); | |||||
| $.each(options, function(i, opt) { | |||||
| opt.attrs.id = box.prop("id") + "-" + opt.id; | |||||
| table.append( | |||||
| $("<tr/>").append( | |||||
| $("<td/>").append( | |||||
| $("<label/>", { | |||||
| for: opt.attrs.id, | |||||
| text: opt.label + ":" | |||||
| }))) | |||||
| .append($("<td/>").append($(opt.tag, opt.attrs))) | |||||
| ); | |||||
| }); | |||||
| box.append(table); | |||||
| }; | |||||
| TFDClerk._do_close = function(head, box) { | |||||
| // TODO | |||||
| TFDClerk._remove_option_box(box); | |||||
| }; | |||||
| TFDClerk._do_relist = function(head, box) { | |||||
| // TODO | |||||
| TFDClerk._remove_option_box(box); | |||||
| }; | |||||
| TFDClerk.close = function(head) { | TFDClerk.close = function(head) { | ||||
| if (!TFDClerk._guard(head)) | if (!TFDClerk._guard(head)) | ||||
| return; | return; | ||||
| TFDClerk._add_option_box(head, "close"); | |||||
| // TODO | |||||
| TFDClerk._add_option_box( | |||||
| head, "close", "Closing discussion", TFDClerk._do_close, | |||||
| function(box) { | |||||
| // TODO | |||||
| }); | |||||
| }; | }; | ||||
| TFDClerk.relist = function(head) { | TFDClerk.relist = function(head) { | ||||
| if (!TFDClerk._guard(head)) | if (!TFDClerk._guard(head)) | ||||
| return; | return; | ||||
| TFDClerk._add_option_box(head, "relist"); | |||||
| // TODO | |||||
| TFDClerk._add_option_box( | |||||
| head, "relist", "Relisting discussion", TFDClerk._do_relist, | |||||
| function(box) { | |||||
| TFDClerk._add_option_table(box, [ | |||||
| { | |||||
| id: "date", | |||||
| label: "New date", | |||||
| tag: "<input/>", | |||||
| attrs: { | |||||
| type: "date", | |||||
| value: TFDClerk._get_today() | |||||
| } | |||||
| }, | |||||
| { | |||||
| id: "comments", | |||||
| label: "Comments", | |||||
| tag: "<textarea/>", | |||||
| attrs: { | |||||
| rows: 2, | |||||
| cols: 60, | |||||
| placeholder: "Optional. Do not sign." | |||||
| } | |||||
| } | |||||
| ]); | |||||
| }); | |||||
| }; | }; | ||||
| TFDClerk._build_hook = function(head, verb, callback) { | TFDClerk._build_hook = function(head, verb, callback) { | ||||
| @@ -95,9 +163,10 @@ mw.loader.using(["mediawiki.api"], function() { | |||||
| href: "#", | href: "#", | ||||
| text: verb, | text: verb, | ||||
| title: "tfdclerk: " + verb + " discussion", | title: "tfdclerk: " + verb + " discussion", | ||||
| click: function(h) { | |||||
| return function() { callback($(h)); return false; }; | |||||
| }(head) | |||||
| click: function() { | |||||
| callback($(head)); | |||||
| return false; | |||||
| } | |||||
| })) | })) | ||||
| .append($("<span/>", {addClass: "mw-editsection-bracket", text: "]"})); | .append($("<span/>", {addClass: "mw-editsection-bracket", text: "]"})); | ||||
| }; | }; | ||||