]> jfr.im git - irc/quakenet/qwebirc.git/blob - js/ui/panes/feedback.js
Merge.
[irc/quakenet/qwebirc.git] / js / ui / panes / feedback.js
1 qwebirc.ui.FeedbackPane = new Class({
2 Implements: [Events],
3 initialize: function(parent) {
4 this.textboxVisible = false;
5 var delayfn = function() { parent.set("html", "<div class=\"loading\">Loading. . .</div>"); };
6 var cb = delayfn.delay(500);
7
8 this.addEvent("select", this.onSelect);
9
10 var r = qwebirc.ui.RequestTransformHTML({url: qwebirc.global.staticBaseURL + "panes/feedback.html", update: parent, onSuccess: function() {
11 $clear(cb);
12 parent.getElement("input[class=close]").addEvent("click", function() {
13 this.fireEvent("close");
14 }.bind(this));
15 parent.getElement("input[class=close2]").addEvent("click", function() {
16 this.fireEvent("close");
17 }.bind(this));
18
19 var textbox = parent.getElement("textarea");
20 this.textbox = textbox;
21 parent.getElement("input[class=submitfeedback]").addEvent("click", function() {
22 this.sendFeedback(parent, textbox, textbox.value);
23 }.bind(this));
24
25 this.textboxVisible = true;
26 this.onSelect();
27 }.bind(this)});
28 r.get();
29 },
30 onSelect: function() {
31 if(this.textboxVisible)
32 this.textbox.focus();
33 },
34 sendFeedback: function(parent, textbox, text) {
35 text = text.replace(/^\s*/, "").replace(/\s*$/, "");
36 var mainText = parent.getElement("p[class=maintext]");
37
38 if(text.length < 25) {
39 /* TODO: lie and throw away */
40 mainText.set("text", "I don't suppose you could enter a little bit more? Thanks!");
41 textbox.focus();
42 return;
43 }
44
45 this.textboxVisible = false;
46 var mainBody = parent.getElement("div[class=enterarea]");
47 mainBody.setStyle("display", "none");
48
49 var messageBody = parent.getElement("div[class=messagearea]");
50 var messageText = parent.getElement("p[class=messagetext]");
51 var messageClose = parent.getElement("input[class=close2]");
52
53 messageText.set("text", "Submitting. . .");
54 messageBody.setStyle("display", "");
55
56 /* basic checksum to stop really lame kiddies spamming */
57 var checksum = 0;
58 var esctext = encodeURIComponent(text);
59 for(var i=0;i<text.length;i++)
60 checksum = ((checksum + 1) % 256) ^ (text.charCodeAt(i) % 256);
61
62 var r = new Request({url: qwebirc.global.dynamicBaseURL + "feedback", onSuccess: function() {
63 messageText.set("text", "Submitted successfully, thanks for the feedback!");
64 messageClose.setStyle("display", "");
65 }, onFailure: function() {
66 this.textboxVisible = true;
67 messageBody.setStyle("display", "none");
68 mainBody.setStyle("display", "");
69 mainText.set("text", "Looks like something went wrong submitting :(");
70 }.bind(this)}).send("feedback=" + text + "&c=" + checksum);
71 }
72 });