From 22df08c29f6e4566d418e2a80a8279303406a733 Mon Sep 17 00:00:00 2001 From: Sebastian Reichel Date: Fri, 29 Jun 2018 00:58:19 +0200 Subject: build: switch to meson buildsystem We build the project with 'meson' now instead of using custom configure script + GNU Makefiles. To build the project, go to the project root directory and use the following commands: Building: meson build cd build ninja Update Language Files: ninja shopsystem-pot ninja shopsystem-update-po Install: DESTDIR=./tmp ninja install --- data/dbus/.gitignore | 1 + .../io.mainframe.shopsystem.AudioPlayer.conf | 17 + .../config/io.mainframe.shopsystem.Config.conf | 17 + .../config/io.mainframe.shopsystem.Database.conf | 17 + .../io.mainframe.shopsystem.InputDevice.conf | 17 + .../config/io.mainframe.shopsystem.InvoicePDF.conf | 17 + data/dbus/config/io.mainframe.shopsystem.Mail.conf | 17 + data/dbus/config/io.mainframe.shopsystem.PGP.conf | 17 + .../io.mainframe.shopsystem.ScannerSession.conf | 17 + .../io.mainframe.shopsystem.SerialDevice.conf | 17 + .../config/io.mainframe.shopsystem.StockPDF.conf | 17 + .../io.mainframe.shopsystem.AudioPlayer.service.in | 4 + .../dbus/io.mainframe.shopsystem.Config.service.in | 4 + .../io.mainframe.shopsystem.Database.service.in | 4 + .../io.mainframe.shopsystem.InputDevice.service.in | 4 + .../io.mainframe.shopsystem.InvoicePDF.service.in | 4 + data/dbus/io.mainframe.shopsystem.Mail.service.in | 4 + data/dbus/io.mainframe.shopsystem.PGP.service.in | 4 + ....mainframe.shopsystem.ScannerSession.service.in | 4 + ...io.mainframe.shopsystem.SerialDevice.service.in | 4 + .../io.mainframe.shopsystem.StockPDF.service.in | 4 + data/dbus/meson.build | 28 + data/invoice/footer-line.svg | 115 + data/invoice/invoice.final.html | 11 + data/invoice/invoice.final.txt | 11 + data/invoice/invoice.temporary.html | 17 + data/invoice/invoice.temporary.txt | 17 + data/invoice/logo.svg | 198 + data/invoice/pdf-template.txt | 12 + data/invoice/treasurer.mail.txt | 8 + data/invoice/vat.html | 4 + data/invoice/vat.txt | 3 + data/logo.txt | 6 + data/meson.build | 10 + data/po/LINGUAS | 1 + data/po/POTFILES | 47 + data/po/de.po | 477 + data/po/meson.build | 2 + data/po/shopsystem.pot | 475 + data/sounds/system/LICENSE | 14 + data/sounds/system/error.ogg | Bin 0 -> 15582 bytes data/sounds/system/shutdown.ogg | Bin 0 -> 35991 bytes data/sounds/system/startup.ogg | Bin 0 -> 23405 bytes data/sounds/user/beep/LICENSE | 24 + data/sounds/user/beep/error/buzzer.ogg | Bin 0 -> 27153 bytes data/sounds/user/beep/login/toycaralarm.ogg | Bin 0 -> 8737 bytes data/sounds/user/beep/logout/cha ching.ogg | Bin 0 -> 31476 bytes data/sounds/user/beep/purchase/beep.ogg | Bin 0 -> 5665 bytes data/sounds/user/beep/purchase/camera.ogg | Bin 0 -> 14605 bytes data/sounds/user/dude/LICENSE | 19 + data/sounds/user/dude/error/I broke something.ogg | Bin 0 -> 76434 bytes .../user/dude/login/hey dude, whats up man.ogg | Bin 0 -> 57447 bytes data/sounds/user/dude/logout/bye.ogg | Bin 0 -> 27610 bytes data/sounds/user/dude/purchase/yeah man.ogg | Bin 0 -> 38743 bytes data/sounds/user/girlfriend/LICENSE | 39 + .../user/girlfriend/error/no, no, forget it.ogg | Bin 0 -> 26872 bytes data/sounds/user/girlfriend/login/hello.ogg | Bin 0 -> 9918 bytes .../login/we need to talk about this.ogg | Bin 0 -> 37918 bytes .../girlfriend/logout/get out, get outta here.ogg | Bin 0 -> 29444 bytes .../logout/i dont have time for this.ogg | Bin 0 -> 34138 bytes .../logout/why dont you just leave then.ogg | Bin 0 -> 35918 bytes .../user/girlfriend/purchase/code accepted.ogg | Bin 0 -> 17678 bytes .../user/girlfriend/purchase/yeah so what.ogg | Bin 0 -> 25896 bytes data/sounds/user/japanese/LICENSE | 29 + data/sounds/user/japanese/error/no, iie.ogg | Bin 0 -> 13226 bytes data/sounds/user/japanese/error/sumimasen.ogg | Bin 0 -> 19912 bytes data/sounds/user/japanese/login/hello.ogg | Bin 0 -> 20760 bytes data/sounds/user/japanese/logout/goodbye.ogg | Bin 0 -> 20223 bytes .../sounds/user/japanese/purchase/domo-arigato.ogg | Bin 0 -> 12280 bytes data/sounds/user/japanese/purchase/domo.ogg | Bin 0 -> 8290 bytes data/sounds/user/robot/LICENSE | 19 + data/sounds/user/robot/error/critical error.ogg | Bin 0 -> 21345 bytes data/sounds/user/robot/login/login accepted.ogg | Bin 0 -> 32165 bytes data/sounds/user/robot/logout/terminating.ogg | Bin 0 -> 18148 bytes data/sounds/user/robot/purchase/accepted.ogg | Bin 0 -> 16324 bytes data/sounds/user/sexy/LICENSE | 39 + data/sounds/user/sexy/error/error.ogg | Bin 0 -> 15582 bytes .../user/sexy/login/welcome back sexy bitch.ogg | Bin 0 -> 56041 bytes .../sexy/logout/well if thats how you feel.ogg | Bin 0 -> 36308 bytes data/sounds/user/sexy/logout/what about me.ogg | Bin 0 -> 26986 bytes data/sounds/user/sexy/purchase/do it again.ogg | Bin 0 -> 65485 bytes data/sounds/user/sexy/purchase/what is next.ogg | Bin 0 -> 19297 bytes data/sounds/user/sexy/purchase/yes, master.ogg | Bin 0 -> 24812 bytes .../user/sexy/purchase/your will is my command.ogg | Bin 0 -> 41467 bytes data/systemd/meson.build | 18 + data/systemd/shopsystem-display-on-off.service.in | 12 + data/systemd/shopsystem-input-device.service.in | 20 + data/systemd/shopsystem-mail-backup.service.in | 12 + data/systemd/shopsystem-mail-backup.timer | 9 + .../shopsystem-mail-daily-invoice.service.in | 13 + data/systemd/shopsystem-mail-daily-invoice.timer | 9 + .../shopsystem-mail-monthly-invoice.service.in | 13 + data/systemd/shopsystem-mail-monthly-invoice.timer | 9 + data/systemd/shopsystem-ui.service.in | 17 + data/systemd/shopsystem-web.service.in | 13 + data/templates/aliases/index.html | 17 + data/templates/aliases/new.html | 14 + data/templates/base.html | 26 + data/templates/cashbox/add.html | 17 + data/templates/cashbox/detail.html | 26 + data/templates/cashbox/index.html | 21 + data/templates/cashbox/selection.html | 17 + data/templates/css/base.css | 91 + data/templates/css/bootstrap.css | 6167 +++++++++++ data/templates/errors/400.html | 5 + data/templates/errors/403.html | 1 + data/templates/errors/todo.html | 1 + data/templates/img/glyphicons-halflings-white.png | Bin 0 -> 8777 bytes data/templates/img/glyphicons-halflings.png | Bin 0 -> 12799 bytes data/templates/index.html | 1 + data/templates/js/bootstrap.js | 2280 ++++ data/templates/js/code39.js | 148 + data/templates/js/jquery.flot.js | 2599 +++++ data/templates/js/jquery.flot.navigate.js | 321 + data/templates/js/jquery.flot.pie.js | 750 ++ data/templates/js/jquery.flot.selection.js | 344 + data/templates/js/jquery.js | 10346 +++++++++++++++++++ data/templates/js/jquery.mousewheel.js | 84 + data/templates/js/sorttable.js | 40 + data/templates/logout.html | 1 + data/templates/menu.html | 32 + data/templates/menu_login.html | 5 + data/templates/menu_logout.html | 12 + data/templates/products/bestbefore.html | 8 + data/templates/products/entry.html | 64 + data/templates/products/index.html | 24 + data/templates/products/new.html | 22 + data/templates/products/newprice.html | 18 + data/templates/products/restock.html | 22 + data/templates/stats/index.html | 19 + data/templates/stats/profit_per_day.html | 80 + data/templates/stats/profit_per_product.html | 42 + data/templates/stats/profit_per_weekday.html | 30 + data/templates/stats/stock.html | 83 + data/templates/users/entry.html | 123 + data/templates/users/import-pgp.html | 22 + data/templates/users/import.html | 39 + data/templates/users/index.html | 8 + data/templates/users/invoice.html | 39 + data/udev/meson.build | 6 + data/udev/shopsystem-input-device-rfid.rules | 1 + data/udev/shopsystem-input-device.rules | 1 + 142 files changed, 25998 insertions(+) create mode 100644 data/dbus/.gitignore create mode 100644 data/dbus/config/io.mainframe.shopsystem.AudioPlayer.conf create mode 100644 data/dbus/config/io.mainframe.shopsystem.Config.conf create mode 100644 data/dbus/config/io.mainframe.shopsystem.Database.conf create mode 100644 data/dbus/config/io.mainframe.shopsystem.InputDevice.conf create mode 100644 data/dbus/config/io.mainframe.shopsystem.InvoicePDF.conf create mode 100644 data/dbus/config/io.mainframe.shopsystem.Mail.conf create mode 100644 data/dbus/config/io.mainframe.shopsystem.PGP.conf create mode 100644 data/dbus/config/io.mainframe.shopsystem.ScannerSession.conf create mode 100644 data/dbus/config/io.mainframe.shopsystem.SerialDevice.conf create mode 100644 data/dbus/config/io.mainframe.shopsystem.StockPDF.conf create mode 100644 data/dbus/io.mainframe.shopsystem.AudioPlayer.service.in create mode 100644 data/dbus/io.mainframe.shopsystem.Config.service.in create mode 100644 data/dbus/io.mainframe.shopsystem.Database.service.in create mode 100644 data/dbus/io.mainframe.shopsystem.InputDevice.service.in create mode 100644 data/dbus/io.mainframe.shopsystem.InvoicePDF.service.in create mode 100644 data/dbus/io.mainframe.shopsystem.Mail.service.in create mode 100644 data/dbus/io.mainframe.shopsystem.PGP.service.in create mode 100644 data/dbus/io.mainframe.shopsystem.ScannerSession.service.in create mode 100644 data/dbus/io.mainframe.shopsystem.SerialDevice.service.in create mode 100644 data/dbus/io.mainframe.shopsystem.StockPDF.service.in create mode 100644 data/dbus/meson.build create mode 100644 data/invoice/footer-line.svg create mode 100644 data/invoice/invoice.final.html create mode 100644 data/invoice/invoice.final.txt create mode 100644 data/invoice/invoice.temporary.html create mode 100644 data/invoice/invoice.temporary.txt create mode 100644 data/invoice/logo.svg create mode 100644 data/invoice/pdf-template.txt create mode 100644 data/invoice/treasurer.mail.txt create mode 100644 data/invoice/vat.html create mode 100644 data/invoice/vat.txt create mode 100644 data/logo.txt create mode 100644 data/meson.build create mode 100644 data/po/LINGUAS create mode 100644 data/po/POTFILES create mode 100644 data/po/de.po create mode 100644 data/po/meson.build create mode 100644 data/po/shopsystem.pot create mode 100644 data/sounds/system/LICENSE create mode 100644 data/sounds/system/error.ogg create mode 100644 data/sounds/system/shutdown.ogg create mode 100644 data/sounds/system/startup.ogg create mode 100644 data/sounds/user/beep/LICENSE create mode 100644 data/sounds/user/beep/error/buzzer.ogg create mode 100644 data/sounds/user/beep/login/toycaralarm.ogg create mode 100644 data/sounds/user/beep/logout/cha ching.ogg create mode 100644 data/sounds/user/beep/purchase/beep.ogg create mode 100644 data/sounds/user/beep/purchase/camera.ogg create mode 100644 data/sounds/user/dude/LICENSE create mode 100644 data/sounds/user/dude/error/I broke something.ogg create mode 100644 data/sounds/user/dude/login/hey dude, whats up man.ogg create mode 100644 data/sounds/user/dude/logout/bye.ogg create mode 100644 data/sounds/user/dude/purchase/yeah man.ogg create mode 100644 data/sounds/user/girlfriend/LICENSE create mode 100644 data/sounds/user/girlfriend/error/no, no, forget it.ogg create mode 100644 data/sounds/user/girlfriend/login/hello.ogg create mode 100644 data/sounds/user/girlfriend/login/we need to talk about this.ogg create mode 100644 data/sounds/user/girlfriend/logout/get out, get outta here.ogg create mode 100644 data/sounds/user/girlfriend/logout/i dont have time for this.ogg create mode 100644 data/sounds/user/girlfriend/logout/why dont you just leave then.ogg create mode 100644 data/sounds/user/girlfriend/purchase/code accepted.ogg create mode 100644 data/sounds/user/girlfriend/purchase/yeah so what.ogg create mode 100644 data/sounds/user/japanese/LICENSE create mode 100644 data/sounds/user/japanese/error/no, iie.ogg create mode 100644 data/sounds/user/japanese/error/sumimasen.ogg create mode 100644 data/sounds/user/japanese/login/hello.ogg create mode 100644 data/sounds/user/japanese/logout/goodbye.ogg create mode 100644 data/sounds/user/japanese/purchase/domo-arigato.ogg create mode 100644 data/sounds/user/japanese/purchase/domo.ogg create mode 100644 data/sounds/user/robot/LICENSE create mode 100644 data/sounds/user/robot/error/critical error.ogg create mode 100644 data/sounds/user/robot/login/login accepted.ogg create mode 100644 data/sounds/user/robot/logout/terminating.ogg create mode 100644 data/sounds/user/robot/purchase/accepted.ogg create mode 100644 data/sounds/user/sexy/LICENSE create mode 100644 data/sounds/user/sexy/error/error.ogg create mode 100644 data/sounds/user/sexy/login/welcome back sexy bitch.ogg create mode 100644 data/sounds/user/sexy/logout/well if thats how you feel.ogg create mode 100644 data/sounds/user/sexy/logout/what about me.ogg create mode 100644 data/sounds/user/sexy/purchase/do it again.ogg create mode 100644 data/sounds/user/sexy/purchase/what is next.ogg create mode 100644 data/sounds/user/sexy/purchase/yes, master.ogg create mode 100644 data/sounds/user/sexy/purchase/your will is my command.ogg create mode 100644 data/systemd/meson.build create mode 100644 data/systemd/shopsystem-display-on-off.service.in create mode 100644 data/systemd/shopsystem-input-device.service.in create mode 100644 data/systemd/shopsystem-mail-backup.service.in create mode 100644 data/systemd/shopsystem-mail-backup.timer create mode 100644 data/systemd/shopsystem-mail-daily-invoice.service.in create mode 100644 data/systemd/shopsystem-mail-daily-invoice.timer create mode 100644 data/systemd/shopsystem-mail-monthly-invoice.service.in create mode 100644 data/systemd/shopsystem-mail-monthly-invoice.timer create mode 100644 data/systemd/shopsystem-ui.service.in create mode 100644 data/systemd/shopsystem-web.service.in create mode 100644 data/templates/aliases/index.html create mode 100644 data/templates/aliases/new.html create mode 100644 data/templates/base.html create mode 100644 data/templates/cashbox/add.html create mode 100644 data/templates/cashbox/detail.html create mode 100644 data/templates/cashbox/index.html create mode 100644 data/templates/cashbox/selection.html create mode 100644 data/templates/css/base.css create mode 100644 data/templates/css/bootstrap.css create mode 100644 data/templates/errors/400.html create mode 100644 data/templates/errors/403.html create mode 100644 data/templates/errors/todo.html create mode 100644 data/templates/img/glyphicons-halflings-white.png create mode 100644 data/templates/img/glyphicons-halflings.png create mode 100644 data/templates/index.html create mode 100644 data/templates/js/bootstrap.js create mode 100644 data/templates/js/code39.js create mode 100644 data/templates/js/jquery.flot.js create mode 100644 data/templates/js/jquery.flot.navigate.js create mode 100644 data/templates/js/jquery.flot.pie.js create mode 100644 data/templates/js/jquery.flot.selection.js create mode 100644 data/templates/js/jquery.js create mode 100644 data/templates/js/jquery.mousewheel.js create mode 100644 data/templates/js/sorttable.js create mode 100644 data/templates/logout.html create mode 100644 data/templates/menu.html create mode 100644 data/templates/menu_login.html create mode 100644 data/templates/menu_logout.html create mode 100644 data/templates/products/bestbefore.html create mode 100644 data/templates/products/entry.html create mode 100644 data/templates/products/index.html create mode 100644 data/templates/products/new.html create mode 100644 data/templates/products/newprice.html create mode 100644 data/templates/products/restock.html create mode 100644 data/templates/stats/index.html create mode 100644 data/templates/stats/profit_per_day.html create mode 100644 data/templates/stats/profit_per_product.html create mode 100644 data/templates/stats/profit_per_weekday.html create mode 100644 data/templates/stats/stock.html create mode 100644 data/templates/users/entry.html create mode 100644 data/templates/users/import-pgp.html create mode 100644 data/templates/users/import.html create mode 100644 data/templates/users/index.html create mode 100644 data/templates/users/invoice.html create mode 100644 data/udev/meson.build create mode 100644 data/udev/shopsystem-input-device-rfid.rules create mode 100644 data/udev/shopsystem-input-device.rules (limited to 'data') diff --git a/data/dbus/.gitignore b/data/dbus/.gitignore new file mode 100644 index 0000000..0e3ad1b --- /dev/null +++ b/data/dbus/.gitignore @@ -0,0 +1 @@ +*.service diff --git a/data/dbus/config/io.mainframe.shopsystem.AudioPlayer.conf b/data/dbus/config/io.mainframe.shopsystem.AudioPlayer.conf new file mode 100644 index 0000000..b8c11c0 --- /dev/null +++ b/data/dbus/config/io.mainframe.shopsystem.AudioPlayer.conf @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + diff --git a/data/dbus/config/io.mainframe.shopsystem.Config.conf b/data/dbus/config/io.mainframe.shopsystem.Config.conf new file mode 100644 index 0000000..41e5cb6 --- /dev/null +++ b/data/dbus/config/io.mainframe.shopsystem.Config.conf @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + diff --git a/data/dbus/config/io.mainframe.shopsystem.Database.conf b/data/dbus/config/io.mainframe.shopsystem.Database.conf new file mode 100644 index 0000000..61bde19 --- /dev/null +++ b/data/dbus/config/io.mainframe.shopsystem.Database.conf @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + diff --git a/data/dbus/config/io.mainframe.shopsystem.InputDevice.conf b/data/dbus/config/io.mainframe.shopsystem.InputDevice.conf new file mode 100644 index 0000000..15ad43d --- /dev/null +++ b/data/dbus/config/io.mainframe.shopsystem.InputDevice.conf @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + diff --git a/data/dbus/config/io.mainframe.shopsystem.InvoicePDF.conf b/data/dbus/config/io.mainframe.shopsystem.InvoicePDF.conf new file mode 100644 index 0000000..6ec4610 --- /dev/null +++ b/data/dbus/config/io.mainframe.shopsystem.InvoicePDF.conf @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + diff --git a/data/dbus/config/io.mainframe.shopsystem.Mail.conf b/data/dbus/config/io.mainframe.shopsystem.Mail.conf new file mode 100644 index 0000000..e48e264 --- /dev/null +++ b/data/dbus/config/io.mainframe.shopsystem.Mail.conf @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + diff --git a/data/dbus/config/io.mainframe.shopsystem.PGP.conf b/data/dbus/config/io.mainframe.shopsystem.PGP.conf new file mode 100644 index 0000000..ab2f8b2 --- /dev/null +++ b/data/dbus/config/io.mainframe.shopsystem.PGP.conf @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + diff --git a/data/dbus/config/io.mainframe.shopsystem.ScannerSession.conf b/data/dbus/config/io.mainframe.shopsystem.ScannerSession.conf new file mode 100644 index 0000000..49c4eb1 --- /dev/null +++ b/data/dbus/config/io.mainframe.shopsystem.ScannerSession.conf @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + diff --git a/data/dbus/config/io.mainframe.shopsystem.SerialDevice.conf b/data/dbus/config/io.mainframe.shopsystem.SerialDevice.conf new file mode 100644 index 0000000..d849ef4 --- /dev/null +++ b/data/dbus/config/io.mainframe.shopsystem.SerialDevice.conf @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + diff --git a/data/dbus/config/io.mainframe.shopsystem.StockPDF.conf b/data/dbus/config/io.mainframe.shopsystem.StockPDF.conf new file mode 100644 index 0000000..8cf0fdc --- /dev/null +++ b/data/dbus/config/io.mainframe.shopsystem.StockPDF.conf @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + diff --git a/data/dbus/io.mainframe.shopsystem.AudioPlayer.service.in b/data/dbus/io.mainframe.shopsystem.AudioPlayer.service.in new file mode 100644 index 0000000..6aa6a6f --- /dev/null +++ b/data/dbus/io.mainframe.shopsystem.AudioPlayer.service.in @@ -0,0 +1,4 @@ +[D-BUS Service] +Name=io.mainframe.shopsystem.AudioPlayer +Exec=@PATH@/shop-audio +User=shop diff --git a/data/dbus/io.mainframe.shopsystem.Config.service.in b/data/dbus/io.mainframe.shopsystem.Config.service.in new file mode 100644 index 0000000..52e4cf7 --- /dev/null +++ b/data/dbus/io.mainframe.shopsystem.Config.service.in @@ -0,0 +1,4 @@ +[D-BUS Service] +Name=io.mainframe.shopsystem.Config +Exec=@PATH@/shop-config +User=shop diff --git a/data/dbus/io.mainframe.shopsystem.Database.service.in b/data/dbus/io.mainframe.shopsystem.Database.service.in new file mode 100644 index 0000000..89112dc --- /dev/null +++ b/data/dbus/io.mainframe.shopsystem.Database.service.in @@ -0,0 +1,4 @@ +[D-BUS Service] +Name=io.mainframe.shopsystem.Database +Exec=@PATH@/shop-database +User=shop diff --git a/data/dbus/io.mainframe.shopsystem.InputDevice.service.in b/data/dbus/io.mainframe.shopsystem.InputDevice.service.in new file mode 100644 index 0000000..1584d8d --- /dev/null +++ b/data/dbus/io.mainframe.shopsystem.InputDevice.service.in @@ -0,0 +1,4 @@ +[D-BUS Service] +Name=io.mainframe.shopsystem.InputDevice +Exec=@PATH@/shop-input-device +User=shop diff --git a/data/dbus/io.mainframe.shopsystem.InvoicePDF.service.in b/data/dbus/io.mainframe.shopsystem.InvoicePDF.service.in new file mode 100644 index 0000000..2516d4e --- /dev/null +++ b/data/dbus/io.mainframe.shopsystem.InvoicePDF.service.in @@ -0,0 +1,4 @@ +[D-BUS Service] +Name=io.mainframe.shopsystem.InvoicePDF +Exec=@PATH@/shop-pdf-invoice +User=shop diff --git a/data/dbus/io.mainframe.shopsystem.Mail.service.in b/data/dbus/io.mainframe.shopsystem.Mail.service.in new file mode 100644 index 0000000..694f579 --- /dev/null +++ b/data/dbus/io.mainframe.shopsystem.Mail.service.in @@ -0,0 +1,4 @@ +[D-BUS Service] +Name=io.mainframe.shopsystem.Mail +Exec=@PATH@/shop-mailer +User=shop diff --git a/data/dbus/io.mainframe.shopsystem.PGP.service.in b/data/dbus/io.mainframe.shopsystem.PGP.service.in new file mode 100644 index 0000000..7c61f63 --- /dev/null +++ b/data/dbus/io.mainframe.shopsystem.PGP.service.in @@ -0,0 +1,4 @@ +[D-BUS Service] +Name=io.mainframe.shopsystem.PGP +Exec=@PATH@/shop-pgp +User=shop diff --git a/data/dbus/io.mainframe.shopsystem.ScannerSession.service.in b/data/dbus/io.mainframe.shopsystem.ScannerSession.service.in new file mode 100644 index 0000000..231ae21 --- /dev/null +++ b/data/dbus/io.mainframe.shopsystem.ScannerSession.service.in @@ -0,0 +1,4 @@ +[D-BUS Service] +Name=io.mainframe.shopsystem.ScannerSession +Exec=@PATH@/shop-scanner-session +User=shop diff --git a/data/dbus/io.mainframe.shopsystem.SerialDevice.service.in b/data/dbus/io.mainframe.shopsystem.SerialDevice.service.in new file mode 100644 index 0000000..7433606 --- /dev/null +++ b/data/dbus/io.mainframe.shopsystem.SerialDevice.service.in @@ -0,0 +1,4 @@ +[D-BUS Service] +Name=io.mainframe.shopsystem.SerialDevice +Exec=@PATH@/shop-serial-device +User=shop diff --git a/data/dbus/io.mainframe.shopsystem.StockPDF.service.in b/data/dbus/io.mainframe.shopsystem.StockPDF.service.in new file mode 100644 index 0000000..d1a3b5e --- /dev/null +++ b/data/dbus/io.mainframe.shopsystem.StockPDF.service.in @@ -0,0 +1,4 @@ +[D-BUS Service] +Name=io.mainframe.shopsystem.StockPDF +Exec=@PATH@/shop-pdf-stock +User=shop diff --git a/data/dbus/meson.build b/data/dbus/meson.build new file mode 100644 index 0000000..e8c529e --- /dev/null +++ b/data/dbus/meson.build @@ -0,0 +1,28 @@ +bindir = join_paths(get_option('prefix'), get_option('bindir')) +dbusdir = join_paths(get_option('prefix'), get_option('datadir'), 'dbus-1', 'system-services') +dbuscfgdir = join_paths(get_option('sysconfdir'), 'dbus-1', 'system.d') + +cfg = configuration_data() +cfg.set('PATH', bindir) + +configure_file(input: 'io.mainframe.shopsystem.AudioPlayer.service.in', output: 'io.mainframe.shopsystem.AudioPlayer.service', configuration: cfg, install_dir: dbusdir) +configure_file(input: 'io.mainframe.shopsystem.Config.service.in', output: 'io.mainframe.shopsystem.Config.service', configuration: cfg, install_dir: dbusdir) +configure_file(input: 'io.mainframe.shopsystem.Database.service.in', output: 'io.mainframe.shopsystem.Database.service', configuration: cfg, install_dir: dbusdir) +configure_file(input: 'io.mainframe.shopsystem.InputDevice.service.in', output: 'io.mainframe.shopsystem.InputDevice.service', configuration: cfg, install_dir: dbusdir) +configure_file(input: 'io.mainframe.shopsystem.InvoicePDF.service.in', output: 'io.mainframe.shopsystem.InvoicePDF.service', configuration: cfg, install_dir: dbusdir) +configure_file(input: 'io.mainframe.shopsystem.Mail.service.in', output: 'io.mainframe.shopsystem.Mail.service', configuration: cfg, install_dir: dbusdir) +configure_file(input: 'io.mainframe.shopsystem.PGP.service.in', output: 'io.mainframe.shopsystem.PGP.service', configuration: cfg, install_dir: dbusdir) +configure_file(input: 'io.mainframe.shopsystem.ScannerSession.service.in', output: 'io.mainframe.shopsystem.ScannerSession.service', configuration: cfg, install_dir: dbusdir) +configure_file(input: 'io.mainframe.shopsystem.SerialDevice.service.in', output: 'io.mainframe.shopsystem.SerialDevice.service', configuration: cfg, install_dir: dbusdir) +configure_file(input: 'io.mainframe.shopsystem.StockPDF.service.in', output: 'io.mainframe.shopsystem.StockPDF.service', configuration: cfg, install_dir: dbusdir) + +install_data('config/io.mainframe.shopsystem.AudioPlayer.conf', install_dir: dbuscfgdir) +install_data('config/io.mainframe.shopsystem.Config.conf', install_dir: dbuscfgdir) +install_data('config/io.mainframe.shopsystem.Database.conf', install_dir: dbuscfgdir) +install_data('config/io.mainframe.shopsystem.InputDevice.conf', install_dir: dbuscfgdir) +install_data('config/io.mainframe.shopsystem.InvoicePDF.conf', install_dir: dbuscfgdir) +install_data('config/io.mainframe.shopsystem.Mail.conf', install_dir: dbuscfgdir) +install_data('config/io.mainframe.shopsystem.PGP.conf', install_dir: dbuscfgdir) +install_data('config/io.mainframe.shopsystem.ScannerSession.conf', install_dir: dbuscfgdir) +install_data('config/io.mainframe.shopsystem.SerialDevice.conf', install_dir: dbuscfgdir) +install_data('config/io.mainframe.shopsystem.StockPDF.conf', install_dir: dbuscfgdir) diff --git a/data/invoice/footer-line.svg b/data/invoice/footer-line.svg new file mode 100644 index 0000000..eafdffe --- /dev/null +++ b/data/invoice/footer-line.svg @@ -0,0 +1,115 @@ + + + +image/svg+xml + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/invoice/invoice.final.html b/data/invoice/invoice.final.html new file mode 100644 index 0000000..3856231 --- /dev/null +++ b/data/invoice/invoice.final.html @@ -0,0 +1,11 @@ +

