3 _EXEC="$(realpath "${0%/*}")"
4 . "$_EXEC/cgilite/cgilite.sh"
5 . "$_EXEC/cgilite/logging.sh"
6 . "$_EXEC/cgilite/storage.sh"
7 . "$_EXEC/cgilite/session.sh"
12 printf 'Content-Type: text/html; charset=utf-8\r\n\r\n'
13 "$_EXEC/cgilite/html-sh.sed" <<EOF
15 [meta name="viewport" content="width=device-width"]
16 [link rel="stylesheet" type="text/css" href="/invoices.css"]
20 [a "/invoices/" Invoices]
21 [a "/clients/" Clients]
22 [a "/senders/" Senders]
29 info="$(PATH "${PATH_INFO#http://*/}")"
31 which git && [ ! -d .git ] && {
33 mkdir -p clients/ invoices/ senders/
35 serverkey' >.gitignore
36 git add clients/ invoices/ senders/ .gitignore
37 git commit -m 'initialisation of invoice repo'
42 . "$_EXEC/cgilite/file.sh"
43 FILE "$_EXEC/invoices.css"
48 printf '[a .new href="/clients/%s" New]' "$(timeid)"
49 } | yield_page clients
53 edit_client "${info#/clients/}" |yield_page client
62 printf '[a .new href="/senders/%s" New]' "$(timeid)"
63 } | yield_page senders
67 edit_sender "${info#/senders/}" |yield_page sender
74 . "$_EXEC/invoices.sh"
75 { printf '[a .new href="/invoices/%s" New]' "$(timeid)"
77 } | yield_page invoices
80 . "$_EXEC/invoices.sh"
81 edit_invoice "${info#/invoices/}" |yield_page invoice
84 . "$_EXEC/invoices.sh"
88 . "$_EXEC/cgilite/file.sh"
90 FILE "${file#/}" application/pdf