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

View File

@@ -7,7 +7,7 @@
<div class="dropdown-container">
<input type="text" class="form-control" id="dashboard_query"
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"
class="event-dropdown dropdown-menu">
</ul>

View File

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

View File

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

View File

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

View File

@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-21 16:42+0000\n"
"PO-Revision-Date: 2024-11-14 20:00+0000\n"
"Last-Translator: Gravity Fox <gravityraposa@gmail.com>\n"
"PO-Revision-Date: 2025-01-28 01:00+0000\n"
"Last-Translator: Cornelius Kibelka <ckibelka-ctr@wikimedia.org>\n"
"Language-Team: Portuguese (Brazil) <https://translate.pretix.eu/projects/"
"pretix/pretix/pt_BR/>\n"
"Language: pt_BR\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\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
msgid "English"
@@ -93,7 +93,7 @@ msgstr "Italiano"
#: pretix/_base_settings.py:105
msgid "Japanese"
msgstr ""
msgstr "Japonês"
#: pretix/_base_settings.py:106
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."
#: pretix/base/exporters/orderlist.py:1012
#, fuzzy
#| msgid "Date of last payment"
msgid "Date range (payment date)"
msgstr "Data do último pagamento"
msgstr "Intervalo de datas (data de pagamento)"
#: pretix/base/exporters/orderlist.py:1015
msgid ""
@@ -2450,7 +2448,7 @@ msgstr ""
#: pretix/base/exporters/orderlist.py:1019
msgid "Date range (start of transaction)"
msgstr ""
msgstr "Intervalo de datas (início da transação)"
#: pretix/base/exporters/orderlist.py:1025
msgid "Payment states"
@@ -2576,10 +2574,8 @@ msgid "Current user's carts"
msgstr "Carrinhos de usuários atuais"
#: pretix/base/exporters/orderlist.py:1135
#, fuzzy
#| msgid "Paid orders"
msgid "Exited orders"
msgstr "Ordens pagas"
msgstr "Pedidos encerrados"
#: pretix/base/exporters/orderlist.py:1135
msgid "Current availability"
@@ -2593,22 +2589,19 @@ msgid "Infinite"
msgstr "Infinito"
#: pretix/base/exporters/orderlist.py:1181
#, fuzzy
#| msgid "Gift card"
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:1288
#, fuzzy
#| msgid "Gift card"
msgctxt "export_category"
msgid "Gift cards"
msgstr "Cartão Presente"
msgstr "Cartões-presente"
#: pretix/base/exporters/orderlist.py:1184
msgid "Download a spreadsheet of all gift card transactions."
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:1259
@@ -2619,10 +2612,8 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/organizers/giftcard.html:28
#: pretix/control/templates/pretixcontrol/organizers/giftcards.html:56
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:156
#, fuzzy
#| msgid "Gift card"
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:1302
@@ -2631,7 +2622,7 @@ msgstr "Cartão Presente"
#: pretix/control/forms/filter.py:1413 pretix/control/forms/filter.py:1416
#: pretix/control/templates/pretixcontrol/event/live.html:75
msgid "Test mode"
msgstr ""
msgstr "Modo de teste"
#: pretix/base/exporters/orderlist.py:1218 pretix/base/models/organizer.py:96
#: pretix/control/forms/event.py:110 pretix/control/forms/event.py:116
@@ -2678,41 +2669,41 @@ msgid "TEST MODE"
msgstr "MODO DE TESTE"
#: pretix/base/exporters/orderlist.py:1240
#, fuzzy
#| msgid "Gift card"
msgid "Gift card redemptions"
msgstr "Cartão Presente"
msgstr "Resgates de cartões-presente"
#: pretix/base/exporters/orderlist.py:1242
msgid ""
"Download a spreadsheet of all payments or refunds that involve gift cards."
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/control/templates/pretixcontrol/giftcards/payment.html:16
msgid "Issuer"
msgstr ""
msgstr "Emissor"
#: pretix/base/exporters/orderlist.py:1286 pretix/control/navigation.py:538
#: pretix/control/navigation.py:556
#: pretix/control/templates/pretixcontrol/organizers/edit.html:156
#: pretix/plugins/reports/accountingreport.py:898
#, fuzzy
#| msgid "Gift card"
msgid "Gift cards"
msgstr "Cartão Presente"
msgstr "Cartões-presente"
#: pretix/base/exporters/orderlist.py:1289
msgid "Download a spreadsheet of all gift cards including their current value."
msgstr ""
"Faça o download de uma planilha de todos os cartões-presente, incluindo seu "
"valor atual."
#: pretix/base/exporters/orderlist.py:1296
msgid "Show value at"
msgstr ""
msgstr "Mostrar o valor em"
#: pretix/base/exporters/orderlist.py:1299
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: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
msgid "Live"
msgstr ""
msgstr "Em tempo real"
#: pretix/base/exporters/orderlist.py:1315 pretix/control/forms/filter.py:1425
#: pretix/control/templates/pretixcontrol/pdf/index.html:252
msgid "Empty"
msgstr ""
msgstr "Vazio"
#: pretix/base/exporters/orderlist.py:1316 pretix/control/forms/filter.py:1426
msgid "Valid and with value"
msgstr ""
msgstr "Válido e com valor"
#: pretix/base/exporters/orderlist.py:1317 pretix/control/forms/filter.py:1427
msgid "Expired and with value"
msgstr ""
msgstr "Expirado e com valor"
#: pretix/base/exporters/orderlist.py:1318 pretix/control/forms/filter.py:227
#: 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
msgid "Test mode card"
msgstr ""
msgstr "Cartão de modo de teste"
#: pretix/base/exporters/orderlist.py:1358
#: pretix/base/modelimport_orders.py:516 pretix/base/models/giftcards.py:102
#: pretix/control/templates/pretixcontrol/order/index.html:202
#: pretix/control/templates/pretixcontrol/organizers/giftcards.html:62
msgid "Expiry date"
msgstr ""
msgstr "Data de expiração"
#: pretix/base/exporters/orderlist.py:1359 pretix/control/forms/orders.py:875
msgid "Special terms and conditions"
@@ -2792,17 +2783,12 @@ msgid "Created in order"
msgstr "Criado em ordem"
#: pretix/base/exporters/orderlist.py:1363
#, fuzzy
#| msgctxt "invoice"
#| msgid "Invoice number"
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
#, fuzzy
#| msgid "Only paid orders"
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/control/templates/pretixcontrol/organizers/edit.html:204
@@ -2830,11 +2816,9 @@ msgid "Media type"
msgstr "Tipo de mídia"
#: pretix/base/exporters/reusablemedia.py:47 pretix/base/models/media.py:73
#, fuzzy
#| msgid "Internal identifier"
msgctxt "reusable_medium"
msgid "Identifier"
msgstr "Identificador interno"
msgstr "Identificador"
#: pretix/base/exporters/reusablemedia.py:49 pretix/base/models/media.py:81
#: 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/control/templates/pretixcontrol/order/index.html:215
#: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:132
#, fuzzy
#| msgctxt "refund_source"
#| msgid "Customer"
msgid "Customer account"
msgstr "Cliente"
msgstr "Conta do cliente"
#: pretix/base/exporters/reusablemedia.py:51 pretix/base/models/media.py:97
#, fuzzy
#| msgid "Multiline text"
msgid "Linked ticket"
msgstr "Texto multilinha"
msgstr "Bilhete vinculado"
#: pretix/base/exporters/reusablemedia.py:52 pretix/base/models/media.py:104
#, fuzzy
#| msgid "Gift card"
msgid "Linked gift card"
msgstr "Cartão Presente"
msgstr "Cartão-presente vinculado"
#: pretix/base/exporters/waitinglist.py:42
#, fuzzy
#| msgid "Waiting list"
msgctxt "export_category"
msgid "Waiting list"
msgstr "Lista de espera"
@@ -2874,23 +2849,24 @@ msgstr "Lista de espera"
#: pretix/base/exporters/waitinglist.py:43
msgid "Download a spread sheet with all your waiting list data."
msgstr ""
"Faça o download de uma planilha com todos os dados de sua lista de espera."
#: pretix/base/exporters/waitinglist.py:49
#: pretix/control/templates/pretixcontrol/waitinglist/index.html:102
msgid "All entries"
msgstr ""
msgstr "Todos os registros"
#: pretix/base/exporters/waitinglist.py:54
#: pretix/control/templates/pretixcontrol/waitinglist/index.html:105
msgid "Waiting for a voucher"
msgstr ""
msgstr "Aguardando um voucher"
#: pretix/base/exporters/waitinglist.py:59
#: pretix/control/templates/pretixcontrol/waitinglist/index.html:107
#: pretix/control/templates/pretixcontrol/waitinglist/index.html:227
#: pretix/control/views/waitinglist.py:326
msgid "Voucher assigned"
msgstr ""
msgstr "Voucher atribuído"
#: pretix/base/exporters/waitinglist.py:64
#: 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/views/waitinglist.py:322
msgid "Voucher redeemed"
msgstr ""
msgstr "Voucher resgatado"
#: pretix/base/exporters/waitinglist.py:80
#: pretix/control/templates/pretixcontrol/waitinglist/index.html:116
@@ -2918,7 +2894,7 @@ msgstr "O carrinho expirou"
#: pretix/control/forms/event.py:1764
#: pretix/control/templates/pretixcontrol/items/index.html:38
msgid "Product name"
msgstr ""
msgstr "Nome do produto"
#: pretix/base/exporters/waitinglist.py:115
#: 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/control/views/waitinglist.py:308
msgid "Priority"
msgstr ""
msgstr "Prioridade"
#: pretix/base/exporters/waitinglist.py:121
#: 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
#, python-brace-format
msgid "You can use {markup_name} in this field."
msgstr ""
msgstr "Você pode usar {markup_name} nesse campo."
#: pretix/base/forms/__init__.py:178
#, python-format
@@ -2959,6 +2935,8 @@ msgid ""
"Due to technical reasons you cannot set inputs, that need to be masked (e.g. "
"passwords), to %(value)s."
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
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
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/presale/forms/customer.py:372 pretix/presale/forms/customer.py:444
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
msgid "This account is inactive."
@@ -3018,35 +2996,43 @@ msgstr "Referência interna"
#: pretix/base/forms/questions.py:320
msgctxt "phonenumber"
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
msgid ""
"You uploaded an image in landscape orientation. Please upload an image in "
"portrait orientation."
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
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
msgid ""
"The file you uploaded has a very large number of pixels, please upload an "
"image no larger than 10000 x 10000 pixels."
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
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
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
msgid ""
"If you keep this empty, the ticket will be valid starting at the time of "
"purchase."
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
msgid "Street and Number"
@@ -3064,16 +3050,20 @@ msgid ""
"Optional, but depending on the country you reside in we might need to charge "
"you additional taxes if you do not enter it."
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
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
msgid ""
"Optional, but it might be required for you to claim tax benefits on your "
"invoice depending on your and the sellers country of residence."
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
msgid "You need to provide a company name."
@@ -3109,7 +3099,7 @@ msgstr "Senha incorreta."
#: pretix/base/forms/user.py:58
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/presale/forms/customer.py:448
@@ -3164,6 +3154,10 @@ msgid ""
"up. Please note: to use literal \"{\" or \"}\", you need to double them as "
"\"{{\" and \"}}\"."
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
#, fuzzy, python-format
@@ -3348,7 +3342,7 @@ msgstr "Montante"
#, python-brace-format
msgctxt "invoice"
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
#, fuzzy, python-brace-format
@@ -3372,7 +3366,7 @@ msgstr "Ordens pagas"
#: pretix/base/invoice.py:707
msgctxt "invoice"
msgid "Outstanding payments"
msgstr ""
msgstr "Pagamentos pendentes"
#: pretix/base/invoice.py:724
#, fuzzy
@@ -3438,7 +3432,7 @@ msgstr ""
#: pretix/base/invoice.py:867
msgid "Default invoice renderer (European-style letter)"
msgstr ""
msgstr "Renderizador de faturas padrão (letra no estilo europeu)"
#: pretix/base/invoice.py:956
#, fuzzy
@@ -3450,7 +3444,7 @@ msgstr "Você precisa selecionar uma data."
#: pretix/base/invoice.py:1003
msgid "Simplified invoice renderer"
msgstr ""
msgstr "Renderizador de faturas simplificado"
#: pretix/base/invoice.py:1022
#, fuzzy, python-brace-format
@@ -3465,6 +3459,8 @@ msgid ""
"The relevant plugin is currently not active. To activate it, click here to "
"go to the plugin settings."
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
#, fuzzy
@@ -3496,7 +3492,7 @@ msgstr "Data {val}"
#: pretix/base/logentrytypes.py:217
#, python-brace-format
msgid "Quota {val}"
msgstr ""
msgstr "Contingente {val}"
#: pretix/base/logentrytypes.py:223
#, fuzzy, python-brace-format
@@ -3521,12 +3517,12 @@ msgstr "Norma fiscal {val}"
#: pretix/base/media.py:71
msgid "Barcode / QR-Code"
msgstr ""
msgstr "Código de barras / código QR"
#: pretix/base/media.py:88
#: pretix/control/templates/pretixcontrol/organizers/edit.html:237
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_squashed_0088_auto_20180328_1217.py:35
@@ -3535,28 +3531,28 @@ msgstr "Lista padrão"
#: pretix/base/modelimport.py:112
msgid "Keep empty"
msgstr ""
msgstr "Manter vazio"
#: pretix/base/modelimport.py:139
#, python-brace-format
msgid "Invalid setting for column \"{header}\"."
msgstr ""
msgstr "Configuração inválida para a coluna “{header}”."
#: pretix/base/modelimport.py:199
#, python-brace-format
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
#, python-brace-format
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/control/views/orders.py:1191 pretix/control/views/orders.py:1235
#: pretix/control/views/orders.py:1270 pretix/control/views/orders.py:1293
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
#, fuzzy
@@ -3568,7 +3564,7 @@ msgstr "Nenhum evento arquivado encontrado."
#: pretix/base/modelimport.py:281 pretix/base/modelimport.py:293
msgctxt "subevent"
msgid "Multiple matching dates were found."
msgstr ""
msgstr "Foram encontradas várias datas correspondentes."
#: pretix/base/modelimport_orders.py:85
#, fuzzy
@@ -3591,7 +3587,7 @@ msgstr "Nenhum evento arquivado encontrado."
#: pretix/base/modelimport_orders.py:130
#: pretix/base/modelimport_vouchers.py:196
msgid "Multiple matching products were found."
msgstr ""
msgstr "Foram encontrados vários produtos correspondentes."
#: pretix/base/modelimport_orders.py:139
#: 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:261
msgid "Multiple matching variations were found."
msgstr ""
msgstr "Foram encontradas diversas variações correspondentes."
#: pretix/base/modelimport_orders.py:164
#, fuzzy
@@ -3700,7 +3696,7 @@ msgstr "Tipo de dispositivo"
#: pretix/base/modelimport_orders.py:460
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
#, 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/presale/templates/pretixpresale/organizers/customer_membership.html:52
msgid "Maximum usages"
msgstr ""
msgstr "Usos máximos"
#: pretix/base/modelimport_vouchers.py:79
#, fuzzy
@@ -3814,20 +3810,22 @@ msgstr "Quantidade máxima por pedido"
#: pretix/base/modelimport_vouchers.py:119 pretix/base/models/vouchers.py:225
#: pretix/control/forms/filter.py:2106
msgid "Reserve ticket from quota"
msgstr ""
msgstr "Reservar bilhete da cota"
#: pretix/base/modelimport_vouchers.py:127 pretix/base/models/vouchers.py:233
msgid "Allow to bypass quota"
msgstr ""
msgstr "Permitir ignorar a cota"
#: pretix/base/modelimport_vouchers.py:135 pretix/base/models/vouchers.py:239
msgid "Price mode"
msgstr ""
msgstr "Modo de preço"
#: pretix/base/modelimport_vouchers.py:150
#, python-brace-format
msgid "Could not parse {value} as a price mode, use one of {options}."
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
msgid "Voucher value"
@@ -3835,18 +3833,18 @@ msgstr "Valor do voucher"
#: pretix/base/modelimport_vouchers.py:165
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/models/vouchers.py:272
#: pretix/control/templates/pretixcontrol/items/quota_edit.html:8
#: pretix/control/templates/pretixcontrol/items/quota_edit.html:15
msgid "Quota"
msgstr ""
msgstr "Cota"
#: pretix/base/modelimport_vouchers.py:253
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
#, 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."
#: pretix/base/modelimport_vouchers.py:306 pretix/base/models/vouchers.py:519
#, fuzzy, python-brace-format
#| msgctxt "subevent"
#| msgid "You need to select a date."
#, python-brace-format
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/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
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
msgid "Offer all add-on products for free when redeeming this voucher"
msgstr ""
"Ofereça todos os produtos adicionais gratuitamente ao resgatar este voucher"
#: pretix/base/modelimport_vouchers.py:351 pretix/base/models/vouchers.py:305
msgid ""
"Include all bundled products without a designated price when redeeming this "
"voucher"
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
msgid "Is active"
@@ -3968,22 +3967,28 @@ msgid ""
"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."
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
msgctxt "checkin"
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
msgctxt "checkin"
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
msgid ""
"This is relevant in various situations, e.g. for deciding if a ticket can "
"still be canceled by the customer."
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
msgctxt "checkin"
@@ -4007,6 +4012,8 @@ msgstr ""
#: pretix/base/models/checkin.py:79
msgid "Allow checking in add-on tickets by scanning the main ticket"
msgstr ""
"Permitir o check-in de bilhetes adicionais por meio da leitura do bilhete "
"principal"
#: pretix/base/models/checkin.py:81
msgid ""
@@ -4014,6 +4021,9 @@ msgid ""
"there is always exactly one matching add-on ticket. Ambiguous scans will be "
"rejected.."
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/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 "
"automatic configuration of check-in devices."
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
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
msgid "Allow multiple entries per ticket"
msgstr ""
msgstr "Permitir várias entradas por bilhete"
#: pretix/base/models/checkin.py:95
msgid ""
"Use this option to turn off warnings if a ticket is scanned a second time."
msgstr ""
"Use essa opção para desativar os avisos se um bilhete for escaneado uma "
"segunda vez."
#: pretix/base/models/checkin.py:99
#, fuzzy
@@ -4056,7 +4070,7 @@ msgstr "País"
#: pretix/base/models/checkin.py:337
msgid "Exit"
msgstr ""
msgstr "Saída"
#: pretix/base/models/checkin.py:355
#, fuzzy

