chiark / gitweb /
Make it pass W3C validator: add DTD, work around crazy javascript escaping, etc
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 14 Aug 2009 14:02:36 +0000 (15:02 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 14 Aug 2009 14:02:36 +0000 (15:02 +0100)
yarrg/CommodsWeb.pm
yarrg/web/dataage
yarrg/web/lookup
yarrg/web/source.tar.gz

index 0c86e6c..46b32e6 100644 (file)
@@ -38,6 +38,7 @@ use warnings;
 
 use DBI;
 use POSIX;
+use JSON;
 
 use Commods;
 use CommodsDatabase;
@@ -50,7 +51,8 @@ BEGIN {
     our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
     $VERSION     = 1.00;
     @ISA         = qw(Exporter);
-    @EXPORT      = qw(&dbw_connect &ocean_list $sourcebasedir);
+    @EXPORT      = qw(&dbw_connect &ocean_list $sourcebasedir
+                     to_json to_json_protecttags);
     %EXPORT_TAGS = ( );
 
     @EXPORT_OK   = qw();
@@ -100,4 +102,11 @@ sub dbw_connect ($) {
     return dbr_connect($datadir, $ocean);
 }
 
+sub to_json_protecttags ($) {
+    my ($v) = @_;
+    my $j= to_json($v);
+    $j =~ s,/,\\/,g;
+    return $j;
+}
+
 1;
index 313f892..6ca9444 100644 (file)
@@ -67,7 +67,7 @@ $sth->execute();
 
 </%perl>
 
-<script type="text/javascript">
+<&| script &>
 da_pageload= Date.now();
 da_ages= { };
 function da_Refresh() {
@@ -85,7 +85,7 @@ function da_Refresh() {
     el.innerHTML= newhtml;
   }
 }
-</script>
+</&script>
 
 <table>
 <tr>
@@ -99,7 +99,7 @@ function da_Refresh() {
 <tr> <td><% $row->{'archipelago'} |h
  %>  <td><% $row->{'islandname'} |h
  %>  <td id="<% $elid %>"><% $prettyprint_age->($age) %> </tr>
-<script type="text/javascript"> da_ages['<% $elid %>']= <% $age %>; </script>
+<&| script &> da_ages['<% $elid %>']= <% $age %>; </&script>
 % }
 </table>
 
@@ -114,11 +114,11 @@ Time since this page loaded:
 <input type=submit name=submit value="Reload">
 </form>
 
-<script type="text/javascript">
+<&| script &>
 da_ages['daid_loaded']= 0;
 window.onload= da_Refresh;
 window.setInterval(da_Refresh, 10000);
-</script>
+</&script>
 
 <%init>
 use POSIX;
index 9206d4b..5a441b3 100755 (executable)
@@ -134,7 +134,9 @@ foreach my $var (@vars) {
                        my %qf= (%baseqf,%queryqf);
                        delete $qf{$lname};
                        $qf{$lname}= $value if $cvalix;
-                       print '<a href="',$quri->(%qf),'">';
+</%perl>
+<a href="<% $quri->(%qf) |h %>">
+<%perl>
                        $after= '</a>';
                }
                print $html, $after;
@@ -159,7 +161,7 @@ $routestring => ''
 % if ($a{Query} eq 'route') {
 
 <h1>Specify route</h1>
-<form action="<% $quri->() %>" method="get">
+<form action="<% $quri->() |h %>" method="get">
 
 %#---------- textbox, user enters route as string ----------
 % if (!$a{Dropdowns}) {
@@ -167,7 +169,7 @@ $routestring => ''
 Enter route (islands, or archipelagoes, separated by |s or commas;
  abbreviations are OK):<br/>
 
-<script type="text/javascript">
+<&| script &>
 tr_uri= "routetextstring?format=json&type=text/xml"
                + "&ocean=<% uri_escape($a{Ocean}) %>";
 
@@ -206,7 +208,7 @@ function tr_Ready() {
   tr_Request();
 }
 window.onload= tr_Needed;
-</script>
+</&script>
 
 <input type="text" id="routestring" name="routestring" size=80
  value="<% $routestring |h %>"
@@ -269,8 +271,8 @@ foreach my $arch (keys %islandlistdata) {
 
 <input type=hidden name=dropdowns value="<% $a{Dropdowns} |h %>">
 
-<script type="text/javascript">
-ms_lists= <% to_json(\%resetislandlistdata) %>;
+<&| script &>
+ms_lists= <% to_json_protecttags(\%resetislandlistdata) %>;
 function ms_Setarch(dd) {
   debug('ms_SetArch '+dd+' arch='+arch);
   var arch= document.getElementsByName('archipelago'+dd).item(0).value;
@@ -281,7 +283,7 @@ function ms_Setarch(dd) {
   select.innerHTML= got;
   debug('ms_SetArch '+dd+' arch='+arch+' innerHTML set');
 }
-</script>
+</&script>
 
 <table style="table-layout:fixed; width:90%;">
 
@@ -398,14 +400,14 @@ Debug log:
 </pre>
 % }
 
-<script type="text/javascript">
+<&| script &>
 function debug (m) {
 % if ($debug) {
   var node= document.getElementById('debug_log');
   node.innerHTML += "\n" + m + "\n";
 % }
 }
-</script>
+</&script>
 
 <& footer &>
 
@@ -413,6 +415,5 @@ function debug (m) {
 use CommodsWeb;
 use HTML::Entities;
 use URI::Escape;
-use JSON;
 
 </%init>
index 7a0525a..8825da4 100755 (executable)
@@ -33,7 +33,9 @@
  the YARRG website's source code.
 
 
-</%doc><%perl>
+</%doc><%flags>
+inherit => undef
+</%flags><%perl>
 use IO::Pipe;
 use CommodsWeb;