Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,12 @@ ones are marked like "v1.0.0-fork".

### Fixed in Unreleased

* The unsaved-changes prompt in the term dialogs is now an in-app dialog that
follows the theme and the interface language, instead of the browser's.
* Confirmation prompts are now an in-app dialog that follows the theme and the
interface language, instead of the browser's, and prompts that were English
in every locale are translated. The browser's own dialog remains only as a
fallback, and for its warning when leaving a page with unsaved changes.

* Cancelling a database restore no longer leaves the page showing "restoring".

* The "Email not verified" banner no longer follows accounts that have no
email address.
Expand Down
2 changes: 1 addition & 1 deletion cypress/e2e/13-books.cy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,8 +97,8 @@ describe('Books', () => {
cy.get('table tbody tr', { timeout: 10000 }).should('have.length.at.least', 1);
cy.contains('table tbody tr', 'EPUB').should('exist');

cy.on('window:confirm', () => true);
cy.contains('table tbody tr', 'EPUB').find('button.is-danger').click();
cy.get('.confirm-dialog .button.is-danger').click();

cy.get('.notification.is-info', { timeout: 10000 }).should('be.visible');

Expand Down
8 changes: 7 additions & 1 deletion cypress/e2e/14-dictionaries.cy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,14 @@ describe('Local dictionaries', () => {
cy.visit(`/languages/${LANG_ID}/dictionaries`);
cy.waitForAlpine();

cy.on('window:confirm', () => true);
// Declining leaves it in place.
cy.contains('table tbody tr', 'Doomed Dict').find('button.is-danger').click();
cy.get('.confirm-dialog').contains('button', 'Cancel').click();
cy.get('.confirm-dialog').should('not.exist');
cy.contains('table tbody tr', 'Doomed Dict').should('exist');

cy.contains('table tbody tr', 'Doomed Dict').find('button.is-danger').click();
cy.get('.confirm-dialog .button.is-danger').click();

cy.contains('table tbody tr', 'Doomed Dict').should('not.exist');

Expand Down
16 changes: 15 additions & 1 deletion locale/ar/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,5 +49,19 @@
"dialog.discard_title": "هل تريد تجاهل التغييرات؟",
"dialog.discard_message": "لم تُحفظ تغييراتك على هذا المصطلح.",
"dialog.discard": "تجاهل",
"dialog.keep_editing": "متابعة التعديل"
"dialog.keep_editing": "متابعة التعديل",
"dialog.confirm": "تأكيد",
"dialog.are_you_sure": "هل أنت متأكد؟",
"dialog.delete_term": "هل تريد حذف هذا المصطلح؟",
"dialog.mark_all_known": "هل تريد وضع علامة «معروفة جيدًا» على كل الكلمات غير المعروفة؟",
"dialog.mark_all_ignored": "هل تريد وضع علامة «متجاهلة» على كل الكلمات غير المعروفة؟",
"dialog.delete_feed": "هل تريد حذف الموجز «{name}»؟",
"dialog.delete_selected_feeds": "هل تريد حذف الموجزات المحددة؟ ({count})",
"dialog.delete_selected_articles": "هل تريد حذف المقالات المحددة؟ ({count})",
"dialog.delete_all_articles": "هل تريد حذف كل المقالات من «{name}»؟",
"dialog.clear_offline": "هل تريد إزالة كل البيانات غير المتصلة؟ لا يمكن التراجع عن هذا الإجراء.",
"dialog.translation_exists": "يبدو أن «{text}» موجودة بالفعل كترجمة. هل تريد إدراجها على أي حال؟",
"dialog.records_affected": "السجلات المتأثرة: {count}",
"dialog.all_records_warning": "ينطبق هذا على كل السجلات في كل صفحات الاستعلام الحالي.",
"dialog.delete_table_set": "هل تريد حذف مجموعة الجداول «{name}»؟ ستُفقد كل بياناتها."
}
16 changes: 15 additions & 1 deletion locale/de/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,5 +49,19 @@
"dialog.discard_title": "Änderungen verwerfen?",
"dialog.discard_message": "Ihre Änderungen an diesem Begriff wurden nicht gespeichert.",
"dialog.discard": "Verwerfen",
"dialog.keep_editing": "Weiter bearbeiten"
"dialog.keep_editing": "Weiter bearbeiten",
"dialog.confirm": "Bestätigen",
"dialog.are_you_sure": "Sind Sie sicher?",
"dialog.delete_term": "Diesen Begriff löschen?",
"dialog.mark_all_known": "Alle unbekannten Wörter als gut bekannt markieren?",
"dialog.mark_all_ignored": "Alle unbekannten Wörter als ignoriert markieren?",
"dialog.delete_feed": "Feed „{name}“ löschen?",
"dialog.delete_selected_feeds": "Ausgewählte Feeds löschen? ({count})",
"dialog.delete_selected_articles": "Ausgewählte Artikel löschen? ({count})",
"dialog.delete_all_articles": "Alle Artikel aus „{name}“ löschen?",
"dialog.clear_offline": "Alle Offline-Daten entfernen? Dies kann nicht rückgängig gemacht werden.",
"dialog.translation_exists": "„{text}“ scheint bereits eine Übersetzung zu sein. Trotzdem einfügen?",
"dialog.records_affected": "Betroffene Einträge: {count}",
"dialog.all_records_warning": "Dies gilt für alle Einträge auf allen Seiten der aktuellen Abfrage.",
"dialog.delete_table_set": "Tabellensatz „{name}“ löschen? Alle seine Daten gehen verloren."
}
16 changes: 15 additions & 1 deletion locale/en/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,5 +49,19 @@
"dialog.discard_title": "Discard your changes?",
"dialog.discard_message": "Your changes to this term have not been saved.",
"dialog.discard": "Discard",
"dialog.keep_editing": "Keep editing"
"dialog.keep_editing": "Keep editing",
"dialog.confirm": "Confirm",
"dialog.are_you_sure": "Are you sure?",
"dialog.delete_term": "Delete this term?",
"dialog.mark_all_known": "Mark all unknown words as Well Known?",
"dialog.mark_all_ignored": "Mark all unknown words as Ignored?",
"dialog.delete_feed": "Delete feed \"{name}\"?",
"dialog.delete_selected_feeds": "Delete the selected feeds? ({count})",
"dialog.delete_selected_articles": "Delete the selected articles? ({count})",
"dialog.delete_all_articles": "Delete all articles from \"{name}\"?",
"dialog.clear_offline": "Remove all offline data? This cannot be undone.",
"dialog.translation_exists": "\"{text}\" already seems to be a translation. Insert it anyway?",
"dialog.records_affected": "Records affected: {count}",
"dialog.all_records_warning": "This applies to all records on all pages of the current query.",
"dialog.delete_table_set": "Delete table set \"{name}\"? All its data will be lost."
}
16 changes: 15 additions & 1 deletion locale/es/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,5 +49,19 @@
"dialog.discard_title": "¿Descartar los cambios?",
"dialog.discard_message": "Los cambios en este término no se han guardado.",
"dialog.discard": "Descartar",
"dialog.keep_editing": "Seguir editando"
"dialog.keep_editing": "Seguir editando",
"dialog.confirm": "Confirmar",
"dialog.are_you_sure": "¿Está seguro?",
"dialog.delete_term": "¿Eliminar este término?",
"dialog.mark_all_known": "¿Marcar todas las palabras desconocidas como bien conocidas?",
"dialog.mark_all_ignored": "¿Marcar todas las palabras desconocidas como ignoradas?",
"dialog.delete_feed": "¿Eliminar el feed «{name}»?",
"dialog.delete_selected_feeds": "¿Eliminar los feeds seleccionados? ({count})",
"dialog.delete_selected_articles": "¿Eliminar los artículos seleccionados? ({count})",
"dialog.delete_all_articles": "¿Eliminar todos los artículos de «{name}»?",
"dialog.clear_offline": "¿Eliminar todos los datos sin conexión? Esta acción no se puede deshacer.",
"dialog.translation_exists": "«{text}» ya parece ser una traducción. ¿Insertarla de todos modos?",
"dialog.records_affected": "Registros afectados: {count}",
"dialog.all_records_warning": "Esto se aplica a todos los registros de todas las páginas de la consulta actual.",
"dialog.delete_table_set": "¿Eliminar el conjunto de tablas «{name}»? Se perderán todos sus datos."
}
16 changes: 15 additions & 1 deletion locale/fa/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,5 +49,19 @@
"dialog.discard_title": "تغییرات کنار گذاشته شوند؟",
"dialog.discard_message": "تغییرات شما در این واژه ذخیره نشده است.",
"dialog.discard": "کنار گذاشتن",
"dialog.keep_editing": "ادامهٔ ویرایش"
"dialog.keep_editing": "ادامهٔ ویرایش",
"dialog.confirm": "تأیید",
"dialog.are_you_sure": "مطمئن هستید؟",
"dialog.delete_term": "این واژه حذف شود؟",
"dialog.mark_all_known": "همهٔ واژه‌های ناشناخته به‌عنوان «خوب شناخته‌شده» علامت‌گذاری شوند؟",
"dialog.mark_all_ignored": "همهٔ واژه‌های ناشناخته به‌عنوان «نادیده‌گرفته‌شده» علامت‌گذاری شوند؟",
"dialog.delete_feed": "خوراک «{name}» حذف شود؟",
"dialog.delete_selected_feeds": "خوراک‌های انتخاب‌شده حذف شوند؟ ({count})",
"dialog.delete_selected_articles": "مقاله‌های انتخاب‌شده حذف شوند؟ ({count})",
"dialog.delete_all_articles": "همهٔ مقاله‌های «{name}» حذف شوند؟",
"dialog.clear_offline": "همهٔ داده‌های آفلاین حذف شوند؟ این کار برگشت‌پذیر نیست.",
"dialog.translation_exists": "به نظر می‌رسد «{text}» از قبل به‌عنوان ترجمه وجود دارد. با این حال درج شود؟",
"dialog.records_affected": "رکوردهای تأثیرپذیرفته: {count}",
"dialog.all_records_warning": "این کار روی همهٔ رکوردها در همهٔ صفحه‌های پرس‌وجوی فعلی اعمال می‌شود.",
"dialog.delete_table_set": "مجموعه‌جدول «{name}» حذف شود؟ همهٔ داده‌های آن از دست خواهد رفت."
}
16 changes: 15 additions & 1 deletion locale/fr/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,5 +49,19 @@
"dialog.discard_title": "Abandonner vos modifications ?",
"dialog.discard_message": "Vos modifications de ce terme n'ont pas été enregistrées.",
"dialog.discard": "Abandonner",
"dialog.keep_editing": "Continuer à modifier"
"dialog.keep_editing": "Continuer à modifier",
"dialog.confirm": "Confirmer",
"dialog.are_you_sure": "Êtes-vous sûr ?",
"dialog.delete_term": "Supprimer ce terme ?",
"dialog.mark_all_known": "Marquer tous les mots inconnus comme bien connus ?",
"dialog.mark_all_ignored": "Marquer tous les mots inconnus comme ignorés ?",
"dialog.delete_feed": "Supprimer le flux « {name} » ?",
"dialog.delete_selected_feeds": "Supprimer les flux sélectionnés ? ({count})",
"dialog.delete_selected_articles": "Supprimer les articles sélectionnés ? ({count})",
"dialog.delete_all_articles": "Supprimer tous les articles de « {name} » ?",
"dialog.clear_offline": "Supprimer toutes les données hors ligne ? Cette action est irréversible.",
"dialog.translation_exists": "« {text} » semble déjà être une traduction. L'insérer quand même ?",
"dialog.records_affected": "Enregistrements concernés : {count}",
"dialog.all_records_warning": "Cela s'applique à tous les enregistrements de toutes les pages de la requête en cours.",
"dialog.delete_table_set": "Supprimer le jeu de tables « {name} » ? Toutes ses données seront perdues."
}
16 changes: 15 additions & 1 deletion locale/it/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,5 +49,19 @@
"dialog.discard_title": "Annullare le modifiche?",
"dialog.discard_message": "Le modifiche a questo termine non sono state salvate.",
"dialog.discard": "Annulla modifiche",
"dialog.keep_editing": "Continua a modificare"
"dialog.keep_editing": "Continua a modificare",
"dialog.confirm": "Conferma",
"dialog.are_you_sure": "Sei sicuro?",
"dialog.delete_term": "Eliminare questo termine?",
"dialog.mark_all_known": "Segnare tutte le parole sconosciute come ben note?",
"dialog.mark_all_ignored": "Segnare tutte le parole sconosciute come ignorate?",
"dialog.delete_feed": "Eliminare il feed «{name}»?",
"dialog.delete_selected_feeds": "Eliminare i feed selezionati? ({count})",
"dialog.delete_selected_articles": "Eliminare gli articoli selezionati? ({count})",
"dialog.delete_all_articles": "Eliminare tutti gli articoli di «{name}»?",
"dialog.clear_offline": "Rimuovere tutti i dati offline? L'operazione non può essere annullata.",
"dialog.translation_exists": "«{text}» sembra essere già una traduzione. Inserirla comunque?",
"dialog.records_affected": "Record interessati: {count}",
"dialog.all_records_warning": "Vale per tutti i record di tutte le pagine della query corrente.",
"dialog.delete_table_set": "Eliminare il set di tabelle «{name}»? Tutti i suoi dati andranno persi."
}
16 changes: 15 additions & 1 deletion locale/ja/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,5 +49,19 @@
"dialog.discard_title": "変更を破棄しますか?",
"dialog.discard_message": "この用語への変更は保存されていません。",
"dialog.discard": "破棄",
"dialog.keep_editing": "編集を続ける"
"dialog.keep_editing": "編集を続ける",
"dialog.confirm": "確認",
"dialog.are_you_sure": "よろしいですか?",
"dialog.delete_term": "この用語を削除しますか?",
"dialog.mark_all_known": "未知の単語をすべて既知としてマークしますか?",
"dialog.mark_all_ignored": "未知の単語をすべて無視としてマークしますか?",
"dialog.delete_feed": "フィード「{name}」を削除しますか?",
"dialog.delete_selected_feeds": "選択したフィードを削除しますか?({count})",
"dialog.delete_selected_articles": "選択した記事を削除しますか?({count})",
"dialog.delete_all_articles": "「{name}」のすべての記事を削除しますか?",
"dialog.clear_offline": "オフラインデータをすべて削除しますか?この操作は元に戻せません。",
"dialog.translation_exists": "「{text}」はすでに訳語として登録されているようです。それでも挿入しますか?",
"dialog.records_affected": "対象レコード数: {count}",
"dialog.all_records_warning": "現在のクエリの全ページにあるすべてのレコードが対象です。",
"dialog.delete_table_set": "テーブルセット「{name}」を削除しますか?すべてのデータが失われます。"
}
16 changes: 15 additions & 1 deletion locale/pt/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,5 +49,19 @@
"dialog.discard_title": "Descartar as alterações?",
"dialog.discard_message": "As alterações neste termo não foram guardadas.",
"dialog.discard": "Descartar",
"dialog.keep_editing": "Continuar a editar"
"dialog.keep_editing": "Continuar a editar",
"dialog.confirm": "Confirmar",
"dialog.are_you_sure": "Tem a certeza?",
"dialog.delete_term": "Eliminar este termo?",
"dialog.mark_all_known": "Marcar todas as palavras desconhecidas como bem conhecidas?",
"dialog.mark_all_ignored": "Marcar todas as palavras desconhecidas como ignoradas?",
"dialog.delete_feed": "Eliminar o feed «{name}»?",
"dialog.delete_selected_feeds": "Eliminar os feeds selecionados? ({count})",
"dialog.delete_selected_articles": "Eliminar os artigos selecionados? ({count})",
"dialog.delete_all_articles": "Eliminar todos os artigos de «{name}»?",
"dialog.clear_offline": "Remover todos os dados offline? Esta ação não pode ser anulada.",
"dialog.translation_exists": "«{text}» já parece ser uma tradução. Inserir mesmo assim?",
"dialog.records_affected": "Registos afetados: {count}",
"dialog.all_records_warning": "Isto aplica-se a todos os registos de todas as páginas da consulta atual.",
"dialog.delete_table_set": "Eliminar o conjunto de tabelas «{name}»? Todos os seus dados serão perdidos."
}
16 changes: 15 additions & 1 deletion locale/ru/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,5 +49,19 @@
"dialog.discard_title": "Отменить изменения?",
"dialog.discard_message": "Изменения этого термина не сохранены.",
"dialog.discard": "Отменить изменения",
"dialog.keep_editing": "Продолжить редактирование"
"dialog.keep_editing": "Продолжить редактирование",
"dialog.confirm": "Подтвердить",
"dialog.are_you_sure": "Вы уверены?",
"dialog.delete_term": "Удалить этот термин?",
"dialog.mark_all_known": "Отметить все неизвестные слова как хорошо известные?",
"dialog.mark_all_ignored": "Отметить все неизвестные слова как игнорируемые?",
"dialog.delete_feed": "Удалить ленту «{name}»?",
"dialog.delete_selected_feeds": "Удалить выбранные ленты? ({count})",
"dialog.delete_selected_articles": "Удалить выбранные статьи? ({count})",
"dialog.delete_all_articles": "Удалить все статьи из «{name}»?",
"dialog.clear_offline": "Удалить все офлайн-данные? Это действие нельзя отменить.",
"dialog.translation_exists": "«{text}», похоже, уже есть среди переводов. Всё равно добавить?",
"dialog.records_affected": "Затронуто записей: {count}",
"dialog.all_records_warning": "Это относится ко всем записям на всех страницах текущего запроса.",
"dialog.delete_table_set": "Удалить набор таблиц «{name}»? Все его данные будут потеряны."
}
16 changes: 15 additions & 1 deletion locale/zh/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,5 +49,19 @@
"dialog.discard_title": "放弃更改?",
"dialog.discard_message": "您对此词条的更改尚未保存。",
"dialog.discard": "放弃",
"dialog.keep_editing": "继续编辑"
"dialog.keep_editing": "继续编辑",
"dialog.confirm": "确认",
"dialog.are_you_sure": "确定吗?",
"dialog.delete_term": "删除此词条?",
"dialog.mark_all_known": "将所有未知单词标记为熟知?",
"dialog.mark_all_ignored": "将所有未知单词标记为已忽略?",
"dialog.delete_feed": "删除订阅源“{name}”?",
"dialog.delete_selected_feeds": "删除所选订阅源?({count})",
"dialog.delete_selected_articles": "删除所选文章?({count})",
"dialog.delete_all_articles": "删除“{name}”中的所有文章?",
"dialog.clear_offline": "删除所有离线数据?此操作无法撤销。",
"dialog.translation_exists": "“{text}”似乎已是一个译文。仍要插入吗?",
"dialog.records_affected": "受影响的记录:{count}",
"dialog.all_records_warning": "此操作适用于当前查询所有页面上的全部记录。",
"dialog.delete_table_set": "删除表集“{name}”?其所有数据都将丢失。"
}
2 changes: 1 addition & 1 deletion src/Modules/Text/Views/print_alpine.php
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,7 @@
<span class="ms-1">Edit</span>
</button>
<button type="button" class="button is-danger is-outlined"
@click="confirmDeleteAnnotation(<?php echo $textId; ?>, 'Are you sure?')">
@click="confirmDeleteAnnotation(<?php echo $textId; ?>)">
<?php echo IconHelper::render('trash-2', ['size' => 16]); ?>
<span class="ms-1">Delete</span>
</button>
Expand Down
4 changes: 4 additions & 0 deletions src/frontend/css/base/styles.css
Original file line number Diff line number Diff line change
Expand Up @@ -3370,6 +3370,10 @@ Searchable Select Component (Alpine.js)
width: calc(100% - 2rem);
}

#confirm-dialog-message {
white-space: pre-line;
}

.confirm-dialog__actions {
gap: 0.5rem;
justify-content: flex-end;
Expand Down
Loading
Loading