]> 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 SESSION_COOKIE
10
11 yield_page(){
12 printf 'Content-Type: text/html; charset=utf-8\r\n\r\n'
13 "$_EXEC/cgilite/html-sh.sed" <<EOF
14 [html [head
15   [meta name="viewport" content="width=device-width"]
16   [link rel="stylesheet" type="text/css" href="/invoices.css"]
17   [title Invoices]
18 ] [body class="$1"
19   [div #menu
20     [a "/invoices/" Invoices]
21     [a "/clients/" Clients]
22     [a "/senders/" Senders]
23   ]
24   $(cat)
25 ] ]
26 EOF
27 }
28
29 info="$(PATH "${PATH_INFO#http://*/}")"
30
31 which git && [ ! -d .git ] && {
32   git init
33   mkdir -p clients/ invoices/ senders/
34   printf 'export/
35 serverkey' >.gitignore
36   git add clients/ invoices/ senders/ .gitignore
37   git commit -m 'initialisation of invoice repo'
38 } >&2
39
40 case $info in
41   /invoices.css)
42     . "$_EXEC/cgilite/file.sh"
43     FILE "$_EXEC/invoices.css"
44     ;;
45   /clients|/clients/)
46     . "$_EXEC/clients.sh"
47     { list_clients
48       printf '[a .new href="/clients/%s" New]' "$(timeid)"
49     } | yield_page clients
50     ;;
51   /clients/*)
52     . "$_EXEC/clients.sh"
53     edit_client "${info#/clients/}" |yield_page client
54     ;;
55   /update_client)
56     . "$_EXEC/clients.sh"
57     update_client
58     ;;
59   /senders|/senders/)
60     . "$_EXEC/senders.sh"
61     { list_senders
62       printf '[a .new href="/senders/%s" New]' "$(timeid)"
63     } | yield_page senders
64     ;;
65   /senders/*)
66     . "$_EXEC/senders.sh"
67     edit_sender "${info#/senders/}" |yield_page sender
68     ;;
69   /update_sender)
70     . "$_EXEC/senders.sh"
71     update_sender
72     ;;
73   /invoices|/invoices/)
74     . "$_EXEC/invoices.sh"
75     { printf '[a .new href="/invoices/%s" New]' "$(timeid)"
76       list_invoices
77     } | yield_page invoices
78     ;;
79   /invoices/*)
80     . "$_EXEC/invoices.sh"
81     edit_invoice "${info#/invoices/}" |yield_page invoice
82     ;;
83   /update_invoice)
84     . "$_EXEC/invoices.sh"
85     update_invoice
86     ;;
87   /export/*.pdf/*)
88     . "$_EXEC/cgilite/file.sh"
89     file="${info%/*}"
90     FILE "${file#/}" application/pdf
91     ;;
92   *) REDIRECT /invoices
93     ;;
94 esac