Professional Documents
Culture Documents
SKRIPSI
Diajukan oleh
SUNU WIBIRAMA
NIM 03/165034/TK/28452
TUGAS AKHIR
ii
HALAMAN PERSEMBAHAN
(Muhammad SAW.)
(Hasan Al Banna)
iii
iv
KATA PENGANTAR
Tema pemrograman selalu menjadi hal yang menarik untuk penulis. Awal
bahasa PHP dan database MySQL. Interaksi penulis bersama dunia pemrograman
Berbagai macam framework dan Content Management System (CMS) telah dicoba.
Sampai saat ini, masih sangat sedikit CMS open source yang diimplementasikan
pembimbing, Bapak Lukito Edi Nugroho dan Ibu Indriana Hidayah, atas
memberi dukungan baik moral maupun finansial bagi penulis selama mengerjakan
v
tugas akhir ini; Bapak Mujiharjo yang selalu setia memberikan saran dan kritik
semangat kalian; seluruh kru Magatrika 2003 yang rela menyisihkan waktunya
untuk menjadi penguji aplikasi iLab ini; “keluarga ketiga”-ku yang memberi
semangat dan saran, Ustadz Nurkholis Wijayanto, Ustadz Wahid Musthofa, Arif
Kurniawan, Susilo, Tyas Ikhsan Hikmawan, Trapsi Haryadi, dan Lukman Hakim
yang selalu berapi-api; seluruh kru remaja masjid, pengurus Masjid Margo
seluruh staf Teknik Elektro Universitas Gadjah Mada, atas bantuannya dalam hal
forum diskusi; seluruh kru Idcake.Web.Id yang memberi saran dan semangat;
Nicholas Mario Wardhana atas dukungan, saran dan kerelaannya menjadi penguji
Akhir kata, penulis mengharapkan saran dan kritik yang membangun bagi
Penulis
vi
DAFTAR ISI
vii
3.2.3 Halaman Administrasi.................................................................................. 51
3.2.4 Halaman Menu Administrasi........................................................................ 52
3.3 PERANCANGAN BASIS DATA ............................................................................... 53
3.3.1 Diagram E-R (ERD / Entity Relationship Diagram) .................................... 53
3.3.2 Diagram LRS (Logical Record Structure).................................................... 56
3.3.3 Rancangan Tabel Basis Data ....................................................................... 59
3.4 DISAIN ARSITEKTUR SISTEM ............................................................................... 65
3.4.1 Arsitektur MVC pada CMS iLab................................................................... 65
3.4.2 Hak Akses User............................................................................................. 66
3.4.3 Use Case....................................................................................................... 67
3.4.4 Program Flow............................................................................................... 70
3.5 KOMPONEN CMS ................................................................................................. 72
3.5.1 Framework CakePHP................................................................................... 72
3.5.2 Pustaka Utama (webroot)............................................................................. 73
3.5.3 Pustaka Tambahan ....................................................................................... 75
3.5.4 Konfigurasi ................................................................................................... 78
3.5.5 Modul utama................................................................................................. 81
3.5.5.1 Modul Home........................................................................................... 82
3.5.5.2 Modul News ........................................................................................... 83
3.5.5.3 Modul Profile.......................................................................................... 85
3.5.5.4 Modul Practicum .................................................................................... 86
3.5.5.5 Modul Resource...................................................................................... 89
3.5.5.6 Modul Project and Research................................................................... 90
3.5.5.7 Modul Guestbook ................................................................................... 91
3.5.5.8 Modul Link............................................................................................. 92
3.5.5.9 Modul User............................................................................................. 92
3.5.5.10 Modul Setting........................................................................................ 93
3.5.6 Diagram Inheritance Modul Utama ............................................................. 94
3.5.7 Modul tambahan........................................................................................... 98
3.5.7.1 Modul Login........................................................................................... 98
3.5.7.2 Modul Installer ....................................................................................... 99
BAB IV IMPLEMENTASI DAN PENGUJIAN APLIKASI .................................... 100
4.1 ALAT DAN BAHAN YANG DIGUNAKAN .............................................................. 100
4.1.1 Peralatan yang Digunakan......................................................................... 100
4.1.2 Bahan yang Digunakan .............................................................................. 101
4.2 IMPLEMENTASI KOMPONEN CMS...................................................................... 101
4.2.1 Framework CakePHP................................................................................. 101
4.2.2 Modul Utama.............................................................................................. 105
4.2.2.1 Modul Home......................................................................................... 105
4.2.2.2 Modul News ......................................................................................... 110
4.2.2.3 Modul Profile........................................................................................ 117
4.2.2.4 Modul Practicum .................................................................................. 118
4.2.2.5 Modul Resource.................................................................................... 133
4.2.2.6 Modul Project and Research................................................................. 137
4.2.2.7 Modul Guestbook ................................................................................. 139
4.2.2.8 Modul Link........................................................................................... 141
4.2.2.9 Modul User........................................................................................... 142
4.2.2.10 Modul Setting...................................................................................... 144
4.2.3 Modul Tambahan........................................................................................ 145
viii
4.2.3.1 Modul Login......................................................................................... 145
4.2.3.2 Modul Installer ..................................................................................... 146
4.3 PENGUJIAN SISTEM ............................................................................................ 148
4.3.1 Metode Pengujian....................................................................................... 148
4.3.2 Pengujian Antarmuka ................................................................................. 149
4.3.3 Pengujian Instalasi Sistem.......................................................................... 152
4.3.3.1 Implementasi pada sistem operasi Microsoft Windows ....................... 152
4.3.3.2 Implementasi pada sistem operasi Ubuntu Linux................................. 153
4.3.3.3 Implementasi pada sistem operasi OpenBSD....................................... 155
4.3.3.4 Rekomendasi Metode Instalasi ............................................................. 156
4.3.4 Interaksi User dan Sistem........................................................................... 159
4.3.4.1 Uji Praktikan......................................................................................... 159
4.3.4.2 Uji Administrasi ................................................................................... 161
4.3.5 Analisis Umum Hasil Pengujian................................................................. 163
4.4 EVALUASI SISTEM .............................................................................................. 164
4.4.1 Evaluasi terhadap Tujuan Penelitian ......................................................... 164
4.4.2 Hambatan terhadap Penelitian................................................................... 165
4.4.3 Kemungkinan Pengembangan Sistem Lebih Lanjut ................................... 165
BAB V KESIMPULAN DAN SARAN ........................................................................ 167
5.1 KESIMPULAN ...................................................................................................... 167
5.2 SARAN ................................................................................................................ 168
DAFTAR PUSTAKA.................................................................................................... 169
ix
DAFTAR GAMBAR
x
Gambar 3.25 Diagram Inheritance class-class Controller (2)........................................ 97
Gambar 4.1. Penggunaan fungsi niceShort(). ............................................................... 102
Gambar 4.2. Penggunaan fungsi niceShort() pada antarmuka. .................................... 102
Gambar 4.3. Fungsi niceShort() yang sudah dimodifikasi. ........................................... 103
Gambar 4.4. Penggunaan fungsi timeAgoInWords() pada antarmuka. ........................ 103
Gambar 4.5. Fungsi timeAgoInWords() yang sudah dimodifikasi. ............................... 105
Gambar 4.6. Validasi input pada Model Home............................................................. 106
Gambar 4.7. Penulisan pesan kesalahan pada View..................................................... 106
Gambar 4.8. Fungsi beforeFilter() ................................................................................ 107
Gambar 4.9. Info login saat user ’sunu’ sedang login .................................................. 108
Gambar 4.10. Fungsi index() pada class HomesController.......................................... 108
Gambar 4.11. Fungsi add() pada class HomesController............................................. 109
Gambar 4.12. Halaman administrasi modul Home....................................................... 110
Gambar 4.13. Class Model Home.................................................................................. 111
Gambar 4.15. Deklarasi variabel class NewsController............................................... 112
Gambar 4.15. Fungsi edit() pada class NewsController ............................................... 113
Gambar 4.16. Mengambil record dari field ’name’ tabel newscategories.................... 114
Gambar 4.17. Hasil pengambilan record oleh NewsController.................................... 114
Gambar 4.18. Fungsi search() pada class NewsController .......................................... 115
Gambar 4.19. Tampilan live search pada bagian View modul News............................ 115
Gambar 4.20. Tiga kondisi fitur Live Search ................................................................ 116
Gambar 4.21. Halaman depan modul News.................................................................. 117
Gambar 4.22. Fungsi main() pada class ProfilesController ......................................... 118
Gambar 4.23. Asosiasi has many pada class Practicumname ...................................... 119
Gambar 4.24. Fungsi index() pada class PracticumnamesController .......................... 120
Gambar 4.25. Fungsi index() pada class PracticumnamesController .......................... 121
Gambar 4.26. Setting aktivasi pada fungsi index() PracticumschedulesController...... 123
Gambar 4.27. Fungsi register() pada PracticumschedulesController .......................... 124
Gambar 4.27. Fungsi cetak() pada PracticumschedulesController .............................. 125
Gambar 4.27. Konverter MySQL ke spreadsheet pada file excel.thml.......................... 125
Gambar 4.28. Asosiasi HABTM pada Model Practicumname ...................................... 126
Gambar 4.29. Form isian data praktikan ...................................................................... 128
Gambar 4.29. Form isian jadwal praktikum ................................................................. 128
Gambar 4.30. CAPTCHA pada bagian akhir halaman pendaftaran praktikan ............ 129
xi
Gambar 4.31. Massive Checking pada PracticiansController...................................... 130
Gambar 4.31. Form update data praktikan ................................................................... 131
Gambar 4.32. Asosiasi belongs to pada Model Assistant.............................................. 132
Gambar 4.33. Asosiasi belongs to pada Model Resource ............................................. 133
Gambar 4.34. Fungsi add() pada ResourcesController ................................................ 134
Gambar 4.35. Fungsi delete() dan rdel() pada ResourcesController............................ 136
Gambar 4.36. Halaman depan modul Resource............................................................ 136
Gambar 4.37. Pilihan yang muncul saat link download diakses................................... 137
Gambar 4.38. Asosiasi pada Model Project.................................................................. 138
Gambar 4.39. Antarmuka halaman detail proyek dan riset .......................................... 139
Gambar 4.40. Model Guestbook.................................................................................... 140
Gambar 4.41. Antarmuka halaman komentar buku tamu.............................................. 140
Gambar 4.42. Antarmuka halaman link dan referensi .................................................. 141
Gambar 4.43. Asosiasi belongs to pada Model User .................................................... 142
Gambar 4.44. Fungsi add() pada UsersController ....................................................... 143
Gambar 4.45. Asosiasi pada Model Userstatus............................................................. 144
Gambar 4.46. Model Login............................................................................................ 145
Gambar 4.47. Proses pembuatan file database.php ...................................................... 147
Gambar 4.48. Fungsi __executeSQLScript()................................................................. 148
Gambar 4.49. CMS iLab berjalan pada sistem operasi Microsoft Windows ................ 153
Gambar 4.50. CMS iLab berjalan pada sistem operasi Ubuntu Linux ......................... 154
Gambar 4.51. CMS iLab berjalan pada sistem operasi OpenBSD ............................... 156
Gambar 4.52. Konfigurasi pada Apache Web Server.................................................... 158
Gambar 4.53. Konfigurasi tambahan pada file .htaccess.............................................. 158
Gambar 4.54. Konfigurasi lengkap pada file .htaccess................................................. 158
Gambar 4.55. Konfigurasi tambahan file index.php ..................................................... 158
Gambar 4.56. Pengujian aplikasi oleh staf Laboratorium Informatika ........................ 160
Gambar 4.57. Pengujian aplikasi oleh laboran Laboratorium Informatika ................. 162
xii
DAFTAR TABEL
xiii
BAB I
PENDAHULUAN
berhubungan dengan web publishing. Sebuah CMS secara umum bisa dikustomasi
dengan menambahkan atau mengurangi fitur yang spesifik, sehingga hanya fitur-
fitur tertentu yang diinginkan saja yang akan ditampilkan kepada publik. Dalam
forum diskusi, website jual beli online, website komunitas, galeri foto online, dan
1
Untuk selanjutnya akan disebut dengan CMS saja.
1
CMS untuk pengelolaan laboratorium dan praktikum yang dalam tugas
akhir ini diberi nama “iLab” merupakan sebuah CMS yang digunakan untuk
perguruan tinggi dalam melakukan pengelolaan segala hal yang terkait dengan
diharapkan proses riset dan praktikum yang ada di laboratorium akan semakin
meningkat. Selain itu, CMS ini juga akan memudahkan laboran dalam melakukan
dan laboran sesuai dengan jadwal yang telah disepakati. CMS laboratorium ini
nantinya bisa dikembangkan menjadi sebuah sistem informasi dengan modul yang
jarak jauh.
2
Pembuatan sistem informasi laboratorium diwujudkan dengan CMS
karena sistem CMS mampu diaplikasikan ke dalam semua lapisan, tidak hanya
Setiap laboratorium mempunyai ciri khas sendiri, oleh karena itu dibuat
informasi yang lebih kompleks dan spesifik, sesuai dengan tujuan penggunaan
ini adalah sebagai salah satu syarat untuk memperoleh gelar sarjana strata satu (S-
3
Pemilihan tema tugas akhir terkait dengan perancangan dan pembuatan CMS
1. Belum adanya CMS Open Source berbasis web buatan Indonesia yang
diarahkan pada sebuah aplikasi yang user friendly dengan navigasi yang
membuat CMS.
4
manapun yang meliputi pengelolaan info laboratorium, pendaftaran,
2. Merancang alur, modul dan logika kerja CMS dengan menggunakan UML
aplikasi.
5
Bab II : Dasar Teori. Bab ini berisi teori-teori dasar mengenai sistem
Bab III : Analisis dan Perancangan Sistem. Bab ini membahas kebutuhan
MySQL. Detail CMS juga akan dibahas pada bab ini, mulai dari
Bab V : Kesimpulan dan Saran. Bab ini berisi kesimpulan dan saran
6
BAB II
LANDASAN TEORI
berhubungan dengan web publishing. Sebuah CMS secara umum bisa dikustomasi
dengan menambahkan atau mengurangi fitur yang spesifik, sehingga hanya fitur-
fitur tertentu yang diinginkan saja yang akan ditampilkan kepada publik. Dalam
forum diskusi, website jual beli online, website komunitas, galeri foto online, dan
- Informasi, seperti teks dan gambar, yang bisa dilihat saat sebuah situs
- Aplikasi atau perangkat lunak yang berjalan pada server website dan
7
CMS lebih banyak mengacu pada aplikasi yang mengatur bagaimana informasi
tersebut ditampilkan. Masyarakat yang membuat dan mengatur dua tipe kategori
content yang telah disebutkan di atas, sebenarnya bekerja pada dua hal yang
(dalam hal ini adalah orang yang membuat dan bertanggung jawab terhadap
perancangan CMS memiliki alur yang mirip, yakni Create, Change, Approve, Test
dan Deploy.
Fraser (2002, h. 9-18) juga menerangkan, CMS setidaknya terdiri dari tiga
komponen content (bisa berupa teks, gambar, tabel, dan sebagainya) mulai dari
sebuah repository. Repository bisa diartikan sebuah basis data (database), sebuah
8
kumpulan berkas (file) atau kombinasi dari keduanya. Proses manajemen ini
berjalan secara sekuensial dan membentuk sebuah aliran kerja (workflow). CMA
tanpa harus memahami secara detail Hypertext Markup Language (HTML) atau
melibatkan webmaster.
masing user memiliki satu atau lebih aturan pada siklus manajemen komponen
content. Sebagian besar CMA memiliki sistem keamanan berbasis hak akses user
sebuah siklus yang seharusnya dimiliki oleh CMA. Adapun bagian dari siklus
9
1. Approval
website dengan birokrasi yang rumit, pihak yang berbeda atau user dengan tingkat
otoritas yang lebih tinggi harus melakukan approval sebelum proses dilanjutkan
ke tahap berikutnya dari siklus CMA. Sebaliknya, pada website yang lebih simpel,
kerjanya.
10
2. Design
Tahap ini berupa identifikasi dan penentuan komponen content yang akan
di-publish pada website. Pada beberapa CMS, tahapan ini melibatkan beberapa
perangkat lunak pihak ketiga (third party software) yang memudahkan pembuat
3. Authoring
yang sudah dibuat untuk di-publish ke halaman website. Pada beberapa CMS,
mengambil sebuah artikel dari website lain (berupa feed atau RSS) kemudian
manusia.
4. Editing
koordinasi yang cukup baik antara penulis artikel (author) dengan editor, sebab
bisa jadi keduanya melakukan overwrite content pada saat yang bersamaan.
5. Layout
ditampikan. Tugas dari CMA adalah menyediakan cara terbaik untuk memberikan
11
saran kepada MMA (Metacontent Management Application) terkait dengan layout
6. Testing
sudah diisi dengan content. Tahapan ini bisa berupa pengujian halaman web
Opera, Camino, Safari, dan sebagainya) atau bisa berupa pengujian hyperlink,
Javascript atau CSS), sehingga pengujian ini menjadi penting karena pengunjung
komputer mereka.
7. Staging
internet, semua komponen web dipindahkan ke staging server. Tujuan dari sebuah
staging server adalah membuat proses produksi web secara cepat dan utuh tanpa
terganggu oleh user. Pada website dengan skala kecil tahap ini bisa diabaikan
karena tahap staging membutuhkan biaya yang tidak sedikit. Biasanya setelah
proses produksi.
8. Deployment
12
deployment sangat bergantung pada jumlah server yang dimiliki dan jumlah
9. Maintenance
melakukan maintenance secara langsung pada sistem yang sedang online di server.
pada sistem yang sedang online, sebagaimana saat admin meng-upload semua file
10. Archival
11. Removal
Apabila komponen content tidak lagi memerlukan update dan sudah tidak
dibutuhkan, komponen tersebut harus segera dihapus. Hal ini bisa berarti sebuah
bentuk penghematan sumber daya yang dimiliki, utamanya pada space harddisk
13
komponen content diletakkan pada sebuah halaman website. Tujuan dari MMA
1. Approval
approval lebih banyak dilakukan oleh sebuah badan atau komite daripada
tersebut.
14
2. Analysis
bisnis harus dilakukan. Beberapa pertanyaan yang biasanya menjadi bahan acuan
analisis adalah : Bagaimana respon pasar terhadap perubahan yang dilakukan pada
perubahan skema warna pada halaman website lebih enak dipandang? Apakah
3. Design
pada website tersebut karena desain dari sistem harus benar-benar disetujui oleh
4. Creation
design yang telah dilakukan sebelumnya. Tanpa mengacu pada analysis dan
5. Build
6. Test
15
komponen content, tahapan testing metacontent adalah sebuah tahapan testing
dengan tingkat akurasi yang tinggi. Testing ini mengikuti standar proses
pengembangan perangkat lunak, meliputi : tes unit, tes string, tes sistem dan tes
rilis software.
7. Stage
Pada website dengan skala kecil, tahapan ini biasanya diabaikan dan metacontent
8. Deployment
9. Maintenance
metacontent selalu berada dalam kondisi yang baik dan memiliki algoritma yang
10. Removal
melalui MMA adalah salah satu atau kombinasi dari tiga tipe di bawah ini :
16
1. Templates
2. Scripts
side scripting yang berjalan pada server (seperti PHP dan ASP) serta client-side
3. Program
dijalankan pada server. Proses kompilasi ini diperlukan supaya program bisa
berjalan lebih cepat. Program juga memiliki fungsionalitas yang lebih luas dari
script karena mereka bisa menyediakan fungsionalitas yang terdapat pada server
menjalankan program ini bisa mempengaruhi kecepatan dan performa dari server.
17
CDA yang baik biasanya diatur secara penuh oleh metacontent. Hal ini
berarti metacontent menentukan apa yang akan ditampilkan dan bagaimana hal
tersebut ditampilkan. Ada banyak cara yang bisa dilakukan oleh metacontent
para developer.
sistem yang terdiri dari minimal tiga aplikasi, yakni Content Management
Delivery Application (CDA). Bagan alir (flowchart) simpel dari CMS bisa dilihat
MMA mengatur semua aspek yang berhubungan dengan metacontent. CDA men-
content dan metacontent dari repository (dalam hal ini server tempat file-file
tersebut disimpan).
18
2.1.3 CMS untuk Laboratorium
dan fungsionalitas khusus. Sebagian besar dari mereka adalah project open source
sekaligus free software. Dari berbagai jenis CMS tersebut, ada CMS yang
2
diimplementasikan untuk laboratorium, dikenal dengan LIMS (Laboratory
sebuah kombinasi antara perangkat lunak dan perangkat keras komputer yang
komputer. LIM dan LIS (Laboratory Information System) memiliki tugas yang
hampir serupa. Perbedaan utama antara LIMS dan LIS adalah, LIMS ditujukan
purpose, dan petrokimia, sedangkan LIS ditujukan untuk penelitian klinis (seperti
memanfaatkan kelebihan arsitektur dan platform dari sistem open source yang
menyediakan kapabilitas client/server dan akses yang luas pada seluruh informasi
laboratorium. Produl LIMS berbasis web juga banyak ditawarkan oleh berbagai
2
Untuk selanjutnya akan disebut LIMS saja.
19
perusahaan. XML (eXtensible Markup Language) digunakan dalam LIMS karena
otomatisasi berbasis web, dan mengintegrasikan aplikasi ini pada sebuah lingkup
informasi, tapi juga validasi informasi yang dikirimkan. Pada generasi LIMS
sebelumnya, proses ini dilakukan oleh teknologi dari prosesor dan sistem operasi
yang digunakan. Tapi tanpa teknologi prosesor terbaru dari komputer saat ini,
perkembangan LIMS akan terhenti begitu saja. Oleh karena itu, XML bisa disebut
LIMS, terlepas dari teknologi sistem operasi dan perangkat keras komputer yang
digunakan.
korporasi. Teknologi ini juga memudahkan akses data, pencarian data, dan
penggunaan query sesuai dengan standard SQL. Sebagian besar LIMS saat ini
terdiri dari beberapa layer dan modul yang terintegrasi dengan fungsi-fungsi yang
spesifik pada tiap-tiap modul, seperti fungsi audit, analisis statistik, dan pelaporan
yang efektif dari kinerja tiap-tiap modul LIMS. Selain itu, penggunaan database
20
2.2 Framework CakePHP
web yang powerful sekaligus mampu mengampu database dengan skala besar.
tinggi dalam waktu singkat. Di sisi lain, programmer juga dituntut untuk
menciptakan sebuah dasar aplikasi yang bisa dikembangkan menjadi aplikasi lain
dengan skala yang lebih besar dengan melibatkan banyak anggota tim. Menurut
sebagainya
Aplikasi web dengan skala besar tentu tidak bisa dilepaskan dari
pembagian peran anggota tim. Aplikasi web, terutama web berskala besar, tidak
21
manajer riset dan promosi dan manajer proyek yang akan mengatur jalannya
dan kesamaan cara pandang inilah yang melahirkan konsep kerangka kerja
reusable design and building blocks for a software system and / or subsystem.”
aktivitas yang sering dilakukan pada saat pelaksanaan proses pengembangan web.
mengembangkan aplikasi web dengan dasar kerja CRUD (Create, Read, Update,
22
Sunarfrihantono (2006, h.9) menjelaskan, Rapid Application Development
secara luas dalam konstruksi kerja prototype dari suatu sistem yang berkembang
untuk dikembangkan menjadi sebuah framework yang lebih lengkap dan praktis.
komunitas developer PHP dan saat ini proyek tersebut dikenal dengan nama
kebendaan. Jika dibuat program tentang hewan, programmer harus berpikir apa
3
Untuk selanjutnya akan disebut OOP saja
23
nama hewan, apa warna hewan, bagaimana hewan berkembang, bagaimana hewan
bergerak dan seterusnya. Jika dibuat program tentang sebuah benda, maka
programmer harus berpikir tentang data yang berhubungan dengan benda tersebut
dan apa yang dapat dikerjakan oleh maupun terhadap benda tersebut. OOP
• Encapsulation (enkapsulasi)
• Inheritance (pewarisan)
• Polimorphism (polimorfisme)
detail class dari object yang mengirimkan pesan kepadanya. Class adalah sebuah
tipe data yang user-defined, berisi karakteristik abstrak dari sebuah object (benda),
seperti atribut, properti, serta aksi yang bisa dilakukan oleh benda tersebut, atau
sering dikenal dengan istilah method. Object adalah instance dari class, atau
dengan kata lain object adalah implementasi dari class dengan data atau parameter
turunan (sub class) dari class induk yang memiliki sifat-sifat khusus, namun
memiliki pula sifat-sifat yang dimiliki oleh class induk. Sub class ini biasanya
memiliki karakter yang lebih khusus bila dibandingkan dengan class induk. Selain
sebuah usaha inheritance dengan class induk lebih dari satu, antara class induk
24
Polimorfisme memungkinkan object memiliki karakter yang berbeda-beda
saat program dijalankan, tergantung dari class induk yang dirujuk oleh object.
different classes take over the operations related to the application domain (the
model), the display of the application's state (the view), and the user interaction
Pada aplikasi komputer dengan skala besar yang melibatkan banyak user,
ini dengan memperkenalkan elemen baru yang dikenal dengan Controller, yang
25
Keterangan :
1. Model
Model adalah representasi spesifik dari informasi yang diolah oleh sebuah
aplikasi atau sering dikenal dengan domain logic. Model berperan dalam
memberikan data mentah yang terdapat pada database untuk diolah pada
2. View
26
3. Controller
Secara garis besar, proses request dan respond antara user dan aplikasi
antarmuka.
terdapat pada sebuah database, serta relasi antara tabel tersebut dengan tabel yang
lain. Model juga berisi aturan-aturan validasi data, yang digunakan saat data
diselingi dengan script PHP. Contoller CakePHP menangani request yang berasal
dari server, dalam hal ini request dari user melalui antamuka. Contoller
mengambil masukan dari user (yang biasanya berupa URL dan POST data),
data ke dan dari database serta sumber yang lain, dan terakhir, mengirimkan
27
keluaran ke file View yang sesuai. Untuk memudahkan programmer, CakePHP
menggunakan konsep MVC tidak hanya dalam hal metode interaksi obyek dengan
Gambar 2.6 Alur kerja dan konsep MVC pada CakePHP (Bird, 2006)
28
2.2.5 Arsitektur CakePHP
MVC memiliki alur kerja yang spesifik. Gambar 2.8 memberikan penjelasan lebih
Dispatcher tidak berfungsi, browser tidak akan menampilkan hasil dari request
user.
1
Apache / IIS
User
2
Database
Dispatcher
8 6
3 5
7 Model
Controller
View
4
4 Redirect
requestAction()
CakePHP memiliki tiga buah folder utama, yakni folder /app, folder /cake
dan folder /vendors. Struktur penyimpan file dan folder pada framework CakePHP
29
Tabel 2.1 Struktur file dan folder framework CakePHP
Folder Utama Sub Foler Sub Foler Keterangan
Kedua Ketiga
/app - /app adalah folder tempat penyimpanan aplikasi
utama yang dibuat. Folder ini merupakan folder
yang berisi seluruh file, image, konfigurasi dari
aplikasi web
/config - berisi file-file konfigurasi untuk database,
routing aplikasi, setting framework, ACL
(Access Control List), dan sebagainya
/controllers - folder penyimpanan Controller utama
/components - folder penyimpanan Component, sebagai
pendukung Controller utama
/index.php - memungkinkan developer untuk
mengembangkan aplikasi web dengan folder
/app sebagai Document Root
/models - folder tempat penyimpanan file-file Model
/plugins - folder tempat penyimpanan plugins. Plugins
adalah aplikasi kecil yang dibuat dari CakePHP
sebagai dukungan terhadap aplikasi utama
/tmp - digunakan untuk penyimpanan file-file cache
dan log dari aplikasi
/vendors - digunakan sebagai tempat penyimpanan file-
file pustaka PHP lainnya
/views - folder tempat penyimpanan file-file View
dengan ekstensi *.thtml (untuk CakePHP versi
1.1.x.xxxx) dan *.tpl (untuk CakePHP versi
1.2.x.xxxx).
/elements - folder tempat penyimpanan element, yang
mendukung View utama.
/errors - folder tempat penyimpanan file-file
penanganan error.
/helpers - folder tempat penyimpanan file-file helper
/layout - folder tempat penyimpanan file-file layout
antarmuka
/pages - folder tempat penyimpanan halaman statis
/webroot - webroot adalah Document Root dari aplikasi
web
/css - folder tempat penyimpanan file-file CSS
/files - folder tempat penyimpanan file-file lain yang
mendukung aplikasi
/img - folder tempat penyimpanan file-file gambar
/js - folder tempat penyimpanan file-file Javascript
/cake - folder utama tempat file-file pustaka
framework CakePHP diletakkan
/vendors - digunakan sebagai tempat penyimpanan
aplikasi web third party untuk seluruh aplikasi
yang di-hosting di server tersebut.
30
2.2.6 Kelebihan dan Kekurangan
ini karena beberapa kelebihan yang dimiliki (Anderson & Masters, 2006a) , antara
lain :
1. Open Source
lisensi GPL (General Pubic License). Ini adalah salah satu syarat yang baik untuk
31
5. Konsep CRUD terintegrasi
query.
Class-class yang menjadi dasar dari CakePHP ditulis dengan konsep OOP
7. Fitur Scaffolding
aplikasi yang dikembangkan, dengan sarana yang lebih mudah dipahami. Fitur ini
session, keamanan (security) dan request handling yang sudah terintegrasi dalam
32
tersebut pada Controller aplikasi dan memasukkan parameter-parameter untuk
yang indah dan mudah dimodifikasi. CakePHP mempunyai class helper yang
Sampai saat ini, rilis terbaru dari CakePHP belum memasukkan class yang
33
BAB III
yang berbasis web (disimbolkan dengan huruf “i” pada kata “iLab”) dan
Gadjah Mada. Selain pengamatan, metode lain yang digunakan adalah wawancara
dengan pengelola laboratorium (dalam hal ini adalah laboran dan asisten) dan
salah satu objek pendukung penelitian karena beberapa alasan berikut ini :
34
yang digunakan di jaringan lokal laboratorium (server Poseidon, dengan
sistem operasi OpenBSD) dan jaringan lokal (Local Area Network) yang
dijadikan sebagai lokasi utama untuk data entry pada saat pengisian KRS
tulis dan hasil penelitian, dan sebagainya). Pembuatan CMS berbasis web
35
- Sistem pendaftaran manual yang mudah sekaligus rawan disalahgunakan.
kemungkinan adanya data yang keliru saat dilakukan entry data. Beberapa
bentuk soft copy (misalnya berbentuk file PDF). Selain penghematan biaya,
36
dengan disajikannya kebutuhan praktikum dalam bentuk soft copy, tidak
ada lagi alasan bagi praktikan untuk tidak menjalankan praktikum sesuai
dengan peraturan.
- Tidak adanya media yang mudah diakses (online) dan informatif, yang
media informasi ini sedikit banyak berpengaruh saat ada dua buah institusi
37
Indonesia) yang diselenggarakan setiap tahun. Namun demikian,
dokumentasi dan publikasi hasil penelitian ini dirasa masih sangat kurang,
38
3. Otomatisasi pengolahan data pendaftaran praktikum dengan cara
PERMASALAHAN SOLUSI
- pendaftaran manual - otomatisasi pendaftaran
- pengolahan data manual - otomatisasi pengolahan data
- tidak ada repository resource praktikum - pembuatan repository resource praktikum
- belum ada media informasi online - media informasi online laboratorium
- pembatasan hak akses pengguna
CMS iLab - otomatisasi instalasi sistem
- mudah digunakan (user friendly)
39
Sistem informasi berupa CMS laboratorium ini juga mensyaratkan
1. Komputer server sebagai server iLab. CMS iLab akan di-install pada
server ini. CMS iLab dibangun dengan bahasa pemrograman PHP dan
Apache Web Server karena kemudahannya, instalasi PHP versi 4.3 ke atas,
2. Komputer client, sebagai client iLab. Praktikan, laboran, atau dosen akan
Elektro, iLab bisa dipasang pada server lokal Jurusan Teknik Elektro dan masing-
masing laboratorium diberikan account yang berbeda. Akses ke CMS iLab bisa
Elektro melalui kabel UTP atau dengan menggunakan komputer portabel (laptop)
komputer client, dengan catatan akses ke web server dilakukan dengan mengakses
40
- Sistem Operasi
- Apache Web Server
- PHP 4.3. ke atas
- MySQL server
Komputer Server
Komputer PC
Komputer Laptop
Palm Computer
dari satu dengan jadwal yang berbeda untuk masing-masing mata praktikum. Oleh
karena itu, perlu adanya sebuah aturan main yang jelas untuk mekanisme
untuk seluruh praktikum secara bersamaan, praktikan bisa memasukkan data diri
satu kali untuk beberapa praktikum yang ia ambil dalam satu semester.
41
Keuntungan lainnya adalah, praktikan akan lebih mudah menyesuaikan diri
jadwal, baik melalui laboran maupun secara manual dilakukan oleh praktikan
sendiri. Untuk lebih jelasnya, aturan pendaftaran praktikan yang akan diterapkan
diri sesuai dengan jadwal yang bersesuaian. Halaman pendaftaran berisi data diri
tidak akan mendaftarkan diri pada jadwal yang sama apabila ia sudah pernah
memasukkan data sebelumnya. Hal ini sangat mungkin terjadi pada saat
CMS juga akan dilengkapi sebuah mekanisme yang akan menghilangkan pilihan
praktikan.
42
MULAI
Melihat profil
praktikum
Melihat
jadwal
praktikum
KOSONG ?
Tidak
Ya
Daftar
sebagai
praktikan
Cek apakah
Tampilkan
pernah mendaftar
pesan error
sebelumnya Ya
Tidak
Simpan
data
praktikan
Tampilkan
data
praktikan
Update data
praktikan BENAR ?
Tidak
Ya
SELESAI
43
aspek pemerataan lowongan asisten kepada seluruh mahasiswa, asisten
dari satu praktikum di laboratorium yang sama. Pembatasan ini juga didasarkan
pada pengamatan, dimana asisten-asisten praktikum yang ada selama ini hanya
menampilkan mata praktikum yang ada dan jadwal praktikum yang terkait.
Setelah itu, asisten dipersilahkan untuk mendaftarkan diri sesuai dengan jadwal
yang masih tersedia. Fasilitas pendaftaran asisten ini tidak dilengkapi dengan
fasilitas update data secara manual. Apabila nantinya ditemukan kesalahan pada
praktikum, asisten harus menghubungi laboran untuk mengganti data yang sudah
sesuai dengan kemampuannya. Diagram alir pendaftaran asisten pada CMS iLab
44
MULAI
Melihat
informasi
asisten
Melihat
jadwal
praktikum
KOSONG ?
Tidak
Ya
Daftar
sebagai
asisten
Cek apakah
Tampilkan
pernah mendaftar
pesan error
sebelumnya Ya
Tidak
Simpan
data
asisten
Update data
asisten
Tampilkan
data
asisten
Hubungi
BENAR ?
laboran
Tidak
Ya
SELESAI
45
3.1.3 Pengolahan Data Pendaftaran Praktikum
pendaftaran praktikan dan asisten yang sudah masuk dalam database. Pada
mekanisme pendaftaran manual, laboran harus memasukkan kembali satu per satu
data mahasiswa ke dalam komputer. Proses ini tentu membutuhkan waktu yang
tidak sedikit. CMS iLab mempersingkat hal ini dengan memberikan fitur konversi
fitur ini, laboran hanya perlu menekan tombol Export Data untuk mengekspor
daftar praktikan dan asisten sesuai dengan jadwal yang praktikum yang diinginkan.
Setelah dilakukan konversi, secara otomatis data praktikan dan asisten akan
diisikan pada tabel pendaftaran praktikum sesuai dengan jadwal praktikum. Proses
konversi ini biasanya memakan waktu kurang dari 10 detik. Adapun contoh
format tabel pendaftaran praktikum digambarkan pada Tabel 3.1 di bawah ini.
SENIN (13.00-15.00)
No. Nama Lengkap NIM Angkatan
Asisten Praktikum
No. Nama Lengkap NIM Angkatan
Selain fitur tersebut, CMS iLab juga dilengkapi dengan fitur Hapus Massal
46
apabila diperlukan. Penghapusan massal ini diperlukan saat pergantian semester
atau tahun ajaran. Namun demikian, diharapkan laboran melakukan back up data
komputer.
sebagainya.
berlangsung di laboratorium.
47
7. Fitur halaman administrasi (modul administrasi) yang memudahkan
content CMS.
modul utama CMS iLab, yakni modul manajemen pendaftaran dan pengolahan
data praktikum.
Halaman pengunjung adalah halaman CMS iLab yang diakses oleh asisten,
48
Menu Utama
Logo iLab
Bagian atas halaman adalah menu utama. Menu utama berisi link-link ke
modul-modul utama CMS iLab. Untuk membedakan modul yang sedang aktif dan
tidak aktif, saat sebuah modul diakses warna latar belakang menu yang terkait
dengan modul tersebut berubah. Logo iLab berupa tulisan “::iLab laboratory
menu pendukung yang berisi link-link terkait dengan modul yang sedang aktif.
Bagian tengah adalah konten utama modul yang berisi informasi utama yang
disajikan. Bagian bawah adalah footer berupa copyright dan tahun pembuatan
produk iLab.
49
3.2.2 Halaman Login
halaman pengunjung. Konten utama halaman login berupa form isian username
dan password, serta dilengkapi dengan fitur CAPTCHA yang akan menampilkan
kombinasi huruf dan angka yang berbeda-beda setiap kali halaman browser di-
brute force yang mengotomatisasi input data username dan password secara acak
Menu Utama
Logo iLab
USERNAME
PASSWORD
Capt cha
OK
50
3.2.3 Halaman Administrasi
bawah dan digantikan oleh link logout dan menu administrasi. Menu administrasi
adalah menu khusus administrasi terkait dengan modul yang sedang aktif. Menu
administrasi hanya akan muncul saat user memiliki hak akses ke modul yang
sedang aktif. Di bagian atas konten utama, aplikasi CMS iLab akan memberikan
informasi terkait dengan nama user yang saat itu sedang login disertai dengan link
untuk logout.
Menu Utama
Logout
Menu
Administ rasi
Logout
Kont en ut ama modul
Menu
Pendukung
51
3.2.4 Halaman Menu Administrasi
user pada saat user berhasil login. Halaman ini mirip dengan halaman administrasi,
hanya saja konten utama halaman berisi menu utama administrasi modul-modul
yang ada pada CMS iLab. Untuk memudahkan user, menu utama ini dilengkapi
Menu Utama
Logout
Administ rasi Administ rasi Administ rasi Administ rasi Administ rasi
modul 1 modul 2 modul 3 modul 4 modul 5
Logout
Administ rasi Administ rasi Administ rasi Administ rasi Administ rasi
modul 6 modul 7 modul 8 modul 9 modul 10
52
3.3 Perancangan Basis Data
adalah menyusun hubungan antar entitas basis data yang ada. Berdasarkan
diselenggarakan di laboratorium.
masing praktikum.
6. Users. Entitas ini mewakili semua pengguna yang berhak memiliki hak
laboratorium
10. News. Entitas ini mewakili berita dan informasi kegiatan laboratorium.
laboratorium.
53
13. Homes. Entitas ini mewakili halaman depan CMS iLab.
tabel basis data. Penamaan tabel merupakan bentuk jamak bahasa Inggris dari
entitas, diawali dengan huruf kecil. Sebagai contoh, entitas “buku tamu” nantinya
nama entitas dibuat serupa dengan nama tabel. Adapun perancangan diagram E-R
54
55
Gambar 3.9 Diagram E-R basis data CMS iLab
3.3.2 Diagram LRS (Logical Record Structure)
dengan lebih jelas. Selain itu, diagram LRS juga berfungsi untuk mengetahui hasil
Artinya, antara dua entitas tersebut harus dilakukan normalisasi sehingga tidak
ada kerancuan primary key dalam rancangan tabel basis data. Adapun entitas-
entitas lain yang memiliki hubungan one to many (1:N) tidak memerlukan
normalisasi. Selain itu, ada juga beberapa entitas yang tidak memiliki kardinalitas
dengan entitas lain atau dikenal dengan entitas bebas. Pada diagram LRS, entitas
bebas ini akan digambarkan sebagai sebuah struktur bebas yang berdiri sendiri
Framework CakePHP memiliki aturan khusus untuk dua buah entitas yang
sebuah tabel normalisasi dari dua tabel yang berasosiasi. Peraturan penamaan
jamak entitas kedua]. Adapun urutan penamaan disesuaikan dengan urutan abjad,
56
memerlukan sebuah tabel tambahan bernama “practicians_practicumschedules”.
Tabel tambahan ini berisi primary key dari dua buah tabel yang berasosiasi,
dengan aturan penamaan [nama tunggal entitas_id]. Primary key pada tabel
diatur dalam CakePHP dengan konvensi penamaan asosiasi has many untuk
entitas yang berada di sisi kardinalitas pertama (1) dan belongs to untuk entitas
yang berada di sisi kardinalitas yang lain (N). Entitas practicumnames yang
memiliki asosiasi has many terhadap practicumschedules. Dengan kata lain, satu
buah entitas practicumnames bisa saja memiliki banyak (has many) entitas
sama. Diagram LRS memberikan notasi satu buah bintang (*) untuk menunjukkan
field tabel yang menjadi primary key dan dua buah bintang (**) untuk field tabel
yang menjadi foreign key. Hasil transformasi diagram E-R menjadi diagram LRS
57
58
Gambar 3.10 Diagram LRS basis data CMS iLab
3.3.3 Rancangan Tabel Basis Data
Rancangan tabel basis data adalah gambaran utuh dan lengkap dari semua
tabel yang ada pada database CMS iLab. Rancangan tabel ini juga menyertakan
informasi tiap-tiap atribut dan keterangan dari masing-masing field yang ada pada
tabel. Adapun rancangan tabel basis data selengkapnya adalah sebagai berikut :
Jumlah field :7
Primary key : id
Foreign key :-
Jumlah field :7
Primary key : id
59
3. Nama tabel : practicians
Jumlah field :5
Primary key : id
Foreign key :-
Jumlah field :7
Primary key : id
Jumlah field :2
Foreign key :-
60
6. Nama tabel : userstatuses
Jumlah field :2
Primary key : id
Foreign key :-
Jumlah field :8
Primary key : id
Jumlah field :2
Primary key : id
Foreign key :-
61
9. Nama tabel : news
Jumlah field :7
Primary key : id
Jumlah field : 10
Primary key : id
Jumlah field :7
Primary key : id
62
Foreign key : user_id
Jumlah field :6
Primary key : id
Foreign key :-
Jumlah field :5
Primary key : id
Foreign key :-
63
14. Nama tabel : homes
Jumlah field :5
Primary key : id
Foreign key :-
Jumlah field :2
Primary key : id
Foreign key :-
Jumlah field :8
Primary key : id
Foreign key :-
64
6. answer Text Jawaban pengelola
7. created Datetime Tanggal upload
8. modifies Datetime Tanggal modifikasi
Disain arsitektur CMS iLab sebenarnya tidak jauh berbeda dengan konsep
Bagian Model dari CMS iLab berisi class-class yang berhubungan langsung
dengan database dan mengatur hubungan antar tabel. Bagian Controller dari
CMS iLab berisi class-class yang mengatur dan menangani request dari user
CMS iLab. Sedangkan bagian View dari CMS iLab berisi semua file thtml yang
Gambar 3.11.
Apache
User CMS Web Server
Database
CMS iLab
Dispatcher
FILENAME
index Model
View Controller
FILENAME
add
PAGE
FILENAME
News Controller News Model News
edit
Controller Practician Model Practician
FILENAME
Controller Practicumname Model Practicumname
delete PAGE
Practician Controller Practicumschedule Model Practicumschedule
FILENAME
Controller Assistant Model Assistant
...........
Controller Project Model Project
FILENAME PAGE Controller Resource Model Resource
........... .......... ....... .......
65
3.4.2 Hak Akses User
Selain sistem yang diakses oleh semua pengunjung, CMS iLab memiliki
sistem administrasi yang hanya bisa diakses oleh user yang memiliki akses ke
halaman administrasi. CMS iLab memiliki empat kategori user, yakni : Admin
66
Adapun hak akses user untuk melakukan administrasi (manajemen)
modul-modul utama pada CMS iLab akan dijelaskan pada Tabel 3.4 di bawah ini.
dibuat diagram Use Case. Pada Gambar 3.12 ditampilkan diagram Use Case. Ada
5 aktor yang menggunakan CMS iLab, yakni Admin, Lecturer, Laboran, Member,
dan Guest. Guest adalah praktikan dan asisten, sedangkan keempat aktor lainnya
adalah user yang memiliki akses dengan tingkat akses yang berbeda. Berikut ini
67
Gambar 3.12 Use Case CMS iLab
68
Use Case : Aplikasi CMS iLab
Tugas aktor :
- Melakukan manajemen sistem informasi bagi aktor yang memiliki hak akses
ke sistem administrasi.
Pra kondisi :
Untuk bisa mengakses sistem administrasi, keempat aktor selain Guest harus
sudah terdaftar terlebih dahulu dan memiliki account aktif di sistem iLab.
Asumsi :
- keempat aktor selain Guest yang terdaftar pada sistem memiliki e-mail yang
valid.
- keempat aktor selain Guest yang terdaftar adalah civitas institusi atau mereka
Deskripsi :
Use Case ini merupakan Use Case umum CMS iLab yang terdiri dari sepuluh sub
sistem (modul). Use Case ini menggunakan bahasa Inggris untuk memudahkan
dalam disain sistem informasi. Sistem sebelah kiri (default system) adalah sistem
menjalankan modul-modul yang ada pada default system. Sistem sebelah kanan
(administration system) adalah sistem yang hanya bisa dijalankan oleh aktor yang
69
memiliki hak akses untuk masuk ke dalam sistem. Untuk masuk dan melakukan
dengan permission Admin Privilege hanya bisa diakses oleh admin. Modul dengan
permission Admin and Laboran Privileges bisa diakses oleh admin dan laboran.
Modul dengan permission Admin, Lecturer, Laboran Privileges bisa diakses oleh
admin, lecturer, dan laboran. Modul dengan permission All User Registered
Pengecualian :
Apabila aktor yang login ke sistem administrasi tidak melakukan aksi untuk
selang waktu tertentu (kurang lebih 2 menit), sistem secara otomatis akan
menghapus session dan aktor harus melakukan login ulang untuk mengakses
sistem administrasi.
Program flow adalah kombinasi antara disain arsitektur dan cara kerja
sistem berdasarkan arsitektur tersebut. CMS iLab yang dibangun dari framework
70
memiliki peran yang berbeda-beda. Program flow dari CMS iLab dijelaskan pada
Gambar 3.13.
Keyword Mendapatkan ID
Redirect ke
pencarian menuju url Validasi request
halaman error
(melalui path url) halaman data dan alokasi
resource
User Tidak (database)
Lakukan filtering
Cek keamanan
untuk objek (spam Proses data yang
(apakah user
filtering, HTML dimasukkan (form,
diperkenankan Memproses data
formatting, data post, search)
melakukan aksi ?) Ya yang
Hasil validation
dimasukkan
ditampilkan
Tidak
ke user
CONTROLLER
Redirect ke
halaman error
Parsing layout
Gunakan template
berdasarkan aksi dari Ambil konten yang
untuk tampilan
proses (html, rss, akan ditampilkan
layout modul
etc)
Menampilkan
data
Saat pertama kali mengakses sistem, user bisa mengakses item yang
diinginkan dengan cara melakukan pencarian atau dengan cara mengakses item
melalui menu atau navigasi yang tersedia. Sistem, dalam hal ini Model,
melakukan validasi request yang dilakukan user. Bila item yang diminta tidak ada
dalam database, sistem akan memberikan pesan kesalahan. Bila item yang
71
diminta ada pada database, sistem akan melakukan validasi hak akses user
terhadap item yang akan diakses. Apabila user tidak memiliki hak akses terhadap
item tersebut, sistem akan mengeluarkan pesan kesalahan. Apabila user diijinkan
mengakses item, sistem melakukan filtering pada data yang masuk. Setelah itu,
sistem akan memproses parameter dan data yang dimasukkan sesuai dengan
parsing berdasar aksi yang diinginkan oleh user. Parsing tampilan diawali dengan
mengambil layout yang sesuai dengan modul yang diakses. Setelah itu, sistem
sama dengan tampilan dasar modul yang diakses. Hasil parsing inilah yang dilihat
membangun CMS iLab. Pada struktur aplikasi, file-file class CakePHP terletak di
folder cake/. Pada pembuatan CMS iLab ini digunakan framework CakePHP versi
72
1.1.10.3825 (stabil). Sampai saat ini, framework CakePHP dikembangkan sampai
dengan versi 1.2.xx.xxxx (alfa). Perbedaan utama versi 1.1 dengan versi 1.2
adalah ekstensi file-file template (layout). Pada versi 1.1, ekstensi file adalah
*.thtml, sedangkan versi 1.2 menggunakan ekstensi *.tpl. Selain itu, ada beberapa
untuk versi 1.2. Pertimbangan pemakaian versi stabil adalah untuk mencegah
logika program atau sintaks program) pada sistem. Sebagai contoh, ada beberapa
fungsi dan pustaka tambahan (semacam AJAX) yang tidak lagi disertakan pada
versi alfa 1.2. Keputusan untuk meniadakan dukungan ini tentu bukan keputusan
final dan masih sangat mungkin akan dimunculkan kembali pada pengembangan
versi 1.2 selanjutnya. Penggunaan versi stabil 1.1 lebih aman karena dokumentasi
tampilan antarmuka sebagaimana yang diharapkan. Pustaka utama ini berisi file-
file gambar, CSS (cascading style sheet), Javascript, dan file-file yang mendukung
fungsi instalasi dan pengunduhan (download). Pustaka utama ini disimpan pada
folder app/webroot/. Beberapa pustaka utama yang terdapat pada file webroot
73
Gambar 3.14 Struktur pustaka utama
Gambar 3.13, file-file CSS diletakkan pada folder css/, demikian pula file-file
gambar diletakkan pada folder img/. Adapun seluruh file Javascript, berikut
digunakan untuk membuat tool-tool teks editor pada komponen HTML text area.
app/webroot/. File index.php ini memiliki peran penting pada beberapa tipe
74
3.5.3 Pustaka Tambahan
Selain pustaka utama, aplikasi CMS iLab ini juga memerlukan beberapa
1. Kcaptcha
Pustaka ini terletak di folder vendors/ paling luar, sejajar dengan folder
app/ dan cake/. Pustaka Kcaptcha ini berisi class-class yang men-generate
gambar dari huruf dan angka yang diacak melalui fungsi random(). Untuk
yakni sebuah class pustaka PHP yang bertugas menghasilkan gambar dari
<?php
$alphabet = "0123456789abcdefghijklmnopqrstuvwxyz";
$allowed_symbols = "23456789abcdeghkmnpqsuvxyz";
$fontsdir = 'fonts';
$length = 3;
$width = 110;
$height = 50;
$fluctuation_amplitude = 1;
$no_spaces = false;
$show_credits = false;
$foreground_color = array(0, 0, 0);
$background_color = array(255, 255, 255);
$jpeg_quality = 90;
?>
75
Variabel-variabel tersebut merupakan parameter dasar yang akan
2. Pagination
Javascript untuk bisa berjalan dengan baik, yakni file prototype.js dan
pagination secara fisik berbentuk sebuah file php yang diletakkan pada
76
Gambar 3.18 Implementasi pustaka Pagination
tersedia. Pustaka ini secara fisik berbentuk file php yang terletak di folder
app/view/helper/ .
fisik, pustaka ini berbentuk file php yang tersimpan pada folder
app/view/helper dan file thtml sebagai penampil tabel yang terdapat pada
pada instalasi PHP. Apabila pustaka XLST ini terpasang bersama instalasi
77
Gambar 3.19 Pustaka XSLT aktif
3.5.4 Konfigurasi
framework CakePHP pada folder app/config/. Tiga buah file konfigurasi yang
1. File core.php
File ini merupakan file penting yang menentukan mekanisme kerja framework
78
1, 2 atau 3. Apabila CakePHP digunakan untuk menjalankan aplikasi yang
telah selesai dibuat, disarankan untuk mengubah isi variabel menjadi 0. Saat
<?php
.............
/**
* Set debug level here:
* - 0: production
* - 1: development
* - 2: full debug with sql
* - 3: full debug with sql and dump of the current object
*
* In production, the "flash messages" redirect after a time
interval.
* With the other debug levels you get to click the "flash
message" to continue.
*/
define('DEBUG', 1);
..........
?>
2. File routes.php
File ini berisi konfigurasi halaman yang diakses pertama kali saat browser
diarahkan ke folder CMS iLab. Untuk keperluan instalasi, file ini harus
iLab akan melakukan checking file konfigurasi database dan instalasi sample
79
sudah ada, langkah selanjutnya adalah memeriksa keberadaan sample
akan melakukan instalasi. Apabila sample database sudah ada, modul instalasi
<?php
/* cek, apakah file konfigurasi sudah ada atau belum */
if (!file_exists('../config/database.php')){
$Route->connect('/', array('Controller' => 'pages', 'action'
=> 'display', 'home'));
}
/* cek, apakah sample database sudah diupload atau belum */
else if (!file_exists('../tmp/installed.txt')){
$Route->connect('/', array('Controller' => 'pages', 'action'
=> 'display', 'nosample'));
}
/* jika sudah, maka iLab siap digunakan */
else{
$Route->connect('/', array('Controller' => 'homes', 'action'
=> 'index'));
}
?>
3. File database.php
File ini adalah file utama yang menghubungkan aplikasi dengan server
database. File ini secara default disediakan oleh framework CakePHP. Namun
dalam pembuatan CMS iLab, file ini akan dihilangkan dan sebagai gantinya
80
digunakan oleh CMS iLab, seperti nama host, username, password, nama
database, dan prefiks (awalan) yang digunakan untuk tabel database. Secara
default, CMS iLab tidak menggunakan prefiks untuk nama tabel. Penggunaan
prefiks disarankan apabila dilakukan instalasi dua buah aplikasi pada satu
database.
<?php
//Ini adalah file konfigurasi CMS iLab
define('DB_NAME', 'ilab');
define('DB_USER', 'root');
define('DB_PASSWORD', 'root');
define('DB_HOST', 'localhost');
define('TABLE_PREFIX', '');
class DATABASE_CONFIG
{
var $default = array('driver' => 'mysql',
'connect' => 'mysql_connect',
'host' => DB_HOST,
'login' => DB_USER,
'password' => DB_PASSWORD,
'database' => DB_NAME,
'prefix' => TABLE_PREFIX);
}
?>
Sebagaimana telah dijelaskan pada sub bab 3.4.1, CMS iLab memiliki
Model, bagian Controller, dan bagian View. Beberapa modul membutuhkan class-
class Model dan Controller lebih dari satu. Penamaan file Model, View dan
Model diberi nama dengan nama tunggal dari tabel / entitas, diakhiri dengan
81
ekstensi *.php. File Controller diberi nama dengan [nama jamak
fungsi (atau lebih dikenal dengan istilah action pada aturan penamaan CakePHP)
Sebagai contoh :
seterusnya.
Modul yang menampilkan konten halaman depan CMS iLab. Modul home
merupakan modul yang diakses pertama kali saat pengunjung mengakses CMS
kardinalitas dengan entitas lainnya. Oleh karena itu, Model dari modul
82
b. Controller : class Controller untuk modul Home memiliki beberapa
- View. Pada fungsi ini ditampilkan data yang telah dimasukan database;
terkait dengan form isian untuk input data. Fungsi penghapusan (delete),
keluaran.
ini adalah :
a. Model : modul News memerlukan dua buah Model, yakni News dan
83
many, yakni satu buah entitas newscategory memiliki banyak entitas news.
antara lain :
- Detail. Pada fungsi ini ditampilkan detail berita yang dibaca pengunjung;
- View. Pada fungsi ini ditampilkan data yang telah dimasukan database;
live.
84
- Add. Fungsi ini digunakan untuk penambahan data;
ini adalah :
kardinalitas dengan entitas lainnya. Oleh karena itu, Model dari modul
- View. Pada fungsi ini ditampilkan data yang telah dimasukan database;
85
3.5.5.4 Modul Practicum
Modul Practicum adalah modul dengan jumlah class Model dan Controller
untuk manajemen praktikum. Selain itu, modul ini juga membutuhkan banyak
86
- Index. Pada fungsi ini ditampilkan halaman informasi asisten;
- View. Pada fungsi ini ditampilkan data yang telah dimasukan database;
asisten.
- Detail. Pada fungsi ini ditampilkan detail data dari praktikan yang telah
mendaftarkan diri.
- View. Pada fungsi ini ditampilkan data yang telah dimasukan database;
praktikum tertentu ;
87
- Deleteall. Fungsi untuk menghapus data praktikan secara massal ;
praktikan.
- Index. Pada fungsi ini ditampilkan halaman daftar praktikum yang aktif;
- View. Pada fungsi ini ditampilkan data yang telah dimasukan database;
- Index. Pada fungsi ini ditampilkan daftar jadwal praktikum sesuai nama
- Detail. Pada fungsi ini ditampilkan detail pelaksanaan salah satu jadwal
to XLS Converter.
88
- Register. Fungsi ini digunakan untuk menampilkan halaman registrasi
- View. Pada fungsi ini ditampilkan data yang telah dimasukan database;
Modul ini membutuhkan layout khusus saat melakukan konversi data dari
MySQL ke spreadsheet.
yakni :
89
- Detail. Pada fungsi ini ditampilkan detail informasi resource.
- Add. Fungsi ini digunakan untuk penambahan data dan upload resource;
ini adalah :
Project saja. Class ini memiliki asosiasi belongs to terhadap Model User
- Index. Pada fungsi ini ditampilkan halaman utama modul Project and
Research;
90
- Edit. Fungsi ini digunakan untuk update data ;
- View. Pada fungsi ini ditampilkan data yang telah dimasukan database;
lainnya.
yakni :
- View. Pada fungsi ini ditampilkan data yang telah dimasukan database;
penambahan pesan.
91
c. View : bagian View dari Modul Guestbook menggunakan sebuah folder
Modul ini berfungsi untuk menampilkan referensi online dan link ke situs
- View. Pada fungsi ini ditampilkan data yang telah dimasukan database;
c. View : bagian View dari Modul Link menggunakan sebuah folder Links
Modul ini berfungsi untuk manajemen user CMS iLab. Bagian-bagian dari
92
a. Model : membutuhkan dua buah Model, yakni User dan Userstatus.
yakni :
c. View : bagian View dari Modul User menggunakan dua buah folder,
Modul ini berperan pada pengaturan CMS iLab secara umum. Bagian-
93
- Index. Pada fungsi ini ditampilkan halaman utama modul Link ;
Class-class Model diatas diturunkan dari class AppModel dan class Object.
Secara garis besar, hubungan inheritance (pewarisan) antara Model dan class
ditunjukkan pada Gambar 3.24 dan 3.25. Dari diagram tersebut dapat disimpulkan
bahwa beberapa fungsi dan variabel yang digunakan pada class-class Controller
adalah fungsi dan variabel yang bersifat public dari class induknya. Tiap-tiap
login dan nama modul yang akan ditampilkan pada tag <title></title>.
94
Gambar 3.23 Diagram Inheritance class-class Model
95
96
Gambar 3.24 Diagram Inheritance class-class Controller (1)
97
Gambar 3.25 Diagram Inheritance class-class Controller (2)
3.5.7 Modul tambahan
modul tambahan, yakni modul Login dan Installer. Modul-modul ini adalah
modul yang tidak memerlukan tabel database, karena tidak memiliki entitas basis
data.
a. Model : class Login tidak memiliki asosiasi dengan Model yang lain.
pesan kesalahan ;
- Logout. Fungsi untuk menghapus session user saat user keluar dari
sistem administrasi.
c. View : bagian View dari Modul Login menggunakan folder Logins untuk
98
3.5.7.2 Modul Installer
Digunakan untuk instalasi CMS iLab secara default. Modul Installer akan
diakses oleh sistem apabila file database.php dan contoh konten database belum
CMS iLab.
melakukan pemeriksaan hak akses folder app/config/. Selain itu, fungsi ini
- Thanks. Setelah instalasi konten database selesai, fungsi ini membuat file
installed.txt pada folder app/tmp/ sebagai tanda bahwa aplikasi sudah bisa
berisi perintah-perintah SQL dan contoh data yang akan digunakan sistem.
keberadaan file database.php serta file *.sql yang berisi contoh konten
database.
99
BAB IV
memori 512 MB, hard disk 40 GB, kartu grafis ATI Mobility Radeon
2. Sistem operasi Mac OS X versi 10.4.10, dengan kernel inti Unix Darwin
versi 8.10.0. Aplikasi ini dikembangkan pada sistem operasi berbasis Unix
Unix.
3. Apache Web Server 2.0.55 Unix Version. Instalasi Apache Web Server ini
Mod_rewrite.
100
6. Browser yang digunakan untuk proses produksi adalah Mozilla Firefox
9. Concept Draw Web Wave versi 5.8 dan Omni Graffle Professional untuk
Bahan yang digunakan untuk pembuatan CMS ini adalah beberapa file
gambar dan ikon yang digunakan untuk navigasi, judul halaman (modul), dan
layout aplikasi. File-file ini bisa didapatkan secara gratis dari internet maupun dari
situs-situs khusus yang ditujukan untuk kelengkapan disain website. Semua bahan
berupa gambar dan ikon disimpan dalam satu folder, yakni folder img/ yang ada
Pada pembuatan CMS iLab ini framework CakePHP tidak terlalu banyak
parameter class Helper perlu diubah. Salah satu class yang mengalami sedikit
101
perubahan adalah class TimeHelper pada file time.php yang terletak di folder
cake/libs/view/helpers.
waktu. Class TimeHelper berisi beberapa fungsi yang bisa digunakan untuk
penulisan waktu. Fungsi yang perlu dimodifikasi ada dua, yakni fungsi
untuk menampilkan format waktu menjadi bentuk yang mudah dibaca. Beberapa
fungsi dengan menampilkan nilai waktu dalam format yang simpel dan mudah
Gambar 4.2 .
102
<?php
...
function niceShort($date_string = null, $return = false) {
$date = $date_string ? $this->fromString($date_string) :
time();
if ($this->isToday($date)) {
$ret = "Hari ini, " . " ". date("H:i", $date)." WIB";
} elseif($this->wasYesterday($date)) {
$ret = "Kemarin, " . " ". date("H:i", $date)." WIB";
} else {
$ret = date("j M {$y}, H:i", $date)." WIB";
}
dipahami. Namun demikian, fungsi ini menghitung selisih waktu tampilan data
saat ini dengan saat data tersebut dibuat. Fungsi ini menghitung selisih dan
menampilkannya dengan format detik, menit, jam, hari, dan seterusnya, sesuai
103
<?
....
function timeAgoInWords($datetime_string, $format = 'j/n/y',
$backwards = false, $return = false) {
$datetime = $this->fromString($datetime_string);
$in_seconds = $datetime;
if ($backwards) {
$diff = $in_seconds - time();
} else {
$diff = time() - $in_seconds;
}
$months=floor($diff / 2419200);
$diff -= $months * 2419200;
$weeks=floor($diff / 604800);
$diff -= $weeks * 604800;
$days=floor($diff / 86400);
$diff -= $days * 86400;
$hours=floor($diff / 3600);
$diff -= $hours * 3600;
$minutes=floor($diff / 60);
$diff -= $minutes * 60;
$seconds=$diff;
if ($months > 0) {
// over a month old, just show date (mm/dd/yyyy format)
$relative_date = 'on ' . date($format, $in_seconds);
$old = true;
} else {
$relative_date = '';
$old = false;
if ($weeks > 0) {
// weeks and days
$relative_date .= ($relative_date ? ', ' : '') . $weeks
. ' minggu' . ($weeks > 1 ? '' : '');
$relative_date .= $days > 0 ? ($relative_date ? ', ' :
'') . $days . ' hari' . ($days > 1 ? '' : '') : '';
} elseif($days > 0) {
// days and hours
$relative_date .= ($relative_date ? ', ' : '') . $days .
' hari' . ($days > 1 ? '' : '');
$relative_date .= $hours > 0 ? ($relative_date ? ', ' :
'') . $hours . ' jam' . ($hours > 1 ? '' : '') : '';
} elseif($hours > 0) {
// hours and minutes
$relative_date .= ($relative_date ? ', ' : '') . $hours
. ' jam' . ($hours > 1 ? '' : '');
$relative_date .= $minutes > 0 ? ($relative_date ? ', '
: '') . $minutes . ' menit' . ($minutes > 1 ? '' : '') : '';
} elseif($minutes > 0) {
// minutes only
104
$relative_date .= ($relative_date ? ', ' : '') .
$minutes . ' menit' . ($minutes > 1 ? '' : '');
} else {
// seconds only
$relative_date .= ($relative_date ? ', ' : '') .
$seconds . ' detik' . ($seconds != 1 ? '' : '');
}
}
$ret = $relative_date;
Setelah disain aplikasi dan class dibuat dengan rinci, tahapan selanjutnya
Modul Home adalah modul yang pertama kali diakses saat aplikasi
dijalankan dalam keadaan normal dan terinstalasi secara benar. Bagian Model dari
modul ini tidak memiliki asosiasi dengan Model lainnya. Namun demikian, perlu
ada sebuah validasi masukan pada form isian halaman administrasi. Validasi ini
digunakan untuk mencegah kesalahan saat memasukkan data, sehingga form isian
menjadi kosong. Validasi ini dilakukan dengan mengisikan elemen array ‘name’
105
dan ‘content’ dengan parameter VALID_NOT_EMPTY. Kedua elemen array
<?
....
var $validate = array(
);
....
?>
Apabila tidak ada masukan pada form isian yang divalidasi, sistem akan
kode program form tersebut pada file View dari Modul Home. Gambar 4.7
tagErrorMsg() dari objek $html. Pesan kesalahan yang ditampilkan apabila isian
Judul:<br>
<?php echo $html->input('Home/name', array('size' =>
'30'))?>
<?php echo $html->tagErrorMsg('Home/name', 'Silahkan
masukkan judul.') ?>
yang berisi judul modul. Selain itu, fungsi ini juga digunakan untuk menampilkan
informasi login apabila ada seorang user yang masuk ke halaman administrasi.
106
Pertama-tama, fungsi akan membaca session yang dibuat oleh user yang saat itu
sedang login. Session tersebut dicocokkan dengan hak akses dari user tersebut.
Hasil pencocokan tadi digunakan untuk menampilkan nama username yang saat
<?
....
function beforeFilter(){
$this->pageTitle = 'Home';
if(isset($_SESSION['User']['username'])){
if(($_SESSION['priv'] == '1'))
{
$sesi = $_SESSION['User']['username'];
$this->set('admin',$sesi);
$sesi = $_SESSION['User']['username'];
$this->set('lecturer',$sesi);
else{
$sesi = $_SESSION['User']['username'];
$this->set('member',$sesi);
}
$nama = $_SESSION['User']['username'];
$this->set('nama',$nama);
}
}
....
?>
107
Gambar 4.9 menunjukkan user ‘sunu’ sedang login dalam sistem. Sistem
akan memberikan informasi login tepat di bagian atas layout konten modul (lihat
Fungsi ini dijalankan sebagai metode dari objek Model yang didefinisikan, dalam
hal ini Home. Parameter dari fungsi findAll() adalah kondisi-kondisi yang biasa
<?
....
function index()
{
$this->Home->recursive = 0;
$home = $this->Home->findAll(
null,
null,
'Home.id DESC',
1
);
$this->set('home',$home);
}
....
?>
index(), fungsi add() ini hanya boleh diakses oleh user Admin dan Laboran (lihat
Bab 3, Tabel 3.4). Oleh karena itu, fungsi add() membutuhkan validasi user
108
sebelum dieksekusi. Validasi user dilakukan dengan metode checkSession() dan
pencocokan session yang saat itu sedang aktif. Apabila session yang aktif bukan
‘Restricted Area. Please Contact Your Admin !’ dan akan melakukan redirect ke
halaman awal (home). Validasi ini juga disertakan di fungsi-fungsi lain pada class
<?
....
function add()
{
$this->checkSession();
if(($_SESSION['priv'] != '1')&&($_SESSION['priv'] != '3')) {
$this->flash('Restricted Area. Please Contact Your Admin
!','/');
}
if (!empty($this->data))
{
if ($this->Home->save($this->data))
{
}
....
?>
tool editor teks yang di-generate oleh framework TinyMCE. Editor teks tersebut
109
dilakukan dengan perangkat lunak Microsoft Office atau OpenOffice Writer.
Gambar 4.12 menunjukkan salah satu halaman administrasi modul Home. Saat
user ‘admin’ sedang login, pada sisi kiri muncul menu navigasi administrasi yang
Menu
Administrasi
Newscategory dengan asosiasi belongs to. Asosiasi ini didefinisikan pada Model
Model News juga memiliki asosiasi kedua dengan Model User. Model News
110
<?php
);
?>
Elemen-elemen array adalah Model lain yang berasosiasi dengan Model News.
Model News dengan Model User. Validasi masukan juga masih tetap digunakan
111
Pada bagian awal class NewsController didefinisikan terlebih dahulu
digunakan oleh NewsController dan bagian View dari modul News. Variabel
$name menunjukkan nama Controller tersebut. Variabel $layout berisi file layout
yang akan digunakan, dalam hal ini NewsController menggunakan file layout
<?php
class NewsController extends AppController
{
var $components =
array('Pagination','RequestHandler','NewsCategory');
var $name = 'News';
var $layout = 'news';
var $helpers =
array('Html','Javascript','Time','Form','Pagination','Fck','Text')
;
...
}
?>
Sebagaimana fungsi add() pada modul Home, fungsi add(), main(), view(),
edit(), delete() pada NewsController hanya bisa diakses oleh user tertentu. Sesuai
dengan Tabel 3.4, halaman administrasi modul News bisa diakses oleh semua
user kecuali Guest (pengujung). Fungsi lain yang tidak termasuk fungsi
administrasi, yakni index(), daftar(), detail(), bisa diakses oleh semua user
112
metode checkSession() di bagian awal fungsi yang akan diproteksi. Apabila semua
<?
....
function edit($id = null){
$this->checkSession();
$this->set('newscategoryArray', $this->News->Newscategory-
>generateList());
if (empty($this->data))
{
$this->News->id = $id;
$this->data = $this->News->read();
}
else
{
$this->data['News']['user_id'] =
$_SESSION['User']['id'];
if ($this->News->save($this->data['News']))
{
$this->flash('Berita telah
terupdate','/news/main');
}
else {
$this->Session->setFlash('Mohon koreksi kesalahan Anda
!');
}
}
}
....
?>
Model Newcategory. Saat kedua Model sudah terhubung, maka hanya dengan
113
menuliskan sintaks sebagaimana terdapat pada Gambar 4.16, record field tertentu
$this->set('newscategoryArray', $this->News->Newscategory-
>generateList());
Hasil dari pengambilan record tersebut bisa dilihat pada Gambar 4.17.
Selain itu, modul News juga dilengkapi dengan fungsi search(). Fungsi ini
digunakan untuk melakukan pencarian record database sesuai dengan kata kunci
yang dimasukkan pada form isian. Fungsi search() pada modul News ini
langsung (Live Search). Untuk memodifikasi fungsi search() dibutuhkan dua buah
pustaka Javascript, yakni file prototype.js dan file scriptaculous.js, yang berperan
dalam efek animasi tampilan hasil pencarian. Dengan dua pustaka Javascript ini,
hasil pencarian tidak lagi ditampilkan di halaman yang berbeda, akan tetapi
langsung di bawah form isian seketika itu juga saat kata kunci dimasukkan.
Cara kerja fungsi search() ini cukup sederhana. Pertama-tama, fungsi akan
menangkap karakter yang dimasukkan melaui form isian. Setelah karakter tersebut
114
record tabel news. Apabila ada satu atau lebih record yang mengandung karakter
yang sama dengan karakter masukan, maka fungsi akan memberikan hasil.
Apabila tidak ada record yang cocok, fungsi akan memberikan pesan kepada
<?
...
function search(){
if (!empty($this->params['form']['livesearch'])) {
$word = $this->params['form']['livesearch'];
$result = $this->News->query("SELECT * FROM news WHERE
title LIKE '%".$word."%' OR content LIKE '%".$word."%' ") ;
$this->set('result',$result);
}
}
}
....
?>
<?php
if (isset($result)&&count($result)>0){
foreach($result as $news)
{
?>
<div id="result">
<a href="<?php echo $html-
>url('/news/detail/'.$news['news']['id']);?>">
<? echo $news['news']['title'] ; ?>
</a>
</div>
<?
}
}
else
{
echo '<div>Mohon maaf, kata kunci tidak
ditemukan</div>';
}
?>
Gambar 4.19. Tampilan live search pada bagian View modul News
115
Selain pustaka Javascript, untuk memperindah tampilan disertakan pula
sebuah file gambar loader.gif. File ini akan memberikan kesan “sistem sedang
melakukan proses pencarian” saat pengunjung memasukkan kata kunci pada form
isian. Pada Gambar 4.20 ditunjukkan tampilan Live Search pada saat karakter
huruf ‘p’ dimasukkan pada form isian. Saat karakter ‘p’ ditemukan pada judul dan
isi berita, Live Search akan menampilkan hasilnya tepat di bawah form isian.
Apabila karakter lain dimasukkan, misalnya ‘xi’, dan fungsi search tidak
tampil pesan bahwa karakter yang dimasukkan tidak terdapat pada judul dan isi
berita.
Gambar 4.21 menunjukkan halaman depan modul News yang diakses oleh
pengunjung saat memilih menu ‘news’ pada navigasi utama. Saat modul News
ditampilkan, menu ‘news’ pada navigasi utama akan berubah warna latar
belakangnya.
116
Gambar 4.21. Halaman depan modul News
Profile bisa diakses oleh user Admin, Lecturer, dan Laboran. Hal ini dilakukan
dengan mencocokkan hak akses user yang saat itu sedang login. Apabila user
tersebut memenuhi kriteria akses yang diperbolehkan, maka user bisa masuk ke
<?
....
function main()
{
$this->checkSession();
117
if(($_SESSION['priv'] != '1')&&($_SESSION['priv'] !=
'2')&&($_SESSION['priv'] != '3')) {
$this->flash('Restricted Area. Please Contact Your Admin
!','/');
exit();
}
$profile = $this->Profile->findAll();
$this->set('profile',$profile);
}
....
?>
<?
class Practicumname extends AppModel
{
.......
var $hasMany = array(
'Practicumschedule' =>
array('className' => 'Practicumschedule',
'conditions' => '',
'foreignKey' => 'practicumname_id',
'order' => 'Practicumschedule.id ASC',
'dependent' => true,
'exclusive' => false
),
'Assistant' =>
118
array('className' => 'Assistant',
'conditions' => '',
'foreignKey' => 'practicumname_id',
'order' => 'Assistant.id ASC',
'dependent' => true ,
'exclusive' => false
),
'Resource' =>
array('className' => 'Resource',
'conditions' => '',
'foreignKey' => 'practicumname_id',
'order' => 'Resource.id ASC',
'dependent' => true,
'exclusive' => false
)
) ;
}
?>
dua buah fungsi umum (bisa diakses semua user), yakni index() dan view(), serta
empat buah fungsi administrasi, yakni main(), add(), edit(), dan delete(). Hak
praktikum yang memiliki flag aktivasi bernilai 1. Flag ini disimpan pada tabel
119
practicumnames. Sistem akan melakukan pengecekan flag sebelum menampikan
<?
....
function index()
{
$criteria = "Practicumname.activation='1'" ;
list($order,$limit,$page) = $this->Pagination-
>init($criteria);
$Practicumnames = $this->Practicumname->findAll($criteria,
NULL, $order, $limit, $page);
$this->set('Practicumnames',$Practicumnames);
}
....
?>
<?
...
var $hasAndBelongsToMany =
array('Practician' =>
array('className' => 'Practician',
'joinTable' => 'practicians_practicumschedules',
'foreignKey' => 'practicumschedule_id',
'associationForeignKey'=> 'practician_id',
'conditions' => '',
'order' => '',
'limit' => '',
'uniq' => true,
'finderQuery' => '',
'deleteQuery' => '',
'dependent' => true,
'exclusive' => false
)
);
var $belongsTo =
array('Practicumname' =>
array('className' => 'Practicumname',
'conditions' => '',
'order' => '',
120
'foreignKey' => 'practicumname_id'
)
);
var $hasMany =
array('Assistant' =>
array('className' => 'Assistant',
'conditions' => '',
'foreignKey' => 'practicumschedule_id',
'order' => '',
'dependent' => '' ,
'exclusive' => ''
)
) ;
...
?>
Pada asosiasi tersebut didefinisikan elemen array ‘joinTable’ yang berisi nama
tabel hasil normalisasi. Elemen ‘foreignKey’ merujuk pada field ‘id’ Model ini,
merujuk pada field ‘id’ dari tabel yang berasosiasi dengan tabel
berarti apabila ada satu atau lebih objek serupa yang memiliki asosiasi sama akan
diabaikan oleh sistem dan hanya akan ditampilkan sekali pada tabel. Dengan
demikian, apabila record serupa dimasukkan lebih dari dua kali pada tabel
asosiasi, akan ditampilkan sekali saja saat array hasil query ditampilkan. Sebagai
121
saat query dieksekusi hanya akan ditampilkan satu buah jadwal praktikum yang
Adapun elemen array ‘dependent’ diberi nilai ‘true’ supaya saat sebuah
buah fungsi umum, yakni index(), indexast(), detail(), dan register(). Fungsi
administrasi yang dimiliki oleh class ini berjumlah enam buah, yakni main(),
melalui fungsi index(). Pengecekan dilakukan dengan memeriksa record dari field
‘activation’ yang terdapat di tabel settings. Apabila isi record adalah ‘1’, maka
praktikan bisa melakukan pendaftaran. Sebaliknya, apabila isi record adalah ‘0’,
cara kerja yang hampir sama dengan pengecekan aktivasi pendaftaran praktikan,
hanya saja ditempatkan pada fungsi yang berbeda, yakni indexast(). Pemisahan
122
mempermudah pengunjung menerima informasi seputar pelaksanaan praktikum.
bawah ini.
<?
....
/*Setting aktivasi pendaftaran praktikan*/
$PraktikanAktif = $this->Practicumschedule->query("SELECT *
FROM settings WHERE id='1'") ;
if($PraktikanAktif['0']['settings']['activation']=='1'){
$this->set('PraktikanAktif',$PraktikanAktif);
}
....
?>
register() secara otomatis akan menolak pendaftaran asisten baru apabila jumlah
asisten untuk satu jadwal sudah memenuhi quota yang diinginkan pengelola
sebuah variabel ;
kedua lebih besar dari variabel pertama, pendaftaran asisten masih dibuka.
Apabila variabel kedua lebih kecil atau sama dengan variabel pertama,
Penjelasan lebih lengkap bisa dilihat pada Gambar 4.27 di bawah ini.
123
<?
....
function register($id)
{
if($quota['Practicumschedule']['assistant_amount']>$jumlah['0
']['0']['COUNT(*)']){
if($aktif['0']['settings']['activation']=='1'){
$Practicumschedule = $this->Practicumschedule-
>read(null,$id) ;
$this->set('Practicumschedule',$Practicumschedule);
}
else{
$this->Session->setFlash('Mohon maaf, fasilitas registrasi
asisten ditutup');
$this->redirect('/assistants/index/');
}
}
else{
$this->Session->setFlash('Mohon maaf, asisten pada jadwal
terpilih sudah memenuhi quota');
$this->redirect('/assistants/index/');
}
}
....
?>
memanfaatkan file layout excel.thtml yang berisi infomasi header file hasil
124
konversi. Cara kerja fungsi ini cukup sederhana, yakni fungsi akan membaca
record jadwal praktikum berikut asisten dan praktikan yang terdaftar pada jadwal
tersebut. Setelah itu, data akan disimpan pada variabel tertentu dan dikirimkan ke
layout excel.thtml.
function cetak($id)
{
$this->checkSession();
if(($_SESSION['priv'] != '1')&&($_SESSION['priv'] !=
'3')){
$this->flash('Restricted Area. Please Contact Your Admin
!','/');
exit();
}
$this->layout='excel';
$data = array();
$data['sheet1'] = $this->Practicumschedule->read(null,$id) ;
$this->set('data', $data);
}
spreadsheet. File ini akan menyertakan beberapa informasi header, sehingga data
yang dikirim dari Controller akan diolah sedemikian rupa dan diubah dalam
bentuk file berekstensi *.xls (ekstensi data aplikasi Microsoft Excel) yang bisa di-
<?php
(empty($type)) ? $type = 'applications' : $type = $type;
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=data-
praktikum.xls");
header("Pragma: no-cache");
header("Expires: 0");
?>
<?php echo $content_for_layout ?>
125
3. Class Practician dan PracticiansController.
‘true’ yang berarti record yang sama pada tabel asosiasi hanya akan ditampilkan
<?
...
var $hasAndBelongsToMany =
array('Practicumschedule' =>
array('className' => 'Practicumschedule',
'joinTable' => 'practicians_practicumschedules',
'foreignKey' => 'practician_id',
'associationForeignKey'=> 'practicumschedule_id',
'conditions' => '',
'order' => '',
'limit' => '',
'uniq' => true,
'finderQuery' => '',
'deleteQuery' => '',
'dependent' => true,
'exclusive' => false
)
);
...
?>
126
masuknya data praktikan ke dalam database pada saat melakukan pendaftaran.
Logic paling rumit dari class PracticiansController terdapat pada fungsi add(),
hanya boleh mendaftarkan diri satu kali saja dengan memasukkan data-data
diri pada satu atau lebih praktikum dalam waktu bersamaan, dengan catatan
masing-masing praktikum hanya boleh diikuti pada satu jadwal pelaksanaan saja.
4.30.
mengisikan data akademik yang terdiri dari ‘Nama Praktikan’, ‘Angkatan Masuk’,
dan ‘No. Induk Mahasiswa’. Setelah itu, praktikan mengisikan jadwal praktikum
boleh diisi dengan satu buah jadwal. Untuk keperluan itu, elemen HTML
diisi satu saja, untuk praktikum yang sama. Modifikasi ini dilakukan dengan
127
Gambar 4.29. Form isian data praktikan
untuk memastikan bahwa user adalah manusia, bukan mesin spam. Validasi ini
128
dilakukan dengan menampilkan deretan karakter di akhir form pendaftaran.
Apabila user tidak memasukkan karakter ini, sistem tidak memasukkan data
praktikan atau lebih mendaftarkan diri pada saat yang bersamaan. Untuk
quota praktikan secara real time, tepat pada saat praktikan menekan tombol
‘Save’ setelah memasukkan data pendaftaran. Sistem ini akan memeriksa record
pada database, membandingkan quota praktikan dan jumlah praktikan yang sudah
terdaftar. Apabila pada saat bersamaan ada dua orang atau lebih praktikan yang
mendaftar praktikum, seketika itu juga sistem akan melakukan filtering dan
129
menampilkan informasi apabila jumlah praktikan sudah melampaui batas.
Praktikan yang terkena filtering harus memilih jadwal lainnya yang masih kosong,
<?
.....
function add() {
......
/*massive checking untuk memeriksa quota apabila ada pendaftar
yang mendaftar bersamaan : */
for($x=0;$x<sizeof($this-
>params['data']['Practicumschedule']['Practicumschedule']);$x++
){
$id = $this-
>params['data']['Practicumschedule']['Practicumschedule'][$x];
$jumlah[$x] = $this->Practician->query("SELECT COUNT(*)
FROM practicians_practicumschedules WHERE
practicumschedule_id='".$id."'") ;
$quota[$x] = $this->Practician->query("SELECT
practician_amount FROM practicumschedules WHERE id='".$id."'")
;
if($jumlah[$x]['0']['0']['COUNT(*)']>=$quota[$x]['0']['practi
cumschedules']['practician_amount']){
$this->flash('ERROR : Mohon ulangi pendaftaran karena
salah satu jadwal yang Anda pilih sudah
penuh','/practicians/add');
exit();
}
}
/* end massive checking */
......
}
/*akhir fungsi pendaftaran*/
.....
?>
praktikum, dalam hal ini laboran. Apabila laboran menghendaki praktikan untuk
130
laboran bisa mengaktifkan fitur update data supaya memungkinkan untuk diakses
dilengkapi dengan link khusus untuk melihat jadwal praktikum yang masih
bawah ini.
131
4. Class Assistant dan AssistantsController.
<?
....
var $belongsTo = array(
'Practicumname' =>
array('className' => 'Practicumname',
'conditions' => '',
'order' => '',
'foreignKey' => 'practicumname_id'
),
'Practicumschedule' =>
array('className' => 'Practicumschedule',
'conditions' => '',
'order' => '',
'foreignKey' => 'practicumschedule_id'
)
);
....
?>
enam buah fungsi administrasi. Fungsi umum ini adalah fungsi index() dan fungsi
add(). Fungsi add() mengurusi logic pendaftaran asisten. Apabila fungsi register()
data asisten ke database. Pendaftaran asisten dibatasi satu asisten untuk satu
praktikum saja. Asisten tidak diperkenankan untuk mendaftarkan diri lebih dari
132
4.2.2.5 Modul Resource
yang lain, yakni Model User, Model Practicumname, dan Model Project. Asosiasi
<?
...
var $belongsTo = array(
'User' =>
array('className' => 'User',
'conditions' => '',
'order' => '',
'foreignKey' => 'user_id'
),
'Practicumname' =>
array('className' => 'Practicumname',
'conditions' => '',
'order' => '',
'foreignKey' => 'practicumname_id'
),
'Project' =>
array('className' => 'Project',
'conditions' => '',
'order' => '',
'foreignKey' => 'project_id'
)
);
....
?>
data berupa string juga berupa file resource. Jenis resource yang di-upload adalah
file Ms.Word, Ms.Excel, Ms.Power Point, PDF, Archive (zip atau rar), dan file
membatasi batas maksimum upload sebesar 8 MB. Namun batasan ini bisa
diperbesar, dengan cara melakukan modifikasi pada file basics.php yang terletak
133
di folder cake/. Fungsi add() secara lengkap ditampilkan pada gambar di bawah
ini.
<?
....
function add(){
$this->checkSession();
$this->set('practicumArray', $this->Resource->Practicumname-
>generateList());
$this->set('projectArray', $this->Resource->Project-
>generateList());
if (!empty($this->data))
{
$this->data['Resource']['user_id'] =
$_SESSION['User']['id'];
if ($this->Resource->save($this->data))
{
$this->myFolder = new Folder();
$this->myFolder-
>mkdirr(WWW_ROOT.DS.'upload'.DS.'resource'.DS.$this->Resource-
>getLastInsertId(),0777);
$this->myFolder-
>mkdirr(WWW_ROOT.DS.'upload'.DS.'resource'.DS.$this->Resource-
>getLastInsertId().DS."file",0777);
copy(WWW_ROOT.DS."house".DS.".htaccess",WWW_ROOT.DS.'upload'.
DS.'resource'.DS.$this->Resource-
>getLastInsertId().DS."file".DS.".htaccess");
move_uploaded_file($_FILES["data"]["tmp_name"]["File"]['file'
], WWW_ROOT.DS.'upload'.DS.'resource'.DS.$this->Resource-
>getLastInsertId().DS."file".DS.$_FILES["data"]["name"]["File"]
['file']);
$this->flash('Resource Anda telah
tersimpan.','/resources/index');
}
else {
$this->Session->setFlash('Mohon koreksi kesalahan Anda
!');
}
}
Pada fungsi add(), saat sistem menyimpan data resource, fungsi akan
membuat direktori baru dengan nomer id item data yang disimpan. Jadi saat, data
134
nomer 13 disimpan, sistem akan membuat folder baru dengan nama 13. CakePHP
dimasukkan parameter 0777, yang akan mengubah hak akses direktori tersebut
supaya bisa diakses oleh sistem (hanya berlaku apabila iLab dijalankan pada
sistem operasi berbasis Unix). Di dalam direktori tersebut, dibuat lagi sebuah
direktori dengan nama ‘file’. Setelah itu, sistem akan mengopikan sebuah
file .htaccess ke dalam folder ‘file’. File .htaccess ini berisi script yang
memungkinkan file resource yang berada di dalam folder tersebut diakses oleh
sistem. Setelah itu, sistem akan meng-upload file resource ke dalam folder ‘file’.
ini adalah fungsi rdel(). Fungsi ini secara recursive (menyeluruh) akan menghapus
folder dan seluruh isi folder penyimpanan resource saat sistem mengeksekusi
<?
....
function delete($id)
{
$this->checkSession();
$this->Resource->del($id);
$this->rdel(WWW_ROOT.'upload'.DS.'resource'.DS.$id);
$this->flash('Resource dengan ID : '.$id.' terhapus.',
'/resources/index');
}
function rdel($path) {
$this->checkSession();
$this->myFolder2 = new Folder();
if(@opendir($path))
135
{
$this->myFolder2->path=$path;
$files = $this->myFolder2->findRecursive();
foreach($files as $file)
unlink($file);
@rmdir($path.DS."thumbnail");
@rmdir($path.DS."file");
@rmdir($path);
}
}
....
?>
adalah resource proyek. Resource proyek ini berupa hasil riset yang dilakukan di
laboratorium tersebut. Kategori ketiga adalah resource lain, yang tidak termasuk
136
Modul Resource menyediakan halaman detail informasi sekaligus link
otomatis browser akan menampilkan pilihan untuk menyimpan atau membuka file
4.37 dibuat saat modul Resource diakses dengan browser Mozilla Firefox.
proyek dan penelitian yang sedang dikerjakan di laboratorium. Bagian Model dari
modul ini memiliki dua buah asosiasi, yakni belongs to terhadap Model User dan
has many terhadap Model Resource. Kode sumber definisi asosiasi Model Project
137
<?
....
var $belongsTo = array(
'User' =>
array('className' => 'User',
'conditions' => '',
'order' => '',
'foreignKey' => 'user_id'
)
);
Class ProjectsController memiliki dua buah fungsi umum dan lima buah
fungsi administratif. Fungsi umum terdiri dari fungsi index() dan detail(). Fungsi
administrasi terdiri dari fungsi main(), view(), add(), delete(), dan edit(). Fungsi
administrasi ini bisa diakses oleh semua user kecuali Guest. Pada saat diakses,
Modul Project and Research akan menampilkan daftar proyek dan penelitian yang
lebih lanjut dari penelitian atau proyek yang ada dengan mengakses ke halaman
detail keterangan proyek atau penelitian. Tampilan halaman detail ini ditunjukkan
138
Gambar 4.39. Antarmuka halaman detail proyek dan riset
elemen array ‘email’. Secara otomatis, CakePHP akan melakukan validasi alamat
<?php
class Guestbook extends AppModel
{
var $name = 'Guestbook';
var $useTable = 'Guestbooks';
139
'email' => VALID_EMAIL,
'comment' => VALID_NOT_EMPTY
);
}
?>
buah fungsi administrasi. Fungsi umum add() digunakan untuk menambah isi
buku tamu, sedangkan fungsi umum all() digunakan untuk menampilkan semua
komentar yang masuk ke buku tamu. Fungsi administrasi terdiri dari fungsi
ini.
140
4.2.2.8 Modul Link
Adapun secara umum, class LinksController memiliki satu buah fungsi umum dan
lima buah fungsi administratif. Fungsi umum terdiri dari fungsi index() yang
memungkinkan untuk diakses oleh semua user. Fungsi administrasi terdiri dari
fungsi main(), view(), add(), delete(), dan edit(). Implementasi antarmuka modul
141
4.2.2.9 Modul User
berikut :
Class User adalah bagian Model dari pasangan class ini. Model User
<?
....
var $belongsTo = array('Userstatus' =>
array('className' => 'Userstatus',
'conditions' => '',
'order' => '',
'foreignKey' => 'userstatus_id'
)
);
....
?>
index(), delete(), add(), dan edit(). Semua fungsi administrasi hanya boleh diakses
oleh Admin. Pada bagian fungsi add(), password yang dimasukkan saat
pembuatan user baru akan dienkripsi dengan fungsi md5(). Enkripsi password ini
database. Kode sumber fungsi add() secara lengkap dapat dilihat pada gambar di
bawah ini.
<?
....
function add()
{
$this->checkSession();
142
if($_SESSION['priv'] != '1'){
$this->flash('Restricted Area. Please Contact Your Admin
!','/');
exit();
}
$this->set('userstatusArray', $this->User->Userstatus-
>generateList());
if (!empty($this->data))
{
$this->data['User']['password']=md5($this-
>data['User']['password']);
if ($this->User->save($this->data))
{
$this->flash('User tersimpan.','/users');
}
else {
$this->Session->setFlash('Mohon koreksi kesalahan Anda
!');
}
}
}
...
?>
Foreign key yang menghubungkan Model Userstatus dengan Model User adalah
‘dependent’ berisi parameter ‘true’ yang berarti apabila salah satu record tabel
userstatuses dihapus, maka semua record pada tabel users yang berasosiasi
dengan record tersebut akan dihapus. Sebagai contoh, apabila record ‘Admin’
dihapus dari tabel userstatuses, maka semua user dengan hak akses ‘Admin’ pada
tabel users akan terhapus. Elemen array ‘exclusive’ diberi nilai ‘false’. Apabila
elemen ini diberi nilai ‘true’, maka semua objek yang memiliki asosiasi dengan
Model ini akan dihapus dengan sebuah perintah SQL saja. Konfigurasi ini bisa
143
digunakan untuk asosiasi sederhana yang melibatkan banyak Model karena
<?
....
var $hasMany = array (
'User' => array (
'className' => 'User',
'conditions' => '',
'foreignKey' => 'userstatus_id',
'order' => 'User.id ASC',
'dependent' => true,
'exclusive' => false
)
) ;
....
?>
yang kesemuanya hanya bisa diakses oleh Admin. Fungsi administrasi tersebut
adalah fungsi index() dan edit(). Pada saat iLab di-install, isi record dari tabel
SettingsController hanya memiliki dua buah fungsi administrasi yang bisa diakses
oleh Admin dan Laboran, yakni fungsi index() dan edit(). Modul Setting ini berisi
beberapa konfigurasi kecil yang dibutuhkan oleh sistem, terutama aktivasi yang
144
4.2.3 Modul Tambahan
Modul Login memiliki class Model dan Controller. Selain itu, modul ini
khusus karena tidak memiliki tabel basis data. Variabel $useTable diberi nilai
<?php
class Login extends AppModel
{
var $name = 'Login';
var $useTable = false;
}
?>
login(), dan logout(). Fungsi login() memiliki mekanisme kerja sebagai berikut :
- Apabila data diisikan, cek apakah data yang diisikan sesuai record
pada tabel users. Apabila data tidak sesuai, tampilkan pesan kesalahan
login ;
145
- Setelah validasi berhasil, tuliskan level akses pada parameter variabel
session, sesuai dengan level akses yang telah didefinisikan pada record
user tersebut. Level akses inilah yang akan divalidasi saat user
menuliskan session baru yang berupa session kosong. Fungsi captcha() digunakan
Modul Installer tidak memiliki Model. Modul ini terdiri dari sebuah file
- Saat CMS iLab diakses pertama kali, sistem akan melakukan pengecekan
lanjutkan ke tahap instalasi sampel database. Apabila file tidak ada, sistem
akan mengakses file pendukung modul Installer. File pendukung ini akan
146
Gambar 4.47. Proses pembuatan file database.php
147
- Apabila semua proses sudah dilakukan, fungsi thanks() akan membuat
148
mengoperasikannya, baik melalui jaringan lokal laboratorium maupun
lembar quesioner kepada beberapa orang tim penguji yang terdiri dari
empat buah browser yang berbeda, yakni Internet Explorer 6, Mozilla Firefox
2.0.0.6, Opera 9.0.2 dan Safari 2.0.4. Hasil pengujian dijelaskan melalui tabel di
bawah ini.
149
Tabel 4.1 Hasil pengujian antarmuka
Pengujian
3. Dukungan terhadap pustaka Mendukung (semua Mendukung (semua Modul iBrowser pada Modul iBrowser pada
Tiny MCE pada elemen text modul berjalan modul berjalan TinyMCE tidak TinyMCE tidak
area normal) normal) berfungsi berfungsi
6. Parsing halaman dalam detik 2,09 detik 2, 73 detik 1,30 detik 1, 28 detik
150
(untuk halaman awal / Modul
Home).
Hasil pengujian yang ditampilkan pada Tabel 4.1 menunjukkan CMS iLab
secara umum berjalan dengan baik pada saat diakses dengan browser yang
berbeda. Namun demikian dari segi antarmuka dan tampilan, CMS iLab belum
dan Opera, tidak berhasil mem-render modul iBrowser pada pustaka TinyMCE.
Modul iBrowser berperan saat user CMS akan meng-upload dan meletakkan
gambar pada editor teks. Sebaliknya, Internet Explorer dan Mozilla Firefox
rendering tampilan modul Home. Dari hasil pengujian dapat dilihat bahwa Safari
Internet Eksplorer, browser yang ter-install secara default pada sistem operasi
baik.
151
4.3.3 Pengujian Instalasi Sistem
iLab pada tiga buah sistem operasi yang berbeda, yakni Microsoft Windows XP
Service Pack II, Ubuntu Linux 6.0, dan OpenBSD 3.9 . Selain instalasi, pengujian
Windows yang tidak memperhatikan hak akses folder dan file, sebagaimana pada
Unix dan Linux. Hasil pengujian ditunjukkan oleh Tabel 4.2 di bawah ini.
152
Gambar 4.49. CMS iLab berjalan pada sistem operasi Microsoft Windows
pengubahan hak akses direktori supaya bisa diakses oleh sistem. Instalasi iLab
Document_Root yang akan diakses oleh Apache Web Server sebagai direktori
153
Metode Instalasi Menggunakan script installer
Komentar Instalasi CMS iLab pada sistem operasi Ubuntu Linux
berjalan dengan baik, menggunakan script installer , dengan
asumsi direktori iLab sebagai Document_Root yang akan
diakses Apache Web Server. Beberapa direktori perlu
diubah hak aksesnya, supaya bisa diakses oleh sistem.
Selain itu, penggunaan file .htaccess harus benar-benar
diperhatikan karena harus mempertimbangkan pula hak
akses direktori.
Masalah Plugins iBrowser untuk upload gambar tetap harus
disesuaikan secara manual dengan path absolut instalasi
Gambar 4.50. CMS iLab berjalan pada sistem operasi Ubuntu Linux
154
4.3.3.3 Implementasi pada sistem operasi OpenBSD
Instalasi CMS iLab pada sistem operasi OpenBSD 3.9 mengalami sedikit
kendala karena beberapa konfigurasi server yang cukup berbeda dengan sistem
implementasi pada sistem operasi Ubuntu Linux, yakni dengan membuat direktori
iLab sebagai Alias yang akan diakses oleh Apache Web Server sebagai direktori
155
Masalah Plugins iBrowser untuk upload gambar tetap harus
disesuaikan secara manual dengan path absolut instalasi
yang berbeda menunjukkan perlunya penanganan yang berbeda pula. Pada sistem
instalasi iLab harus dilakukan secara manual (tidak menggunakan script installer ).
memiliki hak akses yang hanya bisa diubah oleh user ‘root’ dari sistem. Dengan
tersebut bisa diakses oleh sistem, dalam hal ini oleh server HTTPD (HTTP
Daemon atau Apache Web Server). Implementasi iLab pada sistem operasi
Ubuntu Linux dan Open BSD mengharuskan konfigurasi ulang Apache Web
156
Server. Beberapa hal yang menjadi syarat utama agar CMS iLab bisa berjalan
dalamnya.
harus diubah terlebih dahulu hak aksesnya menjadi 755 atau 777 dengan
perintah chmod melalui command prompt atau konsole. Hal ini mutlak
tersebut.
157
1. Pada konfigurasi Apache (terletak di file httpd.conf), tambahkan kode
RewriteBase /ilab
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /ilab
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
define('WEBROOT_DIR', 'ilab');
158
4.3.4 Interaksi User dan Sistem
kepada calon praktikan atau pengguna sistem secara umum. Pengujian meliputi
usability testing (uji kemudahan penggunaan sistem) dan functionality testing (uji
Keterangan :
Skala 1 = sangat sulit / sangat kurang
Skala 2 = sulit digunakan / kurang
Skala 3 = cukup mudah
Skala 4 = mudah digunakan / baik
Skala 5 = sangat mudah digunakan / sangat baik
159
Saran dan kritik dari responden :
6. Pada isian “NIM” dan “Angkatan Masuk” perlu mekanisme validasi string
160
4.3.4.2 Uji Administrasi
161
Keterangan :
Skala 1 = sangat sulit / sangat kurang
Skala 2 = sulit digunakan / kurang
Skala 3 = cukup mudah
Skala 4 = mudah digunakan / baik
Skala 5 = sangat mudah digunakan / sangat baik
pendaftaran kembali.
162
4.3.5 Analisis Umum Hasil Pengujian
Secara umum, sistem sudah berjalan sesuai dengan perancangan dan alur
aplikasi terhadap beberapa browser yang sering digunakan oleh pengunjung untuk
tanggapan yang berbeda saat mengakses CMS iLab. Beberapa kelemahan yang
ditemukan saat pengujian, selain berasal dari kode program iLab yang masih
pada berbagai kondisi dan konfigurasi sistem. Secara umum, iLab bisa berjalan
apabila syarat-syarat yang diperlukan CMS iLab terpenuhi. Pada beberapa server
163
4.4 Evaluasi Sistem
sebagai berikut :
pengembangan aplikasi praktis yang terdiri dari satu atau dua buah modul
diberi nama “iLab” sehingga CMS ini bisa digunakan untuk pengelolaan
164
4.4.2 Hambatan terhadap Penelitian
Salah satu hambatan yang terjadi pada saat pengujian aplikasi adalah
penggunaan sistem web cache pada server proxy jaringan internal Jurusan Teknik
diakses. Namun demikian, dalam pengujian aplikasi iLab halaman web harus
sering di-refresh untuk melihat perubahan yang terjadi setelah dilakukan update
konten database karena halaman web sebelum konten database di-update muncul
Salah satu solusi untuk mengatasi hal tersebut adalah melakukan bypass
alamat url aplikasi iLab sehingga akses iLab dilakukan secara langsung antara
komputer client dan server tanpa melalui server proxy. Solusi lain yang digunakan
dalam pengujian adalah instalasi aplikasi iLab pada komputer lokal (localhost).
navigasi utama.
165
3. Pengembangan modul sistem dengan membuat modul baru atau membuat
server. Selama ini sistem instalasi yang disediakan iLab hanya bisa
5. Penerapan validasi sistem yang lebih spesifik pada setiap form isian CMS
iLab, baik form isian yang diakses pengunjung maupun form isian yang
hanya bisa diakses oleh user yang memiliki akses ke halaman administrasi.
166
BAB V
5.1 Kesimpulan
web.
167
5.2 Saran
mungkin.
kebutuhan mereka.
6. Tampilan jadwal praktikum dibuat dalam bentuk matriks atau grafik agar
7. Repository praktikum dilengkapi dengan soal-soal pre test dan post test
168
DAFTAR PUSTAKA
Anderson, J.; & Masters, L.E. (ed). 2006a. CakePHP Programmer's Reference
Guide. USA : CakePHP Software Foundation, Inc. 141 p.
Anderson, J.; & Masters, L.E. (ed). 2006b. CakePHP-API Documentation version
1.1.8.3544. USA : CakePHP Software Foundation, Inc.
Douglas, Robert T.; Little, Mike; & Smith, Jared W. 2006. Building Online
Communities with Drupal, phpBB, and Wordpress. USA : Apress. 561p.
Gibbon, Dr. Gerst. 1996. A Brief History of LIMS. USA : Laboratory Automation
and Information Management (journal issue 32, 1996).
Gillespie, Helen. 1994. Lab Data Management. USA : Scientific Computing and
Automation (journal July 1994).
Shan, Tony C.; & Hua, Winnie W. 2006. Taxonomy of Java Web Application
Frameworks. Beijing, China : IEEE International Conference on e-Business
Engineering (ICEBE '06). 8 p.
169
Siswoutomo, Wiwit. 2005a. PHP Enterprise : Kiat Jitu Membangun Web Skala
Besar. Jakarta : Elex Media Komputindo. 356 h.
Smith, L.; & Scheeper, Inus. 2004. Bika Lab System Workflow. [Online].
http://bikalabs.com/images/diagrams/flowdiagramstandard.
Diakses pada tanggal 16 Agustus 2007
170