diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2005-02-13 23:08:09 +0000 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2005-02-13 23:08:09 +0000 |
commit | 73c95ef6bbfa9aa3997a0f770b3ec9aee0735663 (patch) | |
tree | 4f6f9a5a65e4d1ce5c01c345e0a33572bf5e1454 | |
parent | 6f8dd83835d970e28ff9c1d1517578763cd3f9db (diff) | |
download | ellinika-73c95ef6bbfa9aa3997a0f770b3ec9aee0735663.tar.gz ellinika-73c95ef6bbfa9aa3997a0f770b3ec9aee0735663.tar.bz2 |
Moved common init part to (ellinika cgi)
module
(load-pos): Bugfix
(fuzzy-search): Use = in dict.pos comparison
git-svn-id: file:///home/puszcza/svnroot/ellinika/trunk@301 941c8c0f-9102-463b-b60b-cd22ce0e6858
-rw-r--r-- | cgi-bin/dict.cgi.in | 121 |
1 files changed, 15 insertions, 106 deletions
diff --git a/cgi-bin/dict.cgi.in b/cgi-bin/dict.cgi.in index 3369db5..1934496 100644 --- a/cgi-bin/dict.cgi.in +++ b/cgi-bin/dict.cgi.in @@ -26,98 +26,15 @@ (gamma sql) (gamma gettext) (xmltools dict) - (ellinika xlat)) + (ellinika xlat) + (ellinika cgi)) (cgi:init) -;;; User-definable variables -(define base-dir "=PREFIX=") -(define html-dir "=HTMLDIR=") -(define sysconf-dir "=SYSCONFDIR=") -(define locale-dir "=LOCALEDIR=") -(define ref-loc #f) - -(define dict-cgi-path "cgi-bin/dict.cgi") ;; Path to the cgi (relative - ;; to the Base HREF) - -(define config-file-name "ellinika.conf") -(define template-file-name "dict.html") -(define target-language "el_GR") - -(define word-forms-reference '()) - -(define sql-iface "mysql") ;; SQL interface ("mysql" or "postgres") -(define sql-host "localhost") ;; SQL server hostname or a path to the UNIX - ;; socket -(define sql-port 3306) ;; SQL port number (0 for sockaddr_un - ;; connection) -(define sql-database "ellinika") ;; Name of the database -(define sql-username "gray") ;; Database user name -(define sql-password "") ;; Password for that user name - -(define match-list-columns 4) ;; Number of colums in fuzzy search output -;;; End of user-definable variables - - -;;; Load the site defaults -(let ((rc-file (string-append sysconf-dir "/" config-file-name))) - (if (file-exists? rc-file) - (load rc-file))) - -(define (language-code lang) - (cond - ((string-index lang #\_) => - (lambda (len) - (substring lang 0 len))) - (else - lang))) - -(define (template-file lang) - (string-append html-dir "/" (language-code lang) "/" template-file-name)) - -;;; Load the language-specific defaults -(cond - ((cgi:value "LANG") => - (lambda (x) - (if (and (file-exists? (template-file x)) - (false-if-exception (setlocale LC_ALL x))) - (set! target-language x))))) - -;;; Initialize i18n -(setlocale LC_ALL target-language) -(bindtextdomain "=PACKAGE=" locale-dir) -(bind_textdomain_codeset "=PACKAGE=" "UTF-8") -(textdomain "=PACKAGE=") - -(define (make-cgi-name . rest) - (apply - string-append - (cons - dict-cgi-path - (let ((arglist (let ((lang (cgi:value "LANG"))) - (do ((ilist (if lang - (cons "LANG" (cons lang rest)) - rest) (cdr ilist)) - (i 1 (1+ i)) - (olist '())) - ((null? ilist) (if (null? olist) - olist - (reverse (cdr olist)))) - (set! olist (cons (car ilist) olist)) - (set! olist (cons - (if (odd? i) "=" "&") - olist)))))) - (if (null? arglist) - arglist - (cons "?" arglist)))))) - +(ellinika-cgi-init dict-template-file-name) + ;; Τα μέρη του λογου (define part-of-speech '()) -(define (hbase num) - (do ((i 0 (1+ i)) - (n num (ash n -1))) - ((= n 0) (ash 1 (- i 1))))) - (define (load-pos) (let ((conn (sql-connect sql-iface sql-host sql-port sql-database @@ -132,17 +49,9 @@ (cons "κανένα μέρος του λόγου" #f) (map (lambda (x) - (let* ((value (string->number (car (cdr x)))) - (mask (hbase value))) - (cons (car x) - (number->string - (if (= value mask) - value - (logand - value - (lognot mask))))))) - plist))) - (sql-connect-close conn)))))) + (cons (car x) (cadr x))) + plist)))) + (sql-connect-close conn))))) ;; Protect occurences of " in a string. ;; Usual backslash escapes do not work in INPUT widgets, so I @@ -177,7 +86,8 @@ conn (string-append "SELECT ident,title FROM topic WHERE category=" - (car category))))) + (car category) + " ORDER BY title")))) (append category (if (null? topics) '() (list topics))))) @@ -215,7 +125,7 @@ (define (main-form) (load-pos) (display "<FORM ACTION=\"") - (display (make-cgi-name)) + (display (make-cgi-name dict-cgi-path)) (display "\" METHOD=POST> <TABLE BORDER=0> <TR> @@ -312,7 +222,7 @@ (display " <TR> - <TD colspan=\"2\" align=center> + <TD colspan=\"3\" align=center> <INPUT TYPE=\"submit\" NAME=\"search\" VALUE=\"") (display (_"Αναζήτηση")) (display "\" TABINDEX=\"") @@ -385,7 +295,7 @@ (define (display-cross-reference word) (display "<A HREF=\"") - (display (make-cgi-name "IDENT" (dict:encode-string word))) + (display (make-cgi-name dict-cgi-path "IDENT" (dict:encode-string word))) (display "\">") (display word) (display "</A>")) @@ -453,7 +363,7 @@ "AND" "OR") "") - " dict.pos & " + " dict.pos = " (cdr pos-entry) " "))) (else @@ -471,7 +381,6 @@ theme)) " ORDER BY dict.word")) - (result (sql-query conn query))) (cond @@ -522,7 +431,7 @@ (cond ((not conn) (format #t "<H1>~A</H1>\n" - "ΣΦΆΛΜΑ: σύνδεση με το λέξικο απέτυχε.")) + (_"ΣΦΆΛΜΑ: σύνδεση με το λέξικο απέτυχε."))) (else (display "<HR>") (let* ((key (ellinika:translate-input keyval)) @@ -628,7 +537,7 @@ (display "Content-type: text/html; charset=utf-8\r\n\r\n") (with-input-from-file - (template-file target-language) + (template-file target-language dict-template-file-name) dict-html) |