From 80847529fa181c8f26cc63f8c87f774728d0adbe Mon Sep 17 00:00:00 2001 From: Mohit Panjwani Date: Sun, 20 Mar 2022 21:06:58 +0530 Subject: [PATCH 1/5] New Crowdin updates (#833) * New translations en.json (Turkish) * New translations en.json (Turkish) * New translations en.json (Turkish) * New translations en.json (Spanish) * New translations en.json (Indonesian) --- resources/scripts/locales/es.json | 8 +- resources/scripts/locales/id.json | 2 +- resources/scripts/locales/tr.json | 210 +++++++++++++++--------------- 3 files changed, 110 insertions(+), 110 deletions(-) diff --git a/resources/scripts/locales/es.json b/resources/scripts/locales/es.json index 591b2329..da89f8bc 100644 --- a/resources/scripts/locales/es.json +++ b/resources/scripts/locales/es.json @@ -97,9 +97,9 @@ "docs": "Documentación", "do_you_wish_to_continue": "¿Deseas continuar?", "note": "Nota", - "pay_invoice": "Pay Invoice", - "login_successfully": "Logged in successfully!", - "logged_out_successfully": "Logged out successfully", + "pay_invoice": "Pagar factura", + "login_successfully": "Logeado Satisfactoriamente!", + "logged_out_successfully": "Logeado Satisfactoriamente", "mark_as_default": "Mark as default" }, "dashboard": { @@ -210,7 +210,7 @@ "basic_info": "Información básica", "portal_access": "Portal Access", "portal_access_text": "Would you like to allow this customer to login to the Customer Portal?", - "portal_access_url": "Customer Portal Login URL", + "portal_access_url": "Portal URL del cliente", "portal_access_url_help": "Please copy & forward the above given URL to your customer for providing access.", "billing_address": "Dirección de Facturación", "shipping_address": "Dirección de Envío", diff --git a/resources/scripts/locales/id.json b/resources/scripts/locales/id.json index 6560d08d..afe87e4a 100644 --- a/resources/scripts/locales/id.json +++ b/resources/scripts/locales/id.json @@ -12,7 +12,7 @@ "settings": "Pengaturan", "logout": "Keluar", "users": "Pengguna", - "modules": "Modules" + "modules": "Modul" }, "general": { "add_company": "Tambahkan Perusahaan", diff --git a/resources/scripts/locales/tr.json b/resources/scripts/locales/tr.json index 65932a41..369a132f 100644 --- a/resources/scripts/locales/tr.json +++ b/resources/scripts/locales/tr.json @@ -4,7 +4,7 @@ "customers": "Müşteriler", "items": "Ürünler", "invoices": "Faturalar", - "recurring-invoices": "Recurring Invoices", + "recurring-invoices": "Tekrarlayan Faturalar", "expenses": "Harcamalar", "estimates": "Proformalar", "payments": "Ödemeler", @@ -12,7 +12,7 @@ "settings": "Ayarlar", "logout": "Çıkış yap", "users": "Kullanıcılar", - "modules": "Modules" + "modules": "Modüller" }, "general": { "add_company": "Firma ekle", @@ -29,9 +29,9 @@ "to_date": "Bitiş tarihi", "from": "Gönderen", "to": "Alıcı", - "ok": "Ok", - "yes": "Yes", - "no": "No", + "ok": "Tamam", + "yes": "Evet", + "no": "Hayır", "sort_by": "Sıralama ölçütü", "ascending": "Artan", "descending": "Azalan", @@ -39,7 +39,7 @@ "body": "Gövde", "message": "Mesaj", "send": "Gönder", - "preview": "Preview", + "preview": "Ön İzleme", "go_back": "Geri dön", "back_to_login": "Giriş sayfasına dönülsün mü?", "home": "Ana sayfa", @@ -65,7 +65,7 @@ "sent": "Gönderildi", "all": "Tümü", "select_all": "Hepsini Seç", - "select_template": "Select Template", + "select_template": "Şablon Seçin", "choose_file": "Bir dosya seçmek için buraya tıklayın", "choose_template": "Bir şablon seçin", "choose": "Seç", @@ -93,14 +93,14 @@ "no_note_found": "Not Bulunamadı", "insert_note": "Not Ekle", "copied_pdf_url_clipboard": "PDF bağlantısı panoya kopyalandı!", - "copied_url_clipboard": "Copied url to clipboard!", - "docs": "Docs", - "do_you_wish_to_continue": "Do you wish to continue?", - "note": "Note", - "pay_invoice": "Pay Invoice", - "login_successfully": "Logged in successfully!", - "logged_out_successfully": "Logged out successfully", - "mark_as_default": "Mark as default" + "copied_url_clipboard": "URL panoya kopyalandı!", + "docs": "Belgeler", + "do_you_wish_to_continue": "Devam etmek istiyor musunuz?", + "note": "Not", + "pay_invoice": "Fatura ödeme", + "login_successfully": "Başarıyla giriş yapıldı!", + "logged_out_successfully": "Başarıyla çıkış yapıldı", + "mark_as_default": "Varsayılan olarak işaretleyin" }, "dashboard": { "select_year": "Yılı seçin", @@ -109,7 +109,7 @@ "customers": "Müşteriler", "invoices": "Faturalar", "estimates": "Proformalar", - "payments": "Payments" + "payments": "Ödemeler" }, "chart_info": { "total_sales": "Satışlar", @@ -151,27 +151,27 @@ "no_results_found": "Hiçbir sonuç bulunamadı" }, "company_switcher": { - "label": "SWITCH COMPANY", - "no_results_found": "No Results Found", - "add_new_company": "Add new company", - "new_company": "New company", - "created_message": "Company created successfully" + "label": "ŞİRKETİ DEĞİŞTİR", + "no_results_found": "Hiçbir sonuç bulunamadı", + "add_new_company": "Yeni Firma Ekle", + "new_company": "Yeni Şirket", + "created_message": "Firma başarıyla oluşturuldu" }, "dateRange": { - "today": "Today", - "this_week": "This Week", - "this_month": "This Month", - "this_quarter": "This Quarter", - "this_year": "This Year", - "previous_week": "Previous Week", - "previous_month": "Previous Month", - "previous_quarter": "Previous Quarter", - "previous_year": "Previous Year", - "custom": "Custom" + "today": "Bugün", + "this_week": "Bu Hafta", + "this_month": "Bu Ay", + "this_quarter": "Bu Çeyrek Yıl", + "this_year": "Bu Yıl", + "previous_week": "Önceki Hafta", + "previous_month": "Önceki Ay", + "previous_quarter": "Önceki Çeyrek Yıl", + "previous_year": "Önceki Yıl", + "custom": "Özel" }, "customers": { "title": "Müşteriler", - "prefix": "Prefix", + "prefix": "Ön ek", "add_customer": "Müşteri ekle", "contacts_list": "Müşteri listesi", "name": "İsim", @@ -186,9 +186,9 @@ "phone": "Telefon", "website": "Web sitesi", "overview": "Özet", - "invoice_prefix": "Invoice Prefix", - "estimate_prefix": "Estimate Prefix", - "payment_prefix": "Payment Prefix", + "invoice_prefix": "Fatura Öneki", + "estimate_prefix": "Proforma Öneki", + "payment_prefix": "Ödeme öneki", "enable_portal": "Portalı etkinleştir", "country": "Ülke", "state": "İl", @@ -197,7 +197,7 @@ "added_on": "Eklenme tarihi", "action": "Eylem", "password": "Parola", - "confirm_password": "Confirm Password", + "confirm_password": "Parolayı Doğrula", "street_number": "Sokak ve numara", "primary_currency": "Ana para birimi", "description": "Açıklama", @@ -208,10 +208,10 @@ "new_customer": "Yeni müşteri", "edit_customer": "Müşteriyi düzenle", "basic_info": "Temel bilgiler", - "portal_access": "Portal Access", - "portal_access_text": "Would you like to allow this customer to login to the Customer Portal?", - "portal_access_url": "Customer Portal Login URL", - "portal_access_url_help": "Please copy & forward the above given URL to your customer for providing access.", + "portal_access": "Portal Erişimi", + "portal_access_text": "Bu müşterinin Müşteri Portalı'na giriş yapmasına izin vermek ister misiniz?", + "portal_access_url": "Müşteri Portal Giriş URL'si", + "portal_access_url_help": "Erişim sağlamak için lütfen yukarıda verilen URL'yi kopyalayıp müşterinize iletin.", "billing_address": "Fatura Adresi", "shipping_address": "Teslimat Adresi", "copy_billing_address": "Faturadan Kopyala", @@ -231,9 +231,9 @@ "confirm_delete": "Bu müşteri ve ilgili tüm Fatura, Proformalar ve ödemeleri geri getiremeyeceksiniz. | Bu müşteriler ve ilgili tüm Fatura, Proformalar ve ödemeleri geri getiremeyeceksiniz.", "created_message": "Müşteri başarıyla oluşturuldu", "updated_message": "Müşteri başarıyla güncellendi", - "address_updated_message": "Address Information Updated succesfully", + "address_updated_message": "Adres Bilgileri başarıyla güncellendi", "deleted_message": "Müşteri başarıyla silindi | Müşteriler başarıyla silindi", - "edit_currency_not_allowed": "Cannot change currency once transactions created." + "edit_currency_not_allowed": "İşlemler oluşturulduktan sonra para birimi değiştirilemez." }, "items": { "title": "Öğeler", @@ -265,8 +265,8 @@ }, "estimates": { "title": "Proformalar", - "accept_estimate": "Accept Estimate", - "reject_estimate": "Reject Estimate", + "accept_estimate": "Proformayı Onayla", + "reject_estimate": "Proformayı Reddet", "estimate": "Proforma | Proformalar", "estimates_list": "Proforma Listesi", "days": "{days} Günler", @@ -318,10 +318,10 @@ }, "accepted": "Onaylandı", "rejected": "Reddedildi", - "expired": "Expired", + "expired": "Süresi dolmuş", "sent": "Gönderildi", "draft": "Taslak", - "viewed": "Viewed", + "viewed": "Görüldü", "declined": "Reddedildi", "new_estimate": "Yeni proforma", "add_new_estimate": "Yeni proforma ekle", @@ -355,14 +355,14 @@ "select_an_item": "Ürün seçmek için yazın ya da tıklayın", "type_item_description": "Ürün açıklaması ekleyin (isteğe bağlı)" }, - "mark_as_default_estimate_template_description": "If enabled, the selected template will be automatically selected for new estimates." + "mark_as_default_estimate_template_description": "Etkinleştirilirse, seçilen şablon yeni proformalar için otomatik olarak seçilecektir." }, "invoices": { "title": "Faturalar", - "download": "Download", - "pay_invoice": "Pay Invoice", + "download": "İndir", + "pay_invoice": "Fatura Ödeme", "invoices_list": "Fatura Listesi", - "invoice_information": "Invoice Information", + "invoice_information": "Fatura Bilgileri", "days": "{days} Günler", "months": "{months} Ay", "years": "{years} Yıl", @@ -397,13 +397,13 @@ "send_invoice": "Faturayı gönder", "resend_invoice": "Faturayı tekrar gönder", "invoice_template": "Fatura şablonu", - "conversion_message": "Invoice cloned successful", + "conversion_message": "Fatura başarıyla klonlandı", "template": "Şablon", "mark_as_sent": "Gönderildi olarak işaretle", "confirm_send_invoice": "Bu fatura müşteriye e-posta ile gönderilecek", "invoice_mark_as_sent": "Bu fatura gönderildi olarak işaretlenecek", - "confirm_mark_as_accepted": "This invoice will be marked as Accepted", - "confirm_mark_as_rejected": "This invoice will be marked as Rejected", + "confirm_mark_as_accepted": "Bu fatura Kabul edildi olarak işaretlenecek", + "confirm_mark_as_rejected": "Bu fatura Reddedildi olarak işaretlenecek", "confirm_send": "Bu fatura müşteriye e-posta ile gönderilecek", "invoice_date": "Fatura tarihi", "record_payment": "Ödeme ekle", @@ -415,13 +415,13 @@ "update_invoice": "Faturayı güncelle", "add_new_tax": "Yeni vergi ekle", "no_invoices": "Henüz fatura yok!", - "mark_as_rejected": "Mark as rejected", - "mark_as_accepted": "Mark as accepted", + "mark_as_rejected": "Reddedildi olarak işaretle", + "mark_as_accepted": "Kabul edildi olarak işaretle", "list_of_invoices": "Bu bölümde faturaların listesi bulunmaktadır.", "select_invoice": "Faturayı seç", "no_matching_invoices": "Eşleşen fatura yok!", "mark_as_sent_successfully": "Fatura başarıyla gönderildi olarak işaretlendi", - "invoice_sent_successfully": "Invoice sent successfully", + "invoice_sent_successfully": "Fatura başarıyla gönderildi", "cloned_successfully": "Fatura başarıyla klonlandı", "clone_invoice": "Faturayı klonla", "confirm_clone": "Bu fatura yeni bir fatura olarak klonlanacak", @@ -447,40 +447,40 @@ "marked_as_sent_message": "Fatura başarıyla gönderildi olarak işaretlendi", "something_went_wrong": "bir şeyler ters gitti", "invalid_due_amount_message": "Toplam Fatura bedeli bu fatura için olan toplam ödemeden az olamaz. Lütfen devam etmek için faturayı güncelleyin veya ilişkili ödemeyi silin.", - "mark_as_default_invoice_template_description": "If enabled, the selected template will be automatically selected for new invoices." + "mark_as_default_invoice_template_description": "Etkinleştirilirse, seçilen şablon yeni faturalar için otomatik olarak seçilecektir." }, "recurring_invoices": { - "title": "Recurring Invoices", - "invoices_list": "Recurring Invoices List", - "days": "{days} Days", - "months": "{months} Month", - "years": "{years} Year", - "all": "All", - "paid": "Paid", - "unpaid": "Unpaid", - "viewed": "Viewed", - "overdue": "Overdue", - "active": "Active", - "completed": "Completed", - "customer": "CUSTOMER", - "paid_status": "PAID STATUS", + "title": "Tekrarlayan Faturalar", + "invoices_list": "Tekrarlayan Fatura Listesi", + "days": "{days} Günler", + "months": "{months} Ay", + "years": "{years} Yıl", + "all": "Tümü", + "paid": "Ödendi", + "unpaid": "Ödenmedi", + "viewed": "Görüldü", + "overdue": "Vadesi geçmiş", + "active": "Aktif", + "completed": "Tamamlandı", + "customer": "MÜŞTERİ", + "paid_status": "ÖDEME DURUMU", "ref_no": "REF NO.", - "number": "NUMBER", - "amount_due": "AMOUNT DUE", - "partially_paid": "Partially Paid", - "total": "Total", - "discount": "Discount", - "sub_total": "Sub Total", - "invoice": "Recurring Invoice | Recurring Invoices", - "invoice_number": "Recurring Invoice Number", - "next_invoice_date": "Next Invoice Date", - "ref_number": "Ref Number", - "contact": "Contact", - "add_item": "Add an Item", - "date": "Date", - "limit_by": "Limit by", - "limit_date": "Limit Date", - "limit_count": "Limit Count", + "number": "SAYI", + "amount_due": "ALACAK MİKTARI", + "partially_paid": "Kısmen Ödendi", + "total": "Toplam", + "discount": "İskonto", + "sub_total": "Ara Toplam", + "invoice": "Yinelenen Fatura | Yinelenen Faturalar", + "invoice_number": "Yinelenen Fatura Numarası", + "next_invoice_date": "Sonraki Fatura Tarihi", + "ref_number": "Ref. Numarası", + "contact": "İletişim", + "add_item": "Öğe ekle", + "date": "Tarih", + "limit_by": "Şuna göre sınırla", + "limit_date": "Sınır Tarihi", + "limit_count": "Sınır Sayısı", "count": "Count", "status": "Status", "select_a_status": "Select a status", @@ -490,24 +490,24 @@ "add_tax": "Add Tax", "amount": "Amount", "action": "Action", - "notes": "Notes", - "view": "View", - "basic_info": "Basic Info", - "send_invoice": "Send Recurring Invoice", - "auto_send": "Auto Send", - "resend_invoice": "Resend Recurring Invoice", - "invoice_template": "Recurring Invoice Template", - "conversion_message": "Recurring Invoice cloned successful", - "template": "Template", - "mark_as_sent": "Mark as sent", - "confirm_send_invoice": "This recurring invoice will be sent via email to the customer", - "invoice_mark_as_sent": "This recurring invoice will be marked as sent", - "confirm_send": "This recurring invoice will be sent via email to the customer", - "starts_at": "Start Date", - "due_date": "Invoice Due Date", - "record_payment": "Record Payment", - "add_new_invoice": "Add New Recurring Invoice", - "update_expense": "Update Expense", + "notes": "Notlar", + "view": "Görüntüle", + "basic_info": "Temel Bilgiler", + "send_invoice": "Yinelenen Fatura Gönder", + "auto_send": "Otamatik Gönder", + "resend_invoice": "Yinelenen Fatura Gönder", + "invoice_template": "Yinelenen Fatura Şablonu", + "conversion_message": "Yinelenen Fatura başarılı bir şekilde klonlandı", + "template": "Şablon", + "mark_as_sent": "Gönderildi olarak işaretle", + "confirm_send_invoice": "Bu yineleyen fatura müşteriye e-posta ile gönderilecek", + "invoice_mark_as_sent": "Bu yineleyen fatura gönderildi olarak işaretlenecek", + "confirm_send": "Bu yinelenen fatura müşteriye e-posta yoluyla gönderilecektir", + "starts_at": "Başlangıç Tarihi", + "due_date": "Fatura Ödeme Tarihi", + "record_payment": "Ödemeyi Kaydet", + "add_new_invoice": "Yinelenen Yeni Fatura Oluştur", + "update_expense": "Masrafı Güncelle", "edit_invoice": "Edit Recurring Invoice", "new_invoice": "New Recurring Invoice", "send_automatically": "Send Automatically", From 88035ea49082f7053a37ef07bf3587e09d9d22b4 Mon Sep 17 00:00:00 2001 From: theWorstComrade <59704962+theWorstComrade@users.noreply.github.com> Date: Tue, 22 Mar 2022 12:28:55 +0100 Subject: [PATCH 2/5] Expense attachment validation fix (#855) https://huntr.dev/bounties/4d7d4fc9-e0cf-42d3-b89c-6ea57a769045/ --- app/Http/Requests/UploadExpenseReceiptRequest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Requests/UploadExpenseReceiptRequest.php b/app/Http/Requests/UploadExpenseReceiptRequest.php index 5a605e12..2e79e79f 100644 --- a/app/Http/Requests/UploadExpenseReceiptRequest.php +++ b/app/Http/Requests/UploadExpenseReceiptRequest.php @@ -25,7 +25,7 @@ class UploadExpenseReceiptRequest extends FormRequest public function rules() { return [ - 'upload_receipt' => [ + 'attachment_receipt' => [ 'nullable', new Base64Mime(['gif', 'jpg', 'png']) ] From b714833b068383daabd7a80a8008e2172bbcdbdb Mon Sep 17 00:00:00 2001 From: Mohit Panjwani Date: Mon, 28 Mar 2022 13:58:23 +0530 Subject: [PATCH 3/5] New Crowdin updates (#862) * New translations en.json (Russian) * New translations en.json (Russian) * New translations en.json (Dutch) * New translations en.json (Dutch) --- resources/scripts/locales/nl.json | 210 +++++++++++++++--------------- resources/scripts/locales/ru.json | 106 +++++++-------- 2 files changed, 158 insertions(+), 158 deletions(-) diff --git a/resources/scripts/locales/nl.json b/resources/scripts/locales/nl.json index 4ca4583b..d14b281e 100644 --- a/resources/scripts/locales/nl.json +++ b/resources/scripts/locales/nl.json @@ -93,14 +93,14 @@ "no_note_found": "Geen notitie gevonden", "insert_note": "Notitie invoegen", "copied_pdf_url_clipboard": "PDF link naar klembord gekopieerd!", - "copied_url_clipboard": "Copied url to clipboard!", + "copied_url_clipboard": "URL naar klembord gekopieerd!", "docs": "Documenten", "do_you_wish_to_continue": "Wilt u Doorgaan?", "note": "Notitie", - "pay_invoice": "Pay Invoice", - "login_successfully": "Logged in successfully!", - "logged_out_successfully": "Logged out successfully", - "mark_as_default": "Mark as default" + "pay_invoice": "Betaal factuur", + "login_successfully": "Succesvol ingelogd!", + "logged_out_successfully": "Succesvol afgemeld", + "mark_as_default": "Markeren als standaard" }, "dashboard": { "select_year": "Selecteer jaar", @@ -109,7 +109,7 @@ "customers": "Klanten", "invoices": "Facturen", "estimates": "Offertes", - "payments": "Payments" + "payments": "Betalingen" }, "chart_info": { "total_sales": "Verkoop", @@ -208,10 +208,10 @@ "new_customer": "Nieuwe klant", "edit_customer": "Klant bewerken", "basic_info": "Basis informatie", - "portal_access": "Portal Access", - "portal_access_text": "Would you like to allow this customer to login to the Customer Portal?", - "portal_access_url": "Customer Portal Login URL", - "portal_access_url_help": "Please copy & forward the above given URL to your customer for providing access.", + "portal_access": "Portaaltoegang", + "portal_access_text": "Wilt u deze klant toestaan om in te loggen op het Klantenportaal?", + "portal_access_url": "Klantenportaal login URL", + "portal_access_url_help": "Kopieer & stuur de bovenstaande URL door naar uw klant om toegang te geven.", "billing_address": "factuur adres", "shipping_address": "Verzendingsadres", "copy_billing_address": "Kopiëren van facturering", @@ -231,7 +231,7 @@ "confirm_delete": "Deze klant en alle gerelateerde facturen, offertes en betalingen worden permanent verwijderd. | Deze klanten en alle gerelateerde facturen, offertes en betalingen worden permanent verwijderd.", "created_message": "Klant succesvol aangemaakt", "updated_message": "Klant succesvol geüpdatet", - "address_updated_message": "Address Information Updated succesfully", + "address_updated_message": "Adresinformatie succesvol bijgewerkt", "deleted_message": "Klant succesvol verwijderd | Klanten zijn succesvol verwijderd", "edit_currency_not_allowed": "Kan valuta niet wijzigen zodra de transacties zijn aangemaakt." }, @@ -265,8 +265,8 @@ }, "estimates": { "title": "Offertes", - "accept_estimate": "Accept Estimate", - "reject_estimate": "Reject Estimate", + "accept_estimate": "Offerte accepteren", + "reject_estimate": "Offerte afwijzen", "estimate": "Offerte | Offertes", "estimates_list": "Lijst met offertes", "days": "{dagen} dagen", @@ -318,10 +318,10 @@ }, "accepted": "Geaccepteerd", "rejected": "Afgewezen", - "expired": "Expired", + "expired": "Verlopen", "sent": "Verzonden", "draft": "Concept", - "viewed": "Viewed", + "viewed": "Bekeken", "declined": "Geweigerd", "new_estimate": "Nieuwe offerte", "add_new_estimate": "Offerte toevoegen", @@ -355,14 +355,14 @@ "select_an_item": "Typ of klik om een item te selecteren", "type_item_description": "Type Item Beschrijving (optioneel)" }, - "mark_as_default_estimate_template_description": "If enabled, the selected template will be automatically selected for new estimates." + "mark_as_default_estimate_template_description": "Indien ingeschakeld, zal het geselecteerde sjabloon automatisch worden gekozen voor nieuwe offertes." }, "invoices": { "title": "Facturen", "download": "Download", - "pay_invoice": "Pay Invoice", + "pay_invoice": "Betaal factuur", "invoices_list": "Facturenlijst", - "invoice_information": "Invoice Information", + "invoice_information": "Factuurgegevens", "days": "{dagen} dagen", "months": "{months} Maand", "years": "{jaar} jaar", @@ -447,7 +447,7 @@ "marked_as_sent_message": "Factuur gemarkeerd als succesvol verzonden", "something_went_wrong": "Er is iets fout gegaan", "invalid_due_amount_message": "Het totale factuurbedrag mag niet lager zijn dan het totale betaalde bedrag voor deze factuur. Werk de factuur bij of verwijder de bijbehorende betalingen om door te gaan.", - "mark_as_default_invoice_template_description": "If enabled, the selected template will be automatically selected for new invoices." + "mark_as_default_invoice_template_description": "Indien ingeschakeld, zal het geselecteerde sjabloon automatisch worden gekozen voor nieuwe offertes." }, "recurring_invoices": { "title": "Periodieke facturen", @@ -526,7 +526,7 @@ "cloned_successfully": "Terugkerende factuur succesvol gekopieerd", "clone_invoice": "Kopieer periodieke factuur", "confirm_clone": "Deze periodieke factuur wordt gekopieerd naar een nieuwe periodieke factuur", - "add_customer_email": "Please add an email address for this customer to send invoices automatically.", + "add_customer_email": "Voeg een e-mailadres aan deze klant toe, zodat facturen automatisch verzonden kunnen worden.", "item": { "title": "Item titel", "description": "Beschrijving", @@ -658,49 +658,49 @@ "retype_password": "Geef nogmaals het wachtwoord" }, "modules": { - "buy_now": "Buy Now", - "install": "Install", - "price": "Price", - "download_zip_file": "Download ZIP file", - "unzipping_package": "Unzipping Package", - "copying_files": "Copying Files", - "deleting_files": "Deleting Unused files", - "completing_installation": "Completing Installation", - "update_failed": "Update Failed", - "install_success": "Module has been installed successfully!", - "customer_reviews": "Reviews", - "license": "License", - "faq": "FAQ", - "monthly": "Monthly", - "yearly": "Yearly", - "updated": "Updated", - "version": "Version", - "disable": "Disable", - "module_disabled": "Module Disabled", - "enable": "Enable", - "module_enabled": "Module Enabled", - "update_to": "Update To", - "module_updated": "Module Updated Successfully!", + "buy_now": "Nu kopen", + "install": "Installeer", + "price": "Prijs", + "download_zip_file": "Download ZIP-bestand", + "unzipping_package": "Pakket uitpakken", + "copying_files": "Bestanden kopiëren", + "deleting_files": "Ongebruikte bestanden verwijderen", + "completing_installation": "Installatie voltooien", + "update_failed": "Update mislukt", + "install_success": "Module is succesvol geïnstalleerd!", + "customer_reviews": "Beoordelingen", + "license": "Licentie", + "faq": "Veelgestelde vragen", + "monthly": "Maandelijks", + "yearly": "Jaarlijks", + "updated": "Bijgewerkt", + "version": "Versie", + "disable": "Uitschakelen", + "module_disabled": "Module uitgeschakeld", + "enable": "Inschakelen", + "module_enabled": "Module ingeschakeld", + "update_to": "Update naar", + "module_updated": "Module succesvol bijgewerkt!", "title": "Modules", "module": "Module | Modules", - "api_token": "API token", - "invalid_api_token": "Invalid API Token.", - "other_modules": "Other Modules", - "view_all": "View All", - "no_reviews_found": "There are no reviews for this module yet!", - "module_not_purchased": "Module Not Purchased", - "module_not_found": "Module Not Found", + "api_token": "API-token", + "invalid_api_token": "Ongeldig API-token.", + "other_modules": "Andere modules", + "view_all": "Toon alles", + "no_reviews_found": "Er zijn nog geen beoordelingen voor deze module!", + "module_not_purchased": "Module niet gekocht", + "module_not_found": "Module niet gevonden", "version_not_supported": "This module version doesn't support the current version of Crater", - "last_updated": "Last Updated On", - "connect_installation": "Connect your installation", - "api_token_description": "Login to {url} and connect this installation by entering the API Token. Your purchased modules will show up here after the connection is established.", - "view_module": "View Module", - "update_available": "Update Available", - "purchased": "Purchased", - "installed": "Installed", - "no_modules_installed": "No Modules Installed Yet!", - "disable_warning": "All the settings for this particular will be reverted.", - "what_you_get": "What you get" + "last_updated": "Laatst bijgewerkt op", + "connect_installation": "Verbind uw installatie", + "api_token_description": "Log in op {url} en verbind deze installatie door het API Token in te voeren. Uw gekochte modules zullen hier verschijnen nadat de verbinding is gemaakt.", + "view_module": "Bekijk Module", + "update_available": "Update beschikbaar", + "purchased": "Gekocht", + "installed": "Geïnstalleerd", + "no_modules_installed": "Nog geen modules geïnstalleerd!", + "disable_warning": "Alle instellingen voor dit specifiek zullen worden teruggedraaid.", + "what_you_get": "Wat je krijgt" }, "users": { "title": "Gebruikers", @@ -807,10 +807,10 @@ "payment_modes": "Betaalmethodes", "notes": "Opmerkingen", "exchange_rate": "Wisselkoers", - "address_information": "Address Information" + "address_information": "Adresgegevens" }, "address_information": { - "section_description": " You can update Your Address information using form below." + "section_description": " U kunt uw adresgegevens bijwerken via het onderstaande formulier." }, "title": "Instellingen", "setting": "Instellingen | Instellingen", @@ -839,13 +839,13 @@ }, "mail": { "host": "Mail host", - "port": "Mail Port", + "port": "E-mail poort", "driver": "Mail-stuurprogramma", "secret": "Geheim", - "mailgun_secret": "Mailgun Secret", + "mailgun_secret": "Mailgun geheim", "mailgun_domain": "Domein", "mailgun_endpoint": "Mailgun-eindpunt", - "ses_secret": "SES Secret", + "ses_secret": "SES geheim", "ses_key": "SES-sleutel", "password": "Mail wachtwoord", "username": "Mail gebruikersnaam", @@ -1113,7 +1113,7 @@ "default_currency_error": "Deze valuta wordt al gebruikt in een van de Actieve Provider", "exchange_help_text": "Voer de wisselkoers in om te converteren van {currency} naar {baseCurrency}", "currency_freak": "Valuta Freak", - "currency_layer": "Currency Layer", + "currency_layer": "Valuta-laag", "open_exchange_rate": "Open Exchange Rate", "currency_converter": "Valuta omzetter", "server": "Server", @@ -1263,7 +1263,7 @@ "media_root": "Media schijf", "aws_driver": "AWS Stuurprogramma", "aws_key": "AWS Sleutel", - "aws_secret": "AWS Secret", + "aws_secret": "AWS-geheim", "aws_region": "AWS Regio", "aws_bucket": "AWS Bucket", "aws_root": "AWS Root", @@ -1273,13 +1273,13 @@ "do_spaces_region": "Do Spaces Regio", "do_spaces_bucket": "Do Spaces Bucket", "do_spaces_endpoint": "Do Spaces Endpoint", - "do_spaces_root": "Do Spaces Root", + "do_spaces_root": "Do Spaces hoofdmap", "dropbox_type": "Dropbox Type", "dropbox_token": "Dropbox Token", - "dropbox_key": "Dropbox Key", - "dropbox_secret": "Dropbox Secret", + "dropbox_key": "Dropbox Sleutel", + "dropbox_secret": "Dropbox Geheim", "dropbox_app": "Dropbox App", - "dropbox_root": "Dropbox Root", + "dropbox_root": "Dropbox Hoofdmap", "default_driver": "Standaard stuurprogramma", "is_default": "IS STANDAARD", "set_default_disk": "Standaardschijf instellen", @@ -1301,16 +1301,16 @@ "invalid_disk_credentials": "Ongeldige inloggegevens voor geselecteerde schijf" }, "taxations": { - "add_billing_address": "Enter Billing Address", - "add_shipping_address": "Enter Shipping Address", - "add_company_address": "Enter Company Address", - "modal_description": "The information below is required in order to fetch sales tax.", - "add_address": "Add Address for fetching sales tax.", - "address_placeholder": "Example: 123, My Street", - "city_placeholder": "Example: Los Angeles", - "state_placeholder": "Example: CA", - "zip_placeholder": "Example: 90024", - "invalid_address": "Please provide valid address details." + "add_billing_address": "Vul factuuradres in", + "add_shipping_address": "Vul bezorgadres in", + "add_company_address": "Vul bedrijfsadres in", + "modal_description": "De onderstaande informatie is vereist om de verkoopbelasting op te halen.", + "add_address": "Voeg adres toe voor het ophalen van verkoopbelasting.", + "address_placeholder": "Voorbeeld: 123, Mijn Straat", + "city_placeholder": "Voorbeeld: Amsterdam", + "state_placeholder": "Voorbeeld: Noord-Holland", + "zip_placeholder": "Voorbeeld: 1234 AB", + "invalid_address": "Vul een geldig adres in a.u.b." } }, "wizard": { @@ -1328,7 +1328,7 @@ "logo_preview": "Logo Voorbeeld", "preferences": "Voorkeuren", "preferences_desc": "Standaardvoorkeuren voor het systeem.", - "currency_set_alert": "The company's currency cannot be changed later.", + "currency_set_alert": "De valuta van het bedrijf kan later niet worden gewijzigd.", "country": "Land", "state": "Provincie", "city": "Stad", @@ -1372,7 +1372,7 @@ "app_domain": "App Domein", "verify_now": "Nu verifiëren", "success": "E-mailadres succesvol geverifieerd.", - "failed": "Domain verification failed. Please enter valid domain name.", + "failed": "Domeinverificatie is mislukt. Voer een geldige domeinnaam in.", "verify_and_continue": "Verifiëren en doorgaan" }, "mail": { @@ -1380,10 +1380,10 @@ "port": "E-mail Poort", "driver": "Mail-stuurprogramma", "secret": "Geheim", - "mailgun_secret": "Mailgun Secret", + "mailgun_secret": "Mailgun geheim", "mailgun_domain": "Domein", "mailgun_endpoint": "Mailgun-eindpunt", - "ses_secret": "SES Secret", + "ses_secret": "SES geheim", "ses_key": "SES-sleutel", "password": "Mail wachtwoord", "username": "Mail gebruikersnaam", @@ -1425,7 +1425,7 @@ "not_yet": "Nog niet? Stuur het opnieuw", "password_min_length": "Wachtwoord moet {count} tekens bevatten", "name_min_length": "Naam moet minimaal {count} letters bevatten.", - "prefix_min_length": "Prefix must have at least {count} letters.", + "prefix_min_length": "Voorvoegsel moet minstens {count} letters bevatten.", "enter_valid_tax_rate": "Voer een geldig belastingtarief in", "numbers_only": "Alleen nummers.", "characters_only": "Alleen tekens.", @@ -1440,7 +1440,7 @@ "price_minvalue": "Prijs moet hoger zijn dan 0.", "amount_maxlength": "Bedrag mag niet groter zijn dan 20 cijfers.", "amount_minvalue": "Bedrag moet groter zijn dan 0.", - "discount_maxlength": "Discount should not be greater than max discount", + "discount_maxlength": "Korting mag niet meer zijn dan maximale korting", "description_maxlength": "De beschrijving mag niet meer dan 255 tekens bevatten.", "subject_maxlength": "Het onderwerp mag niet meer dan 100 tekens bevatten.", "message_maxlength": "Bericht mag niet groter zijn dan 255 tekens.", @@ -1451,9 +1451,9 @@ "prefix_maxlength": "Het voorvoegsel mag niet meer dan 5 tekens bevatten.", "something_went_wrong": "Er is iets fout gegaan", "number_length_minvalue": "Het getal moet groter zijn dan 0", - "at_least_one_ability": "Please select atleast one Permission.", - "valid_driver_key": "Please enter a valid {driver} key.", - "valid_exchange_rate": "Please enter a valid exchange rate.", + "at_least_one_ability": "Selecteer minstens één machtiging.", + "valid_driver_key": "Voer een geldige {driver} sleutel in.", + "valid_exchange_rate": "Voer a.u.b. een geldige wisselkoers in.", "company_name_not_same": "Bedrijfsnaam moet overeenkomen met de opgegeven naam." }, "errors": { @@ -1461,26 +1461,26 @@ "invalid_provider_key": "Voer een geldige API-sleutel in.", "estimate_number_used": "Dit offertenummer is reeds in gebruik.", "invoice_number_used": "Dit factuurnummer is reeds in gebruik.", - "payment_attached": "This invoice already has a payment attached to it. Make sure to delete the attached payments first in order to go ahead with the removal.", + "payment_attached": "Deze factuur heeft al een betaling gekoppeld. Zorg ervoor dat u de bijgevoegde betalingen eerst verwijdert om door te gaan met de verwijdering.", "payment_number_used": "Dit factuurnummer is reeds in gebruik.", "name_already_taken": "Deze naam is reeds in gebruik.", - "receipt_does_not_exist": "Receipt does not exist.", - "customer_cannot_be_changed_after_payment_is_added": "Customer cannot be change after payment is added", + "receipt_does_not_exist": "Kwitantie bestaat niet.", + "customer_cannot_be_changed_after_payment_is_added": "Klant kan niet worden gewijzigd nadat een betaling is toegevoegd", "invalid_credentials": "Inloggegevens ongeldig.", "not_allowed": "Niet toegestaan", "login_invalid_credentials": "Deze gegevens zijn niet correct.", - "enter_valid_cron_format": "Please enter a valid cron format", - "email_could_not_be_sent": "Email could not be sent to this email address.", - "invalid_address": "Please enter a valid address.", - "invalid_key": "Please enter valid key.", - "invalid_state": "Please enter a valid state.", - "invalid_city": "Please enter a valid city.", - "invalid_postal_code": "Please enter a valid zip.", - "invalid_format": "Please enter valid query string format.", - "api_error": "Server not responding.", - "feature_not_enabled": "Feature not enabled.", - "request_limit_met": "Api request limit exceeded.", - "address_incomplete": "Incomplete Address" + "enter_valid_cron_format": "Voer een geldig cron-formaat in", + "email_could_not_be_sent": "E-mail kon niet naar dit e-mailadres worden verzonden.", + "invalid_address": "Vul een geldig adres in.", + "invalid_key": "Vul een geldige sleutel in.", + "invalid_state": "Vul een geldige provincie in.", + "invalid_city": "Vul een geldige woonplaats in.", + "invalid_postal_code": "Vul een geldige postcode in.", + "invalid_format": "Vul een geldig query-string-formaat in.", + "api_error": "Server reageert niet.", + "feature_not_enabled": "Functie niet ingeschakeld.", + "request_limit_met": "API-verzoeklimiet overschreden.", + "address_incomplete": "Onvolledig adres" }, "pdf_estimate_label": "Offerte", "pdf_estimate_number": "Offerte nummer", diff --git a/resources/scripts/locales/ru.json b/resources/scripts/locales/ru.json index b83779c6..db98892a 100644 --- a/resources/scripts/locales/ru.json +++ b/resources/scripts/locales/ru.json @@ -12,7 +12,7 @@ "settings": "Настройки", "logout": "Выйти", "users": "Пользователи", - "modules": "Modules" + "modules": "Инструменты" }, "general": { "add_company": "Добавить компанию", @@ -30,8 +30,8 @@ "from": "Отправитель", "to": "Получатель", "ok": "Ok", - "yes": "Yes", - "no": "No", + "yes": "Да", + "no": "Нет", "sort_by": "Сортировать", "ascending": "По возрастанию", "descending": "По убыванию", @@ -39,7 +39,7 @@ "body": "Содержание", "message": "Сообщение", "send": "Отправить", - "preview": "Preview", + "preview": "Предпросмотр", "go_back": "Назад", "back_to_login": "Вернуться к логину?", "home": "Домой", @@ -65,7 +65,7 @@ "sent": "Отправлено", "all": "Все", "select_all": "Выбрать всё", - "select_template": "Select Template", + "select_template": "Выбрать шаблон", "choose_file": "Нажмите сюда чтобы выбрать файлы", "choose_template": "Выберите шаблон", "choose": "Выбор", @@ -93,12 +93,12 @@ "no_note_found": "Заметка не найдена", "insert_note": "Вставить заметку", "copied_pdf_url_clipboard": "Ссылка на PDF скопирована в буфер обмена!", - "copied_url_clipboard": "Copied url to clipboard!", + "copied_url_clipboard": "Ссылка скопирована!", "docs": "Docs", - "do_you_wish_to_continue": "Do you wish to continue?", + "do_you_wish_to_continue": "Хотите продолжить?", "note": "Note", "pay_invoice": "Pay Invoice", - "login_successfully": "Logged in successfully!", + "login_successfully": "Вход выполнен!", "logged_out_successfully": "Logged out successfully", "mark_as_default": "Mark as default" }, @@ -158,16 +158,16 @@ "created_message": "Company created successfully" }, "dateRange": { - "today": "Today", - "this_week": "This Week", - "this_month": "This Month", + "today": "Сегодня", + "this_week": "На этой неделе", + "this_month": "В этом месяце", "this_quarter": "This Quarter", - "this_year": "This Year", - "previous_week": "Previous Week", - "previous_month": "Previous Month", - "previous_quarter": "Previous Quarter", - "previous_year": "Previous Year", - "custom": "Custom" + "this_year": "В этом году", + "previous_week": "Предыдущая неделя", + "previous_month": "Предыдущий месяц", + "previous_quarter": "Предыдущий квартал", + "previous_year": "Предыдущий год", + "custom": "Выбор" }, "customers": { "title": "Клиенты", @@ -318,10 +318,10 @@ }, "accepted": "Принято", "rejected": "Отклонено", - "expired": "Expired", + "expired": "Истёк", "sent": "Отправлено", "draft": "Черновик", - "viewed": "Viewed", + "viewed": "Просмотрено", "declined": "Отказано", "new_estimate": "Новый заказ", "add_new_estimate": "Добавить новый заказ", @@ -359,7 +359,7 @@ }, "invoices": { "title": "Счет-фактуры", - "download": "Download", + "download": "Загрузить", "pay_invoice": "Pay Invoice", "invoices_list": "Список счетов", "invoice_information": "Invoice Information", @@ -459,33 +459,33 @@ "paid": "Paid", "unpaid": "Unpaid", "viewed": "Viewed", - "overdue": "Overdue", - "active": "Active", - "completed": "Completed", - "customer": "CUSTOMER", - "paid_status": "PAID STATUS", + "overdue": "Просрочен", + "active": "Активный", + "completed": "Выполнен", + "customer": "КЛИЕНТ", + "paid_status": "СТАТУС ПЛАТЕЖА", "ref_no": "REF NO.", - "number": "NUMBER", + "number": "НОМЕР", "amount_due": "AMOUNT DUE", "partially_paid": "Partially Paid", - "total": "Total", - "discount": "Discount", - "sub_total": "Sub Total", + "total": "Итого", + "discount": "Скидка", + "sub_total": "Промежуточный итог", "invoice": "Recurring Invoice | Recurring Invoices", "invoice_number": "Recurring Invoice Number", "next_invoice_date": "Next Invoice Date", "ref_number": "Ref Number", - "contact": "Contact", - "add_item": "Add an Item", - "date": "Date", + "contact": "Контакты", + "add_item": "Добавить элемент", + "date": "Дата", "limit_by": "Limit by", "limit_date": "Limit Date", "limit_count": "Limit Count", - "count": "Count", + "count": "Количество", "status": "Status", - "select_a_status": "Select a status", + "select_a_status": "Выбрать статус", "working": "Working", - "on_hold": "On Hold", + "on_hold": "На удержании", "complete": "Completed", "add_tax": "Add Tax", "amount": "Amount", @@ -498,7 +498,7 @@ "resend_invoice": "Resend Recurring Invoice", "invoice_template": "Recurring Invoice Template", "conversion_message": "Recurring Invoice cloned successful", - "template": "Template", + "template": "Шаблон", "mark_as_sent": "Mark as sent", "confirm_send_invoice": "This recurring invoice will be sent via email to the customer", "invoice_mark_as_sent": "This recurring invoice will be marked as sent", @@ -526,14 +526,14 @@ "cloned_successfully": "Recurring Invoice cloned successfully", "clone_invoice": "Clone Recurring Invoice", "confirm_clone": "This recurring invoice will be cloned into a new Recurring Invoice", - "add_customer_email": "Please add an email address for this customer to send invoices automatically.", + "add_customer_email": "Пожалуйста, добавьте адрес электронной почты для этого клиента, чтобы отправлять счета автоматически.", "item": { - "title": "Item Title", - "description": "Description", - "quantity": "Quantity", - "price": "Price", - "discount": "Discount", - "total": "Total", + "title": "Название товара", + "description": "Описание", + "quantity": "Кол-во", + "price": "Цена", + "discount": "Скидка", + "total": "Итого", "total_discount": "Total Discount", "sub_total": "Sub Total", "tax": "Tax", @@ -686,7 +686,7 @@ "api_token": "API token", "invalid_api_token": "Invalid API Token.", "other_modules": "Other Modules", - "view_all": "View All", + "view_all": "Показать всё", "no_reviews_found": "There are no reviews for this module yet!", "module_not_purchased": "Module Not Purchased", "module_not_found": "Module Not Found", @@ -728,7 +728,7 @@ "updated_message": "Пользователь успешно обновлен", "deleted_message": "Пользователь успешно удален | Пользователи успешно удалены", "select_company_role": "Select Role for {company}", - "companies": "Companies" + "companies": "Компании" }, "reports": { "title": "Отчёт", @@ -872,13 +872,13 @@ "address": "Адрес", "zip": "Индекс", "save": "Сохранить", - "delete": "Delete", + "delete": "Удалить", "updated_message": "Информация о компании успешно обновлена", - "delete_company": "Delete Company", + "delete_company": "Удалить компанию", "delete_company_description": "Once you delete your company, you will lose all the data and files associated with it permanently.", - "are_you_absolutely_sure": "Are you absolutely sure?", + "are_you_absolutely_sure": "Вы уверены?", "delete_company_modal_desc": "This action cannot be undone. This will permanently delete {company} and all of its associated data.", - "delete_company_modal_label": "Please type {company} to confirm" + "delete_company_modal_label": "Пожалуйста, введите {company} для подтверждения" }, "custom_fields": { "title": "Пользовательские поля", @@ -890,7 +890,7 @@ "type": "Тип", "name": "Название", "slug": "Slug", - "required": "Required", + "required": "Обязательно для заполнения", "placeholder": "Placeholder", "help_text": "Справка", "default_value": "Default Value", @@ -1116,9 +1116,9 @@ "currency_layer": "Currency Layer", "open_exchange_rate": "Open Exchange Rate", "currency_converter": "Currency Converter", - "server": "Server", - "url": "URL", - "active": "Active", + "server": "Сервер", + "url": "URL-адрес", + "active": "Активный", "currency_help_text": "This provider will only be used on above selected currencies", "currency_in_used": "The following currencies are already active on another provider. Please remove these currencies from selection to activate this provider again." }, From 4e7441a5cf089e24aa74628a677cdebbfe981ce0 Mon Sep 17 00:00:00 2001 From: "Tindo N. Arsel" Date: Mon, 28 Mar 2022 09:28:43 +0100 Subject: [PATCH 4/5] add default support for Central African currency (#865) --- database/seeders/CurrenciesTableSeeder.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/database/seeders/CurrenciesTableSeeder.php b/database/seeders/CurrenciesTableSeeder.php index f123f92f..149d568e 100644 --- a/database/seeders/CurrenciesTableSeeder.php +++ b/database/seeders/CurrenciesTableSeeder.php @@ -275,6 +275,14 @@ class CurrenciesTableSeeder extends Seeder 'thousand_separator' => '.', 'decimal_separator' => ',', ], + [ + 'name' => 'Central African Franc', + 'code' => 'XAF', + 'symbol' => 'CFA ', + 'precision' => '2', + 'thousand_separator' => ',', + 'decimal_separator' => '.', + ], [ 'name' => 'West African Franc', 'code' => 'XOF', From 7cde971f8b79579951df98384a5210d25f698af5 Mon Sep 17 00:00:00 2001 From: theWorstComrade <59704962+theWorstComrade@users.noreply.github.com> Date: Tue, 29 Mar 2022 09:25:35 +0200 Subject: [PATCH 5/5] Module upload validation (#857) https://huntr.dev/bounties/cb9a0393-be34-4021-a06c-00c7791c7622/ --- .../Admin/Modules/UnzipModuleController.php | 6 +-- .../Admin/Modules/UploadModuleController.php | 6 +-- app/Http/Requests/UnzipUpdateRequest.php | 37 +++++++++++++++++ app/Http/Requests/UploadModuleRequest.php | 40 +++++++++++++++++++ 4 files changed, 83 insertions(+), 6 deletions(-) create mode 100644 app/Http/Requests/UnzipUpdateRequest.php create mode 100644 app/Http/Requests/UploadModuleRequest.php diff --git a/app/Http/Controllers/V1/Admin/Modules/UnzipModuleController.php b/app/Http/Controllers/V1/Admin/Modules/UnzipModuleController.php index a0b427c7..ddffd7ce 100644 --- a/app/Http/Controllers/V1/Admin/Modules/UnzipModuleController.php +++ b/app/Http/Controllers/V1/Admin/Modules/UnzipModuleController.php @@ -3,18 +3,18 @@ namespace Crater\Http\Controllers\V1\Admin\Modules; use Crater\Http\Controllers\Controller; +use Crater\Http\Requests\UnzipUpdateRequest; use Crater\Space\ModuleInstaller; -use Illuminate\Http\Request; class UnzipModuleController extends Controller { /** * Handle the incoming request. * - * @param \Illuminate\Http\Request $request + * @param \Crater\Http\Requests\UnzipUpdateRequest $request * @return \Illuminate\Http\Response */ - public function __invoke(Request $request) + public function __invoke(UnzipUpdateRequest $request) { $this->authorize('manage modules'); diff --git a/app/Http/Controllers/V1/Admin/Modules/UploadModuleController.php b/app/Http/Controllers/V1/Admin/Modules/UploadModuleController.php index a700537f..34b10687 100644 --- a/app/Http/Controllers/V1/Admin/Modules/UploadModuleController.php +++ b/app/Http/Controllers/V1/Admin/Modules/UploadModuleController.php @@ -3,18 +3,18 @@ namespace Crater\Http\Controllers\V1\Admin\Modules; use Crater\Http\Controllers\Controller; +use Crater\Http\Requests\UploadModuleRequest; use Crater\Space\ModuleInstaller; -use Illuminate\Http\Request; class UploadModuleController extends Controller { /** * Handle the incoming request. * - * @param \Illuminate\Http\Request $request + * @param \Crater\Http\Requests\UploadModuleRequest $request * @return \Illuminate\Http\Response */ - public function __invoke(Request $request) + public function __invoke(UploadModuleRequest $request) { $this->authorize('manage modules'); diff --git a/app/Http/Requests/UnzipUpdateRequest.php b/app/Http/Requests/UnzipUpdateRequest.php new file mode 100644 index 00000000..1557d6f3 --- /dev/null +++ b/app/Http/Requests/UnzipUpdateRequest.php @@ -0,0 +1,37 @@ + [ + 'required', + 'regex:/^[\.\/\w\-]+$/' + ], + 'module' => [ + 'required', + 'string' + ] + ]; + } +} diff --git a/app/Http/Requests/UploadModuleRequest.php b/app/Http/Requests/UploadModuleRequest.php new file mode 100644 index 00000000..da592941 --- /dev/null +++ b/app/Http/Requests/UploadModuleRequest.php @@ -0,0 +1,40 @@ + [ + 'required', + 'file', + 'mimes:zip', + 'max:20000' + ], + 'module' => [ + 'required', + 'string', + 'max:100' + ] + ]; + } +}