{{{ADDRESS}}} {{{LASTNAME}}},

+ +

wir erlauben uns, Ihnen für den Verzehr von Speisen und Getränken wie folgt zu +berechnen:

+ +{{{INVOICE_TABLE}}} + +{{{VAT}}} + +

Grüße aus dem {{{SPACENAME}}},
+das Shop-System

diff --git a/data/invoice/invoice.final.txt b/data/invoice/invoice.final.txt new file mode 100644 index 0000000..80e60b8 --- /dev/null +++ b/data/invoice/invoice.final.txt @@ -0,0 +1,11 @@ +{{{ADDRESS}}} {{{LASTNAME}}}, + +wir erlauben uns, Ihnen für den Verzehr von Speisen und Getränken +wie folgt zu berechnen: + +{{{INVOICE_TABLE}}} + +{{{VAT}}} + +Grüße aus dem {{{SPACENAME}}}, +das Shop-System diff --git a/data/invoice/invoice.temporary.html b/data/invoice/invoice.temporary.html new file mode 100644 index 0000000..26dc216 --- /dev/null +++ b/data/invoice/invoice.temporary.html @@ -0,0 +1,17 @@ +

{{{ADDRESS}}} {{{LASTNAME}}},

+ +

wir erlauben uns, Ihnen für den Verzehr von Speisen und Getränken wie folgt zu +berechnen:

+ +{{{INVOICE_TABLE}}} + +{{{VAT}}} + +

Bei dieser Abrechnung handelt es sich lediglich um einen Zwischenstand. Die +Hauptrechnung wird einmal monatlich getrennt zugestellt und der Gesamtbetrag +wird dann vom angegebenen Bankkonto eingezogen.

+ +

Der Gesamtbetrag für den aktuellen Monat beträgt bisher:

{{{SUM_MONTH}}} € + +

Grüße aus dem {{{SPACENAME}}},
+das Shop-System

diff --git a/data/invoice/invoice.temporary.txt b/data/invoice/invoice.temporary.txt new file mode 100644 index 0000000..bf21c51 --- /dev/null +++ b/data/invoice/invoice.temporary.txt @@ -0,0 +1,17 @@ +{{{ADDRESS}}} {{{LASTNAME}}}, + +wir erlauben uns, Ihnen für den Verzehr von Speisen und Getränken +wie folgt zu berechnen: + +{{{INVOICE_TABLE}}} + +{{{VAT}}} + +Bei dieser Abrechnung handelt es sich lediglich um einen Zwischenstand. +Die Hauptrechnung wird einmal monatlich getrennt zugestellt und der +Gesamtbetrag wird dann vom angegebenen Bankkonto eingezogen. + +Der Gesamtbetrag für den aktuellen Monat beträgt bisher: {{{SUM_MONTH}}} € + +Grüße aus dem {{{SPACENAME}}}, +das Shop-System diff --git a/data/invoice/logo.svg b/data/invoice/logo.svg new file mode 100644 index 0000000..81e97a9 --- /dev/null +++ b/data/invoice/logo.svg @@ -0,0 +1,198 @@ + + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/invoice/pdf-template.txt b/data/invoice/pdf-template.txt new file mode 100644 index 0000000..9da8a9a --- /dev/null +++ b/data/invoice/pdf-template.txt @@ -0,0 +1,12 @@ +{{{ADDRESS}}} {{{LASTNAME}}}, + +wir erlauben uns, Ihnen für den Verzehr von Speisen und Getränken {{{SUM}}}€ in Rechnung zu stellen. + +Eine detaillierte Auflistung der einzelnen Posten befindet sich, mit genauer Zeitangabe des Einkaufs, auf den folgenden Seiten. + +{{{VAT}}} + +Der Gesamtbetrag wird in 10 Tagen von dem angegebenen Bankkonto eingezogen. +Mit freundlichen Grüßen + +{{{ORGANIZATION}}} diff --git a/data/invoice/treasurer.mail.txt b/data/invoice/treasurer.mail.txt new file mode 100644 index 0000000..6c9c6ac --- /dev/null +++ b/data/invoice/treasurer.mail.txt @@ -0,0 +1,8 @@ +Hi Treasurer, + +This mail has the members' invoices for the current month +and an additional csv-file in the attachment. The members' +invoices are for your files and the csv-file can be used +for automatic money collection. + +-- {{{SHORTNAME}}} Shopsystem diff --git a/data/invoice/vat.html b/data/invoice/vat.html new file mode 100644 index 0000000..245ec27 --- /dev/null +++ b/data/invoice/vat.html @@ -0,0 +1,4 @@ +

Umsatzsteuer wird nicht erhoben, da der Verein Kreativität trifft Technik e.V. +als Kleinunternehmen unter die Regelung des +§ 19 Abs. 1 UStG +fällt.

