Skip to content
Open
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
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added

- Added support for touch-swipe and mouse-wheel gestures on the search engine icon to switch search engines when they are hidden ([@prem-k-r](https://github.com/prem-k-r)) ([#145](https://github.com/prem-k-r/MaterialYouNewTab/pull/145))
- Added WebDAV backup and restore support, including manual cloud backup and restore for MYNT settings.

### Improved

Expand Down
57 changes: 54 additions & 3 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
<script defer src="scripts/todo-list.js"></script>
<script defer src="scripts/google-apps.js"></script>
<script defer src="scripts/voice-search.js"></script>
<script defer src="scripts/snapshot-service.js"></script>
<script defer src="scripts/backup-restore.js"></script>

<!-- LANGUAGES SCRIPTS -->
Expand Down Expand Up @@ -1829,7 +1830,6 @@ <h1>Material You New Tab</h1>
<!-- end of languageSelector -->
</div>

<!-- Settings -->
<div class="backupRestoreContainer">
<button class="backupRestoreBtn" id="backupBtn">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"
Expand All @@ -1849,7 +1849,6 @@ <h1>Material You New Tab</h1>
<span id="restoreText">Restore</span>
</button>
</div>

<input type="file" id="fileInput" accept=".json" style="display: none;">

<button class="resetbtn" id="resetsettings">Reset Settings</button>
Expand All @@ -1858,6 +1857,58 @@ <h1>Material You New Tab</h1>
</div>
</div>

<div class="section expanded">
<div class="sectionOuter">
<div class="sectionHeader" role="button">
<span class="sectionTitle" id="cloudBackupSectionTitle">Cloud Backup</span>
<span class="sectionChevron"></span>
</div>

<div class="sectionInner">
<div class="backupModuleSection">
<div id="webdavBackupPanel" class="webdavSettingsSection">
<div class="webdavSettingsTitle" id="webdavTitle">WebDAV Sync</div>
<input type="url" id="webdavUrlInput" class="webdavInput"
placeholder="https://example.com/remote.php/dav/files/username/backups">
<input type="text" id="webdavUsernameInput" class="webdavInput"
placeholder="Username (optional)">
<input type="password" id="webdavPasswordInput" class="webdavInput"
placeholder="Password or app password (optional)">
<div class="backupRestoreContainer webdavActionContainer">
<button class="backupRestoreBtn" id="webdavBackupBtn">
<span id="webdavBackupText">Backup to WebDAV</span>
</button>
<button class="backupRestoreBtn" id="webdavRestoreBtn">
<span id="webdavRestoreText">Restore Latest</span>
</button>
</div>
</div>

<div class="cloudBackupSharedPanel">
<div class="webdavAutoRow">
<div class="webdavAutoCard">
<div class="texts">
<div class="bigText" id="cloudAutoBackupText">Enable automatic backup</div>
<div class="infoText" id="cloudAutoBackupHint">Back up settings to WebDAV on a schedule</div>
</div>
<label class="switch" for="cloudAutoBackupCheckbox">
<input type="checkbox" id="cloudAutoBackupCheckbox">
<span class="toggle"></span>
</label>
</div>
<label class="webdavIntervalField" for="cloudIntervalInput">
<span class="webdavIntervalLabel" id="cloudIntervalUnitLabel">Hours</span>
<input type="number" id="cloudIntervalInput" class="webdavInput webdavIntervalInput"
min="1" step="1" placeholder="24">
</label>
</div>
<button type="button" class="resetbtn backupConfigSaveBtn" id="saveBackupConfigBtn">Save Backup Config</button>
</div>
</div>
</div>
</div>
</div>

<!-- ----------Tips---------- -->
<div class="tips" id="tips">
<div class="ttcont">
Expand Down Expand Up @@ -1954,4 +2005,4 @@ <h1>Material You New Tab</h1>

</body>

</html>
</html>
24 changes: 22 additions & 2 deletions locales/ar_SA.js
Original file line number Diff line number Diff line change
Expand Up @@ -225,5 +225,25 @@ const ar_SA = {
invalidBackup: "تم اختيار ملف نسخ احتياطي غير صالح.",
deleteBookmark: 'هل أنت متأكد أنك تريد حذف الإشارة المرجعية "{title}"؟',
UnsupportedBrowser: "الإشارات المرجعية غير مدعومة في متصفحك.",
resetShortcutsPrompt: "سيتم حذف جميع الاختصارات المحفوظة وإعادتها إلى الإعدادات الافتراضية. هل تريد المتابعة؟"
};
resetShortcutsPrompt: "سيتم حذف جميع الاختصارات المحفوظة وإعادتها إلى الإعدادات الافتراضية. هل تريد المتابعة؟",
"cloudBackupSectionTitle": "نسخ احتياطي سحابي",
"webdavTitle": "مزامنة WebDAV",
"webdavBackupText": "نسخ احتياطي إلى WebDAV",
"webdavRestoreText": "استعادة الأحدث",
"webdavUrlPlaceholder": "https://example.com/remote.php/dav/files/username/backups",
"cloudPrefixPlaceholder": "MYNT_Backup",
"webdavUsernamePlaceholder": "اسم المستخدم (اختياري)",
"webdavPasswordPlaceholder": "كلمة المرور أو كلمة مرور التطبيق (اختياري)",
"cloudAutoBackupText": "تفعيل النسخ الاحتياطي التلقائي",
"cloudIntervalPlaceholder": "ساعات",
"cloudIntervalHours": "ساعات",
"saveBackupConfig": "حفظ إعدادات النسخ الاحتياطي",
"backupConfigSaved": "تم حفظ إعدادات النسخ الاحتياطي.",
"webdavMissingConfig": "يرجى ملء رابط مجلد WebDAV أولاً.",
"webdavPermissionDenied": "لم يتم منح إذن المضيف لهذا الخادم WebDAV.",
"webdavBackupCompleted": "تم رفع النسخة الاحتياطية إلى WebDAV بنجاح!",
"webdavDownloadFailed": "فشل تنزيل النسخة الاحتياطية من WebDAV: ",
"webdavUploadFailed": "فشل رفع النسخة الاحتياطية إلى WebDAV: ",
"webdavRestoreConfirm": "هل تريد استعادة الإعدادات من أحدث نسخة احتياطية على WebDAV؟ سيتم استبدال بياناتك المحلية الحالية.",
"webdavLatestPointerMissing": "لم يتم العثور على سجل لأحدث نسخة احتياطية في مجلد MYNT."
};
22 changes: 21 additions & 1 deletion locales/az.js
Original file line number Diff line number Diff line change
Expand Up @@ -132,4 +132,24 @@ const az = {
// "invalidBackup": "Invalid backup file selected.",
// "deleteBookmark": "Are you sure you want to delete the bookmark \"{title}\"?", // Do not translate {title}
// "UnsupportedBrowser": "Bookmarks are not supported in your browser",
};
"cloudBackupSectionTitle": "Bulud ehtiyat nüsxəsi",
"webdavTitle": "WebDAV sinxronizasiyası",
"webdavBackupText": "WebDAV-a yedəklə",
"webdavRestoreText": "Ən sonuncunu bərpa et",
"webdavUrlPlaceholder": "https://example.com/remote.php/dav/files/username/backups",
"cloudPrefixPlaceholder": "MYNT_Backup",
"webdavUsernamePlaceholder": "İstifadəçi adı (istəyə bağlı)",
"webdavPasswordPlaceholder": "Parol və ya tətbiq parolu (istəyə bağlı)",
"cloudAutoBackupText": "Avtomatik ehtiyat nüsxəni aktiv et",
"cloudIntervalPlaceholder": "Saat",
"cloudIntervalHours": "Saat",
"saveBackupConfig": "Ehtiyat nüsxə ayarlarını saxla",
"backupConfigSaved": "Ehtiyat nüsxə ayarları saxlanıldı.",
"webdavMissingConfig": "Əvvəlcə WebDAV qovluğunun URL-ni doldurun.",
"webdavPermissionDenied": "Bu WebDAV serveri üçün host icazəsi verilmədi.",
"webdavBackupCompleted": "Ehtiyat nüsxə uğurla WebDAV-a yükləndi!",
"webdavDownloadFailed": "WebDAV-dan ehtiyat nüsxəni endirmək alınmadı: ",
"webdavUploadFailed": "Ehtiyat nüsxəni WebDAV-a yükləmək alınmadı: ",
"webdavRestoreConfirm": "Ayarlar ən son WebDAV ehtiyat nüsxəsindən bərpa olunsun? Cari lokal məlumatlarınız üzərinə yazılacaq.",
"webdavLatestPointerMissing": "MYNT qovluğunda ən son ehtiyat nüsxə qeydi tapılmadı."
};
22 changes: 21 additions & 1 deletion locales/bn.js
Original file line number Diff line number Diff line change
Expand Up @@ -210,5 +210,25 @@ const bn = {
"invalidBackup": "অবৈধ ব্যাকআপ ফাইল নির্বাচিত হয়েছে।",
"deleteBookmark": "আপনি কি নিশ্চিত যে আপনি \"{title}\" বুকমার্কটি মুছে ফেলতে চান?",
"UnsupportedBrowser": "আপনার ব্রাউজারে বুকমার্ক সমর্থিত নয়।",
"resetShortcutsPrompt": "সব সংরক্ষিত শর্টকাট মুছে ফেলা হবে এবং ডিফল্ট অবস্থায় পুনরায় সেট করা হবে। আপনি কি চালিয়ে যেতে চান?"
"resetShortcutsPrompt": "সব সংরক্ষিত শর্টকাট মুছে ফেলা হবে এবং ডিফল্ট অবস্থায় পুনরায় সেট করা হবে। আপনি কি চালিয়ে যেতে চান?",
"cloudBackupSectionTitle": "ক্লাউড ব্যাকআপ",
"webdavTitle": "WebDAV সিঙ্ক",
"webdavBackupText": "WebDAV-এ ব্যাকআপ",
"webdavRestoreText": "সর্বশেষ পুনরুদ্ধার করুন",
"webdavUrlPlaceholder": "https://example.com/remote.php/dav/files/username/backups",
"cloudPrefixPlaceholder": "MYNT_Backup",
"webdavUsernamePlaceholder": "ব্যবহারকারীর নাম (ঐচ্ছিক)",
"webdavPasswordPlaceholder": "পাসওয়ার্ড বা অ্যাপ পাসওয়ার্ড (ঐচ্ছিক)",
"cloudAutoBackupText": "স্বয়ংক্রিয় ব্যাকআপ চালু করুন",
"cloudIntervalPlaceholder": "ঘণ্টা",
"cloudIntervalHours": "ঘণ্টা",
"saveBackupConfig": "ব্যাকআপ কনফিগারেশন সংরক্ষণ করুন",
"backupConfigSaved": "ব্যাকআপ কনফিগারেশন সংরক্ষিত হয়েছে।",
"webdavMissingConfig": "আগে WebDAV ফোল্ডারের URL পূরণ করুন।",
"webdavPermissionDenied": "এই WebDAV সার্ভারের জন্য হোস্ট অনুমতি দেওয়া হয়নি।",
"webdavBackupCompleted": "সফলভাবে WebDAV-এ ব্যাকআপ আপলোড হয়েছে!",
"webdavDownloadFailed": "WebDAV থেকে ব্যাকআপ ডাউনলোড করা যায়নি: ",
"webdavUploadFailed": "WebDAV-এ ব্যাকআপ আপলোড করা যায়নি: ",
"webdavRestoreConfirm": "সর্বশেষ WebDAV ব্যাকআপ থেকে সেটিংস পুনরুদ্ধার করবেন? বর্তমান লোকাল ডেটা ওভাররাইট হবে।",
"webdavLatestPointerMissing": "MYNT ফোল্ডারে সর্বশেষ ব্যাকআপের রেকর্ড পাওয়া যায়নি।"
};
20 changes: 20 additions & 0 deletions locales/cs.js
Original file line number Diff line number Diff line change
Expand Up @@ -210,4 +210,24 @@ const cs = {
"deleteBookmark": "Opravdu si přejete smazat záložku „{title}“?",
"UnsupportedBrowser": "Ve vašem prohlížeči nejsou záložky podporované",
"resetShortcutsPrompt": "Budou odstraněny všechny uložené zkratky a následně se obnoví výchozí sada zkratek. Přejete si pokračovat?",
"cloudBackupSectionTitle": "Cloud záloha",
"webdavTitle": "Synchronizace WebDAV",
"webdavBackupText": "Zálohovat do WebDAV",
"webdavRestoreText": "Obnovit nejnovější",
"webdavUrlPlaceholder": "https://example.com/remote.php/dav/files/username/backups",
"cloudPrefixPlaceholder": "MYNT_Backup",
"webdavUsernamePlaceholder": "Uživatelské jméno (volitelné)",
"webdavPasswordPlaceholder": "Heslo nebo heslo aplikace (volitelné)",
"cloudAutoBackupText": "Povolit automatické zálohování",
"cloudIntervalPlaceholder": "Hodiny",
"cloudIntervalHours": "Hodiny",
"saveBackupConfig": "Uložit nastavení zálohy",
"backupConfigSaved": "Nastavení zálohy bylo uloženo.",
"webdavMissingConfig": "Nejprve vyplňte URL složky WebDAV.",
"webdavPermissionDenied": "Pro tento server WebDAV nebylo uděleno oprávnění hostitele.",
"webdavBackupCompleted": "Záloha byla úspěšně nahrána na WebDAV!",
"webdavDownloadFailed": "Stažení zálohy z WebDAV se nezdařilo: ",
"webdavUploadFailed": "Nahrání zálohy na WebDAV se nezdařilo: ",
"webdavRestoreConfirm": "Obnovit nastavení z nejnovější zálohy WebDAV? Vaše aktuální místní data budou přepsána.",
"webdavLatestPointerMissing": "Ve složce MYNT nebyl nalezen záznam o nejnovější záloze."
};
22 changes: 21 additions & 1 deletion locales/de.js
Original file line number Diff line number Diff line change
Expand Up @@ -194,5 +194,25 @@ const de = {
"invalidBackup": "Ungültige Sicherungsdatei ausgewählt.",
"deleteBookmark": "Sind Sie sicher, dass Sie das Lesezeichen „{title}“ löschen wollen?",
"UnsupportedBrowser": "Lesezeichen werden von Ihrem Browser nicht unterstützt.",
"resetShortcutsPrompt": "Alle gespeicherten Verknüpfungen werden gelöscht und auf die Standardwerte zurückgesetzt. Möchten Sie fortfahren?"
"resetShortcutsPrompt": "Alle gespeicherten Verknüpfungen werden gelöscht und auf die Standardwerte zurückgesetzt. Möchten Sie fortfahren?",
"cloudBackupSectionTitle": "Cloud-Backup",
"webdavTitle": "WebDAV-Synchronisierung",
"webdavBackupText": "Auf WebDAV sichern",
"webdavRestoreText": "Neueste Sicherung wiederherstellen",
"webdavUrlPlaceholder": "https://example.com/remote.php/dav/files/username/backups",
"cloudPrefixPlaceholder": "MYNT_Backup",
"webdavUsernamePlaceholder": "Benutzername (optional)",
"webdavPasswordPlaceholder": "Passwort oder App-Passwort (optional)",
"cloudAutoBackupText": "Automatische Sicherung aktivieren",
"cloudIntervalPlaceholder": "Stunden",
"cloudIntervalHours": "Stunden",
"saveBackupConfig": "Backup-Konfiguration speichern",
"backupConfigSaved": "Backup-Konfiguration gespeichert.",
"webdavMissingConfig": "Bitte zuerst die URL des WebDAV-Ordners eingeben.",
"webdavPermissionDenied": "Für diesen WebDAV-Server wurde keine Host-Berechtigung erteilt.",
"webdavBackupCompleted": "Backup erfolgreich zu WebDAV hochgeladen!",
"webdavDownloadFailed": "WebDAV-Backup konnte nicht heruntergeladen werden: ",
"webdavUploadFailed": "WebDAV-Backup konnte nicht hochgeladen werden: ",
"webdavRestoreConfirm": "Einstellungen aus dem neuesten WebDAV-Backup wiederherstellen? Ihre aktuellen lokalen Daten werden überschrieben.",
"webdavLatestPointerMissing": "Im MYNT-Ordner wurde kein Eintrag für das neueste Backup gefunden."
};
22 changes: 21 additions & 1 deletion locales/el.js
Original file line number Diff line number Diff line change
Expand Up @@ -194,5 +194,25 @@ const el = {
"invalidBackup": "Επιλέχθηκε μη έγκυρο αρχείο αντιγράφου ασφαλείας.",
"deleteBookmark": "Είστε βέβαιοι ότι θέλετε να διαγράψετε τον σελιδοδείκτη \"{title}\";",
"UnsupportedBrowser": "Οι σελιδοδείκτες δεν υποστηρίζονται στον περιηγητή σας.",
"resetShortcutsPrompt": "Όλες οι αποθηκευμένες συντομεύσεις θα διαγραφούν και θα επανέλθουν στις προεπιλογές. Θέλετε να συνεχίσετε;"
"resetShortcutsPrompt": "Όλες οι αποθηκευμένες συντομεύσεις θα διαγραφούν και θα επανέλθουν στις προεπιλογές. Θέλετε να συνεχίσετε;",
"cloudBackupSectionTitle": "Αντίγραφο ασφαλείας cloud",
"webdavTitle": "Συγχρονισμός WebDAV",
"webdavBackupText": "Δημιουργία αντιγράφου στο WebDAV",
"webdavRestoreText": "Επαναφορά τελευταίου",
"webdavUrlPlaceholder": "https://example.com/remote.php/dav/files/username/backups",
"cloudPrefixPlaceholder": "MYNT_Backup",
"webdavUsernamePlaceholder": "Όνομα χρήστη (προαιρετικό)",
"webdavPasswordPlaceholder": "Κωδικός ή κωδικός εφαρμογής (προαιρετικό)",
"cloudAutoBackupText": "Ενεργοποίηση αυτόματου αντιγράφου ασφαλείας",
"cloudIntervalPlaceholder": "Ώρες",
"cloudIntervalHours": "Ώρες",
"saveBackupConfig": "Αποθήκευση ρυθμίσεων αντιγράφου ασφαλείας",
"backupConfigSaved": "Οι ρυθμίσεις αντιγράφου ασφαλείας αποθηκεύτηκαν.",
"webdavMissingConfig": "Συμπληρώστε πρώτα το URL του φακέλου WebDAV.",
"webdavPermissionDenied": "Δεν δόθηκε άδεια host για αυτόν τον διακομιστή WebDAV.",
"webdavBackupCompleted": "Το αντίγραφο ασφαλείας μεταφορτώθηκε επιτυχώς στο WebDAV!",
"webdavDownloadFailed": "Αποτυχία λήψης αντιγράφου ασφαλείας από το WebDAV: ",
"webdavUploadFailed": "Αποτυχία μεταφόρτωσης αντιγράφου ασφαλείας στο WebDAV: ",
"webdavRestoreConfirm": "Επαναφορά ρυθμίσεων από το πιο πρόσφατο αντίγραφο ασφαλείας WebDAV; Τα τρέχοντα τοπικά δεδομένα θα αντικατασταθούν.",
"webdavLatestPointerMissing": "Δεν βρέθηκε εγγραφή του πιο πρόσφατου αντιγράφου ασφαλείας στον φάκελο MYNT."
};
Loading