]> git.plutz.net Git - invoices/blob - invoices.cgi
split code into multiple files
[invoices] / invoices.cgi
1 #!/bin/sh
2
3 _EXEC="$(realpath "${0%/*}")"
4 . "$_EXEC/cgilite/cgilite.sh"
5 . "$_EXEC/cgilite/logging.sh"
6 . "$_EXEC/cgilite/storage.sh"
7 . "$_EXEC/cgilite/session.sh"
8
9 yield_page(){
10 printf 'Content-Type: text/html; charset=utf-8\r\n\r\n'
11 "$_EXEC/cgilite/html-sh.sed" <<EOF
12 [html [head
13   [meta name="viewport" content="width=device-width"]
14   [link rel="stylesheet" type="text/css" href="/invoices.css"]
15   [title Invoices]
16 ] [body class="$1"
17   [div #menu
18     [a "/invoices/" Invoices]
19     [a "/clients/" Clients]
20     [a "/senders/" Senders]
21   ]
22   $(cat)
23 ] ]
24 EOF
25 }
26
27 info="$(PATH "${PATH_INFO}")"
28
29 case $info in
30   /invoices.css)
31     . "$_EXEC/cgilite/file.sh"
32     FILE "$_EXEC/invoices.css"
33     ;;
34   /clients)
35     . "$_EXEC/clients.sh"
36     { list_clients
37       printf '[a .new href="/clients/%s" New]' "$(timeid)"
38     } | yield_page clients
39     ;;
40   /clients/*)
41     . "$_EXEC/clients.sh"
42     edit_client "${info#/clients/}" |yield_page client
43     ;;
44   /update_client)
45     . "$_EXEC/clients.sh"
46     update_client
47     REDIRECT /clients/
48     ;;
49   /senders)
50     . "$_EXEC/senders.sh"
51     { list_senders
52       printf '[a .new href="/senders/%s" New]' "$(timeid)"
53     } | yield_page senders
54     ;;
55   /senders/*)
56     . "$_EXEC/senders.sh"
57     edit_sender "${info#/senders/}" |yield_page sender
58     ;;
59   /update_sender)
60     . "$_EXEC/senders.sh"
61     update_sender
62     REDIRECT /senders/
63     ;;
64   /invoices)
65     . "$_EXEC/invoices.sh"
66     { list_invoices
67       printf '[a .new href="/invoice/%s" New]' "$(timeid)"
68     } | yield_page invoices
69     ;;
70   /invoice/*)
71     . "$_EXEC/invoices.sh"
72     edit_invoice "${info#/invoice/}" |yield_page invoice
73     ;;
74   /update_invoice)
75     . "$_EXEC/invoices.sh"
76     update_invoice
77     REDIRECT "/invoice/$id"
78     ;;
79   *) REDIRECT /invoices
80     ;;
81 esac