aboutsummaryrefslogtreecommitdiff
path: root/cgi-bin
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2005-02-13 23:08:09 +0000
committerSergey Poznyakoff <gray@gnu.org.ua>2005-02-13 23:08:09 +0000
commit73c95ef6bbfa9aa3997a0f770b3ec9aee0735663 (patch)
tree4f6f9a5a65e4d1ce5c01c345e0a33572bf5e1454 /cgi-bin
parent6f8dd83835d970e28ff9c1d1517578763cd3f9db (diff)
downloadellinika-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
Diffstat (limited to 'cgi-bin')
-rw-r--r--cgi-bin/dict.cgi.in121
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) "=" "&amp;")
- 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)

Return to:

Send suggestions and report system problems to the System administrator.