diff --git a/data/invoice/vat.txt b/data/invoice/vat.txt new file mode 100644 index 0000000..d1ee957 --- /dev/null +++ b/data/invoice/vat.txt @@ -0,0 +1,3 @@ +Umsatzsteuer wird nicht erhoben, da der Verein Kreativität trifft +Technik e.V. als Kleinunternehmen unter die Regelung des § 19 +Abs. 1 UStG fällt. diff --git a/data/logo.txt b/data/logo.txt new file mode 100644 index 0000000..ee57aa1 --- /dev/null +++ b/data/logo.txt @@ -0,0 +1,6 @@ + _ ___ _____ ____ _ + | |/ / ||_ _| / ___|| |__ ___ _ __ + | ' /| __|| | \___ \| '_ \ / _ \| '_ \ + | . \| |_ | | ___) | | | | (_) | |_) ) + |_|\_\\__||_| |____/|_| |_|\___/| .__/ + |_| diff --git a/data/meson.build b/data/meson.build new file mode 100644 index 0000000..a1441b4 --- /dev/null +++ b/data/meson.build @@ -0,0 +1,10 @@ +datadir = join_paths(get_option('prefix'), get_option('datadir'), 'shopsystem') + +install_data('logo.txt', install_dir: datadir) +install_subdir('sounds', install_dir: datadir) +install_subdir('templates', install_dir: datadir) +install_subdir('invoice', install_dir: datadir) +subdir('dbus') +subdir('po') +subdir('systemd') +subdir('udev') diff --git a/data/po/LINGUAS b/data/po/LINGUAS new file mode 100644 index 0000000..7673daa --- /dev/null +++ b/data/po/LINGUAS @@ -0,0 +1 @@ +de diff --git a/data/po/POTFILES b/data/po/POTFILES new file mode 100644 index 0000000..33e1f6a --- /dev/null +++ b/data/po/POTFILES @@ -0,0 +1,47 @@ +audio/audio.vala +audio/main.vala +backup/main.vala +cli/cli.vala +cli/main.vala +config/config.vala +config/main.vala +curses-ui/clock.vala +curses-ui/curses-ui.vala +curses-ui/dialog.vala +curses-ui/logo.vala +curses-ui/main.vala +curses-ui/message_box.vala +curses-ui/message_box_overlay.vala +curses-ui/numbers.vala +curses-ui/status.vala +database/database.vala +database/main.vala +graph-data.vala +input-device/input-device.vala +input-device/main.vala +invoice/invoice.vala +invoice/main.vala +invoice/single.vala +libcairobarcode/code39.vala +libcairobarcode/ean.vala +libcairobarcode/error.vala +mail/mail.vala +mail/mailer.vala +mail/main.vala +pdf-invoice/main.vala +pdf-invoice/pdf-invoice.vala +pdf-invoice/test.vala +pdf-stock/main.vala +pdf-stock/pdf-stock.vala +pdf-stock/test.vala +pgp/main.vala +pgp/pgp.vala +scanner-session/main.vala +scanner-session/scannersession.vala +serial-device/main.vala +serial-device/serial-device.vala +web/csv.vala +web/main.vala +web/template.vala +web/web.vala +web/websession.vala diff --git a/data/po/de.po b/data/po/de.po new file mode 100644 index 0000000..f70e4ce --- /dev/null +++ b/data/po/de.po @@ -0,0 +1,477 @@ +# Copyright (C) 2018 Sebastian Reichel +# This file is distributed under the same license as the main package. +# +msgid "" +msgstr "" +"Project-Id-Version: shopsystem 0.1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-06-29 01:20+0200\n" +"PO-Revision-Date: 2018-06-28 21:14+0200\n" +"Last-Translator: Sebastian Reichel \n" +"Language-Team: German\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: curses-ui/message_box.vala:52 +msgid "" +"\n" +"Date Changed: " +msgstr "" +"\n" +"Datumswechsel: " + +#: scanner-session/scannersession.vala:289 +#, c-format +msgid "%s bought %d items for %s €" +msgstr "%s hat gerade %d Posten für %s € gekauft" + +#: web/template.vala:53 web/template.vala:55 web/template.vala:57 +#: web/template.vala:59 web/template.vala:82 +#, c-format +msgid "%s could not be loaded!" +msgstr "%s konnte nicht geladen werden!" + +#: web/template.vala:40 web/template.vala:43 web/template.vala:46 +#: web/template.vala:49 web/template.vala:78 +#, c-format +msgid "%s not found!" +msgstr "%s wurde nicht gefunden!" + +#: pdf-invoice/pdf-invoice.vala:591 +#, c-format +msgid "Article name \"%s\" does not fit on a single page!" +msgstr "Artikelname \"%s\" passt nicht auf eine Seite" + +#: serial-device/serial-device.vala:39 +msgid "Can't read lock file!\n" +msgstr "Konnte Lock-Datei nicht lesen\n" + +#: audio/audio.vala:38 +msgid "Cannot find alsa GStreamer plugin" +msgstr "GStreamer Plugin für ALSA konnte nicht gefunden werden" + +#: audio/audio.vala:42 +msgid "Cannot find playbin2 GStreamer plugin" +msgstr "GStreamer Plugin playbin2 konnte nicht gefunden werden" + +#: audio/main.vala:39 database/main.vala:29 input-device/main.vala:31 +#: pdf-invoice/main.vala:30 pgp/main.vala:35 serial-device/main.vala:29 +#, c-format +msgid "Config Error: %s\n" +msgstr "Konfigurationsfehler: %s\n" + +#: serial-device/serial-device.vala:211 +#, c-format +msgid "Convert Error: %s" +msgstr "Konvertierungsfehler" + +#: audio/main.vala:30 cli/main.vala:37 config/main.vala:32 +#: database/main.vala:40 input-device/main.vala:42 pdf-invoice/main.vala:39 +#: pdf-stock/main.vala:26 pgp/main.vala:44 scanner-session/main.vala:28 +#: serial-device/main.vala:40 +msgid "Could not acquire name\n" +msgstr "Konnte DBus Namen nicht erlangen\n" + +#: input-device/input-device.vala:40 serial-device/serial-device.vala:165 +msgid "Could not bind IOChannel" +msgstr "IOChannel Verbindung konnte nicht hergestellt werden" + +#: serial-device/serial-device.vala:59 +#, c-format +msgid "Could not create lock file: %s!\n" +msgstr "Konnte Lock-Datei nicht erstellen: %s!\n" + +#: pdf-invoice/pdf-invoice.vala:81 +#, c-format +msgid "Could not load SVG: %s\n" +msgstr "Konnte SVG nicht laden: %s\n" + +#: config/config.vala:26 +#, c-format +msgid "Could not load configuration file: %s" +msgstr "Konnte Konfigurationsdatei nicht laden: %s" + +#: invoice/invoice.vala:338 pdf-invoice/pdf-invoice.vala:379 +#, c-format +msgid "Could not open VAT template: %s" +msgstr "Konnte VAT-Template nicht öffnen: %s" + +#: serial-device/serial-device.vala:55 +msgid "Could not open device!\n" +msgstr "Konnte Gerätedatei nicht öffnen!\n" + +#: invoice/invoice.vala:252 invoice/invoice.vala:319 +#, c-format +msgid "Could not open invoice template: %s" +msgstr "Konnte Rechnungs-Template nicht öffnen: %s" + +#: audio/main.vala:53 cli/main.vala:68 config/main.vala:43 +#: database/main.vala:51 input-device/main.vala:53 input-device/main.vala:58 +#: pdf-stock/main.vala:37 pgp/main.vala:55 scanner-session/main.vala:41 +#: serial-device/main.vala:51 +msgid "Could not register service\n" +msgstr "Konnte DBus-Service nicht registrieren\n" + +#: pdf-invoice/main.vala:50 +#, c-format +msgid "Could not register service: %s\n" +msgstr "Konnte DBus-Servicenicht registieren: %s\n" + +#: web/web.vala:1482 +msgid "Could not setup webserver!" +msgstr "Konnte Webserver nicht konfigurieren!" + +#: web/main.vala:64 +#, c-format +msgid "Could not start Webserver: %s\n" +msgstr "Konnte Webserver nicht starten: %s\n" + +#: pdf-stock/test.vala:26 scanner-session/scannersession.vala:300 +#, c-format +msgid "DBus Error: %s" +msgstr "DBus Fehler: %s" + +#: audio/main.vala:41 database/main.vala:31 input-device/main.vala:33 +#: pdf-invoice/main.vala:26 pgp/main.vala:31 serial-device/main.vala:31 +#: web/main.vala:51 +#, c-format +msgid "DBus Error: %s\n" +msgstr "DBus Fehler: %s\n" + +#: scanner-session/scannersession.vala:304 +#, c-format +msgid "Database Error: %s" +msgstr "Datenbank Fehler: %s" + +#: scanner-session/scannersession.vala:66 +#, c-format +msgid "Error (user=%d): %s" +msgstr "Fehler (Nutzer %d): %s" + +#: cli/main.vala:51 +#, c-format +msgid "Error sending command: %s" +msgstr "Fehler beim senden des Kommandos: %s" + +#: pgp/pgp.vala:123 +msgid "Error!\n" +msgstr "Fehler!\n" + +#: curses-ui/logo.vala:44 scanner-session/scannersession.vala:178 +#: scanner-session/scannersession.vala:225 +#, c-format +msgid "Error: %s" +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:1143 +#, c-format +msgid "Error: %s\n" +msgstr "Fehler: %s\n" + +#: mail/main.vala:35 +msgid "Error: Could not acquire name\n" +msgstr "Fehler: Konnte DBus-Namen nicht bekommen\n" + +#: mail/main.vala:47 +msgid "Error: Could not register service\n" +msgstr "Fehler: Konnte DBus-Service nicht registrieren\n" + +#: database/database.vala:81 +msgid "Error: could not open database!" +msgstr "Fehler: Konnte Datenbank nicht öffnen!" + +#: database/database.vala:28 +#, c-format +msgid "Error: could not prepare statement: %s" +msgstr "Fehler: Konnte SQL-Anweisung nicht erstellen: %s" + +#: scanner-session/scannersession.vala:174 +#: scanner-session/scannersession.vala:221 +#, c-format +msgid "Error: unknown product: %llu" +msgstr "Fehler: unbekanntes Produkt: %llu" + +#: serial-device/serial-device.vala:163 +msgid "Failed to set encoding" +msgstr "Fehler beim setzten der Zeichenkodierung" + +#: curses-ui/logo.vala:31 +#, c-format +msgid "File '%s' doesn't exist.\n" +msgstr "Datei '%s' existiert nicht.\n" + +#: input-device/input-device.vala:43 pdf-stock/test.vala:24 +#, c-format +msgid "File Error: %s" +msgstr "Datei Fehler: %s" + +#: pdf-invoice/pdf-invoice.vala:387 +#, c-format +msgid "File Error: %s\n" +msgstr "Datei Fehler: %s\n" + +#: scanner-session/scannersession.vala:20 +msgid "Guest" +msgstr "Gast" + +#: pdf-stock/test.vala:22 scanner-session/scannersession.vala:302 +#, c-format +msgid "IO Error: %s" +msgstr "EA Fehler: %s" + +#: audio/main.vala:37 curses-ui/main.vala:60 database/main.vala:27 +#: input-device/main.vala:29 pdf-invoice/main.vala:28 pgp/main.vala:33 +#: scanner-session/scannersession.vala:49 serial-device/main.vala:27 +#: web/main.vala:47 +#, c-format +msgid "IO Error: %s\n" +msgstr "EA Fehler: %s\n" + +#: serial-device/serial-device.vala:207 +#, c-format +msgid "IOChannel Error: %s" +msgstr "IOChannel Fehler: %s" + +#: serial-device/serial-device.vala:168 +#, c-format +msgid "IOChannel: %s" +msgstr "IOChannel: %s" + +#: input-device/input-device.vala:27 +msgid "Ignoring InputDevice!\n" +msgstr "Eingabegerät wird ignoriert\n" + +#: scanner-session/scannersession.vala:168 +#: scanner-session/scannersession.vala:215 +msgid "Internal Error!" +msgstr "Interner Fehler!" + +#: web/main.vala:44 web/main.vala:49 +#, c-format +msgid "KeyFile Error: %s\n" +msgstr "Schlüsseldatei Fehler: %s\n" + +#: scanner-session/scannersession.vala:149 +msgid "Login as GUEST" +msgstr "Login als Gast" + +#: scanner-session/scannersession.vala:141 +#, c-format +msgid "Login failed (User ID = %d)" +msgstr "Login fehlgeschlagen (User ID = %d)" + +#: scanner-session/scannersession.vala:155 +msgid "Login failed as GUEST" +msgstr "Gast-Login fehlgeschlagen" + +#: web/websession.vala:165 +#, c-format +msgid "Login for user id %d failed\n" +msgstr "Login für Benutzer %d fehlgeschlagen\n" + +#: scanner-session/scannersession.vala:135 +#, c-format +msgid "Login: %s (%d)" +msgstr "Login: %s (%d)" + +#: input-device/input-device.vala:215 serial-device/serial-device.vala:189 +msgid "Lost device" +msgstr "Gerät verloren" + +#: pdf-invoice/pdf-invoice.vala:628 +msgid "No invoice ID given!" +msgstr "Keine Rechnungsnummer übergeben!" + +#: pdf-invoice/pdf-invoice.vala:631 +msgid "No invoice data given!" +msgstr "Keine Rechnungsdaten übergeben!" + +#: pdf-invoice/pdf-invoice.vala:634 +msgid "No invoice date given!" +msgstr "Kein Rechnungsdatum übergeben!" + +#: pdf-invoice/pdf-invoice.vala:637 +msgid "No invoice recipient given!" +msgstr "Kein Rechnungsempfänger übergeben!" + +#: scanner-session/scannersession.vala:253 +msgid "No more Items on your Shopping Cart" +msgstr "Keine weiteren Gegenstände im Einkaufswagen" + +#: mail/mailer.vala:141 mail/mailer.vala:149 +msgid "No such mail" +msgstr "Mail wurde nicht gefunden" + +#: database/database.vala:611 +msgid "No such session available in database!" +msgstr "Keine solche Session in der Datenbank verfügbar!" + +#: database/database.vala:710 database/database.vala:722 +msgid "No such user available in database!" +msgstr "Kein solcher Nutzer in der Datenbank verfügbar!" + +#: cli/main.vala:25 +#, c-format +msgid "" +"Nothing to send.\n" +"Usage: %s \n" +"Example: %s \"USER 1\" \"LOGOUT\"\n" +msgstr "" +"Nichts zu senden.\n" +"Benutzung: %s \n" +"Beispiel: %s \"USER 1\" \"LOGOUT\"\n" + +#: invoice/main.vala:20 +msgid "Possible values for : temporary, final\n" +msgstr "Mögliche Werte für : temporary, final\n" + +#: pdf-invoice/pdf-invoice.vala:471 +msgid "Prices > 9999.99€ are not supported!" +msgstr "Preise > 9999,99€ werden nicht unterstützt!" + +#: database/database.vala:487 +#, c-format +msgid "Remove purchase of %s" +msgstr "Einkaufsposten %s wurde entfernt" + +#: mail/mailer.vala:180 +#, c-format +msgid "Reply from SMTP-Server: %s" +msgstr "Antwort vom SMTP-Server: %s" + +#: cli/cli.vala:24 +#, c-format +msgid "Sending: %s\n" +msgstr "Sende: %s\n" + +#: curses-ui/main.vala:72 +msgid "Shop System has been started" +msgstr "Shop System wurde gestartet" + +#: curses-ui/main.vala:78 +msgid "Stopping Shop System" +msgstr "Shop System wird gestoppt" + +#: web/main.vala:55 +#, c-format +msgid "TLS certificate: %s\n" +msgstr "TLS Zertifikat: %s\n" + +#: web/main.vala:56 +#, c-format +msgid "TLS private key: %s\n" +msgstr "TLS Privater Schlüssel: %s\n" + +#: invoice/invoice.vala:314 +msgid "Unknown MessageType" +msgstr "Unbekannter Nachrichten Typ" + +#: invoice/main.vala:19 +#, c-format +msgid "Usage: %s [timestamp]\n" +msgstr "Benutzung: %s [timestamp]\n" + +#: web/main.vala:54 +#, c-format +msgid "Web Server Port: %u\n" +msgstr "Webserver Port: %u\n" + +#: pdf-invoice/pdf-invoice.vala:475 +msgid "Years after 9999 are not supported!" +msgstr "Jahre nach 9999 werden nicht unterstützt!" + +#: scanner-session/scannersession.vala:240 +#, c-format +msgid "article added to shopping card: %s (%s €)" +msgstr "Artikel %s (%s €) wurde zum Warenkorb hinzugefügt" + +#: scanner-session/scannersession.vala:189 +#, c-format +msgid "article info: %s (Member: %s €, Guest: %s €" +msgstr "Artikelinfo: %s (Mitglied: %s €, Gast: %s €" + +#: input-device/input-device.vala:249 +#, c-format +msgid "barcode: %s\n" +msgstr "Barcode: %s\n" + +#: mail/mailer.vala:107 +msgid "could not configure STARTTLS" +msgstr "Konnte STARTTLS nicht konfigurieren" + +#: web/template.vala:61 web/template.vala:84 +msgid "could not load templates!" +msgstr "Konnte Templates nicht laden!" + +#: curses-ui/main.vala:27 curses-ui/main.vala:29 +#, c-format +msgid "could not play audio: %s" +msgstr "Konnte Audio Datei nicht abspielen: %s" + +#: mail/mailer.vala:99 +msgid "could not setup server" +msgstr "Konnte Server nicht konfigurieren" + +#: mail/mailer.vala:176 +msgid "eSMTP: Start Session failed!" +msgstr "eSMTP: Session Start fehlgeschlagen!" + +#: database/database.vala:370 database/database.vala:387 +#: database/database.vala:403 database/database.vala:419 +#: database/database.vala:435 database/database.vala:448 +#: database/database.vala:470 database/database.vala:492 +#: database/database.vala:500 database/database.vala:527 +#: database/database.vala:541 database/database.vala:556 +#: database/database.vala:583 database/database.vala:591 +#: database/database.vala:601 database/database.vala:638 +#: database/database.vala:675 database/database.vala:689 +#: database/database.vala:700 database/database.vala:737 +#: database/database.vala:765 database/database.vala:884 +#: database/database.vala:892 database/database.vala:913 +#: database/database.vala:919 database/database.vala:927 +#: database/database.vala:1028 database/database.vala:1079 +#: database/database.vala:1129 database/database.vala:1212 +#, c-format +msgid "internal error: %d" +msgstr "Interner Fehler: %d" + +#: scanner-session/scannersession.vala:249 +#, c-format +msgid "removed last Item from Shopping Cart: %s" +msgstr "Letzter Posten wurde aus dem Warenkorb entfernt: %s" + +#: serial-device/serial-device.vala:43 +msgid "serial device is locked!\n" +msgstr "Serielles Gerät ist blockiert!\n" + +#: mail/mailer.vala:79 +msgid "server or port configuration is missing" +msgstr "Server oder Port Konfiguration fehlt" + +#: input-device/input-device.vala:224 +msgid "short read!\n" +msgstr "Unvollständige Daten aus Gerätedatei gelesen\n" + +#: database/database.vala:490 +msgid "undo not possible without purchases" +msgstr "Rückgängig nicht möglich ohne Einkäufe" + +#: database/database.vala:385 database/database.vala:401 +#: database/database.vala:417 database/database.vala:433 +#: database/database.vala:468 +#, c-format +msgid "unknown product: %llu" +msgstr "Unbekanntes Produkt: %llu" + +#: database/database.vala:1210 +#, c-format +msgid "unknown rfid: %s" +msgstr "Unbekannter RFID: %s" + +#: database/database.vala:636 +msgid "user not found" +msgstr "User nicht gefunden" diff --git a/data/po/meson.build b/data/po/meson.build new file mode 100644 index 0000000..387ab1d --- /dev/null +++ b/data/po/meson.build @@ -0,0 +1,2 @@ +i18n = import('i18n') +i18n.gettext(meson.project_name(), args: ['--directory='+join_paths(meson.source_root(), 'src'), '--language=vala', '--from-code=utf-8', '--keyword=_', '--escape', '--sort-output']) diff --git a/data/po/shopsystem.pot b/data/po/shopsystem.pot new file mode 100644 index 0000000..abab319 --- /dev/null +++ b/data/po/shopsystem.pot @@ -0,0 +1,475 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the shopsystem package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: shopsystem\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-06-29 01:20+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: curses-ui/message_box.vala:52 +msgid "" +"\n" +"Date Changed: " +msgstr "" + +#: scanner-session/scannersession.vala:289 +#, c-format +msgid "%s bought %d items for %s \342\202\254" +msgstr "" + +#: web/template.vala:53 web/template.vala:55 web/template.vala:57 +#: web/template.vala:59 web/template.vala:82 +#, c-format +msgid "%s could not be loaded!" +msgstr "" + +#: web/template.vala:40 web/template.vala:43 web/template.vala:46 +#: web/template.vala:49 web/template.vala:78 +#, c-format +msgid "%s not found!" +msgstr "" + +#: pdf-invoice/pdf-invoice.vala:591 +#, c-format +msgid "Article name \"%s\" does not fit on a single page!" +msgstr "" + +#: serial-device/serial-device.vala:39 +msgid "Can't read lock file!\n" +msgstr "" + +#: audio/audio.vala:38 +msgid "Cannot find alsa GStreamer plugin" +msgstr "" + +#: audio/audio.vala:42 +msgid "Cannot find playbin2 GStreamer plugin" +msgstr "" + +#: audio/main.vala:39 database/main.vala:29 input-device/main.vala:31 +#: pdf-invoice/main.vala:30 pgp/main.vala:35 serial-device/main.vala:29 +#, c-format +msgid "Config Error: %s\n" +msgstr "" + +#: serial-device/serial-device.vala:211 +#, c-format +msgid "Convert Error: %s" +msgstr "" + +#: audio/main.vala:30 cli/main.vala:37 config/main.vala:32 +#: database/main.vala:40 input-device/main.vala:42 pdf-invoice/main.vala:39 +#: pdf-stock/main.vala:26 pgp/main.vala:44 scanner-session/main.vala:28 +#: serial-device/main.vala:40 +msgid "Could not acquire name\n" +msgstr "" + +#: input-device/input-device.vala:40 serial-device/serial-device.vala:165 +msgid "Could not bind IOChannel" +msgstr "" + +#: serial-device/serial-device.vala:59 +#, c-format +msgid "Could not create lock file: %s!\n" +msgstr "" + +#: pdf-invoice/pdf-invoice.vala:81 +#, c-format +msgid "Could not load SVG: %s\n" +msgstr "" + +#: config/config.vala:26 +#, c-format +msgid "Could not load configuration file: %s" +msgstr "" + +#: invoice/invoice.vala:338 pdf-invoice/pdf-invoice.vala:379 +#, c-format +msgid "Could not open VAT template: %s" +msgstr "" + +#: serial-device/serial-device.vala:55 +msgid "Could not open device!\n" +msgstr "" + +#: invoice/invoice.vala:252 invoice/invoice.vala:319 +#, c-format +msgid "Could not open invoice template: %s" +msgstr "" + +#: audio/main.vala:53 cli/main.vala:68 config/main.vala:43 +#: database/main.vala:51 input-device/main.vala:53 input-device/main.vala:58 +#: pdf-stock/main.vala:37 pgp/main.vala:55 scanner-session/main.vala:41 +#: serial-device/main.vala:51 +msgid "Could not register service\n" +msgstr "" + +#: pdf-invoice/main.vala:50 +#, c-format +msgid "Could not register service: %s\n" +msgstr "" + +#: web/web.vala:1482 +msgid "Could not setup webserver!" +msgstr "" + +#: web/main.vala:64 +#, c-format +msgid "Could not start Webserver: %s\n" +msgstr "" + +#: pdf-stock/test.vala:26 scanner-session/scannersession.vala:300 +#, c-format +msgid "DBus Error: %s" +msgstr "" + +#: audio/main.vala:41 database/main.vala:31 input-device/main.vala:33 +#: pdf-invoice/main.vala:26 pgp/main.vala:31 serial-device/main.vala:31 +#: web/main.vala:51 +#, c-format +msgid "DBus Error: %s\n" +msgstr "" + +#: scanner-session/scannersession.vala:304 +#, c-format +msgid "Database Error: %s" +msgstr "" + +#: scanner-session/scannersession.vala:66 +#, c-format +msgid "Error (user=%d): %s" +msgstr "" + +#: cli/main.vala:51 +#, c-format +msgid "Error sending command: %s" +msgstr "" + +#: pgp/pgp.vala:123 +msgid "Error!\n" +msgstr "" + +#: curses-ui/logo.vala:44 scanner-session/scannersession.vala:178 +#: scanner-session/scannersession.vala:225 +#, c-format +msgid "Error: %s" +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:1143 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: mail/main.vala:35 +msgid "Error: Could not acquire name\n" +msgstr "" + +#: mail/main.vala:47 +msgid "Error: Could not register service\n" +msgstr "" + +#: database/database.vala:81 +msgid "Error: could not open database!" +msgstr "" + +#: database/database.vala:28 +#, c-format +msgid "Error: could not prepare statement: %s" +msgstr "" + +#: scanner-session/scannersession.vala:174 +#: scanner-session/scannersession.vala:221 +#, c-format +msgid "Error: unknown product: %llu" +msgstr "" + +#: serial-device/serial-device.vala:163 +msgid "Failed to set encoding" +msgstr "" + +#: curses-ui/logo.vala:31 +#, c-format +msgid "File '%s' doesn't exist.\n" +msgstr "" + +#: input-device/input-device.vala:43 pdf-stock/test.vala:24 +#, c-format +msgid "File Error: %s" +msgstr "" + +#: pdf-invoice/pdf-invoice.vala:387 +#, c-format +msgid "File Error: %s\n" +msgstr "" + +#: scanner-session/scannersession.vala:20 +msgid "Guest" +msgstr "" + +#: pdf-stock/test.vala:22 scanner-session/scannersession.vala:302 +#, c-format +msgid "IO Error: %s" +msgstr "" + +#: audio/main.vala:37 curses-ui/main.vala:60 database/main.vala:27 +#: input-device/main.vala:29 pdf-invoice/main.vala:28 pgp/main.vala:33 +#: scanner-session/scannersession.vala:49 serial-device/main.vala:27 +#: web/main.vala:47 +#, c-format +msgid "IO Error: %s\n" +msgstr "" + +#: serial-device/serial-device.vala:207 +#, c-format +msgid "IOChannel Error: %s" +msgstr "" + +#: serial-device/serial-device.vala:168 +#, c-format +msgid "IOChannel: %s" +msgstr "" + +#: input-device/input-device.vala:27 +msgid "Ignoring InputDevice!\n" +msgstr "" + +#: scanner-session/scannersession.vala:168 +#: scanner-session/scannersession.vala:215 +msgid "Internal Error!" +msgstr "" + +#: web/main.vala:44 web/main.vala:49 +#, c-format +msgid "KeyFile Error: %s\n" +msgstr "" + +#: scanner-session/scannersession.vala:149 +msgid "Login as GUEST" +msgstr "" + +#: scanner-session/scannersession.vala:141 +#, c-format +msgid "Login failed (User ID = %d)" +msgstr "" + +#: scanner-session/scannersession.vala:155 +msgid "Login failed as GUEST" +msgstr "" + +#: web/websession.vala:165 +#, c-format +msgid "Login for user id %d failed\n" +msgstr "" + +#: scanner-session/scannersession.vala:135 +#, c-format +msgid "Login: %s (%d)" +msgstr "" + +#: input-device/input-device.vala:215 serial-device/serial-device.vala:189 +msgid "Lost device" +msgstr "" + +#: pdf-invoice/pdf-invoice.vala:628 +msgid "No invoice ID given!" +msgstr "" + +#: pdf-invoice/pdf-invoice.vala:631 +msgid "No invoice data given!" +msgstr "" + +#: pdf-invoice/pdf-invoice.vala:634 +msgid "No invoice date given!" +msgstr "" + +#: pdf-invoice/pdf-invoice.vala:637 +msgid "No invoice recipient given!" +msgstr "" + +#: scanner-session/scannersession.vala:253 +msgid "No more Items on your Shopping Cart" +msgstr "" + +#: mail/mailer.vala:141 mail/mailer.vala:149 +msgid "No such mail" +msgstr "" + +#: database/database.vala:611 +msgid "No such session available in database!" +msgstr "" + +#: database/database.vala:710 database/database.vala:722 +msgid "No such user available in database!" +msgstr "" + +#: cli/main.vala:25 +#, c-format +msgid "" +"Nothing to send.\n" +"Usage: %s \n" +"Example: %s \"USER 1\" \"LOGOUT\"\n" +msgstr "" + +#: invoice/main.vala:20 +msgid "Possible values for : temporary, final\n" +msgstr "" + +#: pdf-invoice/pdf-invoice.vala:471 +msgid "Prices > 9999.99\342\202\254 are not supported!" +msgstr "" + +#: database/database.vala:487 +#, c-format +msgid "Remove purchase of %s" +msgstr "" + +#: mail/mailer.vala:180 +#, c-format +msgid "Reply from SMTP-Server: %s" +msgstr "" + +#: cli/cli.vala:24 +#, c-format +msgid "Sending: %s\n" +msgstr "" + +#: curses-ui/main.vala:72 +msgid "Shop System has been started" +msgstr "" + +#: curses-ui/main.vala:78 +msgid "Stopping Shop System" +msgstr "" + +#: web/main.vala:55 +#, c-format +msgid "TLS certificate: %s\n" +msgstr "" + +#: web/main.vala:56 +#, c-format +msgid "TLS private key: %s\n" +msgstr "" + +#: invoice/invoice.vala:314 +msgid "Unknown MessageType" +msgstr "" + +#: invoice/main.vala:19 +#, c-format +msgid "Usage: %s [timestamp]\n" +msgstr "" + +#: web/main.vala:54 +#, c-format +msgid "Web Server Port: %u\n" +msgstr "" + +#: pdf-invoice/pdf-invoice.vala:475 +msgid "Years after 9999 are not supported!" +msgstr "" + +#: scanner-session/scannersession.vala:240 +#, c-format +msgid "article added to shopping card: %s (%s \342\202\254)" +msgstr "" + +#: scanner-session/scannersession.vala:189 +#, c-format +msgid "article info: %s (Member: %s \342\202\254, Guest: %s \342\202\254" +msgstr "" + +#: input-device/input-device.vala:249 +#, c-format +msgid "barcode: %s\n" +msgstr "" + +#: mail/mailer.vala:107 +msgid "could not configure STARTTLS" +msgstr "" + +#: web/template.vala:61 web/template.vala:84 +msgid "could not load templates!" +msgstr "" + +#: curses-ui/main.vala:27 curses-ui/main.vala:29 +#, c-format +msgid "could not play audio: %s" +msgstr "" + +#: mail/mailer.vala:99 +msgid "could not setup server" +msgstr "" + +#: mail/mailer.vala:176 +msgid "eSMTP: Start Session failed!" +msgstr "" + +#: database/database.vala:370 database/database.vala:387 +#: database/database.vala:403 database/database.vala:419 +#: database/database.vala:435 database/database.vala:448 +#: database/database.vala:470 database/database.vala:492 +#: database/database.vala:500 database/database.vala:527 +#: database/database.vala:541 database/database.vala:556 +#: database/database.vala:583 database/database.vala:591 +#: database/database.vala:601 database/database.vala:638 +#: database/database.vala:675 database/database.vala:689 +#: database/database.vala:700 database/database.vala:737 +#: database/database.vala:765 database/database.vala:884 +#: database/database.vala:892 database/database.vala:913 +#: database/database.vala:919 database/database.vala:927 +#: database/database.vala:1028 database/database.vala:1079 +#: database/database.vala:1129 database/database.vala:1212 +#, c-format +msgid "internal error: %d" +msgstr "" + +#: scanner-session/scannersession.vala:249 +#, c-format +msgid "removed last Item from Shopping Cart: %s" +msgstr "" + +#: serial-device/serial-device.vala:43 +msgid "serial device is locked!\n" +msgstr "" + +#: mail/mailer.vala:79 +msgid "server or port configuration is missing" +msgstr "" + +#: input-device/input-device.vala:224 +msgid "short read!\n" +msgstr "" + +#: database/database.vala:490 +msgid "undo not possible without purchases" +msgstr "" + +#: database/database.vala:385 database/database.vala:401 +#: database/database.vala:417 database/database.vala:433 +#: database/database.vala:468 +#, c-format +msgid "unknown product: %llu" +msgstr "" + +#: database/database.vala:1210 +#, c-format +msgid "unknown rfid: %s" +msgstr "" + +#: database/database.vala:636 +msgid "user not found" +msgstr "" diff --git a/data/sounds/system/LICENSE b/data/sounds/system/LICENSE new file mode 100644 index 0000000..db764a9 --- /dev/null +++ b/data/sounds/system/LICENSE @@ -0,0 +1,14 @@ +Files: error.ogg +Source: http://www.freesound.org/people/Corsica_S/sounds/56097/ +Copyright: 2008, Corsica_S +License: CC-BY-3.0 + +Files: shutdown.ogg +Source: http://www.freesound.org/people/Corsica_S/sounds/104719/ +Copyright: 2010, Corsica_S +License: CC-BY-3.0 + +Files: startup.ogg +Source: http://www.freesound.org/people/Corsica_S/sounds/83342/ +Copyright: 2010, Corsica_S +License: CC-BY-3.0 diff --git a/data/sounds/system/error.ogg b/data/sounds/system/error.ogg new file mode 100644 index 0000000..f34f375 Binary files /dev/null and b/data/sounds/system/error.ogg differ diff --git a/data/sounds/system/shutdown.ogg b/data/sounds/system/shutdown.ogg new file mode 100644 index 0000000..2560efd Binary files /dev/null and b/data/sounds/system/shutdown.ogg differ diff --git a/data/sounds/system/startup.ogg b/data/sounds/system/startup.ogg new file mode 100644 index 0000000..31649ff Binary files /dev/null and b/data/sounds/system/startup.ogg differ diff --git a/data/sounds/user/beep/LICENSE b/data/sounds/user/beep/LICENSE new file mode 100644 index 0000000..a0acd3d --- /dev/null +++ b/data/sounds/user/beep/LICENSE @@ -0,0 +1,24 @@ +Files: error/buzzer.ogg +Source: http://www.freesound.org/people/guitarguy1985/sounds/54047/ +Copyright: 2008, guitarguy1985 +License: CC-0 + +Files: login/toycaralarm.ogg +Source: http://www.freesound.org/people/AMPUL/sounds/29723/ +Copyright: 2007, AMPUL +License: Sampling+ + +Files: logout/cha ching.ogg +Source: http://www.freesound.org/people/creek23/sounds/75235/ +Copyright: 2009, creek23 +License: CC-BY-3.0 + +Files: purchase/camera.ogg +Source: http://www.freesound.org/people/FreqMan/sounds/42899/ +Copyright: 2007, FreqMan +License: CC-BY-3.0 + +Files: purchase/beep.ogg +Source: http://www.freesound.org/people/KorgMS2000B/sounds/54415/ +Copyright: 2008, KorgMS2000B +License: Sampling+ diff --git a/data/sounds/user/beep/error/buzzer.ogg b/data/sounds/user/beep/error/buzzer.ogg new file mode 100644 index 0000000..eebd2fa Binary files /dev/null and b/data/sounds/user/beep/error/buzzer.ogg differ diff --git a/data/sounds/user/beep/login/toycaralarm.ogg b/data/sounds/user/beep/login/toycaralarm.ogg new file mode 100644 index 0000000..817a4c9 Binary files /dev/null and b/data/sounds/user/beep/login/toycaralarm.ogg differ diff --git a/data/sounds/user/beep/logout/cha ching.ogg b/data/sounds/user/beep/logout/cha ching.ogg new file mode 100644 index 0000000..4c6d88d Binary files /dev/null and b/data/sounds/user/beep/logout/cha ching.ogg differ diff --git a/data/sounds/user/beep/purchase/beep.ogg b/data/sounds/user/beep/purchase/beep.ogg new file mode 100644 index 0000000..e3dbad4 Binary files /dev/null and b/data/sounds/user/beep/purchase/beep.ogg differ diff --git a/data/sounds/user/beep/purchase/camera.ogg b/data/sounds/user/beep/purchase/camera.ogg new file mode 100644 index 0000000..41373d4 Binary files /dev/null and b/data/sounds/user/beep/purchase/camera.ogg differ diff --git a/data/sounds/user/dude/LICENSE b/data/sounds/user/dude/LICENSE new file mode 100644 index 0000000..3b65ddd --- /dev/null +++ b/data/sounds/user/dude/LICENSE @@ -0,0 +1,19 @@ +Files: error/I broke something.ogg +Source: http://www.freesound.org/people/ecfike/sounds/154574/ +Copyright: ecfike +License: CC-0 + +Files: login/hey dude, whats up man.ogg +Source: http://www.freesound.org/people/ecfike/sounds/154619/ +Copyright: ecfike +License: CC-0 + +Files: logout/bye.ogg +Source: http://www.freesound.org/people/ecfike/sounds/154546/ +Copyright: ecfike +License: CC-0 + +Files: purchase/yeah man.ogg +Source: http://www.freesound.org/people/ecfike/sounds/154582/ +Copyright: ecfike +License: CC-0 diff --git a/data/sounds/user/dude/error/I broke something.ogg b/data/sounds/user/dude/error/I broke something.ogg new file mode 100644 index 0000000..ae8c298 Binary files /dev/null and b/data/sounds/user/dude/error/I broke something.ogg differ diff --git a/data/sounds/user/dude/login/hey dude, whats up man.ogg b/data/sounds/user/dude/login/hey dude, whats up man.ogg new file mode 100644 index 0000000..8b6d7b5 Binary files /dev/null and b/data/sounds/user/dude/login/hey dude, whats up man.ogg differ diff --git a/data/sounds/user/dude/logout/bye.ogg b/data/sounds/user/dude/logout/bye.ogg new file mode 100644 index 0000000..de62d3b Binary files /dev/null and b/data/sounds/user/dude/logout/bye.ogg differ diff --git a/data/sounds/user/dude/purchase/yeah man.ogg b/data/sounds/user/dude/purchase/yeah man.ogg new file mode 100644 index 0000000..b3c2d09 Binary files /dev/null and b/data/sounds/user/dude/purchase/yeah man.ogg differ diff --git a/data/sounds/user/girlfriend/LICENSE b/data/sounds/user/girlfriend/LICENSE new file mode 100644 index 0000000..9153012 --- /dev/null +++ b/data/sounds/user/girlfriend/LICENSE @@ -0,0 +1,39 @@ +Files: error/no, no, forget it.ogg +Source: http://www.freesound.org/people/epanody/sounds/86427/ +Copyright: 2009, epanody +License: CC-BY-3.0 + +Files: login/hello.ogg +Source: http://www.freesound.org/people/epanody/sounds/97830/ +Copyright: 2010, epanody +License: CC-BY-3.0 + +Files: login/we need to talk about this.ogg +Source: http://www.freesound.org/people/epanody/sounds/86454/ +Copyright: 2009, epanody +License: CC-BY-3.0 + +Files: logout/get out, get outta here.ogg +Source: http://www.freesound.org/people/epanody/sounds/86409/ +Copyrigt: 2009, epanody +License: CC-BY-3.0 + +Files: logout/why dont you just leave then.ogg +Source: http://www.freesound.org/people/epanody/sounds/86463/ +Copyrigt: 2009, epanody +License: CC-BY-3.0 + +Files: logout/i dont have time for this.ogg +Source: http://www.freesound.org/people/epanody/sounds/86386/ +Copyrigt: 2009, epanody +License: CC-BY-3.0 + +Files: purchase/code accepted.ogg +Source: http://www.freesound.org/people/epanody/sounds/97827/ +Copyright: 2010, epanody +License: CC-BY-3.0 + +Files: purchase/yeah so what.ogg +Source: http://www.freesound.org/people/epanody/sounds/86468/ +Copyright: 2010, epanody +License: CC-BY-3.0 diff --git a/data/sounds/user/girlfriend/error/no, no, forget it.ogg b/data/sounds/user/girlfriend/error/no, no, forget it.ogg new file mode 100644 index 0000000..825f24b Binary files /dev/null and b/data/sounds/user/girlfriend/error/no, no, forget it.ogg differ diff --git a/data/sounds/user/girlfriend/login/hello.ogg b/data/sounds/user/girlfriend/login/hello.ogg new file mode 100644 index 0000000..7c76e4d Binary files /dev/null and b/data/sounds/user/girlfriend/login/hello.ogg differ diff --git a/data/sounds/user/girlfriend/login/we need to talk about this.ogg b/data/sounds/user/girlfriend/login/we need to talk about this.ogg new file mode 100644 index 0000000..2df048f Binary files /dev/null and b/data/sounds/user/girlfriend/login/we need to talk about this.ogg differ diff --git a/data/sounds/user/girlfriend/logout/get out, get outta here.ogg b/data/sounds/user/girlfriend/logout/get out, get outta here.ogg new file mode 100644 index 0000000..c305d26 Binary files /dev/null and b/data/sounds/user/girlfriend/logout/get out, get outta here.ogg differ diff --git a/data/sounds/user/girlfriend/logout/i dont have time for this.ogg b/data/sounds/user/girlfriend/logout/i dont have time for this.ogg new file mode 100644 index 0000000..77b0fce Binary files /dev/null and b/data/sounds/user/girlfriend/logout/i dont have time for this.ogg differ diff --git a/data/sounds/user/girlfriend/logout/why dont you just leave then.ogg b/data/sounds/user/girlfriend/logout/why dont you just leave then.ogg new file mode 100644 index 0000000..eac83c8 Binary files /dev/null and b/data/sounds/user/girlfriend/logout/why dont you just leave then.ogg differ diff --git a/data/sounds/user/girlfriend/purchase/code accepted.ogg b/data/sounds/user/girlfriend/purchase/code accepted.ogg new file mode 100644 index 0000000..34dc3d4 Binary files /dev/null and b/data/sounds/user/girlfriend/purchase/code accepted.ogg differ diff --git a/data/sounds/user/girlfriend/purchase/yeah so what.ogg b/data/sounds/user/girlfriend/purchase/yeah so what.ogg new file mode 100644 index 0000000..c488a26 Binary files /dev/null and b/data/sounds/user/girlfriend/purchase/yeah so what.ogg differ diff --git a/data/sounds/user/japanese/LICENSE b/data/sounds/user/japanese/LICENSE new file mode 100644 index 0000000..d0a0fbe --- /dev/null +++ b/data/sounds/user/japanese/LICENSE @@ -0,0 +1,29 @@ +Files: error/no, iie.ogg +Source: https://www.freesound.org/people/yugi16dm/sounds/323211/ +Copyright: 2015, yugi16dm +License: CC-0 + +Files: error/sumimasen.ogg +Source: https://www.freesound.org/people/yugi16dm/sounds/323200/ +Copyright: 2015, yugi16dm +License: CC-0 + +Files: login/hello.ogg +Source: https://www.freesound.org/people/yugi16dm/sounds/323204/ +Copyright: 2015, yugi16dm +License: CC-0 + +Files: logout/goodbye.ogg +Source: https://www.freesound.org/people/yugi16dm/sounds/323212/ +Copyright: 2015, yugi16dm +License: CC-0 + +Files: purchase/domo.ogg +Source: https://www.freesound.org/people/Reitanna/sounds/234967/ +Copyright: 2014, Reitanna +License: CC-0 + +purchase/domo-arigato.ogg +Source: https://www.freesound.org/people/Reitanna/sounds/234997/ +Copyright: 2014, Reitanna +License: CC-0 diff --git a/data/sounds/user/japanese/error/no, iie.ogg b/data/sounds/user/japanese/error/no, iie.ogg new file mode 100644 index 0000000..286d0fd Binary files /dev/null and b/data/sounds/user/japanese/error/no, iie.ogg differ diff --git a/data/sounds/user/japanese/error/sumimasen.ogg b/data/sounds/user/japanese/error/sumimasen.ogg new file mode 100644 index 0000000..0ae16ee Binary files /dev/null and b/data/sounds/user/japanese/error/sumimasen.ogg differ diff --git a/data/sounds/user/japanese/login/hello.ogg b/data/sounds/user/japanese/login/hello.ogg new file mode 100644 index 0000000..951eb5a Binary files /dev/null and b/data/sounds/user/japanese/login/hello.ogg differ diff --git a/data/sounds/user/japanese/logout/goodbye.ogg b/data/sounds/user/japanese/logout/goodbye.ogg new file mode 100644 index 0000000..270d838 Binary files /dev/null and b/data/sounds/user/japanese/logout/goodbye.ogg differ diff --git a/data/sounds/user/japanese/purchase/domo-arigato.ogg b/data/sounds/user/japanese/purchase/domo-arigato.ogg new file mode 100644 index 0000000..bd74be5 Binary files /dev/null and b/data/sounds/user/japanese/purchase/domo-arigato.ogg differ diff --git a/data/sounds/user/japanese/purchase/domo.ogg b/data/sounds/user/japanese/purchase/domo.ogg new file mode 100644 index 0000000..24724c7 Binary files /dev/null and b/data/sounds/user/japanese/purchase/domo.ogg differ diff --git a/data/sounds/user/robot/LICENSE b/data/sounds/user/robot/LICENSE new file mode 100644 index 0000000..ac119af --- /dev/null +++ b/data/sounds/user/robot/LICENSE @@ -0,0 +1,19 @@ +Files: error/critical error.ogg +Source: http://www.freesound.org/people/liquidhot/sounds/23514/ +Copyright: 2009, liquidhot +License: CC-BY-3.0 + +Files: login/login accepted.ogg +Source: http://www.freesound.org/people/liquidhot/sounds/23516/ +Copyright: 2006, liquidhot +License: CC-BY-3.0 + +Files: logout/terminating.ogg +Source: http://www.freesound.org/people/liquidhot/sounds/23513/ +Copyright: 2006, liquidhot +License: CC-BY-3.0 + +Files: purchase/code accepted.ogg +Source: http://www.freesound.org/people/epanody/sounds/97827/ +Copyright: 2010, epanody +License: CC-BY-3.0 diff --git a/data/sounds/user/robot/error/critical error.ogg b/data/sounds/user/robot/error/critical error.ogg new file mode 100644 index 0000000..f3abfcd Binary files /dev/null and b/data/sounds/user/robot/error/critical error.ogg differ diff --git a/data/sounds/user/robot/login/login accepted.ogg b/data/sounds/user/robot/login/login accepted.ogg new file mode 100644 index 0000000..90e0e48 Binary files /dev/null and b/data/sounds/user/robot/login/login accepted.ogg differ diff --git a/data/sounds/user/robot/logout/terminating.ogg b/data/sounds/user/robot/logout/terminating.ogg new file mode 100644 index 0000000..dccb6d6 Binary files /dev/null and b/data/sounds/user/robot/logout/terminating.ogg differ diff --git a/data/sounds/user/robot/purchase/accepted.ogg b/data/sounds/user/robot/purchase/accepted.ogg new file mode 100644 index 0000000..b980230 Binary files /dev/null and b/data/sounds/user/robot/purchase/accepted.ogg differ diff --git a/data/sounds/user/sexy/LICENSE b/data/sounds/user/sexy/LICENSE new file mode 100644 index 0000000..99238dc --- /dev/null +++ b/data/sounds/user/sexy/LICENSE @@ -0,0 +1,39 @@ +Files: error/error.ogg +Source: http://www.freesound.org/people/Corsica_S/sounds/56097/ +Copyright: 2008, Corsica_S +License: CC-BY-3.0 + +Files: login/welcome back sexy bitch.ogg +Source: http://www.freesound.org/people/Corsica_S/sounds/99889/ +Copyright: 2010, Corsica_S +License: CC-BY-3.0 + +Files: logout/what about me.ogg +Source: http://www.freesound.org/people/epanody/sounds/86457/ +Copyright: 2010, Corsica_S +License: CC-BY-3.0 + +Files: logout/well if thats how you feel.ogg +Source: http://www.freesound.org/people/epanody/sounds/86456/ +Copyright: 2010, Corsica_S +License: CC-BY-3.0 + +Files: purchase/yes, master.ogg +Source: http://www.freesound.org/people/Corsica_S/sounds/107555/ +Copyright: 2010, Corsica_S +License: CC-BY-3.0 + +Files: purchase/your will is my command.ogg +Source: http://www.freesound.org/people/Corsica_S/sounds/107556/ +Copyright: 2012, Corsica_S +License: CC-BY-3.0 + +Files: purchase/do it again.ogg +Source: http://www.freesound.org/people/Corsica_S/sounds/95235/ +Copyright: 2010, Corsica_S +License: CC-BY-3.0 + +Files: purchase/what is next.ogg +Source: http://www.freesound.org/people/Corsica_S/sounds/72257/ +Copyright: 2009, Corsica_S +License: CC-BY-3.0 diff --git a/data/sounds/user/sexy/error/error.ogg b/data/sounds/user/sexy/error/error.ogg new file mode 100644 index 0000000..bd0f41d Binary files /dev/null and b/data/sounds/user/sexy/error/error.ogg differ diff --git a/data/sounds/user/sexy/login/welcome back sexy bitch.ogg b/data/sounds/user/sexy/login/welcome back sexy bitch.ogg new file mode 100644 index 0000000..77fc7ac Binary files /dev/null and b/data/sounds/user/sexy/login/welcome back sexy bitch.ogg differ diff --git a/data/sounds/user/sexy/logout/well if thats how you feel.ogg b/data/sounds/user/sexy/logout/well if thats how you feel.ogg new file mode 100644 index 0000000..30fb42c Binary files /dev/null and b/data/sounds/user/sexy/logout/well if thats how you feel.ogg differ diff --git a/data/sounds/user/sexy/logout/what about me.ogg b/data/sounds/user/sexy/logout/what about me.ogg new file mode 100644 index 0000000..9ed10db Binary files /dev/null and b/data/sounds/user/sexy/logout/what about me.ogg differ diff --git a/data/sounds/user/sexy/purchase/do it again.ogg b/data/sounds/user/sexy/purchase/do it again.ogg new file mode 100644 index 0000000..6465c60 Binary files /dev/null and b/data/sounds/user/sexy/purchase/do it again.ogg differ diff --git a/data/sounds/user/sexy/purchase/what is next.ogg b/data/sounds/user/sexy/purchase/what is next.ogg new file mode 100644 index 0000000..e3d3927 Binary files /dev/null and b/data/sounds/user/sexy/purchase/what is next.ogg differ diff --git a/data/sounds/user/sexy/purchase/yes, master.ogg b/data/sounds/user/sexy/purchase/yes, master.ogg new file mode 100644 index 0000000..f0723a1 Binary files /dev/null and b/data/sounds/user/sexy/purchase/yes, master.ogg differ diff --git a/data/sounds/user/sexy/purchase/your will is my command.ogg b/data/sounds/user/sexy/purchase/your will is my command.ogg new file mode 100644 index 0000000..3f07616 Binary files /dev/null and b/data/sounds/user/sexy/purchase/your will is my command.ogg differ diff --git a/data/systemd/meson.build b/data/systemd/meson.build new file mode 100644 index 0000000..cd68b1b --- /dev/null +++ b/data/systemd/meson.build @@ -0,0 +1,18 @@ +systemd = dependency('systemd') +systemdsystemunitdir = systemd.get_pkgconfig_variable('systemdsystemunitdir') +bindir = join_paths(get_option('prefix'), get_option('bindir')) + +cfg = configuration_data() +cfg.set('PATH', bindir) + +install_data('shopsystem-mail-daily-invoice.timer', install_dir: systemdsystemunitdir) +install_data('shopsystem-mail-monthly-invoice.timer', install_dir: systemdsystemunitdir) +install_data('shopsystem-mail-backup.timer', install_dir: systemdsystemunitdir) + +configure_file(input: 'shopsystem-input-device.service.in', output: 'shopsystem-input-device.service', configuration: cfg, install_dir: systemdsystemunitdir) +configure_file(input: 'shopsystem-mail-backup.service.in', output: 'shopsystem-mail-backup.service', configuration: cfg, install_dir: systemdsystemunitdir) +configure_file(input: 'shopsystem-mail-daily-invoice.service.in', output: 'shopsystem-mail-daily-invoice.service', configuration: cfg, install_dir: systemdsystemunitdir) +configure_file(input: 'shopsystem-mail-monthly-invoice.service.in', output: 'shopsystem-mail-monthly-invoice.service', configuration: cfg, install_dir: systemdsystemunitdir) +configure_file(input: 'shopsystem-ui.service.in', output: 'shopsystem-ui.service', configuration: cfg, install_dir: systemdsystemunitdir) +configure_file(input: 'shopsystem-web.service.in', output: 'shopsystem-web.service', configuration: cfg, install_dir: systemdsystemunitdir) +configure_file(input: 'shopsystem-display-on-off.service.in', output: 'shopsystem-display-on-off.service', configuration: cfg, install_dir: systemdsystemunitdir) diff --git a/data/systemd/shopsystem-display-on-off.service.in b/data/systemd/shopsystem-display-on-off.service.in new file mode 100644 index 0000000..05787a8 --- /dev/null +++ b/data/systemd/shopsystem-display-on-off.service.in @@ -0,0 +1,12 @@ +[Unit] +Description=Display on-off via MQTT +After=systemd-user-sessions.service + +[Service] +Type=simple +ExecStart=@PATH@/display-on-off.sh +Restart=always +RestartSec=10 + +[Install] +WantedBy=multi-user.target diff --git a/data/systemd/shopsystem-input-device.service.in b/data/systemd/shopsystem-input-device.service.in new file mode 100644 index 0000000..d343318 --- /dev/null +++ b/data/systemd/shopsystem-input-device.service.in @@ -0,0 +1,20 @@ +[Unit] +Description=Shop System Input Device Handler +BindsTo=dev-barcodescanner.device +Requires=dev-barcodescanner.device +After=dev-barcodescanner.device + +[Service] +Type=dbus +BusName=io.mainframe.shopsystem.InputDevice +User=shop +Group=shop +Restart=always +RestartSec=10 +ExecStart=@PATH@/shop-input-device +StandardInput=tty +StandardOutput=tty +TTYPath=/dev/tty3 + +[Install] +WantedBy=multi-user.target diff --git a/data/systemd/shopsystem-mail-backup.service.in b/data/systemd/shopsystem-mail-backup.service.in new file mode 100644 index 0000000..1f55a17 --- /dev/null +++ b/data/systemd/shopsystem-mail-backup.service.in @@ -0,0 +1,12 @@ +[Unit] +Description=Send shopsystem backup mail +DefaultDependencies=no +Conflicts=shutdown.target +Before=shutdown.target + +[Service] +Type=oneshot +User=shop +Group=shop +ExecStart=@PATH@/shop-backup +IOSchedulingClass=idle diff --git a/data/systemd/shopsystem-mail-backup.timer b/data/systemd/shopsystem-mail-backup.timer new file mode 100644 index 0000000..b0c18a2 --- /dev/null +++ b/data/systemd/shopsystem-mail-backup.timer @@ -0,0 +1,9 @@ +[Unit] +Description=Run shopsystem backup mail daily + +[Timer] +OnCalendar=*-*-* 08:00:00 +Persistent=true + +[Install] +WantedBy=timers.target diff --git a/data/systemd/shopsystem-mail-daily-invoice.service.in b/data/systemd/shopsystem-mail-daily-invoice.service.in new file mode 100644 index 0000000..a14918d --- /dev/null +++ b/data/systemd/shopsystem-mail-daily-invoice.service.in @@ -0,0 +1,13 @@ +[Unit] +Description=Send shopsystem daily invoice mail +DefaultDependencies=no +Conflicts=shutdown.target + +[Service] +Type=oneshot +User=shop +Group=shop +ExecStart=@PATH@/shop-invoice temporary +StandardOutput=journal +StandardError=journal +IOSchedulingClass=idle diff --git a/data/systemd/shopsystem-mail-daily-invoice.timer b/data/systemd/shopsystem-mail-daily-invoice.timer new file mode 100644 index 0000000..8688d03 --- /dev/null +++ b/data/systemd/shopsystem-mail-daily-invoice.timer @@ -0,0 +1,9 @@ +[Unit] +Description=Send shopsystem daily invoice + +[Timer] +OnCalendar=*-*-* 08:15:00 +Persistent=true + +[Install] +WantedBy=timers.target diff --git a/data/systemd/shopsystem-mail-monthly-invoice.service.in b/data/systemd/shopsystem-mail-monthly-invoice.service.in new file mode 100644 index 0000000..8e0321c --- /dev/null +++ b/data/systemd/shopsystem-mail-monthly-invoice.service.in @@ -0,0 +1,13 @@ +[Unit] +Description=Send shopsystem monthly invoice mail +DefaultDependencies=no +Conflicts=shutdown.target + +[Service] +Type=oneshot +User=shop +Group=shop +ExecStart=@PATH@/shop-invoice final +StandardOutput=journal +StandardError=journal +IOSchedulingClass=idle diff --git a/data/systemd/shopsystem-mail-monthly-invoice.timer b/data/systemd/shopsystem-mail-monthly-invoice.timer new file mode 100644 index 0000000..a29d964 --- /dev/null +++ b/data/systemd/shopsystem-mail-monthly-invoice.timer @@ -0,0 +1,9 @@ +[Unit] +Description=Send shopsystem monthly invoice + +[Timer] +OnCalendar=*-*-01 09:00:00 +Persistent=true + +[Install] +WantedBy=timers.target diff --git a/data/systemd/shopsystem-ui.service.in b/data/systemd/shopsystem-ui.service.in new file mode 100644 index 0000000..c4bd3a7 --- /dev/null +++ b/data/systemd/shopsystem-ui.service.in @@ -0,0 +1,17 @@ +[Unit] +Description=Shop System UI + +[Service] +User=shop +Group=shop +Type=simple +ExecStart=@PATH@/shop-curses-ui +StandardInput=tty +StandardOutput=tty +TTYPath=/dev/tty3 +TTYReset=yes +TTYVHangup=yes +TTYVTDisallocate=yes + +[Install] +WantedBy=multi-user.target diff --git a/data/systemd/shopsystem-web.service.in b/data/systemd/shopsystem-web.service.in new file mode 100644 index 0000000..5707a02 --- /dev/null +++ b/data/systemd/shopsystem-web.service.in @@ -0,0 +1,13 @@ +[Unit] +Description=Shop System Web Interface + +[Service] +User=shop +Group=shop +Type=simple +ExecStart=@PATH@/shop-web +StandardInput=null +StandardOutput=journal + +[Install] +WantedBy=multi-user.target diff --git a/data/templates/aliases/index.html b/data/templates/aliases/index.html new file mode 100644 index 0000000..c914968 --- /dev/null +++ b/data/templates/aliases/index.html @@ -0,0 +1,17 @@ + + + + + + {{{DATA}}} + +
EANReal EANName
+ +
+
+ New Alias + + + +
+
diff --git a/data/templates/aliases/new.html b/data/templates/aliases/new.html new file mode 100644 index 0000000..34b610e --- /dev/null +++ b/data/templates/aliases/new.html @@ -0,0 +1,14 @@ +

