X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?p=ypp-sc-tools.db-live.git;a=blobdiff_plain;f=yarrg%2Fweb%2Fqtextstring;h=c958915ae33fdfa012c0e9ab639db0636d84b95e;hp=c0f2482fe63bda47ceb9e1c0c71613b62ea4b1ce;hb=422fab9f34f08090bca02f67cb41bba31f816c7e;hpb=38e2919be138f8a77eef7a2fc93d34eff8897f5e diff --git a/yarrg/web/qtextstring b/yarrg/web/qtextstring index c0f2482..c958915 100644 --- a/yarrg/web/qtextstring +++ b/yarrg/web/qtextstring @@ -1,56 +1,119 @@ +<%doc> + + This is part of the YARRG website. YARRG is a tool and website + for assisting players of Yohoho Puzzle Pirates. + + Copyright (C) 2009 Ian Jackson + Copyright (C) 2009 Clare Boothby + + YARRG's client code etc. is covered by the ordinary GNU GPL (v3 or later). + The YARRG website is covered by the GNU Affero GPL v3 or later, which + basically means that every installation of the website will let you + download the source. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + + Yohoho and Puzzle Pirates are probably trademarks of Three Rings and + are used without permission. This program is not endorsed or + sponsored by Three Rings. + + + This Mason component handles analysis of text string entries, including + both the AJAX calls from web page javascript and the entry validation + and processing calls from other components. + + + <%args> -$thingstring $qa => $m->caller_args(1)->{'qa'} +$dbh +$thingstring +$emsgstore +$onresults +$prefix => 'ts'; +$helpref => undef; +<%perl> +my $stringval= $qa->{$thingstring}; +$stringval='' if !defined $stringval; -Enter route (islands, or archipelagoes, separated by |s or commas; - abbreviations are OK):
+my $p= $prefix.'_'; + <&| script &> -ts_uri= "check_<% $thingstring %>?format=json&type=text/xml" +<%$p%>uri= "qtextstringcheck?format=application/json&ctype=text/xml" + + "&what=<% $thingstring %>" + "&ocean=<% uri_escape($qa->{Ocean}) %>"; -ts_timeout=false; -ts_request=false; -ts_done=''; -ts_needed=''; -function ts_Later(){ - window.clearTimeout(ts_timeout); - ts_timeout = window.setTimeout(ts_Needed, 500); +<%$p%>timeout=false; +<%$p%>request=false; +<%$p%>done=''; +<%$p%>needed=''; +function <%$p%>Later(){ + window.clearTimeout(<%$p%>timeout); + <%$p%>timeout = window.setTimeout(<%$p%>Needed, 500); } -function ts_Needed(){ - window.clearTimeout(ts_timeout); - ts_element= document.getElementById('<% $thingstring %>'); - ts_needed= ts_element.value; - ts_Request(); +function <%$p%>Needed(){ + window.clearTimeout(<%$p%>timeout); + <%$p%>element= document.getElementById('<% $thingstring %>'); + <%$p%>needed= <%$p%>element.value; + <%$p%>Request(); } -function ts_Request(){ - if (ts_request || ts_needed==ts_done) return; - ts_done= ts_needed; - ts_request= new XMLHttpRequest(); - uri= ts_uri+'&string='+encodeURIComponent(ts_needed); - ts_request.open('GET', uri); - ts_request.onreadystatechange= ts_Ready; - ts_request.send(null); +function <%$p%>Request(){ + if (<%$p%>request || <%$p%>needed==<%$p%>done) return; + <%$p%>done= <%$p%>needed; + <%$p%>request= new XMLHttpRequest(); + uri= <%$p%>uri+'&string='+encodeURIComponent(<%$p%>needed); + <%$p%>request.open('GET', uri); + <%$p%>request.onreadystatechange= <%$p%>Ready; + <%$p%>request.send(null); } -function ts_Ready() { - if (ts_request.readyState != 4) return; - if (ts_request.status == 200) { - response= ts_request.responseText; +function <%$p%>Ready() { + if (<%$p%>request.readyState != 4) return; + if (<%$p%>request.status == 200) { + response= <%$p%>request.responseText; + debug('<%$p%> got '+response); eval('results='+response); - toedit= document.getElementById('ts_results'); + toedit= document.getElementById('<%$p%>results'); toedit.innerHTML= results.show; } - ts_request= false; - ts_Request(); + <%$p%>request= false; + <%$p%>Request(); } -window.onload= ts_Needed; +register_onload(<%$p%>Needed); content %> id="<% $thingstring %>" name="<% $thingstring %>" - onchange="ts_Needed();" onkeyup="ts_Later();" - value="<% $qa->{$thingstring} |h %>" - > + onchange="<%$p%>Needed();" onkeyup="<%$p%>Later();" + value="<% $stringval |h %>" + ><% defined($helpref) ? "[?]" : '' %>
-
 

+
 

+ +<%perl> +if (length $thingstring) { + my ($emsg,$canonstring,@results)= $m->comp('qtextstringcheck', + what => $thingstring, + ocean => $qa->{Ocean}, + string => $stringval, + format => 'return' + ); + if (defined $emsg and length $emsg) { + $$emsgstore='' unless defined $$emsgstore; + $$emsgstore .= $emsg. ' '; + } + $onresults->(@results); +} +