aboutsummaryrefslogtreecommitdiff
path: root/ellinika/cgi.scmi
blob: 604d71b3f92e2f407981c55d20b533951d3a8a2c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
;;;;                                   -*- scheme -*-
=AUTOGENERATED=
;;;; Greek Dictionary Web Engine
;;;; Copyright (C) 2005 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 2 of the License, or
;;;; (at your option) any later version.
;;;;
;;;; This program is distributed in the hope that it will be useful,
;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;;; 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, write to the Free Software
;;;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
;;;;

(define-module (ellinika cgi))

(use-modules (www cgi)
	     (gamma gettext))
  
;;; User-definable variables
(define-public base-dir "=PREFIX=")
(define-public html-dir "=HTMLDIR=")
(define-public sysconf-dir "=SYSCONFDIR=")
(define-public locale-dir "=LOCALEDIR=")
(define-public ref-loc #f)

(define-public dict-cgi-path "cgi-bin/dict.cgi") 
(define-public nea-cgi-path "cgi-bin/nea.cgi")         ;; Path to the cgi (relative
                                                       ;; to the Base HREF)

(define-public config-file-name "ellinika.conf")
(define-public dict-template-file-name "dict.html")
(define-public nea-template-file-name "nea.html")
(define-public target-language "el_GR")

(define-public word-forms-reference '())

(define-public sql-iface "mysql")       ;; SQL interface ("mysql" or "postgres")
(define-public sql-host "localhost")    ;; SQL server hostname or a path to the UNIX
                                        ;; socket
(define-public sql-port 3306)           ;; SQL port number (0 for sockaddr_un
                                        ;; connection)
(define-public sql-database "ellinika") ;; Name of the database
(define-public sql-username "gray")     ;; Database user name
(define-public sql-password "")         ;; Password for that user name

(define-public match-list-columns 4)    ;; Number of colums in fuzzy search output
;;; End of user-definable variables

(define-public (language-code lang)
  (cond
   ((string-index lang #\_) =>
    (lambda (len)
      (substring lang 0 len)))
   (else
    lang)))

(define-public (template-file lang template-file-name)
  (string-append html-dir "/" (language-code lang) "/" template-file-name))

(define-public (make-cgi-name cgi-path . rest)
  (apply
   string-append
   (cons
    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))))))

(define-public (ellinika-cgi-init template-file-name)
  ;;; Load the site defaults
  (let ((rc-file (string-append sysconf-dir "/" config-file-name)))
    (if (file-exists? rc-file)
	(load rc-file)))

;;; Load the language-specific defaults
  (cond
   ((cgi:value "LANG") =>
    (lambda (x)
      (if (and (file-exists? (template-file x template-file-name))
	       (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="))

;;; End of cgi.scmi

Return to:

Send suggestions and report system problems to the System administrator.