Add new product alias

+ +
+

Successfully created new alias: {{{EAN}}} ➜ {{{REAL_EAN}}}

+
+ +
+

Error

+ Creating new product alias failed. Please make sure + you have sufficient permissions and gave valid values + for EAN and real EAN. +
+ +Back to alias list diff --git a/data/templates/base.html b/data/templates/base.html new file mode 100644 index 0000000..1870d0f --- /dev/null +++ b/data/templates/base.html @@ -0,0 +1,26 @@ + + + + + {{{TITLE}}} + + + + + + + + + + + + + + +
+ {{{CONTENT}}} +
+ + diff --git a/data/templates/cashbox/add.html b/data/templates/cashbox/add.html new file mode 100644 index 0000000..6e26f00 --- /dev/null +++ b/data/templates/cashbox/add.html @@ -0,0 +1,17 @@ +
+

Successfully balanced cashbox:

+ + + + +
Type{{{TYPE}}}
Amount{{{AMOUNT}}}
+
+ +
+

Error

+ Creating new cashbox balance entry failed. Please make + sure you have sufficient permissions and gave valid + values for type and amount. +
+ +Back to cashbox overview diff --git a/data/templates/cashbox/detail.html b/data/templates/cashbox/detail.html new file mode 100644 index 0000000..41d057a --- /dev/null +++ b/data/templates/cashbox/detail.html @@ -0,0 +1,26 @@ +

