Compare commits

...

8 Commits

Author SHA1 Message Date
Richard Schreiber
1ecad6a4c2 [A11y] Test for autofocus tabindex UX 2025-01-28 16:20:46 +01:00
Richard Schreiber
59a7845ac4 [A11y] Improve focus handling for widget overlay
* move iframe after close-button to follow tab-order

* add missing prevActiveElement

* prepare focus-handling for error_message

* iframe.src through prop instead of directly accessing it

* do not change close button HTML-element for compatability

* make all overlay elements role=dialog and modals

* fix close button

* fix re-opening of iframe

* make error-message read out when shown

* Improve handling of frame_src with frame_loading

* manually focus continue or close button in alert-box

* fix btn-focus in transition

* Improve quantity group
2025-01-28 11:04:38 +01:00
Cornelius Kibelka
ef1024d231 Translations: Update Portuguese (Brazil)
Currently translated at 14.8% (870 of 5844 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_BR/

powered by weblate
2025-01-28 10:13:32 +01:00
Cornelius Kibelka
71d0d72425 Translations: Update Portuguese (Brazil)
Currently translated at 14.1% (825 of 5844 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_BR/

powered by weblate
2025-01-27 17:40:37 +01:00
Hijiri Umemoto
6252e526bf Translations: Update Japanese
Currently translated at 100.0% (5844 of 5844 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ja/

powered by weblate
2025-01-27 17:40:37 +01:00
Rosariocastellana
f3d8a1c2e1 Translations: Update Italian
Currently translated at 24.2% (1419 of 5844 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/it/

powered by weblate
2025-01-27 17:40:37 +01:00
Martin Gross
148a3b2933 MetricsMiddleware: Do not record pretix_view_duration_seconds for urls with no url.url_name (#4784) 2025-01-27 16:46:58 +01:00
Mira
709633d6fb Register missing LogEntryTypes (#4779) 2025-01-27 15:35:29 +01:00
7 changed files with 208 additions and 168 deletions

View File

@@ -351,6 +351,7 @@ class CheckinErrorLogEntryType(OrderLogEntryType):
return str(plain_without_dt).format_map(data) return str(plain_without_dt).format_map(data)
@log_entry_types.new('pretix.event.checkin')
class CheckinLogEntryType(CheckinErrorLogEntryType): class CheckinLogEntryType(CheckinErrorLogEntryType):
def display(self, logentry: LogEntry, data): def display(self, logentry: LogEntry, data):
if data.get('type') == Checkin.TYPE_EXIT: if data.get('type') == Checkin.TYPE_EXIT:
@@ -377,6 +378,7 @@ class CheckinLogEntryType(CheckinErrorLogEntryType):
) )
@log_entry_types.new()
class OrderConsentLogEntryType(OrderLogEntryType): class OrderConsentLogEntryType(OrderLogEntryType):
action_type = 'pretix.event.order.consent' action_type = 'pretix.event.order.consent'
@@ -386,6 +388,7 @@ class OrderConsentLogEntryType(OrderLogEntryType):
) )
@log_entry_types.new()
class OrderCanceledLogEntryType(OrderLogEntryType): class OrderCanceledLogEntryType(OrderLogEntryType):
action_type = 'pretix.event.order.canceled' action_type = 'pretix.event.order.canceled'
@@ -397,6 +400,7 @@ class OrderCanceledLogEntryType(OrderLogEntryType):
return _('The order has been canceled.') return _('The order has been canceled.')
@log_entry_types.new()
class OrderPrintLogEntryType(OrderLogEntryType): class OrderPrintLogEntryType(OrderLogEntryType):
action_type = 'pretix.event.order.print' action_type = 'pretix.event.order.print'

View File

@@ -7,7 +7,7 @@
<div class="dropdown-container"> <div class="dropdown-container">
<input type="text" class="form-control" id="dashboard_query" <input type="text" class="form-control" id="dashboard_query"
placeholder="{% trans "Go to event" %}" placeholder="{% trans "Go to event" %}"
data-typeahead-query autofocus> data-typeahead-query tabindex="1" autofocus>
<ul data-event-typeahead data-source="{% url "control:nav.typeahead" %}" data-typeahead-field="#dashboard_query" <ul data-event-typeahead data-source="{% url "control:nav.typeahead" %}" data-typeahead-field="#dashboard_query"
class="event-dropdown dropdown-menu"> class="event-dropdown dropdown-menu">
</ul> </ul>

View File

@@ -62,6 +62,7 @@ class MetricsMiddleware(object):
t0 = time.perf_counter() t0 = time.perf_counter()
resp = self.get_response(request) resp = self.get_response(request)
tdiff = time.perf_counter() - t0 tdiff = time.perf_counter() - t0
if url.url_name:
pretix_view_duration_seconds.observe(tdiff, status_code=resp.status_code, method=request.method, pretix_view_duration_seconds.observe(tdiff, status_code=resp.status_code, method=request.method,
url_name=url.namespace + ':' + url.url_name) url_name=url.namespace + ':' + url.url_name)

View File

@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-21 16:42+0000\n" "POT-Creation-Date: 2025-01-21 16:42+0000\n"
"PO-Revision-Date: 2024-11-24 01:00+0000\n" "PO-Revision-Date: 2025-01-25 22:00+0000\n"
"Last-Translator: gabriblas <github@unowen.simplelogin.com>\n" "Last-Translator: Rosariocastellana <rosariocastellana@gmail.com>\n"
"Language-Team: Italian <https://translate.pretix.eu/projects/pretix/pretix/" "Language-Team: Italian <https://translate.pretix.eu/projects/pretix/pretix/"
"it/>\n" "it/>\n"
"Language: it\n" "Language: it\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.8.3\n" "X-Generator: Weblate 5.9.2\n"
#: pretix/_base_settings.py:87 #: pretix/_base_settings.py:87
msgid "English" msgid "English"
@@ -93,7 +93,7 @@ msgstr "Italiano"
#: pretix/_base_settings.py:105 #: pretix/_base_settings.py:105
msgid "Japanese" msgid "Japanese"
msgstr "" msgstr "Giapponese"
#: pretix/_base_settings.py:106 #: pretix/_base_settings.py:106
msgid "Latvian" msgid "Latvian"
@@ -3415,6 +3415,8 @@ msgid ""
"The relevant plugin is currently not active. To activate it, click here to " "The relevant plugin is currently not active. To activate it, click here to "
"go to the plugin settings." "go to the plugin settings."
msgstr "" msgstr ""
"Il plugin in questione non è al momento attivo. Per attivarlo, clicca qui "
"per andare alle impostazioni del plugin."
#: pretix/base/logentrytypes.py:50 #: pretix/base/logentrytypes.py:50
#, fuzzy #, fuzzy
@@ -3425,48 +3427,48 @@ msgstr "Questo prodotto non è al momento disponibile."
#: pretix/base/logentrytypes.py:183 #: pretix/base/logentrytypes.py:183
#, python-brace-format #, python-brace-format
msgid "Order {val}" msgid "Order {val}"
msgstr "" msgstr "Ordine {val}"
#: pretix/base/logentrytypes.py:194 #: pretix/base/logentrytypes.py:194
#, python-brace-format #, python-brace-format
msgid "Voucher {val}…" msgid "Voucher {val}…"
msgstr "" msgstr "Voucher {val}…"
#: pretix/base/logentrytypes.py:205 #: pretix/base/logentrytypes.py:205
#, python-brace-format #, python-brace-format
msgid "Product {val}" msgid "Product {val}"
msgstr "" msgstr "Prodotto {val}"
#: pretix/base/logentrytypes.py:211 #: pretix/base/logentrytypes.py:211
#, python-brace-format #, python-brace-format
msgctxt "subevent" msgctxt "subevent"
msgid "Date {val}" msgid "Date {val}"
msgstr "" msgstr "Data {val}"
#: pretix/base/logentrytypes.py:217 #: pretix/base/logentrytypes.py:217
#, python-brace-format #, python-brace-format
msgid "Quota {val}" msgid "Quota {val}"
msgstr "" msgstr "Quota {val}"
#: pretix/base/logentrytypes.py:223 #: pretix/base/logentrytypes.py:223
#, python-brace-format #, python-brace-format
msgid "Discount {val}" msgid "Discount {val}"
msgstr "" msgstr "Sconto {val}"
#: pretix/base/logentrytypes.py:229 #: pretix/base/logentrytypes.py:229
#, python-brace-format #, python-brace-format
msgid "Category {val}" msgid "Category {val}"
msgstr "" msgstr "Categoria {val}"
#: pretix/base/logentrytypes.py:235 #: pretix/base/logentrytypes.py:235
#, python-brace-format #, python-brace-format
msgid "Question {val}" msgid "Question {val}"
msgstr "" msgstr "Domanda {val}"
#: pretix/base/logentrytypes.py:241 #: pretix/base/logentrytypes.py:241
#, python-brace-format #, python-brace-format
msgid "Tax rule {val}" msgid "Tax rule {val}"
msgstr "" msgstr "Regola fiscale {val}"
#: pretix/base/media.py:71 #: pretix/base/media.py:71
msgid "Barcode / QR-Code" msgid "Barcode / QR-Code"
@@ -4771,7 +4773,7 @@ msgstr ""
#: pretix/base/models/items.py:455 #: pretix/base/models/items.py:455
msgid "Require either an existing or a new medium to be used" msgid "Require either an existing or a new medium to be used"
msgstr "" msgstr "Richiede l'utilizzo di un mezzo esistente o di uno nuovo"
#: pretix/base/models/items.py:471 pretix/base/models/items.py:1446 #: pretix/base/models/items.py:471 pretix/base/models/items.py:1446
msgid "Category" msgid "Category"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-21 16:42+0000\n" "POT-Creation-Date: 2025-01-21 16:42+0000\n"
"PO-Revision-Date: 2025-01-22 16:00+0000\n" "PO-Revision-Date: 2025-01-27 10:00+0000\n"
"Last-Translator: Hijiri Umemoto <hijiri@umemoto.org>\n" "Last-Translator: Hijiri Umemoto <hijiri@umemoto.org>\n"
"Language-Team: Japanese <https://translate.pretix.eu/projects/pretix/pretix/" "Language-Team: Japanese <https://translate.pretix.eu/projects/pretix/pretix/"
"ja/>\n" "ja/>\n"
@@ -2956,7 +2956,7 @@ msgstr ""
#: pretix/base/forms/user.py:56 pretix/control/forms/users.py:45 #: pretix/base/forms/user.py:56 pretix/control/forms/users.py:45
#: pretix/presale/forms/customer.py:283 pretix/presale/forms/customer.py:371 #: pretix/presale/forms/customer.py:283 pretix/presale/forms/customer.py:371
msgid "Please enter the same password twice" msgid "Please enter the same password twice"
msgstr "同じパスワードを2回入力してください" msgstr "同じパスワードを回入力してください"
#: pretix/base/forms/auth.py:172 pretix/base/forms/auth.py:224 #: pretix/base/forms/auth.py:172 pretix/base/forms/auth.py:224
#: pretix/presale/forms/customer.py:296 pretix/presale/forms/customer.py:390 #: pretix/presale/forms/customer.py:296 pretix/presale/forms/customer.py:390
@@ -3401,13 +3401,12 @@ msgstr "イベントの日程: {date_range}"
msgid "" msgid ""
"The relevant plugin is currently not active. To activate it, click here to " "The relevant plugin is currently not active. To activate it, click here to "
"go to the plugin settings." "go to the plugin settings."
msgstr "" msgstr "関連するプラグインは、現在アクティブではありません。アクティブにするには、こ"
"こをクリックしてプラグイン設定に進んでください。"
#: pretix/base/logentrytypes.py:50 #: pretix/base/logentrytypes.py:50
#, fuzzy
#| msgid "This product is currently not available."
msgid "The relevant plugin is currently not active." msgid "The relevant plugin is currently not active."
msgstr "この製品は現在利用できません。" msgstr "関連するプラグインは、現在無効です。"
#: pretix/base/logentrytypes.py:183 #: pretix/base/logentrytypes.py:183
#, python-brace-format #, python-brace-format
@@ -16353,22 +16352,17 @@ msgid "A user has been removed from the event team."
msgstr "ユーザーがイベントチームから削除されました。" msgstr "ユーザーがイベントチームから削除されました。"
#: pretix/control/logdisplay.py:721 #: pretix/control/logdisplay.py:721
#, fuzzy
#| msgid "A plugin has been enabled."
msgid "The plugin has been enabled." msgid "The plugin has been enabled."
msgstr "プラグインが有効になりました。" msgstr "プラグインが有効になりました。"
#: pretix/control/logdisplay.py:722 #: pretix/control/logdisplay.py:722
#, fuzzy
#| msgid "A plugin has been disabled."
msgid "The plugin has been disabled." msgid "The plugin has been disabled."
msgstr "プラグインが無効になっています。" msgstr "プラグインが無効になっています。"
#: pretix/control/logdisplay.py:725 #: pretix/control/logdisplay.py:725
#, fuzzy, python-brace-format #, python-brace-format
#| msgid "Question {val}"
msgid "Plugin {val}" msgid "Plugin {val}"
msgstr "質問{val}" msgstr "プラグイン{val}"
#: pretix/control/logdisplay.py:741 #: pretix/control/logdisplay.py:741
msgid "The product has been created." msgid "The product has been created."
@@ -29723,10 +29717,9 @@ msgid "An email rule was deleted"
msgstr "電子メールのルールが削除されました" msgstr "電子メールのルールが削除されました"
#: pretix/plugins/sendmail/signals.py:140 #: pretix/plugins/sendmail/signals.py:140
#, fuzzy, python-brace-format #, python-brace-format
#| msgid "Tax rule {val}"
msgid "Mail rule {val}" msgid "Mail rule {val}"
msgstr "税金のルール {val}" msgstr "メールのルール {val}"
#: pretix/plugins/sendmail/templates/pretixplugins/sendmail/history.html:8 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/history.html:8
msgid "" msgid ""
@@ -32173,7 +32166,7 @@ msgstr "この製品の価格が自動割引によって削減されました。
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:346 #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:346
#, python-format #, python-format
msgid "%(percent)s %% Discount" msgid "%(percent)s %% Discount"
msgstr "" msgstr "%(percent)s %% 割引"
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:277 #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:277
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:350 #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:350

View File

@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-21 16:42+0000\n" "POT-Creation-Date: 2025-01-21 16:42+0000\n"
"PO-Revision-Date: 2024-11-14 20:00+0000\n" "PO-Revision-Date: 2025-01-28 01:00+0000\n"
"Last-Translator: Gravity Fox <gravityraposa@gmail.com>\n" "Last-Translator: Cornelius Kibelka <ckibelka-ctr@wikimedia.org>\n"
"Language-Team: Portuguese (Brazil) <https://translate.pretix.eu/projects/" "Language-Team: Portuguese (Brazil) <https://translate.pretix.eu/projects/"
"pretix/pretix/pt_BR/>\n" "pretix/pretix/pt_BR/>\n"
"Language: pt_BR\n" "Language: pt_BR\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n" "Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 5.8.3\n" "X-Generator: Weblate 5.9.2\n"
#: pretix/_base_settings.py:87 #: pretix/_base_settings.py:87
msgid "English" msgid "English"
@@ -93,7 +93,7 @@ msgstr "Italiano"
#: pretix/_base_settings.py:105 #: pretix/_base_settings.py:105
msgid "Japanese" msgid "Japanese"
msgstr "" msgstr "Japonês"
#: pretix/_base_settings.py:106 #: pretix/_base_settings.py:106
msgid "Latvian" msgid "Latvian"
@@ -2436,10 +2436,8 @@ msgid "Download a spreadsheet of all payments or refunds of every order."
msgstr "Baixe uma planilha de todos os pagamentos e reembolsos de cada pedido." msgstr "Baixe uma planilha de todos os pagamentos e reembolsos de cada pedido."
#: pretix/base/exporters/orderlist.py:1012 #: pretix/base/exporters/orderlist.py:1012
#, fuzzy
#| msgid "Date of last payment"
msgid "Date range (payment date)" msgid "Date range (payment date)"
msgstr "Data do último pagamento" msgstr "Intervalo de datas (data de pagamento)"
#: pretix/base/exporters/orderlist.py:1015 #: pretix/base/exporters/orderlist.py:1015
msgid "" msgid ""
@@ -2450,7 +2448,7 @@ msgstr ""
#: pretix/base/exporters/orderlist.py:1019 #: pretix/base/exporters/orderlist.py:1019
msgid "Date range (start of transaction)" msgid "Date range (start of transaction)"
msgstr "" msgstr "Intervalo de datas (início da transação)"
#: pretix/base/exporters/orderlist.py:1025 #: pretix/base/exporters/orderlist.py:1025
msgid "Payment states" msgid "Payment states"
@@ -2576,10 +2574,8 @@ msgid "Current user's carts"
msgstr "Carrinhos de usuários atuais" msgstr "Carrinhos de usuários atuais"
#: pretix/base/exporters/orderlist.py:1135 #: pretix/base/exporters/orderlist.py:1135
#, fuzzy
#| msgid "Paid orders"
msgid "Exited orders" msgid "Exited orders"
msgstr "Ordens pagas" msgstr "Pedidos encerrados"
#: pretix/base/exporters/orderlist.py:1135 #: pretix/base/exporters/orderlist.py:1135
msgid "Current availability" msgid "Current availability"
@@ -2593,22 +2589,19 @@ msgid "Infinite"
msgstr "Infinito" msgstr "Infinito"
#: pretix/base/exporters/orderlist.py:1181 #: pretix/base/exporters/orderlist.py:1181
#, fuzzy
#| msgid "Gift card"
msgid "Gift card transactions" msgid "Gift card transactions"
msgstr "Cartão Presente" msgstr "Transações com cartões-presente"
#: pretix/base/exporters/orderlist.py:1183 #: pretix/base/exporters/orderlist.py:1183
#: pretix/base/exporters/orderlist.py:1288 #: pretix/base/exporters/orderlist.py:1288
#, fuzzy
#| msgid "Gift card"
msgctxt "export_category" msgctxt "export_category"
msgid "Gift cards" msgid "Gift cards"
msgstr "Cartão Presente" msgstr "Cartões-presente"
#: pretix/base/exporters/orderlist.py:1184 #: pretix/base/exporters/orderlist.py:1184
msgid "Download a spreadsheet of all gift card transactions." msgid "Download a spreadsheet of all gift card transactions."
msgstr "" msgstr ""
"Faça o download de uma planilha de todas as transações com cartões-presente."
#: pretix/base/exporters/orderlist.py:1212 #: pretix/base/exporters/orderlist.py:1212
#: pretix/base/exporters/orderlist.py:1259 #: pretix/base/exporters/orderlist.py:1259
@@ -2619,10 +2612,8 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/organizers/giftcard.html:28 #: pretix/control/templates/pretixcontrol/organizers/giftcard.html:28
#: pretix/control/templates/pretixcontrol/organizers/giftcards.html:56 #: pretix/control/templates/pretixcontrol/organizers/giftcards.html:56
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:156 #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:156
#, fuzzy
#| msgid "Gift card"
msgid "Gift card code" msgid "Gift card code"
msgstr "Cartão Presente" msgstr "Código do cartão-presente"
#: pretix/base/exporters/orderlist.py:1213 #: pretix/base/exporters/orderlist.py:1213
#: pretix/base/exporters/orderlist.py:1302 #: pretix/base/exporters/orderlist.py:1302
@@ -2631,7 +2622,7 @@ msgstr "Cartão Presente"
#: pretix/control/forms/filter.py:1413 pretix/control/forms/filter.py:1416 #: pretix/control/forms/filter.py:1413 pretix/control/forms/filter.py:1416
#: pretix/control/templates/pretixcontrol/event/live.html:75 #: pretix/control/templates/pretixcontrol/event/live.html:75
msgid "Test mode" msgid "Test mode"
msgstr "" msgstr "Modo de teste"
#: pretix/base/exporters/orderlist.py:1218 pretix/base/models/organizer.py:96 #: pretix/base/exporters/orderlist.py:1218 pretix/base/models/organizer.py:96
#: pretix/control/forms/event.py:110 pretix/control/forms/event.py:116 #: pretix/control/forms/event.py:110 pretix/control/forms/event.py:116
@@ -2678,41 +2669,41 @@ msgid "TEST MODE"
msgstr "MODO DE TESTE" msgstr "MODO DE TESTE"
#: pretix/base/exporters/orderlist.py:1240 #: pretix/base/exporters/orderlist.py:1240
#, fuzzy
#| msgid "Gift card"
msgid "Gift card redemptions" msgid "Gift card redemptions"
msgstr "Cartão Presente" msgstr "Resgates de cartões-presente"
#: pretix/base/exporters/orderlist.py:1242 #: pretix/base/exporters/orderlist.py:1242
msgid "" msgid ""
"Download a spreadsheet of all payments or refunds that involve gift cards." "Download a spreadsheet of all payments or refunds that involve gift cards."
msgstr "" msgstr ""
"Faça o download de uma planilha de todos os pagamentos ou reembolsos que "
"envolvam cartões-presente."
#: pretix/base/exporters/orderlist.py:1259 #: pretix/base/exporters/orderlist.py:1259
#: pretix/control/templates/pretixcontrol/giftcards/payment.html:16 #: pretix/control/templates/pretixcontrol/giftcards/payment.html:16
msgid "Issuer" msgid "Issuer"
msgstr "" msgstr "Emissor"
#: pretix/base/exporters/orderlist.py:1286 pretix/control/navigation.py:538 #: pretix/base/exporters/orderlist.py:1286 pretix/control/navigation.py:538
#: pretix/control/navigation.py:556 #: pretix/control/navigation.py:556
#: pretix/control/templates/pretixcontrol/organizers/edit.html:156 #: pretix/control/templates/pretixcontrol/organizers/edit.html:156
#: pretix/plugins/reports/accountingreport.py:898 #: pretix/plugins/reports/accountingreport.py:898
#, fuzzy
#| msgid "Gift card"
msgid "Gift cards" msgid "Gift cards"
msgstr "Cartão Presente" msgstr "Cartões-presente"
#: pretix/base/exporters/orderlist.py:1289 #: pretix/base/exporters/orderlist.py:1289
msgid "Download a spreadsheet of all gift cards including their current value." msgid "Download a spreadsheet of all gift cards including their current value."
msgstr "" msgstr ""
"Faça o download de uma planilha de todos os cartões-presente, incluindo seu "
"valor atual."
#: pretix/base/exporters/orderlist.py:1296 #: pretix/base/exporters/orderlist.py:1296
msgid "Show value at" msgid "Show value at"
msgstr "" msgstr "Mostrar o valor em"
#: pretix/base/exporters/orderlist.py:1299 #: pretix/base/exporters/orderlist.py:1299
msgid "Defaults to the time of report." msgid "Defaults to the time of report."
msgstr "" msgstr "Por padrão, a hora do relatório."
#: pretix/base/exporters/orderlist.py:1304 #: pretix/base/exporters/orderlist.py:1304
#: pretix/base/exporters/orderlist.py:1314 pretix/control/forms/filter.py:518 #: pretix/base/exporters/orderlist.py:1314 pretix/control/forms/filter.py:518
@@ -2738,20 +2729,20 @@ msgstr "Todos"
#: pretix/base/exporters/orderlist.py:1306 pretix/control/forms/filter.py:1417 #: pretix/base/exporters/orderlist.py:1306 pretix/control/forms/filter.py:1417
msgid "Live" msgid "Live"
msgstr "" msgstr "Em tempo real"
#: pretix/base/exporters/orderlist.py:1315 pretix/control/forms/filter.py:1425 #: pretix/base/exporters/orderlist.py:1315 pretix/control/forms/filter.py:1425
#: pretix/control/templates/pretixcontrol/pdf/index.html:252 #: pretix/control/templates/pretixcontrol/pdf/index.html:252
msgid "Empty" msgid "Empty"
msgstr "" msgstr "Vazio"
#: pretix/base/exporters/orderlist.py:1316 pretix/control/forms/filter.py:1426 #: pretix/base/exporters/orderlist.py:1316 pretix/control/forms/filter.py:1426
msgid "Valid and with value" msgid "Valid and with value"
msgstr "" msgstr "Válido e com valor"
#: pretix/base/exporters/orderlist.py:1317 pretix/control/forms/filter.py:1427 #: pretix/base/exporters/orderlist.py:1317 pretix/control/forms/filter.py:1427
msgid "Expired and with value" msgid "Expired and with value"
msgstr "" msgstr "Expirado e com valor"
#: pretix/base/exporters/orderlist.py:1318 pretix/control/forms/filter.py:227 #: pretix/base/exporters/orderlist.py:1318 pretix/control/forms/filter.py:227
#: pretix/control/forms/filter.py:1428 pretix/control/forms/filter.py:2097 #: pretix/control/forms/filter.py:1428 pretix/control/forms/filter.py:2097
@@ -2766,14 +2757,14 @@ msgstr "Expirado"
#: pretix/base/exporters/orderlist.py:1356 pretix/base/models/giftcards.py:98 #: pretix/base/exporters/orderlist.py:1356 pretix/base/models/giftcards.py:98
msgid "Test mode card" msgid "Test mode card"
msgstr "" msgstr "Cartão de modo de teste"
#: pretix/base/exporters/orderlist.py:1358 #: pretix/base/exporters/orderlist.py:1358
#: pretix/base/modelimport_orders.py:516 pretix/base/models/giftcards.py:102 #: pretix/base/modelimport_orders.py:516 pretix/base/models/giftcards.py:102
#: pretix/control/templates/pretixcontrol/order/index.html:202 #: pretix/control/templates/pretixcontrol/order/index.html:202
#: pretix/control/templates/pretixcontrol/organizers/giftcards.html:62 #: pretix/control/templates/pretixcontrol/organizers/giftcards.html:62
msgid "Expiry date" msgid "Expiry date"
msgstr "" msgstr "Data de expiração"
#: pretix/base/exporters/orderlist.py:1359 pretix/control/forms/orders.py:875 #: pretix/base/exporters/orderlist.py:1359 pretix/control/forms/orders.py:875
msgid "Special terms and conditions" msgid "Special terms and conditions"
@@ -2792,17 +2783,12 @@ msgid "Created in order"
msgstr "Criado em ordem" msgstr "Criado em ordem"
#: pretix/base/exporters/orderlist.py:1363 #: pretix/base/exporters/orderlist.py:1363
#, fuzzy
#| msgctxt "invoice"
#| msgid "Invoice number"
msgid "Last invoice number of order" msgid "Last invoice number of order"
msgstr "Número da fatura" msgstr "Último número de fatura do pedido"
#: pretix/base/exporters/orderlist.py:1364 #: pretix/base/exporters/orderlist.py:1364
#, fuzzy
#| msgid "Only paid orders"
msgid "Last invoice date of order" msgid "Last invoice date of order"
msgstr "Apenas ordens pagas" msgstr "Data da última fatura do pedido"
#: pretix/base/exporters/reusablemedia.py:34 pretix/control/navigation.py:616 #: pretix/base/exporters/reusablemedia.py:34 pretix/control/navigation.py:616
#: pretix/control/templates/pretixcontrol/organizers/edit.html:204 #: pretix/control/templates/pretixcontrol/organizers/edit.html:204
@@ -2830,11 +2816,9 @@ msgid "Media type"
msgstr "Tipo de mídia" msgstr "Tipo de mídia"
#: pretix/base/exporters/reusablemedia.py:47 pretix/base/models/media.py:73 #: pretix/base/exporters/reusablemedia.py:47 pretix/base/models/media.py:73
#, fuzzy
#| msgid "Internal identifier"
msgctxt "reusable_medium" msgctxt "reusable_medium"
msgid "Identifier" msgid "Identifier"
msgstr "Identificador interno" msgstr "Identificador"
#: pretix/base/exporters/reusablemedia.py:49 pretix/base/models/media.py:81 #: pretix/base/exporters/reusablemedia.py:49 pretix/base/models/media.py:81
#: pretix/base/models/orders.py:265 pretix/base/models/orders.py:3094 #: pretix/base/models/orders.py:265 pretix/base/models/orders.py:3094
@@ -2846,27 +2830,18 @@ msgstr "Data de validade"
#: pretix/base/exporters/reusablemedia.py:50 pretix/base/models/media.py:90 #: pretix/base/exporters/reusablemedia.py:50 pretix/base/models/media.py:90
#: pretix/control/templates/pretixcontrol/order/index.html:215 #: pretix/control/templates/pretixcontrol/order/index.html:215
#: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:132 #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:132
#, fuzzy
#| msgctxt "refund_source"
#| msgid "Customer"
msgid "Customer account" msgid "Customer account"
msgstr "Cliente" msgstr "Conta do cliente"
#: pretix/base/exporters/reusablemedia.py:51 pretix/base/models/media.py:97 #: pretix/base/exporters/reusablemedia.py:51 pretix/base/models/media.py:97
#, fuzzy
#| msgid "Multiline text"
msgid "Linked ticket" msgid "Linked ticket"
msgstr "Texto multilinha" msgstr "Bilhete vinculado"
#: pretix/base/exporters/reusablemedia.py:52 pretix/base/models/media.py:104 #: pretix/base/exporters/reusablemedia.py:52 pretix/base/models/media.py:104
#, fuzzy
#| msgid "Gift card"
msgid "Linked gift card" msgid "Linked gift card"
msgstr "Cartão Presente" msgstr "Cartão-presente vinculado"
#: pretix/base/exporters/waitinglist.py:42 #: pretix/base/exporters/waitinglist.py:42
#, fuzzy
#| msgid "Waiting list"
msgctxt "export_category" msgctxt "export_category"
msgid "Waiting list" msgid "Waiting list"
msgstr "Lista de espera" msgstr "Lista de espera"
@@ -2874,23 +2849,24 @@ msgstr "Lista de espera"
#: pretix/base/exporters/waitinglist.py:43 #: pretix/base/exporters/waitinglist.py:43
msgid "Download a spread sheet with all your waiting list data." msgid "Download a spread sheet with all your waiting list data."
msgstr "" msgstr ""
"Faça o download de uma planilha com todos os dados de sua lista de espera."
#: pretix/base/exporters/waitinglist.py:49 #: pretix/base/exporters/waitinglist.py:49
#: pretix/control/templates/pretixcontrol/waitinglist/index.html:102 #: pretix/control/templates/pretixcontrol/waitinglist/index.html:102
msgid "All entries" msgid "All entries"
msgstr "" msgstr "Todos os registros"
#: pretix/base/exporters/waitinglist.py:54 #: pretix/base/exporters/waitinglist.py:54
#: pretix/control/templates/pretixcontrol/waitinglist/index.html:105 #: pretix/control/templates/pretixcontrol/waitinglist/index.html:105
msgid "Waiting for a voucher" msgid "Waiting for a voucher"
msgstr "" msgstr "Aguardando um voucher"
#: pretix/base/exporters/waitinglist.py:59 #: pretix/base/exporters/waitinglist.py:59
#: pretix/control/templates/pretixcontrol/waitinglist/index.html:107 #: pretix/control/templates/pretixcontrol/waitinglist/index.html:107
#: pretix/control/templates/pretixcontrol/waitinglist/index.html:227 #: pretix/control/templates/pretixcontrol/waitinglist/index.html:227
#: pretix/control/views/waitinglist.py:326 #: pretix/control/views/waitinglist.py:326
msgid "Voucher assigned" msgid "Voucher assigned"
msgstr "" msgstr "Voucher atribuído"
#: pretix/base/exporters/waitinglist.py:64 #: pretix/base/exporters/waitinglist.py:64
#: pretix/control/templates/pretixcontrol/waitinglist/index.html:110 #: pretix/control/templates/pretixcontrol/waitinglist/index.html:110
@@ -2903,7 +2879,7 @@ msgstr "Descrição da categoria"
#: pretix/control/templates/pretixcontrol/waitinglist/index.html:223 #: pretix/control/templates/pretixcontrol/waitinglist/index.html:223
#: pretix/control/views/waitinglist.py:322 #: pretix/control/views/waitinglist.py:322
msgid "Voucher redeemed" msgid "Voucher redeemed"
msgstr "" msgstr "Voucher resgatado"
#: pretix/base/exporters/waitinglist.py:80 #: pretix/base/exporters/waitinglist.py:80
#: pretix/control/templates/pretixcontrol/waitinglist/index.html:116 #: pretix/control/templates/pretixcontrol/waitinglist/index.html:116
@@ -2918,7 +2894,7 @@ msgstr "O carrinho expirou"
#: pretix/control/forms/event.py:1764 #: pretix/control/forms/event.py:1764
#: pretix/control/templates/pretixcontrol/items/index.html:38 #: pretix/control/templates/pretixcontrol/items/index.html:38
msgid "Product name" msgid "Product name"
msgstr "" msgstr "Nome do produto"
#: pretix/base/exporters/waitinglist.py:115 #: pretix/base/exporters/waitinglist.py:115
#: pretix/base/modelimport_orders.py:95 pretix/base/modelimport_vouchers.py:60 #: pretix/base/modelimport_orders.py:95 pretix/base/modelimport_vouchers.py:60
@@ -2932,7 +2908,7 @@ msgstr "Data"
#: pretix/base/exporters/waitinglist.py:119 #: pretix/base/exporters/waitinglist.py:119
#: pretix/control/views/waitinglist.py:308 #: pretix/control/views/waitinglist.py:308
msgid "Priority" msgid "Priority"
msgstr "" msgstr "Prioridade"
#: pretix/base/exporters/waitinglist.py:121 #: pretix/base/exporters/waitinglist.py:121
#: pretix/base/modelimport_vouchers.py:39 pretix/base/models/vouchers.py:190 #: pretix/base/modelimport_vouchers.py:39 pretix/base/models/vouchers.py:190
@@ -2951,7 +2927,7 @@ msgstr "Código do voucher"
#: pretix/base/forms/__init__.py:118 #: pretix/base/forms/__init__.py:118
#, python-brace-format #, python-brace-format
msgid "You can use {markup_name} in this field." msgid "You can use {markup_name} in this field."
msgstr "" msgstr "Você pode usar {markup_name} nesse campo."
#: pretix/base/forms/__init__.py:178 #: pretix/base/forms/__init__.py:178
#, python-format #, python-format
@@ -2959,6 +2935,8 @@ msgid ""
"Due to technical reasons you cannot set inputs, that need to be masked (e.g. " "Due to technical reasons you cannot set inputs, that need to be masked (e.g. "
"passwords), to %(value)s." "passwords), to %(value)s."
msgstr "" msgstr ""
"Por motivos técnicos, não é possível definir entradas que precisam ser "
"mascaradas (por exemplo, senhas), como %(value)s."
#: pretix/base/forms/auth.py:61 pretix/base/forms/auth.py:179 #: pretix/base/forms/auth.py:61 pretix/base/forms/auth.py:179
msgid "Keep me logged in" msgid "Keep me logged in"
@@ -2966,12 +2944,12 @@ msgstr "Mantenha-me conectado"
#: pretix/base/forms/auth.py:65 pretix/base/forms/auth.py:272 #: pretix/base/forms/auth.py:65 pretix/base/forms/auth.py:272
msgid "This combination of credentials is not known to our system." msgid "This combination of credentials is not known to our system."
msgstr "" msgstr "Essa combinação de credenciais não é conhecida pelo nosso sistema."
#: pretix/base/forms/auth.py:66 pretix/base/forms/user.py:57 #: pretix/base/forms/auth.py:66 pretix/base/forms/user.py:57
#: pretix/presale/forms/customer.py:372 pretix/presale/forms/customer.py:444 #: pretix/presale/forms/customer.py:372 pretix/presale/forms/customer.py:444
msgid "For security reasons, please wait 5 minutes before you try again." msgid "For security reasons, please wait 5 minutes before you try again."
msgstr "" msgstr "Por motivos de segurança, aguarde 5 minutos antes de tentar novamente."
#: pretix/base/forms/auth.py:67 pretix/base/forms/auth.py:273 #: pretix/base/forms/auth.py:67 pretix/base/forms/auth.py:273
msgid "This account is inactive." msgid "This account is inactive."
@@ -3018,35 +2996,43 @@ msgstr "Referência interna"
#: pretix/base/forms/questions.py:320 #: pretix/base/forms/questions.py:320
msgctxt "phonenumber" msgctxt "phonenumber"
msgid "Phone number (without international area code)" msgid "Phone number (without international area code)"
msgstr "" msgstr "Número de telefone (sem código de área internacional)"
#: pretix/base/forms/questions.py:481 #: pretix/base/forms/questions.py:481
msgid "" msgid ""
"You uploaded an image in landscape orientation. Please upload an image in " "You uploaded an image in landscape orientation. Please upload an image in "
"portrait orientation." "portrait orientation."
msgstr "" msgstr ""
"Você fez o upload de uma imagem na orientação paisagem. Carregue uma imagem "
"na orientação retrato."
#: pretix/base/forms/questions.py:484 #: pretix/base/forms/questions.py:484
msgid "Please upload an image where the width is 3/4 of the height." msgid "Please upload an image where the width is 3/4 of the height."
msgstr "" msgstr "Carregue uma imagem em que a largura seja 3/4 da altura."
#: pretix/base/forms/questions.py:487 #: pretix/base/forms/questions.py:487
msgid "" msgid ""
"The file you uploaded has a very large number of pixels, please upload an " "The file you uploaded has a very large number of pixels, please upload an "
"image no larger than 10000 x 10000 pixels." "image no larger than 10000 x 10000 pixels."
msgstr "" msgstr ""
"O arquivo que você carregou tem um número muito grande de pixels. Carregue "
"uma imagem que não seja maior que 10.000 x 10.000 pixels."
#: pretix/base/forms/questions.py:490 pretix/helpers/images.py:75 #: pretix/base/forms/questions.py:490 pretix/helpers/images.py:75
msgid "" msgid ""
"Upload a valid image. The file you uploaded was either not an image or a " "Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image." "corrupted image."
msgstr "" msgstr ""
"Faça upload de uma imagem válida. O arquivo que você carregou não era uma "
"imagem ou era uma imagem corrompida."
#: pretix/base/forms/questions.py:633 pretix/base/forms/questions.py:642 #: pretix/base/forms/questions.py:633 pretix/base/forms/questions.py:642
msgid "" msgid ""
"If you keep this empty, the ticket will be valid starting at the time of " "If you keep this empty, the ticket will be valid starting at the time of "
"purchase." "purchase."
msgstr "" msgstr ""
"Se você mantiver esse campo vazio, o bilhete será válido a partir do momento "
"da compra."
#: pretix/base/forms/questions.py:689 pretix/base/forms/questions.py:1014 #: pretix/base/forms/questions.py:689 pretix/base/forms/questions.py:1014
msgid "Street and Number" msgid "Street and Number"
@@ -3064,16 +3050,20 @@ msgid ""
"Optional, but depending on the country you reside in we might need to charge " "Optional, but depending on the country you reside in we might need to charge "
"you additional taxes if you do not enter it." "you additional taxes if you do not enter it."
msgstr "" msgstr ""
"Opcional, mas, dependendo do país em que você reside, talvez seja necessário "
"cobrar impostos adicionais se você não os inserir."
#: pretix/base/forms/questions.py:1071 pretix/base/forms/questions.py:1077 #: pretix/base/forms/questions.py:1071 pretix/base/forms/questions.py:1077
msgid "If you are registered in Switzerland, you can enter your UID instead." msgid "If you are registered in Switzerland, you can enter your UID instead."
msgstr "" msgstr "Se você estiver registrado na Suíça, poderá inserir seu UID."
#: pretix/base/forms/questions.py:1075 #: pretix/base/forms/questions.py:1075
msgid "" msgid ""
"Optional, but it might be required for you to claim tax benefits on your " "Optional, but it might be required for you to claim tax benefits on your "
"invoice depending on your and the sellers country of residence." "invoice depending on your and the sellers country of residence."
msgstr "" msgstr ""
"Opcional, mas pode ser necessário para que você solicite benefícios fiscais "
"em sua fatura, dependendo do seu país de residência e do país do vendedor."
#: pretix/base/forms/questions.py:1174 #: pretix/base/forms/questions.py:1174
msgid "You need to provide a company name." msgid "You need to provide a company name."
@@ -3109,7 +3099,7 @@ msgstr "Senha incorreta."
#: pretix/base/forms/user.py:58 #: pretix/base/forms/user.py:58
msgid "Please choose a password different to your current one." msgid "Please choose a password different to your current one."
msgstr "" msgstr "Escolha uma senha diferente da atual."
#: pretix/base/forms/user.py:63 pretix/presale/forms/customer.py:379 #: pretix/base/forms/user.py:63 pretix/presale/forms/customer.py:379
#: pretix/presale/forms/customer.py:448 #: pretix/presale/forms/customer.py:448
@@ -3164,6 +3154,10 @@ msgid ""
"up. Please note: to use literal \"{\" or \"}\", you need to double them as " "up. Please note: to use literal \"{\" or \"}\", you need to double them as "
"\"{{\" and \"}}\"." "\"{{\" and \"}}\"."
msgstr "" msgstr ""
"Há um erro na sintaxe de seu placeholder. Verifique se os colchetes “{” de "
"abertura e “}” de fechamento em seus placeholders estão corretos. Observação:"
" para usar literalmente “{” ou “}”, você precisa duplicá-los como “{{” e "
"“}}”."
#: pretix/base/forms/validators.py:72 pretix/control/views/event.py:758 #: pretix/base/forms/validators.py:72 pretix/control/views/event.py:758
#, fuzzy, python-format #, fuzzy, python-format
@@ -3348,7 +3342,7 @@ msgstr "Montante"
#, python-brace-format #, python-brace-format
msgctxt "invoice" msgctxt "invoice"
msgid "Single price: {net_price} net / {gross_price} gross" msgid "Single price: {net_price} net / {gross_price} gross"
msgstr "" msgstr "Preço único: {net_price} líquido / {gross_price} bruto"
#: pretix/base/invoice.py:668 #: pretix/base/invoice.py:668
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
@@ -3372,7 +3366,7 @@ msgstr "Ordens pagas"
#: pretix/base/invoice.py:707 #: pretix/base/invoice.py:707
msgctxt "invoice" msgctxt "invoice"
msgid "Outstanding payments" msgid "Outstanding payments"
msgstr "" msgstr "Pagamentos pendentes"
#: pretix/base/invoice.py:724 #: pretix/base/invoice.py:724
#, fuzzy #, fuzzy
@@ -3438,7 +3432,7 @@ msgstr ""
#: pretix/base/invoice.py:867 #: pretix/base/invoice.py:867
msgid "Default invoice renderer (European-style letter)" msgid "Default invoice renderer (European-style letter)"
msgstr "" msgstr "Renderizador de faturas padrão (letra no estilo europeu)"
#: pretix/base/invoice.py:956 #: pretix/base/invoice.py:956
#, fuzzy #, fuzzy
@@ -3450,7 +3444,7 @@ msgstr "Você precisa selecionar uma data."
#: pretix/base/invoice.py:1003 #: pretix/base/invoice.py:1003
msgid "Simplified invoice renderer" msgid "Simplified invoice renderer"
msgstr "" msgstr "Renderizador de faturas simplificado"
#: pretix/base/invoice.py:1022 #: pretix/base/invoice.py:1022
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
@@ -3465,6 +3459,8 @@ msgid ""
"The relevant plugin is currently not active. To activate it, click here to " "The relevant plugin is currently not active. To activate it, click here to "
"go to the plugin settings." "go to the plugin settings."
msgstr "" msgstr ""
"O plug-in relevante não está ativo no momento. Para ativá-lo, clique aqui "
"para acessar as configurações do plug-in."
#: pretix/base/logentrytypes.py:50 #: pretix/base/logentrytypes.py:50
#, fuzzy #, fuzzy
@@ -3496,7 +3492,7 @@ msgstr "Data {val}"
#: pretix/base/logentrytypes.py:217 #: pretix/base/logentrytypes.py:217
#, python-brace-format #, python-brace-format
msgid "Quota {val}" msgid "Quota {val}"
msgstr "" msgstr "Contingente {val}"
#: pretix/base/logentrytypes.py:223 #: pretix/base/logentrytypes.py:223
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
@@ -3521,12 +3517,12 @@ msgstr "Norma fiscal {val}"
#: pretix/base/media.py:71 #: pretix/base/media.py:71
msgid "Barcode / QR-Code" msgid "Barcode / QR-Code"
msgstr "" msgstr "Código de barras / código QR"
#: pretix/base/media.py:88 #: pretix/base/media.py:88
#: pretix/control/templates/pretixcontrol/organizers/edit.html:237 #: pretix/control/templates/pretixcontrol/organizers/edit.html:237
msgid "NFC UID-based" msgid "NFC UID-based"
msgstr "" msgstr "Baseado em NFC UID"
#: pretix/base/migrations/0077_auto_20171124_1629.py:33 #: pretix/base/migrations/0077_auto_20171124_1629.py:33
#: pretix/base/migrations/0077_auto_20171124_1629_squashed_0088_auto_20180328_1217.py:35 #: pretix/base/migrations/0077_auto_20171124_1629_squashed_0088_auto_20180328_1217.py:35
@@ -3535,28 +3531,28 @@ msgstr "Lista padrão"
#: pretix/base/modelimport.py:112 #: pretix/base/modelimport.py:112
msgid "Keep empty" msgid "Keep empty"
msgstr "" msgstr "Manter vazio"
#: pretix/base/modelimport.py:139 #: pretix/base/modelimport.py:139
#, python-brace-format #, python-brace-format
msgid "Invalid setting for column \"{header}\"." msgid "Invalid setting for column \"{header}\"."
msgstr "" msgstr "Configuração inválida para a coluna “{header}”."
#: pretix/base/modelimport.py:199 #: pretix/base/modelimport.py:199
#, python-brace-format #, python-brace-format
msgid "Could not parse {value} as a yes/no value." msgid "Could not parse {value} as a yes/no value."
msgstr "" msgstr "Não foi possível analisar {value} como um valor sim/não."
#: pretix/base/modelimport.py:222 #: pretix/base/modelimport.py:222
#, python-brace-format #, python-brace-format
msgid "Could not parse {value} as a date and time." msgid "Could not parse {value} as a date and time."
msgstr "" msgstr "Não foi possível analisar {value} como uma data e hora."
#: pretix/base/modelimport.py:232 pretix/control/views/orders.py:1162 #: pretix/base/modelimport.py:232 pretix/control/views/orders.py:1162
#: pretix/control/views/orders.py:1191 pretix/control/views/orders.py:1235 #: pretix/control/views/orders.py:1191 pretix/control/views/orders.py:1235
#: pretix/control/views/orders.py:1270 pretix/control/views/orders.py:1293 #: pretix/control/views/orders.py:1270 pretix/control/views/orders.py:1293
msgid "You entered an invalid number." msgid "You entered an invalid number."
msgstr "" msgstr "Você inseriu um número inválido."
#: pretix/base/modelimport.py:279 pretix/base/modelimport.py:291 #: pretix/base/modelimport.py:279 pretix/base/modelimport.py:291
#, fuzzy #, fuzzy
@@ -3568,7 +3564,7 @@ msgstr "Nenhum evento arquivado encontrado."
#: pretix/base/modelimport.py:281 pretix/base/modelimport.py:293 #: pretix/base/modelimport.py:281 pretix/base/modelimport.py:293
msgctxt "subevent" msgctxt "subevent"
msgid "Multiple matching dates were found." msgid "Multiple matching dates were found."
msgstr "" msgstr "Foram encontradas várias datas correspondentes."
#: pretix/base/modelimport_orders.py:85 #: pretix/base/modelimport_orders.py:85
#, fuzzy #, fuzzy
@@ -3591,7 +3587,7 @@ msgstr "Nenhum evento arquivado encontrado."
#: pretix/base/modelimport_orders.py:130 #: pretix/base/modelimport_orders.py:130
#: pretix/base/modelimport_vouchers.py:196 #: pretix/base/modelimport_vouchers.py:196
msgid "Multiple matching products were found." msgid "Multiple matching products were found."
msgstr "" msgstr "Foram encontrados vários produtos correspondentes."
#: pretix/base/modelimport_orders.py:139 #: pretix/base/modelimport_orders.py:139
#: pretix/base/modelimport_vouchers.py:205 pretix/base/models/items.py:1245 #: pretix/base/modelimport_vouchers.py:205 pretix/base/models/items.py:1245
@@ -3611,7 +3607,7 @@ msgstr "Informações da conta alteradas"
#: pretix/base/modelimport_vouchers.py:227 #: pretix/base/modelimport_vouchers.py:227
#: pretix/base/modelimport_vouchers.py:261 #: pretix/base/modelimport_vouchers.py:261
msgid "Multiple matching variations were found." msgid "Multiple matching variations were found."
msgstr "" msgstr "Foram encontradas diversas variações correspondentes."
#: pretix/base/modelimport_orders.py:164 #: pretix/base/modelimport_orders.py:164
#, fuzzy #, fuzzy
@@ -3700,7 +3696,7 @@ msgstr "Tipo de dispositivo"
#: pretix/base/modelimport_orders.py:460 #: pretix/base/modelimport_orders.py:460
msgid "You cannot assign a position secret that already exists." msgid "You cannot assign a position secret that already exists."
msgstr "" msgstr "Não é possível atribuir um segredo de posição que já exista."
#: pretix/base/modelimport_orders.py:491 #: pretix/base/modelimport_orders.py:491
#, fuzzy #, fuzzy
@@ -3788,7 +3784,7 @@ msgstr "Um voucher com esse código já existe."
#: pretix/base/models/vouchers.py:196 pretix/control/views/vouchers.py:120 #: pretix/base/models/vouchers.py:196 pretix/control/views/vouchers.py:120
#: pretix/presale/templates/pretixpresale/organizers/customer_membership.html:52 #: pretix/presale/templates/pretixpresale/organizers/customer_membership.html:52
msgid "Maximum usages" msgid "Maximum usages"
msgstr "" msgstr "Usos máximos"
#: pretix/base/modelimport_vouchers.py:79 #: pretix/base/modelimport_vouchers.py:79
#, fuzzy #, fuzzy
@@ -3814,20 +3810,22 @@ msgstr "Quantidade máxima por pedido"
#: pretix/base/modelimport_vouchers.py:119 pretix/base/models/vouchers.py:225 #: pretix/base/modelimport_vouchers.py:119 pretix/base/models/vouchers.py:225
#: pretix/control/forms/filter.py:2106 #: pretix/control/forms/filter.py:2106
msgid "Reserve ticket from quota" msgid "Reserve ticket from quota"
msgstr "" msgstr "Reservar bilhete da cota"
#: pretix/base/modelimport_vouchers.py:127 pretix/base/models/vouchers.py:233 #: pretix/base/modelimport_vouchers.py:127 pretix/base/models/vouchers.py:233
msgid "Allow to bypass quota" msgid "Allow to bypass quota"
msgstr "" msgstr "Permitir ignorar a cota"
#: pretix/base/modelimport_vouchers.py:135 pretix/base/models/vouchers.py:239 #: pretix/base/modelimport_vouchers.py:135 pretix/base/models/vouchers.py:239
msgid "Price mode" msgid "Price mode"
msgstr "" msgstr "Modo de preço"
#: pretix/base/modelimport_vouchers.py:150 #: pretix/base/modelimport_vouchers.py:150
#, python-brace-format #, python-brace-format
msgid "Could not parse {value} as a price mode, use one of {options}." msgid "Could not parse {value} as a price mode, use one of {options}."
msgstr "" msgstr ""
"Não foi possível analisar {value} como um modo de preço, use uma das "
"{options}."
#: pretix/base/modelimport_vouchers.py:160 pretix/base/models/vouchers.py:245 #: pretix/base/modelimport_vouchers.py:160 pretix/base/models/vouchers.py:245
msgid "Voucher value" msgid "Voucher value"
@@ -3835,18 +3833,18 @@ msgstr "Valor do voucher"
#: pretix/base/modelimport_vouchers.py:165 #: pretix/base/modelimport_vouchers.py:165
msgid "It is pointless to set a value without a price mode." msgid "It is pointless to set a value without a price mode."
msgstr "" msgstr "Não faz sentido definir um valor sem um modo de preço."
#: pretix/base/modelimport_vouchers.py:237 pretix/base/models/items.py:2081 #: pretix/base/modelimport_vouchers.py:237 pretix/base/models/items.py:2081
#: pretix/base/models/vouchers.py:272 #: pretix/base/models/vouchers.py:272
#: pretix/control/templates/pretixcontrol/items/quota_edit.html:8 #: pretix/control/templates/pretixcontrol/items/quota_edit.html:8
#: pretix/control/templates/pretixcontrol/items/quota_edit.html:15 #: pretix/control/templates/pretixcontrol/items/quota_edit.html:15
msgid "Quota" msgid "Quota"
msgstr "" msgstr "Cota"
#: pretix/base/modelimport_vouchers.py:253 #: pretix/base/modelimport_vouchers.py:253
msgid "You cannot specify a quota if you specified a product." msgid "You cannot specify a quota if you specified a product."
msgstr "" msgstr "Não é possível especificar uma cota se você especificou um produto."
#: pretix/base/modelimport_vouchers.py:282 pretix/base/models/vouchers.py:495 #: pretix/base/modelimport_vouchers.py:282 pretix/base/models/vouchers.py:495
#, fuzzy #, fuzzy
@@ -3869,11 +3867,9 @@ msgid "Seat-specific vouchers can only be used once."
msgstr "Este produto não será vendido após a data indicada." msgstr "Este produto não será vendido após a data indicada."
#: pretix/base/modelimport_vouchers.py:306 pretix/base/models/vouchers.py:519 #: pretix/base/modelimport_vouchers.py:306 pretix/base/models/vouchers.py:519
#, fuzzy, python-brace-format #, python-brace-format
#| msgctxt "subevent"
#| msgid "You need to select a date."
msgid "You need to choose the product \"{prod}\" for this seat." msgid "You need to choose the product \"{prod}\" for this seat."
msgstr "Você precisa selecionar uma data." msgstr "Você precisa escolher o produto “{prod}” para esse assento."
#: pretix/base/modelimport_vouchers.py:318 pretix/base/models/vouchers.py:285 #: pretix/base/modelimport_vouchers.py:318 pretix/base/models/vouchers.py:285
#: pretix/control/templates/pretixcontrol/vouchers/index.html:129 #: pretix/control/templates/pretixcontrol/vouchers/index.html:129
@@ -3884,17 +3880,20 @@ msgstr "Tag"
#: pretix/base/modelimport_vouchers.py:334 pretix/base/models/vouchers.py:297 #: pretix/base/modelimport_vouchers.py:334 pretix/base/models/vouchers.py:297
msgid "Shows hidden products that match this voucher" msgid "Shows hidden products that match this voucher"
msgstr "" msgstr "Mostra produtos ocultos que correspondem a esse voucher"
#: pretix/base/modelimport_vouchers.py:343 pretix/base/models/vouchers.py:301 #: pretix/base/modelimport_vouchers.py:343 pretix/base/models/vouchers.py:301
msgid "Offer all add-on products for free when redeeming this voucher" msgid "Offer all add-on products for free when redeeming this voucher"
msgstr "" msgstr ""
"Ofereça todos os produtos adicionais gratuitamente ao resgatar este voucher"
#: pretix/base/modelimport_vouchers.py:351 pretix/base/models/vouchers.py:305 #: pretix/base/modelimport_vouchers.py:351 pretix/base/models/vouchers.py:305
msgid "" msgid ""
"Include all bundled products without a designated price when redeeming this " "Include all bundled products without a designated price when redeeming this "
"voucher" "voucher"
msgstr "" msgstr ""
"Inclua todos os produtos incluídos em um pacote sem um preço designado ao "
"resgatar esse voucher"
#: pretix/base/models/auth.py:248 #: pretix/base/models/auth.py:248
msgid "Is active" msgid "Is active"
@@ -3968,22 +3967,28 @@ msgid ""
"and valid for check-in regardless of which date they are purchased for. You " "and valid for check-in regardless of which date they are purchased for. You "
"can limit their validity through the advanced check-in rules, though." "can limit their validity through the advanced check-in rules, though."
msgstr "" msgstr ""
"Se você escolher “todas as datas”, os bilhetes serão considerados parte "
"dessa lista e válidos para o check-in, independentemente da data para a qual "
"foram comprados. No entanto, você pode limitar a validade deles por meio das "
"regras avançadas de check-in."
#: pretix/base/models/checkin.py:65 #: pretix/base/models/checkin.py:65
msgctxt "checkin" msgctxt "checkin"
msgid "Ignore check-ins on this list in statistics" msgid "Ignore check-ins on this list in statistics"
msgstr "" msgstr "Ignorar os check-ins dessa lista nas estatísticas"
#: pretix/base/models/checkin.py:69 #: pretix/base/models/checkin.py:69
msgctxt "checkin" msgctxt "checkin"
msgid "Tickets with a check-in on this list should be considered \"used\"" msgid "Tickets with a check-in on this list should be considered \"used\""
msgstr "" msgstr "Os bilhetes com um check-in nessa lista devem ser considerados “usados”"
#: pretix/base/models/checkin.py:70 #: pretix/base/models/checkin.py:70
msgid "" msgid ""
"This is relevant in various situations, e.g. for deciding if a ticket can " "This is relevant in various situations, e.g. for deciding if a ticket can "
"still be canceled by the customer." "still be canceled by the customer."
msgstr "" msgstr ""
"Isso é relevante em várias situações, por exemplo, para decidir se um "
"bilhete ainda pode ser cancelado pelo cliente."
#: pretix/base/models/checkin.py:74 #: pretix/base/models/checkin.py:74
msgctxt "checkin" msgctxt "checkin"
@@ -4007,6 +4012,8 @@ msgstr ""
#: pretix/base/models/checkin.py:79 #: pretix/base/models/checkin.py:79
msgid "Allow checking in add-on tickets by scanning the main ticket" msgid "Allow checking in add-on tickets by scanning the main ticket"
msgstr "" msgstr ""
"Permitir o check-in de bilhetes adicionais por meio da leitura do bilhete "
"principal"
#: pretix/base/models/checkin.py:81 #: pretix/base/models/checkin.py:81
msgid "" msgid ""
@@ -4014,6 +4021,9 @@ msgid ""
"there is always exactly one matching add-on ticket. Ambiguous scans will be " "there is always exactly one matching add-on ticket. Ambiguous scans will be "
"rejected.." "rejected.."
msgstr "" msgstr ""
"Um escaneamento só será possível se a lista de check-in estiver configurada "
"de forma que sempre haja exatamente um bilhete complementar correspondente. "
"Os escaneamentos ambíguos serão rejeitados..."
#: pretix/base/models/checkin.py:85 pretix/control/navigation.py:640 #: pretix/base/models/checkin.py:85 pretix/control/navigation.py:640
#: pretix/control/templates/pretixcontrol/organizers/gates.html:5 #: pretix/control/templates/pretixcontrol/organizers/gates.html:5
@@ -4028,19 +4038,23 @@ msgid ""
"Does not have any effect for the validation of tickets, only for the " "Does not have any effect for the validation of tickets, only for the "
"automatic configuration of check-in devices." "automatic configuration of check-in devices."
msgstr "" msgstr ""
"Não tem efeito na validação de bilhetes, apenas na configuração automática "
"dos dispositivos de check-in."
#: pretix/base/models/checkin.py:90 #: pretix/base/models/checkin.py:90
msgid "Allow re-entering after an exit scan" msgid "Allow re-entering after an exit scan"
msgstr "" msgstr "Permitir o reingresso após um escaneamento de saída"
#: pretix/base/models/checkin.py:94 #: pretix/base/models/checkin.py:94
msgid "Allow multiple entries per ticket" msgid "Allow multiple entries per ticket"
msgstr "" msgstr "Permitir várias entradas por bilhete"
#: pretix/base/models/checkin.py:95 #: pretix/base/models/checkin.py:95
msgid "" msgid ""
"Use this option to turn off warnings if a ticket is scanned a second time." "Use this option to turn off warnings if a ticket is scanned a second time."
msgstr "" msgstr ""
"Use essa opção para desativar os avisos se um bilhete for escaneado uma "
"segunda vez."
#: pretix/base/models/checkin.py:99 #: pretix/base/models/checkin.py:99
#, fuzzy #, fuzzy
@@ -4056,7 +4070,7 @@ msgstr "País"
#: pretix/base/models/checkin.py:337 #: pretix/base/models/checkin.py:337
msgid "Exit" msgid "Exit"
msgstr "" msgstr "Saída"
#: pretix/base/models/checkin.py:355 #: pretix/base/models/checkin.py:355
#, fuzzy #, fuzzy

View File

@@ -230,7 +230,7 @@ Vue.component('availbox', {
+ ' v-bind:aria-label="label_select_item"' + ' v-bind:aria-label="label_select_item"'
+ '>' + '>'
+ '</label>' + '</label>'
+ '<div :class="count_group_classes" v-else>' + '<div :class="count_group_classes" v-else role="group" v-bind:aria-label="item.name">'
+ '<button v-if="!$root.use_native_spinners" type="button" @click.prevent.stop="on_step" data-step="-1" v-bind:data-controls="\'input_\' + input_name" class="pretix-widget-btn-default pretix-widget-item-count-dec" aria-label="' + strings.quantity_dec + '"><span>-</span></button>' + '<button v-if="!$root.use_native_spinners" type="button" @click.prevent.stop="on_step" data-step="-1" v-bind:data-controls="\'input_\' + input_name" class="pretix-widget-btn-default pretix-widget-item-count-dec" aria-label="' + strings.quantity_dec + '"><span>-</span></button>'
+ '<input type="number" inputmode="numeric" pattern="\d*" class="pretix-widget-item-count-multiple" placeholder="0" min="0"' + '<input type="number" inputmode="numeric" pattern="\d*" class="pretix-widget-item-count-multiple" placeholder="0" min="0"'
+ ' v-model="amount_selected" :max="order_max" :name="input_name" :id="\'input_\' + input_name"' + ' v-model="amount_selected" :max="order_max" :name="input_name" :id="\'input_\' + input_name"'
@@ -723,7 +723,6 @@ var shared_methods = {
}, },
buy_callback: function (data) { buy_callback: function (data) {
if (data.redirect) { if (data.redirect) {
var iframe = this.$root.overlay.$children[0].$refs['frame-container'].children[0];
if (data.cart_id) { if (data.cart_id) {
this.$root.cart_id = data.cart_id; this.$root.cart_id = data.cart_id;
setCookie(this.$root.cookieName, data.cart_id, 30); setCookie(this.$root.cookieName, data.cart_id, 30);
@@ -748,7 +747,7 @@ var shared_methods = {
} }
this.$root.overlay.frame_loading = false; this.$root.overlay.frame_loading = false;
} else { } else {
iframe.src = url; this.$root.overlay.frame_src = url;
} }
} else { } else {
this.async_task_id = data.async_id; this.async_task_id = data.async_id;
@@ -787,9 +786,7 @@ var shared_methods = {
if (this.$root.additionalURLParams) { if (this.$root.additionalURLParams) {
redirect_url += '&' + this.$root.additionalURLParams; redirect_url += '&' + this.$root.additionalURLParams;
} }
var iframe = this.$root.overlay.$children[0].$refs['frame-container'].children[0]; this.$root.overlay.frame_src = redirect_url;
this.$root.overlay.frame_loading = true;
iframe.src = redirect_url;
}, },
voucher_open: function (voucher) { voucher_open: function (voucher) {
var redirect_url; var redirect_url;
@@ -801,9 +798,7 @@ var shared_methods = {
redirect_url += '&' + this.$root.additionalURLParams; redirect_url += '&' + this.$root.additionalURLParams;
} }
if (this.$root.useIframe) { if (this.$root.useIframe) {
var iframe = this.$root.overlay.$children[0].$refs['frame-container'].children[0]; this.$root.overlay.frame_src = redirect_url;
this.$root.overlay.frame_loading = true;
iframe.src = redirect_url;
} else { } else {
window.open(redirect_url); window.open(redirect_url);
} }
@@ -826,9 +821,7 @@ var shared_methods = {
redirect_url += '&' + this.$root.additionalURLParams; redirect_url += '&' + this.$root.additionalURLParams;
} }
if (this.$root.useIframe) { if (this.$root.useIframe) {
var iframe = this.$root.overlay.$children[0].$refs['frame-container'].children[0]; this.$root.overlay.frame_src = redirect_url;
this.$root.overlay.frame_loading = true;
iframe.src = redirect_url;
} else { } else {
window.open(redirect_url); window.open(redirect_url);
} }
@@ -853,27 +846,27 @@ var shared_loading_fragment = (
); );
var shared_iframe_fragment = ( var shared_iframe_fragment = (
'<div :class="frameClasses">' '<div :class="frameClasses" role="dialog" aria-modal="true" >'
+ '<div class="pretix-widget-frame-loading" v-show="$root.frame_loading">' + '<div class="pretix-widget-frame-loading" v-show="$root.frame_loading">'
+ '<svg width="256" height="256" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path class="pretix-widget-primary-color" d="M1152 896q0-106-75-181t-181-75-181 75-75 181 75 181 181 75 181-75 75-181zm512-109v222q0 12-8 23t-20 13l-185 28q-19 54-39 91 35 50 107 138 10 12 10 25t-9 23q-27 37-99 108t-94 71q-12 0-26-9l-138-108q-44 23-91 38-16 136-29 186-7 28-36 28h-222q-14 0-24.5-8.5t-11.5-21.5l-28-184q-49-16-90-37l-141 107q-10 9-25 9-14 0-25-11-126-114-165-168-7-10-7-23 0-12 8-23 15-21 51-66.5t54-70.5q-27-50-41-99l-183-27q-13-2-21-12.5t-8-23.5v-222q0-12 8-23t19-13l186-28q14-46 39-92-40-57-107-138-10-12-10-24 0-10 9-23 26-36 98.5-107.5t94.5-71.5q13 0 26 10l138 107q44-23 91-38 16-136 29-186 7-28 36-28h222q14 0 24.5 8.5t11.5 21.5l28 184q49 16 90 37l142-107q9-9 24-9 13 0 25 10 129 119 165 170 7 8 7 22 0 12-8 23-15 21-51 66.5t-54 70.5q26 50 41 98l183 28q13 2 21 12.5t8 23.5z"/></svg>' + '<svg width="256" height="256" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path class="pretix-widget-primary-color" d="M1152 896q0-106-75-181t-181-75-181 75-75 181 75 181 181 75 181-75 75-181zm512-109v222q0 12-8 23t-20 13l-185 28q-19 54-39 91 35 50 107 138 10 12 10 25t-9 23q-27 37-99 108t-94 71q-12 0-26-9l-138-108q-44 23-91 38-16 136-29 186-7 28-36 28h-222q-14 0-24.5-8.5t-11.5-21.5l-28-184q-49-16-90-37l-141 107q-10 9-25 9-14 0-25-11-126-114-165-168-7-10-7-23 0-12 8-23 15-21 51-66.5t54-70.5q-27-50-41-99l-183-27q-13-2-21-12.5t-8-23.5v-222q0-12 8-23t19-13l186-28q14-46 39-92-40-57-107-138-10-12-10-24 0-10 9-23 26-36 98.5-107.5t94.5-71.5q13 0 26 10l138 107q44-23 91-38 16-136 29-186 7-28 36-28h222q14 0 24.5 8.5t11.5 21.5l28 184q49 16 90 37l142-107q9-9 24-9 13 0 25 10 129 119 165 170 7 8 7 22 0 12-8 23-15 21-51 66.5t-54 70.5q26 50 41 98l183 28q13 2 21 12.5t8 23.5z"/></svg>'
+ '</div>' + '</div>'
+ '<div class="pretix-widget-frame-inner" ref="frame-container" v-show="$root.frame_shown">' + '<div class="pretix-widget-frame-inner" ref="frame-container" v-show="$root.frame_shown">'
+ '<div class="pretix-widget-frame-close"><a href="#" @click.prevent.stop="close" role="button" aria-label="'+strings.close+'">'
+ '<svg height="16" viewBox="0 0 512 512" width="16" xmlns="http://www.w3.org/2000/svg"><path fill="#fff" d="M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"/></svg>'
+ '</a></div>'
+ '<iframe frameborder="0" width="650" height="650" @load="iframeLoaded" ' + '<iframe frameborder="0" width="650" height="650" @load="iframeLoaded" '
+ ' :name="$root.parent.widget_id" src="about:blank" v-once' + ' :name="$root.parent.widget_id" src="about:blank" v-once'
+ ' allow="autoplay *; camera *; fullscreen *; payment *"' + ' allow="autoplay *; camera *; fullscreen *; payment *"'
+ ' referrerpolicy="origin">' + ' referrerpolicy="origin">'
+ 'Please enable frames in your browser!' + 'Please enable frames in your browser!'
+ '</iframe>' + '</iframe>'
+ '<div class="pretix-widget-frame-close"><a href="#" @click.prevent.stop="close" role="button" aria-label="'+strings.close+'">'
+ '<svg height="16" viewBox="0 0 512 512" width="16" xmlns="http://www.w3.org/2000/svg"><path fill="#fff" d="M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"/></svg>'
+ '</a></div>'
+ '</div>' + '</div>'
+ '</div>' + '</div>'
); );
var shared_alert_fragment = ( var shared_alert_fragment = (
'<div :class="alertClasses">' '<div :class="alertClasses" role="dialog" aria-modal="true" aria-live="polite">'
+ '<transition name="bounce">' + '<transition name="bounce" @after-enter="focusButton">'
+ '<div class="pretix-widget-alert-box" v-if="$root.error_message">' + '<div class="pretix-widget-alert-box" v-if="$root.error_message">'
+ '<p>{{ $root.error_message }}</p>' + '<p>{{ $root.error_message }}</p>'
+ '<p><button v-if="$root.error_url_after" @click.prevent.stop="errorContinue">' + strings.continue + '</button>' + '<p><button v-if="$root.error_url_after" @click.prevent.stop="errorContinue">' + strings.continue + '</button>'
@@ -966,8 +959,7 @@ Vue.component('pretix-overlay', {
window.open(this.$root.error_url_after); window.open(this.$root.error_url_after);
return; return;
} }
var iframe = this.$refs['frame-container'].children[0]; this.$root.overlay.frame_src = this.$root.error_url_after;
iframe.src = this.$root.error_url_after;
this.$root.frame_loading = true; this.$root.frame_loading = true;
this.$root.error_message = null; this.$root.error_message = null;
this.$root.error_url_after = null; this.$root.error_url_after = null;
@@ -975,15 +967,22 @@ Vue.component('pretix-overlay', {
close: function () { close: function () {
this.$root.frame_shown = false; this.$root.frame_shown = false;
this.$root.parent.frame_dismissed = true; this.$root.parent.frame_dismissed = true;
this.$root.frame_src = "";
this.$root.parent.reload(); this.$root.parent.reload();
this.$root.parent.trigger_close_callback(); this.$root.parent.trigger_close_callback();
}, },
iframeLoaded: function () { iframeLoaded: function () {
if (this.$root.frame_loading) { if (this.$root.frame_loading) {
this.$root.frame_loading = false; this.$root.frame_loading = false;
if (this.$root.frame_src) {
this.$root.frame_shown = true; this.$root.frame_shown = true;
} }
} }
},
focusButton: function () {
this.$el.querySelector(".pretix-widget-alert-box button").focus();
},
} }
}); });
@@ -1738,8 +1737,7 @@ var shared_root_methods = {
} else { } else {
url += '?iframe=1'; url += '?iframe=1';
} }
this.$root.overlay.$children[0].$refs['frame-container'].children[0].src = url; this.$root.overlay.frame_src = url;
this.$root.overlay.frame_loading = true;
} else { } else {
event.target.href = url; event.target.href = url;
return; return;
@@ -1902,9 +1900,7 @@ var shared_root_methods = {
redirect_url += '&' + this.$root.additionalURLParams; redirect_url += '&' + this.$root.additionalURLParams;
} }
if (this.$root.useIframe) { if (this.$root.useIframe) {
var iframe = this.$root.overlay.$children[0].$refs['frame-container'].children[0]; this.$root.overlay.frame_src = redirect_url;
this.$root.overlay.frame_loading = true;
iframe.src = redirect_url;
} else { } else {
window.open(redirect_url); window.open(redirect_url);
} }
@@ -1928,9 +1924,7 @@ var shared_root_methods = {
redirect_url += '&' + this.$root.additionalURLParams; redirect_url += '&' + this.$root.additionalURLParams;
} }
if (this.$root.useIframe) { if (this.$root.useIframe) {
var iframe = this.$root.overlay.$children[0].$refs['frame-container'].children[0]; this.$root.overlay.frame_src = redirect_url;
this.$root.overlay.frame_loading = true;
iframe.src = redirect_url;
} else { } else {
window.open(redirect_url); window.open(redirect_url);
} }
@@ -2067,9 +2061,41 @@ var create_overlay = function (app) {
error_url_after_new_tab: true, error_url_after_new_tab: true,
error_message: null, error_message: null,
lightbox: null, lightbox: null,
prevActiveElement: null,
} }
}, },
props: {
frame_src: String,
},
methods: { methods: {
},
watch: {
frame_src: function (newValue, oldValue) {
// show loading spinner only when previously no frame_src was set
if (newValue && !oldValue) {
this.frame_loading = true;
}
// to close and unload the iframe, frame_src can be empty -> make it valid HTML with about:blank
this.$el.querySelector("iframe").src = newValue || "about:blank";
},
frame_shown: function (newValue) {
if (newValue) {
this.prevActiveElement = document.activeElement;
var btn = this.$el?.querySelector(".pretix-widget-frame-close a");
this.$nextTick(function () {
btn?.focus();
});
} else {
this.prevActiveElement?.focus();
}
},
error_message: function (newValue) {
if (newValue) {
this.prevActiveElement = document.activeElement;
} else {
this.prevActiveElement?.focus();
}
},
} }
}); });
app.$root.overlay = framechild; app.$root.overlay = framechild;