Open
Conversation
|
🔄 AI PR Review sedang antri di server...
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
issue # #1281
🎯 Deskripsi
Pull request ini memperbaiki dua permasalahan pada halaman Pengaturan Identitas (
/pengaturan/identitas/{id}/edit):Logo Tidak Tampil Setelah Diunggah (Broken Image Icon):
storage/app/public/img, namun jika symlink penyimpanan (public/storage) belum terbentuk di lingkungan lokal/server atau bermasalah, browser gagal memuat berkas dan menghasilkan status404 Not Found.IdentitasController::logo()sebelumnya hanya memeriksapublic_path('storage/img/'), sehingga route/pengaturan/logojuga gagal menemukan berkas fisik distorage_pathdan jatuh kembali ke gambar default.IdentitasController::logo()diperkuat untuk memeriksastorage_path('app/public/img/...')terlebih dahulu sebelumpublic_path(...), tag<img>pada antarmuka ditambahkan penanganan fallback gambar menggunakanx-on:errorkeopensid_logo.png, serta alur reload setelah unggah logo disinkronkan dengan penutupan pop-up konfirmasi SweetAlert.Dropdown "Pilih Kab" Menampilkan Nilai
undefined(Contoh:ACEH - undefined,BALI - undefined):resources/views/identitas/edit.blade.php, Select2 provinsi dan kabupaten hanya menetapkan opsi awal melalui propertiplaceholder. Pada komponen Select2, placeholder tidak menghasilkan elemen<option>dan tidak mengubah nilai.val(), sehingga$('select[name=prov]').val()bernilainull.index.php/api/wilayah/list_wilayahtanpa parameterkode, API Pantau mengembalikan daftar Provinsi (kode_prov&nama_prov) alih-alih data kabupaten.value.nama_prov + ' - ' + value.nama_kab. Karena data yang diterima adalah provinsi, propertinama_kabdankode_kabbernilaiundefined, yang menyebabkan opsi dropdown bertuliskan[NAMA_PROVINSI] - undefineddengan IDundefined.new Option(...)dan di-append ke<select>sesuai data identitas yang ada. Parameterkodepada AJAX kabupaten dilengkapi dengan fallback nilaidataIdentitas.kode_provinsi, hasil respons difilter secara ketat hanya untuk item yang memilikikode_kabdannama_kab, serta ditambahkan sinkronisasi event pergantian provinsi untuk mereset kabupaten secara otomatis.🛠️ Perubahan yang Dilakukan
1.
resources/views/identitas/edit.blade.phpFix — Inisialisasi opsi Select2, filter data kabupaten, event listener, dan penanganan fallback logo:
x-on:errorpada tag<img>logo untuk menangani kasus jika gambar gagal dimuat agar otomatis kembali ke logo default OpenSID tanpa menampilkan broken image.<option>terpilih padaselectProvdanselectKabberdasarkan datathis.dataIdentitassaat pertama kali dimuat.$('select[name=prov]').val() || _this.dataIdentitas.kode_provinsipada parameterkodesaat melakukan pencarian kabupaten.processResultsdengan.filter(value => value.kode_kab && value.nama_kab)agar data non-kabupaten tidak diproses menjadi teksundefined.select2:selectdanselect2:clearpada provinsi untuk mereset nilai kabupaten saat provinsi diubah atau dihapus.uploadGambar()agar me-reload halaman setelah modal SweetAlert selesai ditutup (.then(...)), konsisten dengan fungsi upload favicon.2.
app/Http/Controllers/IdentitasController.phpFix — Prioritaskan pencarian berkas logo pada
storage_pathdan sediakan fallback default:storage_path('app/public/img/'.$path->logo)terlebih dahulu.public_path('storage/img/'.$path->logo).public_path('assets/img/opensid_logo.png').3.
tests/Feature/IdentitasControllerApiTest.phpTest — Penambahan pengujian route
/pengaturan/logo:test_get_logo()untuk memverifikasi ketersediaan endpoint penyajian logo.test_get_logo_fallback_when_null()untuk memverifikasi fallback logo default saat kolom logo kosong.✅ Test Cases yang Diimplementasikan
200 OK./pengaturan/logomenyajikan berkas logo dari penyimpanan fisik secara tepat./pengaturan/logotetap aman dan menyajikan berkas fallback defaultopensid_logo.pngjika identitas belum memiliki logo.undefined.x-on:errorsehingga antarmuka tidak menampilkan ikon broken image jika berkas logo gagal dimuat.IdentitasControllerApiTestberhasil dijalankan dan lulus 100%.📸 Cara Menjalankan Uji Coba Manual
php artisan storage:link./pengaturan/identitas)./pengaturan/identitas/1/edit).BALI).BALI - TABANAN).BALI - BADUNG,BALI - BANGLI,BALI - BULELENG, dst.) tanpa ada teksundefined.JAWA TIMUR):🤖 Cara Menjalankan Uji Coba Otomatis (Automated Test)
Jalankan perintah pengujian fitur melalui PHPUnit:
📸 Screenshot atau Video
https://github.com/user-attachments/assets/09a92a6e-50e9-4f95-8e89-ca27700c8985
(sesudah)