Cashbox Account {{{DATE}}}

+ + + + + + +
Debit{{{DEBIT}}} €
Loss{{{LOSS}}} €
Donation{{{DONATION}}} €
Withdrawal{{{WITHDRAWAL}}} €
+ +

Loss

+ + + {{{LOSS_LIST}}} +
Date & TimeAmount
+ +

Donation

+ + + {{{DONATION_LIST}}} +
Date & TimeAmount
+ +

Withdrawals

+ + + {{{WITHDRAWAL_LIST}}} +
Date & TimeNameAmount
diff --git a/data/templates/cashbox/index.html b/data/templates/cashbox/index.html new file mode 100644 index 0000000..d5a03a0 --- /dev/null +++ b/data/templates/cashbox/index.html @@ -0,0 +1,21 @@ +Current Cashbox Status + + + +
+ Update Cashbox + + + + History (last ten updates) + + + {{{CASHBOX_HISTORY}}} +
Date & TimeNameAmount
+ Details for a specific month +
diff --git a/data/templates/cashbox/selection.html b/data/templates/cashbox/selection.html new file mode 100644 index 0000000..e15ee75 --- /dev/null +++ b/data/templates/cashbox/selection.html @@ -0,0 +1,17 @@ +

Cashbox Account

+ + + +
+ + +
diff --git a/data/templates/css/base.css b/data/templates/css/base.css new file mode 100644 index 0000000..e273808 --- /dev/null +++ b/data/templates/css/base.css @@ -0,0 +1,91 @@ +/* sane margins for main content */ +.content { + margin-top: 55px; + margin-left: 20px; + margin-right: 20px; +} + +/* class for tables without 100% width */ +.table-nonfluid { + width: auto; +} + +/* navbar padding from sides */ +.navbar-fixed-top .navbar-inner { + padding-right: 5px; + padding-left: 5px; +} + +/* statistics */ +#overviewLegend li > div { + display: inline-block; + margin-right: 4px; +} + +#overviewLegend li { + list-style: none; +} + +#placeholder .legend { + visibility: hidden; +} + +#overviewLegend label { + display: inline; +} + +#overviewLegend input { + margin: 0; +} + +/* dropdown menu with button on the right */ +.btn-group > .cornered-dropdown-toggle { + border-top-right-radius: 0px; + border-bottom-right-radius: 0px; +} + +.btn-group > .dropdown-menu + .btn { + border-left: 0px; +} + +/* disabled entries in dropdown */ +.dropdown-menu .disabled { + color: #999; +} + +.two-columns { + overflow: hidden; + width: 400px; +} + +.two-columns li { + width: 20%; + float: left; + display: inline; +} + +.hidden { + display: none; +} + +.table-nonfluid { + width: auto !important; +} + +.text-right { + text-align: right !important; +} + +table.user-entry th { + min-width: 150px; +} + +table.user-entry td { + min-width: 350px; +} + +@media print { + .navbar-fixed-top { + display: none !important; + } +} diff --git a/data/templates/css/bootstrap.css b/data/templates/css/bootstrap.css new file mode 100644 index 0000000..5b7fe7e --- /dev/null +++ b/data/templates/css/bootstrap.css @@ -0,0 +1,6167 @@ +/*! + * Bootstrap v2.3.2 + * + * Copyright 2013 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world by @mdo and @fat. + */ + +.clearfix { + *zoom: 1; +} + +.clearfix:before, +.clearfix:after { + display: table; + line-height: 0; + content: ""; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { + display: block; +} + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +audio:not([controls]) { + display: none; +} + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +a:hover, +a:active { + outline: 0; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + width: auto\9; + height: auto; + max-width: 100%; + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} + +#map_canvas img, +.google-maps img { + max-width: none; +} + +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} + +button, +input { + *overflow: visible; + line-height: normal; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +label, +select, +button, +input[type="button"], +input[type="reset"], +input[type="submit"], +input[type="radio"], +input[type="checkbox"] { + cursor: pointer; +} + +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +@media print { + * { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + @page { + margin: 0.5cm; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } +} + +body { + margin: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 20px; + color: #333333; + background-color: #ffffff; +} + +a { + color: #0088cc; + text-decoration: none; +} + +a:hover, +a:focus { + color: #005580; + text-decoration: underline; +} + +.img-rounded { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.img-polaroid { + padding: 4px; + background-color: #fff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +.img-circle { + -webkit-border-radius: 500px; + -moz-border-radius: 500px; + border-radius: 500px; +} + +.row { + margin-left: -20px; + *zoom: 1; +} + +.row:before, +.row:after { + display: table; + line-height: 0; + content: ""; +} + +.row:after { + clear: both; +} + +[class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; +} + +.container, +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.span12 { + width: 940px; +} + +.span11 { + width: 860px; +} + +.span10 { + width: 780px; +} + +.span9 { + width: 700px; +} + +.span8 { + width: 620px; +} + +.span7 { + width: 540px; +} + +.span6 { + width: 460px; +} + +.span5 { + width: 380px; +} + +.span4 { + width: 300px; +} + +.span3 { + width: 220px; +} + +.span2 { + width: 140px; +} + +.span1 { + width: 60px; +} + +.offset12 { + margin-left: 980px; +} + +.offset11 { + margin-left: 900px; +} + +.offset10 { + margin-left: 820px; +} + +.offset9 { + margin-left: 740px; +} + +.offset8 { + margin-left: 660px; +} + +.offset7 { + margin-left: 580px; +} + +.offset6 { + margin-left: 500px; +} + +.offset5 { + margin-left: 420px; +} + +.offset4 { + margin-left: 340px; +} + +.offset3 { + margin-left: 260px; +} + +.offset2 { + margin-left: 180px; +} + +.offset1 { + margin-left: 100px; +} + +.row-fluid { + width: 100%; + *zoom: 1; +} + +.row-fluid:before, +.row-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 30px; + margin-left: 2.127659574468085%; + *margin-left: 2.074468085106383%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.row-fluid [class*="span"]:first-child { + margin-left: 0; +} + +.row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.127659574468085%; +} + +.row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; +} + +.row-fluid .span11 { + width: 91.48936170212765%; + *width: 91.43617021276594%; +} + +.row-fluid .span10 { + width: 82.97872340425532%; + *width: 82.92553191489361%; +} + +.row-fluid .span9 { + width: 74.46808510638297%; + *width: 74.41489361702126%; +} + +.row-fluid .span8 { + width: 65.95744680851064%; + *width: 65.90425531914893%; +} + +.row-fluid .span7 { + width: 57.44680851063829%; + *width: 57.39361702127659%; +} + +.row-fluid .span6 { + width: 48.93617021276595%; + *width: 48.88297872340425%; +} + +.row-fluid .span5 { + width: 40.42553191489362%; + *width: 40.37234042553192%; +} + +.row-fluid .span4 { + width: 31.914893617021278%; + *width: 31.861702127659576%; +} + +.row-fluid .span3 { + width: 23.404255319148934%; + *width: 23.351063829787233%; +} + +.row-fluid .span2 { + width: 14.893617021276595%; + *width: 14.840425531914894%; +} + +.row-fluid .span1 { + width: 6.382978723404255%; + *width: 6.329787234042553%; +} + +.row-fluid .offset12 { + margin-left: 104.25531914893617%; + *margin-left: 104.14893617021275%; +} + +.row-fluid .offset12:first-child { + margin-left: 102.12765957446808%; + *margin-left: 102.02127659574467%; +} + +.row-fluid .offset11 { + margin-left: 95.74468085106382%; + *margin-left: 95.6382978723404%; +} + +.row-fluid .offset11:first-child { + margin-left: 93.61702127659574%; + *margin-left: 93.51063829787232%; +} + +.row-fluid .offset10 { + margin-left: 87.23404255319149%; + *margin-left: 87.12765957446807%; +} + +.row-fluid .offset10:first-child { + margin-left: 85.1063829787234%; + *margin-left: 84.99999999999999%; +} + +.row-fluid .offset9 { + margin-left: 78.72340425531914%; + *margin-left: 78.61702127659572%; +} + +.row-fluid .offset9:first-child { + margin-left: 76.59574468085106%; + *margin-left: 76.48936170212764%; +} + +.row-fluid .offset8 { + margin-left: 70.2127659574468%; + *margin-left: 70.10638297872339%; +} + +.row-fluid .offset8:first-child { + margin-left: 68.08510638297872%; + *margin-left: 67.9787234042553%; +} + +.row-fluid .offset7 { + margin-left: 61.70212765957446%; + *margin-left: 61.59574468085106%; +} + +.row-fluid .offset7:first-child { + margin-left: 59.574468085106375%; + *margin-left: 59.46808510638297%; +} + +.row-fluid .offset6 { + margin-left: 53.191489361702125%; + *margin-left: 53.085106382978715%; +} + +.row-fluid .offset6:first-child { + margin-left: 51.063829787234035%; + *margin-left: 50.95744680851063%; +} + +.row-fluid .offset5 { + margin-left: 44.68085106382979%; + *margin-left: 44.57446808510638%; +} + +.row-fluid .offset5:first-child { + margin-left: 42.5531914893617%; + *margin-left: 42.4468085106383%; +} + +.row-fluid .offset4 { + margin-left: 36.170212765957444%; + *margin-left: 36.06382978723405%; +} + +.row-fluid .offset4:first-child { + margin-left: 34.04255319148936%; + *margin-left: 33.93617021276596%; +} + +.row-fluid .offset3 { + margin-left: 27.659574468085104%; + *margin-left: 27.5531914893617%; +} + +.row-fluid .offset3:first-child { + margin-left: 25.53191489361702%; + *margin-left: 25.425531914893618%; +} + +.row-fluid .offset2 { + margin-left: 19.148936170212764%; + *margin-left: 19.04255319148936%; +} + +.row-fluid .offset2:first-child { + margin-left: 17.02127659574468%; + *margin-left: 16.914893617021278%; +} + +.row-fluid .offset1 { + margin-left: 10.638297872340425%; + *margin-left: 10.53191489361702%; +} + +.row-fluid .offset1:first-child { + margin-left: 8.51063829787234%; + *margin-left: 8.404255319148938%; +} + +[class*="span"].hide, +.row-fluid [class*="span"].hide { + display: none; +} + +[class*="span"].pull-right, +.row-fluid [class*="span"].pull-right { + float: right; +} + +.container { + margin-right: auto; + margin-left: auto; + *zoom: 1; +} + +.container:before, +.container:after { + display: table; + line-height: 0; + content: ""; +} + +.container:after { + clear: both; +} + +.container-fluid { + padding-right: 20px; + padding-left: 20px; + *zoom: 1; +} + +.container-fluid:before, +.container-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.container-fluid:after { + clear: both; +} + +p { + margin: 0 0 10px; +} + +.lead { + margin-bottom: 20px; + font-size: 21px; + font-weight: 200; + line-height: 30px; +} + +small { + font-size: 85%; +} + +strong { + font-weight: bold; +} + +em { + font-style: italic; +} + +cite { + font-style: normal; +} + +.muted { + color: #999999; +} + +a.muted:hover, +a.muted:focus { + color: #808080; +} + +.text-warning { + color: #c09853; +} + +a.text-warning:hover, +a.text-warning:focus { + color: #a47e3c; +} + +.text-error { + color: #b94a48; +} + +a.text-error:hover, +a.text-error:focus { + color: #953b39; +} + +.text-info { + color: #3a87ad; +} + +a.text-info:hover, +a.text-info:focus { + color: #2d6987; +} + +.text-success { + color: #468847; +} + +a.text-success:hover, +a.text-success:focus { + color: #356635; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.text-center { + text-align: center; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 10px 0; + font-family: inherit; + font-weight: bold; + line-height: 20px; + color: inherit; + text-rendering: optimizelegibility; +} + +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + line-height: 1; + color: #999999; +} + +h1, +h2, +h3 { + line-height: 40px; +} + +h1 { + font-size: 38.5px; +} + +h2 { + font-size: 31.5px; +} + +h3 { + font-size: 24.5px; +} + +h4 { + font-size: 17.5px; +} + +h5 { + font-size: 14px; +} + +h6 { + font-size: 11.9px; +} + +h1 small { + font-size: 24.5px; +} + +h2 small { + font-size: 17.5px; +} + +h3 small { + font-size: 14px; +} + +h4 small { + font-size: 14px; +} + +.page-header { + padding-bottom: 9px; + margin: 20px 0 30px; + border-bottom: 1px solid #eeeeee; +} + +ul, +ol { + padding: 0; + margin: 0 0 10px 25px; +} + +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} + +li { + line-height: 20px; +} + +ul.unstyled, +ol.unstyled { + margin-left: 0; + list-style: none; +} + +ul.inline, +ol.inline { + margin-left: 0; + list-style: none; +} + +ul.inline > li, +ol.inline > li { + display: inline-block; + *display: inline; + padding-right: 5px; + padding-left: 5px; + *zoom: 1; +} + +dl { + margin-bottom: 20px; +} + +dt, +dd { + line-height: 20px; +} + +dt { + font-weight: bold; +} + +dd { + margin-left: 10px; +} + +.dl-horizontal { + *zoom: 1; +} + +.dl-horizontal:before, +.dl-horizontal:after { + display: table; + line-height: 0; + content: ""; +} + +.dl-horizontal:after { + clear: both; +} + +.dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; +} + +.dl-horizontal dd { + margin-left: 180px; +} + +hr { + margin: 20px 0; + border: 0; + border-top: 1px solid #eeeeee; + border-bottom: 1px solid #ffffff; +} + +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999999; +} + +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +blockquote { + padding: 0 0 0 15px; + margin: 0 0 20px; + border-left: 5px solid #eeeeee; +} + +blockquote p { + margin-bottom: 0; + font-size: 17.5px; + font-weight: 300; + line-height: 1.25; +} + +blockquote small { + display: block; + line-height: 20px; + color: #999999; +} + +blockquote small:before { + content: '\2014 \00A0'; +} + +blockquote.pull-right { + float: right; + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} + +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; +} + +blockquote.pull-right small:before { + content: ''; +} + +blockquote.pull-right small:after { + content: '\00A0 \2014'; +} + +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} + +address { + display: block; + margin-bottom: 20px; + font-style: normal; + line-height: 20px; +} + +code, +pre { + padding: 0 3px 2px; + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; + font-size: 12px; + color: #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +code { + padding: 2px 4px; + color: #d14; + white-space: nowrap; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} + +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 20px; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +pre.prettyprint { + margin-bottom: 20px; +} + +pre code { + padding: 0; + color: inherit; + white-space: pre; + white-space: pre-wrap; + background-color: transparent; + border: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +form { + margin: 0 0 20px; +} + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: 40px; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} + +legend small { + font-size: 15px; + color: #999999; +} + +label, +input, +button, +select, +textarea { + font-size: 14px; + font-weight: normal; + line-height: 20px; +} + +input, +button, +select, +textarea { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +label { + display: block; + margin-bottom: 5px; +} + +select, +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + display: inline-block; + height: 20px; + padding: 4px 6px; + margin-bottom: 10px; + font-size: 14px; + line-height: 20px; + color: #555555; + vertical-align: middle; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +input, +textarea, +.uneditable-input { + width: 206px; +} + +textarea { + height: auto; +} + +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + background-color: #ffffff; + border: 1px solid #cccccc; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; + -moz-transition: border linear 0.2s, box-shadow linear 0.2s; + -o-transition: border linear 0.2s, box-shadow linear 0.2s; + transition: border linear 0.2s, box-shadow linear 0.2s; +} + +textarea:focus, +input[type="text"]:focus, +input[type="password"]:focus, +input[type="datetime"]:focus, +input[type="datetime-local"]:focus, +input[type="date"]:focus, +input[type="month"]:focus, +input[type="time"]:focus, +input[type="week"]:focus, +input[type="number"]:focus, +input[type="email"]:focus, +input[type="url"]:focus, +input[type="search"]:focus, +input[type="tel"]:focus, +input[type="color"]:focus, +.uneditable-input:focus { + border-color: rgba(82, 168, 236, 0.8); + outline: 0; + outline: thin dotted \9; + /* IE6-9 */ + + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); +} + +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + *margin-top: 0; + line-height: normal; +} + +input[type="file"], +input[type="image"], +input[type="submit"], +input[type="reset"], +input[type="button"], +input[type="radio"], +input[type="checkbox"] { + width: auto; +} + +select, +input[type="file"] { + height: 30px; + /* In IE7, the height of the select element cannot be changed by height, only font-size */ + + *margin-top: 4px; + /* For IE7, add top margin to align select with labels */ + + line-height: 30px; +} + +select { + width: 220px; + background-color: #ffffff; + border: 1px solid #cccccc; +} + +select[multiple], +select[size] { + height: auto; +} + +select:focus, +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.uneditable-input, +.uneditable-textarea { + color: #999999; + cursor: not-allowed; + background-color: #fcfcfc; + border-color: #cccccc; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); +} + +.uneditable-input { + overflow: hidden; + white-space: nowrap; +} + +.uneditable-textarea { + width: auto; + height: auto; +} + +input:-moz-placeholder, +textarea:-moz-placeholder { + color: #999999; +} + +input:-ms-input-placeholder, +textarea:-ms-input-placeholder { + color: #999999; +} + +input::-webkit-input-placeholder, +textarea::-webkit-input-placeholder { + color: #999999; +} + +.radio, +.checkbox { + min-height: 20px; + padding-left: 20px; +} + +.radio input[type="radio"], +.checkbox input[type="checkbox"] { + float: left; + margin-left: -20px; +} + +.controls > .radio:first-child, +.controls > .checkbox:first-child { + padding-top: 5px; +} + +.radio.inline, +.checkbox.inline { + display: inline-block; + padding-top: 5px; + margin-bottom: 0; + vertical-align: middle; +} + +.radio.inline + .radio.inline, +.checkbox.inline + .checkbox.inline { + margin-left: 10px; +} + +.input-mini { + width: 60px; +} + +.input-small { + width: 90px; +} + +.input-medium { + width: 150px; +} + +.input-large { + width: 210px; +} + +.input-xlarge { + width: 270px; +} + +.input-xxlarge { + width: 530px; +} + +input[class*="span"], +select[class*="span"], +textarea[class*="span"], +.uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"] { + float: none; + margin-left: 0; +} + +.input-append input[class*="span"], +.input-append .uneditable-input[class*="span"], +.input-prepend input[class*="span"], +.input-prepend .uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"], +.row-fluid .input-prepend [class*="span"], +.row-fluid .input-append [class*="span"] { + display: inline-block; +} + +input, +textarea, +.uneditable-input { + margin-left: 0; +} + +.controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; +} + +input.span12, +textarea.span12, +.uneditable-input.span12 { + width: 926px; +} + +input.span11, +textarea.span11, +.uneditable-input.span11 { + width: 846px; +} + +input.span10, +textarea.span10, +.uneditable-input.span10 { + width: 766px; +} + +input.span9, +textarea.span9, +.uneditable-input.span9 { + width: 686px; +} + +input.span8, +textarea.span8, +.uneditable-input.span8 { + width: 606px; +} + +input.span7, +textarea.span7, +.uneditable-input.span7 { + width: 526px; +} + +input.span6, +textarea.span6, +.uneditable-input.span6 { + width: 446px; +} + +input.span5, +textarea.span5, +.uneditable-input.span5 { + width: 366px; +} + +input.span4, +textarea.span4, +.uneditable-input.span4 { + width: 286px; +} + +input.span3, +textarea.span3, +.uneditable-input.span3 { + width: 206px; +} + +input.span2, +textarea.span2, +.uneditable-input.span2 { + width: 126px; +} + +input.span1, +textarea.span1, +.uneditable-input.span1 { + width: 46px; +} + +.controls-row { + *zoom: 1; +} + +.controls-row:before, +.controls-row:after { + display: table; + line-height: 0; + content: ""; +} + +.controls-row:after { + clear: both; +} + +.controls-row [class*="span"], +.row-fluid .controls-row [class*="span"] { + float: left; +} + +.controls-row .checkbox[class*="span"], +.controls-row .radio[class*="span"] { + padding-top: 5px; +} + +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + cursor: not-allowed; + background-color: #eeeeee; +} + +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"][readonly], +input[type="checkbox"][readonly] { + background-color: transparent; +} + +.control-group.warning .control-label, +.control-group.warning .help-block, +.control-group.warning .help-inline { + color: #c09853; +} + +.control-group.warning .checkbox, +.control-group.warning .radio, +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + color: #c09853; +} + +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + border-color: #c09853; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.warning input:focus, +.control-group.warning select:focus, +.control-group.warning textarea:focus { + border-color: #a47e3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} + +.control-group.warning .input-prepend .add-on, +.control-group.warning .input-append .add-on { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} + +.control-group.error .control-label, +.control-group.error .help-block, +.control-group.error .help-inline { + color: #b94a48; +} + +.control-group.error .checkbox, +.control-group.error .radio, +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + color: #b94a48; +} + +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + border-color: #b94a48; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.error input:focus, +.control-group.error select:focus, +.control-group.error textarea:focus { + border-color: #953b39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} + +.control-group.error .input-prepend .add-on, +.control-group.error .input-append .add-on { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} + +.control-group.success .control-label, +.control-group.success .help-block, +.control-group.success .help-inline { + color: #468847; +} + +.control-group.success .checkbox, +.control-group.success .radio, +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + color: #468847; +} + +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + border-color: #468847; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.success input:focus, +.control-group.success select:focus, +.control-group.success textarea:focus { + border-color: #356635; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} + +.control-group.success .input-prepend .add-on, +.control-group.success .input-append .add-on { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} + +.control-group.info .control-label, +.control-group.info .help-block, +.control-group.info .help-inline { + color: #3a87ad; +} + +.control-group.info .checkbox, +.control-group.info .radio, +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + color: #3a87ad; +} + +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + border-color: #3a87ad; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.info input:focus, +.control-group.info select:focus, +.control-group.info textarea:focus { + border-color: #2d6987; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; +} + +.control-group.info .input-prepend .add-on, +.control-group.info .input-append .add-on { + color: #3a87ad; + background-color: #d9edf7; + border-color: #3a87ad; +} + +input:focus:invalid, +textarea:focus:invalid, +select:focus:invalid { + color: #b94a48; + border-color: #ee5f5b; +} + +input:focus:invalid:focus, +textarea:focus:invalid:focus, +select:focus:invalid:focus { + border-color: #e9322d; + -webkit-box-shadow: 0 0 6px #f8b9b7; + -moz-box-shadow: 0 0 6px #f8b9b7; + box-shadow: 0 0 6px #f8b9b7; +} + +.form-actions { + padding: 19px 20px 20px; + margin-top: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-top: 1px solid #e5e5e5; + *zoom: 1; +} + +.form-actions:before, +.form-actions:after { + display: table; + line-height: 0; + content: ""; +} + +.form-actions:after { + clear: both; +} + +.help-block, +.help-inline { + color: #595959; +} + +.help-block { + display: block; + margin-bottom: 10px; +} + +.help-inline { + display: inline-block; + *display: inline; + padding-left: 5px; + vertical-align: middle; + *zoom: 1; +} + +.input-append, +.input-prepend { + display: inline-block; + margin-bottom: 10px; + font-size: 0; + white-space: nowrap; + vertical-align: middle; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input, +.input-append .dropdown-menu, +.input-prepend .dropdown-menu, +.input-append .popover, +.input-prepend .popover { + font-size: 14px; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input { + position: relative; + margin-bottom: 0; + *margin-left: 0; + vertical-align: top; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-append input:focus, +.input-prepend input:focus, +.input-append select:focus, +.input-prepend select:focus, +.input-append .uneditable-input:focus, +.input-prepend .uneditable-input:focus { + z-index: 2; +} + +.input-append .add-on, +.input-prepend .add-on { + display: inline-block; + width: auto; + height: 20px; + min-width: 16px; + padding: 4px 5px; + font-size: 14px; + font-weight: normal; + line-height: 20px; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + background-color: #eeeeee; + border: 1px solid #ccc; +} + +.input-append .add-on, +.input-prepend .add-on, +.input-append .btn, +.input-prepend .btn, +.input-append .btn-group > .dropdown-toggle, +.input-prepend .btn-group > .dropdown-toggle { + vertical-align: top; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-append .active, +.input-prepend .active { + background-color: #a9dba9; + border-color: #46a546; +} + +.input-prepend .add-on, +.input-prepend .btn { + margin-right: -1px; +} + +.input-prepend .add-on:first-child, +.input-prepend .btn:first-child { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-append input, +.input-append select, +.input-append .uneditable-input { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-append input + .btn-group .btn:last-child, +.input-append select + .btn-group .btn:last-child, +.input-append .uneditable-input + .btn-group .btn:last-child { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-append .add-on, +.input-append .btn, +.input-append .btn-group { + margin-left: -1px; +} + +.input-append .add-on:last-child, +.input-append .btn:last-child, +.input-append .btn-group:last-child > .dropdown-toggle { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append input, +.input-prepend.input-append select, +.input-prepend.input-append .uneditable-input { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-prepend.input-append input + .btn-group .btn, +.input-prepend.input-append select + .btn-group .btn, +.input-prepend.input-append .uneditable-input + .btn-group .btn { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append .add-on:first-child, +.input-prepend.input-append .btn:first-child { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-prepend.input-append .add-on:last-child, +.input-prepend.input-append .btn:last-child { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append .btn-group:first-child { + margin-left: 0; +} + +input.search-query { + padding-right: 14px; + padding-right: 4px \9; + padding-left: 14px; + padding-left: 4px \9; + /* IE7-8 doesn't have border-radius, so don't indent the padding */ + + margin-bottom: 0; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +/* Allow for input prepend/append in search forms */ + +.form-search .input-append .search-query, +.form-search .input-prepend .search-query { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.form-search .input-append .search-query { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search .input-append .btn { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .search-query { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .btn { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search input, +.form-inline input, +.form-horizontal input, +.form-search textarea, +.form-inline textarea, +.form-horizontal textarea, +.form-search select, +.form-inline select, +.form-horizontal select, +.form-search .help-inline, +.form-inline .help-inline, +.form-horizontal .help-inline, +.form-search .uneditable-input, +.form-inline .uneditable-input, +.form-horizontal .uneditable-input, +.form-search .input-prepend, +.form-inline .input-prepend, +.form-horizontal .input-prepend, +.form-search .input-append, +.form-inline .input-append, +.form-horizontal .input-append { + display: inline-block; + *display: inline; + margin-bottom: 0; + vertical-align: middle; + *zoom: 1; +} + +.form-search .hide, +.form-inline .hide, +.form-horizontal .hide { + display: none; +} + +.form-search label, +.form-inline label, +.form-search .btn-group, +.form-inline .btn-group { + display: inline-block; +} + +.form-search .input-append, +.form-inline .input-append, +.form-search .input-prepend, +.form-inline .input-prepend { + margin-bottom: 0; +} + +.form-search .radio, +.form-search .checkbox, +.form-inline .radio, +.form-inline .checkbox { + padding-left: 0; + margin-bottom: 0; + vertical-align: middle; +} + +.form-search .radio input[type="radio"], +.form-search .checkbox input[type="checkbox"], +.form-inline .radio input[type="radio"], +.form-inline .checkbox input[type="checkbox"] { + float: left; + margin-right: 3px; + margin-left: 0; +} + +.control-group { + margin-bottom: 10px; +} + +legend + .control-group { + margin-top: 20px; + -webkit-margin-top-collapse: separate; +} + +.form-horizontal .control-group { + margin-bottom: 20px; + *zoom: 1; +} + +.form-horizontal .control-group:before, +.form-horizontal .control-group:after { + display: table; + line-height: 0; + content: ""; +} + +.form-horizontal .control-group:after { + clear: both; +} + +.form-horizontal .control-label { + float: left; + width: 160px; + padding-top: 5px; + text-align: right; +} + +.form-horizontal .controls { + *display: inline-block; + *padding-left: 20px; + margin-left: 180px; + *margin-left: 0; +} + +.form-horizontal .controls:first-child { + *padding-left: 180px; +} + +.form-horizontal .help-block { + margin-bottom: 0; +} + +.form-horizontal input + .help-block, +.form-horizontal select + .help-block, +.form-horizontal textarea + .help-block, +.form-horizontal .uneditable-input + .help-block, +.form-horizontal .input-prepend + .help-block, +.form-horizontal .input-append + .help-block { + margin-top: 10px; +} + +.form-horizontal .form-actions { + padding-left: 180px; +} + +table { + max-width: 100%; + background-color: transparent; + border-collapse: collapse; + border-spacing: 0; +} + +.table { + width: 100%; + margin-bottom: 20px; +} + +.table th, +.table td { + padding: 8px; + line-height: 20px; + text-align: left; + vertical-align: top; + border-top: 1px solid #dddddd; +} + +.table th { + font-weight: bold; +} + +.table thead th { + vertical-align: bottom; +} + +.table caption + thead tr:first-child th, +.table caption + thead tr:first-child td, +.table colgroup + thead tr:first-child th, +.table colgroup + thead tr:first-child td, +.table thead:first-child tr:first-child th, +.table thead:first-child tr:first-child td { + border-top: 0; +} + +.table tbody + tbody { + border-top: 2px solid #dddddd; +} + +.table .table { + background-color: #ffffff; +} + +.table-condensed th, +.table-condensed td { + padding: 4px 5px; +} + +.table-bordered { + border: 1px solid #dddddd; + border-collapse: separate; + *border-collapse: collapse; + border-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.table-bordered th, +.table-bordered td { + border-left: 1px solid #dddddd; +} + +.table-bordered caption + thead tr:first-child th, +.table-bordered caption + tbody tr:first-child th, +.table-bordered caption + tbody tr:first-child td, +.table-bordered colgroup + thead tr:first-child th, +.table-bordered colgroup + tbody tr:first-child th, +.table-bordered colgroup + tbody tr:first-child td, +.table-bordered thead:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child td { + border-top: 0; +} + +.table-bordered thead:first-child tr:first-child > th:first-child, +.table-bordered tbody:first-child tr:first-child > td:first-child, +.table-bordered tbody:first-child tr:first-child > th:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered thead:first-child tr:first-child > th:last-child, +.table-bordered tbody:first-child tr:first-child > td:last-child, +.table-bordered tbody:first-child tr:first-child > th:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-bordered thead:last-child tr:last-child > th:first-child, +.table-bordered tbody:last-child tr:last-child > td:first-child, +.table-bordered tbody:last-child tr:last-child > th:first-child, +.table-bordered tfoot:last-child tr:last-child > td:first-child, +.table-bordered tfoot:last-child tr:last-child > th:first-child { + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.table-bordered thead:last-child tr:last-child > th:last-child, +.table-bordered tbody:last-child tr:last-child > td:last-child, +.table-bordered tbody:last-child tr:last-child > th:last-child, +.table-bordered tfoot:last-child tr:last-child > td:last-child, +.table-bordered tfoot:last-child tr:last-child > th:last-child { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; +} + +.table-bordered tfoot + tbody:last-child tr:last-child td:first-child { + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + -moz-border-radius-bottomleft: 0; +} + +.table-bordered tfoot + tbody:last-child tr:last-child td:last-child { + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomright: 0; +} + +.table-bordered caption + thead tr:first-child th:first-child, +.table-bordered caption + tbody tr:first-child td:first-child, +.table-bordered colgroup + thead tr:first-child th:first-child, +.table-bordered colgroup + tbody tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered caption + thead tr:first-child th:last-child, +.table-bordered caption + tbody tr:first-child td:last-child, +.table-bordered colgroup + thead tr:first-child th:last-child, +.table-bordered colgroup + tbody tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-striped tbody > tr:nth-child(odd) > td, +.table-striped tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; +} + +.table-hover tbody tr:hover > td, +.table-hover tbody tr:hover > th { + background-color: #f5f5f5; +} + +table td[class*="span"], +table th[class*="span"], +.row-fluid table td[class*="span"], +.row-fluid table th[class*="span"] { + display: table-cell; + float: none; + margin-left: 0; +} + +.table td.span1, +.table th.span1 { + float: none; + width: 44px; + margin-left: 0; +} + +.table td.span2, +.table th.span2 { + float: none; + width: 124px; + margin-left: 0; +} + +.table td.span3, +.table th.span3 { + float: none; + width: 204px; + margin-left: 0; +} + +.table td.span4, +.table th.span4 { + float: none; + width: 284px; + margin-left: 0; +} + +.table td.span5, +.table th.span5 { + float: none; + width: 364px; + margin-left: 0; +} + +.table td.span6, +.table th.span6 { + float: none; + width: 444px; + margin-left: 0; +} + +.table td.span7, +.table th.span7 { + float: none; + width: 524px; + margin-left: 0; +} + +.table td.span8, +.table th.span8 { + float: none; + width: 604px; + margin-left: 0; +} + +.table td.span9, +.table th.span9 { + float: none; + width: 684px; + margin-left: 0; +} + +.table td.span10, +.table th.span10 { + float: none; + width: 764px; + margin-left: 0; +} + +.table td.span11, +.table th.span11 { + float: none; + width: 844px; + margin-left: 0; +} + +.table td.span12, +.table th.span12 { + float: none; + width: 924px; + margin-left: 0; +} + +.table tbody tr.success > td { + background-color: #dff0d8; +} + +.table tbody tr.error > td { + background-color: #f2dede; +} + +.table tbody tr.warning > td { + background-color: #fcf8e3; +} + +.table tbody tr.info > td { + background-color: #d9edf7; +} + +.table-hover tbody tr.success:hover > td { + background-color: #d0e9c6; +} + +.table-hover tbody tr.error:hover > td { + background-color: #ebcccc; +} + +.table-hover tbody tr.warning:hover > td { + background-color: #faf2cc; +} + +.table-hover tbody tr.info:hover > td { + background-color: #c4e3f3; +} + +[class^="icon-"], +[class*=" icon-"] { + display: inline-block; + width: 14px; + height: 14px; + margin-top: 1px; + *margin-right: .3em; + line-height: 14px; + vertical-align: text-top; + background-image: url("../img/glyphicons-halflings.png"); + background-position: 14px 14px; + background-repeat: no-repeat; +} + +/* White icons with optional class, or on hover/focus/active states of certain elements */ + +.icon-white, +.nav-pills > .active > a > [class^="icon-"], +.nav-pills > .active > a > [class*=" icon-"], +.nav-list > .active > a > [class^="icon-"], +.nav-list > .active > a > [class*=" icon-"], +.navbar-inverse .nav > .active > a > [class^="icon-"], +.navbar-inverse .nav > .active > a > [class*=" icon-"], +.dropdown-menu > li > a:hover > [class^="icon-"], +.dropdown-menu > li > a:focus > [class^="icon-"], +.dropdown-menu > li > a:hover > [class*=" icon-"], +.dropdown-menu > li > a:focus > [class*=" icon-"], +.dropdown-menu > .active > a > [class^="icon-"], +.dropdown-menu > .active > a > [class*=" icon-"], +.dropdown-submenu:hover > a > [class^="icon-"], +.dropdown-submenu:focus > a > [class^="icon-"], +.dropdown-submenu:hover > a > [class*=" icon-"], +.dropdown-submenu:focus > a > [class*=" icon-"] { + background-image: url("../img/glyphicons-halflings-white.png"); +} + +.icon-glass { + background-position: 0 0; +} + +.icon-music { + background-position: -24px 0; +} + +.icon-search { + background-position: -48px 0; +} + +.icon-envelope { + background-position: -72px 0; +} + +.icon-heart { + background-position: -96px 0; +} + +.icon-star { + background-position: -120px 0; +} + +.icon-star-empty { + background-position: -144px 0; +} + +.icon-user { + background-position: -168px 0; +} + +.icon-film { + background-position: -192px 0; +} + +.icon-th-large { + background-position: -216px 0; +} + +.icon-th { + background-position: -240px 0; +} + +.icon-th-list { + background-position: -264px 0; +} + +.icon-ok { + background-position: -288px 0; +} + +.icon-remove { + background-position: -312px 0; +} + +.icon-zoom-in { + background-position: -336px 0; +} + +.icon-zoom-out { + background-position: -360px 0; +} + +.icon-off { + background-position: -384px 0; +} + +.icon-signal { + background-position: -408px 0; +} + +.icon-cog { + background-position: -432px 0; +} + +.icon-trash { + background-position: -456px 0; +} + +.icon-home { + background-position: 0 -24px; +} + +.icon-file { + background-position: -24px -24px; +} + +.icon-time { + background-position: -48px -24px; +} + +.icon-road { + background-position: -72px -24px; +} + +.icon-download-alt { + background-position: -96px -24px; +} + +.icon-download { + background-position: -120px -24px; +} + +.icon-upload { + background-position: -144px -24px; +} + +.icon-inbox { + background-position: -168px -24px; +} + +.icon-play-circle { + background-position: -192px -24px; +} + +.icon-repeat { + background-position: -216px -24px; +} + +.icon-refresh { + background-position: -240px -24px; +} + +.icon-list-alt { + background-position: -264px -24px; +} + +.icon-lock { + background-position: -287px -24px; +} + +.icon-flag { + background-position: -312px -24px; +} + +.icon-headphones { + background-position: -336px -24px; +} + +.icon-volume-off { + background-position: -360px -24px; +} + +.icon-volume-down { + background-position: -384px -24px; +} + +.icon-volume-up { + background-position: -408px -24px; +} + +.icon-qrcode { + background-position: -432px -24px; +} + +.icon-barcode { + background-position: -456px -24px; +} + +.icon-tag { + background-position: 0 -48px; +} + +.icon-tags { + background-position: -25px -48px; +} + +.icon-book { + background-position: -48px -48px; +} + +.icon-bookmark { + background-position: -72px -48px; +} + +.icon-print { + background-position: -96px -48px; +} + +.icon-camera { + background-position: -120px -48px; +} + +.icon-font { + background-position: -144px -48px; +} + +.icon-bold { + background-position: -167px -48px; +} + +.icon-italic { + background-position: -192px -48px; +} + +.icon-text-height { + background-position: -216px -48px; +} + +.icon-text-width { + background-position: -240px -48px; +} + +.icon-align-left { + background-position: -264px -48px; +} + +.icon-align-center { + background-position: -288px -48px; +} + +.icon-align-right { + background-position: -312px -48px; +} + +.icon-align-justify { + background-position: -336px -48px; +} + +.icon-list { + background-position: -360px -48px; +} + +.icon-indent-left { + background-position: -384px -48px; +} + +.icon-indent-right { + background-position: -408px -48px; +} + +.icon-facetime-video { + background-position: -432px -48px; +} + +.icon-picture { + background-position: -456px -48px; +} + +.icon-pencil { + background-position: 0 -72px; +} + +.icon-map-marker { + background-position: -24px -72px; +} + +.icon-adjust { + background-position: -48px -72px; +} + +.icon-tint { + background-position: -72px -72px; +} + +.icon-edit { + background-position: -96px -72px; +} + +.icon-share { + background-position: -120px -72px; +} + +.icon-check { + background-position: -144px -72px; +} + +.icon-move { + background-position: -168px -72px; +} + +.icon-step-backward { + background-position: -192px -72px; +} + +.icon-fast-backward { + background-position: -216px -72px; +} + +.icon-backward { + background-position: -240px -72px; +} + +.icon-play { + background-position: -264px -72px; +} + +.icon-pause { + background-position: -288px -72px; +} + +.icon-stop { + background-position: -312px -72px; +} + +.icon-forward { + background-position: -336px -72px; +} + +.icon-fast-forward { + background-position: -360px -72px; +} + +.icon-step-forward { + background-position: -384px -72px; +} + +.icon-eject { + background-position: -408px -72px; +} + +.icon-chevron-left { + background-position: -432px -72px; +} + +.icon-chevron-right { + background-position: -456px -72px; +} + +.icon-plus-sign { + background-position: 0 -96px; +} + +.icon-minus-sign { + background-position: -24px -96px; +} + +.icon-remove-sign { + background-position: -48px -96px; +} + +.icon-ok-sign { + background-position: -72px -96px; +} + +.icon-question-sign { + background-position: -96px -96px; +} + +.icon-info-sign { + background-position: -120px -96px; +} + +.icon-screenshot { + background-position: -144px -96px; +} + +.icon-remove-circle { + background-position: -168px -96px; +} + +.icon-ok-circle { + background-position: -192px -96px; +} + +.icon-ban-circle { + background-position: -216px -96px; +} + +.icon-arrow-left { + background-position: -240px -96px; +} + +.icon-arrow-right { + background-position: -264px -96px; +} + +.icon-arrow-up { + background-position: -289px -96px; +} + +.icon-arrow-down { + background-position: -312px -96px; +} + +.icon-share-alt { + background-position: -336px -96px; +} + +.icon-resize-full { + background-position: -360px -96px; +} + +.icon-resize-small { + background-position: -384px -96px; +} + +.icon-plus { + background-position: -408px -96px; +} + +.icon-minus { + background-position: -433px -96px; +} + +.icon-asterisk { + background-position: -456px -96px; +} + +.icon-exclamation-sign { + background-position: 0 -120px; +} + +.icon-gift { + background-position: -24px -120px; +} + +.icon-leaf { + background-position: -48px -120px; +} + +.icon-fire { + background-position: -72px -120px; +} + +.icon-eye-open { + background-position: -96px -120px; +} + +.icon-eye-close { + background-position: -120px -120px; +} + +.icon-warning-sign { + background-position: -144px -120px; +} + +.icon-plane { + background-position: -168px -120px; +} + +.icon-calendar { + background-position: -192px -120px; +} + +.icon-random { + width: 16px; + background-position: -216px -120px; +} + +.icon-comment { + background-position: -240px -120px; +} + +.icon-magnet { + background-position: -264px -120px; +} + +.icon-chevron-up { + background-position: -288px -120px; +} + +.icon-chevron-down { + background-position: -313px -119px; +} + +.icon-retweet { + background-position: -336px -120px; +} + +.icon-shopping-cart { + background-position: -360px -120px; +} + +.icon-folder-close { + width: 16px; + background-position: -384px -120px; +} + +.icon-folder-open { + width: 16px; + background-position: -408px -120px; +} + +.icon-resize-vertical { + background-position: -432px -119px; +} + +.icon-resize-horizontal { + background-position: -456px -118px; +} + +.icon-hdd { + background-position: 0 -144px; +} + +.icon-bullhorn { + background-position: -24px -144px; +} + +.icon-bell { + background-position: -48px -144px; +} + +.icon-certificate { + background-position: -72px -144px; +} + +.icon-thumbs-up { + background-position: -96px -144px; +} + +.icon-thumbs-down { + background-position: -120px -144px; +} + +.icon-hand-right { + background-position: -144px -144px; +} + +.icon-hand-left { + background-position: -168px -144px; +} + +.icon-hand-up { + background-position: -192px -144px; +} + +.icon-hand-down { + background-position: -216px -144px; +} + +.icon-circle-arrow-right { + background-position: -240px -144px; +} + +.icon-circle-arrow-left { + background-position: -264px -144px; +} + +.icon-circle-arrow-up { + background-position: -288px -144px; +} + +.icon-circle-arrow-down { + background-position: -312px -144px; +} + +.icon-globe { + background-position: -336px -144px; +} + +.icon-wrench { + background-position: -360px -144px; +} + +.icon-tasks { + background-position: -384px -144px; +} + +.icon-filter { + background-position: -408px -144px; +} + +.icon-briefcase { + background-position: -432px -144px; +} + +.icon-fullscreen { + background-position: -456px -144px; +} + +.dropup, +.dropdown { + position: relative; +} + +.dropdown-toggle { + *margin-bottom: -3px; +} + +.dropdown-toggle:active, +.open .dropdown-toggle { + outline: 0; +} + +.caret { + display: inline-block; + width: 0; + height: 0; + vertical-align: top; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + content: ""; +} + +.dropdown .caret { + margin-top: 8px; + margin-left: 2px; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.dropdown-menu .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 20px; + color: #333333; + white-space: nowrap; +} + +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus, +.dropdown-submenu:hover > a, +.dropdown-submenu:focus > a { + color: #ffffff; + text-decoration: none; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #ffffff; + text-decoration: none; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + outline: 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #999999; +} + +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: default; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.open { + *z-index: 1000; +} + +.open > .dropdown-menu { + display: block; +} + +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; +} + +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px solid #000000; + content: ""; +} + +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} + +.dropdown-submenu { + position: relative; +} + +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + -webkit-border-radius: 0 6px 6px 6px; + -moz-border-radius: 0 6px 6px 6px; + border-radius: 0 6px 6px 6px; +} + +.dropdown-submenu:hover > .dropdown-menu { + display: block; +} + +.dropup .dropdown-submenu > .dropdown-menu { + top: auto; + bottom: 0; + margin-top: 0; + margin-bottom: -2px; + -webkit-border-radius: 5px 5px 5px 0; + -moz-border-radius: 5px 5px 5px 0; + border-radius: 5px 5px 5px 0; +} + +.dropdown-submenu > a:after { + display: block; + float: right; + width: 0; + height: 0; + margin-top: 5px; + margin-right: -10px; + border-color: transparent; + border-left-color: #cccccc; + border-style: solid; + border-width: 5px 0 5px 5px; + content: " "; +} + +.dropdown-submenu:hover > a:after { + border-left-color: #ffffff; +} + +.dropdown-submenu.pull-left { + float: none; +} + +.dropdown-submenu.pull-left > .dropdown-menu { + left: -100%; + margin-left: 10px; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.dropdown .dropdown-menu .nav-header { + padding-right: 20px; + padding-left: 20px; +} + +.typeahead { + z-index: 1051; + margin-top: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} + +.well-large { + padding: 24px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.well-small { + padding: 9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} + +.fade.in { + opacity: 1; +} + +.collapse { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + -moz-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; +} + +.collapse.in { + height: auto; +} + +.close { + float: right; + font-size: 20px; + font-weight: bold; + line-height: 20px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} + +.close:hover, +.close:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.btn { + display: inline-block; + *display: inline; + padding: 4px 12px; + margin-bottom: 0; + *margin-left: .3em; + font-size: 14px; + line-height: 20px; + color: #333333; + text-align: center; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + *background-color: #e6e6e6; + background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); + background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); + background-repeat: repeat-x; + border: 1px solid #cccccc; + *border: 0; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + border-bottom-color: #b3b3b3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.btn.disabled, +.btn[disabled] { + color: #333333; + background-color: #e6e6e6; + *background-color: #d9d9d9; +} + +.btn:active, +.btn.active { + background-color: #cccccc \9; +} + +.btn:first-child { + *margin-left: 0; +} + +.btn:hover, +.btn:focus { + color: #333333; + text-decoration: none; + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; +} + +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.btn.active, +.btn:active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn.disabled, +.btn[disabled] { + cursor: default; + background-image: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-large { + padding: 11px 19px; + font-size: 17.5px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.btn-large [class^="icon-"], +.btn-large [class*=" icon-"] { + margin-top: 4px; +} + +.btn-small { + padding: 2px 10px; + font-size: 11.9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-small [class^="icon-"], +.btn-small [class*=" icon-"] { + margin-top: 0; +} + +.btn-mini [class^="icon-"], +.btn-mini [class*=" icon-"] { + margin-top: -1px; +} + +.btn-mini { + padding: 0 6px; + font-size: 10.5px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-block { + display: block; + width: 100%; + padding-right: 0; + padding-left: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.btn-block + .btn-block { + margin-top: 5px; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.btn-primary.active, +.btn-warning.active, +.btn-danger.active, +.btn-success.active, +.btn-info.active, +.btn-inverse.active { + color: rgba(255, 255, 255, 0.75); +} + +.btn-primary { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #006dcc; + *background-color: #0044cc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(to bottom, #0088cc, #0044cc); + background-repeat: repeat-x; + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.btn-primary.disabled, +.btn-primary[disabled] { + color: #ffffff; + background-color: #0044cc; + *background-color: #003bb3; +} + +.btn-primary:active, +.btn-primary.active { + background-color: #003399 \9; +} + +.btn-warning { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #faa732; + *background-color: #f89406; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + border-color: #f89406 #f89406 #ad6704; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.btn-warning.disabled, +.btn-warning[disabled] { + color: #ffffff; + background-color: #f89406; + *background-color: #df8505; +} + +.btn-warning:active, +.btn-warning.active { + background-color: #c67605 \9; +} + +.btn-danger { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #da4f49; + *background-color: #bd362f; + background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); + background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); + background-repeat: repeat-x; + border-color: #bd362f #bd362f #802420; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.btn-danger.disabled, +.btn-danger[disabled] { + color: #ffffff; + background-color: #bd362f; + *background-color: #a9302a; +} + +.btn-danger:active, +.btn-danger.active { + background-color: #942a25 \9; +} + +.btn-success { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #5bb75b; + *background-color: #51a351; + background-image: -moz-linear-gradient(top, #62c462, #51a351); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); + background-image: -webkit-linear-gradient(top, #62c462, #51a351); + background-image: -o-linear-gradient(top, #62c462, #51a351); + background-image: linear-gradient(to bottom, #62c462, #51a351); + background-repeat: repeat-x; + border-color: #51a351 #51a351 #387038; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.btn-success.disabled, +.btn-success[disabled] { + color: #ffffff; + background-color: #51a351; + *background-color: #499249; +} + +.btn-success:active, +.btn-success.active { + background-color: #408140 \9; +} + +.btn-info { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #49afcd; + *background-color: #2f96b4; + background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); + background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); + background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); + background-repeat: repeat-x; + border-color: #2f96b4 #2f96b4 #1f6377; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.btn-info.disabled, +.btn-info[disabled] { + color: #ffffff; + background-color: #2f96b4; + *background-color: #2a85a0; +} + +.btn-info:active, +.btn-info.active { + background-color: #24748c \9; +} + +.btn-inverse { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #363636; + *background-color: #222222; + background-image: -moz-linear-gradient(top, #444444, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222)); + background-image: -webkit-linear-gradient(top, #444444, #222222); + background-image: -o-linear-gradient(top, #444444, #222222); + background-image: linear-gradient(to bottom, #444444, #222222); + background-repeat: repeat-x; + border-color: #222222 #222222 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-inverse:hover, +.btn-inverse:focus, +.btn-inverse:active, +.btn-inverse.active, +.btn-inverse.disabled, +.btn-inverse[disabled] { + color: #ffffff; + background-color: #222222; + *background-color: #151515; +} + +.btn-inverse:active, +.btn-inverse.active { + background-color: #080808 \9; +} + +button.btn, +input[type="submit"].btn { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn::-moz-focus-inner, +input[type="submit"].btn::-moz-focus-inner { + padding: 0; + border: 0; +} + +button.btn.btn-large, +input[type="submit"].btn.btn-large { + *padding-top: 7px; + *padding-bottom: 7px; +} + +button.btn.btn-small, +input[type="submit"].btn.btn-small { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn.btn-mini, +input[type="submit"].btn.btn-mini { + *padding-top: 1px; + *padding-bottom: 1px; +} + +.btn-link, +.btn-link:active, +.btn-link[disabled] { + background-color: transparent; + background-image: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-link { + color: #0088cc; + cursor: pointer; + border-color: transparent; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-link:hover, +.btn-link:focus { + color: #005580; + text-decoration: underline; + background-color: transparent; +} + +.btn-link[disabled]:hover, +.btn-link[disabled]:focus { + color: #333333; + text-decoration: none; +} + +.btn-group { + position: relative; + display: inline-block; + *display: inline; + *margin-left: .3em; + font-size: 0; + white-space: nowrap; + vertical-align: middle; + *zoom: 1; +} + +.btn-group:first-child { + *margin-left: 0; +} + +.btn-group + .btn-group { + margin-left: 5px; +} + +.btn-toolbar { + margin-top: 10px; + margin-bottom: 10px; + font-size: 0; +} + +.btn-toolbar > .btn + .btn, +.btn-toolbar > .btn-group + .btn, +.btn-toolbar > .btn + .btn-group { + margin-left: 5px; +} + +.btn-group > .btn { + position: relative; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group > .btn + .btn { + margin-left: -1px; +} + +.btn-group > .btn, +.btn-group > .dropdown-menu, +.btn-group > .popover { + font-size: 14px; +} + +.btn-group > .btn-mini { + font-size: 10.5px; +} + +.btn-group > .btn-small { + font-size: 11.9px; +} + +.btn-group > .btn-large { + font-size: 17.5px; +} + +.btn-group > .btn:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.btn-group > .btn:last-child, +.btn-group > .dropdown-toggle { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.btn-group > .btn.large:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.btn-group > .btn.large:last-child, +.btn-group > .large.dropdown-toggle { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active { + z-index: 2; +} + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn-group > .btn + .dropdown-toggle { + *padding-top: 5px; + padding-right: 8px; + *padding-bottom: 5px; + padding-left: 8px; + -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group > .btn-mini + .dropdown-toggle { + *padding-top: 2px; + padding-right: 5px; + *padding-bottom: 2px; + padding-left: 5px; +} + +.btn-group > .btn-small + .dropdown-toggle { + *padding-top: 5px; + *padding-bottom: 4px; +} + +.btn-group > .btn-large + .dropdown-toggle { + *padding-top: 7px; + padding-right: 12px; + *padding-bottom: 7px; + padding-left: 12px; +} + +.btn-group.open .dropdown-toggle { + background-image: none; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group.open .btn.dropdown-toggle { + background-color: #e6e6e6; +} + +.btn-group.open .btn-primary.dropdown-toggle { + background-color: #0044cc; +} + +.btn-group.open .btn-warning.dropdown-toggle { + background-color: #f89406; +} + +.btn-group.open .btn-danger.dropdown-toggle { + background-color: #bd362f; +} + +.btn-group.open .btn-success.dropdown-toggle { + background-color: #51a351; +} + +.btn-group.open .btn-info.dropdown-toggle { + background-color: #2f96b4; +} + +.btn-group.open .btn-inverse.dropdown-toggle { + background-color: #222222; +} + +.btn .caret { + margin-top: 8px; + margin-left: 0; +} + +.btn-large .caret { + margin-top: 6px; +} + +.btn-large .caret { + border-top-width: 5px; + border-right-width: 5px; + border-left-width: 5px; +} + +.btn-mini .caret, +.btn-small .caret { + margin-top: 8px; +} + +.dropup .btn-large .caret { + border-bottom-width: 5px; +} + +.btn-primary .caret, +.btn-warning .caret, +.btn-danger .caret, +.btn-info .caret, +.btn-success .caret, +.btn-inverse .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.btn-group-vertical { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; +} + +.btn-group-vertical > .btn { + display: block; + float: none; + max-width: 100%; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group-vertical > .btn + .btn { + margin-top: -1px; + margin-left: 0; +} + +.btn-group-vertical > .btn:first-child { + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.btn-group-vertical > .btn:last-child { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.btn-group-vertical > .btn-large:first-child { + -webkit-border-radius: 6px 6px 0 0; + -moz-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; +} + +.btn-group-vertical > .btn-large:last-child { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.alert { + padding: 8px 35px 8px 14px; + margin-bottom: 20px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + background-color: #fcf8e3; + border: 1px solid #fbeed5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.alert, +.alert h4 { + color: #c09853; +} + +.alert h4 { + margin: 0; +} + +.alert .close { + position: relative; + top: -2px; + right: -21px; + line-height: 20px; +} + +.alert-success { + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.alert-success h4 { + color: #468847; +} + +.alert-danger, +.alert-error { + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7; +} + +.alert-danger h4, +.alert-error h4 { + color: #b94a48; +} + +.alert-info { + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1; +} + +.alert-info h4 { + color: #3a87ad; +} + +.alert-block { + padding-top: 14px; + padding-bottom: 14px; +} + +.alert-block > p, +.alert-block > ul { + margin-bottom: 0; +} + +.alert-block p + p { + margin-top: 5px; +} + +.nav { + margin-bottom: 20px; + margin-left: 0; + list-style: none; +} + +.nav > li > a { + display: block; +} + +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} + +.nav > li > a > img { + max-width: none; +} + +.nav > .pull-right { + float: right; +} + +.nav-header { + display: block; + padding: 3px 15px; + font-size: 11px; + font-weight: bold; + line-height: 20px; + color: #999999; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-transform: uppercase; +} + +.nav li + .nav-header { + margin-top: 9px; +} + +.nav-list { + padding-right: 15px; + padding-left: 15px; + margin-bottom: 0; +} + +.nav-list > li > a, +.nav-list .nav-header { + margin-right: -15px; + margin-left: -15px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} + +.nav-list > li > a { + padding: 3px 15px; +} + +.nav-list > .active > a, +.nav-list > .active > a:hover, +.nav-list > .active > a:focus { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + background-color: #0088cc; +} + +.nav-list [class^="icon-"], +.nav-list [class*=" icon-"] { + margin-right: 2px; +} + +.nav-list .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.nav-tabs, +.nav-pills { + *zoom: 1; +} + +.nav-tabs:before, +.nav-pills:before, +.nav-tabs:after, +.nav-pills:after { + display: table; + line-height: 0; + content: ""; +} + +.nav-tabs:after, +.nav-pills:after { + clear: both; +} + +.nav-tabs > li, +.nav-pills > li { + float: left; +} + +.nav-tabs > li > a, +.nav-pills > li > a { + padding-right: 12px; + padding-left: 12px; + margin-right: 2px; + line-height: 14px; +} + +.nav-tabs { + border-bottom: 1px solid #ddd; +} + +.nav-tabs > li { + margin-bottom: -1px; +} + +.nav-tabs > li > a { + padding-top: 8px; + padding-bottom: 8px; + line-height: 20px; + border: 1px solid transparent; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.nav-tabs > li > a:hover, +.nav-tabs > li > a:focus { + border-color: #eeeeee #eeeeee #dddddd; +} + +.nav-tabs > .active > a, +.nav-tabs > .active > a:hover, +.nav-tabs > .active > a:focus { + color: #555555; + cursor: default; + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} + +.nav-pills > li > a { + padding-top: 8px; + padding-bottom: 8px; + margin-top: 2px; + margin-bottom: 2px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.nav-pills > .active > a, +.nav-pills > .active > a:hover, +.nav-pills > .active > a:focus { + color: #ffffff; + background-color: #0088cc; +} + +.nav-stacked > li { + float: none; +} + +.nav-stacked > li > a { + margin-right: 0; +} + +.nav-tabs.nav-stacked { + border-bottom: 0; +} + +.nav-tabs.nav-stacked > li > a { + border: 1px solid #ddd; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.nav-tabs.nav-stacked > li:first-child > a { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; +} + +.nav-tabs.nav-stacked > li:last-child > a { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.nav-tabs.nav-stacked > li > a:hover, +.nav-tabs.nav-stacked > li > a:focus { + z-index: 2; + border-color: #ddd; +} + +.nav-pills.nav-stacked > li > a { + margin-bottom: 3px; +} + +.nav-pills.nav-stacked > li:last-child > a { + margin-bottom: 1px; +} + +.nav-tabs .dropdown-menu { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.nav-pills .dropdown-menu { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.nav .dropdown-toggle .caret { + margin-top: 6px; + border-top-color: #0088cc; + border-bottom-color: #0088cc; +} + +.nav .dropdown-toggle:hover .caret, +.nav .dropdown-toggle:focus .caret { + border-top-color: #005580; + border-bottom-color: #005580; +} + +/* move down carets for tabs */ + +.nav-tabs .dropdown-toggle .caret { + margin-top: 8px; +} + +.nav .active .dropdown-toggle .caret { + border-top-color: #fff; + border-bottom-color: #fff; +} + +.nav-tabs .active .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.nav > .dropdown.active > a:hover, +.nav > .dropdown.active > a:focus { + cursor: pointer; +} + +.nav-tabs .open .dropdown-toggle, +.nav-pills .open .dropdown-toggle, +.nav > li.dropdown.open.active > a:hover, +.nav > li.dropdown.open.active > a:focus { + color: #ffffff; + background-color: #999999; + border-color: #999999; +} + +.nav li.dropdown.open .caret, +.nav li.dropdown.open.active .caret, +.nav li.dropdown.open a:hover .caret, +.nav li.dropdown.open a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; + opacity: 1; + filter: alpha(opacity=100); +} + +.tabs-stacked .open > a:hover, +.tabs-stacked .open > a:focus { + border-color: #999999; +} + +.tabbable { + *zoom: 1; +} + +.tabbable:before, +.tabbable:after { + display: table; + line-height: 0; + content: ""; +} + +.tabbable:after { + clear: both; +} + +.tab-content { + overflow: auto; +} + +.tabs-below > .nav-tabs, +.tabs-right > .nav-tabs, +.tabs-left > .nav-tabs { + border-bottom: 0; +} + +.tab-content > .tab-pane, +.pill-content > .pill-pane { + display: none; +} + +.tab-content > .active, +.pill-content > .active { + display: block; +} + +.tabs-below > .nav-tabs { + border-top: 1px solid #ddd; +} + +.tabs-below > .nav-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} + +.tabs-below > .nav-tabs > li > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.tabs-below > .nav-tabs > li > a:hover, +.tabs-below > .nav-tabs > li > a:focus { + border-top-color: #ddd; + border-bottom-color: transparent; +} + +.tabs-below > .nav-tabs > .active > a, +.tabs-below > .nav-tabs > .active > a:hover, +.tabs-below > .nav-tabs > .active > a:focus { + border-color: transparent #ddd #ddd #ddd; +} + +.tabs-left > .nav-tabs > li, +.tabs-right > .nav-tabs > li { + float: none; +} + +.tabs-left > .nav-tabs > li > a, +.tabs-right > .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} + +.tabs-left > .nav-tabs { + float: left; + margin-right: 19px; + border-right: 1px solid #ddd; +} + +.tabs-left > .nav-tabs > li > a { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.tabs-left > .nav-tabs > li > a:hover, +.tabs-left > .nav-tabs > li > a:focus { + border-color: #eeeeee #dddddd #eeeeee #eeeeee; +} + +.tabs-left > .nav-tabs .active > a, +.tabs-left > .nav-tabs .active > a:hover, +.tabs-left > .nav-tabs .active > a:focus { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} + +.tabs-right > .nav-tabs { + float: right; + margin-left: 19px; + border-left: 1px solid #ddd; +} + +.tabs-right > .nav-tabs > li > a { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.tabs-right > .nav-tabs > li > a:hover, +.tabs-right > .nav-tabs > li > a:focus { + border-color: #eeeeee #eeeeee #eeeeee #dddddd; +} + +.tabs-right > .nav-tabs .active > a, +.tabs-right > .nav-tabs .active > a:hover, +.tabs-right > .nav-tabs .active > a:focus { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: #ffffff; +} + +.nav > .disabled > a { + color: #999999; +} + +.nav > .disabled > a:hover, +.nav > .disabled > a:focus { + text-decoration: none; + cursor: default; + background-color: transparent; +} + +.navbar { + *position: relative; + *z-index: 2; + margin-bottom: 20px; + overflow: visible; +} + +.navbar-inner { + min-height: 40px; + padding-right: 20px; + padding-left: 20px; + background-color: #fafafa; + background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2)); + background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); + background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); + background-repeat: repeat-x; + border: 1px solid #d4d4d4; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); + *zoom: 1; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); +} + +.navbar-inner:before, +.navbar-inner:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-inner:after { + clear: both; +} + +.navbar .container { + width: auto; +} + +.nav-collapse.collapse { + height: auto; + overflow: visible; +} + +.navbar .brand { + display: block; + float: left; + padding: 10px 20px 10px; + margin-left: -20px; + font-size: 20px; + font-weight: 200; + color: #777777; + text-shadow: 0 1px 0 #ffffff; +} + +.navbar .brand:hover, +.navbar .brand:focus { + text-decoration: none; +} + +.navbar-text { + margin-bottom: 0; + line-height: 40px; + color: #777777; +} + +.navbar-link { + color: #777777; +} + +.navbar-link:hover, +.navbar-link:focus { + color: #333333; +} + +.navbar .divider-vertical { + height: 40px; + margin: 0 9px; + border-right: 1px solid #ffffff; + border-left: 1px solid #f2f2f2; +} + +.navbar .btn, +.navbar .btn-group { + margin-top: 5px; +} + +.navbar .btn-group .btn, +.navbar .input-prepend .btn, +.navbar .input-append .btn, +.navbar .input-prepend .btn-group, +.navbar .input-append .btn-group { + margin-top: 0; +} + +.navbar-form { + margin-bottom: 0; + *zoom: 1; +} + +.navbar-form:before, +.navbar-form:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-form:after { + clear: both; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .radio, +.navbar-form .checkbox { + margin-top: 5px; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .btn { + display: inline-block; + margin-bottom: 0; +} + +.navbar-form input[type="image"], +.navbar-form input[type="checkbox"], +.navbar-form input[type="radio"] { + margin-top: 3px; +} + +.navbar-form .input-append, +.navbar-form .input-prepend { + margin-top: 5px; + white-space: nowrap; +} + +.navbar-form .input-append input, +.navbar-form .input-prepend input { + margin-top: 0; +} + +.navbar-search { + position: relative; + float: left; + margin-top: 5px; + margin-bottom: 0; +} + +.navbar-search .search-query { + padding: 4px 14px; + margin-bottom: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 1; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.navbar-static-top { + position: static; + margin-bottom: 0; +} + +.navbar-static-top .navbar-inner { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + margin-bottom: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + border-width: 0 0 1px; +} + +.navbar-fixed-bottom .navbar-inner { + border-width: 1px 0 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-fixed-bottom .navbar-inner { + padding-right: 0; + padding-left: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.navbar-fixed-top { + top: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar-fixed-bottom { + bottom: 0; +} + +.navbar-fixed-bottom .navbar-inner { + -webkit-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar .nav { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; +} + +.navbar .nav.pull-right { + float: right; + margin-right: 0; +} + +.navbar .nav > li { + float: left; +} + +.navbar .nav > li > a { + float: none; + padding: 10px 15px 10px; + color: #777777; + text-decoration: none; + text-shadow: 0 1px 0 #ffffff; +} + +.navbar .nav .dropdown-toggle .caret { + margin-top: 8px; +} + +.navbar .nav > li > a:focus, +.navbar .nav > li > a:hover { + color: #333333; + text-decoration: none; + background-color: transparent; +} + +.navbar .nav > .active > a, +.navbar .nav > .active > a:hover, +.navbar .nav > .active > a:focus { + color: #555555; + text-decoration: none; + background-color: #e5e5e5; + -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); +} + +.navbar .btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-right: 5px; + margin-left: 5px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #ededed; + *background-color: #e5e5e5; + background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5)); + background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5); + background-repeat: repeat-x; + border-color: #e5e5e5 #e5e5e5 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); +} + +.navbar .btn-navbar:hover, +.navbar .btn-navbar:focus, +.navbar .btn-navbar:active, +.navbar .btn-navbar.active, +.navbar .btn-navbar.disabled, +.navbar .btn-navbar[disabled] { + color: #ffffff; + background-color: #e5e5e5; + *background-color: #d9d9d9; +} + +.navbar .btn-navbar:active, +.navbar .btn-navbar.active { + background-color: #cccccc \9; +} + +.navbar .btn-navbar .icon-bar { + display: block; + width: 18px; + height: 2px; + background-color: #f5f5f5; + -webkit-border-radius: 1px; + -moz-border-radius: 1px; + border-radius: 1px; + -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); +} + +.btn-navbar .icon-bar + .icon-bar { + margin-top: 3px; +} + +.navbar .nav > li > .dropdown-menu:before { + position: absolute; + top: -7px; + left: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.navbar .nav > li > .dropdown-menu:after { + position: absolute; + top: -6px; + left: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + border-left: 6px solid transparent; + content: ''; +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:before { + top: auto; + bottom: -7px; + border-top: 7px solid #ccc; + border-bottom: 0; + border-top-color: rgba(0, 0, 0, 0.2); +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:after { + top: auto; + bottom: -6px; + border-top: 6px solid #ffffff; + border-bottom: 0; +} + +.navbar .nav li.dropdown > a:hover .caret, +.navbar .nav li.dropdown > a:focus .caret { + border-top-color: #333333; + border-bottom-color: #333333; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle, +.navbar .nav li.dropdown.active > .dropdown-toggle, +.navbar .nav li.dropdown.open.active > .dropdown-toggle { + color: #555555; + background-color: #e5e5e5; +} + +.navbar .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #777777; + border-bottom-color: #777777; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.navbar .pull-right > li > .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:before, +.navbar .nav > li > .dropdown-menu.pull-right:before { + right: 12px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:after, +.navbar .nav > li > .dropdown-menu.pull-right:after { + right: 13px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { + right: 100%; + left: auto; + margin-right: -1px; + margin-left: 0; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.navbar-inverse .navbar-inner { + background-color: #1b1b1b; + background-image: -moz-linear-gradient(top, #222222, #111111); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111)); + background-image: -webkit-linear-gradient(top, #222222, #111111); + background-image: -o-linear-gradient(top, #222222, #111111); + background-image: linear-gradient(to bottom, #222222, #111111); + background-repeat: repeat-x; + border-color: #252525; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); +} + +.navbar-inverse .brand, +.navbar-inverse .nav > li > a { + color: #999999; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.navbar-inverse .brand:hover, +.navbar-inverse .nav > li > a:hover, +.navbar-inverse .brand:focus, +.navbar-inverse .nav > li > a:focus { + color: #ffffff; +} + +.navbar-inverse .brand { + color: #999999; +} + +.navbar-inverse .navbar-text { + color: #999999; +} + +.navbar-inverse .nav > li > a:focus, +.navbar-inverse .nav > li > a:hover { + color: #ffffff; + background-color: transparent; +} + +.navbar-inverse .nav .active > a, +.navbar-inverse .nav .active > a:hover, +.navbar-inverse .nav .active > a:focus { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .navbar-link { + color: #999999; +} + +.navbar-inverse .navbar-link:hover, +.navbar-inverse .navbar-link:focus { + color: #ffffff; +} + +.navbar-inverse .divider-vertical { + border-right-color: #222222; + border-left-color: #111111; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .nav li.dropdown > a:hover .caret, +.navbar-inverse .nav li.dropdown > a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #999999; + border-bottom-color: #999999; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .navbar-search .search-query { + color: #ffffff; + background-color: #515151; + border-color: #111111; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} + +.navbar-inverse .navbar-search .search-query:-moz-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:focus, +.navbar-inverse .navbar-search .search-query.focused { + padding: 5px 15px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 0; + outline: 0; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); +} + +.navbar-inverse .btn-navbar { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e0e0e; + *background-color: #040404; + background-image: -moz-linear-gradient(top, #151515, #040404); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404)); + background-image: -webkit-linear-gradient(top, #151515, #040404); + background-image: -o-linear-gradient(top, #151515, #040404); + background-image: linear-gradient(to bottom, #151515, #040404); + background-repeat: repeat-x; + border-color: #040404 #040404 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.navbar-inverse .btn-navbar:hover, +.navbar-inverse .btn-navbar:focus, +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active, +.navbar-inverse .btn-navbar.disabled, +.navbar-inverse .btn-navbar[disabled] { + color: #ffffff; + background-color: #040404; + *background-color: #000000; +} + +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active { + background-color: #000000 \9; +} + +.breadcrumb { + padding: 8px 15px; + margin: 0 0 20px; + list-style: none; + background-color: #f5f5f5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.breadcrumb > li { + display: inline-block; + *display: inline; + text-shadow: 0 1px 0 #ffffff; + *zoom: 1; +} + +.breadcrumb > li > .divider { + padding: 0 5px; + color: #ccc; +} + +.breadcrumb > .active { + color: #999999; +} + +.pagination { + margin: 20px 0; +} + +.pagination ul { + display: inline-block; + *display: inline; + margin-bottom: 0; + margin-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + *zoom: 1; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.pagination ul > li { + display: inline; +} + +.pagination ul > li > a, +.pagination ul > li > span { + float: left; + padding: 4px 12px; + line-height: 20px; + text-decoration: none; + background-color: #ffffff; + border: 1px solid #dddddd; + border-left-width: 0; +} + +.pagination ul > li > a:hover, +.pagination ul > li > a:focus, +.pagination ul > .active > a, +.pagination ul > .active > span { + background-color: #f5f5f5; +} + +.pagination ul > .active > a, +.pagination ul > .active > span { + color: #999999; + cursor: default; +} + +.pagination ul > .disabled > span, +.pagination ul > .disabled > a, +.pagination ul > .disabled > a:hover, +.pagination ul > .disabled > a:focus { + color: #999999; + cursor: default; + background-color: transparent; +} + +.pagination ul > li:first-child > a, +.pagination ul > li:first-child > span { + border-left-width: 1px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.pagination ul > li:last-child > a, +.pagination ul > li:last-child > span { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.pagination-centered { + text-align: center; +} + +.pagination-right { + text-align: right; +} + +.pagination-large ul > li > a, +.pagination-large ul > li > span { + padding: 11px 19px; + font-size: 17.5px; +} + +.pagination-large ul > li:first-child > a, +.pagination-large ul > li:first-child > span { + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.pagination-large ul > li:last-child > a, +.pagination-large ul > li:last-child > span { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.pagination-mini ul > li:first-child > a, +.pagination-small ul > li:first-child > a, +.pagination-mini ul > li:first-child > span, +.pagination-small ul > li:first-child > span { + -webkit-border-bottom-left-radius: 3px; + border-bottom-left-radius: 3px; + -webkit-border-top-left-radius: 3px; + border-top-left-radius: 3px; + -moz-border-radius-bottomleft: 3px; + -moz-border-radius-topleft: 3px; +} + +.pagination-mini ul > li:last-child > a, +.pagination-small ul > li:last-child > a, +.pagination-mini ul > li:last-child > span, +.pagination-small ul > li:last-child > span { + -webkit-border-top-right-radius: 3px; + border-top-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + border-bottom-right-radius: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomright: 3px; +} + +.pagination-small ul > li > a, +.pagination-small ul > li > span { + padding: 2px 10px; + font-size: 11.9px; +} + +.pagination-mini ul > li > a, +.pagination-mini ul > li > span { + padding: 0 6px; + font-size: 10.5px; +} + +.pager { + margin: 20px 0; + text-align: center; + list-style: none; + *zoom: 1; +} + +.pager:before, +.pager:after { + display: table; + line-height: 0; + content: ""; +} + +.pager:after { + clear: both; +} + +.pager li { + display: inline; +} + +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #f5f5f5; +} + +.pager .next > a, +.pager .next > span { + float: right; +} + +.pager .previous > a, +.pager .previous > span { + float: left; +} + +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #999999; + cursor: default; + background-color: #fff; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop, +.modal-backdrop.fade.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.modal { + position: fixed; + top: 10%; + left: 50%; + z-index: 1050; + width: 560px; + margin-left: -280px; + background-color: #ffffff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + outline: none; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} + +.modal.fade { + top: -25%; + -webkit-transition: opacity 0.3s linear, top 0.3s ease-out; + -moz-transition: opacity 0.3s linear, top 0.3s ease-out; + -o-transition: opacity 0.3s linear, top 0.3s ease-out; + transition: opacity 0.3s linear, top 0.3s ease-out; +} + +.modal.fade.in { + top: 10%; +} + +.modal-header { + padding: 9px 15px; + border-bottom: 1px solid #eee; +} + +.modal-header .close { + margin-top: 2px; +} + +.modal-header h3 { + margin: 0; + line-height: 30px; +} + +.modal-body { + position: relative; + max-height: 400px; + padding: 15px; + overflow-y: auto; +} + +.modal-form { + margin-bottom: 0; +} + +.modal-footer { + padding: 14px 15px 15px; + margin-bottom: 0; + text-align: right; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} + +.modal-footer:before, +.modal-footer:after { + display: table; + line-height: 0; + content: ""; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} + +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} + +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} + +.tooltip { + position: absolute; + z-index: 1030; + display: block; + font-size: 11px; + line-height: 1.4; + opacity: 0; + filter: alpha(opacity=0); + visibility: visible; +} + +.tooltip.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} + +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} + +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} + +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} + +.tooltip-inner { + max-width: 200px; + padding: 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-right-color: #000000; + border-width: 5px 5px 5px 0; +} + +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-left-color: #000000; + border-width: 5px 0 5px 5px; +} + +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + max-width: 276px; + padding: 1px; + text-align: left; + white-space: normal; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.popover.top { + margin-top: -10px; +} + +.popover.right { + margin-left: 10px; +} + +.popover.bottom { + margin-top: 10px; +} + +.popover.left { + margin-left: -10px; +} + +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} + +.popover-title:empty { + display: none; +} + +.popover-content { + padding: 9px 14px; +} + +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover .arrow { + border-width: 11px; +} + +.popover .arrow:after { + border-width: 10px; + content: ""; +} + +.popover.top .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, 0.25); + border-bottom-width: 0; +} + +.popover.top .arrow:after { + bottom: 1px; + margin-left: -10px; + border-top-color: #ffffff; + border-bottom-width: 0; +} + +.popover.right .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, 0.25); + border-left-width: 0; +} + +.popover.right .arrow:after { + bottom: -10px; + left: 1px; + border-right-color: #ffffff; + border-left-width: 0; +} + +.popover.bottom .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, 0.25); + border-top-width: 0; +} + +.popover.bottom .arrow:after { + top: 1px; + margin-left: -10px; + border-bottom-color: #ffffff; + border-top-width: 0; +} + +.popover.left .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, 0.25); + border-right-width: 0; +} + +.popover.left .arrow:after { + right: 1px; + bottom: -10px; + border-left-color: #ffffff; + border-right-width: 0; +} + +.thumbnails { + margin-left: -20px; + list-style: none; + *zoom: 1; +} + +.thumbnails:before, +.thumbnails:after { + display: table; + line-height: 0; + content: ""; +} + +.thumbnails:after { + clear: both; +} + +.row-fluid .thumbnails { + margin-left: 0; +} + +.thumbnails > li { + float: left; + margin-bottom: 20px; + margin-left: 20px; +} + +.thumbnail { + display: block; + padding: 4px; + line-height: 20px; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +a.thumbnail:hover, +a.thumbnail:focus { + border-color: #0088cc; + -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); +} + +.thumbnail > img { + display: block; + max-width: 100%; + margin-right: auto; + margin-left: auto; +} + +.thumbnail .caption { + padding: 9px; + color: #555555; +} + +.media, +.media-body { + overflow: hidden; + *overflow: visible; + zoom: 1; +} + +.media, +.media .media { + margin-top: 15px; +} + +.media:first-child { + margin-top: 0; +} + +.media-object { + display: block; +} + +.media-heading { + margin: 0 0 5px; +} + +.media > .pull-left { + margin-right: 10px; +} + +.media > .pull-right { + margin-left: 10px; +} + +.media-list { + margin-left: 0; + list-style: none; +} + +.label, +.badge { + display: inline-block; + padding: 2px 4px; + font-size: 11.844px; + font-weight: bold; + line-height: 14px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + white-space: nowrap; + vertical-align: baseline; + background-color: #999999; +} + +.label { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.badge { + padding-right: 9px; + padding-left: 9px; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; +} + +.label:empty, +.badge:empty { + display: none; +} + +a.label:hover, +a.label:focus, +a.badge:hover, +a.badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.label-important, +.badge-important { + background-color: #b94a48; +} + +.label-important[href], +.badge-important[href] { + background-color: #953b39; +} + +.label-warning, +.badge-warning { + background-color: #f89406; +} + +.label-warning[href], +.badge-warning[href] { + background-color: #c67605; +} + +.label-success, +.badge-success { + background-color: #468847; +} + +.label-success[href], +.badge-success[href] { + background-color: #356635; +} + +.label-info, +.badge-info { + background-color: #3a87ad; +} + +.label-info[href], +.badge-info[href] { + background-color: #2d6987; +} + +.label-inverse, +.badge-inverse { + background-color: #333333; +} + +.label-inverse[href], +.badge-inverse[href] { + background-color: #1a1a1a; +} + +.btn .label, +.btn .badge { + position: relative; + top: -1px; +} + +.btn-mini .label, +.btn-mini .badge { + top: 0; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.progress .bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + color: #ffffff; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} + +.progress .bar + .bar { + -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); +} + +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} + +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + +.progress-danger .bar, +.progress .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); +} + +.progress-danger.progress-striped .bar, +.progress-striped .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-success .bar, +.progress .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); +} + +.progress-success.progress-striped .bar, +.progress-striped .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-info .bar, +.progress .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); +} + +.progress-info.progress-striped .bar, +.progress-striped .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-warning .bar, +.progress .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); +} + +.progress-warning.progress-striped .bar, +.progress-striped .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.accordion { + margin-bottom: 20px; +} + +.accordion-group { + margin-bottom: 2px; + border: 1px solid #e5e5e5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.accordion-heading { + border-bottom: 0; +} + +.accordion-heading .accordion-toggle { + display: block; + padding: 8px 15px; +} + +.accordion-toggle { + cursor: pointer; +} + +.accordion-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} + +.carousel { + position: relative; + margin-bottom: 20px; + line-height: 1; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: 0.6s ease-in-out left; + -moz-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} + +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + line-height: 1; +} + +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} + +.carousel-inner > .active { + left: 0; +} + +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} + +.carousel-inner > .next { + left: 100%; +} + +.carousel-inner > .prev { + left: -100%; +} + +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} + +.carousel-inner > .active.left { + left: -100%; +} + +.carousel-inner > .active.right { + left: 100%; +} + +.carousel-control { + position: absolute; + top: 40%; + left: 15px; + width: 40px; + height: 40px; + margin-top: -20px; + font-size: 60px; + font-weight: 100; + line-height: 30px; + color: #ffffff; + text-align: center; + background: #222222; + border: 3px solid #ffffff; + -webkit-border-radius: 23px; + -moz-border-radius: 23px; + border-radius: 23px; + opacity: 0.5; + filter: alpha(opacity=50); +} + +.carousel-control.right { + right: 15px; + left: auto; +} + +.carousel-control:hover, +.carousel-control:focus { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} + +.carousel-indicators { + position: absolute; + top: 15px; + right: 15px; + z-index: 5; + margin: 0; + list-style: none; +} + +.carousel-indicators li { + display: block; + float: left; + width: 10px; + height: 10px; + margin-left: 5px; + text-indent: -999px; + background-color: #ccc; + background-color: rgba(255, 255, 255, 0.25); + border-radius: 5px; +} + +.carousel-indicators .active { + background-color: #fff; +} + +.carousel-caption { + position: absolute; + right: 0; + bottom: 0; + left: 0; + padding: 15px; + background: #333333; + background: rgba(0, 0, 0, 0.75); +} + +.carousel-caption h4, +.carousel-caption p { + line-height: 20px; + color: #ffffff; +} + +.carousel-caption h4 { + margin: 0 0 5px; +} + +.carousel-caption p { + margin-bottom: 0; +} + +.hero-unit { + padding: 60px; + margin-bottom: 30px; + font-size: 18px; + font-weight: 200; + line-height: 30px; + color: inherit; + background-color: #eeeeee; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.hero-unit h1 { + margin-bottom: 0; + font-size: 60px; + line-height: 1; + letter-spacing: -1px; + color: inherit; +} + +.hero-unit li { + line-height: 30px; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.hide { + display: none; +} + +.show { + display: block; +} + +.invisible { + visibility: hidden; +} + +.affix { + position: fixed; +} diff --git a/data/templates/errors/400.html b/data/templates/errors/400.html new file mode 100644 index 0000000..5a8ec3b --- /dev/null +++ b/data/templates/errors/400.html @@ -0,0 +1,5 @@ + diff --git a/data/templates/errors/403.html b/data/templates/errors/403.html new file mode 100644 index 0000000..94763d7 --- /dev/null +++ b/data/templates/errors/403.html @@ -0,0 +1 @@ +Access denied! diff --git a/data/templates/errors/todo.html b/data/templates/errors/todo.html new file mode 100644 index 0000000..a494f55 --- /dev/null +++ b/data/templates/errors/todo.html @@ -0,0 +1 @@ +This page is Work in Progress. diff --git a/data/templates/img/glyphicons-halflings-white.png b/data/templates/img/glyphicons-halflings-white.png new file mode 100644 index 0000000..3bf6484 Binary files /dev/null and b/data/templates/img/glyphicons-halflings-white.png differ diff --git a/data/templates/img/glyphicons-halflings.png b/data/templates/img/glyphicons-halflings.png new file mode 100644 index 0000000..a996999 Binary files /dev/null and b/data/templates/img/glyphicons-halflings.png differ diff --git a/data/templates/index.html b/data/templates/index.html new file mode 100644 index 0000000..bee2d95 --- /dev/null +++ b/data/templates/index.html @@ -0,0 +1 @@ +

