diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/cgi-bin/conj.scm4 | 9 | ||||
-rw-r--r-- | src/cgi-bin/dict.scm4 | 28 | ||||
-rw-r--r-- | src/cgi-bin/nea.scm4 | 22 | ||||
-rw-r--r-- | src/ellinika/cgi.scm4 | 25 | ||||
-rw-r--r-- | src/ellinika/i18n.scm | 6 |
5 files changed, 55 insertions, 35 deletions
diff --git a/src/cgi-bin/conj.scm4 b/src/cgi-bin/conj.scm4 index 83fb846..6a49c62 100644 --- a/src/cgi-bin/conj.scm4 +++ b/src/cgi-bin/conj.scm4 @@ -1,8 +1,8 @@ ;;;; Greek Dictionary Web Engine -;;;; Copyright (C) 2004, 2005, 2006, 2007, 2010, 2011 Sergey Poznyakoff +;;;; Copyright (C) 2004, 2005, 2006, 2007, 2010, 2011, 2015 Sergey Poznyakoff ;;;; ;;;; This program is free software; you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by ;;;; the Free Software Foundation; either version 3 of the License, or ;;;; (at your option) any later version. ;;;; @@ -15,12 +15,13 @@ ;;;; along with this program. If not, see <http://www.gnu.org/licenses/>. ;;;; ;;; Tailor this statement to your needs if necessary. (set! %load-path (cons "GUILE_SITE" %load-path)) +(setlocale LC_ALL "") (use-modules ifelse(IFACE,[CGI],(www cgi),(guile-user)) (srfi srfi-1) (ice-9 rdelim) (ice-9 optargs) (xmltools dict) (ellinika config) @@ -58,13 +59,13 @@ ifelse(IFACE,[CGI],(cgi:init)) <td>") (display (_"Εισάγετε το ρήμα")) (display " </td> <td> <input size=\"36\" name=\"key\" tabindex=\"1\"") - (let ((value (cgi:value "key"))) + (let ((value (cgi:value-u8 "key"))) (if value (begin (display " value=\"") (display (cgi-protect-quotes value)) (display "\"")))) (display " /> @@ -347,13 +348,13 @@ ifelse(IFACE,[CGI],(cgi:init)) (display "</td>")) (display "</tr>"))) (display "</table>"))))) (define (do-conj) - (let ((keyval (cgi:value "key"))) + (let ((keyval (cgi:value-u8 "key"))) (if (and keyval (not (string-null? keyval))) (let ((input (ellinika:translate-input (let ((keyval keyval)) (cond ((string-suffix? "o'" keyval) (string-set! keyval @@ -397,13 +398,13 @@ ifelse(IFACE,[CGI],(cgi:init)) (lambda () (for-each (lambda (name) (cond ((string=? name "lang")) (else - (let ((v (cgi:value name))) + (let ((v (cgi:value-u8 name))) (cond ((and v (not (string-null? v))) (display "&") (display name) (display "=") (display v))))))) (cgi:names)))) diff --git a/src/cgi-bin/dict.scm4 b/src/cgi-bin/dict.scm4 index 77c1b3a..3b24367 100644 --- a/src/cgi-bin/dict.scm4 +++ b/src/cgi-bin/dict.scm4 @@ -1,8 +1,8 @@ ;;;; Greek Dictionary Web Engine -;;;; Copyright (C) 2004, 2005, 2006, 2007, 2010, 2011 Sergey Poznyakoff +;;;; Copyright (C) 2004, 2005, 2006, 2007, 2010, 2011, 2015 Sergey Poznyakoff ;;;; ;;;; This program is free software; you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by ;;;; the Free Software Foundation; either version 3 of the License, or ;;;; (at your option) any later version. ;;;; @@ -15,16 +15,19 @@ ;;;; along with this program. If not, see <http://www.gnu.org/licenses/>. ;;;; ;;; Tailor this statement to your needs if necessary. (set! %load-path (cons "GUILE_SITE" %load-path)) +(setlocale LC_ALL "") + (use-modules ifelse(IFACE,[CGI],(www cgi),(guile-user)) (ice-9 rdelim) (xmltools dict) (gamma sql) + (gamma syslog) (ellinika elmorph) (ellinika sql) (ellinika i18n) (ellinika xlat) (ellinika cgi)) @@ -76,13 +79,13 @@ ifelse(IFACE,[CGI],(cgi:init)) (if (not categories) (set! categories (or (getcat) '()))) categories))) (define (join-widget widget-id tabindex) (let* ((name (string-append "join" widget-id)) - (selected-choice (or (let ((s (cgi:value name))) + (selected-choice (or (let ((s (cgi:value-u8 name))) (if s (string->number s) #f)) 0))) (display (string-append "<select name=\"" name @@ -109,13 +112,13 @@ ifelse(IFACE,[CGI],(cgi:init)) <td>") (display (_"Εισάγετε τη λέξη")) (display " </td> <td> <input size=\"36\" name=\"key\" tabindex=\"1\"") - (let ((value (cgi:value "key"))) + (let ((value (cgi:value-u8 "key"))) (if value (begin (display " value=\"") (display (cgi-protect-quotes value)) (display "\"")))) (display " /> @@ -129,13 +132,13 @@ ifelse(IFACE,[CGI],(cgi:init)) (display " <tr> <td>") (display (_"Επιλέξτε το μέρος του λόγου")) (display "</td><td>") - (let ((selected-choice (or (let ((s (cgi:value "pos"))) + (let ((selected-choice (or (let ((s (cgi:value-u8 "pos"))) (if s (string->number s) #f)) 0)) (index 0)) @@ -163,13 +166,13 @@ ifelse(IFACE,[CGI],(cgi:init)) (let ((tabindex 4)) (for-each (lambda (category) (display "<tr><td>") (display (list-ref category 1)) (display "</td><td>") - (let ((selected-choice (or (let ((s (cgi:value (list-ref category 0)))) + (let ((selected-choice (or (let ((s (cgi:value-u8 (list-ref category 0)))) (if s (string->number s) #f)) 0))) (display (string-append @@ -350,13 +353,13 @@ ifelse(IFACE,[CGI],(cgi:init)) (cond ((> (string->number pos) 0) (let ((pos-entry (list-ref part-of-speech (string->number pos)))) (if (or (not (string-null? key)) (not (null? theme))) (set! where-cond (cons - (if (string=? (cgi:value "joinpos") "0") + (if (string=? (cgi:value-u8 "joinpos") "0") " AND" " OR") where-cond))) (set! where-cond (cons (string-append " (dict.pos & " @@ -415,27 +418,26 @@ ifelse(IFACE,[CGI],(cgi:init)) (display "</td>")) (display "</tr>"))) (display "</table>")))))) (define (dict-search) - (let ((keyval (if (cgi:value "ident") - (dict:decode-string (cgi:value "ident")) - (cgi:value "key"))) + (let ((keyval (or (cgi:value-u8 "ident") + (cgi:value-u8 "key"))) (theme (do ((catlist (get-topic-list) (cdr catlist)) (ret '())) ((null? catlist) ret) (let ((name (caar catlist))) - (let ((v (cgi:value name))) + (let ((v (cgi:value-u8 name))) (if (and v (> (string->number v) 0)) (set! ret (append ret (list (= (string->number - (cgi:value (string-append "join" name))) 0) + (cgi:value-u8 (string-append "join" name))) 0) v)))))))) - (pos (or (cgi:value "pos") "0"))) + (pos (or (cgi:value-u8 "pos") "0"))) (sql-catch-failure (cond ((and keyval (not (string-null? keyval)) (null? theme) @@ -518,13 +520,13 @@ dict.forms,articles.subindex,articles.meaning,(dict.pos & conv(\"100000\",16,10) (lambda () (for-each (lambda (name) (cond ((string=? name "lang")) (else - (let ((v (cgi:value name))) + (let ((v (cgi:value-u8 name))) (cond ((and v (not (string-null? v))) (display "&") (display name) (display "=") (display v))))))) (cgi:names)))) diff --git a/src/cgi-bin/nea.scm4 b/src/cgi-bin/nea.scm4 index f64aca2..e366a7c 100644 --- a/src/cgi-bin/nea.scm4 +++ b/src/cgi-bin/nea.scm4 @@ -1,8 +1,8 @@ ;;;; News page for Ellinika -;;;; Copyright (C) 2004, 2005, 2006, 2007, 2010, 2011 Sergey Poznyakoff +;;;; Copyright (C) 2004, 2005, 2006, 2007, 2010, 2011, 2015 Sergey Poznyakoff ;;;; ;;;; This program is free software; you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by ;;;; the Free Software Foundation; either version 3 of the License, or ;;;; (at your option) any later version. ;;;; @@ -27,13 +27,13 @@ (ellinika cgi) (ellinika i18n)) ifelse(IFACE,[CGI],(cgi:init)) (define tmpl (if (and monima-nea-template-file-name - (cgi:value "timestamp")) + (cgi:value-u8 "timestamp")) monima-nea-template-file-name nea-template-file-name)) (ellinika-cgi-init tmpl) (define article #f) @@ -174,19 +174,19 @@ ifelse(IFACE,[CGI],(cgi:init)) (caar (ellinika:sql-query "SELECT count(*) FROM news")))) (lambda args 0))) (from (catch #t (lambda () - (let ((x (string->number (cgi:value "from")))) + (let ((x (string->number (cgi:value-u8 "from")))) (if (< x count) x 0))) (lambda args 0))) - (fwd (let ((dir (cgi:value "dir"))) + (fwd (let ((dir (cgi:value-u8 "dir"))) (or (not dir) (string=? dir "1")))) (entries (collect-entries from fwd))) (let ((start (car entries)) (result (cdr entries))) @@ -196,13 +196,13 @@ ifelse(IFACE,[CGI],(cgi:init)) (display (_ "Κανένα νέα")) (display "</div>")) (else (let ((num-entries (length result)) (begin (if fwd from start)) (end (if fwd start from)) - (id (cgi:value "id"))) + (id (cgi:value-u8 "id"))) (cond ((not (and (= from 0) (< num-entries nea-max-rows))) (display "<p>") (format #t (_ "Εγγραφείς ~A - ~A") begin end) (display "</p>"))) @@ -270,13 +270,13 @@ ifelse(IFACE,[CGI],(cgi:init)) (define (display-article-header item) (display "<div id=\"news-header\">") (format #t "<span class=\"itemdate\">~A</span>\n" (car item)) (display "<span class=\"itemsubject\">\n") (display (list-ref item 2)) (display "</span>") - (if (not (cgi:value "timestamp")) + (if (not (cgi:value-u8 "timestamp")) (permalink "span" (list-ref item 1))) (display "</div><!-- news-header -->")) (define (display-article-text item . rest) (let ((class (and (not (null? rest)) (car rest)))) (cond @@ -334,13 +334,13 @@ ifelse(IFACE,[CGI],(cgi:init)) (lambda () (for-each (lambda (name) (cond ((string=? name "lang")) (else - (let ((v (cgi:value name))) + (let ((v (cgi:value-u8 name))) (cond ((and v (not (string-null? v))) (display "&") (display name) (display "=") (display v))))))) (cgi:names))))))) @@ -432,33 +432,33 @@ ifelse(IFACE,[CGI],(cgi:init)) (car art))))))) ;;; Main (cond - ((cgi:value "rss") + ((cgi:value-u8 "rss") ifelse(IFACE,[CGI], (display ["Content-type: text/xml; charset=utf-8\r\n\r\n"]), (request-rec:set-content-type! Request ["text/xml; charset=UTF-8"])) (nea-rss)) (else (catch 'gsql-error (lambda () ifelse(IFACE,[CGI],dnl (display ["Content-type: text/html; charset=utf-8\r\n\r\n"])) (ellinika:sql-connect ellinika-sql-connection) (cond - ((or (cgi:value "timestamp") (cgi:value "id")) + ((or (cgi:value-u8 "timestamp") (cgi:value-u8 "id")) (let ((tuples (cond - ((cgi:value "timestamp") => + ((cgi:value-u8 "timestamp") => (lambda (ts) (ellinika:sql-query "SELECT date,unix_timestamp(date),ident\ FROM news WHERE unix_timestamp(date)=~Q" ts))) - ((cgi:value "id") => + ((cgi:value-u8 "id") => (lambda (id) (ellinika:sql-query "SELECT date,unix_timestamp(date),ident\ FROM news WHERE ident=~N" id)))))) (if (not (null? tuples)) diff --git a/src/ellinika/cgi.scm4 b/src/ellinika/cgi.scm4 index 8c9b54d..51f9570 100644 --- a/src/ellinika/cgi.scm4 +++ b/src/ellinika/cgi.scm4 @@ -1,9 +1,8 @@ -;;;; -*- scheme -*- -;;;; Greek Dictionary Web Engine -;;;; Copyright (C) 2005, 2007, 2010 Sergey Poznyakoff +;;;; Greek Dictionary Web Engine -*- scheme -*- +;;;; Copyright (C) 2005, 2007, 2010, 2015 Sergey Poznyakoff ;;;; ;;;; This program is free software; you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by ;;;; the Free Software Foundation; either version 3 of the License, or ;;;; (at your option) any later version. ;;;; @@ -16,18 +15,34 @@ ;;;; along with this program. If not, see <http://www.gnu.org/licenses/>. ;;;; (define-module (ellinika cgi) #:use-module (ellinika config) #:use-module (ellinika i18n) #:use-module ifelse(IFACE,[CGI],(www cgi),(guile-user)) + #:use-module (ice-9 iconv) + #:use-module (rnrs bytevectors) #:re-export (base-dir html-dir sysconf-dir locale-path ellinika-sql-connection config-file-name )) -ifelse(IFACE,[CGI],,dnl +ifelse(IFACE,[CGI],[ +(define-public cgi-script-name + (cgi:getenv 'script-name)) +(define-public cgi-server-hostname + (cgi:getenv 'server-hostname)) +(define-public cgi-server-protocol-name + (cgi:getenv 'server-protocol-name)) +(define-public cgi-server-protocol-version + (cgi:getenv 'server-protocol-version)) +(define-public (cgi:value-u8 key) + (let ((x (cgi:value key))) + (if x + (utf8->string (string->bytevector x "ISO-8859-1")) + x))) +],[ (define form-data (append (parse-form-data (table:get (request-rec:subprocess-env Request) "QUERY_STRING")) (if (= (request-rec:method-number Request) 2) (parse-form-data (read-post-data Request)) @@ -56,13 +71,13 @@ ifelse(IFACE,[CGI],,dnl (let ((slash (string-index server-protocol #\/))) (set! cgi-server-protocol-name (substring server-protocol 0 slash)) (set! cgi-server-protocol-version (substring server-protocol (1+ slash)))))) -) +]) ;;; User-definable variables (define-public dict-template-file-name "dict.html") (define-public nea-template-file-name "nea.html") (define-public monima-nea-template-file-name "monima.html") diff --git a/src/ellinika/i18n.scm b/src/ellinika/i18n.scm index c05d727..40cb47d 100644 --- a/src/ellinika/i18n.scm +++ b/src/ellinika/i18n.scm @@ -1,8 +1,8 @@ ;;;; This file is part of Greek Dictionary Web Engine -;;;; Copyright (C) 2006, 2007 Sergey Poznyakoff +;;;; Copyright (C) 2006, 2007, 2015 Sergey Poznyakoff ;;;; ;;;; This program is free software; you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by ;;;; the Free Software Foundation; either version 3, or (at your option) ;;;; any later version. ;;;; @@ -12,16 +12,18 @@ ;;;; GNU General Public License for more details. ;;;; ;;;; You should have received a copy of the GNU General Public License ;;;; along with this program. If not, see <http://www.gnu.org/licenses/>. (define-module (ellinika i18n) - #:use-syntax (ice-9 syncase) #:export-syntax (_) #:export (locale-setup)) +(if (= (string->number (major-version)) 1) + (use-modules (ice-9 syncase))) + (define-syntax _ (syntax-rules () ((_ msg) (gettext msg)))) ;;; ISO 639 language code => ISO 3166 country code ;;; The corresponding country codes where selected using the following |