]>
Commit | Line | Data |
---|---|---|
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 | }); |