/[suikacvs]/markup/html/html5/spec-ja/edit.cgi
Suika

Diff of /markup/html/html5/spec-ja/edit.cgi

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.3 by wakaba, Fri Jul 18 13:12:04 2008 UTC revision 1.9 by wakaba, Sun Aug 10 06:15:00 2008 UTC
# Line 14  sub htescape ($) { Line 14  sub htescape ($) {
14    return $s;    return $s;
15  } # htescape  } # htescape
16    
17  if ($path =~ m[^/([0-9a-z-]+)$]) {  if ($path =~ m[^/(_?[0-9a-z-]+)$]) {
18    my $name = $1;    my $name = $1;
19    my $file_name = $data_dir_name . $name . '.dat';    my $file_name = $data_dir_name . $name . '.dat';
20    if (-f $file_name) {    if (-f $file_name) {
# Line 39  textarea { Line 39  textarea {
39  }  }
40  </style>  </style>
41  <link rel=license href="./#license">  <link rel=license href="./#license">
42    <link rel=history href="../data/@{[htescape ($name)]}.dat,cvslog">
43  <body>  <body>
44  <h1>Edit &mdash; @{[htescape ($name)]}</h1>  <h1>Edit &mdash; @{[htescape ($name)]}</h1>
45  <form action accept-charset=utf-8 method=post>  <form action accept-charset=utf-8 method=post>
# Line 78  Allow: GET, POST Line 79  Allow: GET, POST
79  <title>English-Japanese Data Files</title>  <title>English-Japanese Data Files</title>
80  <link rel=history href="../data/,cvslog">  <link rel=history href="../data/,cvslog">
81  <link rel=license href="#license">  <link rel=license href="#license">
82    <link rel=stylesheet href="/www/style/html/xhtml">
83  <h1>English-Japanese Data Files</h1>  <h1>English-Japanese Data Files</h1>
84    
85  <ul>];  <ul>];
# Line 88  Allow: GET, POST Line 90  Allow: GET, POST
90    }    }
91    print q[</ul>    print q[</ul>
92    
93    <section id=tools>
94    <h2>Tools</h2>
95    
96    <ul>
97    <li><a href="../words">English-Japanese word mapping table</a>
98    <li id=find><a href="../find" rel=search>Find</a>
99    <li><a href="para/add">Add paragraph</a>
100    </ul>
101    </section>
102    
103  <section id=status>  <section id=status>
104  <h2>Status of translation</h2>  <h2>Status of translation</h2>
105    
# Line 119  contributions are licensed under the ter Line 131  contributions are licensed under the ter
131  </section>  </section>
132  ];  ];
133    exit;    exit;
134    } elsif ($path eq '/para/add') {
135      if ($ENV{REQUEST_METHOD} eq 'POST') {
136        eval q{ use CGI qw(param) };
137        my $data_file_name = param ('data-file');
138        $data_file_name =~ s/[^A-Za-z0-9_-]/_/g;
139        $data_file_name .= '.dat';
140        $data_file_name = $data_dir_name . $data_file_name;
141        if (-f $data_file_name) {
142          my $entry = '';
143          if (param ('pattern')) {
144            $entry .= "#pattern\n";
145          } else {
146            $entry .= "#en\n";
147          }
148          
149          my $en = param ('original-text');
150          $en =~ s/^\s+//;
151          $en =~ s/\x+\z//;
152          $en =~ s/\x0D?\x0A(?:\x0D?\x0A)+/\n/g;
153          $entry .= $en;
154    
155          $entry .= "\n#ja\n";
156          
157          my $ja = param ('translated-text');
158          $ja =~ s/^\s+//;
159          $ja =~ s/\x+\z//;
160          $ja =~ s/\x0D?\x0A(?:\x0D?\x0A)+/\n/g;
161          $entry .= $ja; # utf8
162    
163          open my $data_file, '>>', $data_file_name
164              or die "$0: $data_file_name: $!";
165          print $data_file "\n\n";
166          print $data_file $entry;
167          close $data_file;
168    
169          my $user = $ENV{REMOTE_USER};
170          $user =~ s/[^0-9A-Za-z_-]/_/g;
171          (system "cvs commit -m \"by remote user \'$user\'\" data > /dev/null") == 0 or die "$0: $?";
172    
173          print q[Status: 204 Saved; No Content
174    
175    ];
176          exit;
177        }
178      } else {
179        print q[Content-Type: text/html ; charset=utf-8
180    
181    <!DOCTYPE HTML>
182    <html lang=en>
183    <head>
184    <title>Add paragraph</title>
185    <link rel=license href="../#license">
186    <link rel=stylesheet href="/www/style/html/xhtml">
187    <style>
188    form p {
189      text-indent: 0 !important;
190    }
191    textarea {
192      height: 15em;
193    }
194    select[size] {
195      width: 100%;
196      height: 20em;
197    }
198    select[size] option {
199      white-space: pre;
200      height: 4em;
201      width: 100%;
202      overflow: hidden;
203    }
204    </style>
205    <script>
206      function updateOriginalsBox () {
207        var dataFileId = document.getElementById ('originals-data-file').value;
208        var xhr = new XMLHttpRequest ();
209        xhr.open ('GET', '../../tbt-' + dataFileId + '.dat', true);
210        xhr.onreadystatechange = function () {
211          if (xhr.readyState == 4) {
212            if (xhr.status < 400) {
213              var originals = document.getElementById ('originals');
214              originals.textContent = '';
215      
216              var data = xhr.responseText.split (/\u000D?\u000A\u000D?\u000A/);
217              for (var i = 0; i < data.length; i++) {
218                var opt = document.createElement ('option');
219                opt.textContent = data[i];
220                originals.appendChild (opt);
221              }
222            }
223            xhr.onreadystatechange = null;
224          }
225        };
226        xhr.send (null);
227      } // updateOriginalsBox
228    </script>
229    <body onload=" updateOriginalsBox () ">
230    <h1>Add paragraph</h1>
231    <form action=add accept-charset=utf-8 method=post>
232    
233    <p><select id=originals-data-file onchange=" updateOriginalsBox () ">
234    <option value=apps>HTML5
235    <option value=workers>Web Workers
236    <option value=xbl>XBL 2.0</select>
237    <p><select id=originals size=30 onclick="
238      var opt = event.target;
239      if (opt.nodeName == 'OPTION') {
240        document.forms[0]['original-text'].value = opt.textContent;
241      }
242    "></select>
243    <p><label><strong>Original text</strong>:<br>
244    <textarea id=original-text name=original-text></textarea></label><br>
245    (<label><input type=checkbox name=pattern> Pattern</label>)
246    
247    <p><label><strong>Translated text</strong>:<br>
248    <textarea id=translated-text name=translated-text></textarea></label>
249    
250    <p><button type=submit>Save</button> to
251    <select name=data-file>
252    ];
253    
254        require 'common.pl';
255        for_each_data_file (sub {
256          shift;
257          my $data_file_name = shift;
258          $data_file_name =~ s/\.dat\z//;
259          print q[<option>], htescape ($data_file_name);
260        });
261    
262        print q[</select>
263    <p><strong>Important</strong>: See <a href="../#license" rel=license>license</a>.
264    </form>];
265        exit;
266      }
267  }  }
268    
269  print q[Content-Type: text/plain ; charset=us-ascii  print q[Content-Type: text/plain ; charset=us-ascii

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.9

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24