View File

@@ -230,7 +230,7 @@ Vue.component('availbox', {
+ ' v-bind:aria-label="label_select_item"'
+ '>'
+ '</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>'
+ '<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"'
@@ -723,7 +723,6 @@ var shared_methods = {
},
buy_callback: function (data) {
if (data.redirect) {
var iframe = this.$root.overlay.$children[0].$refs['frame-container'].children[0];
if (data.cart_id) {
this.$root.cart_id = data.cart_id;
setCookie(this.$root.cookieName, data.cart_id, 30);
@@ -748,7 +747,7 @@ var shared_methods = {
}
this.$root.overlay.frame_loading = false;
} else {
iframe.src = url;
this.$root.overlay.frame_src = url;
}
} else {
this.async_task_id = data.async_id;
@@ -787,9 +786,7 @@ var shared_methods = {
if (this.$root.additionalURLParams) {
redirect_url += '&' + this.$root.additionalURLParams;
}
var iframe = this.$root.overlay.$children[0].$refs['frame-container'].children[0];
this.$root.overlay.frame_loading = true;
iframe.src = redirect_url;
this.$root.overlay.frame_src = redirect_url;
},
voucher_open: function (voucher) {
var redirect_url;
@@ -801,9 +798,7 @@ var shared_methods = {
redirect_url += '&' + this.$root.additionalURLParams;
}
if (this.$root.useIframe) {
var iframe = this.$root.overlay.$children[0].$refs['frame-container'].children[0];
this.$root.overlay.frame_loading = true;
iframe.src = redirect_url;
this.$root.overlay.frame_src = redirect_url;
} else {
window.open(redirect_url);
}
@@ -826,9 +821,7 @@ var shared_methods = {
redirect_url += '&' + this.$root.additionalURLParams;
}
if (this.$root.useIframe) {
var iframe = this.$root.overlay.$children[0].$refs['frame-container'].children[0];
this.$root.overlay.frame_loading = true;
iframe.src = redirect_url;
this.$root.overlay.frame_src = redirect_url;
} else {
window.open(redirect_url);
}
@@ -853,27 +846,27 @@ var shared_loading_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">'
+ '<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 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" '
+ ' :name="$root.parent.widget_id" src="about:blank" v-once'
+ ' allow="autoplay *; camera *; fullscreen *; payment *"'
+ ' referrerpolicy="origin">'
+ 'Please enable frames in your browser!'
+ '</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>'
);
var shared_alert_fragment = (
'<div :class="alertClasses">'
+ '<transition name="bounce">'
'<div :class="alertClasses" role="dialog" aria-modal="true" aria-live="polite">'
+ '<transition name="bounce" @after-enter="focusButton">'
+ '<div class="pretix-widget-alert-box" v-if="$root.error_message">'
+ '<p>{{ $root.error_message }}</p>'
+ '<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);
return;
}
var iframe = this.$refs['frame-container'].children[0];
iframe.src = this.$root.error_url_after;
this.$root.overlay.frame_src = this.$root.error_url_after;
this.$root.frame_loading = true;
this.$root.error_message = null;
this.$root.error_url_after = null;
@@ -975,15 +967,22 @@ Vue.component('pretix-overlay', {
close: function () {
this.$root.frame_shown = false;
this.$root.parent.frame_dismissed = true;
this.$root.frame_src = "";
this.$root.parent.reload();
this.$root.parent.trigger_close_callback();
},
iframeLoaded: function () {
if (this.$root.frame_loading) {
this.$root.frame_loading = false;
this.$root.frame_shown = true;
if (this.$root.frame_src) {
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 {
url += '?iframe=1';
}
this.$root.overlay.$children[0].$refs['frame-container'].children[0].src = url;
this.$root.overlay.frame_loading = true;
this.$root.overlay.frame_src = url;
} else {
event.target.href = url;
return;
@@ -1902,9 +1900,7 @@ var shared_root_methods = {
redirect_url += '&' + this.$root.additionalURLParams;
}
if (this.$root.useIframe) {
var iframe = this.$root.overlay.$children[0].$refs['frame-container'].children[0];
this.$root.overlay.frame_loading = true;
iframe.src = redirect_url;
this.$root.overlay.frame_src = redirect_url;
} else {
window.open(redirect_url);
}
@@ -1928,9 +1924,7 @@ var shared_root_methods = {
redirect_url += '&' + this.$root.additionalURLParams;
}
if (this.$root.useIframe) {
var iframe = this.$root.overlay.$children[0].$refs['frame-container'].children[0];
this.$root.overlay.frame_loading = true;
iframe.src = redirect_url;
this.$root.overlay.frame_src = redirect_url;
} else {
window.open(redirect_url);
}
@@ -2067,9 +2061,41 @@ var create_overlay = function (app) {
error_url_after_new_tab: true,
error_message: null,
lightbox: null,
prevActiveElement: null,
}
},
props: {
frame_src: String,
},
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;