Welcome to the new {{{SHORTNAME}}} Shop System.

diff --git a/data/templates/js/bootstrap.js b/data/templates/js/bootstrap.js new file mode 100644 index 0000000..44109f6 --- /dev/null +++ b/data/templates/js/bootstrap.js @@ -0,0 +1,2280 @@ +/* =================================================== + * bootstrap-transition.js v2.3.2 + * http://getbootstrap.com/2.3.2/javascript.html#transitions + * =================================================== + * Copyright 2013 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* CSS TRANSITION SUPPORT (http://www.modernizr.com/) + * ======================================================= */ + + $(function () { + + $.support.transition = (function () { + + var transitionEnd = (function () { + + var el = document.createElement('bootstrap') + , transEndEventNames = { + 'WebkitTransition' : 'webkitTransitionEnd' + , 'MozTransition' : 'transitionend' + , 'OTransition' : 'oTransitionEnd otransitionend' + , 'transition' : 'transitionend' + } + , name + + for (name in transEndEventNames){ + if (el.style[name] !== undefined) { + return transEndEventNames[name] + } + } + + }()) + + return transitionEnd && { + end: transitionEnd + } + + })() + + }) + +}(window.jQuery);/* ========================================================== + * bootstrap-alert.js v2.3.2 + * http://getbootstrap.com/2.3.2/javascript.html#alerts + * ========================================================== + * Copyright 2013 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* ALERT CLASS DEFINITION + * ====================== */ + + var dismiss = '[data-dismiss="alert"]' + , Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.prototype.close = function (e) { + var $this = $(this) + , selector = $this.attr('data-target') + , $parent + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + $parent = $(selector) + + e && e.preventDefault() + + $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent()) + + $parent.trigger(e = $.Event('close')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + $parent + .trigger('closed') + .remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent.on($.support.transition.end, removeElement) : + removeElement() + } + + + /* ALERT PLUGIN DEFINITION + * ======================= */ + + var old = $.fn.alert + + $.fn.alert = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('alert') + if (!data) $this.data('alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.alert.Constructor = Alert + + + /* ALERT NO CONFLICT + * ================= */ + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + /* ALERT DATA-API + * ============== */ + + $(document).on('click.alert.data-api', dismiss, Alert.prototype.close) + +}(window.jQuery);/* ============================================================ + * bootstrap-button.js v2.3.2 + * http://getbootstrap.com/2.3.2/javascript.html#buttons + * ============================================================ + * Copyright 2013 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* BUTTON PUBLIC CLASS DEFINITION + * ============================== */ + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, $.fn.button.defaults, options) + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + , $el = this.$element + , data = $el.data() + , val = $el.is('input') ? 'val' : 'html' + + state = state + 'Text' + data.resetText || $el.data('resetText', $el[val]()) + + $el[val](data[state] || this.options[state]) + + // push to event loop to allow forms to submit + setTimeout(function () { + state == 'loadingText' ? + $el.addClass(d).attr(d, d) : + $el.removeClass(d).removeAttr(d) + }, 0) + } + + Button.prototype.toggle = function () { + var $parent = this.$element.closest('[data-toggle="buttons-radio"]') + + $parent && $parent + .find('.active') + .removeClass('active') + + this.$element.toggleClass('active') + } + + + /* BUTTON PLUGIN DEFINITION + * ======================== */ + + var old = $.fn.button + + $.fn.button = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('button') + , options = typeof option == 'object' && option + if (!data) $this.data('button', (data = new Button(this, options))) + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + $.fn.button.defaults = { + loadingText: 'loading...' + } + + $.fn.button.Constructor = Button + + + /* BUTTON NO CONFLICT + * ================== */ + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + /* BUTTON DATA-API + * =============== */ + + $(document).on('click.button.data-api', '[data-toggle^=button]', function (e) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + $btn.button('toggle') + }) + +}(window.jQuery);/* ========================================================== + * bootstrap-carousel.js v2.3.2 + * http://getbootstrap.com/2.3.2/javascript.html#carousel + * ========================================================== + * Copyright 2013 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* CAROUSEL CLASS DEFINITION + * ========================= */ + + var Carousel = function (element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.options.pause == 'hover' && this.$element + .on('mouseenter', $.proxy(this.pause, this)) + .on('mouseleave', $.proxy(this.cycle, this)) + } + + Carousel.prototype = { + + cycle: function (e) { + if (!e) this.paused = false + if (this.interval) clearInterval(this.interval); + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + return this + } + + , getActiveIndex: function () { + this.$active = this.$element.find('.item.active') + this.$items = this.$active.parent().children() + return this.$items.index(this.$active) + } + + , to: function (pos) { + var activeIndex = this.getActiveIndex() + , that = this + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) { + return this.$element.one('slid', function () { + that.to(pos) + }) + } + + if (activeIndex == pos) { + return this.pause().cycle() + } + + return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) + } + + , pause: function (e) { + if (!e) this.paused = true + if (this.$element.find('.next, .prev').length && $.support.transition.end) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + clearInterval(this.interval) + this.interval = null + return this + } + + , next: function () { + if (this.sliding) return + return this.slide('next') + } + + , prev: function () { + if (this.sliding) return + return this.slide('prev') + } + + , slide: function (type, next) { + var $active = this.$element.find('.item.active') + , $next = next || $active[type]() + , isCycling = this.interval + , direction = type == 'next' ? 'left' : 'right' + , fallback = type == 'next' ? 'first' : 'last' + , that = this + , e + + this.sliding = true + + isCycling && this.pause() + + $next = $next.length ? $next : this.$element.find('.item')[fallback]() + + e = $.Event('slide', { + relatedTarget: $next[0] + , direction: direction + }) + + if ($next.hasClass('active')) return + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + this.$element.one('slid', function () { + var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()]) + $nextIndicator && $nextIndicator.addClass('active') + }) + } + + if ($.support.transition && this.$element.hasClass('slide')) { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + this.$element.one($.support.transition.end, function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { that.$element.trigger('slid') }, 0) + }) + } else { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger('slid') + } + + isCycling && this.cycle() + + return this + } + + } + + + /* CAROUSEL PLUGIN DEFINITION + * ========================== */ + + var old = $.fn.carousel + + $.fn.carousel = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('carousel') + , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option) + , action = typeof option == 'string' ? option : options.slide + if (!data) $this.data('carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + $.fn.carousel.defaults = { + interval: 5000 + , pause: 'hover' + } + + $.fn.carousel.Constructor = Carousel + + + /* CAROUSEL NO CONFLICT + * ==================== */ + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + /* CAROUSEL DATA-API + * ================= */ + + $(document).on('click.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { + var $this = $(this), href + , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + , options = $.extend({}, $target.data(), $this.data()) + , slideIndex + + $target.carousel(options) + + if (slideIndex = $this.attr('data-slide-to')) { + $target.data('carousel').pause().to(slideIndex).cycle() + } + + e.preventDefault() + }) + +}(window.jQuery);/* ============================================================= + * bootstrap-collapse.js v2.3.2 + * http://getbootstrap.com/2.3.2/javascript.html#collapse + * ============================================================= + * Copyright 2013 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* COLLAPSE PUBLIC CLASS DEFINITION + * ================================ */ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, $.fn.collapse.defaults, options) + + if (this.options.parent) { + this.$parent = $(this.options.parent) + } + + this.options.toggle && this.toggle() + } + + Collapse.prototype = { + + constructor: Collapse + + , dimension: function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + , show: function () { + var dimension + , scroll + , actives + , hasData + + if (this.transitioning || this.$element.hasClass('in')) return + + dimension = this.dimension() + scroll = $.camelCase(['scroll', dimension].join('-')) + actives = this.$parent && this.$parent.find('> .accordion-group > .in') + + if (actives && actives.length) { + hasData = actives.data('collapse') + if (hasData && hasData.transitioning) return + actives.collapse('hide') + hasData || actives.data('collapse', null) + } + + this.$element[dimension](0) + this.transition('addClass', $.Event('show'), 'shown') + $.support.transition && this.$element[dimension](this.$element[0][scroll]) + } + + , hide: function () { + var dimension + if (this.transitioning || !this.$element.hasClass('in')) return + dimension = this.dimension() + this.reset(this.$element[dimension]()) + this.transition('removeClass', $.Event('hide'), 'hidden') + this.$element[dimension](0) + } + + , reset: function (size) { + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + [dimension](size || 'auto') + [0].offsetWidth + + this.$element[size !== null ? 'addClass' : 'removeClass']('collapse') + + return this + } + + , transition: function (method, startEvent, completeEvent) { + var that = this + , complete = function () { + if (startEvent.type == 'show') that.reset() + that.transitioning = 0 + that.$element.trigger(completeEvent) + } + + this.$element.trigger(startEvent) + + if (startEvent.isDefaultPrevented()) return + + this.transitioning = 1 + + this.$element[method]('in') + + $.support.transition && this.$element.hasClass('collapse') ? + this.$element.one($.support.transition.end, complete) : + complete() + } + + , toggle: function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + } + + + /* COLLAPSE PLUGIN DEFINITION + * ========================== */ + + var old = $.fn.collapse + + $.fn.collapse = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('collapse') + , options = $.extend({}, $.fn.collapse.defaults, $this.data(), typeof option == 'object' && option) + if (!data) $this.data('collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.collapse.defaults = { + toggle: true + } + + $.fn.collapse.Constructor = Collapse + + + /* COLLAPSE NO CONFLICT + * ==================== */ + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + /* COLLAPSE DATA-API + * ================= */ + + $(document).on('click.collapse.data-api', '[data-toggle=collapse]', function (e) { + var $this = $(this), href + , target = $this.attr('data-target') + || e.preventDefault() + || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 + , option = $(target).data('collapse') ? 'toggle' : $this.data() + $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed') + $(target).collapse(option) + }) + +}(window.jQuery);/* ============================================================ + * bootstrap-dropdown.js v2.3.2 + * http://getbootstrap.com/2.3.2/javascript.html#dropdowns + * ============================================================ + * Copyright 2013 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* DROPDOWN CLASS DEFINITION + * ========================= */ + + var toggle = '[data-toggle=dropdown]' + , Dropdown = function (element) { + var $el = $(element).on('click.dropdown.data-api', this.toggle) + $('html').on('click.dropdown.data-api', function () { + $el.parent().removeClass('open') + }) + } + + Dropdown.prototype = { + + constructor: Dropdown + + , toggle: function (e) { + var $this = $(this) + , $parent + , isActive + + if ($this.is('.disabled, :disabled')) return + + $parent = getParent($this) + + isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement) { + // if mobile we we use a backdrop because click events don't delegate + $('