Changeset 3693621
- Timestamp:
- 09/13/2026 12:06:51 PM (6 weeks ago)
- Location:
- seatreg
- Files:
-
- 1333 added
- 39 edited
-
tags/1.77.0 (added)
-
tags/1.77.0/LICENSE.txt (added)
-
tags/1.77.0/companion_app (added)
-
tags/1.77.0/companion_app/_expo (added)
-
tags/1.77.0/companion_app/_expo/static (added)
-
tags/1.77.0/companion_app/_expo/static/js (added)
-
tags/1.77.0/companion_app/_expo/static/js/web (added)
-
tags/1.77.0/companion_app/_expo/static/js/web/AppEntry-2654c845f33ba2d75d1a4d2ba11d0fc8.js (added)
-
tags/1.77.0/companion_app/assets (added)
-
tags/1.77.0/companion_app/assets/node_modules (added)
-
tags/1.77.0/companion_app/assets/node_modules/@expo (added)
-
tags/1.77.0/companion_app/assets/node_modules/@expo/vector-icons (added)
-
tags/1.77.0/companion_app/assets/node_modules/@expo/vector-icons/build (added)
-
tags/1.77.0/companion_app/assets/node_modules/@expo/vector-icons/build/vendor (added)
-
tags/1.77.0/companion_app/assets/node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons (added)
-
tags/1.77.0/companion_app/assets/node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts (added)
-
tags/1.77.0/companion_app/assets/node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/AntDesign.3a2ba31570920eeb9b1d217cabe58315.ttf (added)
-
tags/1.77.0/companion_app/assets/node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/Entypo.31b5ffea3daddc69dd01a1f3d6cf63c5.ttf (added)
-
tags/1.77.0/companion_app/assets/node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/EvilIcons.140c53a7643ea949007aa9a282153849.ttf (added)
-
tags/1.77.0/companion_app/assets/node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/Feather.a76d309774d33d9856f650bed4292a23.ttf (added)
-
tags/1.77.0/companion_app/assets/node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/FontAwesome.b06871f281fee6b241d60582ae9369b9.ttf (added)
-
tags/1.77.0/companion_app/assets/node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/FontAwesome5_Brands.3b89dd103490708d19a95adcae52210e.ttf (added)
-
tags/1.77.0/companion_app/assets/node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/FontAwesome5_Regular.1f77739ca9ff2188b539c36f30ffa2be.ttf (added)
-
tags/1.77.0/companion_app/assets/node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/FontAwesome5_Solid.605ed7926cf39a2ad5ec2d1f9d391d3d.ttf (added)
-
tags/1.77.0/companion_app/assets/node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/Fontisto.b49ae8ab2dbccb02c4d11caaacf09eab.ttf (added)
-
tags/1.77.0/companion_app/assets/node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/Foundation.e20945d7c929279ef7a6f1db184a4470.ttf (added)
-
tags/1.77.0/companion_app/assets/node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/Ionicons.6148e7019854f3bde85b633cb88f3c25.ttf (added)
-
tags/1.77.0/companion_app/assets/node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/MaterialCommunityIcons.b62641afc9ab487008e996a5c5865e56.ttf (added)
-
tags/1.77.0/companion_app/assets/node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/MaterialIcons.4e85bc9ebe07e0340c9c4fc2f6c38908.ttf (added)
-
tags/1.77.0/companion_app/assets/node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/Octicons.f7c53c47a66934504fcbc7cc164895a7.ttf (added)
-
tags/1.77.0/companion_app/assets/node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/SimpleLineIcons.d2285965fe34b05465047401b8595dd0.ttf (added)
-
tags/1.77.0/companion_app/assets/node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/Zocial.1681f34aaca71b8dfb70756bca331eb2.ttf (added)
-
tags/1.77.0/companion_app/assets/node_modules/@react-navigation (added)
-
tags/1.77.0/companion_app/assets/node_modules/@react-navigation/elements (added)
-
tags/1.77.0/companion_app/assets/node_modules/@react-navigation/elements/lib (added)
-
tags/1.77.0/companion_app/assets/node_modules/@react-navigation/elements/lib/module (added)
-
tags/1.77.0/companion_app/assets/node_modules/@react-navigation/elements/lib/module/assets (added)
-
tags/1.77.0/companion_app/assets/node_modules/@react-navigation/elements/lib/module/assets/back-icon-mask.5223c8d9b0d08b82a5670fb5f71faf78.png (added)
-
tags/1.77.0/companion_app/assets/node_modules/@react-navigation/elements/lib/module/assets/back-icon.35ba0eaec5a4f5ed12ca16fabeae451d.png (added)
-
tags/1.77.0/companion_app/assets/node_modules/react-native-ratings (added)
-
tags/1.77.0/companion_app/assets/node_modules/react-native-ratings/dist (added)
-
tags/1.77.0/companion_app/assets/node_modules/react-native-ratings/dist/images (added)
-
tags/1.77.0/companion_app/assets/node_modules/react-native-ratings/dist/images/airbnb-star-selected.4b9cf0cc747e3c1abc541befa05b1e37.png (added)
-
tags/1.77.0/companion_app/assets/node_modules/react-native-ratings/dist/images/airbnb-star.4bdd6aad790c6c8370a06876ec7d31e1.png (added)
-
tags/1.77.0/companion_app/assets/node_modules/react-native-ratings/dist/images/bell.a7b9dc9de5f8f1fb1afbef917619a5ac.png (added)
-
tags/1.77.0/companion_app/assets/node_modules/react-native-ratings/dist/images/heart.2327736b3ea09c41abfb69be1221f430.png (added)
-
tags/1.77.0/companion_app/assets/node_modules/react-native-ratings/dist/images/rocket.51671417ef20e0bbc32f0a2bc6edfa95.png (added)
-
tags/1.77.0/companion_app/assets/node_modules/react-native-ratings/dist/images/star.004c2bbb035d8d06bb830efc4673c886.png (added)
-
tags/1.77.0/companion_app/favicon.ico (added)
-
tags/1.77.0/companion_app/index.php (added)
-
tags/1.77.0/companion_app/metadata.json (added)
-
tags/1.77.0/css (added)
-
tags/1.77.0/css/alertify.core.css (added)
-
tags/1.77.0/css/alertify.default.css (added)
-
tags/1.77.0/css/bootstrap.min.css (added)
-
tags/1.77.0/css/cursor (added)
-
tags/1.77.0/css/cursor/add_cursor.cur (added)
-
tags/1.77.0/css/cursor/add_cursor.png (added)
-
tags/1.77.0/css/cursor/add_cursor2.cur (added)
-
tags/1.77.0/css/cursor/add_cursor2.png (added)
-
tags/1.77.0/css/cursor/add_cursor_2.cur (added)
-
tags/1.77.0/css/cursor/add_cursor_3.cur (added)
-
tags/1.77.0/css/cursor/add_cursor_4.cur (added)
-
tags/1.77.0/css/cursor/eraser_cursor.cur (added)
-
tags/1.77.0/css/cursor/eraser_kursor.png (added)
-
tags/1.77.0/css/cursor/lasso2.cur (added)
-
tags/1.77.0/css/cursor/lasso_tool_new.png (added)
-
tags/1.77.0/css/custom-theme (added)
-
tags/1.77.0/css/custom-theme/images (added)
-
tags/1.77.0/css/custom-theme/images/ui-bg_flat_0_000_40x100.png (added)
-
tags/1.77.0/css/custom-theme/images/ui-bg_flat_0_aaaaaa_40x100.png (added)
-
tags/1.77.0/css/custom-theme/images/ui-bg_flat_75_ffffff_40x100.png (added)
-
tags/1.77.0/css/custom-theme/images/ui-bg_glass_55_fbf9ee_1x400.png (added)
-
tags/1.77.0/css/custom-theme/images/ui-bg_glass_65_ffffff_1x400.png (added)
-
tags/1.77.0/css/custom-theme/images/ui-bg_glass_75_dadada_1x400.png (added)
-
tags/1.77.0/css/custom-theme/images/ui-bg_glass_75_e6e6e6_1x400.png (added)
-
tags/1.77.0/css/custom-theme/images/ui-bg_glass_95_fef1ec_1x400.png (added)
-
tags/1.77.0/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png (added)
-
tags/1.77.0/css/custom-theme/images/ui-icons_222222_256x240.png (added)
-
tags/1.77.0/css/custom-theme/images/ui-icons_2e83ff_256x240.png (added)
-
tags/1.77.0/css/custom-theme/images/ui-icons_454545_256x240.png (added)
-
tags/1.77.0/css/custom-theme/images/ui-icons_888888_256x240.png (added)
-
tags/1.77.0/css/custom-theme/images/ui-icons_cd0a0a_256x240.png (added)
-
tags/1.77.0/css/custom-theme/jquery-ui-1.9.2.custom.css (added)
-
tags/1.77.0/css/custom-theme/jquery-ui-1.9.2.custom.min.css (added)
-
tags/1.77.0/css/font-awesome.css (added)
-
tags/1.77.0/css/font-awesome.min.css (added)
-
tags/1.77.0/css/img (added)
-
tags/1.77.0/css/img/bubble.png (added)
-
tags/1.77.0/css/jquery.powertip.css (added)
-
tags/1.77.0/css/scss (added)
-
tags/1.77.0/css/scss/admin (added)
-
tags/1.77.0/css/scss/admin/components (added)
-
tags/1.77.0/css/scss/admin/components/approved-booking-email-text.scss (added)
-
tags/1.77.0/css/scss/admin/components/coupons.scss (added)
-
tags/1.77.0/css/scss/admin/components/current-custom-payment-icon.scss (added)
-
tags/1.77.0/css/scss/admin/components/custom-fields.scss (added)
-
tags/1.77.0/css/scss/admin/components/custom-payment-icon-upload.scss (added)
-
tags/1.77.0/css/scss/admin/components/custom-payments.scss (added)
-
tags/1.77.0/css/scss/admin/components/overview.scss (added)
-
tags/1.77.0/css/scss/admin/components/reg-more-items.scss (added)
-
tags/1.77.0/css/scss/admin/components/registration-cards.scss (added)
-
tags/1.77.0/css/scss/admin/components/seatreg-flower.scss (added)
-
tags/1.77.0/css/scss/admin/components/seatreg-update-notice.scss (added)
-
tags/1.77.0/css/scss/admin/components/token-box.scss (added)
-
tags/1.77.0/css/scss/admin/forms (added)
-
tags/1.77.0/css/scss/admin/forms/companion_app_form.scss (added)
-
tags/1.77.0/css/scss/admin/headers (added)
-
tags/1.77.0/css/scss/admin/headers/management-header.scss (added)
-
tags/1.77.0/css/scss/admin/loaders (added)
-
tags/1.77.0/css/scss/admin/loaders/booking-manager.scss (added)
-
tags/1.77.0/css/scss/admin/modal (added)
-
tags/1.77.0/css/scss/admin/modal/add-booking.scss (added)
-
tags/1.77.0/css/scss/admin/modal/booking-activity.scss (added)
-
tags/1.77.0/css/scss/admin/modal/booking-file.scss (added)
-
tags/1.77.0/css/scss/admin/modal/edit-booking.scss (added)
-
tags/1.77.0/css/scss/admin/modal/import-booking-finalize.scss (added)
-
tags/1.77.0/css/scss/admin/modal/import-booking.scss (added)
-
tags/1.77.0/css/scss/admin/modal/seat-id.scss (added)
-
tags/1.77.0/css/scss/admin/modal/shortcode.scss (added)
-
tags/1.77.0/css/scss/admin/seatreg_admin.scss (added)
-
tags/1.77.0/css/scss/animations.scss (added)
-
tags/1.77.0/css/scss/builder (added)
-
tags/1.77.0/css/scss/builder/modal (added)
-
tags/1.77.0/css/scss/builder/modal/bg-image.scss (added)
-
tags/1.77.0/css/scss/builder/modal/color.scss (added)
-
tags/1.77.0/css/scss/builder/modal/legends.scss (added)
-
tags/1.77.0/css/scss/builder/modal/skeleton.scss (added)
-
tags/1.77.0/css/scss/builder/seatreg_builder.scss (added)
-
tags/1.77.0/css/scss/pages (added)
-
tags/1.77.0/css/scss/pages/seatreg_pages.scss (added)
-
tags/1.77.0/css/seatreg_admin.min.css (added)
-
tags/1.77.0/css/seatreg_builder.min.css (added)
-
tags/1.77.0/css/seatreg_pages.min.css (added)
-
tags/1.77.0/css/sprites.png (added)
-
tags/1.77.0/fonts (added)
-
tags/1.77.0/fonts/FontAwesome.otf (added)
-
tags/1.77.0/fonts/fontawesome-webfont.eot (added)
-
tags/1.77.0/fonts/fontawesome-webfont.svg (added)
-
tags/1.77.0/fonts/fontawesome-webfont.ttf (added)
-
tags/1.77.0/fonts/fontawesome-webfont.woff (added)
-
tags/1.77.0/fonts/glyphicons-halflings-regular.eot (added)
-
tags/1.77.0/fonts/glyphicons-halflings-regular.svg (added)
-
tags/1.77.0/fonts/glyphicons-halflings-regular.ttf (added)
-
tags/1.77.0/fonts/glyphicons-halflings-regular.woff (added)
-
tags/1.77.0/fonts/icomoon.eot (added)
-
tags/1.77.0/fonts/icomoon.svg (added)
-
tags/1.77.0/fonts/icomoon.ttf (added)
-
tags/1.77.0/fonts/icomoon.woff (added)
-
tags/1.77.0/fonts/open-sans (added)
-
tags/1.77.0/fonts/open-sans/OpenSans-Bold.ttf (added)
-
tags/1.77.0/fonts/open-sans/OpenSans-Bold.woff2 (added)
-
tags/1.77.0/fonts/open-sans/OpenSans-Regular.ttf (added)
-
tags/1.77.0/fonts/open-sans/OpenSans-Regular.woff2 (added)
-
tags/1.77.0/fonts/open-sans/open-sans.css (added)
-
tags/1.77.0/img (added)
-
tags/1.77.0/img/ajax_loader.gif (added)
-
tags/1.77.0/img/ajax_loader_small.gif (added)
-
tags/1.77.0/img/buy-me-coffee.png (added)
-
tags/1.77.0/img/chairs_med.jpg (added)
-
tags/1.77.0/img/consider_donating.svg (added)
-
tags/1.77.0/img/donate.svg (added)
-
tags/1.77.0/img/loading.png (added)
-
tags/1.77.0/img/monkey.png (added)
-
tags/1.77.0/img/paypal.png (added)
-
tags/1.77.0/img/pdf_logo.png (added)
-
tags/1.77.0/img/quicktasker-icon.png (added)
-
tags/1.77.0/img/seatreg.png (added)
-
tags/1.77.0/img/seatreg_logo.png (added)
-
tags/1.77.0/img/setting_icon.png (added)
-
tags/1.77.0/img/stripe.png (added)
-
tags/1.77.0/js (added)
-
tags/1.77.0/js/alertify.js (added)
-
tags/1.77.0/js/bootstrap.min.js (added)
-
tags/1.77.0/js/build.js (added)
-
tags/1.77.0/js/chart.umd.min.js (added)
-
tags/1.77.0/js/date.format.js (added)
-
tags/1.77.0/js/jquery-clock-timepicker (added)
-
tags/1.77.0/js/jquery-clock-timepicker/LICENSE (added)
-
tags/1.77.0/js/jquery-clock-timepicker/README.md (added)
-
tags/1.77.0/js/jquery-clock-timepicker/index.html (added)
-
tags/1.77.0/js/jquery-clock-timepicker/jquery-clock-timepicker.js (added)
-
tags/1.77.0/js/jquery-clock-timepicker/jquery-clock-timepicker.min.js (added)
-
tags/1.77.0/js/jquery-clock-timepicker/package-lock.json (added)
-
tags/1.77.0/js/jquery-clock-timepicker/package.json (added)
-
tags/1.77.0/js/jquery-dateFormat.js (added)
-
tags/1.77.0/js/jquery-ui-multidatespicker (added)
-
tags/1.77.0/js/jquery-ui-multidatespicker/.gitignore (added)
-
tags/1.77.0/js/jquery-ui-multidatespicker/README.md (added)
-
tags/1.77.0/js/jquery-ui-multidatespicker/bower.json (added)
-
tags/1.77.0/js/jquery-ui-multidatespicker/favicon.ico (added)
-
tags/1.77.0/js/jquery-ui-multidatespicker/index.html (added)
-
tags/1.77.0/js/jquery-ui-multidatespicker/jquery-ui.multidatespicker.css (added)
-
tags/1.77.0/js/jquery-ui-multidatespicker/jquery-ui.multidatespicker.js (added)
-
tags/1.77.0/js/jquery-ui-multidatespicker/mdp-icon.png (added)
-
tags/1.77.0/js/jquery-ui-multidatespicker/package.json (added)
-
tags/1.77.0/js/jquery.easytabs.js (added)
-
tags/1.77.0/js/jquery.powertip.js (added)
-
tags/1.77.0/js/jstz-1.0.4.min.js (added)
-
tags/1.77.0/js/pg-calendar (added)
-
tags/1.77.0/js/pg-calendar/LICENSE (added)
-
tags/1.77.0/js/pg-calendar/README.md (added)
-
tags/1.77.0/js/pg-calendar/dist (added)
-
tags/1.77.0/js/pg-calendar/dist/css (added)
-
tags/1.77.0/js/pg-calendar/dist/css/pignose.calendar.css (added)
-
tags/1.77.0/js/pg-calendar/dist/css/pignose.calendar.min.css (added)
-
tags/1.77.0/js/pg-calendar/dist/fonts (added)
-
tags/1.77.0/js/pg-calendar/dist/fonts/icon_navs.eot (added)
-
tags/1.77.0/js/pg-calendar/dist/fonts/icon_navs.svg (added)
-
tags/1.77.0/js/pg-calendar/dist/fonts/icon_navs.ttf (added)
-
tags/1.77.0/js/pg-calendar/dist/fonts/icon_navs.woff (added)
-
tags/1.77.0/js/pg-calendar/dist/fonts/pignose.calendar.eot (added)
-
tags/1.77.0/js/pg-calendar/dist/fonts/pignose.calendar.svg (added)
-
tags/1.77.0/js/pg-calendar/dist/fonts/pignose.calendar.ttf (added)
-
tags/1.77.0/js/pg-calendar/dist/fonts/pignose.calendar.woff (added)
-
tags/1.77.0/js/pg-calendar/dist/js (added)
-
tags/1.77.0/js/pg-calendar/dist/js/pignose.calendar.full.js (added)
-
tags/1.77.0/js/pg-calendar/dist/js/pignose.calendar.full.min.js (added)
-
tags/1.77.0/js/pg-calendar/dist/js/pignose.calendar.js (added)
-
tags/1.77.0/js/pg-calendar/dist/js/pignose.calendar.min.js (added)
-
tags/1.77.0/js/seatreg_admin.js (added)
-
tags/1.77.0/js/seatreg_booking_check.js (added)
-
tags/1.77.0/js/selectableScroll.js (added)
-
tags/1.77.0/js/utils.js (added)
-
tags/1.77.0/js/vanilla-picker (added)
-
tags/1.77.0/js/vanilla-picker/.babelrc (added)
-
tags/1.77.0/js/vanilla-picker/.gitignore (added)
-
tags/1.77.0/js/vanilla-picker/.npmrc (added)
-
tags/1.77.0/js/vanilla-picker/CHANGELOG.md (added)
-
tags/1.77.0/js/vanilla-picker/LICENSE.md (added)
-
tags/1.77.0/js/vanilla-picker/README.md (added)
-
tags/1.77.0/js/vanilla-picker/demo (added)
-
tags/1.77.0/js/vanilla-picker/demo/destroy.html (added)
-
tags/1.77.0/js/vanilla-picker/demo/index.html (added)
-
tags/1.77.0/js/vanilla-picker/demo/main.css (added)
-
tags/1.77.0/js/vanilla-picker/demo/main.js (added)
-
tags/1.77.0/js/vanilla-picker/dist (added)
-
tags/1.77.0/js/vanilla-picker/dist/vanilla-picker.csp.css (added)
-
tags/1.77.0/js/vanilla-picker/dist/vanilla-picker.csp.js (added)
-
tags/1.77.0/js/vanilla-picker/dist/vanilla-picker.csp.min.js (added)
-
tags/1.77.0/js/vanilla-picker/dist/vanilla-picker.csp.mjs (added)
-
tags/1.77.0/js/vanilla-picker/dist/vanilla-picker.js (added)
-
tags/1.77.0/js/vanilla-picker/dist/vanilla-picker.min.js (added)
-
tags/1.77.0/js/vanilla-picker/dist/vanilla-picker.mjs (added)
-
tags/1.77.0/js/vanilla-picker/docs (added)
-
tags/1.77.0/js/vanilla-picker/docs/CNAME (added)
-
tags/1.77.0/js/vanilla-picker/docs/_config.yml (added)
-
tags/1.77.0/js/vanilla-picker/docs/assets (added)
-
tags/1.77.0/js/vanilla-picker/docs/assets/css (added)
-
tags/1.77.0/js/vanilla-picker/docs/assets/css/style.scss (added)
-
tags/1.77.0/js/vanilla-picker/docs/assets/img (added)
-
tags/1.77.0/js/vanilla-picker/docs/assets/img/steve-johnson-754951-unsplash_mod.jpg (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/Picker.html (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/classes.list.html (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/fonts (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/fonts/glyphicons-halflings-regular.eot (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/fonts/glyphicons-halflings-regular.svg (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/fonts/glyphicons-halflings-regular.ttf (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/fonts/glyphicons-halflings-regular.woff (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/fonts/glyphicons-halflings-regular.woff2 (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/img (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/img/glyphicons-halflings-white.png (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/img/glyphicons-halflings.png (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/index.html (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/quicksearch.html (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/scripts (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/scripts/docstrap.lib.js (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/scripts/fulltext-search-ui.js (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/scripts/fulltext-search.js (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/scripts/lunr.min.js (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/scripts/prettify (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/scripts/prettify/Apache-License-2.0.txt (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/scripts/prettify/jquery.min.js (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/scripts/prettify/lang-css.js (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/scripts/prettify/prettify.js (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/scripts/sunlight.js (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/scripts/toc.js (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/styles (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/styles/darkstrap.css (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/styles/prettify-tomorrow.css (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/styles/site.cerulean.css (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/styles/site.cosmo.css (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/styles/site.cyborg.css (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/styles/site.darkly.css (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/styles/site.darkstrap.css (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/styles/site.dibs-bootstrap.css (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/styles/site.flatly.css (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/styles/site.journal.css (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/styles/site.lumen.css (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/styles/site.paper.css (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/styles/site.readable.css (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/styles/site.sandstone.css (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/styles/site.simplex.css (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/styles/site.slate.css (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/styles/site.spacelab.css (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/styles/site.superhero.css (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/styles/site.united.css (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/styles/site.yeti.css (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/styles/sunlight.dark.css (added)
-
tags/1.77.0/js/vanilla-picker/docs/gen/styles/sunlight.default.css (added)
-
tags/1.77.0/js/vanilla-picker/docs/index.md (added)
-
tags/1.77.0/js/vanilla-picker/docs/jsdoc.json (added)
-
tags/1.77.0/js/vanilla-picker/gulpfile.babel.js (added)
-
tags/1.77.0/js/vanilla-picker/package.json (added)
-
tags/1.77.0/js/vanilla-picker/scripts (added)
-
tags/1.77.0/js/vanilla-picker/scripts/postpub.sh (added)
-
tags/1.77.0/js/vanilla-picker/scripts/prepub.sh (added)
-
tags/1.77.0/js/vanilla-picker/src (added)
-
tags/1.77.0/js/vanilla-picker/src/css (added)
-
tags/1.77.0/js/vanilla-picker/src/css/_components.scss (added)
-
tags/1.77.0/js/vanilla-picker/src/css/_globals.scss (added)
-
tags/1.77.0/js/vanilla-picker/src/css/_layout.scss (added)
-
tags/1.77.0/js/vanilla-picker/src/css/_popup.scss (added)
-
tags/1.77.0/js/vanilla-picker/src/index.d.ts (added)
-
tags/1.77.0/js/vanilla-picker/src/index.js (added)
-
tags/1.77.0/js/vanilla-picker/src/index.pug (added)
-
tags/1.77.0/js/vanilla-picker/src/index.scss (added)
-
tags/1.77.0/js/vanilla-picker/src/js (added)
-
tags/1.77.0/js/vanilla-picker/src/js/picker.js (added)
-
tags/1.77.0/js/vanilla-picker/src/js/utils.js (added)
-
tags/1.77.0/php (added)
-
tags/1.77.0/php/SeatregBooking.php (added)
-
tags/1.77.0/php/SeatregConfirmBooking.php (added)
-
tags/1.77.0/php/SeatregDataValidation.php (added)
-
tags/1.77.0/php/SeatregJsonResponse.php (added)
-
tags/1.77.0/php/SeatregSubmitBookings.php (added)
-
tags/1.77.0/php/bookings (added)
-
tags/1.77.0/php/bookings/SeatregBookingPDF.php (added)
-
tags/1.77.0/php/bookings/SeatregBookingsCSV.php (added)
-
tags/1.77.0/php/bookings/SeatregBookingsFile.php (added)
-
tags/1.77.0/php/bookings/SeatregBookingsPDF.php (added)
-
tags/1.77.0/php/bookings/SeatregBookingsTxt.php (added)
-
tags/1.77.0/php/bookings/SeatregBookingsXlsx.php (added)
-
tags/1.77.0/php/bookings/index.php (added)
-
tags/1.77.0/php/constants.php (added)
-
tags/1.77.0/php/emails.php (added)
-
tags/1.77.0/php/enqueue_admin.php (added)
-
tags/1.77.0/php/enqueue_public.php (added)
-
tags/1.77.0/php/index.php (added)
-
tags/1.77.0/php/libs (added)
-
tags/1.77.0/php/libs/phpqrcode (added)
-
tags/1.77.0/php/libs/phpqrcode/CHANGELOG (added)
-
tags/1.77.0/php/libs/phpqrcode/INSTALL (added)
-
tags/1.77.0/php/libs/phpqrcode/LICENSE (added)
-
tags/1.77.0/php/libs/phpqrcode/README (added)
-
tags/1.77.0/php/libs/phpqrcode/VERSION (added)
-
tags/1.77.0/php/libs/phpqrcode/bindings (added)
-
tags/1.77.0/php/libs/phpqrcode/bindings/tcpdf (added)
-
tags/1.77.0/php/libs/phpqrcode/bindings/tcpdf/qrcode.php (added)
-
tags/1.77.0/php/libs/phpqrcode/cache (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_1.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_10.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_10.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_11.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_11.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_12.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_12.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_13.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_13.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_14.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_14.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_15.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_15.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_16.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_16.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_17.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_17.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_18.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_18.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_19.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_19.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_2.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_20.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_20.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_21.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_21.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_22.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_22.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_23.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_23.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_24.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_24.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_25.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_25.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_26.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_26.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_27.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_27.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_28.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_28.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_29.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_29.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_3.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_30.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_30.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_31.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_31.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_32.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_32.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_33.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_33.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_34.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_34.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_35.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_35.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_36.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_36.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_37.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_37.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_38.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_38.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_39.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_39.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_4.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_40.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_40.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_5.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_6.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_7.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_8.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_8.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_9.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/frame_9.png (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0 (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_101_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_105_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_109_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_113_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_117_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_121_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_125_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_129_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_133_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_137_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_141_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_145_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_149_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_153_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_157_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_161_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_165_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_169_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_173_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_177_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_21_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_25_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_29_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_33_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_37_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_41_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_45_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_49_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_53_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_57_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_61_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_65_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_69_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_73_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_77_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_81_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_85_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_89_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_93_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_0/mask_97_0.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1 (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_101_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_105_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_109_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_113_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_117_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_121_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_125_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_129_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_133_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_137_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_141_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_145_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_149_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_153_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_157_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_161_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_165_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_169_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_173_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_177_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_21_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_25_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_29_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_33_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_37_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_41_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_45_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_49_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_53_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_57_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_61_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_65_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_69_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_73_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_77_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_81_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_85_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_89_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_93_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_1/mask_97_1.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2 (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_101_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_105_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_109_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_113_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_117_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_121_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_125_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_129_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_133_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_137_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_141_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_145_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_149_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_153_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_157_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_161_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_165_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_169_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_173_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_177_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_21_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_25_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_29_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_33_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_37_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_41_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_45_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_49_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_53_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_57_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_61_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_65_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_69_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_73_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_77_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_81_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_85_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_89_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_93_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_2/mask_97_2.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3 (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_101_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_105_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_109_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_113_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_117_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_121_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_125_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_129_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_133_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_137_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_141_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_145_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_149_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_153_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_157_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_161_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_165_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_169_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_173_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_177_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_21_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_25_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_29_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_33_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_37_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_41_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_45_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_49_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_53_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_57_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_61_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_65_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_69_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_73_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_77_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_81_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_85_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_89_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_93_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_3/mask_97_3.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4 (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_101_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_105_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_109_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_113_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_117_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_121_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_125_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_129_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_133_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_137_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_141_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_145_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_149_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_153_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_157_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_161_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_165_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_169_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_173_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_177_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_21_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_25_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_29_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_33_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_37_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_41_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_45_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_49_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_53_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_57_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_61_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_65_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_69_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_73_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_77_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_81_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_85_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_89_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_93_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_4/mask_97_4.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5 (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_101_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_105_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_109_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_113_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_117_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_121_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_125_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_129_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_133_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_137_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_141_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_145_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_149_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_153_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_157_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_161_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_165_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_169_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_173_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_177_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_21_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_25_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_29_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_33_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_37_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_41_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_45_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_49_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_53_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_57_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_61_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_65_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_69_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_73_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_77_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_81_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_85_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_89_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_93_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_5/mask_97_5.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6 (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_101_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_105_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_109_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_113_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_117_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_121_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_125_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_129_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_133_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_137_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_141_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_145_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_149_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_153_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_157_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_161_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_165_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_169_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_173_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_177_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_21_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_25_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_29_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_33_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_37_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_41_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_45_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_49_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_53_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_57_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_61_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_65_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_69_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_73_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_77_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_81_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_85_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_89_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_93_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_6/mask_97_6.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7 (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_101_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_105_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_109_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_113_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_117_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_121_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_125_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_129_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_133_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_137_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_141_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_145_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_149_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_153_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_157_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_161_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_165_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_169_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_173_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_177_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_21_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_25_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_29_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_33_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_37_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_41_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_45_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_49_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_53_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_57_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_61_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_65_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_69_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_73_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_77_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_81_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_85_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_89_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_93_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/cache/mask_7/mask_97_7.dat (added)
-
tags/1.77.0/php/libs/phpqrcode/index.php (added)
-
tags/1.77.0/php/libs/phpqrcode/phpqrcode.php (added)
-
tags/1.77.0/php/libs/phpqrcode/qrbitstream.php (added)
-
tags/1.77.0/php/libs/phpqrcode/qrconfig.php (added)
-
tags/1.77.0/php/libs/phpqrcode/qrconst.php (added)
-
tags/1.77.0/php/libs/phpqrcode/qrencode.php (added)
-
tags/1.77.0/php/libs/phpqrcode/qrimage.php (added)
-
tags/1.77.0/php/libs/phpqrcode/qrinput.php (added)
-
tags/1.77.0/php/libs/phpqrcode/qrlib.php (added)
-
tags/1.77.0/php/libs/phpqrcode/qrmask.php (added)
-
tags/1.77.0/php/libs/phpqrcode/qrrscode.php (added)
-
tags/1.77.0/php/libs/phpqrcode/qrspec.php (added)
-
tags/1.77.0/php/libs/phpqrcode/qrsplit.php (added)
-
tags/1.77.0/php/libs/phpqrcode/qrtools.php (added)
-
tags/1.77.0/php/libs/phpqrcode/tools (added)
-
tags/1.77.0/php/libs/phpqrcode/tools/merge.bat (added)
-
tags/1.77.0/php/libs/phpqrcode/tools/merge.php (added)
-
tags/1.77.0/php/libs/phpqrcode/tools/merge.sh (added)
-
tags/1.77.0/php/libs/phpqrcode/tools/merged_config.php (added)
-
tags/1.77.0/php/libs/phpqrcode/tools/merged_header.php (added)
-
tags/1.77.0/php/libs/stripe-php (added)
-
tags/1.77.0/php/libs/stripe-php/.editorconfig (added)
-
tags/1.77.0/php/libs/stripe-php/.gitignore (added)
-
tags/1.77.0/php/libs/stripe-php/.php-cs-fixer.php (added)
-
tags/1.77.0/php/libs/stripe-php/CHANGELOG.md (added)
-
tags/1.77.0/php/libs/stripe-php/CODE_OF_CONDUCT.md (added)
-
tags/1.77.0/php/libs/stripe-php/LICENSE (added)
-
tags/1.77.0/php/libs/stripe-php/Makefile (added)
-
tags/1.77.0/php/libs/stripe-php/OPENAPI_VERSION (added)
-
tags/1.77.0/php/libs/stripe-php/README.md (added)
-
tags/1.77.0/php/libs/stripe-php/VERSION (added)
-
tags/1.77.0/php/libs/stripe-php/build.php (added)
-
tags/1.77.0/php/libs/stripe-php/composer.json (added)
-
tags/1.77.0/php/libs/stripe-php/data (added)
-
tags/1.77.0/php/libs/stripe-php/data/ca-certificates.crt (added)
-
tags/1.77.0/php/libs/stripe-php/init.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Account.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/AccountLink.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/AlipayAccount.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/ApiOperations (added)
-
tags/1.77.0/php/libs/stripe-php/lib/ApiOperations/All.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/ApiOperations/Create.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/ApiOperations/Delete.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/ApiOperations/NestedResource.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/ApiOperations/Request.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/ApiOperations/Retrieve.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/ApiOperations/Search.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/ApiOperations/Update.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/ApiRequestor.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/ApiResource.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/ApiResponse.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/ApplePayDomain.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/ApplicationFee.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/ApplicationFeeRefund.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Apps (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Apps/Secret.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Balance.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/BalanceTransaction.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/BankAccount.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/BaseStripeClient.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/BaseStripeClientInterface.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/BillingPortal (added)
-
tags/1.77.0/php/libs/stripe-php/lib/BillingPortal/Configuration.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/BillingPortal/Session.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/BitcoinReceiver.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/BitcoinTransaction.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Capability.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Card.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/CashBalance.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Charge.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Checkout (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Checkout/Session.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Collection.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/CountrySpec.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Coupon.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/CreditNote.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/CreditNoteLineItem.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Customer.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/CustomerBalanceTransaction.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Discount.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Dispute.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/EphemeralKey.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/ErrorObject.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Event.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Exception (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Exception/ApiConnectionException.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Exception/ApiErrorException.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Exception/AuthenticationException.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Exception/BadMethodCallException.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Exception/CardException.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Exception/ExceptionInterface.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Exception/IdempotencyException.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Exception/InvalidArgumentException.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Exception/InvalidRequestException.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Exception/OAuth (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Exception/OAuth/ExceptionInterface.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Exception/OAuth/InvalidClientException.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Exception/OAuth/InvalidGrantException.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Exception/OAuth/InvalidRequestException.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Exception/OAuth/InvalidScopeException.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Exception/OAuth/OAuthErrorException.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Exception/OAuth/UnknownOAuthErrorException.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Exception/OAuth/UnsupportedGrantTypeException.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Exception/OAuth/UnsupportedResponseTypeException.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Exception/PermissionException.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Exception/RateLimitException.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Exception/SignatureVerificationException.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Exception/UnexpectedValueException.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Exception/UnknownApiErrorException.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/ExchangeRate.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/File.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/FileLink.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/FinancialConnections (added)
-
tags/1.77.0/php/libs/stripe-php/lib/FinancialConnections/Account.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/FinancialConnections/AccountOwner.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/FinancialConnections/AccountOwnership.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/FinancialConnections/Session.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/FundingInstructions.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/HttpClient (added)
-
tags/1.77.0/php/libs/stripe-php/lib/HttpClient/ClientInterface.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/HttpClient/CurlClient.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/HttpClient/StreamingClientInterface.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Identity (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Identity/VerificationReport.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Identity/VerificationSession.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Invoice.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/InvoiceItem.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/InvoiceLineItem.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Issuing (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Issuing/Authorization.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Issuing/Card.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Issuing/CardDetails.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Issuing/Cardholder.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Issuing/Dispute.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Issuing/Transaction.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/LineItem.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/LoginLink.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Mandate.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/OAuth.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/OAuthErrorObject.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Order.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/OrderItem.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/PaymentIntent.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/PaymentLink.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/PaymentMethod.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Payout.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Person.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Plan.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Price.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Product.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/PromotionCode.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Quote.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Radar (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Radar/EarlyFraudWarning.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Radar/ValueList.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Radar/ValueListItem.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Recipient.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/RecipientTransfer.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Refund.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Reporting (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Reporting/ReportRun.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Reporting/ReportType.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/RequestTelemetry.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Review.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/SKU.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/SearchResult.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/AbstractService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/AbstractServiceFactory.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/AccountLinkService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/AccountService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/ApplePayDomainService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/ApplicationFeeService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Apps (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Apps/AppsServiceFactory.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Apps/SecretService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/BalanceService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/BalanceTransactionService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/BillingPortal (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/BillingPortal/BillingPortalServiceFactory.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/BillingPortal/ConfigurationService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/BillingPortal/SessionService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/ChargeService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Checkout (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Checkout/CheckoutServiceFactory.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Checkout/SessionService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/CoreServiceFactory.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/CountrySpecService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/CouponService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/CreditNoteService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/CustomerService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/DisputeService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/EphemeralKeyService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/EventService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/ExchangeRateService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/FileLinkService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/FileService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/FinancialConnections (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/FinancialConnections/AccountService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/FinancialConnections/FinancialConnectionsServiceFactory.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/FinancialConnections/SessionService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Identity (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Identity/IdentityServiceFactory.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Identity/VerificationReportService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Identity/VerificationSessionService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/InvoiceItemService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/InvoiceService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Issuing (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Issuing/AuthorizationService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Issuing/CardService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Issuing/CardholderService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Issuing/DisputeService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Issuing/IssuingServiceFactory.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Issuing/TransactionService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/MandateService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/OAuthService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/OrderService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/PaymentIntentService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/PaymentLinkService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/PaymentMethodService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/PayoutService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/PlanService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/PriceService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/ProductService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/PromotionCodeService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/QuoteService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Radar (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Radar/EarlyFraudWarningService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Radar/RadarServiceFactory.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Radar/ValueListItemService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Radar/ValueListService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/RefundService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Reporting (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Reporting/ReportRunService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Reporting/ReportTypeService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Reporting/ReportingServiceFactory.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/ReviewService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/SetupAttemptService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/SetupIntentService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/ShippingRateService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Sigma (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Sigma/ScheduledQueryRunService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Sigma/SigmaServiceFactory.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/SkuService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/SourceService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/SubscriptionItemService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/SubscriptionScheduleService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/SubscriptionService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/TaxCodeService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/TaxRateService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Terminal (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Terminal/ConfigurationService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Terminal/ConnectionTokenService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Terminal/LocationService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Terminal/ReaderService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Terminal/TerminalServiceFactory.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/TestHelpers (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/TestHelpers/CustomerService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/TestHelpers/Issuing (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/TestHelpers/Issuing/CardService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/TestHelpers/Issuing/IssuingServiceFactory.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/TestHelpers/RefundService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/TestHelpers/Terminal (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/TestHelpers/Terminal/ReaderService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/TestHelpers/Terminal/TerminalServiceFactory.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/TestHelpers/TestClockService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/TestHelpers/TestHelpersServiceFactory.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/TestHelpers/Treasury (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/TestHelpers/Treasury/InboundTransferService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/TestHelpers/Treasury/OutboundPaymentService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/TestHelpers/Treasury/OutboundTransferService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/TestHelpers/Treasury/ReceivedCreditService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/TestHelpers/Treasury/ReceivedDebitService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/TestHelpers/Treasury/TreasuryServiceFactory.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/TokenService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/TopupService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/TransferService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Treasury (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Treasury/CreditReversalService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Treasury/DebitReversalService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Treasury/FinancialAccountService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Treasury/InboundTransferService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Treasury/OutboundPaymentService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Treasury/OutboundTransferService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Treasury/ReceivedCreditService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Treasury/ReceivedDebitService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Treasury/TransactionEntryService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Treasury/TransactionService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/Treasury/TreasuryServiceFactory.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Service/WebhookEndpointService.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/SetupAttempt.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/SetupIntent.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/ShippingRate.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Sigma (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Sigma/ScheduledQueryRun.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/SingletonApiResource.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Source.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/SourceTransaction.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Stripe.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/StripeClient.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/StripeClientInterface.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/StripeObject.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/StripeStreamingClientInterface.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Subscription.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/SubscriptionItem.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/SubscriptionSchedule.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/TaxCode.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/TaxId.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/TaxRate.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Terminal (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Terminal/Configuration.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Terminal/ConnectionToken.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Terminal/Location.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Terminal/Reader.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/TestHelpers (added)
-
tags/1.77.0/php/libs/stripe-php/lib/TestHelpers/TestClock.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/ThreeDSecure.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Token.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Topup.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Transfer.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/TransferReversal.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Treasury (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Treasury/CreditReversal.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Treasury/DebitReversal.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Treasury/FinancialAccount.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Treasury/FinancialAccountFeatures.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Treasury/InboundTransfer.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Treasury/OutboundPayment.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Treasury/OutboundTransfer.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Treasury/ReceivedCredit.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Treasury/ReceivedDebit.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Treasury/Transaction.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Treasury/TransactionEntry.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/UsageRecord.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/UsageRecordSummary.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Util (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Util/ApiVersion.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Util/CaseInsensitiveArray.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Util/DefaultLogger.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Util/LoggerInterface.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Util/ObjectTypes.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Util/RandomGenerator.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Util/RequestOptions.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Util/Set.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Util/Util.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/Webhook.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/WebhookEndpoint.php (added)
-
tags/1.77.0/php/libs/stripe-php/lib/WebhookSignature.php (added)
-
tags/1.77.0/php/libs/stripe-php/phpdoc.dist.xml (added)
-
tags/1.77.0/php/libs/stripe-php/phpstan-baseline.neon (added)
-
tags/1.77.0/php/libs/stripe-php/phpstan.neon.dist (added)
-
tags/1.77.0/php/libs/stripe-php/update_certs.php (added)
-
tags/1.77.0/php/libs/tfpdf (added)
-
tags/1.77.0/php/libs/tfpdf/HelloWorld.txt (added)
-
tags/1.77.0/php/libs/tfpdf/README.txt (added)
-
tags/1.77.0/php/libs/tfpdf/ex.pdf (added)
-
tags/1.77.0/php/libs/tfpdf/ex.php (added)
-
tags/1.77.0/php/libs/tfpdf/font (added)
-
tags/1.77.0/php/libs/tfpdf/font/courier.php (added)
-
tags/1.77.0/php/libs/tfpdf/font/courierb.php (added)
-
tags/1.77.0/php/libs/tfpdf/font/courierbi.php (added)
-
tags/1.77.0/php/libs/tfpdf/font/courieri.php (added)
-
tags/1.77.0/php/libs/tfpdf/font/helvetica.php (added)
-
tags/1.77.0/php/libs/tfpdf/font/helveticab.php (added)
-
tags/1.77.0/php/libs/tfpdf/font/helveticabi.php (added)
-
tags/1.77.0/php/libs/tfpdf/font/helveticai.php (added)
-
tags/1.77.0/php/libs/tfpdf/font/symbol.php (added)
-
tags/1.77.0/php/libs/tfpdf/font/times.php (added)
-
tags/1.77.0/php/libs/tfpdf/font/timesb.php (added)
-
tags/1.77.0/php/libs/tfpdf/font/timesbi.php (added)
-
tags/1.77.0/php/libs/tfpdf/font/timesi.php (added)
-
tags/1.77.0/php/libs/tfpdf/font/unifont (added)
-
tags/1.77.0/php/libs/tfpdf/font/unifont/DejaVuSans-Bold.ttf (added)
-
tags/1.77.0/php/libs/tfpdf/font/unifont/DejaVuSans-BoldOblique.ttf (added)
-
tags/1.77.0/php/libs/tfpdf/font/unifont/DejaVuSans-ExtraLight.ttf (added)
-
tags/1.77.0/php/libs/tfpdf/font/unifont/DejaVuSans-Oblique.ttf (added)
-
tags/1.77.0/php/libs/tfpdf/font/unifont/DejaVuSans.ttf (added)
-
tags/1.77.0/php/libs/tfpdf/font/unifont/DejaVuSansCondensed-Bold.ttf (added)
-
tags/1.77.0/php/libs/tfpdf/font/unifont/DejaVuSansCondensed-BoldOblique.ttf (added)
-
tags/1.77.0/php/libs/tfpdf/font/unifont/DejaVuSansCondensed-Oblique.ttf (added)
-
tags/1.77.0/php/libs/tfpdf/font/unifont/DejaVuSansCondensed.ttf (added)
-
tags/1.77.0/php/libs/tfpdf/font/unifont/DejaVuSansMono-Bold.ttf (added)
-
tags/1.77.0/php/libs/tfpdf/font/unifont/DejaVuSansMono-BoldOblique.ttf (added)
-
tags/1.77.0/php/libs/tfpdf/font/unifont/DejaVuSansMono-Oblique.ttf (added)
-
tags/1.77.0/php/libs/tfpdf/font/unifont/DejaVuSansMono.ttf (added)
-
tags/1.77.0/php/libs/tfpdf/font/unifont/DejaVuSerif-Bold.ttf (added)
-
tags/1.77.0/php/libs/tfpdf/font/unifont/DejaVuSerif-BoldItalic.ttf (added)
-
tags/1.77.0/php/libs/tfpdf/font/unifont/DejaVuSerif-Italic.ttf (added)
-
tags/1.77.0/php/libs/tfpdf/font/unifont/DejaVuSerif.ttf (added)
-
tags/1.77.0/php/libs/tfpdf/font/unifont/DejaVuSerifCondensed-Bold.ttf (added)
-
tags/1.77.0/php/libs/tfpdf/font/unifont/DejaVuSerifCondensed-BoldItalic.ttf (added)
-
tags/1.77.0/php/libs/tfpdf/font/unifont/DejaVuSerifCondensed-Italic.ttf (added)
-
tags/1.77.0/php/libs/tfpdf/font/unifont/DejaVuSerifCondensed.ttf (added)
-
tags/1.77.0/php/libs/tfpdf/font/unifont/DejaVu_LICENSE.txt (added)
-
tags/1.77.0/php/libs/tfpdf/font/unifont/ttfonts.php (added)
-
tags/1.77.0/php/libs/tfpdf/font/zapfdingbats.php (added)
-
tags/1.77.0/php/libs/tfpdf/info.htm (added)
-
tags/1.77.0/php/libs/tfpdf/tfpdf.php (added)
-
tags/1.77.0/php/libs/xlsxwriter.class.php (added)
-
tags/1.77.0/php/migrations (added)
-
tags/1.77.0/php/migrations/SeatregBackfillStripeWebhookUrlMigration.php (added)
-
tags/1.77.0/php/migrations/SeatregEncryptStripeCredentialsMigration.php (added)
-
tags/1.77.0/php/migrations/SeatregMigrationsRunner.php (added)
-
tags/1.77.0/php/migrations/index.php (added)
-
tags/1.77.0/php/pages (added)
-
tags/1.77.0/php/pages/booking_confirm.php (added)
-
tags/1.77.0/php/pages/booking_pdf.php (added)
-
tags/1.77.0/php/pages/booking_status.php (added)
-
tags/1.77.0/php/pages/index.php (added)
-
tags/1.77.0/php/payment (added)
-
tags/1.77.0/php/payment/SeatregPaymentBase.php (added)
-
tags/1.77.0/php/payment/index.php (added)
-
tags/1.77.0/php/payment/paypal (added)
-
tags/1.77.0/php/payment/paypal-rest (added)
-
tags/1.77.0/php/payment/paypal-rest/SeatregPayPalPayment.php (added)
-
tags/1.77.0/php/payment/paypal-rest/capture-paypal-order.php (added)
-
tags/1.77.0/php/payment/paypal-rest/create-paypal-order.php (added)
-
tags/1.77.0/php/payment/paypal-rest/index.php (added)
-
tags/1.77.0/php/payment/paypal-rest/paypal-webhook-receiver.php (added)
-
tags/1.77.0/php/payment/paypal/SeatregPayPalIpn.php (added)
-
tags/1.77.0/php/payment/paypal/index.php (added)
-
tags/1.77.0/php/payment/paypal/paypal_ipn_receiver.php (added)
-
tags/1.77.0/php/payment/return_to_merchant.php (added)
-
tags/1.77.0/php/payment/stripe (added)
-
tags/1.77.0/php/payment/stripe/SeatregStripePayment.php (added)
-
tags/1.77.0/php/payment/stripe/create-checkout-session.php (added)
-
tags/1.77.0/php/payment/stripe/index.php (added)
-
tags/1.77.0/php/payment/stripe/stripe-webhook-receiver.php (added)
-
tags/1.77.0/php/public_api.php (added)
-
tags/1.77.0/php/repositories (added)
-
tags/1.77.0/php/repositories/SeatregActivityLogRepository.php (added)
-
tags/1.77.0/php/repositories/SeatregApiTokenRepository.php (added)
-
tags/1.77.0/php/repositories/SeatregBookingRepository.php (added)
-
tags/1.77.0/php/repositories/SeatregCompanionAppRepository.php (added)
-
tags/1.77.0/php/repositories/SeatregCouponRepository.php (added)
-
tags/1.77.0/php/repositories/SeatregOptionsRepository.php (added)
-
tags/1.77.0/php/repositories/SeatregPaymentLogRepository.php (added)
-
tags/1.77.0/php/repositories/SeatregPaymentRepository.php (added)
-
tags/1.77.0/php/repositories/SeatregRegistrationRepository.php (added)
-
tags/1.77.0/php/repositories/SeatregTimeRepository.php (added)
-
tags/1.77.0/php/repositories/SeatregUploadsRepository.php (added)
-
tags/1.77.0/php/repositories/index.php (added)
-
tags/1.77.0/php/seatreg_actions.php (added)
-
tags/1.77.0/php/seatreg_admin_panel.php (added)
-
tags/1.77.0/php/seatreg_filters.php (added)
-
tags/1.77.0/php/seatreg_functions.php (added)
-
tags/1.77.0/php/seatreg_no_cache.php (added)
-
tags/1.77.0/php/seatreg_shortcode.php (added)
-
tags/1.77.0/php/seatreg_strings.php (added)
-
tags/1.77.0/php/services (added)
-
tags/1.77.0/php/services/SeatregActionsService.php (added)
-
tags/1.77.0/php/services/SeatregAuthService.php (added)
-
tags/1.77.0/php/services/SeatregBookingService.php (added)
-
tags/1.77.0/php/services/SeatregCSVService.php (added)
-
tags/1.77.0/php/services/SeatregCalendarService.php (added)
-
tags/1.77.0/php/services/SeatregCompanionAppService.php (added)
-
tags/1.77.0/php/services/SeatregCouponService.php (added)
-
tags/1.77.0/php/services/SeatregCustomFieldService.php (added)
-
tags/1.77.0/php/services/SeatregEmailTemplateService.php (added)
-
tags/1.77.0/php/services/SeatregEncryptionService.php (added)
-
tags/1.77.0/php/services/SeatregImageCopyService.php (added)
-
tags/1.77.0/php/services/SeatregImageDeleteService.php (added)
-
tags/1.77.0/php/services/SeatregImageUploadService.php (added)
-
tags/1.77.0/php/services/SeatregImportService.php (added)
-
tags/1.77.0/php/services/SeatregJobService.php (added)
-
tags/1.77.0/php/services/SeatregLayoutService.php (added)
-
tags/1.77.0/php/services/SeatregLinksService.php (added)
-
tags/1.77.0/php/services/SeatregOptionsService.php (added)
-
tags/1.77.0/php/services/SeatregPayPalApiService.php (added)
-
tags/1.77.0/php/services/SeatregPayPalWebhooksService.php (added)
-
tags/1.77.0/php/services/SeatregPaymentLogService.php (added)
-
tags/1.77.0/php/services/SeatregPaymentService.php (added)
-
tags/1.77.0/php/services/SeatregPublicApiService.php (added)
-
tags/1.77.0/php/services/SeatregPublicPageService.php (added)
-
tags/1.77.0/php/services/SeatregQRCodeService.php (added)
-
tags/1.77.0/php/services/SeatregRandomGenerator.php (added)
-
tags/1.77.0/php/services/SeatregRegistrationService.php (added)
-
tags/1.77.0/php/services/SeatregRegistrationStatusService.php (added)
-
tags/1.77.0/php/services/SeatregSanitizationService.php (added)
-
tags/1.77.0/php/services/SeatregStringTranslationService.php (added)
-
tags/1.77.0/php/services/SeatregTemplateService.php (added)
-
tags/1.77.0/php/services/SeatregTerminologyService.php (added)
-
tags/1.77.0/php/services/SeatregTimeService.php (added)
-
tags/1.77.0/php/services/StripeWebhooksService.php (added)
-
tags/1.77.0/php/services/index.php (added)
-
tags/1.77.0/php/templates (added)
-
tags/1.77.0/php/templates/email (added)
-
tags/1.77.0/php/templates/email/base.html (added)
-
tags/1.77.0/php/templates/email/index.php (added)
-
tags/1.77.0/php/templates/email/mjml (added)
-
tags/1.77.0/php/templates/email/mjml/base.mjml (added)
-
tags/1.77.0/php/templates/index.php (added)
-
tags/1.77.0/php/util (added)
-
tags/1.77.0/php/util/index.php (added)
-
tags/1.77.0/php/util/registration_time_status.php (added)
-
tags/1.77.0/php/views (added)
-
tags/1.77.0/php/views/buttons (added)
-
tags/1.77.0/php/views/buttons/index.php (added)
-
tags/1.77.0/php/views/buttons/view-booking-activity-btn.php (added)
-
tags/1.77.0/php/views/forms (added)
-
tags/1.77.0/php/views/forms/create-registration-form.php (added)
-
tags/1.77.0/php/views/forms/delete-registration-form.php (added)
-
tags/1.77.0/php/views/forms/index.php (added)
-
tags/1.77.0/php/views/index.php (added)
-
tags/1.77.0/php/views/modals (added)
-
tags/1.77.0/php/views/modals/add-booking-modal.php (added)
-
tags/1.77.0/php/views/modals/booking-activity-modal.php (added)
-
tags/1.77.0/php/views/modals/booking-edit-modal.php (added)
-
tags/1.77.0/php/views/modals/bookings-file-modal.php (added)
-
tags/1.77.0/php/views/modals/copy-registration-modal.php (added)
-
tags/1.77.0/php/views/modals/import-bookings-finalization-modal.php (added)
-
tags/1.77.0/php/views/modals/import-bookings-modal.php (added)
-
tags/1.77.0/php/views/modals/index.php (added)
-
tags/1.77.0/php/views/modals/more-items-modal.php (added)
-
tags/1.77.0/php/views/modals/registration-logs-modal.php (added)
-
tags/1.77.0/php/views/modals/seat-id-modal.php (added)
-
tags/1.77.0/php/views/modals/seat-price-modal.php (added)
-
tags/1.77.0/php/views/modals/shortcode-modal.php (added)
-
tags/1.77.0/php/views/parts (added)
-
tags/1.77.0/php/views/parts/donation-flowers.php (added)
-
tags/1.77.0/php/views/parts/donation-panel.php (added)
-
tags/1.77.0/php/views/parts/index.php (added)
-
tags/1.77.0/php/views/parts/registration-card.php (added)
-
tags/1.77.0/php/views/parts/update-notice.php (added)
-
tags/1.77.0/php/views/sections (added)
-
tags/1.77.0/php/views/sections/approved-booking-email-text.php (added)
-
tags/1.77.0/php/views/sections/builder_content.php (added)
-
tags/1.77.0/php/views/sections/index.php (added)
-
tags/1.77.0/php/views/sections/overview.php (added)
-
tags/1.77.0/readme.txt (added)
-
tags/1.77.0/registration (added)
-
tags/1.77.0/registration/css (added)
-
tags/1.77.0/registration/css/ajax_loader.gif (added)
-
tags/1.77.0/registration/css/font-awesome.min.css (added)
-
tags/1.77.0/registration/css/index.scss (added)
-
tags/1.77.0/registration/css/jquery.powertip.css (added)
-
tags/1.77.0/registration/css/registration-5f5ca6854e.min.css (added)
-
tags/1.77.0/registration/css/registration.scss (added)
-
tags/1.77.0/registration/css/registrationsprite.png (added)
-
tags/1.77.0/registration/fonts (added)
-
tags/1.77.0/registration/fonts/FontAwesome.otf (added)
-
tags/1.77.0/registration/fonts/calibri.ttf (added)
-
tags/1.77.0/registration/fonts/fontawesome-webfont.eot (added)
-
tags/1.77.0/registration/fonts/fontawesome-webfont.svg (added)
-
tags/1.77.0/registration/fonts/fontawesome-webfont.ttf (added)
-
tags/1.77.0/registration/fonts/fontawesome-webfont.woff (added)
-
tags/1.77.0/registration/fonts/glyphicons-halflings-regular.eot (added)
-
tags/1.77.0/registration/fonts/glyphicons-halflings-regular.svg (added)
-
tags/1.77.0/registration/fonts/glyphicons-halflings-regular.ttf (added)
-
tags/1.77.0/registration/fonts/glyphicons-halflings-regular.woff (added)
-
tags/1.77.0/registration/fonts/icomoon.eot (added)
-
tags/1.77.0/registration/fonts/icomoon.svg (added)
-
tags/1.77.0/registration/fonts/icomoon.ttf (added)
-
tags/1.77.0/registration/fonts/icomoon.woff (added)
-
tags/1.77.0/registration/img (added)
-
tags/1.77.0/registration/img/seatreg_faceb.png (added)
-
tags/1.77.0/registration/index.php (added)
-
tags/1.77.0/registration/js (added)
-
tags/1.77.0/registration/js/date.format.js (added)
-
tags/1.77.0/registration/js/iscroll-zoom.js (added)
-
tags/1.77.0/registration/js/modernizr.custom.89593.min.js (added)
-
tags/1.77.0/registration/js/registration.js (added)
-
tags/1.77.0/registration/noscript.html (added)
-
tags/1.77.0/registration/php (added)
-
tags/1.77.0/registration/php/index.php (added)
-
tags/1.77.0/registration/php/reg_functions.php (added)
-
tags/1.77.0/rev-manifest.json (added)
-
tags/1.77.0/seatreg.php (added)
-
trunk/css/scss/admin/components/overview.scss (added)
-
trunk/css/scss/admin/components/seatreg-flower.scss (modified) (2 diffs)
-
trunk/css/scss/admin/seatreg_admin.scss (modified) (75 diffs)
-
trunk/css/seatreg_admin.min.css (modified) (1 diff)
-
trunk/js/build.js (modified) (21 diffs)
-
trunk/js/chart.umd.min.js (added)
-
trunk/js/seatreg_admin.js (modified) (24 diffs)
-
trunk/js/utils.js (modified) (1 diff)
-
trunk/php/SeatregBooking.php (modified) (7 diffs)
-
trunk/php/SeatregDataValidation.php (modified) (1 diff)
-
trunk/php/bookings/SeatregBookingPDF.php (modified) (3 diffs)
-
trunk/php/bookings/SeatregBookingsFile.php (modified) (2 diffs)
-
trunk/php/bookings/SeatregBookingsPDF.php (modified) (3 diffs)
-
trunk/php/bookings/SeatregBookingsTxt.php (modified) (2 diffs)
-
trunk/php/bookings/SeatregBookingsXlsx.php (modified) (2 diffs)
-
trunk/php/constants.php (modified) (3 diffs)
-
trunk/php/enqueue_admin.php (modified) (3 diffs)
-
trunk/php/enqueue_public.php (modified) (2 diffs)
-
trunk/php/repositories/SeatregOptionsRepository.php (modified) (1 diff)
-
trunk/php/repositories/SeatregRegistrationRepository.php (modified) (1 diff)
-
trunk/php/seatreg_actions.php (modified) (1 diff)
-
trunk/php/seatreg_admin_panel.php (modified) (1 diff)
-
trunk/php/seatreg_functions.php (modified) (26 diffs)
-
trunk/php/seatreg_shortcode.php (modified) (3 diffs)
-
trunk/php/seatreg_strings.php (modified) (15 diffs)
-
trunk/php/services/SeatregBookingService.php (modified) (4 diffs)
-
trunk/php/services/SeatregCSVService.php (modified) (3 diffs)
-
trunk/php/services/SeatregImportService.php (modified) (3 diffs)
-
trunk/php/services/SeatregLayoutService.php (modified) (5 diffs)
-
trunk/php/services/SeatregLinksService.php (modified) (1 diff)
-
trunk/php/services/SeatregStringTranslationService.php (added)
-
trunk/php/services/SeatregTerminologyService.php (added)
-
trunk/php/views/modals/add-booking-modal.php (modified) (3 diffs)
-
trunk/php/views/modals/booking-edit-modal.php (modified) (2 diffs)
-
trunk/php/views/modals/seat-id-modal.php (modified) (3 diffs)
-
trunk/php/views/modals/shortcode-modal.php (modified) (1 diff)
-
trunk/php/views/parts/donation-flowers.php (modified) (1 diff)
-
trunk/php/views/parts/registration-card.php (modified) (1 diff)
-
trunk/php/views/sections/builder_content.php (modified) (17 diffs)
-
trunk/php/views/sections/overview.php (added)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/registration/index.php (modified) (8 diffs)
-
trunk/registration/js/registration.js (modified) (10 diffs)
-
trunk/seatreg.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
seatreg/trunk/css/scss/admin/components/seatreg-flower.scss
r3504502 r3693621 1 .seatreg-flower-layer { 2 position: absolute; 3 inset: 0; 4 z-index: -1; 5 overflow: hidden; 6 pointer-events: none; 7 } 8 1 9 .seatreg-flower-container { 2 10 --flower-size: 12px; 3 11 --flower-delay: 0s; 4 12 --flower-opacity: 0.2; 5 width: var(--flower-size); 6 height: var(--flower-size); 13 --flower-petal-reach: calc(var(--flower-size) * 1.42); 14 width: calc(var(--flower-petal-reach) * 2); 15 height: calc(var(--flower-petal-reach) * 2); 7 16 position: absolute; 8 17 } … … 15 24 width: var(--flower-size); 16 25 position: absolute; 17 top: var(--flower-size);18 left: var(--flower-size);26 top: 50%; 27 left: 50%; 19 28 transform-origin: left top; 20 29 opacity: 0; -
seatreg/trunk/css/scss/admin/seatreg_admin.scss
r3680221 r3693621 22 22 @import "components/seatreg-update-notice"; 23 23 @import "components/registration-cards"; 24 @import "components/overview"; 24 25 25 26 html { 26 27 font-size: 100%; 27 28 } 29 28 30 .index-icon { 29 31 margin-right: 10px; 30 32 } 33 31 34 .btn-default { 32 35 color: #333; … … 34 37 border-color: #ccc; 35 38 } 39 36 40 .btn-default:focus { 37 41 color: #333; … … 39 43 border-color: #8c8c8c; 40 44 } 45 41 46 .btn-default:hover { 42 47 color: #333; … … 44 49 border-color: #adadad; 45 50 } 51 46 52 .btn-default:active { 47 53 color: #333; … … 49 55 border-color: #adadad; 50 56 } 57 51 58 .seatreg-wp-admin .btn-primary { 52 59 color: #fff; … … 54 61 border-color: #357ebd; 55 62 } 63 56 64 .seatreg-wp-admin .btn-primary:hover, 57 65 .seatreg-wp-admin .btn-primary:active { … … 59 67 border-color: #285e8e; 60 68 } 69 61 70 .seatreg-wp-admin input[type="checkbox"]:focus { 62 71 outline: none; 63 72 } 73 64 74 .seatreg-wp-admin { 65 75 font-family: "Open Sans", sans-serif; 66 76 } 77 67 78 .seatreg-wp-admin .home-content { 68 79 display: flow-root; 69 80 position: relative; 70 81 } 82 71 83 .seatreg-wp-admin .jumbotron { 72 84 background-image: url(../img/chairs_med.jpg); … … 75 87 margin-bottom: 42px; 76 88 } 89 77 90 .seatreg-wp-admin .donate-wrap { 78 91 max-width: 100%; … … 84 97 row-gap: 12px; 85 98 position: relative; 99 isolation: isolate; 86 100 87 101 p { … … 92 106 margin-right: 12px; 93 107 } 108 94 109 .donate-paypal { 95 110 display: flex; … … 107 122 margin: 0; 108 123 } 109 } 124 125 } 126 110 127 .donate-img { 111 128 cursor: pointer; … … 120 137 filter: brightness(1.08); 121 138 } 122 } 139 140 } 141 123 142 .buy-me-coffee-link { 124 143 img { 125 144 width: 120px; 126 145 } 127 } 128 } 146 147 } 148 } 149 129 150 .seatreg-wp-admin .your-registrations-header { 130 151 margin-top: 28px; … … 135 156 margin-left: 0; 136 157 } 158 137 159 .seatreg-wp-admin .nav-tab { 138 160 background: #f2f2f2; 139 161 } 162 140 163 .seatreg-wp-admin .nav-tab.nav-tab-active { 141 164 text-decoration: underline; 142 165 } 166 143 167 .new-reg-title { 144 168 margin-bottom: 24px; 145 169 } 170 146 171 .seatreg-wp-admin .jumbotron .main-heading { 147 172 font-size: 38px; 148 173 font-weight: 600; 149 174 } 175 150 176 .seatreg-wp-admin .jumbotron .jumbotron-text { 151 177 font-size: 21px; 152 178 font-weight: 600; 153 179 } 180 154 181 .seatreg-wp-admin .nav-tabs { 155 182 margin-top: 40px; 156 183 } 184 157 185 .seatreg-tabs-content { 158 186 background-color: #f2f2f2; … … 162 190 position: relative; 163 191 } 192 164 193 .seatreg-tabs-content .etabs { 165 194 margin: 0; … … 168 197 padding-bottom: 6px; 169 198 } 199 170 200 .seatreg-tabs-content .tab { 171 201 display: inline-block; … … 176 206 background: #fff; 177 207 } 208 178 209 .seatreg-tabs-content .tab a { 179 210 font-size: 16px; … … 185 216 color: #000; 186 217 } 218 187 219 .seatreg-tabs-content .tab a:hover { 188 220 text-decoration: underline; 189 221 } 222 190 223 .seatreg-tabs-content .tab.active { 191 224 background: #404040; 192 225 position: relative; 193 226 } 227 194 228 .seatreg-tabs-content .tab a.active { 195 229 font-weight: bold; 196 230 color: #fff; 197 231 } 232 198 233 .seatreg-tabs-content .tab-container .panel-container { 199 234 overflow: hidden; 200 235 } 236 201 237 .seatreg-tabs-content .form-group { 202 238 margin-bottom: 25px; 203 239 } 240 204 241 .seatreg-settings-form .form-group { 205 242 max-width: 600px; 206 243 } 244 245 .seatreg-settings-form .form-group-title { 246 margin: 0 0 5px; 247 font-size: 16px; 248 } 249 250 .seatreg-settings-form .form-group-subfield-label { 251 margin-bottom: 2px; 252 font-size: 13px; 253 } 254 207 255 .seatreg-settings-form .flow-summary-group { 208 256 max-width: none; 209 257 } 258 210 259 .settings-tabs { 211 260 display: flex; … … 216 265 background-color: #f2f2f2; 217 266 } 267 218 268 .settings-tab { 219 269 background: #fff; … … 225 275 color: #000; 226 276 } 277 227 278 .settings-tab:hover { 228 279 text-decoration: underline; 229 280 } 281 230 282 .settings-tab.settings-tab--active { 231 283 background: #404040; … … 233 285 color: #fff; 234 286 } 287 235 288 .settings-tab.settings-tab--active:hover { 236 289 text-decoration: none; 237 290 } 291 238 292 .settings-tab-panels { 239 293 padding: 32px 0 0; 240 294 background: transparent; 241 295 } 296 242 297 .settings-tab-panel { 243 298 display: none; 244 299 } 300 245 301 .settings-tab-panel.settings-tab-panel--active { 246 302 display: block; 247 303 } 304 248 305 .email-color-fields { 249 306 display: grid; … … 253 310 margin-top: 12px; 254 311 } 312 255 313 .email-logo-controls { 256 314 display: flex; … … 260 318 flex-wrap: wrap; 261 319 } 320 262 321 #email-logo-preview, 263 322 #page-logo-preview { … … 269 328 background: #fff; 270 329 } 330 271 331 .email-color-field { 272 332 display: contents; … … 289 349 cursor: not-allowed; 290 350 } 291 } 292 } 351 352 } 353 } 354 293 355 .seatreg-settings-form #seatreg-settings-submit { 294 356 margin-top: 20px; 295 357 } 358 296 359 .booking-flow-details__summary { 297 360 cursor: pointer; … … 305 368 color: #2271b1; 306 369 } 370 307 371 .booking-flow-details__summary::-webkit-details-marker { 308 372 display: none; 309 373 } 374 310 375 .booking-flow-details__summary:hover { 311 376 color: #135e96; 312 377 } 378 313 379 .booking-flow-details__icon { 314 380 margin-right: 8px; 315 381 transition: transform 0.15s ease; 316 382 } 383 317 384 .booking-flow-details[open] .booking-flow-details__icon { 318 385 transform: rotate(90deg); 319 386 } 387 320 388 .booking-flow-details__hint { 321 389 font-weight: 400; … … 324 392 margin-left: 8px; 325 393 } 394 326 395 .booking-flow-details .help-block { 327 396 margin-top: 10px; 328 397 } 398 329 399 #booking-flow-summary .flow-group { 330 400 margin-bottom: 12px; 331 401 } 402 332 403 #booking-flow-summary .flow-group:last-child { 333 404 margin-bottom: 0; 334 405 } 406 335 407 #booking-flow-summary .flow-group__title { 336 408 font-weight: 600; 337 409 margin-bottom: 4px; 338 410 } 411 339 412 #booking-flow-summary .flow-group__list { 340 413 margin: 0; … … 342 415 list-style: disc; 343 416 } 417 344 418 #booking-flow-summary .flow-group__list li { 345 419 margin-bottom: 3px; 346 420 } 421 347 422 #booking-flow-summary .flow-jump { 348 423 margin-left: 6px; … … 351 426 text-decoration: none; 352 427 } 428 353 429 #booking-flow-summary .flow-jump:hover { 354 430 color: #135e96; 355 431 } 432 356 433 .flow-jump-highlight { 357 434 animation: seatregFlowHighlight 1.6s ease; 358 435 border-radius: 4px; 359 436 } 437 360 438 @keyframes seatregFlowHighlight { 361 439 0% { 362 440 background-color: #fff3b0; 363 441 } 442 364 443 100% { 365 444 background-color: transparent; … … 372 451 font-family: "Open Sans", sans-serif; 373 452 } 453 374 454 .seatreg-tabs-content #my-regs { 375 455 width: 1170px; … … 377 457 padding: 0 15px; 378 458 } 459 379 460 .seatreg-tabs-content #server-response-text { 380 461 font-size: 20px; 381 462 } 463 382 464 .seatreg-tabs-content .log-out-btn { 383 465 display: block; … … 389 471 font-size: 18px; 390 472 } 473 391 474 .seatreg-tabs-content .log-out-btn .l-pic { 392 475 float: left; … … 403 486 } 404 487 405 .seatreg-tabs-content .reg-overview-middle-wrap {406 display: flex;407 flex-wrap: nowrap;408 align-items: center;409 }410 411 .seatreg-tabs-content .reg-overview-top {412 padding-bottom: 20px;413 overflow: hidden;414 }415 416 .seatreg-tabs-content .overview-calendar-wrap {417 display: flex;418 justify-content: center;419 align-items: center;420 margin-bottom: 20px;421 422 label {423 margin-bottom: 0;424 text-transform: uppercase;425 }426 427 input {428 text-align: center;429 margin-left: 12px;430 width: 170px;431 }432 }433 434 .seatreg-tabs-content .reg-overview-aside {435 width: 220px;436 float: left;437 padding-right: 20px;438 text-overflow: ellipsis;439 min-height: 180px;440 margin-bottom: 20px;441 position: relative;442 overflow: auto;443 }444 .seatreg-tabs-content .room-list {445 list-style: none;446 margin: 0;447 padding: 0;448 }449 .seatreg-tabs-content .room-list-active {450 color: #f47a37;451 }452 .seatreg-tabs-content .room-list-item {453 margin-bottom: 2px;454 font-size: 18px;455 }456 .seatreg-tabs-content .first-item {457 margin-bottom: 6px;458 font-size: 20px;459 text-transform: uppercase;460 }461 .seatreg-tabs-content .room-list-item:hover {462 cursor: pointer;463 color: #f47a37;464 }465 466 .seatreg-tabs-content .reg-overview-top-header {467 font-size: 24px;468 font-weight: bold;469 float: left;470 min-width: 200px;471 height: 50px;472 line-height: 50px;473 margin-right: 10px;474 display: none;475 }476 .seatreg-tabs-content .reg-overview-top-header:first-letter {477 text-transform: capitalize;478 }479 480 .seatreg-tabs-content .reg-overview-top-bron-notify {481 color: #ea6060;482 font-size: 14px;483 float: left;484 height: 50px;485 line-height: 50px;486 }487 .seatreg-tabs-content .reg-overview-middle {488 float: left;489 width: 640px;490 margin-bottom: 30px;491 margin-left: 40px;492 }493 .seatreg-tabs-content .overview-middle-box {494 float: left;495 margin-right: 60px;496 }497 .seatreg-tabs-content .overview-middle-box-stat {498 font-size: 38px;499 }500 .seatreg-tabs-content .overview-last-box {501 margin-right: 0;502 }503 .seatreg-tabs-content .reg-overview-bottom {504 background-color: #404040;505 padding: 20px;506 clear: both;507 margin-top: 20px;508 }509 .seatreg-tabs-content .reg-link {510 display: inline-block;511 width: 500px;512 background-color: #fff;513 padding: 10px;514 text-decoration: none;515 color: #000;516 margin-bottom: 20px;517 }518 .seatreg-tabs-content .ov-bottom-h {519 color: #fff;520 font-size: 18px;521 padding: 0;522 margin-top: 0;523 margin-bottom: 20px;524 }525 .seatreg-tabs-content .ov-bottom-h-2 {526 color: #fff;527 font-size: 14px;528 padding: 0;529 margin-top: 0;530 margin-bottom: 0;531 cursor: pointer;532 padding-left: 10px;533 }534 .seatreg-tabs-content .ov-bottom-h-3 {535 color: #fff;536 font-size: 14px;537 padding: 0;538 margin-top: 0;539 margin-bottom: 0;540 cursor: pointer;541 padding-left: 10px;542 }543 544 .seatreg-tabs-content .ov-bottom-h-2:hover,545 .seatreg-tabs-content .ov-bottom-h-3:hover {546 color: #fff;547 text-decoration: underline;548 }549 550 .seatreg-tabs-content .copy-link-btn {551 display: inline-block;552 background-color: #fff;553 padding: 10px;554 font-weight: 600;555 }556 557 .seatreg-tabs-content .overview-middle-box-stat {558 color: orange;559 font-size: 36px;560 }561 .seatreg-tabs-content .stats-doughnut {562 margin-left: 40px;563 }564 .seatreg-tabs-content .stats-doughnut-legend {565 display: inline-block;566 vertical-align: top;567 margin-left: 20px;568 min-width: 160px;569 }570 .seatreg-tabs-content .legend-block {571 margin-top: 10px;572 }573 .seatreg-tabs-content .doughnut-legend {574 width: 16px;575 height: 16px;576 display: inline-block;577 border-radius: 50%;578 margin-right: 12px;579 vertical-align: bottom;580 }581 .seatreg-tabs-content .legend-block-percent {582 float: right;583 }584 .seatreg-tabs-content .reg-overview-top-date {585 float: right;586 line-height: 50px;587 }588 589 488 /*registrations manager*/ 590 489 .seatreg-tabs-content .tab_container { … … 616 515 } 617 516 618 .seatreg-tabs-content .time-block {619 margin-bottom: 6px;620 margin-left: 10px;621 }622 623 517 .seatreg-tabs-content .registration-manager-labels { 624 518 padding: 16px; … … 634 528 overflow: hidden; 635 529 } 530 636 531 .seatreg-tabs-content .seat-nr-box { 637 532 width: 60px; 638 533 } 534 639 535 .seatreg-tabs-content .seat-id-box { 640 536 margin-right: 30px; 641 537 } 538 642 539 .seatreg-tabs-content .seat-room-box { 643 540 width: 140px; … … 657 554 vertical-align: middle; 658 555 } 556 659 557 .seatreg-tabs-content .payment-status-box { 660 558 min-width: 130px; … … 662 560 margin-right: 40px; 663 561 } 562 664 563 .seatreg-tabs-content .border-box { 665 564 -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */ … … 667 566 box-sizing: border-box; /* Opera/IE 8+ */ 668 567 } 568 669 569 .seatreg-tabs-content .seat-date-box { 670 570 width: 140px; 671 571 text-align: center; 672 572 } 573 673 574 .seatreg-tabs-content .action-select { 674 575 float: right; 675 576 } 577 676 578 .seatreg-tabs-content .action-select label { 677 579 margin-left: 10px; … … 683 585 margin-right: 16px; 684 586 } 587 685 588 .seatreg-tabs-content .differentBgColor { 686 589 background-color: #f2f2f2; … … 690 593 display: inline-block; 691 594 } 595 692 596 .seatreg-tabs-content .reg-seat-item .booking-id-box { 693 597 min-width: 340px; 694 598 } 599 695 600 .seatreg-tabs-content .manager-box-link:hover { 696 601 cursor: pointer; 697 602 text-decoration: underline; 698 603 } 699 .seatreg-tabs-content #existing-regs {700 position: relative;701 }702 604 703 605 .seatreg-tabs-content .seat-date-label { 704 606 margin-right: 60px; 705 607 } 608 706 609 .seatreg-tabs-content .reg-name { 707 610 font-size: 30px; … … 751 654 text-decoration: underline; 752 655 } 656 753 657 .seatreg-tabs-content .action-label { 754 658 cursor: pointer; … … 793 697 color: red; 794 698 } 699 795 700 .seatreg-delete-registration-form .delete-registration-btn:hover { 796 701 box-shadow: 1px 1px 10px 0px rgba(204, 204, 204, 0.52); … … 812 717 border: 0; 813 718 } 719 814 720 .seatreg-tabs-content .del-reg { 815 721 margin: 0; … … 824 730 margin-top: 20px; 825 731 } 732 826 733 .seatreg-tabs-content .del-reg:hover { 827 734 text-decoration: underline; 828 735 color: red; 829 736 } 737 830 738 .seatreg-tabs-content .del-reg:focus { 831 739 outline: none; … … 841 749 cursor: pointer; 842 750 } 751 843 752 .seatreg-tabs-content .btn-style:hover { 844 753 text-decoration: underline; 845 754 } 755 846 756 .seatreg-tabs-content .btn-style-active { 847 757 background-color: #fff; … … 855 765 background-position: -3px -336px; 856 766 } 767 857 768 .seatreg-tabs-content .a-stats-btn { 858 769 border-bottom: 1px solid #e1e5e7; 859 770 } 771 860 772 .seatreg-tabs-content .a-manage-btn { 861 773 border-bottom: 1px solid #e1e5e7; 862 774 } 775 863 776 .seatreg-tabs-content .a-manage-btn .f-pic { 864 777 float: left; 865 778 background-position: -52px -335px; 866 779 } 780 867 781 .seatreg-tabs-content .adr-btn { 868 782 margin: 4px; … … 872 786 line-height: 42px; 873 787 } 788 874 789 .seatreg-tabs-content .adr-btn .f-pic { 875 790 float: left; 876 791 background-position: -105px -334px; 877 792 } 793 878 794 .seatreg-tabs-content .a-opt-btn { 879 795 margin: 4px; … … 883 799 line-height: 42px; 884 800 } 801 885 802 .seatreg-tabs-content .option-box { 886 803 margin-top: 20px; … … 888 805 border-bottom: 1px solid black; 889 806 } 807 890 808 .seatreg-tabs-content .setting-box { 891 809 width: 98%; … … 894 812 border-top: 1px solid black; 895 813 } 814 896 815 .seatreg-tabs-content .a-opt-btn .f-pic { 897 816 float: left; … … 902 821 text-align: center; 903 822 } 823 904 824 .seatreg-tabs-content .del-reg-form:active, 905 825 .seatreg-tabs-content .del-reg-form:focus { … … 915 835 border-bottom: 1px solid #e1e5e7; 916 836 } 837 917 838 .seatreg-tabs-content .info-box { 918 839 margin-bottom: 20px; … … 933 854 vertical-align: middle; 934 855 } 856 935 857 .seatreg-tabs-content .reg-status-box { 936 858 } 859 937 860 .seatreg-tabs-content .custom-container { 938 861 display: flex; … … 986 909 cursor: pointer; 987 910 } 911 988 912 .seatreg-tabs-content .custom-container-move:hover { 989 913 background-color: #ccc; … … 997 921 margin-left: 24px; 998 922 } 923 999 924 .seatreg-tabs-content .payment-configuration { 1000 925 margin-top: 12px; … … 1039 964 margin-left: 6px; 1040 965 } 966 1041 967 .seatreg-tabs-content .cust-field-create { 1042 968 margin-top: 10px; 1043 969 margin-left: 24px; 1044 970 } 971 1045 972 .seatreg-tabs-content .select-radio-create { 1046 973 margin-bottom: 12px; 1047 974 } 975 1048 976 .seatreg-tabs-content .seatreg-settings-form input[type="text"], 1049 977 .seatreg-tabs-content .seatreg-settings-form input[type="number"] { … … 1051 979 font-size: 14px; 1052 980 } 981 1053 982 .seatreg-tabs-content .seatreg-settings-form textarea { 1054 983 font-size: 14px; 1055 984 } 985 1056 986 .seatreg-tabs-content .cust-field-create label { 1057 987 font-size: 14px; … … 1061 991 margin-bottom: 0.5rem; 1062 992 } 993 1063 994 .seatreg-tabs-content .select-option { 1064 995 margin-bottom: 6px; … … 1069 1000 width: 140px; 1070 1001 } 1002 1071 1003 .seatreg-tabs-content .custom-field-select { 1072 1004 margin-right: 10px; 1073 1005 } 1006 1074 1007 .seatreg-tabs-content .manager-search-wrap { 1075 1008 width: 200px; … … 1077 1010 float: right; 1078 1011 } 1012 1079 1013 .seatreg-tabs-content .manager-search { 1080 1014 border-color: #ccc; … … 1083 1017 min-height: calc(1.5rem + .75rem + 2px); 1084 1018 } 1019 1085 1020 .seatreg-tabs-content .manager-search:focus { 1086 1021 box-shadow: none; … … 1107 1042 transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; 1108 1043 } 1044 1109 1045 .seatreg-tabs-content .option-label { 1110 1046 font-size: 16px; 1111 1047 } 1048 1112 1049 .seatreg-tabs-content .l-text { 1113 1050 margin-right: 10px; … … 1117 1054 .seatreg-tabs-content .option-btn { 1118 1055 } 1056 1119 1057 .seatreg-tabs-content .edit-btn { 1120 1058 cursor: pointer; … … 1129 1067 .seatreg-tabs-content .admin-btn-from { 1130 1068 border-bottom: 1px solid #e1e5e7; 1131 }1132 1133 .seatreg-tabs-content .room-list-item[data-active="true"] {1134 color: orange;1135 1069 } 1136 1070 … … 1147 1081 font-size: 14px; 1148 1082 } 1083 1149 1084 .seatreg-map-popup-btn, 1150 1085 .seatreg-delete-btn { 1151 1086 padding: 0; 1152 1087 } 1088 1153 1089 .seatreg_page_seatreg-management 1154 1090 .booking-status-check-wrap … … 1189 1125 } 1190 1126 1191 @media screen and (max-width: 1199px) { 1192 .seatreg-tabs-content #my-regs { 1127 @media screen and (max-width: 1199px) { .seatreg-tabs-content #my-regs { 1193 1128 width: 970px; 1194 1129 padding: 0 15px; 1195 1130 } 1131 1196 1132 .seatreg-tabs-content .admin-right-side { 1197 1133 width: 700px; 1198 1134 } 1135 1199 1136 .seatreg-tabs-content .admin-right-side { 1200 1137 margin-right: 5px; 1201 1138 } 1202 .seatreg-tabs-content .reg-overview-middle { 1203 width: 440px; 1204 } 1205 .seatreg-tabs-content .overview-middle-box { 1206 margin-right: 30px; 1207 } 1139 1208 1140 .seatreg-tabs-content .action-select { 1209 1141 margin-top: 10px; … … 1211 1143 float: right; 1212 1144 } 1145 1213 1146 .seatreg-tabs-content .bg-color { 1214 1147 padding-top: 80px; 1215 1148 background-color: #f2f2f2; 1216 1149 } 1217 } 1218 @media screen and (max-width: 800px) { 1219 .seatreg-tabs-content .manager-box { 1150 1151 } 1152 1153 @media screen and (max-width: 800px) { .seatreg-tabs-content .manager-box { 1220 1154 display: block; 1221 1155 text-align: left; 1222 1156 } 1157 1223 1158 .seatreg-tabs-content .action-select { 1224 1159 margin-top: 0; 1225 1160 } 1161 1226 1162 .seatreg-tabs-content .file-type-link { 1227 1163 position: absolute; … … 1229 1165 margin: 0; 1230 1166 } 1167 1231 1168 .seatreg-tabs-content .pdf-link { 1232 1169 right: 0; 1233 1170 } 1171 1234 1172 .seatreg-tabs-content .text-link { 1235 1173 right: 150px; 1236 1174 } 1175 1237 1176 .seatreg-tabs-content .xlsx-link { 1238 1177 right: 70px; 1239 1178 } 1179 1240 1180 .seatreg-tabs-content .manager-search-wrap { 1241 1181 margin-top: 40px; 1242 1182 } 1183 1243 1184 .seatreg-tabs-content .action-select { 1244 1185 float: none; … … 1247 1188 margin-top: 10px; 1248 1189 } 1249 } 1250 1251 @media screen and (max-width: 992px) { 1252 .seatreg-tabs-content .reg-section-buttons {1190 1191 } 1192 1193 @media screen and (max-width: 992px) { .seatreg-tabs-content .reg-section-buttons { 1253 1194 width: 20%; 1254 }1255 .seatreg-tabs-content .reg-overview-middle-wrap {1256 display: block;1257 1195 } 1258 1196 … … 1261 1199 } 1262 1200 1263 .seatreg-tabs-content .reg-overview-aside {1264 width: 40%;1265 min-height: none;1266 max-height: none;1267 }1268 1269 1201 .seatreg-tabs-content .admin-right-side { 1270 1202 width: 76%; 1271 }1272 1273 .seatreg-tabs-content .reg-overview {1274 width: 100%;1275 1203 } 1276 1204 … … 1279 1207 margin: 0; 1280 1208 } 1281 .seatreg-tabs-content .reg-overview-aside { 1282 float: none; 1283 width: 100%; 1284 max-height: none; 1285 min-height: 0; 1286 text-align: center; 1287 margin-bottom: 0; 1288 padding-right: 0; 1289 } 1290 1291 .seatreg-tabs-content .room-list-item { 1292 display: inline-block; 1293 } 1294 .seatreg-tabs-content .reg-overview-middle { 1295 float: none; 1296 overflow: hidden; 1297 width: 100%; 1298 padding: 20px 20px 10px 20px; 1299 1300 margin: 0px; 1301 text-align: center; 1302 } 1303 .seatreg-tabs-content .reg-overview-top-date { 1304 float: none; 1305 clear: both; 1306 text-align: center; 1307 margin-top: 10px; 1308 } 1309 .seatreg-tabs-content .reg-overview-top-bron-notify { 1310 float: right; 1311 height: 30px; 1312 margin-bottom: 10px; 1313 margin-top: 10px; 1314 } 1315 .seatreg-tabs-content .reg-overview-top-bron-notify, 1316 .seatreg-tabs-content .reg-overview-top-header, 1317 .seatreg-tabs-content .reg-overview-top-date { 1318 line-height: 20px; 1319 } 1320 .seatreg-tabs-content .time-block { 1321 display: inline-block; 1322 margin-bottom: 4px; 1323 } 1324 .seatreg-tabs-content .reg-link { 1325 width: 100%; 1326 word-wrap: break-word; 1327 word-break: break-all; 1328 } 1329 .seatreg-tabs-content .reg-overview-top-header { 1330 float: none; 1331 text-align: center; 1332 word-wrap: break-word; 1333 1334 margin-top: 20px; 1335 } 1336 .seatreg-tabs-content .overview-middle-box { 1337 margin-right: 10px; 1338 display: inline-block; 1339 float: none; 1340 margin: 0 4px; 1341 } 1342 .seatreg-tabs-content .room-list-item { 1343 display: inline-block; 1344 margin-right: 20px; 1345 } 1209 1346 1210 .seatreg-tabs-content #alertify { 1347 1211 top: 30%; 1348 1212 } 1349 1213 1350 .seatreg-tabs-content .reg-overview-donuts { 1351 display: block; 1352 width: 100%; 1353 margin: 0; 1354 text-align: center; 1355 float: none; 1356 padding: 0; 1357 } 1358 .seatreg-tabs-content .reg-overview-top-bron-notify { 1359 float: none; 1360 text-align: center; 1361 } 1362 .seatreg-tabs-content .reg-overview-top { 1363 padding-top: 6px; 1364 padding-bottom: 0px; 1365 margin-bottom: 10px; 1366 } 1367 .seatreg-tabs-content .reg-overview-bottom { 1368 clear: both; 1369 margin-top: 20px; 1370 } 1371 1372 .seatreg-tabs-content .stats-doughnut { 1373 margin: 0; 1374 } 1375 .seatreg-tabs-content .legend-block { 1376 text-align: left; 1377 } 1378 .seatreg-tabs-content .stats-doughnut-legend { 1379 margin-left: 0; 1380 } 1381 } 1382 1383 @media screen and (max-width: 776px) { 1384 .seatreg-tabs-content .reg-section-buttons { 1214 } 1215 1216 @media screen and (max-width: 776px) { .seatreg-tabs-content .reg-section-buttons { 1385 1217 width: 25%; 1386 1218 } … … 1393 1225 margin-bottom: 4px; 1394 1226 } 1227 1395 1228 .seatreg-tabs-content .account-status { 1396 1229 margin-bottom: 0; 1397 1230 } 1231 1398 1232 .seatreg-tabs-content .first-reg-section .tab_container:before { 1399 1233 margin-top: -300px; … … 1405 1239 height: 310px; 1406 1240 } 1241 1407 1242 .seatreg-tabs-content .tab a { 1408 1243 padding: 0px 0px; 1409 1244 } 1410 } 1411 1412 @media screen and (max-width: 900px) { 1245 1246 } 1247 1248 @media screen and (max-width: 900px) { .seatreg-tabs-content .first-reg-section .tab_container:before { 1249 margin-top: -330px; 1250 height: 330px; 1251 } 1252 1253 .seatreg-tabs-content .tab_container:before { 1254 margin-top: -250px; 1255 height: 250px; 1256 } 1257 1258 } 1259 1260 @media screen and (max-width: 500px) { .seatreg-tabs-content .bg-color { 1261 padding-top: 100px; 1262 } 1263 1264 .seatreg-tabs-content .reg-section-buttons { 1265 font-size: 12px; 1266 } 1267 1268 .seatreg-tabs-content .bg-color { 1269 background-color: #f2f2f2; 1270 } 1271 1413 1272 .seatreg-tabs-content .first-reg-section .tab_container:before { 1414 1273 margin-top: -330px; … … 1417 1276 1418 1277 .seatreg-tabs-content .tab_container:before { 1419 margin-top: -250px;1420 height: 250px;1421 }1422 }1423 @media screen and (max-width: 500px) {1424 .seatreg-tabs-content .bg-color {1425 padding-top: 100px;1426 }1427 .seatreg-tabs-content .reg-section-buttons {1428 font-size: 12px;1429 }1430 .seatreg-tabs-content .bg-color {1431 background-color: #f2f2f2;1432 }1433 1434 .seatreg-tabs-content .first-reg-section .tab_container:before {1435 1278 margin-top: -330px; 1436 1279 height: 330px; 1437 1280 } 1438 1281 1439 .seatreg-tabs-content .tab_container:before {1440 margin-top: -330px;1441 height: 330px;1442 }1443 1282 .seatreg-tabs-content .custom-container input[type="text"] { 1444 1283 width: 60px; 1445 1284 } 1285 1446 1286 } 1447 1287 … … 1458 1298 color: #04357d; 1459 1299 } 1300 1460 1301 .calendar-date-chip-remove { 1461 1302 margin-left: 6px; … … 1473 1314 color: #c00; 1474 1315 } 1475 } 1476 } 1316 1317 } 1318 } -
seatreg/trunk/css/seatreg_admin.min.css
r3680221 r3693621 1 .seatreg-tabs-content .add-modal .bottom-action .seat-operations .seat-operation:hover,.seatreg-tabs-content .management-header .management-extra-actions .add-booking:hover span,.seatreg-tabs-content .management-header .management-extra-actions .import-bookings:hover span,.seatreg-tabs-content .seat-id-modal .seat-id-grid .grid-title,.seatreg-wp-admin .nav-tab.nav-tab-active{text-decoration:underline}.seatreg-tabs-content .edit-modal h5{margin-bottom:0}.seatreg-tabs-content .edit-modal .edit-modal-input-wrap,.seatreg-tabs-content .edit-modal .modal-custom{margin-bottom:12px}.seatreg-tabs-content .add-modal h5{margin-bottom:.5rem}.seatreg-tabs-content .add-modal .add-modal-input-wrap{margin-bottom:12px}.seatreg-tabs-content .add-modal .add-modal-input-wrap .seat-id-search{vertical-align:middle;padding-top:20px;margin-left:4px;cursor:pointer}.seatreg-tabs-content .add-modal .modal-custom{margin-bottom:12px}.seatreg-tabs-content .add-modal .add-modal-calendar-date{display:flex;justify-content:center;align-items:center}.seatreg-tabs-content .add-modal .add-modal-calendar-date .fa{margin-right:8px}.seatreg-tabs-content .add-modal .modal-body-items{display:flex;overflow-x:auto}.seatreg-tabs-content .add-modal .modal-body-items .modal-body-item:not(:last-child){margin-right:24px}.seatreg-tabs-content .add-modal .modal-body-items .modal-body-item .input-error{color:red}.seatreg-tabs-content .add-modal .bottom-action{margin-top:24px}.seatreg-tabs-content .add-modal .bottom-action .seat-operations{display:flex;justify-content:center;margin-bottom:12px}.seatreg-tabs-content .add-modal .bottom-action .seat-operations .seat-operation{cursor:pointer}.seatreg-tabs-content .add-modal .bottom-action .seat-operations .seat-operation:first-child{margin-right:12px}.seatreg-tabs-content .add-modal .bottom-action .fa-plus-circle{color:#61B329}.seatreg-tabs-content .add-modal .bottom-action .bottom-action-item__input-error,.seatreg-tabs-content .add-modal .bottom-action .fa-minus-circle{color:red}.seatreg-tabs-content .add-modal .bottom-action .bottom-action-item{cursor:pointer;text-align:center;margin-bottom:12px}.seatreg-tabs-content .add-modal .bottom-action .bottom-action-item__title{font-weight:700}.seatreg-wp-admin .activity-modal__loading{text-align:center}.seatreg-wp-admin .activity-modal__logs{display:grid;grid-template-columns:200px 1fr}#seatreg-booking-manager .bookings-file-modal .date-info{display:flex;justify-content:center;align-items:center;margin-bottom:12px}#seatreg-booking-manager .bookings-file-modal .date-info .fa{margin-right:8px}#seatreg-booking-manager .bookings-file-modal input{margin-left:8px}#seatreg-booking-manager .bookings-file-modal .fa-plus-circle{color:#61B329}#seatreg-booking-manager .bookings-file-modal .form-fields{margin-bottom:12px}#seatreg-booking-manager .bookings-file-modal .custom-filtering{cursor:pointer}#seatreg-booking-manager .bookings-file-modal .custom-filtering-selection{display:none;margin-top:12px}.seatreg-tabs-content .seat-id-modal h5{margin-top:8px}.seatreg-tabs-content .seat-id-modal .seat-id-grid{display:grid;row-gap:8px;grid-template-columns:auto 1fr 1fr;margin-left:40px;grid-column-gap:30px}.seatreg-tabs-content .seat-id-modal .seat-id-grid .grid-title{margin-bottom:8px}#import-bookings-modal .import-booking-modal-error{color:#E0635D;font-size:14px;margin-top:8px}#import-bookings-modal .import-booking-modal-loading{display:flex;flex-direction:column;align-items:center}#import-bookings-modal .import-booking-modal-loading img{margin-bottom:8px}#seatreg-booking-manager .import-bookings-finalization-modal__body{max-height:70vh;overflow-y:auto}#seatreg-booking-manager .import-bookings-finalization-modal__booking{display:flex;align-items:center;border:1px solid #ccc;padding:8px 12px;gap:6px;margin-bottom:8px}#seatreg-booking-manager .import-bookings-finalization-modal__booking--invalid{border-color:#d10516}#seatreg-booking-manager .import-bookings-finalization-modal__trash-icon,#seatreg-booking-manager .import-bookings-finalization-modal__warning-icon{margin-left:auto;color:red;cursor:pointer}#seatreg-booking-manager .import-bookings-finalization-modal__popup{max-width:400px}#seatreg-booking-manager .import-bookings-finalization-modal .warn-text{color:#d10516;font-weight:700}.seatreg-wp-admin .shortcode-modal .shortcode-instructions{margin-top:12px;margin-bottom:0}.seatreg-tabs-content .ajax_loader{position:fixed;top:50%;left:50%;margin-left:-32px;margin-top:-32px;z-index:9999}@media screen and (max-width:992px){.seatreg-tabs-content .ajax_loader{top:20%;left:50%;margin-left:-32px;margin-top:-32px}}.seatreg-tabs-content .management-header{position:relative;display:flex;flex-wrap:wrap;justify-content:space-between;background-color:#F2F2F2;text-transform:uppercase;font-size:20px;min-height:42px;padding:6px 6px 16px}.seatreg-tabs-content .management-header>div{min-width:150px}.seatreg-tabs-content .management-header .pending-bookings-count{color:#E0635D}.seatreg-tabs-content .management-header .management-extra-actions{display:flex;gap:12px;text-transform:none}.seatreg-tabs-content .management-header .management-extra-actions .add-booking{cursor:pointer}.seatreg-tabs-content .management-header .management-extra-actions .add-booking .fa-plus-circle{color:#61B329}.seatreg-tabs-content .management-header .management-extra-actions .import-bookings{cursor:pointer}.seatreg-tabs-content .management-header .management-extra-actions .import-bookings .fa{color:#4ea8f0}.seatreg-tabs-content .management-header .booking-manager-calendar-wrap{width:100%;display:flex;justify-content:center;align-items:center;margin-bottom:12px}.seatreg-tabs-content .management-header .booking-manager-calendar-wrap label{margin-bottom:0}.seatreg-tabs-content .management-header .booking-manager-calendar-wrap input{text-align:center;margin-left:12px;width:170px}.reg-more-items{display:flex;flex-wrap:wrap}.reg-more-items__item{padding:24px;border:1px solid #ccc;border-radius:3px;margin-right:12px;cursor:pointer}.reg-more-items__item:hover{box-shadow:1px 1px 10px 0 rgba(204,204,204,.52)}.reg-more-items__item--delete-form{padding:0}#seatreg-booking-manager .custom-fields .custom-field{display:flex;align-items:center;margin-bottom:8px}#seatreg-booking-manager .custom-fields .custom-field input,#seatreg-booking-manager .custom-fields .custom-field label{margin-bottom:0}#seatreg-booking-manager .custom-fields .custom-field .fa{cursor:pointer;margin-left:8px}#seatreg-settings-form #public-api-tokens{margin-left:24px;margin-bottom:12px}#seatreg-settings-form #public-api-tokens .token-box{display:flex;align-items:center;border:1px solid #ccc;padding:12px;border-radius:4px;column-gap:6px;margin-bottom:12px}#seatreg-settings-form #public-api-tokens .token-box .token-actions{margin-left:auto}#seatreg-settings-form #custom-payments,#seatreg-settings-form .coupon-box__actions,#seatreg-settings-form .coupon-create,#seatreg-settings-form .existing-coupons{margin-left:24px}#seatreg-settings-form #public-api-tokens .token-box .token-actions .remove-token{color:red;cursor:pointer}#seatreg-settings-form #custom-payments .custom-payment{border:1px solid #ccc;padding:12px;border-radius:4px;display:grid;grid-template-columns:auto 1fr;column-gap:24px;row-gap:12px;margin-bottom:24px}#seatreg-settings-form #custom-payments .custom-payment__controls{text-align:center;grid-column:span 2}#seatreg-settings-form .custom-payment-icon-upload{display:flex}#seatreg-settings-form .custom-payment-icon-upload__error{color:red}#seatreg-settings-form .custom-payment-icon-upload__loading{margin-right:8px;display:none}#seatreg-settings-form .current-custom-payment-icon{display:flex;align-items:center}#seatreg-settings-form .current-custom-payment-icon__loading,.settings-tab-panel{display:none}#seatreg-settings-form .current-custom-payment-icon__img{height:74px;margin-right:12px}#seatreg-settings-form .current-custom-payment-icon__delete{cursor:pointer;color:red}#seatreg-booking-manager .approved-booking-email-text{margin-top:12px;display:flex;flex-direction:column;align-items:start;gap:6px}#seatreg-booking-manager .approved-booking-email-text__input-wrapper{display:flex;align-items:center;gap:6px}#seatreg-booking-manager .approved-booking-email-text__warning{color:red}#seatreg-settings-form .existing-coupons{margin-bottom:24px}#seatreg-settings-form .new-coupon{display:flex;align-items:center;gap:8px}#seatreg-settings-form .new-coupon input[type=text]{width:120px}#seatreg-settings-form .new-coupon input[type=number]{width:80px} .seatreg-flower-container,.seatreg-flower-droplet{height:var(--flower-size);width:var(--flower-size);position:absolute}#seatreg-settings-form .new-coupon__label{font-size:14px;margin-bottom:0}#seatreg-settings-form .coupon-box{display:flex;align-items:center;margin-bottom:12px}#seatreg-settings-form .coupon-box__label{margin-right:8px;font-size:14px}#seatreg-settings-form .coupon-box__value{font-weight:600;min-width:80px}.seatreg-wp-admin .companion-app-form .submit{margin-top:8px}@keyframes shake{0%{transform:translate(1px,1px) rotate(0)}10%{transform:translate(-1px,-2px) rotate(-1deg)}20%{transform:translate(-3px,0) rotate(1deg)}30%{transform:translate(3px,2px) rotate(0)}40%{transform:translate(1px,-1px) rotate(1deg)}50%{transform:translate(-1px,2px) rotate(-1deg)}60%{transform:translate(-3px,1px) rotate(0)}100%,70%{transform:translate(0,0) rotate(0)}}.seatreg-flower-container{--flower-size:12px;--flower-delay:0s;--flower-opacity:0.2}.seatreg-flower-droplet{border-radius:5px 90%;border-style:solid;border-width:1px;top:var(--flower-size);left:var(--flower-size);transform-origin:left top;opacity:0}.seatreg-flower-droplet-1{background:#428bca;animation:spin1 5s ease-out;animation-fill-mode:forwards;animation-delay:calc(var(--flower-delay) + 0s)}.seatreg-flower-droplet-2{background:#2271b1;animation:spin2 5s ease-out;animation-fill-mode:forwards;animation-delay:calc(var(--flower-delay) + .05s)}.seatreg-flower-droplet-3{background:#428bca;animation:spin3 5s ease-out;animation-fill-mode:forwards;animation-delay:calc(var(--flower-delay) + .1s)}.seatreg-flower-droplet-4{background:#2271b1;animation:spin4 5s ease-out;animation-fill-mode:forwards;animation-delay:calc(var(--flower-delay) + .15s)}.seatreg-flower-droplet-5{background:#428bca;animation:spin5 5s ease-out;animation-fill-mode:forwards;animation-delay:calc(var(--flower-delay) + .2s)}.seatreg-flower-droplet-6{background:#2271b1;animation:spin6 5s ease-out;animation-fill-mode:forwards;animation-delay:calc(var(--flower-delay) + .25s)}.seatreg-flower-droplet-7{background:#428bca;animation:spin7 5s ease-out;animation-fill-mode:forwards;animation-delay:calc(var(--flower-delay) + .3s)}.seatreg-flower-droplet-8{background:#2271b1;animation:spin8 5s ease-out;animation-fill-mode:forwards;animation-delay:calc(var(--flower-delay) + .35s)}.seatreg-flower-droplet-9{background:#428bca;animation:spin9 5s ease-out;animation-fill-mode:forwards;animation-delay:calc(var(--flower-delay) + .4s)}.seatreg-flower-droplet-10{background:#2271b1;animation:spin10 5s ease-out;animation-fill-mode:forwards;animation-delay:calc(var(--flower-delay) + .45s)}@keyframes spin1{0%{opacity:0;-webkit-transform:rotate(0) scale(.01);transform:rotate(0) scale(.01)}100%,20%,60%{opacity:var(--flower-opacity);-webkit-transform:rotate(324deg) scale(1);transform:rotate(324deg) scale(1)}}@keyframes spin2{0%{opacity:0;-webkit-transform:rotate(0) scale(.01);transform:rotate(0) scale(.01)}100%,20%,60%{opacity:var(--flower-opacity);-webkit-transform:rotate(288deg) scale(1);transform:rotate(288deg) scale(1)}}@keyframes spin3{0%{opacity:0;-webkit-transform:rotate(0) scale(.01);transform:rotate(0) scale(.01)}100%,20%,60%{opacity:var(--flower-opacity);-webkit-transform:rotate(252deg) scale(1);transform:rotate(252deg) scale(1)}}@keyframes spin4{0%{opacity:0;-webkit-transform:rotate(0) scale(.01);transform:rotate(0) scale(.01)}100%,20%,60%{opacity:var(--flower-opacity);-webkit-transform:rotate(216deg) scale(1);transform:rotate(216deg) scale(1)}}@keyframes spin5{0%{opacity:0;-webkit-transform:rotate(0) scale(.01);transform:rotate(0) scale(.01)}100%,20%,60%{opacity:var(--flower-opacity);-webkit-transform:rotate(180deg) scale(1);transform:rotate(180deg) scale(1)}}@keyframes spin6{0%{opacity:0;-webkit-transform:rotate(0) scale(.01);transform:rotate(0) scale(.01)}100%,20%,60%{opacity:var(--flower-opacity);-webkit-transform:rotate(144deg) scale(1);transform:rotate(144deg) scale(1)}}@keyframes spin7{0%{opacity:0;-webkit-transform:rotate(0) scale(.01);transform:rotate(0) scale(.01)}100%,20%,60%{opacity:var(--flower-opacity);-webkit-transform:rotate(108deg) scale(1);transform:rotate(108deg) scale(1)}}@keyframes spin8{0%{opacity:0;-webkit-transform:rotate(0) scale(.01);transform:rotate(0) scale(.01)}100%,20%,60%{opacity:var(--flower-opacity);-webkit-transform:rotate(72deg) scale(1);transform:rotate(72deg) scale(1)}}@keyframes spin9{0%{opacity:0;-webkit-transform:rotate(0) scale(.01);transform:rotate(0) scale(.01)}100%,20%,60%{opacity:var(--flower-opacity);-webkit-transform:rotate(36deg) scale(1);transform:rotate(36deg) scale(1)}}@keyframes spin10{0%{opacity:0;-webkit-transform:rotate(0) scale(.01);transform:rotate(0) scale(.01)}100%,20%,60%{opacity:var(--flower-opacity);-webkit-transform:rotate(0) scale(1);transform:rotate(0) scale(1)}}.seatreg-wp-admin .seatreg-update-notice{position:absolute;left:15px;bottom:100%;margin-bottom:10px;font-size:13px}.seatreg-registrations{--seatreg-donate-rows:3;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-flow:row dense;gap:16px;margin-bottom:32px}.seatreg-registrations #create-registration-form,.seatreg-registrations .donate-wrap,.seatreg-registrations .your-registrations-header{grid-column:1/-1}.seatreg-registrations .donate-wrap{align-self:start}@media screen and (min-width:860px){.seatreg-registrations{grid-template-columns:repeat(3,minmax(0,1fr))}.seatreg-registrations #create-registration-form,.seatreg-registrations .seatreg-registrations-empty,.seatreg-registrations .your-registrations-header{grid-column:1/-3}.seatreg-registrations .donate-wrap{grid-row:1/span var(--seatreg-donate-rows);grid-column:-3/-1}}@media screen and (min-width:1250px){.seatreg-registrations{grid-template-columns:repeat(4,minmax(0,1fr))}}@media screen and (min-width:1600px){.seatreg-registrations{grid-template-columns:repeat(5,minmax(0,1fr))}}@media screen and (min-width:1900px){.seatreg-registrations{grid-template-columns:repeat(6,minmax(0,1fr))}}.seatreg-registrations-empty{grid-column:1/-1;margin-top:28px;padding:24px;border:1px dashed #c3c4c7;border-radius:4px;color:#646970}.seatreg-registration-card{display:flex;font-size:13px;flex-direction:column;row-gap:8px;padding:16px;background-color:#fff;border:1px solid #dcdcde;border-radius:4px}.seatreg-registration-card__head{display:flex;align-items:flex-start;justify-content:space-between;column-gap:8px}.seatreg-registration-card__status{display:flex;flex-shrink:0;align-items:center;column-gap:6px}.seatreg-registration-card__calendar-icon{color:#646970;font-size:14px}.seatreg-registration-card__title{margin:0;overflow-wrap:anywhere}.seatreg-registration-card__title .registration-name-link{color:#333;font-size:18px}.seatreg-registration-card__badge{flex-shrink:0;padding:4px 8px;color:#fff;font-size:12px;font-weight:600}.seatreg-registration-card__badge--open{background-color:#2e7d32}.seatreg-registration-card__badge--scheduled{background-color:#0073aa}.seatreg-registration-card__badge--closed{background-color:#8c8f94}.seatreg-registration-card__badge--ended{background-color:#50575e}.seatreg-registration-card__meta{color:#646970;font-size:13px}.seatreg-registration-card__actions{display:flex;flex-direction:column;align-items:flex-start;row-gap:4px;padding-top:4px}.seatreg-registration-card__actions .btn-link,.seatreg-registration-card__actions a{padding:0;color:#428bca;font-size:14px;text-align:left}.seatreg-registration-card__footer{display:flex;flex-direction:column;row-gap:8px;margin-top:auto;padding-top:12px;border-top:1px solid #c3c4c7}.seatreg-registration-card__footer-date{color:#646970;font-size:12px}.seatreg-registration-card__footer-date .fa{margin-right:4px}.seatreg-registration-card__footer-notice{color:#646970;font-size:13px;font-style:italic}.seatreg-registration-card__stats{display:flex;column-gap:8px}.seatreg-registration-card__stat{display:flex;flex:1;flex-direction:column;text-decoration:none}.seatreg-registration-card__stat:focus,.seatreg-registration-card__stat:hover{text-decoration:none}.seatreg-registration-card__stat:focus .seatreg-registration-card__stat-value,.seatreg-registration-card__stat:hover .seatreg-registration-card__stat-value{color:#428bca}.seatreg-registration-card__stat--highlight .seatreg-registration-card__stat-value{color:#b32d2e}.seatreg-registration-card__stat-value{color:#646970;font-size:18px;font-weight:600;line-height:1.2}.seatreg-registration-card__stat-label{color:#8c8f94;font-size:12px}@media screen and (max-width:782px){.seatreg-registrations{grid-template-columns:minmax(0,1fr)}}html{font-size:100%}.index-icon{margin-right:10px}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:active,.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.seatreg-wp-admin .btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.seatreg-wp-admin .btn-primary:active,.seatreg-wp-admin .btn-primary:hover{background-color:#3276b1;border-color:#285e8e}.seatreg-wp-admin input[type=checkbox]:focus{outline:0}.seatreg-wp-admin{font-family:"Open Sans",sans-serif}.seatreg-wp-admin .home-content{display:flow-root;position:relative}.seatreg-wp-admin .jumbotron{background-image:url(../img/chairs_med.jpg);background-size:cover;margin-left:-20px;margin-bottom:42px}.seatreg-wp-admin .donate-wrap{max-width:100%;display:flex;flex-direction:column;padding:0 15px;align-items:center;text-align:center;row-gap:12px;position:relative}.seatreg-wp-admin .donate-wrap p{margin-bottom:.6rem}.seatreg-wp-admin .donate-wrap>img{margin-right:12px}.seatreg-wp-admin .donate-wrap .donate-paypal{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px}.seatreg-wp-admin .donate-wrap .donate-paypal p{margin:0}.seatreg-wp-admin .donate-wrap .donate-paypal form{display:flex;margin:0}.seatreg-wp-admin .donate-wrap .donate-img{cursor:pointer;transition:transform .15s ease,filter .15s ease;animation:shake 1s;animation-delay:1s;animation-iteration-count:10}.seatreg-wp-admin .donate-wrap .donate-img:focus-visible,.seatreg-wp-admin .donate-wrap .donate-img:hover{transform:scale(1.05);filter:brightness(1.08)}.seatreg-wp-admin .donate-wrap .buy-me-coffee-link img{width:120px}.seatreg-wp-admin .your-registrations-header{margin-top:28px;margin-bottom:24px}.seatreg-wp-admin .nav-tab:first-of-type{margin-left:0}.seatreg-wp-admin .nav-tab{background:#f2f2f2}.new-reg-title{margin-bottom:24px}.seatreg-wp-admin .jumbotron .main-heading{font-size:38px;font-weight:600}.seatreg-wp-admin .jumbotron .jumbotron-text{font-size:21px;font-weight:600}.seatreg-wp-admin .nav-tabs{margin-top:40px}.seatreg-tabs-content{background-color:#f2f2f2;padding:24px;border:1px solid #ccc;border-top:none;position:relative}.seatreg-tabs-content .etabs{margin:0;padding:0 0 6px;background-color:#f2f2f2}.seatreg-tabs-content .tab{display:inline-block;margin-right:2px;padding:6px;zoom:1;background:#fff}.seatreg-tabs-content .tab a{font-size:16px;line-height:2em;display:block;padding:0 30px;outline:0;text-decoration:none;color:#000}.seatreg-tabs-content .tab a:hover,.settings-tab:hover{text-decoration:underline}.seatreg-tabs-content .tab.active{background:#404040;position:relative}.seatreg-tabs-content .tab a.active{font-weight:700;color:#fff}.seatreg-tabs-content .tab-container .panel-container{overflow:hidden}.seatreg-tabs-content .form-group{margin-bottom:25px}.seatreg-settings-form .form-group{max-width:600px}.seatreg-settings-form .flow-summary-group{max-width:none}.settings-tabs{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0 0;padding:0;background-color:#f2f2f2}.settings-tab{background:#fff;border:none;padding:6px 24px;cursor:pointer;font-size:16px;line-height:2em;color:#000}.settings-tab.settings-tab--active{background:#404040;font-weight:700;color:#fff}.settings-tab.settings-tab--active:hover{text-decoration:none}.settings-tab-panels{padding:32px 0 0;background:0 0}.settings-tab-panel.settings-tab-panel--active{display:block}.email-color-fields{display:grid;grid-template-columns:max-content max-content;align-items:center;gap:10px 16px;margin-top:12px}.email-logo-controls{display:flex;align-items:center;gap:12px;margin:12px 0;flex-wrap:wrap}#email-logo-preview,#page-logo-preview{max-height:60px;max-width:200px;border:1px solid #e2e8f0;border-radius:4px;padding:4px;background:#fff}.email-color-field{display:contents}.email-color-field label{font-size:13px;margin:0}.email-color-field input[type=color]{width:48px;height:32px;padding:0;border:1px solid #ccc;border-radius:4px;cursor:pointer}.email-color-field input[type=color]:disabled{opacity:.5;cursor:not-allowed}.seatreg-settings-form #seatreg-settings-submit{margin-top:20px}.booking-flow-details__summary{cursor:pointer;font-weight:700;font-size:14px;padding:4px 0;user-select:none;list-style:none;display:flex;align-items:center;color:#2271b1}.booking-flow-details__summary::-webkit-details-marker{display:none}.booking-flow-details__summary:hover{color:#135e96}.booking-flow-details__icon{margin-right:8px;transition:transform .15s ease}.booking-flow-details[open] .booking-flow-details__icon{transform:rotate(90deg)}.booking-flow-details__hint{font-weight:400;font-size:12px;color:#777;margin-left:8px}.booking-flow-details .help-block{margin-top:10px}#booking-flow-summary .flow-group{margin-bottom:12px}#booking-flow-summary .flow-group:last-child{margin-bottom:0}#booking-flow-summary .flow-group__title{font-weight:600;margin-bottom:4px}#booking-flow-summary .flow-group__list{margin:0;padding-left:20px;list-style:disc}#booking-flow-summary .flow-group__list li{margin-bottom:3px}#booking-flow-summary .flow-jump{margin-left:6px;font-size:12px;color:#2271b1;text-decoration:none}#booking-flow-summary .flow-jump:hover{color:#135e96}.flow-jump-highlight{animation:seatregFlowHighlight 1.6s ease;border-radius:4px}@keyframes seatregFlowHighlight{0%{background-color:#fff3b0}100%{background-color:transparent}}.seatreg-tabs-content #admin-wrapper{width:960px;margin:0 auto;font-family:"Open Sans",sans-serif}.seatreg-tabs-content #my-regs{width:1170px;margin:0 auto;padding:0 15px}.seatreg-tabs-content #server-response-text{font-size:20px}.seatreg-tabs-content .log-out-btn{display:block;float:right;text-decoration:none;width:150px;height:33px;line-height:33px;font-size:18px}.seatreg-tabs-content .log-out-btn .l-pic{float:left;background:url(sprites.png) -5px -388px no-repeat;width:32px;height:33px;padding-right:10px}.seatreg-tabs-content .reg-section{overflow:hidden;min-height:608px}.seatreg-tabs-content .reg-overview-middle-wrap{display:flex;flex-wrap:nowrap;align-items:center}.seatreg-tabs-content .reg-overview-top{padding-bottom:20px;overflow:hidden}.seatreg-tabs-content .overview-calendar-wrap{display:flex;justify-content:center;align-items:center;margin-bottom:20px}.seatreg-tabs-content .overview-calendar-wrap label{margin-bottom:0;text-transform:uppercase}.seatreg-tabs-content .overview-calendar-wrap input{text-align:center;margin-left:12px;width:170px}.seatreg-tabs-content .reg-overview-aside{width:220px;float:left;padding-right:20px;text-overflow:ellipsis;min-height:180px;margin-bottom:20px;position:relative;overflow:auto}.seatreg-tabs-content .room-list{list-style:none;margin:0;padding:0}.seatreg-tabs-content .room-list-active{color:#f47a37}.seatreg-tabs-content .room-list-item{margin-bottom:2px;font-size:18px}.seatreg-tabs-content .first-item{margin-bottom:6px;font-size:20px;text-transform:uppercase}.seatreg-tabs-content .room-list-item:hover{cursor:pointer;color:#f47a37}.seatreg-tabs-content .reg-overview-top-header{font-size:24px;font-weight:700;float:left;min-width:200px;height:50px;line-height:50px;margin-right:10px;display:none}.seatreg-tabs-content .reg-overview-top-header:first-letter{text-transform:capitalize}.seatreg-tabs-content .reg-overview-top-bron-notify{color:#ea6060;font-size:14px;float:left;height:50px;line-height:50px}.seatreg-tabs-content .reg-overview-middle{float:left;width:640px;margin-bottom:30px;margin-left:40px}.seatreg-tabs-content .overview-middle-box{float:left;margin-right:60px}.seatreg-tabs-content .overview-last-box{margin-right:0}.seatreg-tabs-content .reg-overview-bottom{background-color:#404040;padding:20px;clear:both;margin-top:20px}.seatreg-tabs-content .reg-link{display:inline-block;width:500px;background-color:#fff;padding:10px;text-decoration:none;color:#000;margin-bottom:20px}.seatreg-tabs-content .ov-bottom-h{color:#fff;font-size:18px;padding:0;margin-top:0;margin-bottom:20px}.seatreg-tabs-content .ov-bottom-h-2,.seatreg-tabs-content .ov-bottom-h-3{color:#fff;font-size:14px;padding:0 0 0 10px;margin-top:0;margin-bottom:0;cursor:pointer}.seatreg-tabs-content .ov-bottom-h-2:hover,.seatreg-tabs-content .ov-bottom-h-3:hover{color:#fff;text-decoration:underline}.seatreg-tabs-content .copy-link-btn{display:inline-block;background-color:#fff;padding:10px;font-weight:600}.seatreg-tabs-content .reg-seat-item,.seatreg-tabs-content .registration-manager-labels{border-bottom:3px solid #f0f0f0;padding:16px;background-color:#fff}.seatreg-tabs-content .overview-middle-box-stat{color:orange;font-size:36px}.seatreg-tabs-content .stats-doughnut{margin-left:40px}.seatreg-tabs-content .stats-doughnut-legend{display:inline-block;vertical-align:top;margin-left:20px;min-width:160px}.seatreg-tabs-content .legend-block{margin-top:10px}.seatreg-tabs-content .doughnut-legend{width:16px;height:16px;display:inline-block;border-radius:50%;margin-right:12px;vertical-align:bottom}.seatreg-tabs-content .legend-block-percent{float:right}.seatreg-tabs-content .reg-overview-top-date{float:right;line-height:50px}.seatreg-tabs-content .tab_container{overflow:visible!important}.seatreg-tabs-content .panel-container .tab_container{display:none}.seatreg-tabs-content .panel-container .tab_container.active{display:block}.seatreg-tabs-content .first-reg-section .tab_container:before{display:block;content:" ";margin-top:-240px;height:240px;visibility:hidden}.seatreg-tabs-content .tab_container:before{display:block;content:" ";margin-top:-170px;height:170px;visibility:hidden}.seatreg-tabs-content .time-block{margin-bottom:6px;margin-left:10px}.seatreg-tabs-content .reg-seat-item{font-size:14px;overflow:hidden}.seatreg-tabs-content .seat-nr-box{width:60px}.seatreg-tabs-content .seat-date-box,.seatreg-tabs-content .seat-name-box,.seatreg-tabs-content .seat-room-box{width:140px;text-align:center}.seatreg-tabs-content .seat-id-box{margin-right:30px}.seatreg-tabs-content .booking-status-box{margin-left:180px}.seatreg-tabs-content .seat-name-box{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;vertical-align:middle}.seatreg-tabs-content .payment-status-box{min-width:130px;text-align:center;margin-right:40px}.seatreg-tabs-content .border-box{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.seatreg-tabs-content .action-select{float:right}.seatreg-tabs-content .action-select label{margin-left:10px;display:inline-flex;align-items:center}.seatreg-tabs-content .show-more-info{margin-right:16px}.seatreg-tabs-content .differentBgColor{background-color:#f2f2f2}.seatreg-tabs-content .manager-box{display:inline-block}.seatreg-tabs-content .reg-seat-item .booking-id-box{min-width:340px}.seatreg-tabs-content .manager-box-link:hover{cursor:pointer;text-decoration:underline}.seatreg-tabs-content #existing-regs{position:relative}.seatreg-tabs-content .seat-date-label{margin-right:60px}.seatreg-tabs-content .reg-name{font-size:30px;word-wrap:break-word}.seatreg-tabs-content .account-status{text-align:right;margin-top:10px;margin-bottom:-50px;font-weight:600}.seatreg-tabs-content .more-info{display:none;padding-top:10px}.seatreg-tabs-content .action-control{background-color:#404040;text-align:center;width:100px;float:right;cursor:pointer;color:#fff;padding:4px 0;margin-top:24px}.seatreg-settings-form .checkbox label{font-size:14px}.seatreg-tabs-content .settings-heading{margin-top:0;margin-bottom:24px}.seatreg-tabs-content .action-select .bron-action,.seatreg-tabs-content .action-select .permanent-delete-action{margin-left:4px;cursor:pointer;margin-top:0}.seatreg-tabs-content .action-control:hover{text-decoration:underline}.seatreg-tabs-content .action-label{cursor:pointer}.seatreg-tabs-content .reg-section-buttons{width:160px;float:left}.seatreg-tabs-content .admin-right-side{width:900px;margin-right:5px;float:right;position:relative;background-color:#fff}.seatreg-tabs-content .notify-text{text-align:center;margin-top:24px;font-size:20px}.seatreg-tabs-content .action-select label{margin-bottom:0}.seatreg-delete-registration-form .delete-registration-btn,.seatreg-delete-registration-form .delete-registration-btn:active,.seatreg-delete-registration-form .delete-registration-btn:focus,.seatreg-delete-registration-form .delete-registration-btn:hover{padding:24px;min-height:auto;line-height:normal;border:1px solid #ccc;box-shadow:none;background:#fff;font-size:16px;color:red}.seatreg-delete-registration-form .delete-registration-btn:hover{box-shadow:1px 1px 10px 0 rgba(204,204,204,.52)}.change-name-wrap{margin-bottom:8px}.seatreg-tabs-content .f-pic{width:41px;height:41px;background:url(sprites.png) no-repeat}.seatreg-tabs-content .a-build-btn{margin:0;padding:0;border:0}.seatreg-tabs-content .del-reg{margin:20px 0 0;padding:0;border:0;display:block;background-color:#404040;color:#fff;height:40px;width:160px}.seatreg-tabs-content .del-reg:hover{text-decoration:underline;color:red}.seatreg-tabs-content .del-reg:focus{outline:0}.seatreg-tabs-content .btn-style{background-color:#404040;color:#fff;width:160px;height:40px;line-height:40px;text-align:center;cursor:pointer}.seatreg-tabs-content .a-opt-btn,.seatreg-tabs-content .adr-btn{margin:4px;padding:4px;width:140px;height:54px;line-height:42px}.seatreg-tabs-content .btn-style:hover{text-decoration:underline}.seatreg-tabs-content .btn-style-active{background-color:#fff;color:#000;text-transform:uppercase;font-weight:700}.seatreg-tabs-content .a-build-btn .f-pic{float:left;background-position:-3px -336px}.seatreg-tabs-content .a-manage-btn,.seatreg-tabs-content .a-stats-btn{border-bottom:1px solid #e1e5e7}.seatreg-tabs-content .a-manage-btn .f-pic{float:left;background-position:-52px -335px}.seatreg-tabs-content .adr-btn .f-pic{float:left;background-position:-105px -334px}.seatreg-tabs-content .option-box{margin-top:20px;padding-bottom:20px;border-bottom:1px solid #000}.seatreg-tabs-content .setting-box{width:98%;margin:0 auto;padding:0 1%;border-top:1px solid #000}.seatreg-tabs-content .a-opt-btn .f-pic{float:left;background-position:-154px -332px}.seatreg-tabs-content .del-reg-form{text-align:center}.seatreg-tabs-content .del-reg-form:active,.seatreg-tabs-content .del-reg-form:focus{border:none}.seatreg-tabs-content .del-reg .f-pic{float:left;background-position:-203px -331px}.seatreg-tabs-content .a-options-btn{border-bottom:1px solid #e1e5e7}.seatreg-tabs-content .info-box{margin-bottom:20px}.seatreg-tabs-content .option-checkbox{width:20px;height:20px;vertical-align:middle;margin:0!important}.seatreg-tabs-content .select-radio-create{display:none}.seatreg-tabs-content .remove-sel-item{vertical-align:middle}.seatreg-tabs-content .custom-container{display:flex;align-items:center;flex-wrap:nowrap;column-gap:6px;margin-bottom:4px;margin-left:24px;border:1px solid #ccc;border-radius:4px;padding:12px 18px}.seatreg-tabs-content .custom-container label{margin-bottom:0;display:flex;align-items:center;flex:1 1 auto;min-width:0}.seatreg-tabs-content .custom-container label input[type=text],.seatreg-tabs-content .custom-container label select{flex:1 1 auto;min-width:40px;width:auto}.seatreg-tabs-content .custom-container .custom-container-controls{display:flex;align-items:center;flex:0 0 auto;column-gap:4px;margin-left:auto}.seatreg-tabs-content .custom-container .l-text{display:inline-block;min-width:76px;max-width:76px;overflow:hidden;text-overflow:ellipsis}.seatreg-tabs-content .custom-container-move{border:1px solid #ccc;border-radius:4px;padding:2px;cursor:pointer}.seatreg-tabs-content .custom-container-move:hover{background-color:#ccc}.seatreg-tabs-content .custom-container-move-highlight{background-color:#ee0}.seatreg-tabs-content .existing-custom-fields{margin-left:24px}.seatreg-tabs-content .payment-configuration{margin-top:12px;margin-left:24px}#paypal-webhook-check-result:not(:empty),#stripe-webhook-check-result:not(:empty){margin-top:12px}.webhook-check-list{margin:0;padding:0;list-style:none}.webhook-check-list li{margin-bottom:4px}.webhook-check-list .webhook-check-ok{color:#46b450}.webhook-check-list .webhook-check-failed{color:#dc3232}.webhook-check-list .webhook-check-detail{color:#666;word-break:break-all}.seatreg-tabs-content .custom-container input[type=checkbox]{margin-top:0}.seatreg-tabs-content .remove-cust-item{cursor:pointer;color:red;margin-left:6px}.seatreg-tabs-content .cust-field-create{margin-top:10px;margin-left:24px}.seatreg-tabs-content .select-radio-create{margin-bottom:12px}.seatreg-tabs-content .seatreg-settings-form input[type=number],.seatreg-tabs-content .seatreg-settings-form input[type=text]{height:32px;font-size:14px}.seatreg-tabs-content .cust-field-create label,.seatreg-tabs-content .seatreg-settings-form textarea{font-size:14px}.seatreg-tabs-content .cust-field-create .btn{margin-bottom:.5rem}.seatreg-tabs-content .select-option{margin-bottom:6px}.seatreg-tabs-content .cust-input-label{margin-right:10px;width:140px}.seatreg-tabs-content .custom-field-select{margin-right:10px}.seatreg-tabs-content .manager-search-wrap{width:200px;margin-top:6px;float:right}.seatreg-tabs-content .manager-search{border-color:#ccc;border-right:0;height:calc(1.5rem + .75rem + 2px);min-height:calc(1.5rem + .75rem + 2px)}.seatreg-tabs-content .manager-search:focus{box-shadow:none;border-color:#ccc;border-right:0}.seatreg-tabs-content .option-input{width:170px;margin:10px 10px 20px 0;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.seatreg-tabs-content .option-label{font-size:16px}.seatreg-tabs-content .l-text{margin-right:10px;font-size:14px}.seatreg-tabs-content .edit-btn{cursor:pointer}.seatreg-tabs-content .create-new-registration-wrapper{margin-top:20px;margin-bottom:20px;font-weight:700}.seatreg-tabs-content .admin-btn-from{border-bottom:1px solid #e1e5e7}.seatreg-tabs-content .room-list-item[data-active=true]{color:orange}.seatreg-tabs-content .file-type-link{float:right;margin-top:10px;margin-right:20px;font-size:18px;color:#000}.seatreg-map-popup-btn{color:#428bca;font-size:14px}.seatreg-delete-btn,.seatreg-map-popup-btn{padding:0}.seatreg_page_seatreg-management .booking-status-check-wrap input[type=checkbox]{margin-top:0;margin-left:6px}.seatreg-wp-admin .search-button{border-top-left-radius:0;border-bottom-left-radius:0}.seatreg-wp-admin .payment-log-wrap{display:grid;grid-gap:10px;grid-template-columns:minmax(40px,auto) 140px 1fr;color:#228b22}.seatreg-wp-admin .payment-log-wrap .error-log{color:red}.seatreg-wp-admin .payment-log-wrap .info-log{color:#00f}.seatreg-wp-admin .add-payment-log-wrap{display:flex;align-items:center;margin-top:12px}.seatreg-wp-admin .add-payment-log-wrap input,.seatreg-wp-admin .add-payment-log-wrap select{margin-right:12px}@media screen and (max-width:1199px){.seatreg-tabs-content #my-regs{width:970px;padding:0 15px}.seatreg-tabs-content .admin-right-side{width:700px;margin-right:5px}.seatreg-tabs-content .reg-overview-middle{width:440px}.seatreg-tabs-content .overview-middle-box{margin-right:30px}.seatreg-tabs-content .action-select{margin-top:10px;text-align:right;float:right}.seatreg-tabs-content .bg-color{padding-top:80px;background-color:#f2f2f2}}@media screen and (max-width:800px){.seatreg-tabs-content .manager-box{display:block;text-align:left}.seatreg-tabs-content .file-type-link{position:absolute;top:0;margin:0}.seatreg-tabs-content .pdf-link{right:0}.seatreg-tabs-content .text-link{right:150px}.seatreg-tabs-content .xlsx-link{right:70px}.seatreg-tabs-content .manager-search-wrap{margin-top:40px}.seatreg-tabs-content .action-select{float:none;text-align:right;display:block;margin-top:10px}}@media screen and (max-width:992px){.seatreg-tabs-content .reg-section-buttons{width:20%}.seatreg-tabs-content .reg-overview-middle-wrap{display:block}.seatreg-tabs-content #my-regs{width:auto}.seatreg-tabs-content .reg-overview{width:100%}.seatreg-tabs-content .admin-right-side{width:70%;margin:0}.seatreg-tabs-content .reg-overview-aside{float:none;width:100%;max-height:none;min-height:0;text-align:center;margin-bottom:0;padding-right:0}.seatreg-tabs-content .reg-overview-middle{float:none;overflow:hidden;width:100%;padding:20px 20px 10px;margin:0;text-align:center}.seatreg-tabs-content .reg-overview-top-date{float:none;clear:both;text-align:center;margin-top:10px}.seatreg-tabs-content .reg-overview-top-bron-notify{height:30px;margin-bottom:10px;margin-top:10px;float:none;text-align:center}.seatreg-tabs-content .reg-overview-top-bron-notify,.seatreg-tabs-content .reg-overview-top-date,.seatreg-tabs-content .reg-overview-top-header{line-height:20px}.seatreg-tabs-content .time-block{display:inline-block;margin-bottom:4px}.seatreg-tabs-content .reg-link{width:100%;word-wrap:break-word;word-break:break-all}.seatreg-tabs-content .reg-overview-top-header{float:none;text-align:center;word-wrap:break-word;margin-top:20px}.seatreg-tabs-content .overview-middle-box{display:inline-block;float:none;margin:0 4px}.seatreg-tabs-content .room-list-item{display:inline-block;margin-right:20px}.seatreg-tabs-content #alertify{top:30%}.seatreg-tabs-content .reg-overview-donuts{display:block;width:100%;margin:0;text-align:center;float:none;padding:0}.seatreg-tabs-content .reg-overview-top{padding-top:6px;padding-bottom:0;margin-bottom:10px}.seatreg-tabs-content .reg-overview-bottom{clear:both;margin-top:20px}.seatreg-tabs-content .stats-doughnut{margin:0}.seatreg-tabs-content .legend-block{text-align:left}.seatreg-tabs-content .stats-doughnut-legend{margin-left:0}}@media screen and (max-width:776px){.seatreg-tabs-content .reg-section-buttons{width:25%}.seatreg-tabs-content .admin-btn-from,.seatreg-tabs-content .btn-style,.seatreg-tabs-content .del-reg,.seatreg-tabs-content .del-reg-form{width:100%;margin-bottom:4px}.seatreg-tabs-content .account-status{margin-bottom:0}.seatreg-tabs-content .first-reg-section .tab_container:before{margin-top:-300px;height:300px}.seatreg-tabs-content .tab_container:before{margin-top:-310px;height:310px}.seatreg-tabs-content .tab a{padding:0}}@media screen and (max-width:900px){.seatreg-tabs-content .first-reg-section .tab_container:before{margin-top:-330px;height:330px}.seatreg-tabs-content .tab_container:before{margin-top:-250px;height:250px}}@media screen and (max-width:500px){.seatreg-tabs-content .bg-color{padding-top:100px;background-color:#f2f2f2}.seatreg-tabs-content .reg-section-buttons{font-size:12px}.seatreg-tabs-content .first-reg-section .tab_container:before,.seatreg-tabs-content .tab_container:before{margin-top:-330px;height:330px}.seatreg-tabs-content .custom-container input[type=text]{width:60px}}#calendar-dates-list .calendar-date-chip{display:inline-flex;align-items:center;margin:2px 4px 2px 0;padding:2px 4px 2px 8px;background-color:#e7f3ff;border:1px solid #b8daff;border-radius:3px;font-size:12px;color:#04357d}#calendar-dates-list .calendar-date-chip-remove{margin-left:6px;padding:0 3px;border:none;background:0 0;color:#04357d;font-size:14px;line-height:1;cursor:pointer;opacity:.7}#calendar-dates-list .calendar-date-chip-remove:hover{opacity:1;color:#c00}1 .seatreg-tabs-content .add-modal .bottom-action .seat-operations .seat-operation:hover,.seatreg-tabs-content .management-header .management-extra-actions .add-booking:hover span,.seatreg-tabs-content .management-header .management-extra-actions .import-bookings:hover span,.seatreg-tabs-content .seat-id-modal .seat-id-grid .grid-title,.seatreg-wp-admin .nav-tab.nav-tab-active{text-decoration:underline}.seatreg-tabs-content .edit-modal h5{margin-bottom:0}.seatreg-tabs-content .edit-modal .edit-modal-input-wrap,.seatreg-tabs-content .edit-modal .modal-custom{margin-bottom:12px}.seatreg-tabs-content .add-modal h5{margin-bottom:.5rem}.seatreg-tabs-content .add-modal .add-modal-input-wrap{margin-bottom:12px}.seatreg-tabs-content .add-modal .add-modal-input-wrap .seat-id-search{vertical-align:middle;padding-top:20px;margin-left:4px;cursor:pointer}.seatreg-tabs-content .add-modal .modal-custom{margin-bottom:12px}.seatreg-tabs-content .add-modal .add-modal-calendar-date{display:flex;justify-content:center;align-items:center}.seatreg-tabs-content .add-modal .add-modal-calendar-date .fa{margin-right:8px}.seatreg-tabs-content .add-modal .modal-body-items{display:flex;overflow-x:auto}.seatreg-tabs-content .add-modal .modal-body-items .modal-body-item:not(:last-child){margin-right:24px}.seatreg-tabs-content .add-modal .modal-body-items .modal-body-item .input-error{color:red}.seatreg-tabs-content .add-modal .bottom-action{margin-top:24px}.seatreg-tabs-content .add-modal .bottom-action .seat-operations{display:flex;justify-content:center;margin-bottom:12px}.seatreg-tabs-content .add-modal .bottom-action .seat-operations .seat-operation{cursor:pointer}.seatreg-tabs-content .add-modal .bottom-action .seat-operations .seat-operation:first-child{margin-right:12px}.seatreg-tabs-content .add-modal .bottom-action .fa-plus-circle{color:#61B329}.seatreg-tabs-content .add-modal .bottom-action .bottom-action-item__input-error,.seatreg-tabs-content .add-modal .bottom-action .fa-minus-circle{color:red}.seatreg-tabs-content .add-modal .bottom-action .bottom-action-item{cursor:pointer;text-align:center;margin-bottom:12px}.seatreg-tabs-content .add-modal .bottom-action .bottom-action-item__title{font-weight:700}.seatreg-wp-admin .activity-modal__loading{text-align:center}.seatreg-wp-admin .activity-modal__logs{display:grid;grid-template-columns:200px 1fr}#seatreg-booking-manager .bookings-file-modal .date-info{display:flex;justify-content:center;align-items:center;margin-bottom:12px}#seatreg-booking-manager .bookings-file-modal .date-info .fa{margin-right:8px}#seatreg-booking-manager .bookings-file-modal input{margin-left:8px}#seatreg-booking-manager .bookings-file-modal .fa-plus-circle{color:#61B329}#seatreg-booking-manager .bookings-file-modal .form-fields{margin-bottom:12px}#seatreg-booking-manager .bookings-file-modal .custom-filtering{cursor:pointer}#seatreg-booking-manager .bookings-file-modal .custom-filtering-selection{display:none;margin-top:12px}.seatreg-tabs-content .seat-id-modal h5{margin-top:8px}.seatreg-tabs-content .seat-id-modal .seat-id-grid{display:grid;row-gap:8px;grid-template-columns:auto 1fr 1fr;margin-left:40px;grid-column-gap:30px}.seatreg-tabs-content .seat-id-modal .seat-id-grid .grid-title{margin-bottom:8px}#import-bookings-modal .import-booking-modal-error{color:#E0635D;font-size:14px;margin-top:8px}#import-bookings-modal .import-booking-modal-loading{display:flex;flex-direction:column;align-items:center}#import-bookings-modal .import-booking-modal-loading img{margin-bottom:8px}#seatreg-booking-manager .import-bookings-finalization-modal__body{max-height:70vh;overflow-y:auto}#seatreg-booking-manager .import-bookings-finalization-modal__booking{display:flex;align-items:center;border:1px solid #ccc;padding:8px 12px;gap:6px;margin-bottom:8px}#seatreg-booking-manager .import-bookings-finalization-modal__booking--invalid{border-color:#d10516}#seatreg-booking-manager .import-bookings-finalization-modal__trash-icon,#seatreg-booking-manager .import-bookings-finalization-modal__warning-icon{margin-left:auto;color:red;cursor:pointer}#seatreg-booking-manager .import-bookings-finalization-modal__popup{max-width:400px}#seatreg-booking-manager .import-bookings-finalization-modal .warn-text{color:#d10516;font-weight:700}.seatreg-wp-admin .shortcode-modal .shortcode-instructions{margin-top:12px;margin-bottom:0}.seatreg-tabs-content .ajax_loader{position:fixed;top:50%;left:50%;margin-left:-32px;margin-top:-32px;z-index:9999}@media screen and (max-width:992px){.seatreg-tabs-content .ajax_loader{top:20%;left:50%;margin-left:-32px;margin-top:-32px}}.seatreg-tabs-content .management-header{position:relative;display:flex;flex-wrap:wrap;justify-content:space-between;background-color:#F2F2F2;text-transform:uppercase;font-size:20px;min-height:42px;padding:6px 6px 16px}.seatreg-tabs-content .management-header>div{min-width:150px}.seatreg-tabs-content .management-header .pending-bookings-count{color:#E0635D}.seatreg-tabs-content .management-header .management-extra-actions{display:flex;gap:12px;text-transform:none}.seatreg-tabs-content .management-header .management-extra-actions .add-booking{cursor:pointer}.seatreg-tabs-content .management-header .management-extra-actions .add-booking .fa-plus-circle{color:#61B329}.seatreg-tabs-content .management-header .management-extra-actions .import-bookings{cursor:pointer}.seatreg-tabs-content .management-header .management-extra-actions .import-bookings .fa{color:#4ea8f0}.seatreg-tabs-content .management-header .booking-manager-calendar-wrap{width:100%;display:flex;justify-content:center;align-items:center;margin-bottom:12px}.seatreg-tabs-content .management-header .booking-manager-calendar-wrap label{margin-bottom:0}.seatreg-tabs-content .management-header .booking-manager-calendar-wrap input{text-align:center;margin-left:12px;width:170px}.reg-more-items{display:flex;flex-wrap:wrap}.reg-more-items__item{padding:24px;border:1px solid #ccc;border-radius:3px;margin-right:12px;cursor:pointer}.reg-more-items__item:hover{box-shadow:1px 1px 10px 0 rgba(204,204,204,.52)}.reg-more-items__item--delete-form{padding:0}#seatreg-booking-manager .custom-fields .custom-field{display:flex;align-items:center;margin-bottom:8px}#seatreg-booking-manager .custom-fields .custom-field input,#seatreg-booking-manager .custom-fields .custom-field label{margin-bottom:0}#seatreg-booking-manager .custom-fields .custom-field .fa{cursor:pointer;margin-left:8px}#seatreg-settings-form #public-api-tokens{margin-left:24px;margin-bottom:12px}#seatreg-settings-form #public-api-tokens .token-box{display:flex;align-items:center;border:1px solid #ccc;padding:12px;border-radius:4px;column-gap:6px;margin-bottom:12px}#seatreg-settings-form #public-api-tokens .token-box .token-actions{margin-left:auto}#seatreg-settings-form #custom-payments,#seatreg-settings-form .coupon-box__actions,#seatreg-settings-form .coupon-create,#seatreg-settings-form .existing-coupons{margin-left:24px}#seatreg-settings-form #public-api-tokens .token-box .token-actions .remove-token{color:red;cursor:pointer}#seatreg-settings-form #custom-payments .custom-payment{border:1px solid #ccc;padding:12px;border-radius:4px;display:grid;grid-template-columns:auto 1fr;column-gap:24px;row-gap:12px;margin-bottom:24px}#seatreg-settings-form #custom-payments .custom-payment__controls{text-align:center;grid-column:span 2}#seatreg-settings-form .custom-payment-icon-upload{display:flex}#seatreg-settings-form .custom-payment-icon-upload__error{color:red}#seatreg-settings-form .custom-payment-icon-upload__loading{margin-right:8px;display:none}#seatreg-settings-form .current-custom-payment-icon{display:flex;align-items:center}#seatreg-settings-form .current-custom-payment-icon__loading,.settings-tab-panel{display:none}#seatreg-settings-form .current-custom-payment-icon__img{height:74px;margin-right:12px}#seatreg-settings-form .current-custom-payment-icon__delete{cursor:pointer;color:red}#seatreg-booking-manager .approved-booking-email-text{margin-top:12px;display:flex;flex-direction:column;align-items:start;gap:6px}#seatreg-booking-manager .approved-booking-email-text__input-wrapper{display:flex;align-items:center;gap:6px}#seatreg-booking-manager .approved-booking-email-text__warning{color:red}#seatreg-settings-form .existing-coupons{margin-bottom:24px}#seatreg-settings-form .new-coupon{display:flex;align-items:center;gap:8px}#seatreg-settings-form .new-coupon input[type=text]{width:120px}#seatreg-settings-form .new-coupon input[type=number]{width:80px}#seatreg-settings-form .new-coupon__label{font-size:14px;margin-bottom:0}#seatreg-settings-form .coupon-box{display:flex;align-items:center;margin-bottom:12px}#seatreg-settings-form .coupon-box__label{margin-right:8px;font-size:14px}#seatreg-settings-form .coupon-box__value{font-weight:600;min-width:80px}.seatreg-wp-admin .companion-app-form .submit{margin-top:8px}@keyframes shake{0%{transform:translate(1px,1px) rotate(0)}10%{transform:translate(-1px,-2px) rotate(-1deg)}20%{transform:translate(-3px,0) rotate(1deg)}30%{transform:translate(3px,2px) rotate(0)}40%{transform:translate(1px,-1px) rotate(1deg)}50%{transform:translate(-1px,2px) rotate(-1deg)}60%{transform:translate(-3px,1px) rotate(0)}100%,70%{transform:translate(0,0) rotate(0)}}.seatreg-flower-layer{position:absolute;inset:0;z-index:-1;overflow:hidden;pointer-events:none}.seatreg-flower-container{--flower-size:12px;--flower-delay:0s;--flower-opacity:0.2;--flower-petal-reach:calc(var(--flower-size) * 1.42);width:calc(var(--flower-petal-reach) * 2);height:calc(var(--flower-petal-reach) * 2);position:absolute}.seatreg-flower-droplet{border-radius:5px 90%;border-style:solid;border-width:1px;height:var(--flower-size);width:var(--flower-size);position:absolute;top:50%;left:50%;transform-origin:left top;opacity:0}.seatreg-flower-droplet-1{background:#428bca;animation:spin1 5s ease-out;animation-fill-mode:forwards;animation-delay:calc(var(--flower-delay) + 0s)}.seatreg-flower-droplet-2{background:#2271b1;animation:spin2 5s ease-out;animation-fill-mode:forwards;animation-delay:calc(var(--flower-delay) + .05s)}.seatreg-flower-droplet-3{background:#428bca;animation:spin3 5s ease-out;animation-fill-mode:forwards;animation-delay:calc(var(--flower-delay) + .1s)}.seatreg-flower-droplet-4{background:#2271b1;animation:spin4 5s ease-out;animation-fill-mode:forwards;animation-delay:calc(var(--flower-delay) + .15s)}.seatreg-flower-droplet-5{background:#428bca;animation:spin5 5s ease-out;animation-fill-mode:forwards;animation-delay:calc(var(--flower-delay) + .2s)}.seatreg-flower-droplet-6{background:#2271b1;animation:spin6 5s ease-out;animation-fill-mode:forwards;animation-delay:calc(var(--flower-delay) + .25s)}.seatreg-flower-droplet-7{background:#428bca;animation:spin7 5s ease-out;animation-fill-mode:forwards;animation-delay:calc(var(--flower-delay) + .3s)}.seatreg-flower-droplet-8{background:#2271b1;animation:spin8 5s ease-out;animation-fill-mode:forwards;animation-delay:calc(var(--flower-delay) + .35s)}.seatreg-flower-droplet-9{background:#428bca;animation:spin9 5s ease-out;animation-fill-mode:forwards;animation-delay:calc(var(--flower-delay) + .4s)}.seatreg-flower-droplet-10{background:#2271b1;animation:spin10 5s ease-out;animation-fill-mode:forwards;animation-delay:calc(var(--flower-delay) + .45s)}@keyframes spin1{0%{opacity:0;-webkit-transform:rotate(0) scale(.01);transform:rotate(0) scale(.01)}100%,20%,60%{opacity:var(--flower-opacity);-webkit-transform:rotate(324deg) scale(1);transform:rotate(324deg) scale(1)}}@keyframes spin2{0%{opacity:0;-webkit-transform:rotate(0) scale(.01);transform:rotate(0) scale(.01)}100%,20%,60%{opacity:var(--flower-opacity);-webkit-transform:rotate(288deg) scale(1);transform:rotate(288deg) scale(1)}}@keyframes spin3{0%{opacity:0;-webkit-transform:rotate(0) scale(.01);transform:rotate(0) scale(.01)}100%,20%,60%{opacity:var(--flower-opacity);-webkit-transform:rotate(252deg) scale(1);transform:rotate(252deg) scale(1)}}@keyframes spin4{0%{opacity:0;-webkit-transform:rotate(0) scale(.01);transform:rotate(0) scale(.01)}100%,20%,60%{opacity:var(--flower-opacity);-webkit-transform:rotate(216deg) scale(1);transform:rotate(216deg) scale(1)}}@keyframes spin5{0%{opacity:0;-webkit-transform:rotate(0) scale(.01);transform:rotate(0) scale(.01)}100%,20%,60%{opacity:var(--flower-opacity);-webkit-transform:rotate(180deg) scale(1);transform:rotate(180deg) scale(1)}}@keyframes spin6{0%{opacity:0;-webkit-transform:rotate(0) scale(.01);transform:rotate(0) scale(.01)}100%,20%,60%{opacity:var(--flower-opacity);-webkit-transform:rotate(144deg) scale(1);transform:rotate(144deg) scale(1)}}@keyframes spin7{0%{opacity:0;-webkit-transform:rotate(0) scale(.01);transform:rotate(0) scale(.01)}100%,20%,60%{opacity:var(--flower-opacity);-webkit-transform:rotate(108deg) scale(1);transform:rotate(108deg) scale(1)}}@keyframes spin8{0%{opacity:0;-webkit-transform:rotate(0) scale(.01);transform:rotate(0) scale(.01)}100%,20%,60%{opacity:var(--flower-opacity);-webkit-transform:rotate(72deg) scale(1);transform:rotate(72deg) scale(1)}}@keyframes spin9{0%{opacity:0;-webkit-transform:rotate(0) scale(.01);transform:rotate(0) scale(.01)}100%,20%,60%{opacity:var(--flower-opacity);-webkit-transform:rotate(36deg) scale(1);transform:rotate(36deg) scale(1)}}@keyframes spin10{0%{opacity:0;-webkit-transform:rotate(0) scale(.01);transform:rotate(0) scale(.01)}100%,20%,60%{opacity:var(--flower-opacity);-webkit-transform:rotate(0) scale(1);transform:rotate(0) scale(1)}}.seatreg-wp-admin .seatreg-update-notice{position:absolute;left:15px;bottom:100%;margin-bottom:10px;font-size:13px}.seatreg-registrations{--seatreg-donate-rows:3;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-flow:row dense;gap:16px;margin-bottom:32px}.seatreg-registrations #create-registration-form,.seatreg-registrations .donate-wrap,.seatreg-registrations .your-registrations-header{grid-column:1/-1}.seatreg-registrations .donate-wrap{align-self:start}@media screen and (min-width:860px){.seatreg-registrations{grid-template-columns:repeat(3,minmax(0,1fr))}.seatreg-registrations #create-registration-form,.seatreg-registrations .seatreg-registrations-empty,.seatreg-registrations .your-registrations-header{grid-column:1/-3}.seatreg-registrations .donate-wrap{grid-row:1/span var(--seatreg-donate-rows);grid-column:-3/-1}}@media screen and (min-width:1250px){.seatreg-registrations{grid-template-columns:repeat(4,minmax(0,1fr))}}@media screen and (min-width:1600px){.seatreg-registrations{grid-template-columns:repeat(5,minmax(0,1fr))}}@media screen and (min-width:1900px){.seatreg-registrations{grid-template-columns:repeat(6,minmax(0,1fr))}}.seatreg-registrations-empty{grid-column:1/-1;margin-top:28px;padding:24px;border:1px dashed #c3c4c7;border-radius:4px;color:#646970}.seatreg-registration-card{display:flex;font-size:13px;flex-direction:column;row-gap:8px;padding:16px;background-color:#fff;border:1px solid #dcdcde;border-radius:4px}.seatreg-registration-card__head{display:flex;align-items:flex-start;justify-content:space-between;column-gap:8px}.seatreg-registration-card__status{display:flex;flex-shrink:0;align-items:center;column-gap:6px}.seatreg-registration-card__calendar-icon{color:#646970;font-size:14px}.seatreg-registration-card__title{margin:0;overflow-wrap:anywhere}.seatreg-registration-card__title .registration-name-link{color:#333;font-size:18px}.seatreg-registration-card__badge{flex-shrink:0;padding:4px 8px;color:#fff;font-size:12px;font-weight:600}.seatreg-registration-card__badge--open{background-color:#2e7d32}.seatreg-registration-card__badge--scheduled{background-color:#0073aa}.seatreg-registration-card__badge--closed{background-color:#8c8f94}.seatreg-registration-card__badge--ended{background-color:#50575e}.seatreg-registration-card__meta{color:#646970;font-size:13px}.seatreg-registration-card__actions{display:flex;flex-direction:column;align-items:flex-start;row-gap:4px;padding-top:4px}.seatreg-registration-card__actions .btn-link,.seatreg-registration-card__actions a{padding:0;color:#428bca;font-size:14px;text-align:left}.seatreg-registration-card__footer{display:flex;flex-direction:column;row-gap:8px;margin-top:auto;padding-top:12px;border-top:1px solid #c3c4c7}.seatreg-registration-card__footer-date{color:#646970;font-size:12px}.seatreg-registration-card__footer-date .fa{margin-right:4px}.seatreg-registration-card__footer-notice{color:#646970;font-size:13px;font-style:italic}.seatreg-registration-card__stats{display:flex;column-gap:8px}.seatreg-registration-card__stat{display:flex;flex:1;flex-direction:column;text-decoration:none}.seatreg-registration-card__stat:focus,.seatreg-registration-card__stat:hover{text-decoration:none}.seatreg-registration-card__stat:focus .seatreg-registration-card__stat-value,.seatreg-registration-card__stat:hover .seatreg-registration-card__stat-value{color:#428bca}.seatreg-registration-card__stat--highlight .seatreg-registration-card__stat-value{color:#b32d2e}.seatreg-registration-card__stat-value{color:#646970;font-size:18px;font-weight:600;line-height:1.2}.seatreg-registration-card__stat-label{color:#8c8f94;font-size:12px}@media screen and (max-width:782px){.seatreg-registrations{grid-template-columns:minmax(0,1fr)}}.seatreg-overview{--seatreg-overview-confirmed:#2e7d32;--seatreg-overview-pending:#dba617;--seatreg-overview-open:#2271b1;--seatreg-overview-unavailable:#dcdcde;font-size:13px}.seatreg-overview__head{display:flex;flex-wrap:wrap;align-items:center;column-gap:16px;row-gap:8px;padding-bottom:16px;border-bottom:1px solid #dcdcde}.seatreg-overview__identity{display:flex;align-items:center;column-gap:8px;margin-right:auto}.seatreg-overview__title{margin:0;font-size:20px;overflow-wrap:anywhere}.seatreg-overview__calendar-icon{color:#646970;font-size:14px}.seatreg-overview__dates{color:#646970}.seatreg-overview__links{display:flex;column-gap:16px}.seatreg-overview__links a{color:#428bca;font-size:14px}.seatreg-overview__toolbar{display:flex;flex-wrap:wrap;align-items:center;column-gap:24px;row-gap:8px;margin-top:16px}.seatreg-overview__toolbar-field{display:flex;align-items:center;column-gap:12px}.seatreg-overview__toolbar-field label{margin-bottom:0;color:#646970;text-transform:uppercase}.seatreg-overview__toolbar-field input{width:170px;text-align:center}.seatreg-overview__toolbar-field select{min-width:130px}.seatreg-overview__empty{margin-top:24px;padding:24px;border:1px dashed #c3c4c7;border-radius:4px;color:#646970}.seatreg-overview__body{display:grid;grid-template-columns:minmax(0,260px) minmax(0,1fr);gap:24px;margin-top:24px}.seatreg-overview__rooms{display:flex;flex-direction:column;row-gap:4px}.seatreg-overview__room{display:flex;flex-direction:column;row-gap:6px;padding:10px 12px;background-color:#fff;border:1px solid #dcdcde;border-radius:4px;text-align:left;cursor:pointer}.seatreg-overview__room:hover{border-color:#2271b1}.seatreg-overview__room:focus-visible{outline:#2271b1 solid 2px;outline-offset:1px}.seatreg-overview__room[aria-selected=true]{border-color:#2271b1;box-shadow:inset 3px 0 0 #2271b1}.seatreg-overview__room-head{display:flex;align-items:baseline;justify-content:space-between;column-gap:8px}.seatreg-overview__room-name{font-size:14px;font-weight:600;overflow-wrap:anywhere}.seatreg-overview__room-count{flex-shrink:0;color:#646970;font-size:12px}.seatreg-overview__bar{display:flex;height:6px;background-color:var(--seatreg-overview-unavailable);border-radius:3px;overflow:hidden}.seatreg-overview__bar-segment{height:100%}.seatreg-overview__bar-segment--confirmed{background-color:var(--seatreg-overview-confirmed)}.seatreg-overview__bar-segment--pending{background-color:var(--seatreg-overview-pending)}.seatreg-overview__bar-segment--open{background-color:var(--seatreg-overview-open)}.seatreg-overview__panel{padding:20px;background-color:#fff;border:1px solid #dcdcde;border-radius:4px}.seatreg-overview__panel:focus-visible{outline:#2271b1 solid 2px;outline-offset:1px}.seatreg-overview__panel-title{margin:0 0 20px;font-size:16px;overflow-wrap:anywhere}.seatreg-overview__stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.seatreg-overview__stat{display:flex;flex-direction:column;text-decoration:none}.seatreg-overview__stat--link:focus,.seatreg-overview__stat--link:hover{text-decoration:none}.seatreg-overview__stat--link:focus .seatreg-overview__stat-value,.seatreg-overview__stat--link:hover .seatreg-overview__stat-value{color:#428bca}.seatreg-overview__stat--highlight .seatreg-overview__stat-value{color:#b32d2e}.seatreg-overview__stat-value{color:#1d2327;font-size:32px;font-weight:600;line-height:1.2}.seatreg-overview__stat-label{color:#8c8f94;font-size:12px}.seatreg-overview__sprite{position:absolute;width:0;height:0;overflow:hidden}.seatreg-overview__chart{display:flex;flex-direction:column;row-gap:16px;margin-top:24px;padding-top:20px;border-top:1px solid #dcdcde}.seatreg-overview__chart-types{display:flex;column-gap:4px}.seatreg-overview__chart-type{display:flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;color:#646970;background-color:#fff;border:1px solid #dcdcde;border-radius:4px;cursor:pointer}.seatreg-overview__chart-type:hover{color:#2271b1;border-color:#2271b1}.seatreg-overview__chart-type:focus-visible{outline:#2271b1 solid 2px;outline-offset:1px}.seatreg-overview__chart-type[aria-pressed=true]{color:#fff;background-color:#2271b1;border-color:#2271b1}.seatreg-overview__chart-icon{width:16px;height:16px}.seatreg-overview__chart-body{display:flex;flex-wrap:wrap;align-items:center;column-gap:32px;row-gap:16px}.seatreg-overview__canvas-wrap{position:relative;flex:1 1 260px;max-width:380px;height:200px}.seatreg-overview__legend{display:flex;flex-direction:column;row-gap:8px;min-width:180px}.seatreg-overview__legend-row{display:flex;align-items:center;column-gap:10px}.seatreg-overview__legend-swatch{width:12px;height:12px;flex-shrink:0;border-radius:50%}.seatreg-overview__legend-swatch--confirmed{background-color:var(--seatreg-overview-confirmed)}.seatreg-overview__legend-swatch--pending{background-color:var(--seatreg-overview-pending)}.seatreg-overview__legend-swatch--open{background-color:var(--seatreg-overview-open)}.seatreg-overview__legend-label{margin-right:auto}.seatreg-overview__legend-percent{color:#646970;font-variant-numeric:tabular-nums}@media screen and (max-width:992px){.seatreg-overview__body{grid-template-columns:minmax(0,1fr)}}@media screen and (max-width:782px){.seatreg-overview__stats{grid-template-columns:repeat(2,minmax(0,1fr))}}html{font-size:100%}.index-icon{margin-right:10px}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:active,.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.seatreg-wp-admin .btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.seatreg-wp-admin .btn-primary:active,.seatreg-wp-admin .btn-primary:hover{background-color:#3276b1;border-color:#285e8e}.seatreg-wp-admin input[type=checkbox]:focus{outline:0}.seatreg-wp-admin{font-family:"Open Sans",sans-serif}.seatreg-wp-admin .home-content{display:flow-root;position:relative}.seatreg-wp-admin .jumbotron{background-image:url(../img/chairs_med.jpg);background-size:cover;margin-left:-20px;margin-bottom:42px}.seatreg-wp-admin .donate-wrap{max-width:100%;display:flex;flex-direction:column;padding:0 15px;align-items:center;text-align:center;row-gap:12px;position:relative;isolation:isolate}.seatreg-wp-admin .donate-wrap p{margin-bottom:.6rem}.seatreg-wp-admin .donate-wrap>img{margin-right:12px}.seatreg-wp-admin .donate-wrap .donate-paypal{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px}.seatreg-wp-admin .donate-wrap .donate-paypal p{margin:0}.seatreg-wp-admin .donate-wrap .donate-paypal form{display:flex;margin:0}.seatreg-wp-admin .donate-wrap .donate-img{cursor:pointer;transition:transform .15s ease,filter .15s ease;animation:shake 1s;animation-delay:1s;animation-iteration-count:10}.seatreg-wp-admin .donate-wrap .donate-img:focus-visible,.seatreg-wp-admin .donate-wrap .donate-img:hover{transform:scale(1.05);filter:brightness(1.08)}.seatreg-wp-admin .donate-wrap .buy-me-coffee-link img{width:120px}.seatreg-wp-admin .your-registrations-header{margin-top:28px;margin-bottom:24px}.seatreg-wp-admin .nav-tab:first-of-type{margin-left:0}.seatreg-wp-admin .nav-tab{background:#f2f2f2}.new-reg-title{margin-bottom:24px}.seatreg-wp-admin .jumbotron .main-heading{font-size:38px;font-weight:600}.seatreg-wp-admin .jumbotron .jumbotron-text{font-size:21px;font-weight:600}.seatreg-wp-admin .nav-tabs{margin-top:40px}.seatreg-tabs-content{background-color:#f2f2f2;padding:24px;border:1px solid #ccc;border-top:none;position:relative}.seatreg-tabs-content .etabs{margin:0;padding:0 0 6px;background-color:#f2f2f2}.seatreg-tabs-content .tab{display:inline-block;margin-right:2px;padding:6px;zoom:1;background:#fff}.seatreg-tabs-content .tab a{font-size:16px;line-height:2em;display:block;padding:0 30px;outline:0;text-decoration:none;color:#000}.seatreg-tabs-content .action-control:hover,.seatreg-tabs-content .btn-style:hover,.seatreg-tabs-content .del-reg:hover,.seatreg-tabs-content .manager-box-link:hover,.seatreg-tabs-content .tab a:hover,.settings-tab:hover{text-decoration:underline}.seatreg-tabs-content .tab.active{background:#404040;position:relative}.seatreg-tabs-content .tab a.active{font-weight:700;color:#fff}.seatreg-tabs-content .tab-container .panel-container{overflow:hidden}.seatreg-tabs-content .form-group{margin-bottom:25px}.seatreg-settings-form .form-group{max-width:600px}.seatreg-settings-form .form-group-title{margin:0 0 5px;font-size:16px}.seatreg-settings-form .form-group-subfield-label{margin-bottom:2px;font-size:13px}.seatreg-settings-form .flow-summary-group{max-width:none}.settings-tabs{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0 0;padding:0;background-color:#f2f2f2}.settings-tab{background:#fff;border:none;padding:6px 24px;cursor:pointer;font-size:16px;line-height:2em;color:#000}.settings-tab.settings-tab--active{background:#404040;font-weight:700;color:#fff}.settings-tab.settings-tab--active:hover{text-decoration:none}.settings-tab-panels{padding:32px 0 0;background:0 0}.settings-tab-panel.settings-tab-panel--active{display:block}.email-color-fields{display:grid;grid-template-columns:max-content max-content;align-items:center;gap:10px 16px;margin-top:12px}.email-logo-controls{display:flex;align-items:center;gap:12px;margin:12px 0;flex-wrap:wrap}#email-logo-preview,#page-logo-preview{max-height:60px;max-width:200px;border:1px solid #e2e8f0;border-radius:4px;padding:4px;background:#fff}.email-color-field{display:contents}.email-color-field label{font-size:13px;margin:0}.email-color-field input[type=color]{width:48px;height:32px;padding:0;border:1px solid #ccc;border-radius:4px;cursor:pointer}.email-color-field input[type=color]:disabled{opacity:.5;cursor:not-allowed}.seatreg-settings-form #seatreg-settings-submit{margin-top:20px}.booking-flow-details__summary{cursor:pointer;font-weight:700;font-size:14px;padding:4px 0;user-select:none;list-style:none;display:flex;align-items:center;color:#2271b1}.booking-flow-details__summary::-webkit-details-marker{display:none}.booking-flow-details__summary:hover{color:#135e96}.booking-flow-details__icon{margin-right:8px;transition:transform .15s ease}.booking-flow-details[open] .booking-flow-details__icon{transform:rotate(90deg)}.booking-flow-details__hint{font-weight:400;font-size:12px;color:#777;margin-left:8px}.booking-flow-details .help-block{margin-top:10px}#booking-flow-summary .flow-group{margin-bottom:12px}#booking-flow-summary .flow-group:last-child{margin-bottom:0}#booking-flow-summary .flow-group__title{font-weight:600;margin-bottom:4px}#booking-flow-summary .flow-group__list{margin:0;padding-left:20px;list-style:disc}#booking-flow-summary .flow-group__list li{margin-bottom:3px}#booking-flow-summary .flow-jump{margin-left:6px;font-size:12px;color:#2271b1;text-decoration:none}#booking-flow-summary .flow-jump:hover{color:#135e96}.flow-jump-highlight{animation:seatregFlowHighlight 1.6s ease;border-radius:4px}@keyframes seatregFlowHighlight{0%{background-color:#fff3b0}100%{background-color:transparent}}.seatreg-tabs-content #admin-wrapper{width:960px;margin:0 auto;font-family:"Open Sans",sans-serif}.seatreg-tabs-content #my-regs{width:1170px;margin:0 auto;padding:0 15px}.seatreg-tabs-content #server-response-text{font-size:20px}.seatreg-tabs-content .log-out-btn{display:block;float:right;text-decoration:none;width:150px;height:33px;line-height:33px;font-size:18px}.seatreg-tabs-content .log-out-btn .l-pic{float:left;background:url(sprites.png) -5px -388px no-repeat;width:32px;height:33px;padding-right:10px}.seatreg-tabs-content .reg-seat-item,.seatreg-tabs-content .registration-manager-labels{border-bottom:3px solid #f0f0f0;padding:16px;background-color:#fff}.seatreg-tabs-content .reg-section{overflow:hidden;min-height:608px}.seatreg-tabs-content .tab_container{overflow:visible!important}.seatreg-tabs-content .panel-container .tab_container{display:none}.seatreg-tabs-content .panel-container .tab_container.active{display:block}.seatreg-tabs-content .first-reg-section .tab_container:before{display:block;content:" ";margin-top:-240px;height:240px;visibility:hidden}.seatreg-tabs-content .tab_container:before{display:block;content:" ";margin-top:-170px;height:170px;visibility:hidden}.seatreg-tabs-content .reg-seat-item{font-size:14px;overflow:hidden}.seatreg-tabs-content .seat-nr-box{width:60px}.seatreg-tabs-content .seat-date-box,.seatreg-tabs-content .seat-name-box,.seatreg-tabs-content .seat-room-box{width:140px;text-align:center}.seatreg-tabs-content .seat-id-box{margin-right:30px}.seatreg-tabs-content .booking-status-box{margin-left:180px}.seatreg-tabs-content .seat-name-box{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;vertical-align:middle}.seatreg-tabs-content .payment-status-box{min-width:130px;text-align:center;margin-right:40px}.seatreg-tabs-content .border-box{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.seatreg-tabs-content .action-select{float:right}.seatreg-tabs-content .action-select label{margin-left:10px;display:inline-flex;align-items:center}.seatreg-tabs-content .show-more-info{margin-right:16px}.seatreg-tabs-content .differentBgColor{background-color:#f2f2f2}.seatreg-tabs-content .manager-box{display:inline-block}.seatreg-tabs-content .reg-seat-item .booking-id-box{min-width:340px}.seatreg-tabs-content .manager-box-link:hover{cursor:pointer}.seatreg-tabs-content .seat-date-label{margin-right:60px}.seatreg-tabs-content .reg-name{font-size:30px;word-wrap:break-word}.seatreg-tabs-content .account-status{text-align:right;margin-top:10px;margin-bottom:-50px;font-weight:600}.seatreg-tabs-content .more-info{display:none;padding-top:10px}.seatreg-tabs-content .action-control{background-color:#404040;text-align:center;width:100px;float:right;cursor:pointer;color:#fff;padding:4px 0;margin-top:24px}.seatreg-settings-form .checkbox label{font-size:14px}.seatreg-tabs-content .settings-heading{margin-top:0;margin-bottom:24px}.seatreg-tabs-content .action-select .bron-action,.seatreg-tabs-content .action-select .permanent-delete-action{margin-left:4px;cursor:pointer;margin-top:0}.seatreg-tabs-content .action-label{cursor:pointer}.seatreg-tabs-content .reg-section-buttons{width:160px;float:left}.seatreg-tabs-content .admin-right-side{width:900px;margin-right:5px;float:right;position:relative;background-color:#fff}.seatreg-tabs-content .notify-text{text-align:center;margin-top:24px;font-size:20px}.seatreg-tabs-content .action-select label{margin-bottom:0}.seatreg-delete-registration-form .delete-registration-btn,.seatreg-delete-registration-form .delete-registration-btn:active,.seatreg-delete-registration-form .delete-registration-btn:focus,.seatreg-delete-registration-form .delete-registration-btn:hover{padding:24px;min-height:auto;line-height:normal;border:1px solid #ccc;box-shadow:none;background:#fff;font-size:16px;color:red}.seatreg-delete-registration-form .delete-registration-btn:hover{box-shadow:1px 1px 10px 0 rgba(204,204,204,.52)}.change-name-wrap{margin-bottom:8px}.seatreg-tabs-content .f-pic{width:41px;height:41px;background:url(sprites.png) no-repeat}.seatreg-tabs-content .a-build-btn{margin:0;padding:0;border:0}.seatreg-tabs-content .del-reg{margin:20px 0 0;padding:0;border:0;display:block;background-color:#404040;color:#fff;height:40px;width:160px}.seatreg-tabs-content .del-reg:hover{color:red}.seatreg-tabs-content .del-reg:focus{outline:0}.seatreg-tabs-content .btn-style{background-color:#404040;color:#fff;width:160px;height:40px;line-height:40px;text-align:center;cursor:pointer}.seatreg-tabs-content .a-opt-btn,.seatreg-tabs-content .adr-btn{margin:4px;padding:4px;width:140px;height:54px;line-height:42px}.seatreg-tabs-content .btn-style-active{background-color:#fff;color:#000;text-transform:uppercase;font-weight:700}.seatreg-tabs-content .a-build-btn .f-pic{float:left;background-position:-3px -336px}.seatreg-tabs-content .a-manage-btn,.seatreg-tabs-content .a-stats-btn{border-bottom:1px solid #e1e5e7}.seatreg-tabs-content .a-manage-btn .f-pic{float:left;background-position:-52px -335px}.seatreg-tabs-content .adr-btn .f-pic{float:left;background-position:-105px -334px}.seatreg-tabs-content .option-box{margin-top:20px;padding-bottom:20px;border-bottom:1px solid #000}.seatreg-tabs-content .setting-box{width:98%;margin:0 auto;padding:0 1%;border-top:1px solid #000}.seatreg-tabs-content .a-opt-btn .f-pic{float:left;background-position:-154px -332px}.seatreg-tabs-content .del-reg-form{text-align:center}.seatreg-tabs-content .del-reg-form:active,.seatreg-tabs-content .del-reg-form:focus{border:none}.seatreg-tabs-content .del-reg .f-pic{float:left;background-position:-203px -331px}.seatreg-tabs-content .a-options-btn{border-bottom:1px solid #e1e5e7}.seatreg-tabs-content .info-box{margin-bottom:20px}.seatreg-tabs-content .option-checkbox{width:20px;height:20px;vertical-align:middle;margin:0!important}.seatreg-tabs-content .select-radio-create{display:none}.seatreg-tabs-content .remove-sel-item{vertical-align:middle}.seatreg-tabs-content .custom-container{display:flex;align-items:center;flex-wrap:nowrap;column-gap:6px;margin-bottom:4px;margin-left:24px;border:1px solid #ccc;border-radius:4px;padding:12px 18px}.seatreg-tabs-content .custom-container label{margin-bottom:0;display:flex;align-items:center;flex:1 1 auto;min-width:0}.seatreg-tabs-content .custom-container label input[type=text],.seatreg-tabs-content .custom-container label select{flex:1 1 auto;min-width:40px;width:auto}.seatreg-tabs-content .custom-container .custom-container-controls{display:flex;align-items:center;flex:0 0 auto;column-gap:4px;margin-left:auto}.seatreg-tabs-content .custom-container .l-text{display:inline-block;min-width:76px;max-width:76px;overflow:hidden;text-overflow:ellipsis}.seatreg-tabs-content .custom-container-move{border:1px solid #ccc;border-radius:4px;padding:2px;cursor:pointer}.seatreg-tabs-content .custom-container-move:hover{background-color:#ccc}.seatreg-tabs-content .custom-container-move-highlight{background-color:#ee0}.seatreg-tabs-content .existing-custom-fields{margin-left:24px}.seatreg-tabs-content .payment-configuration{margin-top:12px;margin-left:24px}#paypal-webhook-check-result:not(:empty),#stripe-webhook-check-result:not(:empty){margin-top:12px}.webhook-check-list{margin:0;padding:0;list-style:none}.webhook-check-list li{margin-bottom:4px}.webhook-check-list .webhook-check-ok{color:#46b450}.webhook-check-list .webhook-check-failed{color:#dc3232}.webhook-check-list .webhook-check-detail{color:#666;word-break:break-all}.seatreg-tabs-content .custom-container input[type=checkbox]{margin-top:0}.seatreg-tabs-content .remove-cust-item{cursor:pointer;color:red;margin-left:6px}.seatreg-tabs-content .cust-field-create{margin-top:10px;margin-left:24px}.seatreg-tabs-content .select-radio-create{margin-bottom:12px}.seatreg-tabs-content .seatreg-settings-form input[type=number],.seatreg-tabs-content .seatreg-settings-form input[type=text]{height:32px;font-size:14px}.seatreg-tabs-content .cust-field-create label,.seatreg-tabs-content .seatreg-settings-form textarea{font-size:14px}.seatreg-tabs-content .cust-field-create .btn{margin-bottom:.5rem}.seatreg-tabs-content .select-option{margin-bottom:6px}.seatreg-tabs-content .cust-input-label{margin-right:10px;width:140px}.seatreg-tabs-content .custom-field-select{margin-right:10px}.seatreg-tabs-content .manager-search-wrap{width:200px;margin-top:6px;float:right}.seatreg-tabs-content .manager-search{border-color:#ccc;border-right:0;height:calc(1.5rem + .75rem + 2px);min-height:calc(1.5rem + .75rem + 2px)}.seatreg-tabs-content .manager-search:focus{box-shadow:none;border-color:#ccc;border-right:0}.seatreg-tabs-content .option-input{width:170px;margin:10px 10px 20px 0;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.seatreg-tabs-content .option-label{font-size:16px}.seatreg-tabs-content .l-text{margin-right:10px;font-size:14px}.seatreg-tabs-content .edit-btn{cursor:pointer}.seatreg-tabs-content .create-new-registration-wrapper{margin-top:20px;margin-bottom:20px;font-weight:700}.seatreg-tabs-content .admin-btn-from{border-bottom:1px solid #e1e5e7}.seatreg-tabs-content .file-type-link{float:right;margin-top:10px;margin-right:20px;font-size:18px;color:#000}.seatreg-map-popup-btn{color:#428bca;font-size:14px}.seatreg-delete-btn,.seatreg-map-popup-btn{padding:0}.seatreg_page_seatreg-management .booking-status-check-wrap input[type=checkbox]{margin-top:0;margin-left:6px}.seatreg-wp-admin .search-button{border-top-left-radius:0;border-bottom-left-radius:0}.seatreg-wp-admin .payment-log-wrap{display:grid;grid-gap:10px;grid-template-columns:minmax(40px,auto) 140px 1fr;color:#228b22}.seatreg-wp-admin .payment-log-wrap .error-log{color:red}.seatreg-wp-admin .payment-log-wrap .info-log{color:#00f}.seatreg-wp-admin .add-payment-log-wrap{display:flex;align-items:center;margin-top:12px}.seatreg-wp-admin .add-payment-log-wrap input,.seatreg-wp-admin .add-payment-log-wrap select{margin-right:12px}@media screen and (max-width:1199px){.seatreg-tabs-content #my-regs{width:970px;padding:0 15px}.seatreg-tabs-content .admin-right-side{width:700px;margin-right:5px}.seatreg-tabs-content .action-select{margin-top:10px;text-align:right;float:right}.seatreg-tabs-content .bg-color{padding-top:80px;background-color:#f2f2f2}}@media screen and (max-width:800px){.seatreg-tabs-content .manager-box{display:block;text-align:left}.seatreg-tabs-content .file-type-link{position:absolute;top:0;margin:0}.seatreg-tabs-content .pdf-link{right:0}.seatreg-tabs-content .text-link{right:150px}.seatreg-tabs-content .xlsx-link{right:70px}.seatreg-tabs-content .manager-search-wrap{margin-top:40px}.seatreg-tabs-content .action-select{float:none;text-align:right;display:block;margin-top:10px}}@media screen and (max-width:992px){.seatreg-tabs-content .reg-section-buttons{width:20%}.seatreg-tabs-content #my-regs{width:auto}.seatreg-tabs-content .admin-right-side{width:70%;margin:0}.seatreg-tabs-content #alertify{top:30%}}@media screen and (max-width:776px){.seatreg-tabs-content .reg-section-buttons{width:25%}.seatreg-tabs-content .admin-btn-from,.seatreg-tabs-content .btn-style,.seatreg-tabs-content .del-reg,.seatreg-tabs-content .del-reg-form{width:100%;margin-bottom:4px}.seatreg-tabs-content .account-status{margin-bottom:0}.seatreg-tabs-content .first-reg-section .tab_container:before{margin-top:-300px;height:300px}.seatreg-tabs-content .tab_container:before{margin-top:-310px;height:310px}.seatreg-tabs-content .tab a{padding:0}}@media screen and (max-width:900px){.seatreg-tabs-content .first-reg-section .tab_container:before{margin-top:-330px;height:330px}.seatreg-tabs-content .tab_container:before{margin-top:-250px;height:250px}}@media screen and (max-width:500px){.seatreg-tabs-content .bg-color{padding-top:100px;background-color:#f2f2f2}.seatreg-tabs-content .reg-section-buttons{font-size:12px}.seatreg-tabs-content .first-reg-section .tab_container:before,.seatreg-tabs-content .tab_container:before{margin-top:-330px;height:330px}.seatreg-tabs-content .custom-container input[type=text]{width:60px}}#calendar-dates-list .calendar-date-chip{display:inline-flex;align-items:center;margin:2px 4px 2px 0;padding:2px 4px 2px 8px;background-color:#e7f3ff;border:1px solid #b8daff;border-radius:3px;font-size:12px;color:#04357d}#calendar-dates-list .calendar-date-chip-remove{margin-left:6px;padding:0 3px;border:none;background:0 0;color:#04357d;font-size:14px;line-height:1;cursor:pointer;opacity:.7}#calendar-dates-list .calendar-date-chip-remove:hover{opacity:1;color:#c00} -
seatreg/trunk/js/build.js
r3634058 r3693621 526 526 this.needToSave = false; //if user makes changes this will be true. when saved this will be false 527 527 this.roomNameChange = {}; //if room name got changed. store old and new here 528 this.usingSeats = true; //do we use seats or generic place529 528 this.settings = {}; 530 529 this.hasCustomPayments = false; //does registration have custom payments (new ones, not legacy) … … 589 588 var $imgWrap = $("<div class='uploaded-image-box'></div"); 590 589 $imgWrap.append("<img src='" + window.WP_Seatreg.uploads_url + "/room_images/" + window.seatreg.selectedRegistration + "/" + uploaded.file + "' class='uploaded-image' />"); 591 $imgWrap.append("<span class='add-img-room' data-img='"+ uploaded.file +"' data-size='" + uploaded.size[0] + "," + uploaded.size[1] + "'><span class='glyphicon glyphicon-ok' aria-hidden='true'></span>"+ translator.translate('addToRoomBackground') +"</span>");590 $imgWrap.append("<span class='add-img-room' data-img='"+ uploaded.file +"' data-size='" + uploaded.size[0] + "," + uploaded.size[1] + "'><span class='glyphicon glyphicon-ok' aria-hidden='true'></span>"+ seatregFormat(translator.translate('addToRoomBackground'), [seatregRoomNouns().singular]) +"</span>"); 592 591 $imgWrap.append("<span class='up-img-rem' data-img='"+ uploaded.file +"'><span class='glyphicon glyphicon-remove' aria-hidden='true'></span> "+ translator.translate('remove') +"</span>"); 593 592 … … 817 816 'background-color':'yellow', 818 817 }).addClass('legend-box-circle'); 819 textSpan.text( this.using_seats ? translator.translate('pendingSeat') : translator.translate('pendingPlace'));818 textSpan.text(seatregFormat(translator.translate('pendingSeat'), [seatregSeatNouns().singular])); 820 819 break; 821 820 822 821 case 1: 823 822 colorBox.css('background-color','red').addClass('legend-box-circle'); 824 textSpan.text( this.using_seats ? translator.translate('confirmedSeat') : translator.translate('confirmedPlace'));823 textSpan.text(seatregFormat(translator.translate('confirmedSeat'), [seatregSeatNouns().singular])); 825 824 break; 826 825 } … … 967 966 this.rooms[this.roomLocator] = new Room( 968 967 this.roomLocator, 969 this.roomLocator + ' ' + translator.translate('room'),968 this.roomLocator + ' ' + seatregRoomNouns().singular, 970 969 uuid 971 970 ); … … 1038 1037 1039 1038 if(size == 1) { 1040 alert( translator.translate('oneRoomNeeded'));1039 alert(seatregFormat(translator.translate('oneRoomNeeded'), [seatregRoomNouns().singular])); 1041 1040 }else if(size > 1) { 1042 1041 let roomDeletedLocation = this.currentRoom; … … 1203 1202 buttonFocus: "ok" 1204 1203 }); 1205 alertify.alert( translator.translate('alreadyInRoom'));1204 alertify.alert(seatregFormat(translator.translate('alreadyInRoom'), [seatregRoomNouns().singular])); 1206 1205 } 1207 1206 }; … … 2201 2200 buttonFocus: "ok" 2202 2201 }); 2203 alertify.alert( translator.translate('allRoomsNeedName'));2202 alertify.alert(seatregFormat(translator.translate('allRoomsNeedName'), [seatregRoomNouns().plural])); 2204 2203 2205 2204 return false; … … 2335 2334 }else { 2336 2335 this.settings = window.seatreg.settings; 2337 this.usingSeats = window.seatreg.settings.using_seats === '1';2338 2336 this.hasCustomPayments = window.seatreg.settings.custom_payments !== '[]' && window.seatreg.settings.custom_payments !== null; 2339 2337 … … 2697 2695 $('#set-seat-locks').addClass('d-none'); 2698 2696 $lockWrap.append( 2699 '<div class="alert alert-primary">'+ translator.translate('noSeatsSelected') +'</div>'2697 '<div class="alert alert-primary">'+ seatregFormat(translator.translate('noSeatsSelected'), [seatregSeatNouns().plural]) +'</div>' 2700 2698 ); 2701 2699 }else if(selectedBoxes.length == 1) { … … 2714 2712 '<div class="lock-item" data-box-location="' + boxLocation + '">' + 2715 2713 '<div class="lock-item-seat">' + box.seat + '</div>' + 2716 '<label>' + translator.translate('lockSeat') +2714 '<label>' + seatregFormat(translator.translate('lockSeat'), [seatregSeatNouns().singular]) + 2717 2715 '<input type="checkbox" ' + (box.lock ? "checked" : "") + ' />' + 2718 2716 '</label>' + … … 2749 2747 $('#set-prices').addClass('d-none'); 2750 2748 $pricingWrap.append( 2751 '<div class="alert alert-primary">'+ translator.translate('noSeatsSelected') +'</div>'2749 '<div class="alert alert-primary">'+ seatregFormat(translator.translate('noSeatsSelected'), [seatregSeatNouns().plural]) +'</div>' 2752 2750 ); 2753 2751 }else if(selectedBoxes.length == 1) { … … 3392 3390 }); 3393 3391 3394 alertify.confirm( translator.translate('deleteRoom_') + reg.rooms[reg.currentRoom].title + " ?", function (e) {3392 alertify.confirm(seatregFormat(translator.translate('deleteRoomConfirm'), [seatregRoomNouns().singular, reg.rooms[reg.currentRoom].title]), function (e) { 3395 3393 if (e) { 3396 3394 reg.deleteCurrentRoom(); … … 3407 3405 }); 3408 3406 3409 alertify.alert( translator.translate('cantDelRoom_') +'<span class="bold-text">' + reg.rooms[reg.currentRoom].title + '</span>' + translator.translate('_cantDelRoomBecause'));3407 alertify.alert(seatregFormat(translator.translate('cantDeleteRoom'), [seatregRoomNouns().singular, '<span class="bold-text">' + reg.rooms[reg.currentRoom].title + '</span>'])); 3410 3408 } 3411 3409 }); … … 3525 3523 if($('#room-name-dialog-input').val() == '') { 3526 3524 $('#room-name-dialog-input').focus(); 3527 $('.room-name-error').text( translator.translate('roomNameMissing')).css('display','block');3525 $('.room-name-error').text(seatregFormat(translator.translate('roomNameMissing'), [seatregRoomNouns().singularUpper])).css('display','block'); 3528 3526 }else { 3529 3527 if(!reg.roomNameExists($('#room-name-dialog-input').val())) { … … 3539 3537 reg.roomNameChange[initName] = newRoom; 3540 3538 3541 alertify.success( translator.translate('roomNameChanged'));3539 alertify.success(seatregFormat(translator.translate('roomNameChanged'), [seatregRoomNouns().singularUpper])); 3542 3540 }else { 3543 3541 if(reg.rooms[reg.currentRoom].initialName == "") { 3544 3542 reg.rooms[reg.currentRoom].initialName = reg.rooms[reg.currentRoom].title; 3545 3543 } 3546 alertify.success( translator.translate('roomNameSet'));3544 alertify.success(seatregFormat(translator.translate('roomNameSet'), [seatregRoomNouns().singular])); 3547 3545 } 3548 3546 … … 3551 3549 3552 3550 }else { 3553 $('.room-name-error').text( translator.translate('roomNameExists')).css('display','block');3551 $('.room-name-error').text(seatregFormat(translator.translate('roomNameExists'), [seatregRoomNouns().singularUpper])).css('display','block'); 3554 3552 } 3555 3553 } … … 3570 3568 3571 3569 reg.rooms[reg.currentRoom].description = roomDescription; 3572 alertify.success( translator.translate('roomDescriptionSet'));3570 alertify.success(seatregFormat(translator.translate('roomDescriptionSet'), [seatregRoomNouns().singularUpper])); 3573 3571 $('#room-description-dialog').modal('toggle'); 3574 3572 }); … … 3667 3665 if(reg.rooms[reg.currentRoom].backgroundImage === imgName) { 3668 3666 reg.removeCurrentRoomImage(); 3669 $('#activ-room-img-wrap').empty().text( translator.translate('noBgImageInRoom'));3667 $('#activ-room-img-wrap').empty().text(seatregFormat(translator.translate('noBgImageInRoom'), [seatregRoomNouns().singular])); 3670 3668 } 3671 3669 … … 3682 3680 var curImgWrap = $('<div class="cur-img-wrap"></div>'); 3683 3681 var bgImg = $('<img class="uploaded-image" src="' + window.WP_Seatreg.uploads_url + '/room_images/' + seatreg.selectedRegistration + '/' + reg.rooms[reg.currentRoom].backgroundImage + '" />'); 3684 var remImg = $('<span id="rem-room-img"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span> '+ translator.translate('removeFromRoom') +'</span>');3682 var remImg = $('<span id="rem-room-img"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span> '+ seatregFormat(translator.translate('removeFromRoom'), [seatregRoomNouns().singular]) +'</span>'); 3685 3683 3686 3684 curImgWrap.append(bgImg, remImg); … … 3695 3693 var curImgWrap = $('<div class="cur-img-wrap"></div>'); 3696 3694 var bgImg = $('<img class="uploaded-image" src="'+ window.WP_Seatreg.uploads_url + '/room_images/' + seatreg.selectedRegistration + '/' + reg.rooms[reg.currentRoom].backgroundImage + '" />'); 3697 var remImg = $('<span id="rem-room-img"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span> '+ translator.translate('removeFromRoom') +'</span>');3695 var remImg = $('<span id="rem-room-img"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span> '+ seatregFormat(translator.translate('removeFromRoom'), [seatregRoomNouns().singular]) +'</span>'); 3698 3696 3699 3697 curImgWrap.append(bgImg, remImg); 3700 3698 $('#activ-room-img-wrap').append(curImgWrap); 3701 3699 }else { 3702 $('#activ-room-img-wrap').html( translator.translate('noBgImageInRoom'));3700 $('#activ-room-img-wrap').html(seatregFormat(translator.translate('noBgImageInRoom'), [seatregRoomNouns().singular])); 3703 3701 } 3704 3702 }); … … 3708 3706 $('.room-image').remove(); 3709 3707 $(this).closest('.cur-img-wrap').remove(); 3710 $('#activ-room-img-wrap').html( translator.translate('noBgImageInRoom'));3708 $('#activ-room-img-wrap').html(seatregFormat(translator.translate('noBgImageInRoom'), [seatregRoomNouns().singular])); 3711 3709 }); 3712 3710 -
seatreg/trunk/js/seatreg_admin.js
r3680221 r3693621 1 1 (function($) { 2 var canvasSupport = ($('html').hasClass('no-canvas') ? false : true);3 2 var bookingOrderInManager = null; 4 3 var bookingManagerActiveAddBookingIdLookupIndex = 0; … … 40 39 }; 41 40 42 $('.time-stamp').each(function() {43 $(this).text(timeStampToDateString($(this).text()));44 });45 46 41 function seaterg_admin_ajax(action, code, data) { 47 42 return $.ajax({ … … 182 177 } 183 178 184 function timeStampToDateString(timeStampText) {185 if(!isNaN(timeStampText)) {186 var date = new Date(parseInt(timeStampText));187 188 return date.format("d.M.Y H:i");189 }190 191 return timeStampText;192 }193 194 179 function generateUniqueString() { 195 180 const timestamp = new Date().getTime().toString(36); … … 255 240 } 256 241 $('.reg-title-name').text(registrationName); 257 242 243 window.seatreg.selectedRegistration = code; 244 window.seatreg.settings = { 245 paypal_payments: data._response.data.registration[0].paypal_payments, 246 paypal_rest_payments: data._response.data.registration[0].paypal_rest_payments, 247 stripe_payments: data._response.data.registration[0].stripe_payments, 248 custom_payment: data._response.data.registration[0].custom_payment, 249 using_seats: data._response.data.registration[0].using_seats 250 }; 251 window.seatreg.roomNouns = data._response.data.roomNouns; 252 window.seatreg.seatNouns = data._response.data.seatNouns; 253 seatregApplyNouns(); 254 258 255 if(data._response.data.registration[0].registration_layout == null) { 259 window.seatreg.selectedRegistration = code;260 256 $('.seatreg-builder-popup').css({'display': 'block'}); 261 257 window.seatreg.builder.syncData(null); 262 258 }else { 263 window.seatreg.selectedRegistration = code;264 window.seatreg.settings = {265 paypal_payments: data._response.data.registration[0].paypal_payments,266 paypal_rest_payments: data._response.data.registration[0].paypal_rest_payments,267 stripe_payments: data._response.data.registration[0].stripe_payments,268 custom_payment: data._response.data.registration[0].custom_payment,269 using_seats: data._response.data.registration[0].using_seats270 };271 272 259 $('.seatreg-builder-popup').css({'display': 'block'}); 273 260 window.seatreg.builder.syncData( $.parseJSON(data._response.data.registration[0].registration_layout) ); … … 357 344 dateFormat: 'yy-mm-dd', 358 345 onSelect: function(dateText) { 359 $('#overview-calendar-date').val( seatregFormatCalendarDateForDisplay(dateText, WP_Seatreg.SITE_LANGUAGE) ); 360 $('#existing-regs .room-list-item[data-active="true"]').trigger('click'); 346 setCalendarDateUrlParam(dateText); 347 $('#overview-calendar-date').val( seatregFormatCalendarDateForDisplay(dateText, WP_Seatreg.SEATREG_SITE_LANGUAGE) ); 348 alertify.success(translator.translate('reloadingPage')); 349 location.reload(); 361 350 } 362 351 }); … … 365 354 if (initialInternal) { 366 355 $('#overview-calendar-date').val( 367 seatregFormatCalendarDateForDisplay(initialInternal, WP_Seatreg.S ITE_LANGUAGE)356 seatregFormatCalendarDateForDisplay(initialInternal, WP_Seatreg.SEATREG_SITE_LANGUAGE) 368 357 ); 369 358 } 370 359 } 371 360 initOverviewCalendarDatePicker(); 361 362 var seatregOverviewChartColors = { 363 confirmed: '#2e7d32', 364 pending: '#dba617', 365 open: '#2271b1' 366 }; 367 368 //Column and bar are the same Chart.js type, told apart by which axis the categories run along 369 var seatregOverviewChartTypes = { 370 doughnut: { type: 'doughnut' }, 371 pie: { type: 'pie' }, 372 column: { type: 'bar', indexAxis: 'x' }, 373 bar: { type: 'bar', indexAxis: 'y' } 374 }; 375 376 function seatregOverviewChartConfig(canvas, chartType) { 377 var shape = seatregOverviewChartTypes[chartType] || seatregOverviewChartTypes.doughnut; 378 var isBar = shape.type === 'bar'; 379 var values = ['confirmed', 'pending', 'open'].map(function(part) { 380 return parseInt($(canvas).attr('data-' + part), 10) || 0; 381 }); 382 383 return { 384 type: shape.type, 385 data: { 386 labels: [ 387 translator.translate('overviewConfirmed'), 388 translator.translate('overviewPending'), 389 translator.translate('overviewOpen') 390 ], 391 datasets: [{ 392 data: values, 393 backgroundColor: [ 394 seatregOverviewChartColors.confirmed, 395 seatregOverviewChartColors.pending, 396 seatregOverviewChartColors.open 397 ], 398 borderWidth: isBar ? 0 : 2, 399 borderColor: '#fff' 400 }] 401 }, 402 options: { 403 indexAxis: shape.indexAxis, 404 responsive: true, 405 maintainAspectRatio: false, 406 animation: false, 407 //The screen has its own legend beside the chart, with the percentages Chart.js does not show 408 plugins: { legend: { display: false } }, 409 scales: isBar ? { 410 x: { beginAtZero: true, ticks: { precision: 0 }, grid: { display: shape.indexAxis === 'y' } }, 411 y: { beginAtZero: true, ticks: { precision: 0 }, grid: { display: shape.indexAxis === 'x' } } 412 } : {} 413 } 414 }; 415 } 416 417 //Every room's numbers are rendered up front, so switching is only a matter of which panel is shown. 418 //A chart is drawn the first time its panel is shown, because Chart.js cannot size a hidden canvas 419 function initOverviewRoomTabs() { 420 var $tabs = $('.seatreg-overview__rooms [role="tab"]'); 421 422 if( $tabs.length === 0 ) { 423 return; 424 } 425 426 var charts = {}; 427 var chartType = $('.seatreg-overview__chart-type[aria-pressed="true"]').first().attr('data-chart-type') || 'doughnut'; 428 429 function drawChart($panel) { 430 var canvas = $panel.find('.seatreg-overview__canvas').get(0); 431 432 if( !canvas || typeof Chart === 'undefined' ) { 433 return; 434 } 435 436 var panelId = $panel.attr('id'); 437 438 if( charts[panelId] ) { 439 charts[panelId].resize(); 440 441 return; 442 } 443 444 charts[panelId] = new Chart(canvas.getContext('2d'), seatregOverviewChartConfig(canvas, chartType)); 445 } 446 447 function selectTab($tab, moveFocus) { 448 $tabs.attr('aria-selected', 'false').attr('tabindex', '-1'); 449 $('.seatreg-overview__panel').prop('hidden', true); 450 451 $tab.attr('aria-selected', 'true').attr('tabindex', '0'); 452 453 var $panel = $('#' + $tab.attr('aria-controls')); 454 $panel.prop('hidden', false); 455 drawChart($panel); 456 457 if( moveFocus ) { 458 $tab.trigger('focus'); 459 } 460 } 461 462 $tabs.on('click', function() { 463 selectTab($(this), false); 464 }); 465 466 $tabs.on('keydown', function(event) { 467 var index = $tabs.index(this); 468 var nextIndex = null; 469 470 switch(event.key) { 471 case 'ArrowDown': 472 case 'ArrowRight': 473 nextIndex = (index + 1) % $tabs.length; 474 break; 475 case 'ArrowUp': 476 case 'ArrowLeft': 477 nextIndex = (index - 1 + $tabs.length) % $tabs.length; 478 break; 479 case 'Home': 480 nextIndex = 0; 481 break; 482 case 'End': 483 nextIndex = $tabs.length - 1; 484 break; 485 default: 486 return; 487 } 488 489 event.preventDefault(); 490 selectTab($tabs.eq(nextIndex), true); 491 }); 492 493 //Every panel carries its own set of buttons, so the pressed one is kept in step across all of them 494 $('.seatreg-overview__panels').on('click', '.seatreg-overview__chart-type', function() { 495 var picked = $(this).attr('data-chart-type'); 496 497 if( picked === chartType ) { 498 return; 499 } 500 501 chartType = picked; 502 503 $('.seatreg-overview__chart-type').each(function() { 504 $(this).attr('aria-pressed', $(this).attr('data-chart-type') === chartType ? 'true' : 'false'); 505 }); 506 507 Object.keys(charts).forEach(function(panelId) { 508 charts[panelId].destroy(); 509 delete charts[panelId]; 510 }); 511 512 drawChart($('.seatreg-overview__panel:not([hidden])')); 513 }); 514 515 drawChart($('.seatreg-overview__panel:not([hidden])')); 516 } 517 518 //Chart.js is enqueued on this screen only, so wait for every footer script to have run 519 $(function() { 520 initOverviewRoomTabs(); 521 }); 372 522 373 523 function initBookingManagerCalendarDatePicer() { … … 378 528 onSelect: function(dateText) { 379 529 setCalendarDateUrlParam(dateText); 380 $('#booking-manager-calendar-date').val( seatregFormatCalendarDateForDisplay(dateText, WP_Seatreg.S ITE_LANGUAGE) );530 $('#booking-manager-calendar-date').val( seatregFormatCalendarDateForDisplay(dateText, WP_Seatreg.SEATREG_SITE_LANGUAGE) ); 381 531 alertify.success(translator.translate('reloadingPage')); 382 532 location.reload(); … … 386 536 if (initialInternal) { 387 537 $('#booking-manager-calendar-date').val( 388 seatregFormatCalendarDateForDisplay(initialInternal, WP_Seatreg.S ITE_LANGUAGE)538 seatregFormatCalendarDateForDisplay(initialInternal, WP_Seatreg.SEATREG_SITE_LANGUAGE) 389 539 ); 390 540 } … … 477 627 window.history.replaceState(null, '', '#' + targetPanel.attr('id')); 478 628 } 479 });480 481 $('#existing-regs-wrap').on('click', '.room-list-item', function() {482 var code = $('#seatreg-reg-code').val();483 var target = $(this).attr('data-stats-target');484 var calendarDate = $('#overview-calendar-date-value').val() || null;485 var overViewContainer = $(this).closest('.reg-overview');486 overViewContainer.append($('<img>').attr('src', WP_Seatreg.plugin_dir_url + 'img/ajax_loader.gif').addClass('ajax_loader'));487 488 var promise = seaterg_admin_ajax2('seatreg_get_room_stats', code, {489 target: target,490 calendarDate: calendarDate491 });492 493 promise.done(function(data) {494 overViewContainer.replaceWith(data).promise().done(function() {495 $('#existing-regs-wrap .reg-overview').find('.time-stamp').each(function() {496 $(this).text(timeStampToDateString($(this).text()));497 });498 499 var donutWrapper = $('#existing-regs-wrap').find('.reg-overview-donuts');500 var doughnutData = [501 {502 value: parseInt(donutWrapper.find('.seats-open-don').val()),503 color:"#61B329"504 },505 {506 value : parseInt(donutWrapper.find('.seats-bron-don').val()),507 color : "#FFFF00"508 },509 {510 value : parseInt(donutWrapper.find('.seats-taken-don').val()),511 color : "red"512 }513 514 ];515 516 if( canvasSupport) {517 var ctx = donutWrapper.find('.stats-doughnut').get(0).getContext("2d");518 var myNewChart = new Chart(ctx).Doughnut(doughnutData,{animation: false});519 }520 521 });522 initOverviewCalendarDatePicker();523 524 });525 promise.fail = seatreg_admin_ajax_error;526 });527 528 $('.reg-overview-donuts').each(function() {529 var donutWrapper = $(this);530 var doughnutData = [531 {532 value: parseInt(donutWrapper.find('.seats-open-don').val()),533 color:"#61B329"534 },535 {536 value : parseInt(donutWrapper.find('.seats-bron-don').val()),537 color : "#FFFF00"538 },539 {540 value : parseInt(donutWrapper.find('.seats-taken-don').val()),541 color : "red"542 }543 544 ];545 546 if(canvasSupport) {547 var ctx = donutWrapper.find('.stats-doughnut').get(0).getContext("2d");548 var myNewChart = new Chart(ctx).Doughnut(doughnutData,{animation: false});549 }550 629 }); 551 630 … … 1153 1232 $bookingWrap.append('<div><b>Name: </b>' + bookingData.first_name + ',</div>'); 1154 1233 $bookingWrap.append('<div>' + bookingData.last_name + ',</div>'); 1155 $bookingWrap.append('<div><b> Seat: </b>' + bookingData.seat_nr + '</div>');1234 $bookingWrap.append('<div><b>' + seatregSeatNouns().singularUpper + ': </b>' + bookingData.seat_nr + '</div>'); 1156 1235 1157 1236 if(validationData.room_name) { 1158 $bookingWrap.append('<div><b> Room: </b>' + validationData.room_name + '</div>');1237 $bookingWrap.append('<div><b>' + seatregRoomNouns().singularUpper + ': </b>' + validationData.room_name + '</div>'); 1159 1238 } 1160 1239 … … 1305 1384 '<label for="booker-email-change-field"><h5>' + 1306 1385 translator.translate('bookingMainEmail') + 1307 '</h5></label> <i class="fa fa-question-circle seatreg-ui-tooltip" aria-hidden="true" title="' + translator.translate('multiBookingMailEmailEditDesc') + '"></i><br>' +1386 '</h5></label> <i class="fa fa-question-circle seatreg-ui-tooltip" aria-hidden="true" title="' + seatregFormat(translator.translate('multiBookingMailEmailEditDesc'), [seatregSeatNouns().singular]) + '"></i><br>' + 1308 1387 '<input type="email" id="booker-email-change-field" name="booker-email" class="modal-email-input" value="'+ info.data('booker-email') +'" />' 1309 1388 ); … … 1506 1585 1507 1586 if(data.status === 'room-searching') { 1508 $('#add-booking-modal-form .modal-body-item').eq(data.index).find('[name="room[]"]').closest('.add-modal-input-wrap').find('.input-error').text( translator.translate('roomNotExist'));1509 alertify.error( translator.translate('roomNotExist'));1587 $('#add-booking-modal-form .modal-body-item').eq(data.index).find('[name="room[]"]').closest('.add-modal-input-wrap').find('.input-error').text(seatregFormat(translator.translate('roomNotExist'), [seatregRoomNouns().singularUpper])); 1588 alertify.error(seatregFormat(translator.translate('roomNotExist'), [seatregRoomNouns().singularUpper])); 1510 1589 } 1511 1590 if(data.status === 'seat-id-searching') { 1512 $('#add-booking-modal-form .modal-body-item').eq(data.index).find('[name="seat-id[]"]').closest('.add-modal-input-wrap').find('.input-error').text( translator.translate('seatIdNotExist'));1513 alertify.error( translator.translate('seatIdNotExist'));1591 $('#add-booking-modal-form .modal-body-item').eq(data.index).find('[name="seat-id[]"]').closest('.add-modal-input-wrap').find('.input-error').text(seatregFormat(translator.translate('seatIdNotExist'), [seatregSeatNouns().singularUpper])); 1592 alertify.error(seatregFormat(translator.translate('seatIdNotExist'), [seatregSeatNouns().singularUpper])); 1514 1593 } 1515 1594 if(data.status === 'seat-booked') { 1516 $('#add-booking-modal-form .modal-body-item').eq(data.index).find('[name="seat-id[]"]').closest('.add-modal-input-wrap').find('.input-error').text( translator.translate('seatAlreadyBookedPending'));1517 alertify.error( translator.translate('seatAlreadyBookedPending'));1595 $('#add-booking-modal-form .modal-body-item').eq(data.index).find('[name="seat-id[]"]').closest('.add-modal-input-wrap').find('.input-error').text(seatregFormat(translator.translate('seatAlreadyBookedPending'), [seatregSeatNouns().singularUpper])); 1596 alertify.error(seatregFormat(translator.translate('seatAlreadyBookedPending'), [seatregSeatNouns().singularUpper])); 1518 1597 } 1519 1598 if(data.status === 'create failed') { … … 1528 1607 } 1529 1608 if(data.status === 'duplicate-seat') { 1530 alertify.error( translator.translate('duplicateSeatDetected'));1609 alertify.error(seatregFormat(translator.translate('duplicateSeatDetected'), [seatregSeatNouns().singular])); 1531 1610 } 1532 1611 if(data.status === 'seat-price-not-found') { … … 1690 1769 }else { 1691 1770 if(data.status == 'room-searching') { 1692 $('#edit-room-error').text( translator.translate('roomNotExist'));1693 alertify.error( translator.translate('roomNotExist'));1771 $('#edit-room-error').text(seatregFormat(translator.translate('roomNotExist'), [seatregRoomNouns().singularUpper])); 1772 alertify.error(seatregFormat(translator.translate('roomNotExist'), [seatregRoomNouns().singularUpper])); 1694 1773 } 1695 1774 if(data.status == 'seat-id-searching') { 1696 $('#edit-seat-error').text( translator.translate('seatIdNotExist'));1697 alertify.error( translator.translate('seatIdNotExist'));1775 $('#edit-seat-error').text(seatregFormat(translator.translate('seatIdNotExist'), [seatregSeatNouns().singularUpper])); 1776 alertify.error(seatregFormat(translator.translate('seatIdNotExist'), [seatregSeatNouns().singularUpper])); 1698 1777 } 1699 1778 if(data.status == 'seat-booked') { 1700 $('#edit-seat-error').text( translator.translate('seatAlreadyBookedPending'));1701 alertify.error( translator.translate('seatAlreadyBookedPending'));1779 $('#edit-seat-error').text(seatregFormat(translator.translate('seatAlreadyBookedPending'), [seatregSeatNouns().singularUpper])); 1780 alertify.error(seatregFormat(translator.translate('seatAlreadyBookedPending'), [seatregSeatNouns().singularUpper])); 1702 1781 } 1703 1782 if(data.status == 'update failed') { … … 2679 2758 */ 2680 2759 2681 // Lightweight printf-style replace supporting %s, %d and positional %1$d, %2$s tokens.2682 function seatregFlowFormat(template, args) {2683 if (!args || !args.length) {2684 return template;2685 }2686 2687 return template2688 .replace(/%(\d+)\$[ds]/g, function(match, position) {2689 return args[parseInt(position, 10) - 1];2690 })2691 .replace(/%[ds]/g, (function() {2692 var index = 0;2693 return function() {2694 return args[index++];2695 };2696 })());2697 }2698 2699 2760 // Appends a titled, bulleted group to the summary box (skipped when it has no items). 2700 2761 function seatregAppendFlowGroup($box, title, items) { … … 2740 2801 var closeReason = ($form.find('#registration-close-reason').val() || '').trim(); 2741 2802 if (closeReason !== '') { 2742 closedText += ' ' + seatregF lowFormat(t('flowClosedReason'), [closeReason]);2803 closedText += ' ' + seatregFormat(t('flowClosedReason'), [closeReason]); 2743 2804 } 2744 2805 $box.text(closedText); … … 2747 2808 } 2748 2809 2810 // The summary follows the form as it is typed, so it reads the noun fields rather than the 2811 // saved nouns, and falls back to the checkbox the same way the server does. 2812 var typedSingular = ($form.find('#seat-noun-singular').val() || '').trim(); 2813 var typedPlural = ($form.find('#seat-noun-plural').val() || '').trim(); 2814 var renamed = typedSingular !== '' && typedPlural !== ''; 2749 2815 var usingSeats = $form.find('#using-seats').is(':checked'); 2750 var nounSingular = usingSeats ? t('flowSeatSingular') : t('flowPlaceSingular');2751 var nounPlural = usingSeats ? t('flowSeatPlural') : t('flowPlacePlural');2816 var nounSingular = renamed ? typedSingular : (usingSeats ? t('flowSeatSingular') : t('flowPlaceSingular')); 2817 var nounPlural = renamed ? typedPlural : (usingSeats ? t('flowSeatPlural') : t('flowPlacePlural')); 2752 2818 2753 2819 // Each item carries its sentence and the selector of the setting it describes (for the jump link). … … 2779 2845 var wpBookingLimit = parseInt($form.find('#wp-user-booking-limit').val(), 10); 2780 2846 if (!isNaN(wpBookingLimit) && wpBookingLimit > 0) { 2781 beforeBooking.push(item(seatregF lowFormat(t('flowWpBookingLimit'), [wpBookingLimit, nounPlural]), '#wp-user-booking-limit'));2847 beforeBooking.push(item(seatregFormat(t('flowWpBookingLimit'), [wpBookingLimit, nounPlural]), '#wp-user-booking-limit')); 2782 2848 } 2783 2849 var wpSeatLimit = parseInt($form.find('#wp-user-bookings-seat-limit').val(), 10); 2784 2850 if (!isNaN(wpSeatLimit) && wpSeatLimit > 0) { 2785 beforeBooking.push(item(seatregF lowFormat(t('flowWpSeatLimit'), [wpSeatLimit, nounPlural]), '#wp-user-bookings-seat-limit'));2851 beforeBooking.push(item(seatregFormat(t('flowWpSeatLimit'), [wpSeatLimit, nounPlural]), '#wp-user-bookings-seat-limit')); 2786 2852 } 2787 2853 } … … 2820 2886 var maxSeats = parseInt($form.find('#registration-max-seats').val(), 10); 2821 2887 if (!isNaN(maxSeats) && maxSeats > 0) { 2822 makingBooking.push(item(seatregF lowFormat(t('flowSelectMax'), [nounPlural, maxSeats]), '#registration-max-seats'));2888 makingBooking.push(item(seatregFormat(t('flowSelectMax'), [nounPlural, maxSeats]), '#registration-max-seats')); 2823 2889 } else { 2824 makingBooking.push(item(seatregF lowFormat(t('flowSelect'), [nounPlural]), '#using-seats'));2890 makingBooking.push(item(seatregFormat(t('flowSelect'), [nounPlural]), '#using-seats')); 2825 2891 } 2826 2892 // Booking data shown publicly on the map for already-booked seats/places. … … 2831 2897 }); 2832 2898 if (shownBookingDetails.length > 0) { 2833 makingBooking.push(item(seatregF lowFormat(t('flowShowBookingData'), [nounPlural, shownBookingDetails.join(', ')]), 'input[name="show-booking-data-registration[]"]'));2899 makingBooking.push(item(seatregFormat(t('flowShowBookingData'), [nounPlural, shownBookingDetails.join(', ')]), 'input[name="show-booking-data-registration[]"]')); 2834 2900 } 2835 2901 if ($form.find('#automatic-booking-confirm-dialog').is(':checked')) { 2836 makingBooking.push(item(seatregF lowFormat(t('flowAutoDialog'), [nounSingular]), '#automatic-booking-confirm-dialog'));2902 makingBooking.push(item(seatregFormat(t('flowAutoDialog'), [nounSingular]), '#automatic-booking-confirm-dialog')); 2837 2903 } else { 2838 makingBooking.push(item(seatregF lowFormat(t('flowManualDialog'), [nounPlural]), '#automatic-booking-confirm-dialog'));2904 makingBooking.push(item(seatregFormat(t('flowManualDialog'), [nounPlural]), '#automatic-booking-confirm-dialog')); 2839 2905 } 2840 2906 // Coupons are applied in the cart (only shown when payment is enabled) before entering details. … … 2843 2909 } 2844 2910 if ($form.find('#one-person-checkout').is(':checked')) { 2845 makingBooking.push(item(seatregF lowFormat(t('flowOnePersonCheckout'), [nounSingular]), '#one-person-checkout'));2911 makingBooking.push(item(seatregFormat(t('flowOnePersonCheckout'), [nounSingular]), '#one-person-checkout')); 2846 2912 } else { 2847 makingBooking.push(item(seatregF lowFormat(t('flowPerSeatCheckout'), [nounSingular]), '#one-person-checkout'));2913 makingBooking.push(item(seatregFormat(t('flowPerSeatCheckout'), [nounSingular]), '#one-person-checkout')); 2848 2914 } 2849 2915 if ($form.find('#require-name').is(':checked')) { … … 2855 2921 var emailLimit = parseInt($form.find('#bookings-email-limit').val(), 10); 2856 2922 if (!isNaN(emailLimit) && emailLimit > 0) { 2857 makingBooking.push(item(seatregF lowFormat(t('flowEmailLimit'), [emailLimit, nounPlural]), '#bookings-email-limit'));2923 makingBooking.push(item(seatregFormat(t('flowEmailLimit'), [emailLimit, nounPlural]), '#bookings-email-limit')); 2858 2924 } 2859 2925 var $customFields = $form.find('.existing-custom-fields .custom-container'); … … 2893 2959 var pendingExpiration = parseInt($form.find('#pending-expiration').val(), 10); 2894 2960 if (!isNaN(pendingExpiration) && pendingExpiration > 0) { 2895 var expirationText = seatregF lowFormat(t('flowPendingExpiration'), [pendingExpiration]);2961 var expirationText = seatregFormat(t('flowPendingExpiration'), [pendingExpiration]); 2896 2962 2897 2963 // Payment statuses that don't block deletion of an expired pending booking. … … 2901 2967 }); 2902 2968 if (deletableStatusLabels.length > 0) { 2903 expirationText += ' ' + seatregF lowFormat(t('flowPendingExpirationStatuses'), [deletableStatusLabels.join(', ')]);2969 expirationText += ' ' + seatregFormat(t('flowPendingExpirationStatuses'), [deletableStatusLabels.join(', ')]); 2904 2970 } 2905 2971 -
seatreg/trunk/js/utils.js
r3486068 r3693621 28 28 } 29 29 30 // Lightweight printf-style replace supporting %s, %d and positional %1$d, %2$s tokens. 31 function seatregFormat(template, args) { 32 if (!args || !args.length) { 33 return template; 34 } 35 36 return template 37 .replace(/%(\d+)\$[ds]/g, function(match, position) { 38 return args[parseInt(position, 10) - 1]; 39 }) 40 .replace(/%[ds]/g, (function() { 41 var index = 0; 42 return function() { 43 return args[index++]; 44 }; 45 })()); 46 } 47 48 /** 49 * The word a registration uses for a room, in all four forms. The builder swaps registrations 50 * without a reload so its nouns arrive with the layout, and so does the registration view, which 51 * has no localized object; every other screen reloads and gets them from that. 52 * @returns {Object} with singular, plural, singularUpper and pluralUpper 53 */ 54 function seatregRoomNouns() { 55 if (window.seatreg && window.seatreg.roomNouns) { 56 return window.seatreg.roomNouns; 57 } 58 59 return window.WP_Seatreg && WP_Seatreg.room_nouns; 60 } 61 62 /** 63 * The word a registration uses for a seat, in the same four forms and reaching the screen the 64 * same two ways. 65 * @returns {Object} with singular, plural, singularUpper and pluralUpper 66 */ 67 function seatregSeatNouns() { 68 if (window.seatreg && window.seatreg.seatNouns) { 69 return window.seatreg.seatNouns; 70 } 71 72 return window.WP_Seatreg && WP_Seatreg.seat_nouns; 73 } 74 75 /** 76 * Repaints the builder chrome, which is rendered once for no registration in particular. 77 * A node names the noun it wants in data-seatreg-noun-kind and data-seatreg-noun and, when the 78 * noun sits inside a sentence, that sentence in data-seatreg-noun-template. A sentence needing 79 * more than one form lists them comma separated, in the order the sentence takes them. 80 * data-seatreg-noun-attr writes to that attribute instead of the node's text. 81 */ 82 function seatregApplyNouns() { 83 var nodes = document.querySelectorAll('[data-seatreg-noun]'); 84 var nouns = { 85 room: seatregRoomNouns(), 86 seat: seatregSeatNouns() 87 }; 88 89 for (var i = 0; i < nodes.length; i++) { 90 var kind = nouns[nodes[i].getAttribute('data-seatreg-noun-kind')]; 91 92 if (!kind) { 93 continue; 94 } 95 96 var forms = nodes[i].getAttribute('data-seatreg-noun').split(','); 97 var template = nodes[i].getAttribute('data-seatreg-noun-template'); 98 var attribute = nodes[i].getAttribute('data-seatreg-noun-attr'); 99 var nounArgs = []; 100 101 for (var j = 0; j < forms.length; j++) { 102 nounArgs.push(kind[forms[j]]); 103 } 104 105 var text = template ? seatregFormat(template, nounArgs) : nounArgs[0]; 106 107 if (attribute) { 108 nodes[i].setAttribute(attribute, text); 109 } else { 110 nodes[i].textContent = text; 111 } 112 } 113 } 114 30 115 /** 31 116 * Creates a translator object for handling WP_Seatreg translations -
seatreg/trunk/php/SeatregBooking.php
r3624498 r3693621 48 48 protected $_require_name = true; //require full name from registrants 49 49 protected $_couponsEnabled = false; 50 protected $_roomNouns = null; 51 protected $_seatNouns = null; 50 52 51 53 protected function generateSeatString() { … … 54 56 55 57 for($i = 0; $i < $dataLen; $i++) { 56 $seatsString .= esc_html__('Seat nr', 'seatreg') . ': <b>' . esc_html($this->_bookings[$i]->seat_nr) . '</b> ' . esc_html__('from room', 'seatreg') . ': <b>' . esc_html($this->_bookings[$i]->room_name) . '</b><br/>'; 58 /* translators: %1$s: the word the admin uses for a seat, capitalized, %2$s: Seat number, %3$s: the word the admin uses for a room */ 59 $seatsString .= sprintf( 60 wp_kses( __('%1$s nr: <b>%2$s</b> from %3$s', 'seatreg'), array( 'b' => array() ) ), 61 esc_html($this->_seatNouns->singularUpper), 62 esc_html($this->_bookings[$i]->seat_nr), 63 esc_html($this->_roomNouns->singular) 64 ) . ': <b>' . esc_html($this->_bookings[$i]->room_name) . '</b><br/>'; 57 65 } 58 66 … … 69 77 for($j = 0; $j < $bookedBookingsLength; $j++) { 70 78 if($this->_bookings[$i]->seat_id == $bookedBookings[$j]->seat_id) { 71 $statusReport = 'Seat <b>'. esc_html($this->_bookings[$i]->seat_nr) . '</b> in room <b>' . esc_html($this->_bookings[$i]->room_name) . '</b > is already confirmed'; 79 /* translators: %1$s: the word the admin uses for a seat, capitalized, %2$s: Seat number, %3$s: the word the admin uses for a room, %4$s: Room name */ 80 $statusReport = sprintf( 81 wp_kses( __('%1$s <b>%2$s</b> in %3$s <b>%4$s</b> is already confirmed', 'seatreg'), array( 'b' => array() ) ), 82 esc_html($this->_seatNouns->singularUpper), 83 esc_html($this->_bookings[$i]->seat_nr), 84 esc_html($this->_roomNouns->singular), 85 esc_html($this->_bookings[$i]->room_name) 86 ); 72 87 73 88 if( $calendarDate ) { … … 87 102 foreach( $this->_bookings as $booking ) { 88 103 if( SeatregLayoutService::checkIfSeatLocked($this->_registrationLayoutFull, $booking->seat_id) ) { 89 /* translators: % s: Seat number */90 $statusReport = sprintf(esc_html__(' Seat %s is locked', 'seatreg'),$booking->seat_nr);104 /* translators: %1$s: the word the admin uses for a seat, capitalized, %2$s: Seat number */ 105 $statusReport = sprintf(esc_html__('%1$s %2$s is locked', 'seatreg'), esc_html($this->_seatNouns->singularUpper), $booking->seat_nr); 91 106 92 107 break; … … 106 121 107 122 if( SeatregLayoutService::getSeatPassword($this->_registrationLayoutFull, $booking->seat_id) !== $enteredPassword ) { 108 /* translators: % s: Seat number */109 $statusReport = sprintf(esc_html__(' Seat %s password is not correct', 'seatreg'),$booking->seat_nr);123 /* translators: %1$s: the word the admin uses for a seat, capitalized, %2$s: Seat number */ 124 $statusReport = sprintf(esc_html__('%1$s %2$s password is not correct', 'seatreg'), esc_html($this->_seatNouns->singularUpper), $booking->seat_nr); 110 125 111 126 break; … … 233 248 234 249 if($searchStatus == 'room-searching') { 235 $status = 'Room '. esc_html($this->_bookings[$i]->room_name) . ' was not found'; 250 /* translators: %1$s: the word the admin uses for a room, capitalized, %2$s: Room name */ 251 $status = sprintf( 252 esc_html__('%1$s %2$s was not found', 'seatreg'), 253 esc_html($this->_roomNouns->singularUpper), 254 esc_html($this->_bookings[$i]->room_name) 255 ); 236 256 $allCorrect = false; 237 257 … … 337 357 $this->_require_name = $result->require_name === '1'; 338 358 $this->_couponsEnabled = $result->enable_coupons === '1'; 359 $this->_roomNouns = SeatregTerminologyService::getRoomNouns($result); 360 $this->_seatNouns = SeatregTerminologyService::getSeatNouns($result); 339 361 340 362 if($result->gmail_required == '1') { -
seatreg/trunk/php/SeatregDataValidation.php
r3624498 r3693621 80 80 if( strlen($registrationName) > SEATREG_REGISTRATION_NAME_MAX_LENGTH ) { 81 81 $validationStatus->setInvalid('Registration name too long'); 82 } 83 84 return $validationStatus; 85 } 86 87 public static function validateNoun($noun) { 88 $validationStatus = new SeatregValidationStatus(); 89 90 //Empty means the registration keeps the default wording 91 if( $noun === '' ) { 92 return $validationStatus; 93 } 94 95 if( preg_match(SEATREG_NOUN_REGEX, $noun) !== 1 ) { 96 $validationStatus->setInvalid('Noun is too long or contains illegal characters'); 82 97 } 83 98 -
seatreg/trunk/php/bookings/SeatregBookingPDF.php
r3624498 r3693621 9 9 private $_bookingData; 10 10 private $_payment; 11 private $_usingSeats;12 11 private $_customFields; 13 12 private $_roomData; … … 178 177 179 178 protected function buildDocument() { 179 /* translators: %s: the word the admin uses for a seat, capitalized */ 180 $placeNumberText = esc_html( sprintf( __('%s number', 'seatreg'), SeatregTerminologyService::getSeatNouns($this->_bookingData)->singularUpper ) ); 181 /* translators: %s: the word the admin uses for a room, capitalized */ 182 $roomNameText = esc_html( sprintf( __('%s name', 'seatreg'), SeatregTerminologyService::getRoomNouns($this->_bookingData)->singularUpper ) ); 180 183 181 184 foreach( $this->_bookings as $booking ) { 182 $placeNumberText = $this->_bookingData->using_seats ? esc_html__('Seat number', 'seatreg') : esc_html__('Place number', 'seatreg');183 185 $bookingDate = SeatregTimeService::getDateStringFromUnix($booking->booking_date); 184 186 $status = $this->getStatus($booking->status); … … 189 191 190 192 $this->Cell(20, 6, $placeNumberText . ': ' . esc_html($booking->seat_nr), 0, 1, 'L'); 191 $this->Cell(20, 6, esc_html__('Room name', 'seatreg'). ': ' . esc_html($booking->room_name), 0, 1, 'L');193 $this->Cell(20, 6, $roomNameText . ': ' . esc_html($booking->room_name), 0, 1, 'L'); 192 194 193 195 if( $seatLegend ) { -
seatreg/trunk/php/bookings/SeatregBookingsFile.php
r3624498 r3693621 13 13 protected $_customFields = null; 14 14 protected $_currentTimestamp = null; 15 protected $_usingSeats = true;16 15 protected $_calendarDate = null; 17 16 protected $_separateFirstandLastName = false; 18 17 protected $_roomData = null; 18 protected $_roomNouns = null; 19 protected $_seatNouns = null; 19 20 20 21 public function __construct($showPending, $showConfirmed, $separateFirstandLastName, $registrationCode, $calendarDate) { … … 43 44 $this->_registrations = $this->filtering( seatreg_get_data_for_booking_file($this->_registrationCode, $this->_showWhat, $this->_calendarDate) ); 44 45 $this->_registrationName = esc_html($this->_registrationInfo->registration_name); 45 $this->_usingSeats = $this->_registrationInfo->using_seats === '1'; 46 $this->_roomNouns = SeatregTerminologyService::getRoomNouns($this->_registrationInfo); 47 $this->_seatNouns = SeatregTerminologyService::getSeatNouns($this->_registrationInfo); 46 48 $this->_roomData = SeatregLayoutService::getRoomDataFromLayout( $this->_registrationInfo->registration_layout ); 47 49 } -
seatreg/trunk/php/bookings/SeatregBookingsPDF.php
r3624498 r3693621 60 60 $registrationsLenght = count($this->_registrations); 61 61 $customFieldsLength = count($this->_customFields); 62 /* translators: %s: the word the admin uses for a seat, capitalized */ 63 $placeNumberText = esc_html( sprintf( __('%s number', 'seatreg'), $this->_seatNouns->singularUpper ) ); 62 64 63 65 foreach ($this->_registrations as $registration) { … … 65 67 $status = $this->getStatus($registration->status); 66 68 $bookingDate = SeatregTimeService::getDateStringFromUnix($registration->booking_date); 67 $placeNumberText = $this->_usingSeats ? esc_html__('Seat number', 'seatreg') : esc_html__('Place number', 'seatreg');68 69 $seatPrice = SeatregLayoutService::getSeatPriceFromLayout($registration, $this->_roomData); 69 70 $usedCouponString = SeatregCouponService::getAppliedCouponString(json_decode($registration->applied_coupon) ?? null); … … 71 72 72 73 $this->pdf->Cell(20, 6, $placeNumberText . ': ' . esc_html($registration->seat_nr), 0, 1, 'L'); 73 $this->pdf->Cell(20, 6, esc_html__('Room name', 'seatreg') . ': ' . esc_html($registration->room_name), 0, 1, 'L'); 74 /* translators: %s: the word the admin uses for a room, capitalized */ 75 $this->pdf->Cell(20, 6, esc_html( sprintf( __('%s name', 'seatreg'), $this->_roomNouns->singularUpper ) ) . ': ' . esc_html($registration->room_name), 0, 1, 'L'); 74 76 75 77 if( $seatLegend ) { -
seatreg/trunk/php/bookings/SeatregBookingsTxt.php
r3624498 r3693621 27 27 echo esc_html($this->_registrationName), esc_html($this->lineBreak()); 28 28 echo esc_html__('Date', 'seatreg'), ': ', esc_html(date('Y-M-d H:i:s e', $this->_currentTimestamp)), esc_html($this->lineBreak()), esc_html($this->lineBreak()); 29 $placeNumberText = $this->_usingSeats ? esc_html__('Seat number', 'seatreg') : esc_html__('Place number', 'seatreg'); 29 /* translators: %s: the word the admin uses for a seat, capitalized */ 30 $placeNumberText = esc_html( sprintf( __('%s number', 'seatreg'), $this->_seatNouns->singularUpper ) ); 30 31 31 32 foreach ($this->_registrations as $registration) { … … 38 39 39 40 echo esc_html($placeNumberText), ': ', esc_html($registration->seat_nr), esc_html($this->lineBreak()); 40 echo esc_html __('Room', 'seatreg'), ': ', esc_html($registration->room_name), esc_html($this->lineBreak());41 echo esc_html($this->_roomNouns->singularUpper), ': ', esc_html($registration->room_name), esc_html($this->lineBreak()); 41 42 42 43 if( $seatLegend ) { -
seatreg/trunk/php/bookings/SeatregBookingsXlsx.php
r3624498 r3693621 58 58 59 59 public function printXlsx() { 60 $placeNumberText = $this->_usingSeats ? esc_html__('Seat number', 'seatreg') : esc_html__('Place number', 'seatreg'); 60 /* translators: %s: the word the admin uses for a seat, capitalized */ 61 $placeNumberText = esc_html( sprintf( __('%s number', 'seatreg'), $this->_seatNouns->singularUpper ) ); 61 62 $hasSeatLegends = $this->hasSeatLegends(); 62 63 … … 77 78 array( 78 79 $placeNumberText => 'string', 79 esc_html__('Room name', 'seatreg') => 'string', 80 /* translators: %s: the word the admin uses for a room, capitalized */ 81 esc_html( sprintf( __('%s name', 'seatreg'), $this->_roomNouns->singularUpper ) ) => 'string', 80 82 ), 81 83 $labelHeader, -
seatreg/trunk/php/constants.php
r3680221 r3693621 10 10 11 11 // DB 12 define('SEATREG_DB_VERSION', '1.6 3');12 define('SEATREG_DB_VERSION', '1.65'); 13 13 14 14 // Validation … … 23 23 define("SEATREG_COUPON_UUID_REGEX", '/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i'); 24 24 define("SEATREG_ROOM_DESCRIPTION_REGEX", '/^[\p{L}\p{N}\s\r\n.,-]+$/u'); 25 define('SEATREG_NOUN_MAX_LENGTH', 50); 26 //No % or $ so a noun can never be mistaken for a sprintf token by the strings it gets substituted into 27 define('SEATREG_NOUN_REGEX', '/^[\p{L}\p{N} \'-]{1,50}$/u'); 25 28 26 29 // Payments … … 114 117 define('SEATREG_ACTION_BOOKING_REMOVED', 'seatreg_action_booking_removed'); 115 118 119 // SeatReg filters 120 define('SEATREG_FILTER_ROOM_NOUNS', 'seatreg_room_nouns'); 121 define('SEATREG_FILTER_SEAT_NOUNS', 'seatreg_seat_nouns'); 122 123 // Multilingual 124 //The group a translator sees in Polylang and the domain they see in WPML, so it is the plugin name 125 define('SEATREG_TRANSLATION_STRING_GROUP', 'SeatReg'); 126 116 127 // API 117 128 define('SEATREG_API_OK_MESSAGE', 'ok'); -
seatreg/trunk/php/enqueue_admin.php
r3680221 r3693621 35 35 wp_enqueue_style('vanilla_picker_style', plugins_url('js/vanilla-picker/dist/vanilla-picker.csp.css', dirname(__FILE__) ), array(), '2.12.1', 'all'); 36 36 wp_enqueue_style('seatreg_builder_style', plugins_url('css/seatreg_builder.min.css', dirname(__FILE__) ), array(), '1.3.0', 'all'); 37 wp_enqueue_style('seatreg_admin_styles', plugins_url('css/seatreg_admin.min.css', dirname(__FILE__) ), array(), '1. 47.0', 'all');37 wp_enqueue_style('seatreg_admin_styles', plugins_url('css/seatreg_admin.min.css', dirname(__FILE__) ), array(), '1.50.0', 'all'); 38 38 wp_enqueue_style('local-open-sans', SEATREG_PLUGIN_FOLDER_URL . 'fonts/open-sans/open-sans.css', array(), '1.0.0', 'all'); 39 39 wp_enqueue_style('powertip_style', plugins_url('css/jquery.powertip.css', dirname(__FILE__) ), array(), '1.0.0', 'all'); … … 58 58 wp_enqueue_script('powertip', plugins_url('js/jquery.powertip.js', dirname(__FILE__) ), array('jquery'), '1.2.0', true); 59 59 wp_enqueue_script('date-format', plugins_url('js/date.format.js', dirname(__FILE__) ), array('jquery'), '1.0.0', true); 60 wp_enqueue_script('seatreg_admin_chart', plugins_url('js/Chart.min.js', dirname(__FILE__) ), array('jquery'), '1.0.0', true); 61 wp_enqueue_script('seatreg-utils', plugins_url('js/utils.js', dirname(__FILE__) ) , array(), '1.2.0', true); 62 wp_enqueue_script('seatreg_admin', plugins_url('js/seatreg_admin.js', dirname(__FILE__) ), array('jquery', 'powertip', 'seatreg_admin_chart', 'seatreg-utils'), '1.43.0', true); 60 wp_enqueue_script('seatreg-utils', plugins_url('js/utils.js', dirname(__FILE__) ) , array(), '1.4.0', true); 61 62 //Only the Overview draws charts, so the library stays off every other screen 63 if( $screen->id === 'seatreg_page_seatreg-overview' ) { 64 wp_enqueue_script('seatreg_admin_chart', plugins_url('js/chart.umd.min.js', dirname(__FILE__) ), array(), '4.4.7', true); 65 } 66 67 wp_enqueue_script('seatreg_admin', plugins_url('js/seatreg_admin.js', dirname(__FILE__) ), array('jquery', 'powertip', 'seatreg-utils'), '1.46.0', true); 63 68 wp_enqueue_script('jstz', plugins_url('js/jstz-1.0.4.min.js', dirname(__FILE__) ), array(), '1.0.4', true); 64 wp_enqueue_script('seatreg_builder_script', plugins_url('js/build.js', dirname(__FILE__) ), array('jquery','jquery-ui-core','alertify','vanilla_picker','powertip', 'seatreg-utils', 'seatreg_admin'), '1.1 1.2', true);69 wp_enqueue_script('seatreg_builder_script', plugins_url('js/build.js', dirname(__FILE__) ), array('jquery','jquery-ui-core','alertify','vanilla_picker','powertip', 'seatreg-utils', 'seatreg_admin'), '1.13.0', true); 65 70 66 71 $seatreg_admin_strings_json = wp_json_encode(seatreg_generate_admin_strings()); … … 69 74 } 70 75 76 //Every screen but the builder reloads when the registration changes, so its noun can be resolved here 77 $seatreg_screen_tab = isset($_GET['tab']) ? sanitize_text_field( wp_unslash($_GET['tab']) ) : null; 78 79 if( !$seatreg_screen_tab ) { 80 //Without a tab the screens fall back to the first registration, as seatreg_generate_tabs() does 81 $seatreg_registrations = SeatregRegistrationRepository::getRegistrations(); 82 $seatreg_screen_tab = count($seatreg_registrations) !== 0 ? $seatreg_registrations[0]->registration_code : null; 83 } 84 85 $seatreg_screen_options = $seatreg_screen_tab ? SeatregOptionsRepository::getOptionsByRegistrationCode($seatreg_screen_tab) : null; 86 71 87 wp_localize_script('seatreg_admin', 'WP_Seatreg', array( 72 88 'nonce' => wp_create_nonce('seatreg-admin-nonce'), 89 'room_nouns' => SeatregTerminologyService::getRoomNouns($seatreg_screen_options), 90 'seat_nouns' => SeatregTerminologyService::getSeatNouns($seatreg_screen_options), 73 91 'plugin_dir_url' => plugin_dir_url( dirname( __FILE__ ) ), 74 92 'translations' => $seatreg_admin_strings_json, -
seatreg/trunk/php/enqueue_public.php
r3641857 r3693621 83 83 wp_enqueue_script('jquery-powertip', SEATREG_PLUGIN_FOLDER_URL . 'js/jquery.powertip.js' , array(), '1.2.0', true); 84 84 wp_enqueue_script('pg-calendar', SEATREG_PLUGIN_FOLDER_URL . 'js/pg-calendar/dist/js/pignose.calendar.full.min.js' , array('jquery'), '1.4.31', false); 85 wp_enqueue_script('seatreg-utils', SEATREG_PLUGIN_FOLDER_URL . 'js/utils.js' , array(), '1. 2.0', true);86 wp_enqueue_script('seatreg-registration', SEATREG_PLUGIN_FOLDER_URL . 'registration/js/registration.js' , array('jquery', 'date-format', 'iscroll-zoom', 'jquery-powertip', 'seatreg-utils'), '1.3 7.0', true);85 wp_enqueue_script('seatreg-utils', SEATREG_PLUGIN_FOLDER_URL . 'js/utils.js' , array(), '1.4.0', true); 86 wp_enqueue_script('seatreg-registration', SEATREG_PLUGIN_FOLDER_URL . 'registration/js/registration.js' , array('jquery', 'date-format', 'iscroll-zoom', 'jquery-powertip', 'seatreg-utils'), '1.39.0', true); 87 87 wp_enqueue_script('alertify', SEATREG_PLUGIN_FOLDER_URL . 'js/alertify.js', array('jquery'), '1.0.0', true); 88 88 … … 127 127 $inlineScript .= 'var payPalCurrencyCode = "'. esc_js($data->paypal_currency_code) . '";'; 128 128 $inlineScript .= 'var receiptEnabled = "'. esc_js( $data->send_approved_booking_email) . '";'; 129 $inlineScript .= 'var usingSeats = "'. esc_js( $data->using_seats ) . '";'; 129 //Where seatregRoomNouns() and seatregSeatNouns() look first, so the accessors read the same on both sides 130 $inlineScript .= 'window.seatreg = window.seatreg || {};'; 131 $inlineScript .= 'window.seatreg.roomNouns = jQuery.parseJSON(' . wp_json_encode( wp_json_encode( SeatregTerminologyService::getRoomNouns($data) ) ) . ');'; 132 $inlineScript .= 'window.seatreg.seatNouns = jQuery.parseJSON(' . wp_json_encode( wp_json_encode( SeatregTerminologyService::getSeatNouns($data) ) ) . ');'; 130 133 $inlineScript .= 'var usingCalendar = "'. esc_js( $data->using_calendar ) . '";'; 131 134 $inlineScript .= 'var calendarDates = "'. esc_js( $data->calendar_dates ) . '";'; -
seatreg/trunk/php/repositories/SeatregOptionsRepository.php
r3674169 r3693621 23 23 ) ); 24 24 } 25 /** 26 * 27 * Return the code and nouns of every registration that renamed its rooms or its seats 28 * 29 */ 30 public static function getCustomNouns() { 31 global $wpdb; 32 global $seatreg_db_table_names; 33 34 return $wpdb->get_results( 35 "SELECT b.registration_code, b.room_noun_singular, b.room_noun_plural, b.seat_noun_singular, b.seat_noun_plural 36 FROM $seatreg_db_table_names->table_seatreg AS a 37 INNER JOIN $seatreg_db_table_names->table_seatreg_options AS b ON a.registration_code = b.registration_code 38 WHERE a.is_deleted = 0 39 AND ( b.room_noun_singular IS NOT NULL OR b.room_noun_plural IS NOT NULL 40 OR b.seat_noun_singular IS NOT NULL OR b.seat_noun_plural IS NOT NULL )" 41 ); 42 } 43 25 44 /** 26 45 * -
seatreg/trunk/php/repositories/SeatregRegistrationRepository.php
r3680221 r3693621 61 61 b.registration_start_timestamp, b.registration_end_timestamp, 62 62 b.registration_start_time, b.registration_end_time, 63 b.using_calendar, b.calendar_dates 63 b.using_calendar, b.calendar_dates, 64 b.using_seats, b.room_noun_singular, b.room_noun_plural, b.seat_noun_singular, b.seat_noun_plural 64 65 FROM $seatreg_db_table_names->table_seatreg AS a 65 66 LEFT JOIN $seatreg_db_table_names->table_seatreg_options AS b -
seatreg/trunk/php/seatreg_actions.php
r3674169 r3693621 57 57 //.htaccess 58 58 add_action( 'admin_init', 'seatreg_add_rewrite_rule' ); 59 60 add_action( 'admin_init', array( 'SeatregStringTranslationService', 'registerStrings' ) ); -
seatreg/trunk/php/seatreg_admin_panel.php
r3680221 r3693621 132 132 ?> 133 133 <div class="seatreg-tabs-content"> 134 <div id="existing-regs-wrap"> 135 <?php seatreg_generate_overview_section('overview'); ?> 136 </div> 134 <?php seatreg_generate_overview_section(); ?> 137 135 </div> 138 136 </div> -
seatreg/trunk/php/seatreg_functions.php
r3680221 r3693621 203 203 */ 204 204 205 function seatreg_generate_overview_section($targetRoom) { 206 global $wpdb; 207 global $seatreg_db_table_names; 208 205 function seatreg_generate_overview_section() { 209 206 $active_tab = null; 210 207 … … 216 213 wp_die( esc_html($validation->errorMessage) ); 217 214 } 218 } 219 $registration = seatreg_get_options( $active_tab )[0]; 220 $filterBookingsByDate = SeatregCalendarService::getBookingFilteringDate($registration->using_calendar); 221 222 seatreg_generate_overview_section_html($targetRoom, $active_tab, $filterBookingsByDate); 223 } 224 225 //generate overview section html. 226 function seatreg_generate_overview_section_html($targetRoom, $active_tab, $filterBookingsByDate) { 227 global $wpdb; 228 global $seatreg_db_table_names; 229 230 $registration = seatreg_get_options( $active_tab ); 231 232 if( count($registration) == 0 ) { 215 } 216 217 $registrations = seatreg_get_options( $active_tab ); 218 219 if( count($registrations) === 0 ) { 233 220 seatreg_no_registration_created_info(); 234 235 return; 236 } 237 238 $registration = $registration[0]; 239 240 $bookings = SeatregBookingRepository::getConfirmedAndApprovedBookingsByRegistrationCode( $registration->registration_code ); 241 $pendingBookingsRoomInfo = []; 242 $confirmedBookingsRoomInfo = []; 243 244 if($registration->using_calendar === '1') { 245 $pendingBookingsRoomInfo = $wpdb->get_results("SELECT room_uuid, COUNT(id) AS total FROM $seatreg_db_table_names->table_seatreg_bookings WHERE registration_code = '$registration->registration_code' AND calendar_date = '$filterBookingsByDate' AND status = 1 AND is_deleted = 0 GROUP BY room_uuid"); 246 $confirmedBookingsRoomInfo = $wpdb->get_results("SELECT room_uuid, COUNT(id) AS total FROM $seatreg_db_table_names->table_seatreg_bookings WHERE registration_code = '$registration->registration_code' AND calendar_date = '$filterBookingsByDate' AND status = 2 AND is_deleted = 0 GROUP BY room_uuid"); 247 }else { 248 $pendingBookingsRoomInfo = $wpdb->get_results("SELECT room_uuid, COUNT(id) AS total FROM $seatreg_db_table_names->table_seatreg_bookings WHERE registration_code = '$registration->registration_code' AND calendar_date IS NULL AND status = 1 AND is_deleted = 0 GROUP BY room_uuid"); 249 $confirmedBookingsRoomInfo = $wpdb->get_results("SELECT room_uuid, COUNT(id) AS total FROM $seatreg_db_table_names->table_seatreg_bookings WHERE registration_code = '$registration->registration_code' AND calendar_date IS NULL AND status = 2 AND is_deleted = 0 GROUP BY room_uuid"); 250 } 251 252 $regStats = seatreg_get_room_seat_info($registration->registration_layout, $pendingBookingsRoomInfo, $confirmedBookingsRoomInfo); 253 $project_name = $registration->registration_name; 254 $start_date = $registration->registration_start_timestamp; 255 $end_date = $registration->registration_end_timestamp; 256 $regUrl = get_site_url(); 257 $roomLoactionInStats = -1; 258 $rName = str_replace(" ", "-", $registration->registration_name); 259 260 ?> 261 262 <?php echo '<div class="reg-overview" id="existing-regs">';?> 263 <input type="hidden" id="seatreg-reg-code" value="<?php echo esc_attr($registration->registration_code); ?>"/> 264 265 <?php if($registration->using_calendar === '1') : ?> 266 <div class="overview-calendar-wrap"> 267 <label for="overview-calendar-date"><?php esc_html_e('Date', 'seatreg'); ?> <i class="fa fa-calendar" aria-hidden="true"></i></label> 268 <input type="text" id="overview-calendar-date" class="" value="<?php echo esc_attr($filterBookingsByDate); ?>" autocomplete="off" /> 269 270 <input type='hidden' value='<?php echo esc_html($filterBookingsByDate); ?>' id='overview-calendar-date-value' /> 271 </div> 272 <?php endif; ?> 273 274 <?php echo '<div class="reg-overview-top">';?> 275 <?php 276 if($targetRoom == 'overview') { 277 echo '<div class="reg-overview-top-header">'; 278 echo esc_html($project_name); 279 echo '</div>'; 280 }else { 281 echo '<div class="reg-overview-top-header">'; 282 echo esc_html($targetRoom); 283 echo '</div>'; 284 } 285 ?> 286 287 <?php 288 if($targetRoom == 'overview') { 289 echo "<div class='reg-overview-top-bron-notify'>"; 290 // translators: %s: Number of pending seats 291 $pendingSeats = sprintf(esc_html__('%s pending seats', 'seatreg'), $regStats['bronSeats']); 292 // translators: %s: Number of pending places 293 $pendingPlaces = sprintf(esc_html__('%s pending places', 'seatreg'), $regStats['bronSeats']); 294 echo esc_html($registration->using_seats === '1' ? $pendingSeats : $pendingPlaces) . '!'; 295 echo '</div>'; 296 }else { 297 for($i = 0; $i < $regStats['roomCount']; $i++) { 298 if($regStats['roomsInfo'][$i]['roomName'] == $targetRoom) { 299 echo '<div class="reg-overview-top-bron-notify">'; 300 if( $registration->using_seats === '1' ) { 301 echo esc_html($regStats['roomsInfo'][$i]['roomBronSeats']),' ', esc_html__('pending seats', 'seatreg'), '!'; 302 }else { 303 echo esc_html($regStats['roomsInfo'][$i]['roomBronSeats']),' ', esc_html__('pending places', 'seatreg'), '!'; 304 } 305 echo '</div>'; 306 307 $roomLoactionInStats = $i; 308 309 break; 310 } 311 } 312 } 313 ?> 314 315 <?php 316 $start = esc_html__('Start date not set', 'seatreg'); 317 $end = esc_html__('End date not set', 'seatreg'); 318 319 if(!empty($start_date)) { 320 $start = $start_date; 321 } 322 323 if(!empty($end_date)) { 324 $end = $end_date; 325 } 326 327 echo "<div class='reg-overview-top-date'><span class='time-block'><i class='fa fa-clock-o' style='color:rgb(4, 145, 4); margin-right:3px'></i><span class='time-stamp'>" . esc_html($start) . "</span></span> <span class='time-block'><i class='fa fa-clock-o' style='color:rgb(250, 38, 38); margin-right:3px'></i><span class='time-stamp'>" . esc_html($end) . "</span></span></div>"; 328 ?> 329 330 <?php echo '</div>';?> 331 332 <?php echo '<div class="reg-overview-middle-wrap">'; ?> 333 <?php echo '<div class="reg-overview-aside">';?> 334 335 <ul class="room-list"> 336 <li class="room-list-item first-item" <?php if($targetRoom == 'overview') { echo 'data-active="true"';} ?> data-stats-target="overview"><?php esc_html_e('Overall', 'seatreg'); ?> </li> 337 338 <?php 339 for($i = 0; $i < $regStats['roomCount']; $i++) { 340 if($regStats['roomsInfo'][$i]['roomName'] != $targetRoom) { 341 echo '<li class="room-list-item" data-stats-target="', esc_attr($regStats['roomsInfo'][$i]['roomName']),'">', esc_html($regStats['roomsInfo'][$i]['roomName']),'</li>'; 342 }else { 343 echo '<li class="room-list-item" data-active="true" data-stats-target="', esc_attr($regStats['roomsInfo'][$i]['roomName']),'">', esc_html($regStats['roomsInfo'][$i]['roomName']),'</li>'; 344 } 345 } 346 ?> 347 348 </ul> 349 350 <?php echo '</div>';?> 351 352 <?php echo '<div class="reg-overview-middle">';?> 353 <div class="overview-middle-box"> 354 <div class="overview-middle-box-h"> 355 <?php $registration->using_seats === '1' ? esc_html_e('Seats', 'seatreg') : esc_html_e('Places', 'seatreg'); ?> 356 </div> 357 <div class="overview-middle-box-stat"> 358 <?php 359 if($targetRoom == 'overview') { 360 echo esc_html($regStats['seatsTotal']); 361 }else if($roomLoactionInStats >= 0) { 362 echo esc_html($regStats['roomsInfo'][$roomLoactionInStats]['roomSeatsTotal']); 363 } 364 ?> 365 </div> 366 </div> 367 368 <div class="overview-middle-box"> 369 <div class="overview-middle-box-h"> 370 <?php esc_html_e('Open', 'seatreg'); ?> 371 </div> 372 <div class="overview-middle-box-stat"> 373 <?php 374 if($targetRoom == 'overview') { 375 echo esc_html($regStats['openSeats']); 376 377 }else if($roomLoactionInStats >= 0) { 378 echo esc_html($regStats['roomsInfo'][$roomLoactionInStats]['roomOpenSeats']); 379 } 380 ?> 381 </div> 382 </div> 383 384 <div class="overview-middle-box"> 385 <div class="overview-middle-box-h"> 386 <?php esc_html_e('Confirmed', 'seatreg'); ?> 387 </div> 388 <div class="overview-middle-box-stat"> 389 <?php 390 if($targetRoom == 'overview') { 391 echo esc_html($regStats['takenSeats']); 392 }else if($roomLoactionInStats >= 0) { 393 echo esc_html($regStats['roomsInfo'][$roomLoactionInStats]['roomTakenSeats']); 394 } 395 ?> 396 </div> 397 </div> 398 399 <div class="overview-middle-box"> 400 <div class="overview-middle-box-h"> 401 <?php esc_html_e('Pending', 'seatreg'); ?> 402 </div> 403 <div class="overview-middle-box-stat"> 404 <?php 405 if($targetRoom == 'overview') { 406 echo esc_html($regStats['bronSeats']); 407 }else if($roomLoactionInStats >= 0) { 408 echo esc_html($regStats['roomsInfo'][$roomLoactionInStats]['roomBronSeats']); 409 } 410 ?> 411 </div> 412 </div> 413 414 <?php echo '</div>';?> 415 416 <?php echo '<div class="reg-overview-donuts">';?> 417 418 <canvas class="stats-doughnut" height="100" width="100"></canvas> 419 420 <div class="stats-doughnut-legend"> 421 <?php if($regStats['seatsTotal']): ?> 422 423 <div class="legend-block"><span class="doughnut-legend" style="background-color:#61B329"></span><span style="padding-right: 12px"><?php esc_html_e('Open', 'seatreg'); ?> </span> 424 <span class="legend-block-percent" style="color:#61B329"> 425 <?php 426 if($targetRoom == 'overview') { 427 echo esc_html( round(($regStats['openSeats'] / $regStats['seatsTotal'] ) * 100) ), '%'; 428 }else if($roomLoactionInStats >= 0) { 429 430 if($regStats['roomsInfo'][$roomLoactionInStats]['roomSeatsTotal'] > 0) { 431 echo esc_html( round(($regStats['roomsInfo'][$roomLoactionInStats]['roomOpenSeats'] / $regStats['roomsInfo'][$roomLoactionInStats]['roomSeatsTotal'] ) * 100, 2)), '%'; 432 }else { 433 echo '0%'; 434 } 435 } 436 ?> 437 </span> 438 </div> 439 <div class="legend-block"><span class="doughnut-legend" style="background-color:red"></span><span style="padding-right: 12px"><?php esc_html_e('Confirmed', 'seatreg'); ?> </span> 440 <span class="legend-block-percent" style="color:red"> 441 <?php 442 if($targetRoom == 'overview') { 443 echo esc_html(round(($regStats['takenSeats'] / $regStats['seatsTotal'] ) * 100)), '%'; 444 }else if($roomLoactionInStats >= 0) { 445 446 if($regStats['roomsInfo'][$roomLoactionInStats]['roomSeatsTotal'] > 0) { 447 echo esc_html(round(($regStats['roomsInfo'][$roomLoactionInStats]['roomTakenSeats'] / $regStats['roomsInfo'][$roomLoactionInStats]['roomSeatsTotal'] ) * 100, 2)), '%'; 448 }else { 449 echo '0%'; 450 } 451 } 452 ?> 453 </span> 454 </div> 455 <div class="legend-block"><span class="doughnut-legend" style="background-color:yellow"></span><span style="padding-right: 12px"><?php esc_html_e('Pending', 'seatreg'); ?> </span> 456 <span class="legend-block-percent" style="color:#26a6d1"> 457 <?php 458 if($targetRoom == 'overview') { 459 echo esc_html(round(($regStats['bronSeats'] / $regStats['seatsTotal'] ) * 100)), '%'; 460 }else if($roomLoactionInStats >= 0) { 461 462 if($regStats['roomsInfo'][$roomLoactionInStats]['roomSeatsTotal'] > 0) { 463 echo esc_html(round(($regStats['roomsInfo'][$roomLoactionInStats]['roomBronSeats'] / $regStats['roomsInfo'][$roomLoactionInStats]['roomSeatsTotal'] ) * 100, 2)), '%'; 464 }else { 465 echo '0%'; 466 } 467 } 468 ?> 469 </span> 470 </div> 471 <?php endif; ?> 472 </div> 473 <?php if($targetRoom == 'overview'): ?> 474 <input type="hidden" class="seats-total-don" value="<?php echo esc_attr($regStats['seatsTotal']); ?>"/> 475 <input type="hidden" class="seats-bron-don" value="<?php echo esc_attr($regStats['bronSeats']); ?>"/> 476 <input type="hidden" class="seats-taken-don" value="<?php echo esc_attr($regStats['takenSeats']); ?>"/> 477 <input type="hidden" class="seats-open-don" value="<?php echo esc_attr($regStats['openSeats']); ?>"/> 478 <?php else: ?> 479 <input type="hidden" class="seats-total-don" value="<?php echo esc_attr($regStats['roomsInfo'][$roomLoactionInStats]['roomSeatsTotal']); ?>"/> 480 <input type="hidden" class="seats-bron-don" value="<?php echo esc_attr($regStats['roomsInfo'][$roomLoactionInStats]['roomBronSeats']); ?>"/> 481 <input type="hidden" class="seats-taken-don" value="<?php echo esc_attr($regStats['roomsInfo'][$roomLoactionInStats]['roomTakenSeats']); ?>"/> 482 <input type="hidden" class="seats-open-don" value="<?php echo esc_attr($regStats['roomsInfo'][$roomLoactionInStats]['roomOpenSeats']); ?>"/> 483 <?php endif; ?> 484 485 <?php echo '</div>';?> 486 <?php echo '</div>'; ?> 487 <?php echo '</div>';?> 488 <?php 221 222 return; 223 } 224 225 $seatregRegistration = $registrations[0]; 226 $seatregRequestedDate = assignIfNotEmpty( $_GET['calendar-date'], null ); 227 $seatregCalendarDate = SeatregCalendarService::getBookingFilteringDateForRegistrationView( 228 $seatregRegistration->using_calendar, 229 $seatregRequestedDate === null ? null : sanitize_text_field( $seatregRequestedDate ) 230 ); 231 $seatregStats = SeatregLayoutService::getBookingsInfoForLayout( 232 $seatregRegistration->registration_layout, 233 $seatregRegistration->registration_code, 234 $seatregCalendarDate 235 ); 236 237 require( SEATREG_PLUGIN_FOLDER_DIR . 'php/views/sections/overview.php' ); 489 238 } 490 239 … … 631 380 </label> 632 381 </div> 382 </div> 383 384 <div class="form-group"> 385 <p class="form-group-title"><?php esc_html_e('Rename seats', 'seatreg'); ?></p> 386 <p class="help-block"> 387 <?php esc_html_e('Enter the word to use instead of the one the setting above chooses, for example booth or bed. Both forms are needed. Leave them empty to keep the word above', 'seatreg'); ?>. 388 </p> 389 <label class="form-group-subfield-label" for="seat-noun-singular"><?php esc_html_e('Singular', 'seatreg'); ?></label> 390 <input type="text" class="form-control" id="seat-noun-singular" name="seat-noun-singular" autocomplete="off" maxlength="<?php echo esc_attr(SEATREG_NOUN_MAX_LENGTH); ?>" placeholder="<?php echo esc_attr($options[0]->using_seats == '1' ? __('seat', 'seatreg') : __('place', 'seatreg')); ?>" value="<?php echo esc_attr($options[0]->seat_noun_singular); ?>"> 391 392 <label class="form-group-subfield-label" for="seat-noun-plural"><?php esc_html_e('Plural', 'seatreg'); ?></label> 393 <input type="text" class="form-control" id="seat-noun-plural" name="seat-noun-plural" autocomplete="off" maxlength="<?php echo esc_attr(SEATREG_NOUN_MAX_LENGTH); ?>" placeholder="<?php echo esc_attr($options[0]->using_seats == '1' ? __('seats', 'seatreg') : __('places', 'seatreg')); ?>" value="<?php echo esc_attr($options[0]->seat_noun_plural); ?>"> 394 395 <?php if( SeatregStringTranslationService::isAvailable() ) : ?> 396 <p class="help-block"> 397 <?php esc_html_e('Both words can be translated in your translation plugin, in the SeatReg string group', 'seatreg'); ?>. 398 </p> 399 <?php endif; ?> 400 </div> 401 402 <div class="form-group"> 403 <p class="form-group-title"><?php esc_html_e('Rename rooms', 'seatreg'); ?></p> 404 <p class="help-block"> 405 <?php esc_html_e('Your layout is split into rooms. If your registration is not about rooms, enter the word to use instead, for example stall or hall. Both forms are needed. Leave them empty to keep "room"', 'seatreg'); ?>. 406 </p> 407 <label class="form-group-subfield-label" for="room-noun-singular"><?php esc_html_e('Singular', 'seatreg'); ?></label> 408 <input type="text" class="form-control" id="room-noun-singular" name="room-noun-singular" autocomplete="off" maxlength="<?php echo esc_attr(SEATREG_NOUN_MAX_LENGTH); ?>" placeholder="<?php esc_attr_e('room', 'seatreg'); ?>" value="<?php echo esc_attr($options[0]->room_noun_singular); ?>"> 409 410 <label class="form-group-subfield-label" for="room-noun-plural"><?php esc_html_e('Plural', 'seatreg'); ?></label> 411 <input type="text" class="form-control" id="room-noun-plural" name="room-noun-plural" autocomplete="off" maxlength="<?php echo esc_attr(SEATREG_NOUN_MAX_LENGTH); ?>" placeholder="<?php esc_attr_e('rooms', 'seatreg'); ?>" value="<?php echo esc_attr($options[0]->room_noun_plural); ?>"> 412 413 <?php if( SeatregStringTranslationService::isAvailable() ) : ?> 414 <p class="help-block"> 415 <?php esc_html_e('Both words can be translated in your translation plugin, in the SeatReg string group', 'seatreg'); ?>. 416 </p> 417 <?php endif; ?> 633 418 </div> 634 419 … … 1966 1751 $row_count3 = count($bookings3); 1967 1752 $project_name = str_replace(' ', '_', $project_name_original); 1968 $usingSeats = $seatregData->using_seats === '1'; 1753 $roomNouns = SeatregTerminologyService::getRoomNouns($seatregData); 1754 $seatNouns = SeatregTerminologyService::getSeatNouns($seatregData); 1969 1755 $requireName = $seatregData->require_name; 1970 1756 $currencyCode = $seatregData->paypal_currency_code; … … 2027 1813 <div class="registration-manager-labels"> 2028 1814 <div class="seat-nr-box manager-box manager-box-link" data-order="nr"> 2029 <?php $usingSeats ? esc_html_e('Seat', 'seatreg') : esc_html_e('Place', 'seatreg'); ?>1815 <?php echo esc_html($seatNouns->singularUpper); ?> 2030 1816 </div> 2031 <div class="seat-room-box manager-box manager-box-link" data-order="room"><?php e sc_html_e('Room', 'seatreg'); ?></div>1817 <div class="seat-room-box manager-box manager-box-link" data-order="room"><?php echo esc_html($roomNouns->singularUpper); ?></div> 2032 1818 <div class="seat-name-box manager-box manager-box-link" data-order="name"><?php esc_html_e('Name', 'seatreg'); ?></div> 2033 1819 <div class="seat-name-box manager-box manager-box-link" data-order="date"><?php esc_html_e('Date', 'seatreg'); ?></div> … … 2041 1827 if($row_count == 0) { 2042 1828 echo '<div class="notify-text">'; 2043 $usingSeats ? esc_html_e('No pending bookings', 'seatreg') : esc_html_e('No pending places', 'seatreg');1829 esc_html_e('No pending bookings', 'seatreg'); 2044 1830 echo '</div>'; 2045 1831 } … … 2266 2052 <?php 2267 2053 2268 seatreg_booking_edit_modal($ usingSeats, $calendarDate, $requireName);2269 seatreg_add_booking_modal($ usingSeats, $calendarDate, $requireName, $roomsData);2054 seatreg_booking_edit_modal($calendarDate, $requireName, $roomNouns, $seatNouns); 2055 seatreg_add_booking_modal($calendarDate, $requireName, $roomsData, $roomNouns, $seatNouns); 2270 2056 seatreg_booking_activity_modal(); 2271 2057 seatreg_bookings_file_modal($custom_fields, $code, $calendarDate); 2272 seatreg_seat_id_modal($roomsData, $bookings1, $bookings2 );2058 seatreg_seat_id_modal($roomsData, $bookings1, $bookings2, $roomNouns, $seatNouns); 2273 2059 seatreg_import_bookings_modal($code, $seatregData); 2274 2060 seatreg_import_bookings_finalization_modal($code); … … 2434 2220 } 2435 2221 2436 function seatreg_add_booking_modal($usingSeats, $calendarDate, $requireName, $roomsData) { 2222 //The layout builder is rendered once, before any registration is chosen, so it shows the default 2223 //wording and seatregApplyNouns() repaints it from the layout the admin opens. 2224 //$form names one form, or the comma separated forms a sentence needs in the order it needs them 2225 function seatreg_noun_text($kind, $form, $template = '') { 2226 $nouns = $kind === 'seat' ? SeatregTerminologyService::getSeatNouns() : SeatregTerminologyService::getRoomNouns(); 2227 $forms = explode(',', $form); 2228 2229 if( $template === '' ) { 2230 return $nouns->{$forms[0]}; 2231 } 2232 2233 return vsprintf($template, array_map(function($singleForm) use ($nouns) { 2234 return $nouns->$singleForm; 2235 }, $forms)); 2236 } 2237 2238 //What seatregApplyNouns() looks for. Every piece is escaped, so the caller echoes it as it is. 2239 function seatreg_noun_markers($kind, $form, $template = '', $attribute = '') { 2240 return sprintf( 2241 ' data-seatreg-noun-kind="%s" data-seatreg-noun="%s"%s%s', 2242 esc_attr($kind), 2243 esc_attr($form), 2244 $template === '' ? '' : ' data-seatreg-noun-template="' . esc_attr($template) . '"', 2245 $attribute === '' ? '' : ' data-seatreg-noun-attr="' . esc_attr($attribute) . '"' 2246 ); 2247 } 2248 2249 function seatreg_noun_span($kind, $form, $template = '') { 2250 printf( 2251 '<span%s>%s</span>', 2252 seatreg_noun_markers($kind, $form, $template), 2253 esc_html( seatreg_noun_text($kind, $form, $template) ) 2254 ); 2255 } 2256 2257 function seatreg_add_booking_modal($calendarDate, $requireName, $roomsData, $roomNouns, $seatNouns) { 2437 2258 if(!$roomsData) { 2438 2259 return; … … 2445 2266 } 2446 2267 2447 function seatreg_booking_edit_modal($ usingSeats, $calendarDate, $requireName) {2268 function seatreg_booking_edit_modal($calendarDate, $requireName, $roomNouns, $seatNouns) { 2448 2269 require( SEATREG_PLUGIN_FOLDER_DIR . 'php/views/modals/booking-edit-modal.php' ); 2449 2270 } … … 2461 2282 } 2462 2283 2463 function seatreg_shortcode_modal($registrationCode, $rooms ) {2284 function seatreg_shortcode_modal($registrationCode, $rooms, $roomNouns) { 2464 2285 require( SEATREG_PLUGIN_FOLDER_DIR . 'php/views/modals/shortcode-modal.php' ); 2465 2286 } … … 2476 2297 } 2477 2298 2478 function seatreg_seat_id_modal($roomsData, $pendingBookings, $approvedBookings ) {2299 function seatreg_seat_id_modal($roomsData, $pendingBookings, $approvedBookings, $roomNouns, $seatNouns) { 2479 2300 $combinedBookings = array_merge($pendingBookings, $approvedBookings); 2480 2301 $bookingIds = array_map(function($booking) { … … 2604 2425 } 2605 2426 2606 //return room info. How many bron and taken seats are in a rooms2607 function seatreg_get_room_seat_info($struct, $bronRegistrations, $takenRegistrations) {2608 $bronLength = count($bronRegistrations);2609 $takenLength = count($takenRegistrations);2610 $regStructure = ($struct !== null) ? json_decode($struct)->roomData : null;2611 $roomCount = count(is_array($regStructure) ? $regStructure : []);2612 $howManyRegSeats = 0;2613 $howManyOpenSeats = 0;2614 $howManyBronSeats= 0;2615 $howManyTakenSeats = 0;2616 $howManyCustomBoxes = 0;2617 $statsArray = array();2618 $roomsInfo = array();2619 2620 for($i = 0; $i < $roomCount; $i++) {2621 $roomBoxes = $regStructure[$i]->boxes;2622 2623 //find how many bron seats in this room2624 $roomBoxCount = count($roomBoxes);2625 $roomRegSeats = 0; //how many reg seats2626 $roomOpenSeats = 0; //how many open reg seats2627 $roomTakenSeats = 0; //how many taken seats2628 $roomBronSeats = 0; //bron seats2629 $roomCustomBoxes = 0;2630 2631 for($k = 0; $k < $bronLength; $k++) {2632 if( $regStructure[$i]->room->uuid == $bronRegistrations[$k]->room_uuid ) { //find how many bron seats in this room2633 $roomBronSeats = $bronRegistrations[$k]->total;2634 $howManyBronSeats += $bronRegistrations[$k]->total;2635 2636 break;2637 }2638 }2639 2640 for($k = 0; $k < $takenLength; $k++) {2641 if($regStructure[$i]->room->uuid == $takenRegistrations[$k]->room_uuid) { //find how many taken seats in this room2642 $roomTakenSeats = $takenRegistrations[$k]->total;2643 $howManyTakenSeats += $takenRegistrations[$k]->total;2644 2645 break;2646 }2647 }2648 2649 for($j = 0; $j < $roomBoxCount; $j++) {2650 if($roomBoxes[$j]->canRegister == 'true') {2651 if($roomBoxes[$j]->status == 'noStatus') {2652 $howManyOpenSeats++;2653 $roomOpenSeats++;2654 }2655 2656 $howManyRegSeats++;2657 $roomRegSeats++;2658 }else {2659 $howManyCustomBoxes++;2660 $roomCustomBoxes++;2661 }2662 }2663 2664 $roomsInfo[] = array(2665 'roomName' => $regStructure[$i]->room->name,2666 'roomSeatsTotal' => $roomRegSeats,2667 'roomOpenSeats' => $roomRegSeats - $roomTakenSeats - $roomBronSeats,2668 'roomTakenSeats' => $roomTakenSeats,2669 'roomBronSeats' => $roomBronSeats,2670 'roomCustomBoxes' => $roomCustomBoxes2671 );2672 }2673 2674 $statsArray['seatsTotal'] = $howManyRegSeats;2675 $statsArray['openSeats'] = $howManyOpenSeats - $howManyBronSeats - $howManyTakenSeats;2676 $statsArray['bronSeats'] = $howManyBronSeats;2677 $statsArray['takenSeats'] = $howManyTakenSeats;2678 $statsArray['roomCount'] = $roomCount;2679 $statsArray['roomsInfo'] = $roomsInfo;2680 2681 return $statsArray;2682 }2683 2684 2427 function seatreg_validate_del_conf_booking($code, $bookingActions, $calendarDate) { 2685 2428 $registration = seatreg_get_registration_data($code)[0]; 2686 2429 $structure = SeatregLayoutService::getRoomDataFromLayout($registration->registration_layout); 2430 $roomNouns = SeatregTerminologyService::getRoomNouns($registration); 2431 $seatNouns = SeatregTerminologyService::getSeatNouns($registration); 2687 2432 $bookingActionLength = count($bookingActions); 2688 2433 $seat_id; … … 2693 2438 //step 1. check if room exists and contains seat with nr 2694 2439 foreach ($bookingActions as $key => $value) { 2695 $step1Desision = seatreg_check_room_and_seat($structure, $value->room_name, $value->seat_nr );2440 $step1Desision = seatreg_check_room_and_seat($structure, $value->room_name, $value->seat_nr, $roomNouns, $seatNouns); 2696 2441 2697 2442 if( $step1Desision['status'] != 'ok') { … … 2721 2466 if($booking->seat_nr == $bookingAction->seat_nr && $booking->room_name == $bookingAction->room_name && $booking->status === "2" && $bookingAction->action != 'del' && $bookingAction->action != 'unapprove') { 2722 2467 $notBooked = false; 2723 $resp['text'] = esc_html__('Seat ', 'seatreg') . esc_html($bookingAction->seat_nr) . esc_html__(' from room ', 'seatreg') . esc_html($bookingAction->room_name) . esc_html__(' is already booked', 'seatreg'); 2468 /* translators: %1$s: the word the admin uses for a seat, capitalized, %2$s: Seat number, %3$s: the word the admin uses for a room, %4$s: Room name */ 2469 $resp['text'] = sprintf( esc_html__('%1$s %2$s from %3$s %4$s is already booked', 'seatreg'), esc_html($seatNouns->singularUpper), esc_html($bookingAction->seat_nr), esc_html($roomNouns->singular), esc_html($bookingAction->room_name) ); 2724 2470 2725 2471 break 2; … … 2742 2488 $registration = seatreg_get_options($code)[0]; 2743 2489 $structure = SeatregLayoutService::getRoomDataFromLayout($registration->registration_layout); 2490 $roomNouns = SeatregTerminologyService::getRoomNouns($registration); 2491 $seatNouns = SeatregTerminologyService::getSeatNouns($registration); 2744 2492 $allCorrect = true; 2745 2493 $resp = array(); 2746 2494 $resp['status'] = 'ok'; 2747 $layoutValidation = SeatregLayoutService::validateRoomAndSeatId($structure, $data->roomName, $data->seatId );2495 $layoutValidation = SeatregLayoutService::validateRoomAndSeatId($structure, $data->roomName, $data->seatId, null, $roomNouns, $seatNouns ); 2748 2496 2749 2497 if( !$layoutValidation->valid ) { … … 2771 2519 $notBooked = false; 2772 2520 $resp['status'] = 'seat-booked'; 2773 $resp['text'] = esc_html__('Seat ID ', 'seatreg') . esc_html($data->seatId) . esc_html__(' from room ', 'seatreg') . esc_html($booking->room_name) . esc_html__(' is already booked', 'seatreg'); 2521 /* translators: %1$s: the word the admin uses for a seat, capitalized, %2$s: Seat id, %3$s: the word the admin uses for a room, %4$s: Room name */ 2522 $resp['text'] = sprintf( esc_html__('%1$s ID %2$s from %3$s %4$s is already booked', 'seatreg'), esc_html($seatNouns->singularUpper), esc_html($data->seatId), esc_html($roomNouns->singular), esc_html($booking->room_name) ); 2774 2523 2775 2524 break; … … 2792 2541 $registration = seatreg_get_options($code)[0]; 2793 2542 $structure = SeatregLayoutService::getRoomDataFromLayout($registration->registration_layout); 2543 $roomNouns = SeatregTerminologyService::getRoomNouns($registration); 2544 $seatNouns = SeatregTerminologyService::getSeatNouns($registration); 2794 2545 $allCorrect = true; 2795 2546 $resp = array(); 2796 2547 $resp['status'] = 'ok'; 2797 $layoutValidation = SeatregLayoutService::validateRoomAndSeatId($structure, $data->roomName, $data->seatId );2548 $layoutValidation = SeatregLayoutService::validateRoomAndSeatId($structure, $data->roomName, $data->seatId, null, $roomNouns, $seatNouns ); 2798 2549 $customFieldValidation = SeatregDataValidation::validateCustomFieldManagerSubmit($data->editCustomField, $registration->custom_fields, $registration->registration_code); 2799 2550 … … 2845 2596 $notBooked = false; 2846 2597 $resp['status'] = 'seat-booked'; 2847 $resp['text'] = esc_html__('Seat ', 'seatreg') . esc_html($data->roomName) . esc_html__(' from room ', 'seatreg') . esc_html($booking->room_name) . esc_html__(' is already booked', 'seatreg'); 2598 /* translators: %1$s: the word the admin uses for a seat, capitalized, %2$s: Seat id, %3$s: the word the admin uses for a room, %4$s: Room name */ 2599 $resp['text'] = sprintf( esc_html__('%1$s ID %2$s from %3$s %4$s is already booked', 'seatreg'), esc_html($seatNouns->singularUpper), esc_html($data->seatId), esc_html($roomNouns->singular), esc_html($booking->room_name) ); 2848 2600 2849 2601 break; … … 2867 2619 2868 2620 //check if booking room and seat are present in registration layout 2869 function seatreg_check_room_and_seat($registrationLayout, $bookingRoomName, $bookingSeatNr ) {2621 function seatreg_check_room_and_seat($registrationLayout, $bookingRoomName, $bookingSeatNr, $roomNouns = null, $seatNouns = null) { 2870 2622 $layoutLength = count($registrationLayout); 2871 2623 $allCorrect = false; … … 2873 2625 $searchStatus = ''; 2874 2626 $errorText = ''; 2627 $roomNoun = $roomNouns ? $roomNouns->singularUpper : SeatregTerminologyService::getRoomNouns()->singularUpper; 2628 $seatNoun = $seatNouns ? $seatNouns->singularUpper : SeatregTerminologyService::getSeatNouns()->singularUpper; 2875 2629 2876 2630 for($i = 0; $i < $layoutLength; $i++) { 2877 2631 $searchStatus = 'room-searching'; 2878 $errorText = esc_html__('Room ','seatreg') . esc_html($bookingRoomName) . esc_html__(' dose not exist!', 'seatreg'); 2632 /* translators: %1$s: the word the admin uses for a room, capitalized, %2$s: Room name */ 2633 $errorText = sprintf( esc_html__('%1$s %2$s does not exist!', 'seatreg'), esc_html($roomNoun), esc_html($bookingRoomName) ); 2879 2634 2880 2635 if($registrationLayout[$i]->room->name == $bookingRoomName) { 2881 2636 $searchStatus = 'seat-nr-searching'; 2882 $errorText = esc_html__('Seat ','seatreg') . esc_html($bookingSeatNr) . esc_html__(' dose not exist in ', 'seatreg') . esc_html($bookingRoomName); 2637 /* translators: %1$s: the word the admin uses for a seat, capitalized, %2$s: Seat number, %3$s: Room name */ 2638 $errorText = sprintf( esc_html__('%1$s %2$s does not exist in %3$s', 'seatreg'), esc_html($seatNoun), esc_html($bookingSeatNr), esc_html($bookingRoomName) ); 2883 2639 $boxLen = count($registrationLayout[$i]->boxes); 2884 2640 … … 3011 2767 custom_footer_text text, 3012 2768 seat_selection_btn_text varchar(255) DEFAULT NULL, 2769 room_noun_singular varchar(50) DEFAULT NULL, 2770 room_noun_plural varchar(50) DEFAULT NULL, 2771 seat_noun_singular varchar(50) DEFAULT NULL, 2772 seat_noun_plural varchar(50) DEFAULT NULL, 3013 2773 custom_payments text, 3014 2774 booking_status_page_custom_styles text, … … 3130 2890 3131 2891 $registration = $wpdb->get_results( $wpdb->prepare( 3132 "SELECT a.*, b.paypal_payments, b.paypal_rest_payments, b.stripe_payments, b.custom_payment, b.using_seats, b.using_calendar, b.calendar_dates, b.custom_payments 2892 "SELECT a.*, b.paypal_payments, b.paypal_rest_payments, b.stripe_payments, b.custom_payment, b.using_seats, b.using_calendar, b.calendar_dates, b.custom_payments, b.room_noun_singular, b.room_noun_plural, b.seat_noun_singular, b.seat_noun_plural 3133 2893 FROM $seatreg_db_table_names->table_seatreg AS a 3134 2894 INNER JOIN $seatreg_db_table_names->table_seatreg_options AS b … … 3835 3595 if( !$registrationNameValidation->valid ) { 3836 3596 wp_die( esc_html($registrationNameValidation->errorMessage) ); 3597 } 3598 3599 $roomNounSingular = trim( sanitize_text_field( isset($_POST['room-noun-singular']) ? wp_unslash($_POST['room-noun-singular']) : '' ) ); 3600 $roomNounPlural = trim( sanitize_text_field( isset($_POST['room-noun-plural']) ? wp_unslash($_POST['room-noun-plural']) : '' ) ); 3601 $seatNounSingular = trim( sanitize_text_field( isset($_POST['seat-noun-singular']) ? wp_unslash($_POST['seat-noun-singular']) : '' ) ); 3602 $seatNounPlural = trim( sanitize_text_field( isset($_POST['seat-noun-plural']) ? wp_unslash($_POST['seat-noun-plural']) : '' ) ); 3603 3604 //A lone singular would pair with the default plural and read wrong, and a plural cannot be derived across languages 3605 if( ($roomNounSingular === '') !== ($roomNounPlural === '') ) { 3606 wp_die('Both the singular and the plural room noun are required'); 3607 } 3608 3609 if( ($seatNounSingular === '') !== ($seatNounPlural === '') ) { 3610 wp_die('Both the singular and the plural seat noun are required'); 3611 } 3612 3613 foreach( array($roomNounSingular, $roomNounPlural, $seatNounSingular, $seatNounPlural) as $noun ) { 3614 $nounValidation = SeatregDataValidation::validateNoun($noun); 3615 3616 if( !$nounValidation->valid ) { 3617 wp_die( esc_html($nounValidation->errorMessage) ); 3618 } 3837 3619 } 3838 3620 … … 4161 3943 'payment_completed_set_booking_confirmed_stripe' => $_POST['payment-mark-confirmed-stripe'], 4162 3944 'using_seats' => $_POST['using-seats'], 3945 'room_noun_singular' => $roomNounSingular === '' ? null : $roomNounSingular, 3946 'room_noun_plural' => $roomNounPlural === '' ? null : $roomNounPlural, 3947 'seat_noun_singular' => $seatNounSingular === '' ? null : $seatNounSingular, 3948 'seat_noun_plural' => $seatNounPlural === '' ? null : $seatNounPlural, 4163 3949 'email_from_address' => !empty($_POST['email-from']) ? $_POST['email-from'] : null, 4164 3950 'email_background_color' => $customizeEmailColors && !empty($_POST['email-background-color']) ? sanitize_hex_color($_POST['email-background-color']) : null, … … 4321 4107 $dataToSend->bookings = $bookings; 4322 4108 $dataToSend->uploadedImages = $uploadedImages; 4109 $dataToSend->roomNouns = SeatregTerminologyService::getRoomNouns( isset($registration[0]) ? $registration[0] : null ); 4110 $dataToSend->seatNouns = SeatregTerminologyService::getSeatNouns( isset($registration[0]) ? $registration[0] : null ); 4323 4111 $response = new SeatregJsonResponse(); 4324 4112 $response->setData( $dataToSend); … … 4520 4308 4521 4309 $resp->echoData(); 4522 4523 die();4524 }4525 4526 4527 add_action( 'wp_ajax_seatreg_get_room_stats', 'seatreg_get_room_stats_callback' );4528 function seatreg_get_room_stats_callback() {4529 seatreg_ajax_security_check(SEATREG_MANAGE_BOOKINGS_CAPABILITY);4530 4531 seatreg_generate_overview_section_html($_POST['data']['target'], sanitize_text_field($_POST['code']), $_POST['data']['calendarDate']);4532 4310 4533 4311 die(); -
seatreg/trunk/php/seatreg_shortcode.php
r3641857 r3693621 32 32 } 33 33 34 $roomQueryParam = ''; 34 $queryArgs = array( 35 'seatreg' => 'registration', 36 'c' => $atts['code'], 37 ); 35 38 36 39 if ( !empty($atts['room']) ) { … … 47 50 } 48 51 49 $ roomQueryParam = '&room=' . urlencode( $atts['room'] );52 $queryArgs['room'] = $atts['room']; 50 53 } 51 54 52 $seatregRegistrationUrl = esc_url(SeatregLinksService::getRegistrationURL() . "?seatreg=registration&c=". $atts['code'] . $roomQueryParam); 55 $queryArgs['page_id'] = SEATREG_PAGE_ID; 56 57 //Added as arguments, as the address may already carry the language the page is read in 58 $seatregRegistrationUrl = esc_url( add_query_arg( $queryArgs, SeatregLinksService::getRegistrationURLInCurrentLanguage() ) ); 53 59 $height = (int) esc_attr($atts['height']); 54 60 $mobileHeight = (int) esc_attr($atts['mobile_height']); 55 61 $breakpoint = (int) esc_attr($atts['mobile_max_width']); 56 $pageId = esc_attr(SEATREG_PAGE_ID);57 62 $iframeId = esc_attr('seatreg-shortcode-' . uniqid()); 58 63 $styleHandle = 'seatreg-inline-' . $iframeId; … … 79 84 wp_add_inline_style($styleHandle, $css); 80 85 81 return "<iframe id='{$iframeId}' src='{$seatregRegistrationUrl} &page_id={$pageId}'></iframe>";86 return "<iframe id='{$iframeId}' src='{$seatregRegistrationUrl}'></iframe>"; 82 87 } 83 88 add_shortcode( 'seatreg', 'seatreg_shortcode' ); -
seatreg/trunk/php/seatreg_strings.php
r3674169 r3693621 10 10 $translations->emailNotCorrect = esc_html__('Email address is not correct', 'seatreg'); 11 11 $translations->somethingWentWrong = esc_html__('Something went wrong. Please try again', 'seatreg'); 12 $translations->selectionIsEmpty = esc_html__('Seat selection is empty', 'seatreg'); 13 $translations->selectionIsEmptyPlace = esc_html__('Place selection is empty', 'seatreg'); 14 $translations->youCanAdd_ = esc_html__('You can add ', 'seatreg'); 15 $translations->_toCartClickTab = esc_html__(' to selection by selecting boxes', 'seatreg'); 16 $translations->toCartClickTab = esc_html__(' to selection by clicking/tabbing them', 'seatreg'); 12 /* translators: %s: the word the admin uses for a seat, capitalized */ 13 $translations->selectionIsEmpty = esc_html__('%s selection is empty', 'seatreg'); 14 /* translators: %s: the word the admin uses for seats, plural */ 15 $translations->youCanAddToSelection = esc_html__('You can add %s to selection by selecting boxes', 'seatreg'); 17 16 $translations->regClosedAtMoment = esc_html__('Registration is closed at the moment', 'seatreg'); 18 17 $translations->confWillBeSentTo = esc_html__('Confirmation will be sent to:', 'seatreg'); 19 18 $translations->confWillBeSentTogmail = esc_html__('Confirmation will be sent to (Gmail):', 'seatreg'); 20 19 $translations->gmailReq = esc_html__('Email (Gmail required)', 'seatreg'); 21 $translations->_fromRoom_ = esc_html__(' from room ', 'seatreg'); 22 $translations->_toSelection = esc_html__(' to booking?', 'seatreg'); 23 $translations->_isOccupied = esc_html__(' is occupied', 'seatreg'); 24 $translations->_isPendingState = esc_html__(' is in pending state', 'seatreg'); 20 /* translators: %1$s: the word the admin uses for a seat, %2$s: the seat number, %3$s: the word the admin uses for a room, %4$s: the room name */ 21 $translations->addSpotFromRoomToBooking = esc_html__('Add %1$s %2$s from %3$s %4$s to booking?', 'seatreg'); 22 /* translators: %1$s: the word the admin uses for a seat, %2$s: the seat number, %3$s: the word the admin uses for a room, %4$s: the room name */ 23 $translations->spotFromRoom = esc_html__('%1$s %2$s from %3$s %4$s', 'seatreg'); 24 /* translators: %s: the word the admin uses for a seat */ 25 $translations->spotIsOccupied = esc_html__('This %s is occupied', 'seatreg'); 26 /* translators: %s: the word the admin uses for a seat */ 27 $translations->spotIsPendingState = esc_html__('This %s is in pending state', 'seatreg'); 25 28 $translations->regOwnerNotConfirmed = esc_html__('(registration admin has not confirmed it)', 'seatreg'); 26 29 $translations->selectionIsFull = esc_html__('Booking is full', 'seatreg'); 27 $translations->_isAlreadySelected = esc_html__(' is already selected!', 'seatreg'); 30 /* translators: %1$s: the word the admin uses for a seat, capitalized, %2$s: the seat number */ 31 $translations->spotAlreadySelected = esc_html__('%1$s %2$s is already selected!', 'seatreg'); 28 32 $translations->_regUnderConstruction = esc_html__('Under construction', 'seatreg'); 29 33 $translations->emptyField = esc_html__('Empty field', 'seatreg'); 30 34 $translations->remove = esc_html__('Remove', 'seatreg'); 31 $translations->add_ = esc_html__('Add ', 'seatreg');32 35 $translations->addToBooking = esc_html__('Add to Booking', 'seatreg'); 33 $translations->openSeatsInRoom_ = esc_html__('Open seats in the room: ', 'seatreg');34 $translations->openPlacesInRoom_ = esc_html__('Open places in the room:', 'seatreg');35 $translations->pendingSeatInRoom_ = esc_html__('Pending bookings in the room: ', 'seatreg');36 $translations-> confirmedSeatInRoom_ = esc_html__('Approved bookings in the room:', 'seatreg');37 $translations->seat = esc_html__('seat', 'seatreg');38 $translations->place = esc_html__('place', 'seatreg');36 /* translators: %1$s: the word the admin uses for seats, plural, %2$s: the word the admin uses for a room, %3$s: number of open seats */ 37 $translations->openSpotsInRoom = esc_html__('Open %1$s in the %2$s: %3$s', 'seatreg'); 38 /* translators: %1$s: the word the admin uses for a room, %2$s: number of pending bookings */ 39 $translations->pendingBookingsInRoom = esc_html__('Pending bookings in the %1$s: %2$s', 'seatreg'); 40 /* translators: %1$s: the word the admin uses for a room, %2$s: number of approved bookings */ 41 $translations->approvedBookingsInRoom = esc_html__('Approved bookings in the %1$s: %2$s', 'seatreg'); 39 42 $translations->firstName = esc_html__('Firstname', 'seatreg'); 40 43 $translations->lastName = esc_html__('Lastname', 'seatreg'); 41 44 $translations->eMail = esc_html__('Email', 'seatreg'); 42 $translations->this_ = esc_html__('This ', 'seatreg'); 43 $translations->_selected = esc_html__(' selected', 'seatreg'); 44 $translations->_seatSelected = esc_html__(' seat selected', 'seatreg'); 45 $translations->_seatsSelected = esc_html__(' seats selected', 'seatreg'); 46 $translations->_placeSelected = esc_html__(' place selected', 'seatreg'); 47 $translations->_placesSelected = esc_html__(' places selected', 'seatreg'); 45 /* translators: %1$s: number of selected seats, %2$s: the word the admin uses for a seat, singular or plural to match the number */ 46 $translations->spotsSelected = esc_html__('%1$s %2$s selected', 'seatreg'); 48 47 $translations->bookingsConfirmed = esc_html__('Your booking is approved', 'seatreg'); 49 48 $translations->bookingsConfirmedPending = esc_html__('Your booking is now in pending state. Registration admin needs to approve it', 'seatreg'); 50 $translations->selectingGuide = esc_html__('Select a seat you want to add to booking', 'seatreg');51 $translations->selectingGuide Place = esc_html__('Select a placeyou want to add to booking', 'seatreg');49 /* translators: %s: the word the admin uses for a seat */ 50 $translations->selectingGuide = esc_html__('Select a %s you want to add to booking', 'seatreg'); 52 51 $translations->Booked = esc_html__('Booked', 'seatreg'); 53 52 $translations->Pending = esc_html__('Pending', 'seatreg'); 54 $translations->maxSeatsToAdd = esc_html__('Total seats you can add to booking is ', 'seatreg');55 $translations->max PlacesToAdd = esc_html__('Total places you can add to booking is', 'seatreg');56 $translations->seatCosts_ = esc_html__('Booking this seat costs ', 'seatreg');57 $translations-> placeCosts_ = esc_html__('Booking this place costs', 'seatreg');53 /* translators: %1$s: the word the admin uses for seats, plural, %2$s: the maximum number */ 54 $translations->maxSpotsToAdd = esc_html__('Total %1$s you can add to booking is %2$s', 'seatreg'); 55 /* translators: %1$s: the word the admin uses for a seat, %2$s: the price */ 56 $translations->spotCosts = esc_html__('Booking this %1$s costs %2$s', 'seatreg'); 58 57 $translations->bookingTotalCostIs_ = esc_html__('Booking total cost is ', 'seatreg'); 59 58 $translations->receiptSent = esc_html__('Booking receipt has been sent to your email', 'seatreg'); … … 61 60 $translations->yes = esc_html__('Yes', 'seatreg'); 62 61 $translations->no = esc_html__('No', 'seatreg'); 63 $translations->seatIsLocked = esc_html__('Seat is locked', 'seatreg');64 $translations-> placeIsLocked = esc_html__('Placeis locked', 'seatreg');62 /* translators: %s: the word the admin uses for a seat, capitalized */ 63 $translations->spotIsLocked = esc_html__('%s is locked', 'seatreg'); 65 64 $translations->pleaseEnterPassword = esc_html__('Please enter password', 'seatreg'); 66 65 $translations->passwordNotCorrect = esc_html__('Password is not correct', 'seatreg'); … … 81 80 function seatreg_generate_admin_strings() { 82 81 $translations = new stdClass(); 82 $translations->overviewConfirmed = esc_html__('Confirmed', 'seatreg'); 83 $translations->overviewPending = esc_html__('Pending', 'seatreg'); 84 $translations->overviewOpen = esc_html__('Open', 'seatreg'); 83 85 $translations->hoverDeleteSuccess = esc_html__('Hover text deleted', 'seatreg'); 84 86 $translations->hoverTextAdded = esc_html__('Hover text added', 'seatreg'); … … 86 88 $translations->legendColorChanged = esc_html__('Legend color changed', 'seatreg'); 87 89 $translations->buildingGridUpdated = esc_html__('Building grid updated', 'seatreg'); 88 $translations->roomNameChanged = esc_html__('Room name changed', 'seatreg'); 89 $translations->roomNameSet = esc_html__('New room added', 'seatreg'); 90 $translations->roomNotExist = esc_html__('Room does not exist', 'seatreg'); 91 $translations->seatNotExist = esc_html__('Seat does not exist', 'seatreg'); 92 $translations->seatIdNotExist = esc_html__('Seat id dose not exist', 'seatreg'); 93 $translations->seatAlreadyBookedPending = esc_html__('Seat is already booked/pending', 'seatreg'); 90 /* translators: %s: the word the admin uses for a room, capitalized */ 91 $translations->roomNameChanged = esc_html( _x('%s name changed', 'layout builder confirmation after renaming a room', 'seatreg') ); 92 /* translators: %s: the word the admin uses for a room */ 93 $translations->roomNameSet = esc_html__('New %s added', 'seatreg'); 94 /* translators: %s: the word the admin uses for a room, capitalized */ 95 $translations->roomNotExist = esc_html( _x('%s does not exist', 'booking manager error when the given room name matches nothing', 'seatreg') ); 96 /* translators: %s: the word the admin uses for a seat, capitalized */ 97 $translations->seatIdNotExist = esc_html__('%s id does not exist', 'seatreg'); 98 /* translators: %s: the word the admin uses for a seat, capitalized */ 99 $translations->seatAlreadyBookedPending = esc_html__('%s is already booked/pending', 'seatreg'); 94 100 $translations->errorBookingUpdate = esc_html__('Error updating booking', 'seatreg'); 95 101 $translations->hoverError = esc_html__('Error while creating hover', 'seatreg'); … … 99 105 $translations->legendColorTaken = esc_html__('Legend color is taken. Choose another', 'seatreg'); 100 106 $translations->legendAddedTo = esc_html__('Legend added to', 'seatreg'); 101 $translations->oneRoomNeeded = esc_html__('You must have at least one room', 'seatreg'); 102 $translations->alreadyInRoom = esc_html__('Already in this room', 'seatreg'); 103 $translations->allRoomsNeedName = esc_html__('All rooms must have name', 'seatreg'); 107 /* translators: %s: the word the admin uses for a room */ 108 $translations->oneRoomNeeded = esc_html__('You must have at least one %s', 'seatreg'); 109 /* translators: %s: the word the admin uses for a room */ 110 $translations->alreadyInRoom = esc_html__('Already in this %s', 'seatreg'); 111 /* translators: %s: the word the admin uses for rooms, plural */ 112 $translations->allRoomsNeedName = esc_html__('All %s must have name', 'seatreg'); 104 113 $translations->illegalCharactersDetec = esc_html__('Illegal characters detected', 'seatreg'); 105 114 $translations->illegalCharactersDetecCouponCode = esc_html__('Illegal characters detected in coupon code', 'seatreg'); … … 107 116 $translations->illegalCharactersDetecDiscount = esc_html__('Illegal characters detected in discount value', 'seatreg'); 108 117 $translations->missingName = esc_html__('Name missing', 'seatreg'); 109 $translations->cantDelRoom_ = esc_html__('You can\'t delete room ', 'seatreg'); 110 $translations->_cantDelRoomBecause = esc_html__(' because it contains pending or confirmed seats. You must remove them with manager first.', 'seatreg'); 111 $translations->roomNameMissing = esc_html__('Room name is missing', 'seatreg'); 112 $translations->roomNameExists = esc_html__('Room name already exists. You must choose another', 'seatreg'); 118 /* translators: %1$s: the word the admin uses for a room, %2$s: the room name */ 119 $translations->cantDeleteRoom = esc_html__('You can\'t delete %1$s %2$s because it contains pending or confirmed seats. You must remove them with manager first.', 'seatreg'); 120 /* translators: %s: the word the admin uses for a room, capitalized */ 121 $translations->roomNameMissing = esc_html( _x('%s name is missing', 'layout builder, empty room name field', 'seatreg') ); 122 /* translators: %s: the word the admin uses for a room, capitalized */ 123 $translations->roomNameExists = esc_html( _x('%s name already exists. You must choose another', 'layout builder, duplicate room name', 'seatreg') ); 113 124 $translations->youHaveSelected = esc_html__('You have selected', 'seatreg'); 114 125 $translations->_boxesSpanLi = esc_html__(' box/boxes</span></li>', 'seatreg'); … … 123 134 $translations->_noSelectBoxToAddLegend = esc_html__(' You have not selected any box/boxes to add legends', 'seatreg'); 124 135 $translations->_charRemaining = esc_html__(' characters remaining', 'seatreg'); 125 $translations->deleteRoom_ = esc_html__('Are you sure you want to delete room ', 'seatreg'); 136 /* translators: %1$s: the word the admin uses for a room, %2$s: the room name */ 137 $translations->deleteRoomConfirm = esc_html__('Are you sure you want to delete %1$s %2$s?', 'seatreg'); 126 138 $translations->unsavedChanges = esc_html__('Unsaved changes. You sure you want to leave?', 'seatreg'); 127 139 $translations->createLegend = esc_html__('Create new legend', 'seatreg'); … … 135 147 $translations->box = esc_html__('box', 'seatreg'); 136 148 $translations->noBoxesSelected = esc_html__('No boxes selected', 'seatreg'); 137 $translations->pendingSeat = esc_html__('Pending seat', 'seatreg');138 $translations->pending Place = esc_html__('Pending place', 'seatreg');139 $translations->confirmedSeat = esc_html__('Approved seat', 'seatreg');140 $translations->confirmed Place= esc_html__('Approved place', 'seatreg');149 /* translators: %s: the word the admin uses for a seat */ 150 $translations->pendingSeat = esc_html__('Pending %s', 'seatreg'); 151 /* translators: %s: the word the admin uses for a seat */ 152 $translations->confirmedSeat = esc_html__('Approved %s', 'seatreg'); 141 153 $translations->save = esc_html__('Save', 'seatreg'); 142 154 $translations->saving = esc_html__('Saving...', 'seatreg'); 143 155 $translations->saved = esc_html__('Saved', 'seatreg'); 144 $translations->room = esc_html__('room', 'seatreg');145 156 $translations->bookingUpdated = esc_html__('Booking updated', 'seatreg'); 146 157 $translations->notSet = esc_html__('Not set', 'seatreg'); … … 152 163 $translations->pleaseAddAtLeastOneOption = esc_html__('Please add at least one option', 'seatreg'); 153 164 $translations->nameAlreadyUsed = esc_html__('Name already used', 'seatreg'); 154 $translations->noBgImageInRoom = esc_html__('Current room does not have background image', 'seatreg'); 155 $translations->removeFromRoom = esc_html__('Remove from room', 'seatreg'); 165 /* translators: %s: the word the admin uses for a room */ 166 $translations->noBgImageInRoom = esc_html__('Current %s does not have background image', 'seatreg'); 167 /* translators: %s: the word the admin uses for a room */ 168 $translations->removeFromRoom = esc_html( _x('Remove from %s', 'layout builder, remove the background image from the room', 'seatreg') ); 156 169 $translations->choosePictureToUpload = esc_html__('Choose a picture to upload', 'seatreg'); 157 170 $translations->imageNameIllegalChar = esc_html__('Image name contains illegal characters', 'seatreg'); 158 $translations->addToRoomBackground = esc_html__('Add to room background', 'seatreg'); 171 /* translators: %s: the word the admin uses for a room */ 172 $translations->addToRoomBackground = esc_html__('Add to %s background', 'seatreg'); 159 173 $translations->remove = esc_html__('Remove', 'seatreg'); 160 174 $translations->showPendingBookings = esc_html__('Show pending bookings', 'seatreg'); … … 175 189 $translations->pleaseProvideStripeApiSecretKey = esc_html__('Please provide Stripe API secret key', 'seatreg'); 176 190 $translations->pricesAdded = esc_html__('Prices added', 'seatreg'); 177 $translations->noSeatsSelected = esc_html__('No seats/places selected!', 'seatreg'); 191 /* translators: %s: the word the admin uses for seats, plural */ 192 $translations->noSeatsSelected = esc_html__('No %s selected!', 'seatreg'); 178 193 $translations->emailNotCorrect = esc_html__('Email address is not correct', 'seatreg'); 179 194 $translations->emailFromNotCorrect = esc_html__('Email FROM address is not correct', 'seatreg'); … … 188 203 $translations->bookingPermanentlyDeleted = esc_html__('Booking permanently deleted', 'seatreg'); 189 204 $translations->newBookingWasAddedRefreshingThaPage = esc_html__('Booking was added. Page will refresh in a second', 'seatreg'); 190 $translations->duplicateSeatDetected = esc_html__('Duplicate seat detected!', 'seatreg'); 205 /* translators: %s: the word the admin uses for a seat */ 206 $translations->duplicateSeatDetected = esc_html__('Duplicate %s detected!', 'seatreg'); 191 207 $translations->emailTemplateNotCorrect = esc_html__('Email template is missing required keywords', 'seatreg'); 192 208 $translations->approvedBookingEmailTemplateIllegalCharacter = esc_html__('The approved booking email template contains disallowed characters.', 'seatreg'); 193 209 $translations->pendingBookingEmailTemplateIllegalCharacter = esc_html__('The pending booking email template contains disallowed characters.', 'seatreg'); 194 210 $translations->emailVerificationEmailTemplateIllegalCharacter = esc_html__('The email verification template contains disallowed characters.', 'seatreg'); 195 $translations->lockSeat = esc_html__('Lock seat', 'seatreg'); 211 /* translators: %s: the word the admin uses for a seat */ 212 $translations->lockSeat = esc_html__('Lock %s', 'seatreg'); 196 213 $translations->setPassword = esc_html__('Set password', 'seatreg'); 197 214 $translations->changesApplied = esc_html__('Changes applied', 'seatreg'); … … 227 244 $translations->bookingMainEmail = esc_html__('Booking main email', 'seatreg'); 228 245 $translations->editEmailNotValid = esc_html__('Provided email address is not valid', 'seatreg'); 229 $translations->multiBookingMailEmailEditDesc = esc_html__('Primary contact email if more than one seat is booked', 'seatreg'); 230 $translations->roomDescriptionSet = esc_html__('Room description changed', 'seatreg'); 246 /* translators: %s: the word the admin uses for a seat */ 247 $translations->multiBookingMailEmailEditDesc = esc_html__('Primary contact email if more than one %s is booked', 'seatreg'); 248 /* translators: %s: the word the admin uses for a room, capitalized */ 249 $translations->roomDescriptionSet = esc_html( _x('%s description changed', 'layout builder confirmation after editing a room description', 'seatreg') ); 231 250 $translations->primaryEmailValidationFailed = esc_html__('Booking primary email validation failed', 'seatreg'); 232 251 $translations->pleaseEnterBookingPrimaryEmail = esc_html__('Please enter booking primary email', 'seatreg'); … … 241 260 $translations->flowGroupAfter = esc_html__('After submitting', 'seatreg'); 242 261 $translations->flowJumpToSetting = esc_html__('Go to this setting', 'seatreg'); 262 //The summary previews the form as it is typed, so it needs the words the seats checkbox would pick 243 263 $translations->flowSeatSingular = esc_html__('seat', 'seatreg'); 244 264 $translations->flowSeatPlural = esc_html__('seats', 'seatreg'); … … 250 270 $translations->flowPassword = esc_html__('Visitors must enter the access password to view it.', 'seatreg'); 251 271 $translations->flowRequireLogin = esc_html__('Only visitors logged in to your site can book.', 'seatreg'); 252 /* translators: %1$d: number of bookings, %2$s: seats or places*/272 /* translators: %1$d: number of bookings, %2$s: the word the admin uses for seats, plural */ 253 273 $translations->flowWpBookingLimit = esc_html__('Each logged-in user can make at most %1$d separate bookings (a single booking can include several %2$s).', 'seatreg'); 254 /* translators: %1$d: number of seats, %2$s: seats or places*/274 /* translators: %1$d: number of seats, %2$s: the word the admin uses for seats, plural */ 255 275 $translations->flowWpSeatLimit = esc_html__('Across all their bookings, each logged-in user can book at most %1$d %2$s.', 'seatreg'); 256 276 $translations->flowDateWindowBoth = esc_html__('Bookings can only be made within the registration\'s scheduled start and end dates.', 'seatreg'); … … 265 285 $translations->calendarNoDatesSelected = esc_html__('No dates selected yet', 'seatreg'); 266 286 $translations->calendarRemoveDate = esc_html__('Remove date', 'seatreg'); 267 /* translators: %s: seats or places*/287 /* translators: %s: the word the admin uses for seats, plural */ 268 288 $translations->flowSelect = esc_html__('Visitors select %s on the map.', 'seatreg'); 269 /* translators: %1$s: seats or places, %2$d: maximum number per booking */289 /* translators: %1$s: the word the admin uses for seats, plural, %2$d: maximum number per booking */ 270 290 $translations->flowSelectMax = esc_html__('Visitors select %1$s on the map, up to %2$d per booking.', 'seatreg'); 271 /* translators: %1$s: seats or places, %2$s: comma-separated list of shown details */291 /* translators: %1$s: the word the admin uses for seats, plural, %2$s: comma-separated list of shown details */ 272 292 $translations->flowShowBookingData = esc_html__('Already-booked %1$s publicly display the booking details you have chosen to show (%2$s).', 'seatreg'); 273 293 $translations->flowShowBookingDataFullName = esc_html__('full name', 'seatreg'); 274 /* translators: %s: seat or place*/294 /* translators: %s: the word the admin uses for a seat */ 275 295 $translations->flowAutoDialog = esc_html__('The booking form opens automatically as soon as a %s is selected.', 'seatreg'); 276 /* translators: %s: seats or places*/296 /* translators: %s: the word the admin uses for seats, plural */ 277 297 $translations->flowManualDialog = esc_html__('After choosing %s, visitors open the selection menu to complete their booking.', 'seatreg'); 278 /* translators: %s: seat or place*/298 /* translators: %s: the word the admin uses for a seat */ 279 299 $translations->flowOnePersonCheckout = esc_html__('Booking details are entered once and applied to every %s.', 'seatreg'); 280 /* translators: %s: seat or place*/300 /* translators: %s: the word the admin uses for a seat */ 281 301 $translations->flowPerSeatCheckout = esc_html__('Booking details are entered for each %s.', 'seatreg'); 282 302 $translations->flowRequireName = esc_html__('A full name (first and last) is required.', 'seatreg'); 283 303 $translations->flowGmailRequired = esc_html__('A Gmail address is required.', 'seatreg'); 284 /* translators: %1$d: maximum number of bookings per email, %2$s: seats or places*/304 /* translators: %1$d: maximum number of bookings per email, %2$s: the word the admin uses for seats, plural */ 285 305 $translations->flowEmailLimit = esc_html__('A booking\'s main contact email can be used for at most %1$d bookings (a single booking can include several %2$s).', 'seatreg'); 286 306 $translations->flowCustomFields = esc_html__('Bookers also fill in the custom fields you have created, which are required by default.', 'seatreg'); -
seatreg/trunk/php/services/SeatregBookingService.php
r3641857 r3693621 149 149 return $customField->label; 150 150 }, is_array( $enteredCustomFieldData) ? $enteredCustomFieldData : [] ); 151 $spotName = $registration->using_seats ? __('Seat', 'seatreg') : __('Place', 'seatreg'); 151 $spotName = SeatregTerminologyService::getSeatNouns($registration)->singularUpper; 152 $roomName = SeatregTerminologyService::getRoomNouns($registration)->singularUpper; 152 153 $hasCalendarDate = (boolean)$bookings[0]->calendar_date; 153 154 $roomsLayout = SeatregLayoutService::getRoomDataFromLayout($registration->registration_layout ?? null); … … 159 160 160 161 $hasLegends = count(array_filter($seatLegends)) > 0; 161 $headers = array( __('Name', 'seatreg'), $spotName, __('Room', 'seatreg'));162 $headers = array( __('Name', 'seatreg'), $spotName, $roomName ); 162 163 163 164 if($hasLegends) { … … 182 183 array( 'label' => __('Name', 'seatreg'), 'value' => $booking->first_name . ' ' . $booking->last_name ), 183 184 array( 'label' => $spotName, 'value' => $booking->seat_nr ), 184 array( 'label' => __('Room', 'seatreg'), 'value' => $booking->room_name ),185 array( 'label' => $roomName, 'value' => $booking->room_name ), 185 186 ); 186 187 … … 313 314 314 315 return array( 315 'spotName' => $bookingData->using_seats ? __('Seat', 'seatreg') : __('Place', 'seatreg'),316 'spotName' => SeatregTerminologyService::getSeatNouns($bookingData)->singularUpper, 316 317 'rows' => $rows, 317 318 'total' => ( $couponsEnabled ? self::applyCouponDiscountToTotalCost($totalCost, $appliedCoupon) : $totalCost ) . ' ' . $bookingData->paypal_currency_code, -
seatreg/trunk/php/services/SeatregCSVService.php
r3624498 r3693621 17 17 private $roomData; 18 18 private $existingBookings; 19 private $roomNouns; 20 private $seatNouns; 19 21 20 22 public function __construct($code) { … … 23 25 $this->roomData = SeatregLayoutService::getRoomDataFromLayout($this->registrationData->registration_layout); 24 26 $this->existingBookings = SeatregBookingRepository::getAllConfirmedAndApprovedBookingsByRegistrationCode($this->seatregCode); 27 $options = SeatregOptionsRepository::getOptionsByRegistrationCode($this->seatregCode); 28 $this->roomNouns = SeatregTerminologyService::getRoomNouns($options); 29 $this->seatNouns = SeatregTerminologyService::getSeatNouns($options); 25 30 } 26 31 … … 61 66 } 62 67 $obj->room_name = $roomName; 63 $seatAndRoomValidation = SeatregLayoutService::validateRoomAndSeatId($this->roomData, $roomName, $row[SEATREG_CSV_COL_SEAT_ID], $row[SEATREG_CSV_COL_SEAT_NR] );68 $seatAndRoomValidation = SeatregLayoutService::validateRoomAndSeatId($this->roomData, $roomName, $row[SEATREG_CSV_COL_SEAT_ID], $row[SEATREG_CSV_COL_SEAT_NR], $this->roomNouns, $this->seatNouns); 64 69 if( !$seatAndRoomValidation->valid ) { 65 70 $obj->is_valid = false; -
seatreg/trunk/php/services/SeatregImportService.php
r3624498 r3693621 6 6 private $roomData; 7 7 private $existingBookings; 8 private $roomNouns; 9 private $seatNouns; 8 10 private $failedImports = array(); 9 11 private $successfulImports = array(); … … 15 17 $this->roomData = SeatregLayoutService::getRoomDataFromLayout($this->registrationData->registration_layout); 16 18 $this->existingBookings = SeatregBookingRepository::getAllConfirmedAndApprovedBookingsByRegistrationCode($this->seatregCode); 19 $options = SeatregOptionsRepository::getOptionsByRegistrationCode($this->seatregCode); 20 $this->roomNouns = SeatregTerminologyService::getRoomNouns($options); 21 $this->seatNouns = SeatregTerminologyService::getSeatNouns($options); 17 22 } 18 23 … … 32 37 } 33 38 34 $seatAndRoomValidation = SeatregLayoutService::validateRoomAndSeatId($this->roomData, $roomName, $bookingData->seat_id, $bookingData->seat_nr );39 $seatAndRoomValidation = SeatregLayoutService::validateRoomAndSeatId($this->roomData, $roomName, $bookingData->seat_id, $bookingData->seat_nr, $this->roomNouns, $this->seatNouns); 35 40 if( !$seatAndRoomValidation->valid ) { 36 41 $validation->is_valid = false; -
seatreg/trunk/php/services/SeatregLayoutService.php
r3641857 r3693621 73 73 } 74 74 75 public static function validateRoomAndSeatId($layout, $bookingRoomName, $bookingSeatId, $seatNr = null ) {75 public static function validateRoomAndSeatId($layout, $bookingRoomName, $bookingSeatId, $seatNr = null, $roomNouns = null, $seatNouns = null) { 76 76 $status = (object) [ 77 77 'valid' => false, … … 79 79 'errorText' => '' 80 80 ]; 81 $roomNoun = $roomNouns ? $roomNouns->singularUpper : SeatregTerminologyService::getRoomNouns()->singularUpper; 82 $seatNoun = $seatNouns ? $seatNouns->singularUpper : SeatregTerminologyService::getSeatNouns()->singularUpper; 81 83 82 84 foreach( $layout as $layoutData ) { 83 85 $room = $layoutData->room; 84 86 $status->searchStatus = 'room-searching'; 85 /* translators: % s: Room name */86 $status->errorText = sprintf( esc_html__(' Room %s does not exist!', 'seatreg'), esc_html($bookingRoomName) );87 /* translators: %1$s: the word the admin uses for a room, capitalized, %2$s: Room name */ 88 $status->errorText = sprintf( esc_html__('%1$s %2$s does not exist!', 'seatreg'), esc_html($roomNoun), esc_html($bookingRoomName) ); 87 89 88 90 if( $room->name == $bookingRoomName ) { … … 90 92 91 93 if ($seatNr !== null) { 92 /* translators: %1$s: Seat ID, %2$s: Seat number, %3$s: Room name */93 $status->errorText = sprintf(esc_html__(' Seat id %1$s with number %2$s does not exist in %3$s', 'seatreg'), esc_html($bookingSeatId), esc_html($seatNr), esc_html($bookingRoomName));94 /* translators: %1$s: the word the admin uses for a seat, capitalized, %2$s: Seat ID, %3$s: Seat number, %4$s: Room name */ 95 $status->errorText = sprintf(esc_html__('%1$s id %2$s with number %3$s does not exist in %4$s', 'seatreg'), esc_html($seatNoun), esc_html($bookingSeatId), esc_html($seatNr), esc_html($bookingRoomName)); 94 96 } else { 95 /* translators: %1$s: Seat ID, %2$s: Room name */96 $status->errorText = sprintf(esc_html__(' Seat id %1$s does not exist in %2$s', 'seatreg'), esc_html($bookingSeatId), esc_html($bookingRoomName));97 /* translators: %1$s: the word the admin uses for a seat, capitalized, %2$s: Seat ID, %3$s: Room name */ 98 $status->errorText = sprintf(esc_html__('%1$s id %2$s does not exist in %3$s', 'seatreg'), esc_html($seatNoun), esc_html($bookingSeatId), esc_html($bookingRoomName)); 97 99 } 98 100 … … 265 267 266 268 public static function getSeatsStats($struct, $bronRegistrations, $takenRegistrations) { 267 $registration = json_decode($struct);269 $registration = $struct ? json_decode($struct) : null; 268 270 if(!isset($registration->roomData)) { 269 271 return []; … … 325 327 } 326 328 329 //roomOpenSeats counts from every bookable seat, roomOpenNoStatusSeats only from the ones left 330 //without a status - the basis the registration wide openSeats below is counted on 327 331 $roomsInfo[] = array( 328 332 'roomUuid' => $regStructure[$i]->room->uuid, 333 'roomName' => $regStructure[$i]->room->name, 329 334 'roomSeatsTotal' => $roomRegSeats, 330 335 'roomOpenSeats' => $roomRegSeats - $roomTakenSeats - $roomBronSeats, 336 'roomOpenNoStatusSeats' => $roomOpenSeats - $roomTakenSeats - $roomBronSeats, 331 337 'roomTakenSeats' => $roomTakenSeats, 332 338 'roomBronSeats' => $roomBronSeats, -
seatreg/trunk/php/services/SeatregLinksService.php
r3040613 r3693621 6 6 7 7 class SeatregLinksService { 8 public static function getRegistrationURL() { 8 public static function getRegistrationURL() { 9 9 return get_site_url() . '/seatreg'; 10 10 } 11 12 /** 13 * 14 * The registration address in the language the visitor is reading, so a registration 15 * embedded in a page opens in that page's language. How a language is written into an 16 * address is the translation plugin's own business, so it is left to write it. 17 * 18 * @return string 19 * 20 */ 21 public static function getRegistrationURLInCurrentLanguage() { 22 $url = self::getRegistrationURL(); 23 24 if( function_exists('PLL') && isset(PLL()->links_model) && isset(PLL()->curlang) ) { 25 return PLL()->links_model->add_language_to_link($url, PLL()->curlang); 26 } 27 28 if( defined('ICL_LANGUAGE_CODE') ) { 29 return apply_filters('wpml_permalink', $url, ICL_LANGUAGE_CODE); 30 } 31 32 return $url; 33 } 11 34 } -
seatreg/trunk/php/views/modals/add-booking-modal.php
r3496616 r3693621 26 26 <label> 27 27 <h5> 28 <?php $usingSeats ? esc_html_e('Seat ID', 'seatreg') : esc_html_e('Place ID', 'seatreg'); ?>29 <i class="fa fa-question-circle seatreg-ui-tooltip" aria-hidden="true" title="<?php $usingSeats ? esc_html_e('ID can be seen in map-editor when hovering seats. Or you can use seat ID lookup', 'seatreg') : esc_html_e('ID can be seen in map-editor when hovering places', 'seatreg'); ?>"></i>28 <?php echo esc_html( sprintf( __('%s ID', 'seatreg'), $seatNouns->singularUpper ) ); ?> 29 <i class="fa fa-question-circle seatreg-ui-tooltip" aria-hidden="true" title="<?php echo esc_attr( sprintf( __('ID can be seen in map-editor when hovering %1$s. Or you can use %2$s ID lookup', 'seatreg'), $seatNouns->plural, $seatNouns->singular ) ); ?>"></i> 30 30 </h5> 31 31 <input type="text" name="seat-id[]" autocomplete="off"/> … … 36 36 <label> 37 37 <h5> 38 <?php e sc_html_e('Room', 'seatreg'); ?>38 <?php echo esc_html($roomNouns->singularUpper); ?> 39 39 </h5> 40 40 <select name="room[]"> … … 85 85 <div class="seat-operations"> 86 86 <div class="seat-operation" id="add-modal-add-seat"> 87 <?php $usingSeats ? esc_html_e('Add seat', 'seatreg') : esc_html_e('Add place', 'seatreg'); ?>87 <?php echo esc_html( sprintf( _x('Add %s', 'booking manager button that adds one more seat to the booking being added', 'seatreg'), $seatNouns->singular ) ); ?> 88 88 <i class="fa fa-plus-circle fa-lg" aria-hidden="true"></i> 89 89 </div> 90 90 <div class="seat-operation" id="add-modal-remove-seat"> 91 <?php $usingSeats ? esc_html_e('Remove seat', 'seatreg') : esc_html_e('Remove place', 'seatreg'); ?>91 <?php echo esc_html( sprintf( _x('Remove %s', 'booking manager button that removes a seat from the booking being added', 'seatreg'), $seatNouns->singular ) ); ?> 92 92 <i class="fa fa-minus-circle fa-lg" aria-hidden="true"></i> 93 93 </div> -
seatreg/trunk/php/views/modals/booking-edit-modal.php
r3496616 r3693621 21 21 <label for="edit-seat"> 22 22 <h5> 23 <?php $usingSeats ? esc_html_e('Seat id', 'seatreg') : esc_html_e('Place id', 'seatreg'); ?>23 <?php echo esc_html( sprintf( __('%s id', 'seatreg'), $seatNouns->singularUpper ) ); ?> 24 24 </h5> 25 25 </label> 26 <i class="fa fa-question-circle seatreg-ui-tooltip" aria-hidden="true" title="<?php $usingSeats ? esc_html_e('ID can be seen in map-editor when hovering seats', 'seatreg') : esc_html_e('ID can be seen in map-editor when hovering places', 'seatreg'); ?>"></i>26 <i class="fa fa-question-circle seatreg-ui-tooltip" aria-hidden="true" title="<?php echo esc_attr( sprintf( __('ID can be seen in map-editor when hovering %s', 'seatreg'), $seatNouns->plural ) ); ?>"></i> 27 27 <br> 28 28 <input type="text" id="edit-seat" name="seat-id" autocomplete="off"/></label> <span id="edit-seat-error"></span> … … 30 30 31 31 <div class="edit-modal-input-wrap"> 32 <label for="edit-room"><h5><?php e sc_html_e('Room', 'seatreg'); ?></h5></label><br>32 <label for="edit-room"><h5><?php echo esc_html($roomNouns->singularUpper); ?></h5></label><br> 33 33 <input type="text" id="edit-room" name="room" autocomplete="off"/> <span id="edit-room-error"></span> 34 34 </div> -
seatreg/trunk/php/views/modals/seat-id-modal.php
r3496616 r3693621 5 5 <div class="modal-content"> 6 6 <div class="modal-header"> 7 <h4 class="modal-title"><?php e sc_html_e('Seat ID lookup', 'seatreg'); ?></h4>7 <h4 class="modal-title"><?php echo esc_html( sprintf( _x('%s ID lookup', 'booking manager dialog title for looking up a seat id', 'seatreg'), $seatNouns->singularUpper ) ); ?></h4> 8 8 <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only"><?php esc_html_e('Close', 'seatreg'); ?></span></button> 9 9 </div> … … 37 37 38 38 <button class="btn btn-outline-secondary btn-sm" data-action="select-id" data-seat-id="<?php echo esc_attr($box->id); ?>" data-seat-price="<?php echo esc_attr(json_encode($price)); ?>" data-seat-number="<?php echo esc_attr($seatNumber); ?>" data-room-name="<?php echo esc_attr($roomData->room->name); ?>"> 39 <?php e cho esc_html('Select ID', 'seatreg'); ?>39 <?php esc_html_e('Select ID', 'seatreg'); ?> 40 40 </button> 41 41 <?php endif; ?> … … 43 43 </div> 44 44 <?php if($openSeatCounter === 0): ?> 45 <div class="alert alert-info"><?php echo sprintf(esc_html('No open seats in %s', 'seatreg'), esc_html($roomData->room->name)); ?></div> 45 <div class="alert alert-info"><?php 46 /* translators: %1$s: the word the admin uses for seats, plural, %2$s: Room name */ 47 echo sprintf(esc_html__('No open %1$s in %2$s', 'seatreg'), esc_html($seatNouns->plural), esc_html($roomData->room->name)); 48 ?></div> 46 49 <?php endif; ?> 47 50 <?php endforeach; ?> -
seatreg/trunk/php/views/modals/shortcode-modal.php
r3641857 r3693621 15 15 <code class="shortcode-example">[seatreg code=<?php echo esc_html($registrationCode); ?> height=600 mobile_height=500 mobile_max_width=600]</code> 16 16 <?php if( count($rooms) ) : ?> 17 <p class="shortcode-instructions"><?php esc_html_e("You can choose which room the registration opens on.", "seatreg"); ?></p> 17 <p class="shortcode-instructions"><?php 18 /* translators: %s: the word the admin uses for a room */ 19 echo esc_html( sprintf( __('You can choose which %s the registration opens on. The attribute is always named room.', 'seatreg'), $roomNouns->singular ) ); 20 ?></p> 18 21 <code class="shortcode-example">[seatreg code=<?php echo esc_html($registrationCode); ?> height=600 room="<?php echo esc_html($rooms[0]->room->name); ?>"]</code> 19 22 <p class="shortcode-instructions"> 20 <?php esc_html_e("Available rooms", "seatreg"); ?>: 23 <?php 24 /* translators: %s: the word the admin uses for rooms, plural */ 25 echo esc_html( sprintf( __('Available %s', 'seatreg'), $roomNouns->plural ) ); 26 ?>: 21 27 <?php 22 28 $roomNames = array(); -
seatreg/trunk/php/views/parts/donation-flowers.php
r3680221 r3693621 1 <div class="seatreg-flower-container" style="--flower-size: 12px; --flower-delay: 0s; --flower-opacity: 0.1; top:42px;left:46px"> 2 <div class="seatreg-flower-droplet seatreg-flower-droplet-1"></div> 3 <div class="seatreg-flower-droplet seatreg-flower-droplet-2"></div> 4 <div class="seatreg-flower-droplet seatreg-flower-droplet-3"></div> 5 <div class="seatreg-flower-droplet seatreg-flower-droplet-4"></div> 6 <div class="seatreg-flower-droplet seatreg-flower-droplet-5"></div> 7 <div class="seatreg-flower-droplet seatreg-flower-droplet-6"></div> 8 <div class="seatreg-flower-droplet seatreg-flower-droplet-7"></div> 9 <div class="seatreg-flower-droplet seatreg-flower-droplet-8"></div> 10 <div class="seatreg-flower-droplet seatreg-flower-droplet-9"></div> 11 <div class="seatreg-flower-droplet seatreg-flower-droplet-10"></div> 1 <?php 2 if(!defined('ABSPATH')) exit; 3 4 $seatreg_flowers = array( 5 array( 'size' => '12px', 'delay' => '0s', 'position' => 'top: 24%; left: 24px;' ), 6 array( 'size' => '18px', 'delay' => '1s', 'position' => 'top: 12px; right: 64px;' ), 7 array( 'size' => '14px', 'delay' => '2s', 'position' => 'bottom: 26%; right: 48px;' ), 8 array( 'size' => '10px', 'delay' => '4s', 'position' => 'bottom: 0; left: 16px;' ), 9 ); 10 ?> 11 12 <div class="seatreg-flower-layer" aria-hidden="true"> 13 <?php foreach($seatreg_flowers as $seatreg_flower) : ?> 14 <div class="seatreg-flower-container" style="--flower-size: <?php echo esc_attr($seatreg_flower['size']); ?>; --flower-delay: <?php echo esc_attr($seatreg_flower['delay']); ?>; --flower-opacity: 0.1; <?php echo esc_attr($seatreg_flower['position']); ?>"> 15 <?php for($seatreg_droplet = 1; $seatreg_droplet <= 10; $seatreg_droplet++) : ?> 16 <div class="seatreg-flower-droplet seatreg-flower-droplet-<?php echo esc_attr($seatreg_droplet); ?>"></div> 17 <?php endfor; ?> 18 </div> 19 <?php endforeach; ?> 12 20 </div> 13 14 <div class="seatreg-flower-container" style="--flower-size: 18px; --flower-delay: 1s; --flower-opacity: 0.1; top:0px; left:380px">15 <div class="seatreg-flower-droplet seatreg-flower-droplet-1"></div>16 <div class="seatreg-flower-droplet seatreg-flower-droplet-2"></div>17 <div class="seatreg-flower-droplet seatreg-flower-droplet-3"></div>18 <div class="seatreg-flower-droplet seatreg-flower-droplet-4"></div>19 <div class="seatreg-flower-droplet seatreg-flower-droplet-5"></div>20 <div class="seatreg-flower-droplet seatreg-flower-droplet-6"></div>21 <div class="seatreg-flower-droplet seatreg-flower-droplet-7"></div>22 <div class="seatreg-flower-droplet seatreg-flower-droplet-8"></div>23 <div class="seatreg-flower-droplet seatreg-flower-droplet-9"></div>24 <div class="seatreg-flower-droplet seatreg-flower-droplet-10"></div>25 </div>26 27 <div class="seatreg-flower-container" style="--flower-size: 14px; --flower-delay: 2s; --flower-opacity: 0.1; top:260px; left:400px">28 <div class="seatreg-flower-droplet seatreg-flower-droplet-1"></div>29 <div class="seatreg-flower-droplet seatreg-flower-droplet-2"></div>30 <div class="seatreg-flower-droplet seatreg-flower-droplet-3"></div>31 <div class="seatreg-flower-droplet seatreg-flower-droplet-4"></div>32 <div class="seatreg-flower-droplet seatreg-flower-droplet-5"></div>33 <div class="seatreg-flower-droplet seatreg-flower-droplet-6"></div>34 <div class="seatreg-flower-droplet seatreg-flower-droplet-7"></div>35 <div class="seatreg-flower-droplet seatreg-flower-droplet-8"></div>36 <div class="seatreg-flower-droplet seatreg-flower-droplet-9"></div>37 <div class="seatreg-flower-droplet seatreg-flower-droplet-10"></div>38 </div>39 40 <div class="seatreg-flower-container" style="--flower-size: 10px; --flower-delay: 4s; --flower-opacity: 0.1; top:320px; left:40px">41 <div class="seatreg-flower-droplet seatreg-flower-droplet-1"></div>42 <div class="seatreg-flower-droplet seatreg-flower-droplet-2"></div>43 <div class="seatreg-flower-droplet seatreg-flower-droplet-3"></div>44 <div class="seatreg-flower-droplet seatreg-flower-droplet-4"></div>45 <div class="seatreg-flower-droplet seatreg-flower-droplet-5"></div>46 <div class="seatreg-flower-droplet seatreg-flower-droplet-6"></div>47 <div class="seatreg-flower-droplet seatreg-flower-droplet-7"></div>48 <div class="seatreg-flower-droplet seatreg-flower-droplet-8"></div>49 <div class="seatreg-flower-droplet seatreg-flower-droplet-9"></div>50 <div class="seatreg-flower-droplet seatreg-flower-droplet-10"></div>51 </div> -
seatreg/trunk/php/views/parts/registration-card.php
r3680221 r3693621 118 118 seatreg_more_items_modal( $seatregCode ); 119 119 seatreg_copy_registration_modal( $seatregCode ); 120 seatreg_shortcode_modal( $seatregCode, $seatregRooms );120 seatreg_shortcode_modal( $seatregCode, $seatregRooms, SeatregTerminologyService::getRoomNouns($seatregRegistration) ); 121 121 ?> 122 122 </div> -
seatreg/trunk/php/views/sections/builder_content.php
r3496616 r3693621 1 1 <?php 2 2 if ( ! defined( 'ABSPATH' ) ) { 3 exit(); 4 } 3 exit(); 4 } 5 5 6 ?> 6 7 … … 9 10 <h1 class="reg-title"><?php esc_html_e('Registration name', 'seatreg'); ?>: <span class="reg-title-name"></span></h1> 10 11 <h2 class="room-title"> 11 <?php esc_html_e('Room', 'seatreg'); ?>:12 <?php seatreg_noun_span('room', 'singularUpper'); ?>: 12 13 <span class="room-title-name"></span> 13 14 <span class="change-room-name"><?php esc_html_e('Change name', 'seatreg');?></span> … … 16 17 <div id="room-selection-wrapper"></div> 17 18 <div class="cre-del-room-wrapper"> 18 <span id="new-room-create" class="room-action"><i class="fa fa-plus" aria-hidden="true"></i> <?php esc_html_e('Add room', 'seatreg');?> </span>19 <span id="current-room-delete" class="room-action"><i class="fa fa-minus" aria-hidden="true"></i> <?php esc_html_e('Delete room', 'seatreg');?></span>19 <span id="new-room-create" class="room-action"><i class="fa fa-plus" aria-hidden="true"></i> <?php seatreg_noun_span('room', 'singular', _x('Add %s', 'layout builder button that creates a new room', 'seatreg'));?> </span> 20 <span id="current-room-delete" class="room-action"><i class="fa fa-minus" aria-hidden="true"></i> <?php seatreg_noun_span('room', 'singular', _x('Delete %s', 'layout builder button that deletes the current room', 'seatreg'));?></span> 20 21 </div> 21 22 </div> <!-- end of build head--> … … 28 29 <div data-action="1" class="mouse-option action1" id="mouse-option-active" title="<?php esc_attr_e('Select, move and resize tool', 'seatreg'); ?>"></div> 29 30 <div data-action="4" class="mouse-option action4" title="<?php esc_attr_e('Lasso select tool', 'seatreg'); ?>"></div> 30 <div data-action="2" class="mouse-option action2" title="<?php esc_attr_e('Seat/place creation tool', 'seatreg'); ?>"></div> 31 <?php $seatregSeatToolTitle = _x('%s creation tool', 'layout builder tool that creates seats', 'seatreg'); ?> 32 <div data-action="2" class="mouse-option action2" title="<?php echo esc_attr( seatreg_noun_text('seat', 'singularUpper', $seatregSeatToolTitle) ); ?>"<?php echo seatreg_noun_markers('seat', 'singularUpper', $seatregSeatToolTitle, 'title'); ?>></div> 31 33 <div data-action="5" class="mouse-option action5" title="<?php esc_attr_e('Custom box tool', 'seatreg'); ?>"></div> 32 34 <div data-action="9" class="mouse-option action9" title="<?php esc_attr_e('Text tool', 'seatreg'); ?>"></div> … … 75 77 <div class="legends"></div> 76 78 <div id="build-section-message-wrap" data-toggle="modal" data-target="#limit-dialog"> 77 <span class="message-text"><span style="vertical-align:middle"><?php esc_html_e('Pending and booked seats can\'t be deleted', 'seatreg');?></span><span class="more-message-btn"></span></span>79 <span class="message-text"><span style="vertical-align:middle"><?php seatreg_noun_span('seat', 'plural', __('Pending and booked %s can\'t be deleted', 'seatreg'));?></span><span class="more-message-btn"></span></span> 78 80 </div> 79 81 <div class="update-wrapper"> … … 173 175 <div class="modal-content"> 174 176 <div class="modal-header"> 175 <h4 class="modal-title" id="myModalLabel"><?php esc_html_e('Seat/place pricing', 'seatreg');?></h4>177 <h4 class="modal-title" id="myModalLabel"><?php seatreg_noun_span('seat', 'singularUpper', _x('%s pricing', 'layout builder dialog title for setting seat prices', 'seatreg'));?></h4> 176 178 <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> 177 179 </div> … … 181 183 </div> 182 184 <div class="set-price-wrap"> 183 <div><label for="price-for-all-selected"><?php esc_html_e('Fill price to all selected seats', 'seatreg'); ?></label></div>185 <div><label for="price-for-all-selected"><?php seatreg_noun_span('seat', 'plural', __('Fill price to all selected %s', 'seatreg')); ?></label></div> 184 186 <input type="number" min="0" oninput="this.value = Math.abs(this.value)" id="price-for-all-selected" value="0" /> 185 187 <button type="button" class="btn btn-success btn-sm" id="fill-price-for-all-selected"><?php esc_html_e('Fill prices', 'seatreg'); ?></button> … … 199 201 <div class="modal-content"> 200 202 <div class="modal-header"> 201 <h4 class="modal-title" id="myModalLabel"><?php esc_html_e('Lock seats/places', 'seatreg');?></h4>203 <h4 class="modal-title" id="myModalLabel"><?php seatreg_noun_span('seat', 'pluralUpper', _x('Lock %s', 'layout builder dialog title for locking seats', 'seatreg'));?></h4> 202 204 <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> 203 205 </div> 204 206 <div class="modal-body"> 205 207 <div class="set-password-wrap"> 206 <div><label for="password-for-all-selected"><?php esc_html_e('Fill password to all selected seats', 'seatreg'); ?></label></div>208 <div><label for="password-for-all-selected"><?php seatreg_noun_span('seat', 'plural', __('Fill password to all selected %s', 'seatreg')); ?></label></div> 207 209 <input type="text" id="password-for-all-selected" /> 208 210 <button type="button" class="btn btn-success btn-sm" id="fill-password-for-all-selected"><?php esc_html_e('Fill password', 'seatreg'); ?></button> … … 222 224 <div class="modal-content"> 223 225 <div class="modal-header"> 224 <h4 class="modal-title" id="myModalLabel"><?php esc_html_e('Seat/place numbering', 'seatreg');?></h4>226 <h4 class="modal-title" id="myModalLabel"><?php seatreg_noun_span('seat', 'singularUpper', _x('%s numbering', 'layout builder dialog title for changing seat numbers', 'seatreg'));?></h4> 225 227 <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> 226 228 </div> 227 229 <div class="modal-body"> 228 <div class="alert alert-primary d-none" id="seat-nr-change-no-selection"><?php esc_html_e('No seats/places selected', 'seatreg'); ?></div>229 <div class="alert alert-primary d-none" id="seat-nr-change-warning"><?php esc_html_e('Pending or booked seat numbers can\'t be changed', 'seatreg'); ?></div>230 <div class="alert alert-primary d-none" id="seat-nr-change-no-selection"><?php seatreg_noun_span('seat', 'plural', _x('No %s selected', 'layout builder seat numbering dialog, nothing is selected', 'seatreg')); ?></div> 231 <div class="alert alert-primary d-none" id="seat-nr-change-warning"><?php seatreg_noun_span('seat', 'singular', __('Pending or booked %s numbers can\'t be changed', 'seatreg')); ?></div> 230 232 <div id="seat-numbering-wrap"> 231 233 <div> 232 <div><label for="seat-prefix"><?php esc_html_e('Seat prefix for selected seats', 'seatreg'); ?></label></div>234 <div><label for="seat-prefix"><?php seatreg_noun_span('seat', 'singularUpper', _x('%s prefix for the selected ones', 'layout builder seat numbering field label', 'seatreg')); ?></label></div> 233 235 <input type="text" id="seat-prefix" style="width:60px" /> 234 236 <button type="button" class="btn btn-success btn-sm" id="set-seat-prefix"><?php esc_html_e('Set prefix', 'seatreg'); ?></button> 235 237 </div><br> 236 238 <div> 237 <div><label for="seat-reorder"><?php esc_html_e('Reorder selected seats starting from', 'seatreg'); ?></label></div>239 <div><label for="seat-reorder"><?php seatreg_noun_span('seat', 'plural', __('Reorder selected %s starting from', 'seatreg')); ?></label></div> 238 240 <input type="number" id="seat-reorder" size="3" style="width:60px" /> 239 <button type="button" class="btn btn-success btn-sm" id="reorder-seats"><?php esc_html_e('Reorder seats', 'seatreg'); ?></button>241 <button type="button" class="btn btn-success btn-sm" id="reorder-seats"><?php seatreg_noun_span('seat', 'pluralUpper', _x('Reorder %s', 'layout builder button that renumbers the selected seats', 'seatreg')); ?></button> 240 242 </div> 241 243 </div> … … 268 270 269 271 <div class="legend-dialog-div"> 270 <label for="legend-delete-select-room" class="legend-dialog-label"><?php esc_html_e('Remove legend from this room:', 'seatreg');?></label> 272 <label for="legend-delete-select-room" class="legend-dialog-label"><?php 273 /* translators: %s: the word the admin uses for a room */ 274 seatreg_noun_span('room', 'singular', __('Remove legend from this %s:', 'seatreg')); 275 ?></label> 271 276 <select class="legend-select-room" id="legend-delete-select-room"></select> 272 277 <button type="button" id="delete-legend-from-room" class="btn btn-secondary d-block btn-sm"><?php esc_html_e('Remove', 'seatreg');?></button> … … 373 378 <div class="modal-content"> 374 379 <div class="modal-header"> 375 <h4 class="modal-title" id="myModalLabel"><?php esc_html_e('Room name', 'seatreg');?></h4>380 <h4 class="modal-title" id="myModalLabel"><?php seatreg_noun_span('room', 'singularUpper', _x('%s name', 'layout builder dialog title for naming a room', 'seatreg'));?></h4> 376 381 <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> 377 382 </div> 378 383 <div class="modal-body"> 379 <label for="room-name-dialog-input"><?php esc_html_e('Enter room name:', 'seatreg');?> </label>384 <label for="room-name-dialog-input"><?php seatreg_noun_span('room', 'singular', _x('Enter %s name:', 'layout builder room name field label', 'seatreg'));?> </label> 380 385 <input type="text" id="room-name-dialog-input"> 381 386 <div class="room-name-error"></div> … … 393 398 <div class="modal-content"> 394 399 <div class="modal-header"> 395 <h4 class="modal-title"><?php esc_html_e('Room description', 'seatreg');?></h4>400 <h4 class="modal-title"><?php seatreg_noun_span('room', 'singularUpper', _x('%s description', 'layout builder dialog title for a room description', 'seatreg'));?></h4> 396 401 <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> 397 402 </div> 398 403 <div class="modal-body"> 399 404 <p><?php esc_html_e('Will be displayed on the registration view.', 'seatreg'); ?></p> 400 <label for="room-description-input"><?php esc_html_e('Enter room description:', 'seatreg');?> </label><br>405 <label for="room-description-input"><?php seatreg_noun_span('room', 'singular', _x('Enter %s description:', 'layout builder room description field label', 'seatreg'));?> </label><br> 401 406 <textarea id="room-description-input" cols="50"></textarea> 402 407 <div class="room-description-error"></div> … … 436 441 <div class="guide-item2 guide-item-add"></div> 437 442 <p class="help-dialog-text"> 438 <?php esc_html_e('With this tool you can create seats/places. Simply click on gray dotted box and new seat/place will be created. You can create multiple seats/places at once by dragging cursor over gray boxes.', 'seatreg');?>443 <?php seatreg_noun_span('seat', 'plural,singular,plural', __('With this tool you can create %1$s. Simply click on gray dotted box and new %2$s will be created. You can create multiple %3$s at once by dragging cursor over gray boxes.', 'seatreg'));?> 439 444 </p> 440 445 </div> … … 499 504 <div class="guide-item2 guide-item-price"></div> 500 505 <p class="help-dialog-text"> 501 <?php esc_html_e('Lets you add prices to seats/places. You also need to configure paypal in settings to enable payments.', 'seatreg');?>506 <?php seatreg_noun_span('seat', 'plural', __('Lets you add prices to %s. You also need to configure paypal in settings to enable payments.', 'seatreg'));?> 502 507 </p> 503 508 </div> … … 506 511 <div class="guide-item2 guide-item-lock"></div> 507 512 <p class="help-dialog-text"> 508 <?php esc_html_e('Lets you lock or set password to seats/places. When seat/place is locked then only admin can book it using booking-manager. If password is added then it is required before booking can be made.', 'seatreg');?>513 <?php seatreg_noun_span('seat', 'plural,singular', __('Lets you lock or set password to %1$s. When a %2$s is locked then only admin can book it using booking-manager. If password is added then it is required before booking can be made.', 'seatreg'));?> 509 514 </p> 510 515 </div> … … 513 518 <div class="guide-item2 guide-item-seat-nr"></div> 514 519 <p class="help-dialog-text"> 515 <?php esc_html_e('Lets you change seat/place numbers. Pending and booked seat/place numbers can\'t be changed.', 'seatreg');?>520 <?php seatreg_noun_span('seat', 'singular,singular', __('Lets you change %1$s numbers. Pending and booked %2$s numbers can\'t be changed.', 'seatreg'));?> 516 521 </p> 517 522 </div> … … 566 571 <div class="modal-content"> 567 572 <div class="modal-header"> 568 <h4 class="modal-title"><?php esc_html_e('Room background image', 'seatreg');?></h4> 573 <h4 class="modal-title"><?php 574 /* translators: %s: the word the admin uses for a room, capitalized */ 575 seatreg_noun_span('room', 'singularUpper', __('%s background image', 'seatreg')); 576 ?></h4> 569 577 <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> 570 578 </div> 571 579 <div class="modal-body"> 572 <h4><?php esc_html_e('Current room image', 'seatreg');?></h4> 580 <h4><?php 581 /* translators: %s: the word the admin uses for a room */ 582 seatreg_noun_span('room', 'singular', __('Current %s image', 'seatreg')); 583 ?></h4> 573 584 <div id="activ-room-img-wrap"></div> 574 585 <br> -
seatreg/trunk/readme.txt
r3680221 r3693621 4 4 Requires at least: 5.3 5 5 Requires PHP: 7.2.28 6 Tested up to: 7. 07 Stable tag: 1.7 6.06 Tested up to: 7.1 7 Stable tag: 1.77.0 8 8 License: GPLv2 or later 9 9 License URI: http://www.gnu.org/licenses/gpl-2.0.html … … 50 50 == Changelog == 51 51 52 = 1.77.0 = 53 * The Overview page has been redesigned. 54 * You can now rename "room" to any word that fits your registration, such as stall or hall. 55 * You can now rename "seat" to any word that fits your registration, such as booth or bed. 56 * The words you use for a room and a seat can now be translated with Polylang. 57 * A registration embedded with the shortcode now opens in the language of the page it sits on. 58 52 59 = 1.76.0 = 53 60 * The Home page now shows your registrations as cards, each with its status, dates, and booking counts. -
seatreg/trunk/registration/index.php
r3624498 r3693621 24 24 $registrationTimeRestoriction = SeatregTimeRepository::getTimeInfoForRegistrationView($data->registration_start_time, $data->registration_end_time); 25 25 $hasFailedTimeRestriction = !$registrationTimeRestoriction->registrationStartCheck || !$registrationTimeRestoriction->registrationEndCheck; 26 $usingSeats = $data->using_seats === '1'; 26 $roomNouns = SeatregTerminologyService::getRoomNouns($data); 27 $seatNouns = SeatregTerminologyService::getSeatNouns($data); 27 28 $requireWPLogin = $data->require_wp_login === '1'; 28 29 $showInfoButton = $data->show_info_button === '1'; … … 48 49 ?> 49 50 <!DOCTYPE html> 50 <html lang="en">51 <html <?php language_attributes(); ?>> 51 52 <head> 52 53 <meta charset="UTF-8"> … … 130 131 <?php if( SeatregLayoutService::getRoomsLength( SeatregLayoutService::getRoomDataFromLayout($data->registration_layout) ) > 1 ): ?> 131 132 <div id="room-nav-btn"> 132 <?php esc_html_e('Change room', 'seatreg'); ?> 133 <?php 134 /* translators: %s: the word the admin uses for a room */ 135 echo esc_html( sprintf( __('Change %s', 'seatreg'), $roomNouns->singular ) ); 136 ?> 133 137 </div> 134 138 <?php endif; ?> … … 163 167 <div id="room-is-empty" class="dont-display"> 164 168 <p class="room-is-empty-text"> 165 <?php esc_html_e('Room is empty', 'seatreg'); ?> 169 <?php 170 /* translators: %s: the word the admin uses for a room, capitalized */ 171 echo esc_html( sprintf( __('%s is empty', 'seatreg'), $roomNouns->singularUpper ) ); 172 ?> 166 173 </p> 167 174 </div> … … 186 193 <div id="cart-text"> 187 194 <div class="seats-in-cart">0</div> 188 <div><?php $usingSeats ? esc_html_e('seats selected', 'seatreg') : esc_html_e('places selected', 'seatreg'); ?></div> 195 <div><?php 196 /* translators: %s: the word the admin uses for seats, plural */ 197 echo esc_html( sprintf( __('%s selected', 'seatreg'), $seatNouns->plural ) ); 198 ?></div> 189 199 </div> 190 200 </div> … … 262 272 ?> 263 273 <div> 264 <?php esc_html_e('Total rooms', 'seatreg'); ?>: <span class="total-rooms"></span> 274 <?php 275 /* translators: %s: the word the admin uses for rooms, plural */ 276 echo esc_html( sprintf( __('Total %s', 'seatreg'), $roomNouns->plural ) ); 277 ?>: <span class="total-rooms"></span> 265 278 </div> 266 279 <div> 267 <?php $usingSeats ? esc_html_e('Total open seats', 'seatreg') : esc_html_e('Total open places', 'seatreg') ; ?>: <span class="total-open"></span> 280 <?php 281 /* translators: %s: the word the admin uses for seats, plural */ 282 echo esc_html( sprintf( __('Total open %s', 'seatreg'), $seatNouns->plural ) ); 283 ?>: <span class="total-open"></span> 268 284 </div> 269 285 <div> … … 352 368 <div class="row-room"> 353 369 <?php 354 e sc_html_e('Room', 'seatreg');370 echo esc_html($roomNouns->singularUpper); 355 371 ?> 356 372 </div> … … 433 449 <div class="cart-icon-text"> 434 450 <span class="seats-in-cart">0</span> 435 <?php 436 $usingSeats ? esc_html_e('seats selected', 'seatreg') : esc_html_e('places selected', 'seatreg'); 451 <?php 452 /* translators: %s: the word the admin uses for seats, plural */ 453 echo esc_html( sprintf( __('%s selected', 'seatreg'), $seatNouns->plural ) ); 437 454 ?> 438 455 </div> -
seatreg/trunk/registration/js/registration.js
r3641857 r3693621 1 1 (function($) { 2 2 var translator = createSeatregTranslator(window.seatregTranslations); 3 4 function capitalizeFirstLetter(string) {5 return string.charAt(0).toUpperCase() + string.slice(1);6 }7 3 8 4 $('.time').each(function() { … … 109 105 this.payPalCurrencyCode = window.payPalCurrencyCode; 110 106 this.enteredSeatPasswords = {}; 111 this.usingSeats = usingSeats === '1'; 107 112 108 this.usingCalendar = window.usingCalendar === '1' ? true : false; 113 109 this.enabledCalendarDates = window.calendarDates ? window.calendarDates.split(',') : []; 114 this.spotName = this.usingSeats ? translator.translate('seat') : translator.translate('place'); 110 this.roomNouns = seatregRoomNouns(); 111 this.seatNouns = seatregSeatNouns(); 115 112 this.activeCalendarDate = window.activeCalendarDate; 116 113 this.siteLanguage = window.siteLanguage; … … 559 556 var infoLoc = this.rooms[this.currentRoom].room; 560 557 var documentFragment = $(document.createDocumentFragment()); 561 var text = this.usingSeats ? translator.translate('openSeatsInRoom_') : translator.translate('openPlacesInRoom_');562 563 558 documentFragment.append( 564 '<div class="info-item open-seats">' + 565 '<span>' + 566 text + 567 '</span>' + 568 infoLoc.roomOpenSeats + 569 '</div>', 570 '<div class="info-item"><span class="bron-legend"></span> <span>'+ translator.translate('pendingSeatInRoom_') +'</span>' + infoLoc.roomBronSeats +'</div>', '<div class="info-item"><span class="tak-legend"></span> <span>'+ translator.translate('confirmedSeatInRoom_') +'</span>' + infoLoc.roomTakenSeats +'</div>'); 559 '<div class="info-item open-seats">' + 560 '<span>' + 561 seatregFormat(translator.translate('openSpotsInRoom'), [this.seatNouns.plural, this.roomNouns.singular, infoLoc.roomOpenSeats]) + 562 '</span>' + 563 '</div>', 564 '<div class="info-item"><span class="bron-legend"></span> <span>'+ seatregFormat(translator.translate('pendingBookingsInRoom'), [this.roomNouns.singular, infoLoc.roomBronSeats]) +'</span></div>', '<div class="info-item"><span class="tak-legend"></span> <span>'+ seatregFormat(translator.translate('approvedBookingsInRoom'), [this.roomNouns.singular, infoLoc.roomTakenSeats]) +'</span></div>'); 571 565 572 566 $('#room-nav-info-inner').html(documentFragment); … … 769 763 770 764 if(scope.selectedSeats.length == 0) { 771 $('#seat-cart-info').html('<h3>'+ translator.translate('selectionIsEmpty') +'</h3><p>' + translator.translate('youCanAdd_') + scope.spotName + translator.translate('_toCartClickTab') + '</p>');765 $('#seat-cart-info').html('<h3>'+ seatregFormat(translator.translate('selectionIsEmpty'), [scope.seatNouns.singularUpper]) +'</h3><p>' + seatregFormat(translator.translate('youCanAddToSelection'), [scope.seatNouns.plural]) + '</p>'); 772 766 $('#checkout').css('display','none'); 773 767 $('#seat-cart-rows').css('display','none'); … … 779 773 var infoText; 780 774 781 if( selected > 1 ) { 782 infoText = selected + (this.usingSeats ? translator.translate('_seatsSelected') : translator.translate('_placesSelected') ); 783 }else { 784 infoText = selected + (this.usingSeats ? translator.translate('_seatSelected') : translator.translate('_placeSelected') ); 785 } 775 infoText = seatregFormat(translator.translate('spotsSelected'), [selected, selected > 1 ? scope.seatNouns.plural : scope.seatNouns.singular]); 786 776 $('#seat-cart-info').text(infoText); 787 777 let totalPrice = scope.calculateBookingCost(); … … 819 809 SeatReg.prototype.openSeatCart = function() { 820 810 var selected = this.selectedSeats.length; 821 var cartHeaderText = this.usingSeats ? translator.translate('selectionIsEmpty') : translator.translate('selectionIsEmptyPlace');822 var cartEmptyText = this.usingSeats ? translator.translate('selectingGuide') : translator.translate('selectingGuidePlace');811 var cartHeaderText = seatregFormat(translator.translate('selectionIsEmpty'), [this.seatNouns.singularUpper]); 812 var cartEmptyText = seatregFormat(translator.translate('selectingGuide'), [this.seatNouns.singular]); 823 813 this.resetCouponMarkup(); 824 814 … … 838 828 var infoText; 839 829 840 if(selected > 1) { 841 infoText = selected + ( this.usingSeats ? translator.translate('_seatsSelected') : translator.translate('_placesSelected') ); 842 }else { 843 infoText = selected + translator.translate('_seatSelected'); 844 infoText = selected + ( this.usingSeats ? translator.translate('_seatSelected') : translator.translate('_placeSelected') ); 845 } 830 infoText = seatregFormat(translator.translate('spotsSelected'), [selected, selected > 1 ? this.seatNouns.plural : this.seatNouns.singular]); 846 831 $('#seat-cart-info').text(infoText); 847 832 … … 1139 1124 if(!isSelected) { 1140 1125 if(isLocked) { 1141 var text = this.usingSeats ? translator.translate('seatIsLocked') : translator.translate('placeIsLocked');1126 var text = seatregFormat(translator.translate('spotIsLocked'), [this.seatNouns.singularUpper]); 1142 1127 1143 1128 $('#confirm-dialog-bottom').empty(); … … 1158 1143 $('#confirm-dialog-mob-text').html('<div class="seat-taken-notify">' + text + '</div>'); 1159 1144 }else if( this.status == 'run' && !this.hasFailedTimeRestrictions() ) { 1160 var maxPlacesText = this.usingSeats ? translator.translate('maxSeatsToAdd') : translator.translate('maxPlacesToAdd');1161 1162 $('#confirm-dialog-mob-text').html('<div class="add-seat-text"><h5>'+ translator.translate('add_') + ' ' + this.spotName + ' ' + seatPrefix + nr + translator.translate('_fromRoom_') + ' ' + room + translator.translate('_toSelection') +'</h5><p>'+ maxPlacesText + ' ' + this.seatLimit +'</p>' + '</div>');1145 var maxPlacesText = seatregFormat(translator.translate('maxSpotsToAdd'), [this.seatNouns.plural, this.seatLimit]); 1146 1147 $('#confirm-dialog-mob-text').html('<div class="add-seat-text"><h5>'+ seatregFormat(translator.translate('addSpotFromRoomToBooking'), [this.seatNouns.singular, seatPrefix + nr, this.roomNouns.singular, room]) +'</h5><p>'+ maxPlacesText +'</p>' + '</div>'); 1163 1148 1164 1149 if(this.isPaymentEnabled() && this.payPalCurrencyCode && price > 0) { 1165 var placeCostText = this.usingSeats ? translator.translate('seatCosts_') : translator.translate('placeCosts_');1166 1167 $('#confirm-dialog-mob-text .add-seat-text').append('<p>' + placeCostText + '< strong>' + getCurrencySymbolFromISO(this.payPalCurrencyCode) + price + '</strong></p>');1150 var placeCostText = seatregFormat(translator.translate('spotCosts'), [this.seatNouns.singular, '<strong>' + getCurrencySymbolFromISO(this.payPalCurrencyCode) + price + '</strong>']); 1151 1152 $('#confirm-dialog-mob-text .add-seat-text').append('<p>' + placeCostText + '</p>'); 1168 1153 } 1169 1154 }else { 1170 $('#confirm-dialog-mob-text').html('<div class="add-seat-text"><h5>' + this.spotName + ' ' + seatPrefix + nr + translator.translate('_fromRoom_') + room+ '</h5></div>');1155 $('#confirm-dialog-mob-text').html('<div class="add-seat-text"><h5>' + seatregFormat(translator.translate('spotFromRoom'), [this.seatNouns.singular, seatPrefix + nr, this.roomNouns.singular, room]) + '</h5></div>'); 1171 1156 } 1172 1157 1173 1158 }else if(type == 'tak') { 1174 1159 $('#confirm-dialog-bottom').empty(); 1175 $('#confirm-dialog-mob-text').html('<div class="seat-taken-notify"><h5>'+ translator.translate('this_') + this.spotName + translator.translate('_isOccupied') + '</h5></div>');1160 $('#confirm-dialog-mob-text').html('<div class="seat-taken-notify"><h5>'+ seatregFormat(translator.translate('spotIsOccupied'), [this.seatNouns.singular]) + '</h5></div>'); 1176 1161 }else if(type == 'bron') { 1177 1162 $('#confirm-dialog-bottom').empty(); 1178 $('#confirm-dialog-mob-text').html('<div class="seat-bron-notify"><h5>' + translator.translate('this_') + ' ' + this.spotName + translator.translate('_isPendingState') +'</h5>'+ translator.translate('regOwnerNotConfirmed') +'</div>');1163 $('#confirm-dialog-mob-text').html('<div class="seat-bron-notify"><h5>' + seatregFormat(translator.translate('spotIsPendingState'), [this.seatNouns.singular]) +'</h5>'+ translator.translate('regOwnerNotConfirmed') +'</div>'); 1179 1164 }else if(type == 'rbox' && this.selectedSeats.length >= this.seatLimit ) { 1180 1165 $('#confirm-dialog-bottom').empty(); … … 1183 1168 }else { 1184 1169 $('#confirm-dialog-bottom').empty(); 1185 $('#confirm-dialog-mob-text').html('<div class="add-seat-text"><h5>' + capitalizeFirstLetter(this.spotName) + ' ' + nr + translator.translate('_isAlreadySelected') +'</h5></div>');1170 $('#confirm-dialog-mob-text').html('<div class="add-seat-text"><h5>' + seatregFormat(translator.translate('spotAlreadySelected'), [this.seatNouns.singularUpper, nr]) +'</h5></div>'); 1186 1171 } 1187 1172 } -
seatreg/trunk/seatreg.php
r3680221 r3693621 7 7 Author URI: https://github.com/SiimKirjanen 8 8 Text Domain: seatreg 9 Version: 1.7 6.09 Version: 1.77.0 10 10 Requires at least: 5.3 11 11 Requires PHP: 7.2.28 … … 73 73 require( 'php/services/SeatregCompanionAppService.php' ); 74 74 require( 'php/services/SeatregRegistrationStatusService.php' ); 75 require( 'php/services/SeatregTerminologyService.php' ); 76 require( 'php/services/SeatregStringTranslationService.php' ); 75 77 require( 'php/migrations/SeatregEncryptStripeCredentialsMigration.php' ); 76 78 require( 'php/migrations/SeatregBackfillStripeWebhookUrlMigration.php' );
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)