]> git.plutz.net Git - invoices/blob - invoices.cgi
sort invoice list, newest to oldest
[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#http://*/}")"
28
29 which git && [ ! -d .git ] && {
30   git init
31   mkdir -p clients/ invoices/ senders/
32   printf 'export/
33 serverkey' >.gitignore
34   git add clients/ invoices/ senders/ .gitignore
35   git commit -m 'initialisation of invoice repo'
36 } >&2
37
38 case $info in
39   /invoices.css)
40     . "$_EXEC/cgilite/file.sh"
41     FILE "$_EXEC/invoices.css"
42     ;;
43   /clients)
44     . "$_EXEC/clients.sh"
45     { list_clients
46       printf '[a .new href="/clients/%s" New]' "$(timeid)"
47     } | yield_page clients
48     ;;
49   /clients/*)
50     . "$_EXEC/clients.sh"
51     edit_client "${info#/clients/}" |yield_page client
52     ;;
53   /update_client)
54     . "$_EXEC/clients.sh"
55     update_client
56     ;;
57   /senders)
58     . "$_EXEC/senders.sh"
59     { list_senders
60       printf '[a .new href="/senders/%s" New]' "$(timeid)"
61     } | yield_page senders
62     ;;
63   /senders/*)
64     . "$_EXEC/senders.sh"
65     edit_sender "${info#/senders/}" |yield_page sender
66     ;;
67   /update_sender)
68     . "$_EXEC/senders.sh"
69     update_sender
70     ;;
71   /invoices)
72     . "$_EXEC/invoices.sh"
73     { printf '[a .new href="/invoices/%s" New]' "$(timeid)"
74       list_invoices
75     } | yield_page invoices
76     ;;
77   /invoices/*)
78     . "$_EXEC/invoices.sh"
79     edit_invoice "${info#/invoices/}" |yield_page invoice
80     ;;
81   /update_invoice)
82     . "$_EXEC/invoices.sh"
83     update_invoice
84     ;;
85   /export/*.pdf/*)
86     . "$_EXEC/cgilite/file.sh"
87     file="${info%/*}"
88     FILE "${file#/}" application/pdf
89     ;;
90   *) REDIRECT /invoices
91     ;;
92 esac