diff options
-rw-r--r-- | data/po/de.po | 72 | ||||
-rw-r--r-- | data/po/shopsystem.pot | 72 | ||||
-rw-r--r-- | data/templates/cashbox/index.html | 18 | ||||
-rw-r--r-- | data/templates/cashbox/selection.html | 17 | ||||
-rw-r--r-- | data/templates/products/entry.html | 1 | ||||
-rw-r--r-- | src/database/database.vala | 21 | ||||
-rw-r--r-- | src/database/db-interface.vala | 1 | ||||
-rw-r--r-- | src/mail/mail.vala | 12 | ||||
-rw-r--r-- | src/meson.build | 2 | ||||
-rw-r--r-- | src/web/web.vala | 48 |
10 files changed, 148 insertions, 116 deletions
diff --git a/data/po/de.po b/data/po/de.po index d875470..7c906ef 100644 --- a/data/po/de.po +++ b/data/po/de.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: shopsystem 0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-07-24 20:00+0200\n" +"POT-Creation-Date: 2020-01-04 20:55+0000\n" "PO-Revision-Date: 2018-06-28 21:14+0200\n" "Last-Translator: Sebastian Reichel <sre@ring0.de>\n" "Language-Team: German\n" @@ -129,11 +129,11 @@ msgstr "Konnte DBus-Service nicht registrieren\n" msgid "Could not register service: %s\n" msgstr "Konnte DBus-Servicenicht registieren: %s\n" -#: web/web.vala:1465 +#: web/web.vala:1660 msgid "Could not setup webserver!" msgstr "Konnte Webserver nicht konfigurieren!" -#: web/main.vala:81 +#: web/main.vala:83 #, c-format msgid "Could not start Webserver: %s\n" msgstr "Konnte Webserver nicht starten: %s\n" @@ -145,8 +145,8 @@ msgstr "DBus Fehler: %s" #: audio/main.vala:42 curses-ui/main.vala:65 database/main.vala:31 #: input-device/main.vala:33 pdf-invoice/main.vala:27 pdf-invoice/test.vala:58 -#: pgp/main.vala:31 serial-device/main.vala:31 web/main.vala:46 -#: web/main.vala:57 web/main.vala:68 +#: pgp/main.vala:31 serial-device/main.vala:31 web/main.vala:48 +#: web/main.vala:59 web/main.vala:70 #, c-format msgid "DBus Error: %s\n" msgstr "DBus Fehler: %s\n" @@ -178,7 +178,7 @@ msgstr "Fehler: %s" #: backup/main.vala:41 invoice/main.vala:51 invoice/main.vala:58 #: invoice/single.vala:51 invoice/single.vala:58 mail/main.vala:26 -#: web/web.vala:1123 web/web.vala:1141 +#: web/web.vala:1318 web/web.vala:1336 #, c-format msgid "Error: %s\n" msgstr "Fehler: %s\n" @@ -239,7 +239,7 @@ msgstr "EA Fehler: %s" #: input-device/main.vala:29 pdf-invoice/main.vala:29 pdf-invoice/test.vala:22 #: pdf-invoice/test.vala:60 pgp/main.vala:33 #: scanner-session/scannersession.vala:49 serial-device/main.vala:27 -#: web/main.vala:42 web/main.vala:55 web/main.vala:66 +#: web/main.vala:44 web/main.vala:57 web/main.vala:68 #, c-format msgid "IO Error: %s\n" msgstr "EA Fehler: %s\n" @@ -268,7 +268,7 @@ msgstr "Interner Fehler!" msgid "Invoice PDF Error: %s\n" msgstr "Datei Fehler: %s\n" -#: curses-ui/main.vala:67 web/main.vala:44 web/main.vala:53 web/main.vala:64 +#: curses-ui/main.vala:67 web/main.vala:46 web/main.vala:55 web/main.vala:66 #, c-format msgid "KeyFile Error: %s\n" msgstr "Schlüsseldatei Fehler: %s\n" @@ -322,11 +322,11 @@ msgstr "Kein Rechnungsempfänger übergeben!" msgid "No such mail" msgstr "Mail wurde nicht gefunden" -#: database/database.vala:612 +#: database/database.vala:613 msgid "No such session available in database!" msgstr "Keine solche Session in der Datenbank verfügbar!" -#: database/database.vala:711 database/database.vala:723 +#: database/database.vala:712 database/database.vala:724 msgid "No such user available in database!" msgstr "Kein solcher Nutzer in der Datenbank verfügbar!" @@ -349,7 +349,7 @@ msgstr "Mögliche Werte für <temporary>: temporary, final\n" msgid "Prices > 9999.99€ are not supported!" msgstr "Preise > 9999,99€ werden nicht unterstützt!" -#: database/database.vala:488 +#: database/database.vala:489 #, c-format msgid "Remove purchase of %s" msgstr "Einkaufsposten %s wurde entfernt" @@ -377,12 +377,12 @@ msgstr "Shop System wurde gestartet" msgid "Stopping Shop System" msgstr "Shop System wird gestoppt" -#: web/main.vala:72 +#: web/main.vala:74 #, c-format msgid "TLS certificate: %s\n" msgstr "TLS Zertifikat: %s\n" -#: web/main.vala:73 +#: web/main.vala:75 #, c-format msgid "TLS private key: %s\n" msgstr "TLS Privater Schlüssel: %s\n" @@ -396,7 +396,7 @@ msgstr "Unbekannter Nachrichten Typ" msgid "Usage: %s <temporary> [timestamp]\n" msgstr "Benutzung: %s <temporary> [timestamp]\n" -#: web/main.vala:71 +#: web/main.vala:73 #, c-format msgid "Web Server Port: %u\n" msgstr "Webserver Port: %u\n" @@ -431,22 +431,22 @@ msgstr "Konnte Server nicht konfigurieren" msgid "eSMTP: Start Session failed!" msgstr "eSMTP: Session Start fehlgeschlagen!" -#: database/database.vala:371 database/database.vala:388 -#: database/database.vala:404 database/database.vala:420 -#: database/database.vala:436 database/database.vala:449 -#: database/database.vala:471 database/database.vala:493 -#: database/database.vala:501 database/database.vala:528 -#: database/database.vala:542 database/database.vala:557 -#: database/database.vala:584 database/database.vala:592 -#: database/database.vala:602 database/database.vala:639 -#: database/database.vala:676 database/database.vala:690 -#: database/database.vala:701 database/database.vala:738 -#: database/database.vala:766 database/database.vala:885 -#: database/database.vala:893 database/database.vala:914 -#: database/database.vala:920 database/database.vala:928 -#: database/database.vala:983 database/database.vala:1046 -#: database/database.vala:1097 database/database.vala:1147 -#: database/database.vala:1230 +#: database/database.vala:372 database/database.vala:389 +#: database/database.vala:405 database/database.vala:421 +#: database/database.vala:437 database/database.vala:450 +#: database/database.vala:472 database/database.vala:494 +#: database/database.vala:502 database/database.vala:529 +#: database/database.vala:543 database/database.vala:558 +#: database/database.vala:585 database/database.vala:593 +#: database/database.vala:603 database/database.vala:640 +#: database/database.vala:677 database/database.vala:691 +#: database/database.vala:702 database/database.vala:739 +#: database/database.vala:767 database/database.vala:896 +#: database/database.vala:904 database/database.vala:925 +#: database/database.vala:931 database/database.vala:939 +#: database/database.vala:994 database/database.vala:1057 +#: database/database.vala:1108 database/database.vala:1158 +#: database/database.vala:1241 #, c-format msgid "internal error: %d" msgstr "Interner Fehler: %d" @@ -463,23 +463,23 @@ msgstr "Server oder Port Konfiguration fehlt" msgid "short read!\n" msgstr "Unvollständige Daten aus Gerätedatei gelesen\n" -#: database/database.vala:491 +#: database/database.vala:492 msgid "undo not possible without purchases" msgstr "Rückgängig nicht möglich ohne Einkäufe" -#: database/database.vala:386 database/database.vala:402 -#: database/database.vala:418 database/database.vala:434 -#: database/database.vala:469 +#: database/database.vala:387 database/database.vala:403 +#: database/database.vala:419 database/database.vala:435 +#: database/database.vala:470 #, c-format msgid "unknown product: %llu" msgstr "Unbekanntes Produkt: %llu" -#: database/database.vala:1228 +#: database/database.vala:1239 #, c-format msgid "unknown rfid: %s" msgstr "Unbekannter RFID: %s" -#: database/database.vala:637 +#: database/database.vala:638 msgid "user not found" msgstr "User nicht gefunden" diff --git a/data/po/shopsystem.pot b/data/po/shopsystem.pot index cd8e21d..43e1df4 100644 --- a/data/po/shopsystem.pot +++ b/data/po/shopsystem.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: shopsystem\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-07-24 20:00+0200\n" +"POT-Creation-Date: 2020-01-04 20:55+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -130,11 +130,11 @@ msgstr "" msgid "Could not register service: %s\n" msgstr "" -#: web/web.vala:1465 +#: web/web.vala:1660 msgid "Could not setup webserver!" msgstr "" -#: web/main.vala:81 +#: web/main.vala:83 #, c-format msgid "Could not start Webserver: %s\n" msgstr "" @@ -146,8 +146,8 @@ msgstr "" #: audio/main.vala:42 curses-ui/main.vala:65 database/main.vala:31 #: input-device/main.vala:33 pdf-invoice/main.vala:27 pdf-invoice/test.vala:58 -#: pgp/main.vala:31 serial-device/main.vala:31 web/main.vala:46 -#: web/main.vala:57 web/main.vala:68 +#: pgp/main.vala:31 serial-device/main.vala:31 web/main.vala:48 +#: web/main.vala:59 web/main.vala:70 #, c-format msgid "DBus Error: %s\n" msgstr "" @@ -179,7 +179,7 @@ msgstr "" #: backup/main.vala:41 invoice/main.vala:51 invoice/main.vala:58 #: invoice/single.vala:51 invoice/single.vala:58 mail/main.vala:26 -#: web/web.vala:1123 web/web.vala:1141 +#: web/web.vala:1318 web/web.vala:1336 #, c-format msgid "Error: %s\n" msgstr "" @@ -240,7 +240,7 @@ msgstr "" #: input-device/main.vala:29 pdf-invoice/main.vala:29 pdf-invoice/test.vala:22 #: pdf-invoice/test.vala:60 pgp/main.vala:33 #: scanner-session/scannersession.vala:49 serial-device/main.vala:27 -#: web/main.vala:42 web/main.vala:55 web/main.vala:66 +#: web/main.vala:44 web/main.vala:57 web/main.vala:68 #, c-format msgid "IO Error: %s\n" msgstr "" @@ -269,7 +269,7 @@ msgstr "" msgid "Invoice PDF Error: %s\n" msgstr "" -#: curses-ui/main.vala:67 web/main.vala:44 web/main.vala:53 web/main.vala:64 +#: curses-ui/main.vala:67 web/main.vala:46 web/main.vala:55 web/main.vala:66 #, c-format msgid "KeyFile Error: %s\n" msgstr "" @@ -321,11 +321,11 @@ msgstr "" msgid "No such mail" msgstr "" -#: database/database.vala:612 +#: database/database.vala:613 msgid "No such session available in database!" msgstr "" -#: database/database.vala:711 database/database.vala:723 +#: database/database.vala:712 database/database.vala:724 msgid "No such user available in database!" msgstr "" @@ -345,7 +345,7 @@ msgstr "" msgid "Prices > 9999.99\342\202\254 are not supported!" msgstr "" -#: database/database.vala:488 +#: database/database.vala:489 #, c-format msgid "Remove purchase of %s" msgstr "" @@ -373,12 +373,12 @@ msgstr "" msgid "Stopping Shop System" msgstr "" -#: web/main.vala:72 +#: web/main.vala:74 #, c-format msgid "TLS certificate: %s\n" msgstr "" -#: web/main.vala:73 +#: web/main.vala:75 #, c-format msgid "TLS private key: %s\n" msgstr "" @@ -392,7 +392,7 @@ msgstr "" msgid "Usage: %s <temporary> [timestamp]\n" msgstr "" -#: web/main.vala:71 +#: web/main.vala:73 #, c-format msgid "Web Server Port: %u\n" msgstr "" @@ -427,22 +427,22 @@ msgstr "" msgid "eSMTP: Start Session failed!" msgstr "" -#: database/database.vala:371 database/database.vala:388 -#: database/database.vala:404 database/database.vala:420 -#: database/database.vala:436 database/database.vala:449 -#: database/database.vala:471 database/database.vala:493 -#: database/database.vala:501 database/database.vala:528 -#: database/database.vala:542 database/database.vala:557 -#: database/database.vala:584 database/database.vala:592 -#: database/database.vala:602 database/database.vala:639 -#: database/database.vala:676 database/database.vala:690 -#: database/database.vala:701 database/database.vala:738 -#: database/database.vala:766 database/database.vala:885 -#: database/database.vala:893 database/database.vala:914 -#: database/database.vala:920 database/database.vala:928 -#: database/database.vala:983 database/database.vala:1046 -#: database/database.vala:1097 database/database.vala:1147 -#: database/database.vala:1230 +#: database/database.vala:372 database/database.vala:389 +#: database/database.vala:405 database/database.vala:421 +#: database/database.vala:437 database/database.vala:450 +#: database/database.vala:472 database/database.vala:494 +#: database/database.vala:502 database/database.vala:529 +#: database/database.vala:543 database/database.vala:558 +#: database/database.vala:585 database/database.vala:593 +#: database/database.vala:603 database/database.vala:640 +#: database/database.vala:677 database/database.vala:691 +#: database/database.vala:702 database/database.vala:739 +#: database/database.vala:767 database/database.vala:896 +#: database/database.vala:904 database/database.vala:925 +#: database/database.vala:931 database/database.vala:939 +#: database/database.vala:994 database/database.vala:1057 +#: database/database.vala:1108 database/database.vala:1158 +#: database/database.vala:1241 #, c-format msgid "internal error: %d" msgstr "" @@ -459,23 +459,23 @@ msgstr "" msgid "short read!\n" msgstr "" -#: database/database.vala:491 +#: database/database.vala:492 msgid "undo not possible without purchases" msgstr "" -#: database/database.vala:386 database/database.vala:402 -#: database/database.vala:418 database/database.vala:434 -#: database/database.vala:469 +#: database/database.vala:387 database/database.vala:403 +#: database/database.vala:419 database/database.vala:435 +#: database/database.vala:470 #, c-format msgid "unknown product: %llu" msgstr "" -#: database/database.vala:1228 +#: database/database.vala:1239 #, c-format msgid "unknown rfid: %s" msgstr "" -#: database/database.vala:637 +#: database/database.vala:638 msgid "user not found" msgstr "" diff --git a/data/templates/cashbox/index.html b/data/templates/cashbox/index.html index 4a088b6..9f5c81b 100644 --- a/data/templates/cashbox/index.html +++ b/data/templates/cashbox/index.html @@ -27,4 +27,20 @@ <tr><td>Date & Time</td><td>Name</td><td>Amount</td></tr> {{{CASHBOX_HISTORY}}} </table> -<a href="/cashbox/details">Details for a specific month</a> + +<legend>Details</legend> +<div class="form-inline"> + <div class="form-group"> + <input id="yearDetail" class="form-control" type="number" placeholder="Year"/> + <input id="monthDetail" class="form-control" type="number" placeholder="Month"/> + <button class="form-control btn btn-default" onclick="showDetails()"></span>Show Details</button> + </div> +</div> + +<script> +function showDetails() { + var year = document.getElementById("yearDetail").value; + var month = document.getElementById("monthDetail").value; + location.href = location.pathname + "/details/" + year + "/" + month; +} +</script> diff --git a/data/templates/cashbox/selection.html b/data/templates/cashbox/selection.html deleted file mode 100644 index e15ee75..0000000 --- a/data/templates/cashbox/selection.html +++ /dev/null @@ -1,17 +0,0 @@ -<h1>Cashbox Account</h1> - -<script> -function onSubmit() { - d = document.getElementsByName("date")[0].value - if (d.indexOf("-") > 0) { - var split = d.split("-") - var uri = location.protocol + '//' + location.host + location.pathname + "/" + split[0] + "/" + split[1] - self.location = uri; - } -} -</script> - -<form> - <input type="month" name="date" /> - <input type="button" value="Go" onclick="onSubmit()" /> -</form> diff --git a/data/templates/products/entry.html b/data/templates/products/entry.html index 64b2aa4..369da30 100644 --- a/data/templates/products/entry.html +++ b/data/templates/products/entry.html @@ -2,6 +2,7 @@ <p> <table class="table table-bordered table-nonfluid"> <tr><th>EAN</th><td>{{{EAN}}}</td></tr> + <tr><th>Aliases</th><td><ul>{{{ALIASES}}}</ul></td></tr> <tr><th>Name</th><td>{{{NAME}}}</td></tr> <tr><th>Category</th><td>{{{CATEGORY}}}</td></tr> <tr><th>Amount</th><td>{{{AMOUNT}}}</td></tr> diff --git a/src/database/database.vala b/src/database/database.vala index 52c5dd2..b361daf 100644 --- a/src/database/database.vala +++ b/src/database/database.vala @@ -141,6 +141,7 @@ public class DataBase : Object { queries["alias_ean_add"] = "INSERT OR IGNORE INTO ean_aliases (id, real_ean) VALUES (?, ?)"; queries["alias_ean_get"] = "SELECT real_ean FROM ean_aliases WHERE id = ?"; queries["alias_ean_list"] = "SELECT id, real_ean FROM ean_aliases ORDER BY id ASC"; + queries["alias_rev_lookup"] = "SELECT id FROM ean_aliases WHERE real_ean = ?"; queries["userid_rfid"] = "SELECT user FROM rfid_users WHERE rfid = ?"; queries["rfid_userid"] = "SELECT rfid FROM rfid_users WHERE user = ?"; queries["rfid_insert"] = "INSERT OR REPLACE INTO rfid_users ('user','rfid') VALUES (?,?)"; @@ -390,6 +391,26 @@ public class DataBase : Object { } } + public uint64[] get_product_aliases(uint64 article) throws DBusError, IOError, DatabaseError { + statements["alias_rev_lookup"].reset(); + statements["alias_rev_lookup"].bind_text(1, "%llu".printf(article)); + uint64[] result = null; + + while (true) { + int rc = statements["alias_rev_lookup"].step(); + + switch(rc) { + case Sqlite.ROW: + result += statements["alias_rev_lookup"].column_int64(0); + break; + case Sqlite.DONE: + return result; + default: + throw new DatabaseError.INTERNAL_ERROR(_("internal error: %d"), rc); + } + } + } + public string get_product_category(uint64 article) throws DBusError, IOError, DatabaseError { statements["product_category"].reset(); statements["product_category"].bind_text(1, "%llu".printf(article)); diff --git a/src/database/db-interface.vala b/src/database/db-interface.vala index 840f0a8..0db9521 100644 --- a/src/database/db-interface.vala +++ b/src/database/db-interface.vala @@ -22,6 +22,7 @@ public interface Database : Object { public abstract RestockEntry[] get_restocks(uint64 product, bool descending) throws DBusError, IOError; public abstract bool buy(int32 user, uint64 article) throws DBusError, IOError, DatabaseError; public abstract string get_product_name(uint64 article) throws DBusError, IOError, DatabaseError; + public abstract uint64[] get_product_aliases(uint64 article) throws DBusError, IOError, DatabaseError; public abstract string get_product_category(uint64 article) throws DBusError, IOError, DatabaseError; public abstract int get_product_amount(uint64 article) throws DBusError, IOError, DatabaseError; public abstract bool get_product_deprecated(uint64 article) throws DBusError, IOError, DatabaseError; diff --git a/src/mail/mail.vala b/src/mail/mail.vala index f6cedc0..b863014 100644 --- a/src/mail/mail.vala +++ b/src/mail/mail.vala @@ -99,8 +99,16 @@ public class MailImplementation { } #endif - public void add_recipient(MailContact contact, GMime.AddressType type) throws DBusError, IOError { - m.add_mailbox(type, contact.name, contact.email); + public void add_recipient(MailContact contact, RecipientType type) throws DBusError, IOError { + GMime.AddressType gmime_type; + + switch(type) { + case RecipientType.BCC: gmime_type = GMime.AddressType.BCC; break; + case RecipientType.CC: gmime_type = GMime.AddressType.CC; break; + default: gmime_type = GMime.AddressType.TO; break; + } + + m.add_mailbox(gmime_type, contact.name, contact.email); recipients += contact.email; } diff --git a/src/meson.build b/src/meson.build index 8f7ed3d..f2ba8c4 100644 --- a/src/meson.build +++ b/src/meson.build @@ -41,7 +41,7 @@ executable('shop-database', ['database/main.vala', 'database/database.vala', 'da executable('shop-input-device', ['input-device/main.vala', 'input-device/input-device.vala', 'input-device/input-device-interface.vala', 'config/config-interface.vala'], dependencies: [gio_dep, linux_dep], install: true, install_dir: join_paths(get_option('libexecdir'), 'shopsystem')) executable('shop-invoice', ['invoice/main.vala', 'invoice/invoice.vala', 'mail/mailer-interface.vala', 'pdf-invoice/pdf-invoice-interface.vala', 'database/db-interface.vala', 'config/config-interface.vala', 'price.vapi'], dependencies: [gio_dep], install: true, install_dir: join_paths(get_option('libexecdir'), 'shopsystem')) executable('shop-single-invoice', ['invoice/single.vala', 'invoice/invoice.vala', 'mail/mailer-interface.vala', 'pdf-invoice/pdf-invoice-interface.vala', 'database/db-interface.vala', 'config/config-interface.vala', 'price.vapi'], dependencies: [gio_dep], install: true, install_dir: join_paths(get_option('libexecdir'), 'shopsystem')) -executable('shop-mailer', ['mail/main.vala', 'mail/mailer.vala', 'mail/mail.vala', 'mail/mailer-interface.vala', 'config/config-interface.vala'], dependencies: [gio_dep, posix_dep, esmtp_dep, gmime_dep], install: true, install_dir: join_paths(get_option('libexecdir'), 'shopsystem')) +executable('shop-mailer', ['mail/main.vala', 'mail/mailer.vala', 'mail/mail.vala', 'mail/mailer-interface.vala', 'config/config-interface.vala'], dependencies: [gio_dep, posix_dep, esmtp_dep, gmime_dep], install: true, install_dir: join_paths(get_option('libexecdir'), 'shopsystem'), c_args: '-D_GNU_SOURCE') executable('shop-pdf-invoice', ['pdf-invoice/main.vala', 'pdf-invoice/pdf-invoice.vala', 'pdf-invoice/pdf-invoice-interface.vala', 'config/config-interface.vala', 'database/db-interface.vala', 'price.vapi'], dependencies: [gio_dep, pangocairo_dep, rsvg_dep, gdk_dep, posix_dep], install: true, install_dir: join_paths(get_option('libexecdir'), 'shopsystem')) executable('shop-test-pdf-invoice', ['pdf-invoice/test.vala', 'pdf-invoice/pdf-invoice-interface.vala', 'database/db-interface.vala', 'price.vapi'], dependencies: [gio_dep, pangocairo_dep, rsvg_dep, gdk_dep, posix_dep], install: true, install_dir: join_paths(get_option('libexecdir'), 'shopsystem')) executable('shop-pdf-stock', ['pdf-stock/main.vala', 'pdf-stock/pdf-stock.vala', 'database/db-interface.vala', 'price.vapi'], dependencies: [gio_dep, pangocairo_dep, cairo_dep, posix_dep], link_with: libcairobarcode, install: true, install_dir: join_paths(get_option('libexecdir'), 'shopsystem')) diff --git a/src/web/web.vala b/src/web/web.vala index 5dcceef..414da5c 100644 --- a/src/web/web.vala +++ b/src/web/web.vala @@ -732,6 +732,13 @@ public class WebServer { /* ean */ t.replace("EAN", "%llu".printf(id)); + /* aliases */ + string aliases = ""; + foreach(var a in db.get_product_aliases(id)) { + aliases += "<li>%llu</li>".printf(a); + } + t.replace("ALIASES", aliases); + /* name */ string name = db.get_product_name(id); t.replace("NAME", name); @@ -1541,30 +1548,25 @@ public class WebServer { } void handler_cashbox_detail_selection(Soup.Server server, Soup.Message msg, string path, GLib.HashTable? query, Soup.ClientContext client) { - string[] pathparts = path.split("/"); + try { + string[] pathparts = path.split("/"); - if(pathparts.length > 4) { - DateYear year = (DateYear) int.parse(pathparts[3]); - DateMonth month = (DateMonth) int.parse(pathparts[4]); - handler_cashbox_detail(server, msg, path, query, client, year, month); - } else { - try { - var session = new WebSession(server, msg, path, query, client); - var template = new WebTemplate("cashbox/selection.html", session); - template.replace("TITLE", shortname + " Shop System: Cashbox Detail"); - template.menu_set_active("cashbox"); - msg.set_response("text/html", Soup.MemoryUse.COPY, template.data); - msg.set_status(200); - } catch(TemplateError e) { - stderr.printf(e.message+"\n"); - handler_404(server, msg, path, query, client); - } catch(DatabaseError e) { - handler_400(server, msg, path, query, client, e.message); - } catch(IOError e) { - handler_400(server, msg, path, query, client, e.message); - } catch(DBusError e) { - handler_400(server, msg, path, query, client, e.message); + if(pathparts.length > 4) { + DateYear year = (DateYear) int.parse(pathparts[3]); + DateMonth month = (DateMonth) int.parse(pathparts[4]); + handler_cashbox_detail(server, msg, path, query, client, year, month); + } else { + msg.set_redirect(302, "/cashbox"); } + } catch(TemplateError e) { + stderr.printf(e.message+"\n"); + handler_404(server, msg, path, query, client); + } catch(DatabaseError e) { + handler_400(server, msg, path, query, client, e.message); + } catch(IOError e) { + handler_400(server, msg, path, query, client, e.message); + } catch(DBusError e) { + handler_400(server, msg, path, query, client, e.message); } } @@ -1572,7 +1574,7 @@ public class WebServer { try { var session = new WebSession(server, msg, path, query, client); - if(!session.superuser) { + if(!session.superuser && !session.auth_cashbox) { handler_403(server, msg, path, query, client); return; } |