feat: download one contact as vcard (#6747)
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
namespace App\Domains\Contact\ManageContact\Web\Controllers;
|
||||
|
||||
use App\Domains\Contact\Dav\Services\ExportVCard;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Contact;
|
||||
use App\Models\Vault;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\App;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Redirect;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class ContactVCardController extends Controller
|
||||
{
|
||||
public function download(Request $request, Vault $vault, Contact $contact)
|
||||
{
|
||||
$cardData = $this->exportVCard($vault->id, $contact->id);
|
||||
$name = Str::of($contact->name)->slug(language: App::getLocale());
|
||||
|
||||
return Redirect::back()->with('flash', [
|
||||
'data' => $cardData,
|
||||
'filename' => "$name.vcf",
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the new exported version of the object.
|
||||
*/
|
||||
protected function exportVCard(string $vaultId, string $contactId): string
|
||||
{
|
||||
$vcard = app(ExportVCard::class)->execute([
|
||||
'account_id' => Auth::user()->account_id,
|
||||
'author_id' => Auth::id(),
|
||||
'vault_id' => $vaultId,
|
||||
'contact_id' => $contactId,
|
||||
]);
|
||||
|
||||
return $vcard->serialize();
|
||||
}
|
||||
}
|
||||
@@ -88,6 +88,10 @@ class ContactShowViewHelper
|
||||
'vault' => $contact->vault_id,
|
||||
'contact' => $contact->id,
|
||||
]),
|
||||
'download_vcard' => route('contact.vcard.download', [
|
||||
'vault' => $contact->vault,
|
||||
'contact' => $contact,
|
||||
]),
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
+2
-1
@@ -380,6 +380,7 @@
|
||||
"Dog": "কুকুর",
|
||||
"Done.": "সম্পন্ন.",
|
||||
"Download": "ডাউনলোড করুন",
|
||||
"Download as vCard": "vCard হিসেবে ডাউনলোড করুন",
|
||||
"Drank": "পান",
|
||||
"Drove": "চালান",
|
||||
"Due and upcoming tasks": "প্রাপ্য এবং আসন্ন কাজ",
|
||||
@@ -638,8 +639,8 @@
|
||||
"New Password": "নতুন পাসওয়ার্ড",
|
||||
"New to Monica?": "মনিকা নতুন?",
|
||||
"Next": "পরবর্তী",
|
||||
"Nickname": "ডাকনাম",
|
||||
"nickname": "ডাকনাম",
|
||||
"Nickname": "ডাকনাম",
|
||||
"No cities have been added yet in any contact’s addresses.": "কোনো পরিচিতির ঠিকানায় এখনো কোনো শহর যোগ করা হয়নি।",
|
||||
"No contacts found.": "কোন পরিচিতি পাওয়া যায়নি.",
|
||||
"No countries have been added yet in any contact’s addresses.": "কোনো পরিচিতির ঠিকানায় এখনো কোনো দেশ যোগ করা হয়নি।",
|
||||
|
||||
+2
-1
@@ -380,6 +380,7 @@
|
||||
"Dog": "gos",
|
||||
"Done.": "Fet.",
|
||||
"Download": "descarregar",
|
||||
"Download as vCard": "Descarrega com a vCard",
|
||||
"Drank": "Bevia",
|
||||
"Drove": "Va conduir",
|
||||
"Due and upcoming tasks": "Tasques pendents i properes",
|
||||
@@ -638,8 +639,8 @@
|
||||
"New Password": "nova contrasenya",
|
||||
"New to Monica?": "Nou a la Mònica?",
|
||||
"Next": "Pròxim",
|
||||
"Nickname": "Pseudònim",
|
||||
"nickname": "sobrenom",
|
||||
"Nickname": "Pseudònim",
|
||||
"No cities have been added yet in any contact’s addresses.": "Encara no s'ha afegit cap ciutat a les adreces de cap contacte.",
|
||||
"No contacts found.": "No s'han trobat contactes.",
|
||||
"No countries have been added yet in any contact’s addresses.": "Encara no s'ha afegit cap país a les adreces de cap contacte.",
|
||||
|
||||
+2
-1
@@ -380,6 +380,7 @@
|
||||
"Dog": "Hund",
|
||||
"Done.": "Færdig.",
|
||||
"Download": "Hent",
|
||||
"Download as vCard": "Download som vCard",
|
||||
"Drank": "Drak",
|
||||
"Drove": "Kørte",
|
||||
"Due and upcoming tasks": "Forfaldne og kommende opgaver",
|
||||
@@ -638,8 +639,8 @@
|
||||
"New Password": "nyt kodeord",
|
||||
"New to Monica?": "Ny for Monica?",
|
||||
"Next": "Næste",
|
||||
"Nickname": "Kaldenavn",
|
||||
"nickname": "kaldenavn",
|
||||
"Nickname": "Kaldenavn",
|
||||
"No cities have been added yet in any contact’s addresses.": "Ingen byer er blevet tilføjet endnu i nogen kontakts adresser.",
|
||||
"No contacts found.": "Ingen kontakter fundet.",
|
||||
"No countries have been added yet in any contact’s addresses.": "Ingen lande er blevet tilføjet endnu i nogen kontakts adresser.",
|
||||
|
||||
+2
-1
@@ -380,6 +380,7 @@
|
||||
"Dog": "Hund",
|
||||
"Done.": "Erledigt.",
|
||||
"Download": "Herunterladen",
|
||||
"Download as vCard": "Als vCard herunterladen",
|
||||
"Drank": "Getrunken",
|
||||
"Drove": "Gefahren",
|
||||
"Due and upcoming tasks": "Fällige und anstehende Aufgaben",
|
||||
@@ -638,8 +639,8 @@
|
||||
"New Password": "Neues Passwort",
|
||||
"New to Monica?": "Neu bei Monica?",
|
||||
"Next": "Nächster",
|
||||
"Nickname": "Spitzname",
|
||||
"nickname": "Spitzname",
|
||||
"Nickname": "Spitzname",
|
||||
"No cities have been added yet in any contact’s addresses.": "In den Adressen Ihrer Kontakte wurden noch keine Städte hinzugefügt.",
|
||||
"No contacts found.": "Keine Kontakte gefunden.",
|
||||
"No countries have been added yet in any contact’s addresses.": "In den Adressen Ihrer Kontakte wurden noch keine Länder hinzugefügt.",
|
||||
|
||||
+2
-1
@@ -380,6 +380,7 @@
|
||||
"Dog": "Σκύλος",
|
||||
"Done.": "Εγινε.",
|
||||
"Download": "Κατεβάστε",
|
||||
"Download as vCard": "Λήψη ως vCard",
|
||||
"Drank": "Ήπιε",
|
||||
"Drove": "Οδήγησε",
|
||||
"Due and upcoming tasks": "Προβλεπόμενες και επερχόμενες εργασίες",
|
||||
@@ -638,8 +639,8 @@
|
||||
"New Password": "Νέος Κωδικός",
|
||||
"New to Monica?": "Νέος στη Μόνικα;",
|
||||
"Next": "Επόμενο",
|
||||
"Nickname": "Παρατσούκλι",
|
||||
"nickname": "παρατσούκλι",
|
||||
"Nickname": "Παρατσούκλι",
|
||||
"No cities have been added yet in any contact’s addresses.": "Δεν έχουν προστεθεί ακόμη πόλεις στις διευθύνσεις οποιασδήποτε επαφής.",
|
||||
"No contacts found.": "Δεν βρέθηκαν επαφές.",
|
||||
"No countries have been added yet in any contact’s addresses.": "Δεν έχουν προστεθεί ακόμη χώρες στις διευθύνσεις οποιασδήποτε επαφής.",
|
||||
|
||||
+2
-1
@@ -380,6 +380,7 @@
|
||||
"Dog": "Perro",
|
||||
"Done.": "Hecho.",
|
||||
"Download": "Descargar",
|
||||
"Download as vCard": "Descargar como vCard",
|
||||
"Drank": "Bebió",
|
||||
"Drove": "Condujo",
|
||||
"Due and upcoming tasks": "Tareas pendientes y próximas",
|
||||
@@ -638,8 +639,8 @@
|
||||
"New Password": "Nueva Contraseña",
|
||||
"New to Monica?": "¿Nuevo en Monica?",
|
||||
"Next": "Siguiente",
|
||||
"Nickname": "Apodo",
|
||||
"nickname": "Apodo",
|
||||
"Nickname": "Apodo",
|
||||
"No cities have been added yet in any contact’s addresses.": "Todavía no se han agregado ciudades en las direcciones de ningún contacto.",
|
||||
"No contacts found.": "No se encontraron contactos.",
|
||||
"No countries have been added yet in any contact’s addresses.": "Todavía no se han agregado países en las direcciones de ningún contacto.",
|
||||
|
||||
+3
-2
@@ -380,6 +380,7 @@
|
||||
"Dog": "Chien",
|
||||
"Done.": "Terminé.",
|
||||
"Download": "Télécharger",
|
||||
"Download as vCard": "Télécharger en tant que vCard",
|
||||
"Drank": "A bu",
|
||||
"Drove": "A conduit",
|
||||
"Due and upcoming tasks": "Tâches dues et à venir",
|
||||
@@ -638,8 +639,8 @@
|
||||
"New Password": "Nouveau mot de passe",
|
||||
"New to Monica?": "Nouveau sur Monica ?",
|
||||
"Next": "Suivant",
|
||||
"Nickname": "Surnom",
|
||||
"nickname": "surnom",
|
||||
"Nickname": "Surnom",
|
||||
"No cities have been added yet in any contact’s addresses.": "Aucune ville n’a encore été ajoutée dans les adresses d’un contact.",
|
||||
"No contacts found.": "Aucun contact trouvé.",
|
||||
"No countries have been added yet in any contact’s addresses.": "Aucun pays n’a encore été ajouté dans les adresses d’un contact.",
|
||||
@@ -1278,4 +1279,4 @@
|
||||
"😩 Awful": "😩 Horrible",
|
||||
"😶🌫️ Neutral": "😶🌫️ Neutre",
|
||||
"🥳 Awesome": "🥳 Génial"
|
||||
}
|
||||
}
|
||||
+2
-1
@@ -380,6 +380,7 @@
|
||||
"Dog": "כֶּלֶב",
|
||||
"Done.": "בוצע.",
|
||||
"Download": "הורד",
|
||||
"Download as vCard": "הורד כ-vCard",
|
||||
"Drank": "שתה",
|
||||
"Drove": "נסע",
|
||||
"Due and upcoming tasks": "משימות צפויות ובא",
|
||||
@@ -638,8 +639,8 @@
|
||||
"New Password": "סיסמה חדשה",
|
||||
"New to Monica?": "חדש במוניקה?",
|
||||
"Next": "הַבָּא",
|
||||
"Nickname": "כינוי",
|
||||
"nickname": "כינוי",
|
||||
"Nickname": "כינוי",
|
||||
"No cities have been added yet in any contact’s addresses.": "עדיין לא נוספו ערים בכתובות של איש קשר.",
|
||||
"No contacts found.": "לא נמצאו אנשי קשר.",
|
||||
"No countries have been added yet in any contact’s addresses.": "לא נוספו עדיין מדינות בכתובות של איש קשר.",
|
||||
|
||||
+2
-1
@@ -380,6 +380,7 @@
|
||||
"Dog": "कुत्ता",
|
||||
"Done.": "पूर्ण।",
|
||||
"Download": "डाउनलोड करना",
|
||||
"Download as vCard": "vCard के रूप में डाउनलोड करें",
|
||||
"Drank": "पिया",
|
||||
"Drove": "गल्ला",
|
||||
"Due and upcoming tasks": "देय और आगामी कार्य",
|
||||
@@ -638,8 +639,8 @@
|
||||
"New Password": "नया पासवर्ड",
|
||||
"New to Monica?": "मोनिका के लिए नया?",
|
||||
"Next": "अगला",
|
||||
"Nickname": "उपनाम",
|
||||
"nickname": "उपनाम",
|
||||
"Nickname": "उपनाम",
|
||||
"No cities have been added yet in any contact’s addresses.": "किसी भी संपर्क के पतों में अभी तक कोई शहर नहीं जोड़ा गया है।",
|
||||
"No contacts found.": "कोई संपर्क नहीं मिला.",
|
||||
"No countries have been added yet in any contact’s addresses.": "किसी भी संपर्क के पतों में अभी तक कोई देश नहीं जोड़ा गया है।",
|
||||
|
||||
+2
-1
@@ -380,6 +380,7 @@
|
||||
"Dog": "Cani",
|
||||
"Done.": "Fatto.",
|
||||
"Download": "Scarica",
|
||||
"Download as vCard": "Scarica come vCard",
|
||||
"Drank": "Ha bevuto",
|
||||
"Drove": "Ha guidato una macchina",
|
||||
"Due and upcoming tasks": "Compiti in scadenza e futuri",
|
||||
@@ -638,8 +639,8 @@
|
||||
"New Password": "Nuova password",
|
||||
"New to Monica?": "Nuovo su Monica?",
|
||||
"Next": "Prossimo",
|
||||
"Nickname": "Soprannome",
|
||||
"nickname": "soprannome",
|
||||
"Nickname": "Soprannome",
|
||||
"No cities have been added yet in any contact’s addresses.": "Non sono state ancora aggiunte città negli indirizzi di nessun contatto.",
|
||||
"No contacts found.": "Nessun contatto trovato.",
|
||||
"No countries have been added yet in any contact’s addresses.": "Non sono ancora stati aggiunti paesi in nessun indirizzo dei contatti.",
|
||||
|
||||
+2
-1
@@ -380,6 +380,7 @@
|
||||
"Dog": "犬",
|
||||
"Done.": "終わり。",
|
||||
"Download": "ダウンロード",
|
||||
"Download as vCard": "vCard としてダウンロード",
|
||||
"Drank": "飲んだ",
|
||||
"Drove": "運転した",
|
||||
"Due and upcoming tasks": "期日および今後のタスク",
|
||||
@@ -638,8 +639,8 @@
|
||||
"New Password": "新しいパスワード",
|
||||
"New to Monica?": "モニカは初めてですか?",
|
||||
"Next": "次",
|
||||
"Nickname": "ニックネーム",
|
||||
"nickname": "ニックネーム",
|
||||
"Nickname": "ニックネーム",
|
||||
"No cities have been added yet in any contact’s addresses.": "連絡先の住所に都市が追加されていません。",
|
||||
"No contacts found.": "連絡先が見つかりません。",
|
||||
"No countries have been added yet in any contact’s addresses.": "どの連絡先の住所にも国が追加されていません。",
|
||||
|
||||
+2
-1
@@ -380,6 +380,7 @@
|
||||
"Dog": "നായ",
|
||||
"Done.": "ചെയ്തു.",
|
||||
"Download": "ഡൗൺലോഡ്",
|
||||
"Download as vCard": "vCard ആയി ഡൗൺലോഡ് ചെയ്യുക",
|
||||
"Drank": "കുടിച്ചു",
|
||||
"Drove": "ഓടിച്ചു",
|
||||
"Due and upcoming tasks": "വരാനിരിക്കുന്നതും വരാനിരിക്കുന്നതുമായ ജോലികൾ",
|
||||
@@ -638,8 +639,8 @@
|
||||
"New Password": "പുതിയ പാസ്വേഡ്",
|
||||
"New to Monica?": "മോണിക്കയിൽ പുതിയത്?",
|
||||
"Next": "അടുത്തത്",
|
||||
"Nickname": "വിളിപ്പേര്",
|
||||
"nickname": "വിളിപ്പേര്",
|
||||
"Nickname": "വിളിപ്പേര്",
|
||||
"No cities have been added yet in any contact’s addresses.": "ഒരു കോൺടാക്റ്റിന്റെയും വിലാസത്തിൽ ഇതുവരെ നഗരങ്ങളൊന്നും ചേർത്തിട്ടില്ല.",
|
||||
"No contacts found.": "കോൺടാക്റ്റുകളൊന്നും കണ്ടെത്തിയില്ല.",
|
||||
"No countries have been added yet in any contact’s addresses.": "ഒരു കോൺടാക്റ്റിന്റെയും വിലാസങ്ങളിൽ ഇതുവരെ രാജ്യങ്ങളൊന്നും ചേർത്തിട്ടില്ല.",
|
||||
|
||||
+2
-1
@@ -380,6 +380,7 @@
|
||||
"Dog": "Hond",
|
||||
"Done.": "Klaar.",
|
||||
"Download": "Downloaden",
|
||||
"Download as vCard": "Downloaden als vCard",
|
||||
"Drank": "Dronken",
|
||||
"Drove": "reed",
|
||||
"Due and upcoming tasks": "Vervallen en aankomende taken",
|
||||
@@ -638,8 +639,8 @@
|
||||
"New Password": "nieuw paswoord",
|
||||
"New to Monica?": "Nieuw bij Monica?",
|
||||
"Next": "Volgende",
|
||||
"Nickname": "Bijnaam",
|
||||
"nickname": "bijnaam",
|
||||
"Nickname": "Bijnaam",
|
||||
"No cities have been added yet in any contact’s addresses.": "Er zijn nog geen steden toegevoegd aan de adressen van een contact.",
|
||||
"No contacts found.": "Geen contacten gevonden.",
|
||||
"No countries have been added yet in any contact’s addresses.": "Er zijn nog geen landen toegevoegd aan de adressen van contactpersonen.",
|
||||
|
||||
+2
-1
@@ -380,6 +380,7 @@
|
||||
"Dog": "Hund",
|
||||
"Done.": "Ferdig.",
|
||||
"Download": "nedlasting",
|
||||
"Download as vCard": "Last ned som vCard",
|
||||
"Drank": "Drakk",
|
||||
"Drove": "Kjørte",
|
||||
"Due and upcoming tasks": "Forfallende og kommende oppgaver",
|
||||
@@ -638,8 +639,8 @@
|
||||
"New Password": "Nytt passord",
|
||||
"New to Monica?": "Ny hos Monica?",
|
||||
"Next": "Neste",
|
||||
"Nickname": "Kallenavn",
|
||||
"nickname": "kallenavn",
|
||||
"Nickname": "Kallenavn",
|
||||
"No cities have been added yet in any contact’s addresses.": "Ingen byer er lagt til i noen kontakts adresser ennå.",
|
||||
"No contacts found.": "Ingen kontakter funnet.",
|
||||
"No countries have been added yet in any contact’s addresses.": "Ingen land er lagt til i noen kontakts adresser ennå.",
|
||||
|
||||
+2
-1
@@ -380,6 +380,7 @@
|
||||
"Dog": "ਕੁੱਤਾ",
|
||||
"Done.": "ਹੋ ਗਿਆ।",
|
||||
"Download": "ਡਾਊਨਲੋਡ ਕਰੋ",
|
||||
"Download as vCard": "vCard ਵਜੋਂ ਡਾਊਨਲੋਡ ਕਰੋ",
|
||||
"Drank": "ਪੀਤਾ",
|
||||
"Drove": "ਚਲਾਇਆ",
|
||||
"Due and upcoming tasks": "ਬਕਾਇਆ ਅਤੇ ਆਉਣ ਵਾਲੇ ਕਾਰਜ",
|
||||
@@ -638,8 +639,8 @@
|
||||
"New Password": "ਨਵਾਂ ਪਾਸਵਰਡ",
|
||||
"New to Monica?": "ਮੋਨਿਕਾ ਲਈ ਨਵੇਂ?",
|
||||
"Next": "ਅਗਲਾ",
|
||||
"Nickname": "ਉਪਨਾਮ",
|
||||
"nickname": "ਉਪਨਾਮ",
|
||||
"Nickname": "ਉਪਨਾਮ",
|
||||
"No cities have been added yet in any contact’s addresses.": "ਕਿਸੇ ਵੀ ਸੰਪਰਕ ਦੇ ਪਤੇ ਵਿੱਚ ਅਜੇ ਤੱਕ ਕੋਈ ਸ਼ਹਿਰ ਸ਼ਾਮਲ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਹੈ।",
|
||||
"No contacts found.": "ਕੋਈ ਸੰਪਰਕ ਨਹੀਂ ਮਿਲੇ।",
|
||||
"No countries have been added yet in any contact’s addresses.": "ਕਿਸੇ ਵੀ ਸੰਪਰਕ ਦੇ ਪਤੇ ਵਿੱਚ ਅਜੇ ਤੱਕ ਕੋਈ ਦੇਸ਼ ਸ਼ਾਮਲ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਹੈ।",
|
||||
|
||||
+2
-1
@@ -380,6 +380,7 @@
|
||||
"Dog": "Pies",
|
||||
"Done.": "Zrobione.",
|
||||
"Download": "Pobierać",
|
||||
"Download as vCard": "Pobierz jako vCard",
|
||||
"Drank": "Pił",
|
||||
"Drove": "Stado",
|
||||
"Due and upcoming tasks": "Terminowe i nadchodzące zadania",
|
||||
@@ -638,8 +639,8 @@
|
||||
"New Password": "nowe hasło",
|
||||
"New to Monica?": "Nowy dla Moniki?",
|
||||
"Next": "Następny",
|
||||
"Nickname": "Przezwisko",
|
||||
"nickname": "przezwisko",
|
||||
"Nickname": "Przezwisko",
|
||||
"No cities have been added yet in any contact’s addresses.": "Żadne miasto nie zostało jeszcze dodane w adresach żadnego kontaktu.",
|
||||
"No contacts found.": "Nie znaleziono kontaktów.",
|
||||
"No countries have been added yet in any contact’s addresses.": "Żadne kraje nie zostały jeszcze dodane w adresach żadnego kontaktu.",
|
||||
|
||||
+2
-1
@@ -380,6 +380,7 @@
|
||||
"Dog": "Cachorro",
|
||||
"Done.": "Realizado.",
|
||||
"Download": "Baixar",
|
||||
"Download as vCard": "Baixar como vCard",
|
||||
"Drank": "Bebi",
|
||||
"Drove": "Dirigiu",
|
||||
"Due and upcoming tasks": "Tarefas a vencer e futuras",
|
||||
@@ -638,8 +639,8 @@
|
||||
"New Password": "Nova Palavra-passe",
|
||||
"New to Monica?": "Novo na Monica?",
|
||||
"Next": "Próximo",
|
||||
"Nickname": "Apelido",
|
||||
"nickname": "apelido",
|
||||
"Nickname": "Apelido",
|
||||
"No cities have been added yet in any contact’s addresses.": "Nenhuma cidade foi adicionada ainda nos endereços dos contatos.",
|
||||
"No contacts found.": "Nenhum contato encontrado.",
|
||||
"No countries have been added yet in any contact’s addresses.": "Nenhum país foi adicionado ainda nos endereços dos contatos.",
|
||||
|
||||
+2
-1
@@ -380,6 +380,7 @@
|
||||
"Dog": "Câine",
|
||||
"Done.": "Terminat.",
|
||||
"Download": "Descarca",
|
||||
"Download as vCard": "Descărcați ca vCard",
|
||||
"Drank": "A băut",
|
||||
"Drove": "A condus",
|
||||
"Due and upcoming tasks": "Sarcini scadente și viitoare",
|
||||
@@ -638,8 +639,8 @@
|
||||
"New Password": "Parolă Nouă",
|
||||
"New to Monica?": "Nou cu Monica?",
|
||||
"Next": "Următorul",
|
||||
"Nickname": "Poreclă",
|
||||
"nickname": "poreclă",
|
||||
"Nickname": "Poreclă",
|
||||
"No cities have been added yet in any contact’s addresses.": "Niciun oraș nu a fost adăugat încă la adresele niciunei persoane de contact.",
|
||||
"No contacts found.": "Nu s-au găsit persoane de contact.",
|
||||
"No countries have been added yet in any contact’s addresses.": "Nicio țară nu a fost adăugată încă la adresele vreunei persoane de contact.",
|
||||
|
||||
+2
-1
@@ -380,6 +380,7 @@
|
||||
"Dog": "Собака",
|
||||
"Done.": "Успешно.",
|
||||
"Download": "Скачать",
|
||||
"Download as vCard": "Скачать как vCard",
|
||||
"Drank": "Выпил",
|
||||
"Drove": "Водил",
|
||||
"Due and upcoming tasks": "Предстоящие задачи",
|
||||
@@ -638,8 +639,8 @@
|
||||
"New Password": "Новый пароль",
|
||||
"New to Monica?": "Новичок в Monica?",
|
||||
"Next": "Следующий",
|
||||
"Nickname": "Прозвище",
|
||||
"nickname": "прозвище",
|
||||
"Nickname": "Прозвище",
|
||||
"No cities have been added yet in any contact’s addresses.": "В адресах контактов еще не указаны города.",
|
||||
"No contacts found.": "Контакты не найдены.",
|
||||
"No countries have been added yet in any contact’s addresses.": "В адресах контакта еще не добавлены страны.",
|
||||
|
||||
+2
-1
@@ -380,6 +380,7 @@
|
||||
"Dog": "Hund",
|
||||
"Done.": "Gjort.",
|
||||
"Download": "Ladda ner",
|
||||
"Download as vCard": "Ladda ner som vCard",
|
||||
"Drank": "Drack",
|
||||
"Drove": "Körde",
|
||||
"Due and upcoming tasks": "Förfallna och kommande uppgifter",
|
||||
@@ -638,8 +639,8 @@
|
||||
"New Password": "nytt lösenord",
|
||||
"New to Monica?": "Ny hos Monica?",
|
||||
"Next": "Nästa",
|
||||
"Nickname": "Smeknamn",
|
||||
"nickname": "smeknamn",
|
||||
"Nickname": "Smeknamn",
|
||||
"No cities have been added yet in any contact’s addresses.": "Inga städer har lagts till ännu i någon kontakts adresser.",
|
||||
"No contacts found.": "Inga kontakter hittades.",
|
||||
"No countries have been added yet in any contact’s addresses.": "Inga länder har lagts till ännu i någon kontakts adresser.",
|
||||
|
||||
+2
-1
@@ -380,6 +380,7 @@
|
||||
"Dog": "కుక్క",
|
||||
"Done.": "పూర్తి.",
|
||||
"Download": "డౌన్లోడ్ చేయండి",
|
||||
"Download as vCard": "vCard వలె డౌన్లోడ్ చేయండి",
|
||||
"Drank": "తాగింది",
|
||||
"Drove": "నడిపారు",
|
||||
"Due and upcoming tasks": "గడువు మరియు రాబోయే పనులు",
|
||||
@@ -638,8 +639,8 @@
|
||||
"New Password": "కొత్త పాస్వర్డ్",
|
||||
"New to Monica?": "మోనికాకు కొత్త?",
|
||||
"Next": "తరువాత",
|
||||
"Nickname": "మారుపేరు",
|
||||
"nickname": "మారుపేరు",
|
||||
"Nickname": "మారుపేరు",
|
||||
"No cities have been added yet in any contact’s addresses.": "ఏ సంప్రదింపు చిరునామాలలో ఇంకా నగరాలు జోడించబడలేదు.",
|
||||
"No contacts found.": "పరిచయాలు ఏవీ కనుగొనబడలేదు.",
|
||||
"No countries have been added yet in any contact’s addresses.": "ఏ సంప్రదింపు చిరునామాలలో ఇంకా దేశాలు జోడించబడలేదు.",
|
||||
|
||||
+2
-1
@@ -380,6 +380,7 @@
|
||||
"Dog": "Köpek",
|
||||
"Done.": "Tamamlamak.",
|
||||
"Download": "İndirmek",
|
||||
"Download as vCard": "vCard olarak indir",
|
||||
"Drank": "içti",
|
||||
"Drove": "Sürdü",
|
||||
"Due and upcoming tasks": "Zamanı gelen ve yaklaşan görevler",
|
||||
@@ -638,8 +639,8 @@
|
||||
"New Password": "Yeni Şifre",
|
||||
"New to Monica?": "Monica'da yeni misiniz?",
|
||||
"Next": "Sonraki",
|
||||
"Nickname": "Takma ad",
|
||||
"nickname": "Takma ad",
|
||||
"Nickname": "Takma ad",
|
||||
"No cities have been added yet in any contact’s addresses.": "Henüz herhangi bir kişinin adresine şehir eklenmemiş.",
|
||||
"No contacts found.": "Kişi bulunamadı.",
|
||||
"No countries have been added yet in any contact’s addresses.": "Henüz herhangi bir kişinin adresine ülke eklenmemiş.",
|
||||
|
||||
+2
-1
@@ -380,6 +380,7 @@
|
||||
"Dog": "کتا",
|
||||
"Done.": "ہو گیا",
|
||||
"Download": "ڈاؤن لوڈ کریں",
|
||||
"Download as vCard": "vCard کے بطور ڈاؤن لوڈ کریں۔",
|
||||
"Drank": "پیا۔",
|
||||
"Drove": "چلایا",
|
||||
"Due and upcoming tasks": "واجب الادا اور آنے والے کام",
|
||||
@@ -638,8 +639,8 @@
|
||||
"New Password": "نیا پاس ورڈ",
|
||||
"New to Monica?": "مونیکا کے لیے نئے ہیں؟",
|
||||
"Next": "اگلے",
|
||||
"Nickname": "عرفی نام",
|
||||
"nickname": "عرفی نام",
|
||||
"Nickname": "عرفی نام",
|
||||
"No cities have been added yet in any contact’s addresses.": "کسی بھی رابطے کے پتے میں ابھی تک کوئی شہر شامل نہیں کیا گیا ہے۔",
|
||||
"No contacts found.": "کوئی رابطے نہیں ملے۔",
|
||||
"No countries have been added yet in any contact’s addresses.": "کسی بھی رابطے کے پتے میں ابھی تک کوئی ملک شامل نہیں کیا گیا ہے۔",
|
||||
|
||||
+2
-1
@@ -380,6 +380,7 @@
|
||||
"Dog": "Chó",
|
||||
"Done.": "Xong.",
|
||||
"Download": "Tải xuống",
|
||||
"Download as vCard": "Tải xuống dưới dạng vCard",
|
||||
"Drank": "Uống",
|
||||
"Drove": "Lái",
|
||||
"Due and upcoming tasks": "Nhiệm vụ đến hạn và sắp tới",
|
||||
@@ -638,8 +639,8 @@
|
||||
"New Password": "mật khẩu mới",
|
||||
"New to Monica?": "Mới đến với Monica?",
|
||||
"Next": "Kế tiếp",
|
||||
"Nickname": "Tên nick",
|
||||
"nickname": "tên nick",
|
||||
"Nickname": "Tên nick",
|
||||
"No cities have been added yet in any contact’s addresses.": "Chưa có thành phố nào được thêm vào bất kỳ địa chỉ liên hệ nào.",
|
||||
"No contacts found.": "Không tìm thấy liên hệ nào.",
|
||||
"No countries have been added yet in any contact’s addresses.": "Chưa có quốc gia nào được thêm vào bất kỳ địa chỉ liên hệ nào.",
|
||||
|
||||
+2
-1
@@ -380,6 +380,7 @@
|
||||
"Dog": "狗",
|
||||
"Done.": "完毕。",
|
||||
"Download": "下载",
|
||||
"Download as vCard": "下载为 vCard",
|
||||
"Drank": "喝了",
|
||||
"Drove": "开车",
|
||||
"Due and upcoming tasks": "到期和即将完成的任务",
|
||||
@@ -638,8 +639,8 @@
|
||||
"New Password": "新密码",
|
||||
"New to Monica?": "莫妮卡的新手?",
|
||||
"Next": "下一个",
|
||||
"Nickname": "昵称",
|
||||
"nickname": "昵称",
|
||||
"Nickname": "昵称",
|
||||
"No cities have been added yet in any contact’s addresses.": "尚未在任何联系人的地址中添加任何城市。",
|
||||
"No contacts found.": "找不到联系人。",
|
||||
"No countries have been added yet in any contact’s addresses.": "尚未在任何联系人的地址中添加任何国家\/地区。",
|
||||
|
||||
@@ -130,6 +130,27 @@ const destroyAvatar = () => {
|
||||
form.errors = error.response.data;
|
||||
});
|
||||
};
|
||||
|
||||
const download = () => {
|
||||
router.post(props.data.url.download_vcard, null, {
|
||||
preserveScroll: true,
|
||||
onSuccess: (response) => {
|
||||
const filename = response.props.jetstream.flash.filename;
|
||||
if (filename !== undefined) {
|
||||
const url = window.URL.createObjectURL(new Blob([response.props.jetstream.flash.data]));
|
||||
const link = document.createElement('a');
|
||||
link.href = url;
|
||||
link.setAttribute('download', filename);
|
||||
try {
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
} catch (e) {
|
||||
document.body.removeChild(link);
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
};
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -242,6 +263,12 @@ const destroyAvatar = () => {
|
||||
{{ $t('Move contact') }}
|
||||
</Link>
|
||||
</li>
|
||||
<!-- download as vcard -->
|
||||
<li class="mb-2">
|
||||
<Link @click.prevent="download()" class="cursor-pointer text-blue-500 hover:underline">
|
||||
{{ $t('Download as vCard') }}
|
||||
</Link>
|
||||
</li>
|
||||
<!-- delete contact -->
|
||||
<li v-if="data.options.can_be_deleted">
|
||||
<span class="cursor-pointer text-blue-500 hover:underline" @click="deletingContact = true">
|
||||
|
||||
+14
-10
@@ -11,6 +11,7 @@ use App\Domains\Contact\ManageContact\Web\Controllers\ContactNoTemplateControlle
|
||||
use App\Domains\Contact\ManageContact\Web\Controllers\ContactPageController;
|
||||
use App\Domains\Contact\ManageContact\Web\Controllers\ContactSortController;
|
||||
use App\Domains\Contact\ManageContact\Web\Controllers\ContactTemplateController;
|
||||
use App\Domains\Contact\ManageContact\Web\Controllers\ContactVCardController;
|
||||
use App\Domains\Contact\ManageContactAddresses\Web\Controllers\ContactModuleAddressController;
|
||||
use App\Domains\Contact\ManageContactAddresses\Web\Controllers\ContactModuleAddressImageController;
|
||||
use App\Domains\Contact\ManageContactFeed\Web\Controllers\ContactFeedController;
|
||||
@@ -141,6 +142,7 @@ use App\Domains\Vault\Search\Web\Controllers\VaultSearchController;
|
||||
use App\Http\Controllers\Auth\AcceptInvitationController;
|
||||
use App\Http\Controllers\Auth\SocialiteCallbackController;
|
||||
use App\Http\Controllers\Profile\UserTokenController;
|
||||
use App\Http\Middleware\HandleInertiaRequests;
|
||||
use App\Providers\RouteServiceProvider;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Redirect;
|
||||
@@ -245,24 +247,26 @@ Route::middleware([
|
||||
Route::middleware('can:contact-owner,vault,contact')->prefix('{contact}')->group(function () {
|
||||
// general page information
|
||||
Route::get('', [ContactController::class, 'show'])->name('contact.show');
|
||||
Route::get('/edit', [ContactController::class, 'edit'])->name('contact.edit');
|
||||
Route::get('edit', [ContactController::class, 'edit'])->name('contact.edit');
|
||||
Route::post('', [ContactController::class, 'update'])->name('contact.update');
|
||||
Route::delete('', [ContactController::class, 'destroy'])->name('contact.destroy');
|
||||
|
||||
Route::post('vcard', [ContactVCardController::class, 'download'])->name('contact.vcard.download')->withoutMiddleware([HandleInertiaRequests::class]);
|
||||
|
||||
// quick facts
|
||||
Route::get('/quickFacts/{template}', [ContactQuickFactController::class, 'show'])->name('contact.quick_fact.show');
|
||||
Route::post('/quickFacts/{template}', [ContactQuickFactController::class, 'store'])->name('contact.quick_fact.store');
|
||||
Route::put('/quickFacts/toggle', [ContactQuickFactToggleController::class, 'update'])->name('contact.quick_fact.toggle');
|
||||
Route::put('/quickFacts/{template}/{quickFact}', [ContactQuickFactController::class, 'update'])->name('contact.quick_fact.update');
|
||||
Route::delete('/quickFacts/{template}/{quickFact}', [ContactQuickFactController::class, 'destroy'])->name('contact.quick_fact.destroy');
|
||||
Route::get('quickFacts/{template}', [ContactQuickFactController::class, 'show'])->name('contact.quick_fact.show');
|
||||
Route::post('quickFacts/{template}', [ContactQuickFactController::class, 'store'])->name('contact.quick_fact.store');
|
||||
Route::put('quickFacts/toggle', [ContactQuickFactToggleController::class, 'update'])->name('contact.quick_fact.toggle');
|
||||
Route::put('quickFacts/{template}/{quickFact}', [ContactQuickFactController::class, 'update'])->name('contact.quick_fact.update');
|
||||
Route::delete('quickFacts/{template}/{quickFact}', [ContactQuickFactController::class, 'destroy'])->name('contact.quick_fact.destroy');
|
||||
|
||||
// toggle archive/favorite
|
||||
Route::put('/toggle', [ContactArchiveController::class, 'update'])->name('contact.archive.update');
|
||||
Route::put('/toggle-favorite', [ContactFavoriteController::class, 'update'])->name('contact.favorite.update');
|
||||
Route::put('toggle', [ContactArchiveController::class, 'update'])->name('contact.archive.update');
|
||||
Route::put('toggle-favorite', [ContactFavoriteController::class, 'update'])->name('contact.favorite.update');
|
||||
|
||||
// move contact to another vault
|
||||
Route::get('/move', [ContactMoveController::class, 'show'])->name('contact.move.show');
|
||||
Route::post('/move', [ContactMoveController::class, 'store'])->name('contact.move.store');
|
||||
Route::get('move', [ContactMoveController::class, 'show'])->name('contact.move.show');
|
||||
Route::post('move', [ContactMoveController::class, 'store'])->name('contact.move.store');
|
||||
|
||||
// template
|
||||
Route::get('update-template', [ContactNoTemplateController::class, 'show'])->name('contact.blank');
|
||||
|
||||
@@ -88,6 +88,7 @@ class ContactShowViewHelperTest extends TestCase
|
||||
'update_avatar' => env('APP_URL').'/vaults/'.$contact->vault->id.'/contacts/'.$contact->id.'/avatar',
|
||||
'move_contact' => env('APP_URL').'/vaults/'.$contact->vault->id.'/contacts/'.$contact->id.'/move',
|
||||
'destroy_avatar' => env('APP_URL').'/vaults/'.$contact->vault->id.'/contacts/'.$contact->id.'/avatar',
|
||||
'download_vcard' => env('APP_URL').'/vaults/'.$contact->vault->id.'/contacts/'.$contact->id.'/vcard',
|
||||
],
|
||||
$array['url']
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user