From a4f5c1d422046c3e68c31ebc127922c777c3b847 Mon Sep 17 00:00:00 2001 From: Ahmad Husein <48185559+ahmadhusein17@users.noreply.github.com> Date: Sun, 21 Apr 2024 21:46:31 +0700 Subject: [PATCH 1/9] Update indonesia.json Improvements to the use of letter size in the language and minor improvements --- system/lan/indonesia.json | 166 +++++++++++++++++++------------------- 1 file changed, 83 insertions(+), 83 deletions(-) diff --git a/system/lan/indonesia.json b/system/lan/indonesia.json index e37e21aa..beb8df18 100644 --- a/system/lan/indonesia.json +++ b/system/lan/indonesia.json @@ -4,18 +4,18 @@ "Announcement": "Pemberitahuan", "Registration_Info": "Info Pendaftaran", "Voucher_not_found__please_buy_voucher_befor_register": "Voucher tidak ditemukan, silakan beli voucher sebelum mendaftar", - "Register_Success__You_can_login_now": "Daftar Sukses! Anda dapat masuk sekarang", + "Register_Success__You_can_login_now": "Daftar Sukses! Anda dapat masuk sekarang", "Log_in_to_Member_Panel": "Masuk ke Panel Anggota", "Register_as_Member": "Daftar sebagai Anggota", "Enter_Admin_Area": "Masuk ke Admin Panel", "PHPNuxBill": "PHPNuxBill", "Username": "Nama Pengguna", "Password": "Kata Sandi", - "Passwords_does_not_match": "Kata Sandi tidak cocok", + "Passwords_does_not_match": "Kata sandi tidak cocok", "Account_already_axist": "Akun telah ada", "Manage": "Mengelola", "Submit": "Kirim", - "Save_Changes": "Simpan perubahan", + "Save_Changes": "Simpan Perubahan", "Cancel": "Batal", "Edit": "Sunting", "Delete": "Hapus", @@ -25,32 +25,32 @@ "Data_Deleted_Successfully": "Data Berhasil Dihapus", "Static_Pages": "Halaman Statis", "Failed_to_save_page__make_sure_i_can_write_to_folder_pages___i_chmod_664_pages___html_i_": "Gagal menyimpan halaman, pastikan diperbolehkan menulis file di folder pages, chmod 664 pages\/*.html", - "Saving_page_success": "Menyimpan halaman sukses", + "Saving_page_success": "Menyimpan halaman berhasil", "Sometimes_you_need_to_refresh_3_times_until_content_change": "Terkadang Anda perlu menyegarkan 3 kali hingga konten berubah", "Dashboard": "Dasbor", "Search_Customers___": "Cari Member...", "My_Account": "Akun Saya", "My_Profile": "Profil Saya", "Settings": "Pengaturan", - "Edit_Profile": "Sunting profil", + "Edit_Profile": "Sunting Profil", "Change_Password": "Ganti kata sandi", "Logout": "Keluar", "Services": "Layanan", "Bandwidth_Plans": "Paket Bandwidth", "Bandwidth_Name": "Nama Bandwidth", - "New_Bandwidth": "Baru Bandwidth", + "New_Bandwidth": "Bandwidth Baru", "Edit_Bandwidth": "Sunting Bandwidth", "Add_New_Bandwidth": "Tambahkan Bandwidth Baru", "Rate_Download": "Nilai Unduhan", "Rate_Upload": "Nilai Unggahan", - "Name_Bandwidth_Already_Exist": "Nama Bandwidth Sudah Ada", + "Name_Bandwidth_Already_Exist": "Nama Bandwidth sudah ada", "Hotspot_Plans": "Paket Hotspot", "PPPOE_Plans": "Paket PPPoE", "Plan_Name": "Nama Paket", "New_Service_Plan": "Paket Layanan Baru", "Add_Service_Plan": "Tambah Paket Layanan", "Edit_Service_Plan": "Sunting Paket Layanan", - "Name_Plan_Already_Exist": "Nama Paket Sudah Ada", + "Name_Plan_Already_Exist": "Nama Paket sudah ada", "Plan_Type": "Jenis Paket", "Plan_Price": "Harga Paket", "Limit_Type": "Tipe Batas", @@ -58,7 +58,7 @@ "Limited": "Terbatas", "Time_Limit": "Batas waktu", "Data_Limit": "Batas Data", - "Both_Limit": "Keduanya Membatasi", + "Both_Limit": "Membatasi keduanya", "Plan_Validity": "Waktu Paket", "Select_Bandwidth": "Pilih Bandwidth", "Shared_Users": "Berbagi Pelanggan", @@ -78,7 +78,7 @@ "Phone_Number": "Nomor telepon", "User_deleted_Successfully": "Pelanggan berhasil dihapus", "Full_Administrator": "Administrator Penuh", - "Keep_Blank_to_do_not_change_Password": "Biarkan Kosong apabila tidak ingin mengubah Kata Sandi", + "Keep_Blank_to_do_not_change_Password": "Biarkan kosong apabila tidak ingin mengubah kata sandi", "Keep_it_blank_if_you_do_not_want_to_show_currency_code": "Kosongkan jika Anda tidak ingin menampilkan kode mata uang", "Theme_Style": "Gaya Tema", "Theme_Color": "Warna Tema", @@ -93,23 +93,23 @@ "IP_Address": "Alamat IP", "Router_Secret": "Password Router", "Description": "Deskrispi", - "IP_Router_Already_Exist": "IP Router Sudah Ada", + "IP_Router_Already_Exist": "IP Router sudah ada", "Name_Pool": "Nama Pool", "Range_IP": "Rentang IP", "New_Pool": "Pool baru", "Add_Pool": "Tambahkan Pool", "Edit_Pool": "Sunting Pool", - "Pool_Name_Already_Exist": "Nama Pool Sudah Ada", + "Pool_Name_Already_Exist": "Nama Pool sudah ada", "Refill_Account": "Isi Ulang Akun", "Recharge_Account": "Isi Ulang Akun", "Select_Account": "Pilih Akun", "Service_Plan": "Paket Layanan", "Recharge": "Isi Ulang", "Method": "Metode", - "Account_Created_Successfully": "Akun Berhasil Dibuat", + "Account_Created_Successfully": "Akun berhasil dibuat", "Database_Status": "Status Database", - "Total_Database_Size": "Ukuran Total Database", - "Download_Database_Backup": "Unduh Cadangan Database", + "Total_Database_Size": "Ukuran total database", + "Download_Database_Backup": "Unduh cadangan database", "Table_Name": "Nama Tabel", "Rows": "Baris", "Size": "Ukuran", @@ -123,15 +123,15 @@ "Period_Reports": "Laporan Periode", "All_Transactions": "Semua Transaksi", "Total_Income": "Jumlah Pemasukan", - "All_Transactions_at_Date": "Semua Transaksi pada Tanggal", - "Export_for_Print": "Ekspor untuk Cetak", + "All_Transactions_at_Date": "Semua transaksi pada ganggal", + "Export_for_Print": "Ekspor untuk cetak", "Print": "Cetak", "Export_to_PDF": "Ekspor ke PDF", - "Click_Here_to_Print": "Klik Disini untuk Mencetak", - "You_can_use_html_tag": "Anda dapat menggunakan tag html", + "Click_Here_to_Print": "Klik Disini untuk mencetak", + "You_can_use_html_tag": "Anda dapat menggunakan tag HTML", "Date_Format": "Format tanggal", - "Income_Today": "Pendapatan Hari Ini", - "Income_This_Month": "Penghasilan Bulan Ini", + "Income_Today": "Pendapatan hari ini", + "Income_This_Month": "Penghasilan bulan ini", "Users_Active": "Pelanggan Aktif", "Total_Users": "Total Pelanggan", "Users": "Pelanggan", @@ -153,7 +153,7 @@ "View_Reports": "Lihat Laporan", "View_All": "Lihat semua", "Number_of_Vouchers": "Jumlah Voucher", - "Length_Code": "Kode Panjang", + "Length_Code": "Panjang Kode", "Code_Voucher": "Kode Voucher", "Voucher": "Voucher", "Hotspot_Voucher": "Voucher Hotspot", @@ -177,7 +177,7 @@ "Currency_Code": "Kode Mata Uang", "Order_Voucher": "Pesan Voucher", "Voucher_Activation": "Aktivasi Voucher", - "List_Activated_Voucher": "Daftar Voucher yang Diaktifkan", + "List_Activated_Voucher": "Daftar Voucher yang diaktifkan", "Enter_voucher_code_here": "Masukkan kode voucher di sini", "Private_Message": "Pesan Pribadi", "Inbox": "Kotak Masuk", @@ -195,10 +195,10 @@ "All_field_is_required": "Semua bidang wajib diisi", "Voucher_Not_Valid": "Voucher tidak berlaku", "Activation_Vouchers_Successfully": "Aktivasi Voucher Berhasil", - "Data_Not_Found": "Data Tidak Ditemukan", - "Search_by_Username": "Cari berdasarkan Nama Pengguna", - "Search_by_Name": "Cari berdasarkan Nama", - "Search_by_Code_Voucher": "Cari berdasarkan Kode Voucher", + "Data_Not_Found": "Data tidak ditemukan", + "Search_by_Username": "Cari berdasarkan nama pengguna", + "Search_by_Name": "Cari berdasarkan nama", + "Search_by_Code_Voucher": "Cari berdasarkan kode voucher", "Search": "Mencari", "Select_a_customer": "Pilih pelanggan", "Select_Routers": "Pilih Router", @@ -212,25 +212,25 @@ "Language_Name": "Nama Bahasa", "Folder_Name": "Nama Folder", "Translator": "Penerjemah", - "Language_Name_Already_Exist": "Nama Bahasa Sudah Ada", + "Language_Name_Already_Exist": "Nama Bahasa sudah ada", "Payment_Gateway": "Gerbang Pembayaran", "Community": "Komunitas", "1_user_can_be_used_for_many_devices_": "1 pengguna bisa digunakan untuk banyak perangkat?", "Cannot_be_change_after_saved": "Tidak dapat diubah setelah disimpan", - "Explain_Coverage_of_router": "Jelaskan Cakupan router", + "Explain_Coverage_of_router": "Jelaskan cakupan router", "Name_of_Area_that_router_operated": "Nama area tempat router dioperasikan", - "Payment_Notification_URL__Recurring_Notification_URL__Pay_Account_Notification_URL": "URL Notifikasi Pembayaran, URL Notifikasi Berulang, URL Notifikasi Akun Bayar", - "Finish_Redirect_URL__Unfinish_Redirect_URL__Error_Redirect_URL": "Selesaikan URL Pengalihan, Selesaikan URL Pengalihan, URL Pengalihan Kesalahan", + "Payment_Notification_URL__Recurring_Notification_URL__Pay_Account_Notification_URL": "URL notifikasi pembayaran, URL notifikasi berulang, URL notifikasi akun bayar", + "Finish_Redirect_URL__Unfinish_Redirect_URL__Error_Redirect_URL": "Selesaikan URL pengalihan, selesaikan URL pengalihan, URL pengalihan kesalahan", "Status": "Status", "Plan_Not_found": "Paket tidak ditemukan", "Failed_to_create_transaction_": "Gagal membuat transaksi.", "Seller_has_not_yet_setup_Xendit_payment_gateway": "Penjual belum menyiapkan gateway pembayaran Xendit", - "Admin_has_not_yet_setup_Xendit_payment_gateway__please_tell_admin": "Admin belum menyiapkan gerbang pembayaran Xendit, mohon beritahu admin", + "Admin_has_not_yet_setup_Xendit_payment_gateway__please_tell_admin": "Admin belum menyiapkan gerbang pembayaran Xendit, mohon beritahu Admin", "Buy_this__your_active_package_will_be_overwrite": "Beli ini? Paket aktif Anda akan ditimpa", "You_already_have_unpaid_transaction__cancel_it_or_pay_it_": "Anda sudah memiliki transaksi yang belum dibayar, batalkan atau bayar.", - "Transaction_Not_found": "Transaksi Tidak ditemukan", + "Transaction_Not_found": "Transaksi tidak ditemukan", "Cancel_it_": "Batalkan itu?", - "expired": "kedaluwarsa", + "expired": "Kedaluwarsa", "Check_for_Payment": "Periksa Pembayaran", "Transaction_still_unpaid_": "Transaksi masih belum dibayar.", "Paid_Date": "Tanggal Pembayaran", @@ -243,9 +243,9 @@ "Buy_PPOE_Plan": "Beli Paket PPPoE", "Package": "Paket", "Order_Internet_Package": "Pesan Paket Internet", - "Unknown_Command_": "Perintah Tidak Diketahui.", + "Unknown_Command_": "Perintah tidak diketahui.", "Checking_payment": "Memeriksa pembayaran", - "Create_Transaction_Success": "Transaksi Berhasil Dibuat", + "Create_Transaction_Success": "Transaksi berhasil dibuat", "You_have_unpaid_transaction": "Anda memiliki transaksi yang belum dibayar", "TripayPayment_Channel": "Saluran Pembayaran Tripay", "Payment_Channel": "Saluran Pembayaran", @@ -258,16 +258,16 @@ "Gateway": "Gerbang", "Date_Done": "Tanggal Selesai", "Unpaid_Order": "Pesanan Belum Dibayar", - "Payment_Gateway_Not_Found": "Gerbang Pembayaran Tidak Ditemukan", + "Payment_Gateway_Not_Found": "Gerbang Pembayaran tidak ditemukan", "Payment_Gateway_saved_successfully": "Gerbang Pembayaran berhasil disimpan", "ORDER": "MEMESAN", "Package_History": "Riwayat Paket", "Buy_History": "Riwayat Beli", "Activation_History": "Riwayat Aktivasi", "Buy_Package": "Beli Paket", - "Email": "Surel", + "Email": "Email", "Company_Footer": "Catatan Kaki Perusahaan", - "Will_show_below_user_pages": "Akan ditampilkan di bawah halaman pengguna", + "Will_show_below_user_pages": "Akan ditampilkan dibawah halaman pengguna", "Request_OTP": "Minta OTP", "Verification_Code": "Kode Verifikasi", "SMS_Verification_Code": "Kode Verifikasi SMS", @@ -284,10 +284,10 @@ "Current_IP": "IP saat ini", "Current_MAC": "MAC saat ini", "Login_Status": "Status Masuk", - "Login_Request_successfully": "Permintaan Masuk berhasil", - "Logout_Request_successfully": "Permintaan Keluar berhasil", - "Disconnect_Internet_": "Putuskan sambungan Internet?", - "Not_Online__Login_now_": "Tidak, Masuk sekarang?", + "Login_Request_successfully": "Permintaan masuk berhasil", + "Logout_Request_successfully": "Permintaan keluar berhasil", + "Disconnect_Internet_": "Putuskan sambungan internet?", + "Not_Online__Login_now_": "Tidak, masuk sekarang?", "You_are_Online__Logout_": "Kamu sedang aktif, ingin keluar?", "Connect_to_Internet_": "Hubungkan ke Internet?", "Your_account_not_connected_to_internet": "Akun Anda tidak terhubung ke internet", @@ -322,9 +322,9 @@ "Price": "Harga", "Validity": "Waktu", "Disable_auto_renewal_": "Nonaktifkan perpanjangan otomatis?", - "Auto_Renewal_On": "Perpanjangan Otomatis Aktif", + "Auto_Renewal_On": "Perpanjangan otomatis aktif", "Enable_auto_renewal_": "Aktifkan perpanjangan otomatis?", - "Auto_Renewal_Off": "Perpanjangan Otomatis Mati", + "Auto_Renewal_Off": "Perpanjangan otomatis mati", "Refill_Balance": "Isi Ulang Saldo", "Invoice_Footer": "Catatan Kaki Faktur", "Pay_With_Balance": "Bayar dengan Saldo", @@ -334,7 +334,7 @@ "View": "Melihat", "Back": "Kembali", "Active": "Aktif", - "Transfer_Balance": "Kirim Saldo", + "Transfer_Balance": "Kirim saldo", "Send_your_balance_": "Kirim saldo Anda?", "Send": "Kirim", "Cannot_send_to_yourself": "Tidak dapat mengirim ke diri Anda sendiri", @@ -342,9 +342,9 @@ "From": "Dari", "To": "Ke", "insufficient_balance": "Saldo tidak mencukupi", - "Send_Balance": "Kirim Saldo", - "Received_Balance": "Saldo yang Diterima", - "Minimum_Balance_Transfer": "Minimal Transfer Saldo", + "Send_Balance": "Kirim saldo", + "Received_Balance": "Saldo yang diterima", + "Minimum_Balance_Transfer": "Minimal transfer saldo", "Minimum_Transfer": "Minimal Transfer", "Company_Logo": "Logo Perusahaan", "Expired_IP_Pool": "IP Pool Kedaluwarsa", @@ -361,13 +361,13 @@ "Buy_for_friend": "Beli untuk teman", "Buy_this_for_friend_account_": "Beli ini untuk akun teman?", "Review_package_before_recharge": "Tinjau paket sebelum mengisi ulang", - "Activate": "Mengaktifkan Paket", - "Deactivate": "Menonaktifkan Paket", + "Activate": "Mengaktifkan paket", + "Deactivate": "Menonaktifkan paket", "Sync": "Sinkronisasi", "Failed_to_create_PaymeTrust_transaction_": "Gagal membuat transaksi PaymeTrust.", "Location": "Lokasi", "Radius_Plans": "Paket Radius", - "Change_title_in_user_Plan_order": "Ubah judul dalam urutan paket pelanggan", + "Change_title_in_user_Plan_order": "Ubah Judul dalam urutan paket pelanggan", "Logs": "Log", "Voucher_Format": "Format Voucher", "Resend_To_Customer": "Kirim Ulang Ke Pelanggan", @@ -378,12 +378,12 @@ "Monthly_Registered_Customers": "Pendaftaran Pelanggan perbulan", "Total_Monthly_Sales": "Total penjualan perbulan", "Active_Users": "Pelanggan Aktif", - "SuperAdmin": "Admin Super", + "SuperAdmin": "Super Admin", "Lists": "Daftar", "Vouchers": "Voucher", "Refill_Customer": "Isi Ulang Pelanggan", "Recharge_Customer": "Isi Ulang Pelanggan", - "Plans": "Rencana", + "Plans": "Paket", "PPPOE": "PPPOE", "Bandwidth": "Bandwidth", "Send_Message": "Mengirim pesan", @@ -393,18 +393,18 @@ "Radius_NAS": "Radius NAS", "Customer_Announcement": "Pengumuman Pelanggan", "Language_Editor": "Editor Bahasa", - "Plan_Category": "Kategori Rencana", - "ID": "PENGENAL", + "Plan_Category": "Kategori Paket", + "ID": "ID", "Prev": "Sebelumnya", "Internet_Plan": "Paket Internet", "Generated_By": "Dihasilkan oleh", "All_Users_Insights": "Semua Wawasan Pengguna", - "year": "tahun", - "month": "bulan", - "week": "pekan", - "day": "hari", - "hour": "jam", - "minute": "menit", + "year": "Tahun", + "month": "Bulan", + "week": "Pekan", + "day": "Hari", + "hour": "Jam", + "minute": "Menit", "second": "Kedua", "Account_Type": "Jenis akun", "Contact": "Kontak", @@ -422,55 +422,55 @@ "success": "Sukses", "Click_Here": "Klik disini", "Your_friend_do_not_have_active_package": "Teman Anda tidak memiliki paket aktif", - "If_your_friend_have_Additional_Cost__you_will_pay_for_that_too": "Jika teman Anda memiliki Biaya Tambahan, Anda juga akan membayarnya", + "If_your_friend_have_Additional_Cost__you_will_pay_for_that_too": "Jika teman Anda memiliki biaya tambahan, Anda juga akan membayarnya", "Select_Payment_Gateway": "Pilih Gerbang Pembayaran", - "Available_Payment_Gateway": "Gerbang Pembayaran yang Tersedia", + "Available_Payment_Gateway": "Gerbang Pembayaran yang tersedia", "Pay_Now": "Bayar sekarang", "Notes": "Catatan", - "will_be_replaced_with_Customer_Name": "akan diganti dengan Nama Pelanggan", + "will_be_replaced_with_Customer_Name": "akan diganti dengan nama Pelanggan", "will_be_replaced_with_Customer_username": "akan diganti dengan nama pengguna Pelanggan", - "will_be_replaced_with_Package_name": "akan diganti dengan nama Paket", + "will_be_replaced_with_Package_name": "akan diganti dengan nama paket", "will_be_replaced_with_Package_price": "akan diganti dengan harga Paket", "will_be_replaced_with_Expiration_date": "akan diganti dengan tanggal kedaluwarsa", "additional_bills_for_customers": "tagihan tambahan untuk pelanggan", - "Your_Company_Name_at_Settings": "Nama Perusahaan Anda di Pengaturan", - "Your_Company_Address_at_Settings": "Alamat Perusahaan Anda di Pengaturan", - "Your_Company_Phone_at_Settings": "Telepon Perusahaan Anda di Pengaturan", + "Your_Company_Name_at_Settings": "Nama Perusahaan Anda di pengaturan", + "Your_Company_Address_at_Settings": "Alamat Perusahaan Anda di pengaturan", + "Your_Company_Phone_at_Settings": "Telepon Perusahaan Anda di pengaturan", "Invoice_number": "Nomor faktur", "Date_invoice_created": "Tanggal faktur dibuat", "Payment_gateway_user_paid_from": "Pengguna gateway pembayaran membayar dari", "Payment_channel_user_paid_from": "Pengguna saluran pembayaran membayar dari", "is_Hotspot_or_PPPOE": "adalah Hotspot atau PPPOE", - "Internet_Package": "Paket Internet", - "Internet_Package_Prices": "Harga Paket Internet", - "Receiver_name": "Nama Penerima", + "Internet_Package": "Paket internet", + "Internet_Package_Prices": "Harga paket internet", + "Receiver_name": "Nama penerima", "Username_internet": "Nama pengguna internet", "User_password": "Kata sandi pengguna", "Transaction_datetime": "Tanggal waktu transaksi", - "Balance_Before": "Saldo Sebelumnya", - "Balance_After": "Saldo Setelahnya", - "For_Notes_by_admin": "Untuk Catatan oleh admin", + "Balance_Before": "Saldo sebelumnya", + "Balance_After": "Saldo setelahnya", + "For_Notes_by_admin": "Untuk catatan oleh Admin", "how_much_balance_have_been_send": "berapa banyak saldo yang telah dikirim", "Current_Balance": "Saldo saat ini", "Sender_name": "Nama pengirim", "Customer_Balance": "Saldo Pelanggan", - "Privacy_Policy": "Kebijakan pribadi", - "Terms_and_Conditions": "syarat dan Ketentuan", + "Privacy_Policy": "Kebijakan Privasi", + "Terms_and_Conditions": "Syarat dan Ketentuan", "Disable_Registration": "Nonaktifkan Pendaftaran", - "Customer_just_Login_with_Phone_number_and_Voucher_Code__Voucher_will_be_password": "Pelanggan cukup Login dengan Nomor Telepon dan Kode Voucher, Voucher akan menjadi kata sandi", - "After_Customer_activate_voucher_or_login__customer_will_be_redirected_to_this_url": "Setelah Pelanggan mengaktifkan voucher atau login, Pelanggan akan diarahkan ke url ini", - "Extend_Postpaid_Expiration": "Perpanjang Masa Kedaluwarsa Pascabayar", + "Customer_just_Login_with_Phone_number_and_Voucher_Code__Voucher_will_be_password": "Pelanggan cukup masuk dengan nomor telepon dan kode voucher, Voucher akan menjadi kata sandi", + "After_Customer_activate_voucher_or_login__customer_will_be_redirected_to_this_url": "Setelah Pelanggan mengaktifkan voucher atau masuk, Pelanggan akan diarahkan ke URL ini", + "Extend_Postpaid_Expiration": "Perpanjang masa kedaluwarsa pascabayar", "Allow_Extend": "Izinkan Perpanjang", "Extend_Days": "Perpanjang Hari", "Confirmation_Message": "Pesan konfirmasi", - "Email_Notification": "pemberitahuan email", + "Email_Notification": "Pemberitahuan Email", "This_Token_will_act_as_SuperAdmin_Admin": "Token ini akan bertindak sebagai SuperAdmin\/Admin", "Miscellaneous": "Aneka ragam", "OTP_Required": "Diperlukan OTP", "OTP_is_required_when_user_want_to_change_phone_number": "OTP diperlukan ketika pengguna ingin mengganti nomor telepon", "OTP_Method": "Metode OTP", "SMS": "SMS", - "WhatsApp": "Ada apa", + "WhatsApp": "WhatsApp", "SMS_and_WhatsApp": "SMS dan WhatsApp", "The_method_which_OTP_will_be_sent_to_user": "Metode OTP yang akan dikirimkan ke pengguna" -} \ No newline at end of file +} From 4d6041f614e1b7738aa53ab12aeb8708c8c8804e Mon Sep 17 00:00:00 2001 From: Ibnu Maksum Date: Mon, 22 Apr 2024 10:16:21 +0700 Subject: [PATCH 2/9] send Telegram for Extend --- system/controllers/home.php | 17 +++++++++++------ update.php | 4 ++-- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/system/controllers/home.php b/system/controllers/home.php index ecb6aaaa..7e56f9a4 100644 --- a/system/controllers/home.php +++ b/system/controllers/home.php @@ -148,16 +148,18 @@ $router = $tur['routers']; } $p = ORM::for_table('tbl_plans')->findOne($tur['plan_id']); - $c = ORM::for_table('tbl_customers')->findOne($tur['customer_id']); + if(!$p){ + r2(U . 'home', '3', "Plan Not Found"); + } if ($tur['routers'] == 'radius') { - Radius::customerAddPlan($c, $p, $tur['expiration'] . ' ' . $tur['time']); + Radius::customerAddPlan($user, $p, $tur['expiration'] . ' ' . $tur['time']); } else { if ($tur['type'] == 'Hotspot') { - Mikrotik::removeHotspotUser($client, $c['username']); - Mikrotik::addHotspotUser($client, $p, $c); + Mikrotik::removeHotspotUser($client, $user['username']); + Mikrotik::addHotspotUser($client, $p, $user); } else if ($tur['type'] == 'PPPOE') { - Mikrotik::removePpoeUser($client, $c['username']); - Mikrotik::addPpoeUser($client, $p, $c); + Mikrotik::removePpoeUser($client, $user['username']); + Mikrotik::addPpoeUser($client, $p, $user); } } // make customer cannot extend again @@ -169,6 +171,9 @@ App::setToken(_get('stoken'), $id); file_put_contents($path, $m); _log("Customer $tur[customer_id] $tur[username] extend for $days days", "Customer", $user['id']); + Message::sendTelegram("#u$c[username] #extend #".$p['type']." \n" . $p['name_plan'] . + "\nLocation: " . $p['routers'] . + "\nNew Expired: " . Lang::dateAndTimeFormat($expiration, $tur['time'])); r2(U . 'home', 's', "Extend until $expiration"); }else{ r2(U . 'home', 'e', "Plan is not expired"); diff --git a/update.php b/update.php index b5eb0e06..fa60c5d3 100644 --- a/update.php +++ b/update.php @@ -141,12 +141,12 @@ function r2($to, $ntype = 'e', $msg = '') { if ($msg == '') { header("location: $to"); - exit; + die(); } $_SESSION['ntype'] = $ntype; $_SESSION['notify'] = $msg; header("location: $to"); - exit; + die(); } function copyFolder($from, $to, $exclude = []) From 31b710e03cb16fe7e245e5fe43962239cfdc0696 Mon Sep 17 00:00:00 2001 From: Ibnu Maksum Date: Mon, 22 Apr 2024 10:28:34 +0700 Subject: [PATCH 3/9] add username to telegram notif --- system/controllers/home.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/controllers/home.php b/system/controllers/home.php index 7e56f9a4..427ad4f6 100644 --- a/system/controllers/home.php +++ b/system/controllers/home.php @@ -171,7 +171,7 @@ App::setToken(_get('stoken'), $id); file_put_contents($path, $m); _log("Customer $tur[customer_id] $tur[username] extend for $days days", "Customer", $user['id']); - Message::sendTelegram("#u$c[username] #extend #".$p['type']." \n" . $p['name_plan'] . + Message::sendTelegram("#u$user[username] #extend #".$p['type']." \n" . $p['name_plan'] . "\nLocation: " . $p['routers'] . "\nNew Expired: " . Lang::dateAndTimeFormat($expiration, $tur['time'])); r2(U . 'home', 's', "Extend until $expiration"); From 3e89efcf4662136e7b835f7f7b4feb2159301287 Mon Sep 17 00:00:00 2001 From: Ibnu Maksum Date: Mon, 22 Apr 2024 11:33:21 +0700 Subject: [PATCH 4/9] add Customer Fullname --- system/controllers/home.php | 1 + 1 file changed, 1 insertion(+) diff --git a/system/controllers/home.php b/system/controllers/home.php index 427ad4f6..2f08dc77 100644 --- a/system/controllers/home.php +++ b/system/controllers/home.php @@ -173,6 +173,7 @@ _log("Customer $tur[customer_id] $tur[username] extend for $days days", "Customer", $user['id']); Message::sendTelegram("#u$user[username] #extend #".$p['type']." \n" . $p['name_plan'] . "\nLocation: " . $p['routers'] . + "\nCustomer: " . $user['fullname'] . "\nNew Expired: " . Lang::dateAndTimeFormat($expiration, $tur['time'])); r2(U . 'home', 's', "Extend until $expiration"); }else{ From c0cd197df2cfd6b98f4e68dedec4eb3584b87122 Mon Sep 17 00:00:00 2001 From: Ibnu Maksum Date: Mon, 22 Apr 2024 14:02:33 +0700 Subject: [PATCH 5/9] Fix Extend Confirmation long text --- init.php | 2 +- system/autoload/Text.php | 64 ++++++++++++++++++++++++++++++++++++++++ ui/ui/user-dashboard.tpl | 2 +- 3 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 system/autoload/Text.php diff --git a/init.php b/init.php index d3ef00c7..de0dc6a0 100644 --- a/init.php +++ b/init.php @@ -222,7 +222,7 @@ function Lang($key) function alphanumeric($str, $tambahan = "") { - return preg_replace("/[^a-zA-Z0-9" . $tambahan . "]+/", "", $str); + return Text::alphanumeric($str, $tambahan); } function showResult($success, $message = '', $result = [], $meta = []) diff --git a/system/autoload/Text.php b/system/autoload/Text.php new file mode 100644 index 00000000..bc094e15 --- /dev/null +++ b/system/autoload/Text.php @@ -0,0 +1,64 @@ +{Lang::T('Extend')} + onclick="return confirm('{Text::toHex($_c['extend_confirmation'])}')">{Lang::T('Extend')} {/if} Date: Mon, 22 Apr 2024 23:31:36 +0300 Subject: [PATCH 6/9] Update to case csv. added columns separated case csv now we will have one for all customers and another one for prepaid users. for all customers csv will be downloaded from list and prepaid csv will be from prepaid users. Also added columns instead of the previous one --- system/controllers/customers.php | 117 +++++++++++++++++++++++++++---- 1 file changed, 102 insertions(+), 15 deletions(-) diff --git a/system/controllers/customers.php b/system/controllers/customers.php index b8e9f38b..ebcad67b 100644 --- a/system/controllers/customers.php +++ b/system/controllers/customers.php @@ -25,19 +25,19 @@ if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) { _alert(Lang::T('You do not have permission to access this page'), 'danger', "dashboard"); } + $cs = ORM::for_table('tbl_customers') ->select('tbl_customers.id', 'id') ->select('tbl_customers.username', 'username') ->select('fullname') + ->select('address') ->select('phonenumber') ->select('email') ->select('balance') - ->select('namebp') - ->select('routers') - ->select('status') - ->select('method', 'Payment') - ->join('tbl_user_recharges', array('tbl_customers.id', '=', 'tbl_user_recharges.customer_id')) - ->order_by_asc('tbl_customers.id')->find_array(); + ->select('service_type') + ->order_by_asc('tbl_customers.id') + ->find_array(); + $h = false; set_time_limit(-1); header('Pragma: public'); @@ -46,20 +46,107 @@ header("Content-type: text/csv"); header('Content-Disposition: attachment;filename="phpnuxbill_customers_' . date('Y-m-d_H_i') . '.csv"'); header('Content-Transfer-Encoding: binary'); + + $headers = [ + 'id', + 'username', + 'fullname', + 'address', + 'phonenumber', + 'email', + 'balance', + 'service_type', + ]; + + if (!$h) { + echo '"' . implode('","', $headers) . "\"\n"; + $h = true; + } + foreach ($cs as $c) { - $ks = []; - $vs = []; - foreach ($c as $k => $v) { - $ks[] = $k; - $vs[] = $v; + $row = [ + $c['id'], + $c['username'], + $c['fullname'], + $c['address'], + $c['phonenumber'], + $c['email'], + $c['balance'], + $c['service_type'], + ]; + echo '"' . implode('","', $row) . "\"\n"; + } + break; + //case csv-prepaid can be moved later to (plan.php) php file dealing with prepaid users + case 'csv-prepaid': + if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) { + _alert(Lang::T('You do not have permission to access this page'), 'danger', "dashboard"); } + + $cs = ORM::for_table('tbl_customers') + ->select('tbl_customers.id', 'id') + ->select('tbl_customers.username', 'username') + ->select('fullname') + ->select('address') + ->select('phonenumber') + ->select('email') + ->select('balance') + ->select('service_type') + ->select('namebp') + ->select('routers') + ->select('status') + ->select('method', 'Payment') + ->join('tbl_user_recharges', array('tbl_customers.id', '=', 'tbl_user_recharges.customer_id')) + ->order_by_asc('tbl_customers.id') + ->find_array(); + + $h = false; + set_time_limit(-1); + header('Pragma: public'); + header('Expires: 0'); + header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); + header("Content-type: text/csv"); + header('Content-Disposition: attachment;filename="phpnuxbill_prepaid_users' . date('Y-m-d_H_i') . '.csv"'); + header('Content-Transfer-Encoding: binary'); + + $headers = [ + 'id', + 'username', + 'fullname', + 'address', + 'phonenumber', + 'email', + 'balance', + 'service_type', + 'namebp', + 'routers', + 'status', + 'Payment' + ]; + if (!$h) { - echo '"' . implode('";"', $ks) . "\"\n"; + echo '"' . implode('","', $headers) . "\"\n"; $h = true; } - echo '"' . implode('";"', $vs) . "\"\n"; - } - break; + + foreach ($cs as $c) { + $row = [ + $c['id'], + $c['username'], + $c['fullname'], + $c['address'], + $c['phonenumber'], + $c['email'], + $c['balance'], + $c['service_type'], + $c['namebp'], + $c['routers'], + $c['status'], + $c['Payment'] + ]; + echo '"' . implode('","', $row) . "\"\n"; + } + break; case 'add': if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin', 'Agent', 'Sales'])) { _alert(Lang::T('You do not have permission to access this page'), 'danger', "dashboard"); From 45a6085205fad2c441227ec95d112139497c7304 Mon Sep 17 00:00:00 2001 From: Free Isp Radius <167556847+freeispradius@users.noreply.github.com> Date: Mon, 22 Apr 2024 23:33:54 +0300 Subject: [PATCH 7/9] Update case csv-prepaid changed the url --- ui/ui/plan.tpl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ui/ui/plan.tpl b/ui/ui/plan.tpl index b28a39f6..67704fa0 100644 --- a/ui/ui/plan.tpl +++ b/ui/ui/plan.tpl @@ -11,7 +11,7 @@ class="glyphicon glyphicon-refresh" aria-hidden="true"> sync
- CSV
@@ -100,4 +100,4 @@ function extend(idP){ } -{include file="sections/footer.tpl"} \ No newline at end of file +{include file="sections/footer.tpl"} From 18bdf185d61652a0874ed4f2ed779de0594e0970 Mon Sep 17 00:00:00 2001 From: AGSTR <144728914+agstrxyz@users.noreply.github.com> Date: Tue, 23 Apr 2024 09:24:47 +0700 Subject: [PATCH 8/9] Update plan.php --- system/controllers/plan.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/controllers/plan.php b/system/controllers/plan.php index 9356f342..41fd1f95 100644 --- a/system/controllers/plan.php +++ b/system/controllers/plan.php @@ -621,7 +621,7 @@ if (!$voucher) { r2(U . 'plan/voucher/', 'e', Lang::T('Voucher Not Found')); } - $plan = ORM::for_table('tbl_plans')->find_one($d['id_plan']); + $plan = ORM::for_table('tbl_plans')->find_one($voucher['id_plan']); if ($voucher && $plan) { $content = Lang::pad($config['CompanyName'], ' ', 2) . "\n"; $content .= Lang::pad($config['address'], ' ', 2) . "\n"; From 8dc7707b3a87ea589cf04549e8da1d549531e63a Mon Sep 17 00:00:00 2001 From: Ibnu Maksum Date: Tue, 23 Apr 2024 11:51:34 +0700 Subject: [PATCH 9/9] fix pagination Voucher --- CHANGELOG.md | 9 ++ system/controllers/customers.php | 146 +++++++++++++++---------------- system/controllers/plan.php | 48 ++++------ ui/ui/plan.tpl | 2 +- ui/ui/voucher.tpl | 56 ++++++------ version.json | 2 +- 6 files changed, 132 insertions(+), 131 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index da5b8e45..725e801c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,15 @@ # CHANGELOG +## 2024.4.23 + +- Fix Pagination Voucher +- Fix Languange Translation +- Fix Alert Confirmation for requesting Extend +- Send Telegram Notification when Customer request to extend expiration +- prepaid users export list by @freeispradius +- fix show voucher by @agstrxyz + ## 2024.4.21 - Restore old cron diff --git a/system/controllers/customers.php b/system/controllers/customers.php index ebcad67b..e3e69bad 100644 --- a/system/controllers/customers.php +++ b/system/controllers/customers.php @@ -25,7 +25,7 @@ if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) { _alert(Lang::T('You do not have permission to access this page'), 'danger', "dashboard"); } - + $cs = ORM::for_table('tbl_customers') ->select('tbl_customers.id', 'id') ->select('tbl_customers.username', 'username') @@ -37,7 +37,7 @@ ->select('service_type') ->order_by_asc('tbl_customers.id') ->find_array(); - + $h = false; set_time_limit(-1); header('Pragma: public'); @@ -46,7 +46,7 @@ header("Content-type: text/csv"); header('Content-Disposition: attachment;filename="phpnuxbill_customers_' . date('Y-m-d_H_i') . '.csv"'); header('Content-Transfer-Encoding: binary'); - + $headers = [ 'id', 'username', @@ -57,12 +57,12 @@ 'balance', 'service_type', ]; - + if (!$h) { echo '"' . implode('","', $headers) . "\"\n"; $h = true; } - + foreach ($cs as $c) { $row = [ $c['id'], @@ -78,75 +78,75 @@ } break; //case csv-prepaid can be moved later to (plan.php) php file dealing with prepaid users - case 'csv-prepaid': - if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) { - _alert(Lang::T('You do not have permission to access this page'), 'danger', "dashboard"); - } - - $cs = ORM::for_table('tbl_customers') - ->select('tbl_customers.id', 'id') - ->select('tbl_customers.username', 'username') - ->select('fullname') - ->select('address') - ->select('phonenumber') - ->select('email') - ->select('balance') - ->select('service_type') - ->select('namebp') - ->select('routers') - ->select('status') - ->select('method', 'Payment') - ->join('tbl_user_recharges', array('tbl_customers.id', '=', 'tbl_user_recharges.customer_id')) - ->order_by_asc('tbl_customers.id') - ->find_array(); - - $h = false; - set_time_limit(-1); - header('Pragma: public'); - header('Expires: 0'); - header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); - header("Content-type: text/csv"); - header('Content-Disposition: attachment;filename="phpnuxbill_prepaid_users' . date('Y-m-d_H_i') . '.csv"'); - header('Content-Transfer-Encoding: binary'); - - $headers = [ - 'id', - 'username', - 'fullname', - 'address', - 'phonenumber', - 'email', - 'balance', - 'service_type', - 'namebp', - 'routers', - 'status', - 'Payment' + case 'csv-prepaid': + if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) { + _alert(Lang::T('You do not have permission to access this page'), 'danger', "dashboard"); + } + + $cs = ORM::for_table('tbl_customers') + ->select('tbl_customers.id', 'id') + ->select('tbl_customers.username', 'username') + ->select('fullname') + ->select('address') + ->select('phonenumber') + ->select('email') + ->select('balance') + ->select('service_type') + ->select('namebp') + ->select('routers') + ->select('status') + ->select('method', 'Payment') + ->join('tbl_user_recharges', array('tbl_customers.id', '=', 'tbl_user_recharges.customer_id')) + ->order_by_asc('tbl_customers.id') + ->find_array(); + + $h = false; + set_time_limit(-1); + header('Pragma: public'); + header('Expires: 0'); + header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); + header("Content-type: text/csv"); + header('Content-Disposition: attachment;filename="phpnuxbill_prepaid_users' . date('Y-m-d_H_i') . '.csv"'); + header('Content-Transfer-Encoding: binary'); + + $headers = [ + 'id', + 'username', + 'fullname', + 'address', + 'phonenumber', + 'email', + 'balance', + 'service_type', + 'namebp', + 'routers', + 'status', + 'Payment' + ]; + + if (!$h) { + echo '"' . implode('","', $headers) . "\"\n"; + $h = true; + } + + foreach ($cs as $c) { + $row = [ + $c['id'], + $c['username'], + $c['fullname'], + $c['address'], + $c['phonenumber'], + $c['email'], + $c['balance'], + $c['service_type'], + $c['namebp'], + $c['routers'], + $c['status'], + $c['Payment'] ]; - - if (!$h) { - echo '"' . implode('","', $headers) . "\"\n"; - $h = true; - } - - foreach ($cs as $c) { - $row = [ - $c['id'], - $c['username'], - $c['fullname'], - $c['address'], - $c['phonenumber'], - $c['email'], - $c['balance'], - $c['service_type'], - $c['namebp'], - $c['routers'], - $c['status'], - $c['Payment'] - ]; - echo '"' . implode('","', $row) . "\"\n"; - } - break; + echo '"' . implode('","', $row) . "\"\n"; + } + break; case 'add': if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin', 'Agent', 'Sales'])) { _alert(Lang::T('You do not have permission to access this page'), 'danger', "dashboard"); diff --git a/system/controllers/plan.php b/system/controllers/plan.php index 41fd1f95..7b1c387f 100644 --- a/system/controllers/plan.php +++ b/system/controllers/plan.php @@ -132,7 +132,7 @@ $using = _post('using'); $stoken = _post('stoken'); - if(!empty(App::getTokenValue($stoken))){ + if (!empty(App::getTokenValue($stoken))) { $username = App::getTokenValue($stoken); $in = ORM::for_table('tbl_transactions')->where('username', $username)->order_by_desc('id')->find_one(); Package::createInvoice($in); @@ -325,18 +325,13 @@ case 'voucher': $ui->assign('_title', Lang::T('Vouchers')); - $limit = 10; - $page = _get('p', 0); - $pageNow = $page * $limit; $search = _req('search'); if ($search != '') { if (in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) { - $d = ORM::for_table('tbl_plans')->where('enabled', '1') + $query = ORM::for_table('tbl_plans')->where('enabled', '1') ->join('tbl_voucher', array('tbl_plans.id', '=', 'tbl_voucher.id_plan')) - ->where_like('tbl_voucher.code', '%' . $search . '%') - ->offset($pageNow) - ->limit($limit) - ->findArray(); + ->where_like('tbl_voucher.code', '%' . $search . '%'); + $d = Paginator::findMany($query, ["search" => $search]); } else if ($admin['user_type'] == 'Agent') { $sales = []; $sls = ORM::for_table('tbl_users')->select('id')->where('root', $admin['id'])->findArray(); @@ -344,21 +339,17 @@ $sales[] = $s['id']; } $sales[] = $admin['id']; - $d = ORM::for_table('tbl_plans') + $query = ORM::for_table('tbl_plans') ->join('tbl_voucher', array('tbl_plans.id', '=', 'tbl_voucher.id_plan')) ->where_in('generated_by', $sales) - ->where_like('tbl_voucher.code', '%' . $search . '%') - ->offset($pageNow) - ->limit($limit) - ->findArray(); + ->where_like('tbl_voucher.code', '%' . $search . '%'); + $d = Paginator::findMany($query, ["search" => $search]); } } else { if (in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) { - $d = ORM::for_table('tbl_plans')->where('enabled', '1') - ->join('tbl_voucher', array('tbl_plans.id', '=', 'tbl_voucher.id_plan')) - ->offset($pageNow) - ->limit($limit) - ->findArray(); + $query = ORM::for_table('tbl_plans')->where('enabled', '1') + ->join('tbl_voucher', array('tbl_plans.id', '=', 'tbl_voucher.id_plan')); + $d = Paginator::findMany($query); } else if ($admin['user_type'] == 'Agent') { $sales = []; $sls = ORM::for_table('tbl_users')->select('id')->where('root', $admin['id'])->findArray(); @@ -366,12 +357,10 @@ $sales[] = $s['id']; } $sales[] = $admin['id']; - $d = ORM::for_table('tbl_plans') + $query = ORM::for_table('tbl_plans') ->join('tbl_voucher', array('tbl_plans.id', '=', 'tbl_voucher.id_plan')) - ->where_in('generated_by', $sales) - ->offset($pageNow) - ->limit($limit) - ->findArray(); + ->where_in('generated_by', $sales); + $d = Paginator::findMany($query); } } // extract admin @@ -581,6 +570,7 @@ } else if ($voucher_format == 'rand') { $code = Lang::randomUpLowCase($code); } + die($code); $d = ORM::for_table('tbl_voucher')->create(); $d->type = $type; $d->routers = $server; @@ -743,15 +733,15 @@ $id = $routes[2]; $days = $routes[3]; $stoken = $_GET['stoken']; - if(App::getTokenValue($stoken)){ + if (App::getTokenValue($stoken)) { r2(U . 'plan', 's', "Extend already done"); } $tur = ORM::for_table('tbl_user_recharges')->find_one($id); $status = $tur['status']; - if(strtotime($tur['expiration'].' '.$tur['time']) > time()){ + if (strtotime($tur['expiration'] . ' ' . $tur['time']) > time()) { // not expired - $expiration = date('Y-m-d', strtotime($tur['expiration']." +$days day")); - }else{ + $expiration = date('Y-m-d', strtotime($tur['expiration'] . " +$days day")); + } else { //expired $expiration = date('Y-m-d', strtotime(" +$days day")); } @@ -759,7 +749,7 @@ $tur->status = "on"; $tur->save(); App::setToken($stoken, $id); - if($status=='off'){ + if ($status == 'off') { if ($tur['routers'] != 'radius') { $mikrotik = Mikrotik::info($tur['routers']); $client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); diff --git a/ui/ui/plan.tpl b/ui/ui/plan.tpl index 67704fa0..bb27d8aa 100644 --- a/ui/ui/plan.tpl +++ b/ui/ui/plan.tpl @@ -75,7 +75,7 @@ {/if} {if $ds['status']=='off' && $_c['extend_expired']} {Lang::T('extend')} + class="btn btn-info btn-xs">{Lang::T('Extend')} {/if} diff --git a/ui/ui/voucher.tpl b/ui/ui/voucher.tpl index b106630f..f1392b7a 100644 --- a/ui/ui/voucher.tpl +++ b/ui/ui/voucher.tpl @@ -16,31 +16,34 @@
- -
+ +
-
- -
-
- Print -
-
-
  +
+ +
+
+ Print +
+
+
 
@@ -82,8 +85,7 @@
{if $ds['status'] neq '1'} -   {Lang::T('View')}   {/if} {if in_array($_admin['user_type'],['SuperAdmin','Admin'])} @@ -105,4 +107,4 @@ -{include file="sections/footer.tpl"} +{include file="sections/footer.tpl"} \ No newline at end of file diff --git a/version.json b/version.json index 8d38957f..83503b76 100644 --- a/version.json +++ b/version.json @@ -1,3 +1,3 @@ { - "version": "2024.4.21" + "version": "2024.4.23" } \ No newline at end of file