• Tidak ada hasil yang ditemukan

4 IMPLEMENTASI SISTEM

N/A
N/A
Protected

Academic year: 2022

Membagikan "4 IMPLEMENTASI SISTEM"

Copied!
34
0
0

Teks penuh

(1)

4 IMPLEMENTASI SISTEM

Pada bab ini akan dijelaskan mengenai implementasi sistem. Penjelasan implementasi sistem akan dibagi menjadi dua, yaitu modul admin dan user.

Berikut ini adalah penjelasan mengenai implementasi sistem 4.1 Implementasi Awal

Yang perlu dilakukan sebelum pembuatan aplikasi adalah melakukan instalasi webserver. Tahap instalasi yang akan dilakukan adalah sebagai berikut:

a. Xampp

b. Framework No-CMS

4.2 Instalasi No-CMS

Instalasi framework No-CMS dapat dilakukan dengan langsung menginputkan alamat website langsung setelah dipindahkan kedalam folder yang diinginkan. Akan keluar tampilan konfigurasi seperti pada Gambar 4.1 berikut ini.

Gambar 4.1. Instalasi No-CMS

(2)

4.3 Cara Kerja No-CMS

No-CMS menggunakan model MVC (model, view, controller) yang membagi sebuah halaman menjadi tiga file. Model ini berguna untuk merapikan struktur coding sehingga mudah dicerna, terutama untuk programmer yang berbeda. Ketika user ingin mengakses sebuah halaman, maka yang terpanggil pertama kali adalah controller, kemudian controller akan memanggil view yang merupakan tampilan dari sebuah halaman. Jika terdapat query dari database, maka controller dapat memanggil fungsi dari model dan kemudian variabelnya dapat diberikan kepada view untuk ditampilkan.

Terdapat sepuluh buah folder pada framework No-CMS yang memiliki fungsinya masing – masing. Folder pertama merupakan folder application yang berisi core system dari framework No-CMS. Folder kedua merupakan assets yang dapat berisi code tambahan seperti javascript, css maupun gambar yang diupload oleh user. Folder ketiga adalah license yang berisi mengenai lisensi dari framework No-CMS. Folder keempat adalah modules, modules ini adalah tempat programmer meletakkan pekerjaannya. Folder kelima adalah sistem yang berisi settingan website, library, dan lain – lain. Folder ketujuh adalah themes yang berisi css atau tampilan dari website.

Ada beberapa tahap untuk membuat sebuah halaman baru pada framework No-CMS. Pada awalnya programmer dapat membuat folder baru pada folder modules, yang kemudian diisi oleh subfolder config, controllers, models, dan views. Programmer juga harus membuat file module_config.php pada subfolder config dan file install.php pada subfolder controllers. Hal ini untuk melakukan konfigurasi untuk menginstall modul pada tahap selanjutnya. File module_config.php digunakan untuk membuat prefix pada tabel yang akan diakses didalam modul tersebut. Sedangkan file install.php digunakan untuk melakukan instalasi modul sehingga dapat digunakan. File install.php ini juga dapat di-setting untuk melakukan penambahan tabel pada database.

Selanjutnya programmer dapat membuat modul pada Module Management (terletak di CMS Management) dan mengisi letak folder modul baru yang ingin dibuat. Navigasi hanya dapat mengakses halaman yang sudah

(3)

Langkah terakhir programmer dapat membuat navigation pada menu Navigation Management (terletak di CMS Management) yang bisa diakses oleh admin. Navigation berguna agar halaman tersebut bisa diakses melalui website.

Navigation ini akan diarahkan letak file controller yang diletakkan didalam sebuah folder di modules.

4.4 Setting Login with social media

No-CMS telah menyediakan fitur login with social media dengan menggunakan plugin HybridAuth. Untuk mengakses setting daripada file HybridAuth, programmer dapat memasuki folder application -> config. Contoh setting file hybridauthlib.php dapat dilihat pada Segmen Program 4.1 dibawah ini.

Segmen Program 4.1. Setting HybridAuth

4.5 Modul Admin 4.5.1 Master Kategori

Halaman Master Kategori menggunakan library grocerycrud dicampur dengan beberapa fungsi dari No-CMS. Fungsi–fungsi yang terdapat pada halaman Master Kategori dapat dilihat pada Tabel 4.1 berikut ini.

Tabel 4.1. Fungsi Kategori No. Nama

Fungsi

Model yang diakses

Deskripsi Segmen Program

1 index - Untuk menginisiasi

halaman dan generate data kategori dilengkapi fungsi filter, add, dan edit (menggunakan grocerycrud)

Segmen Program 4.2

$auth_enable_facebook = TRUE;

$auth_facebook_app_id = '91239847584';

$auth_facebook_app_secret = 'dj21qn31inf23if234f';

$auth_enable_twitter = FALSE;

$auth_twitter_app_key = ‘’;

$auth_twitter_app_secret = ‘’;

(4)

 Fungsi index

Fungsi index berisi seluruh data inisiasi, setting database, setting field yang akan ditampilkan, setting foreign key, setting tipe field, setting unique field, setting required field, dan lain - lain. Tidak diperlukan model untuk query dikarenakan library grocerycrud sudah sanggup memanggil data dari database dan langsung memberikan fitur seperti filter, add, edit, delete, print, dan lain – lain. Fitur ini dapat dikonfigurasi oleh programmer. Untuk lebih lengkapnya dapat dilihat di Segmen Program 4.2 berikut ini.

Segmen Program 4.2. Fungsi index master kategori

$crud->set_table($this->cms_complete_table_name('i_kategori'));

$crud->set_subject('Kategori');

$crud->columns('kategori_id', 'nama');

$crud->edit_fields('nama');

$crud->add_fields('nama');

$crud->display_as(‘kategori_id,'ID');

$crud->display_as('nama','Nama');

$crud->required_fields('nama');

$crud->unique_fields('nama');

$output = $crud->render();

$this->view($this->cms_module_path().'/manage_kategori_view', $output, $this->cms_complete_navigation_name('manage_kategori'));

(5)

4.5.2 Master Subkategori

Halaman Master Subkategori menggunakan library grocerycrud dicampur dengan beberapa fungsi dari No-CMS. Fungsi – fungsi yang terdapat pada halaman Master Kategori dapat dilihat pada Tabel 4.2 berikut ini.

Tabel 4.2. Fungsi Subkategori

No. Nama Fungsi Model

yang diakses

Deskripsi Segmen

Program

1 index - Untuk

menginisiasi halaman dan generate data subkategori dilengkapi fungsi filter, add, dan edit

(menggunakan grocerycrud)

-

2 _after_insert_or_update - Trigger untuk memanipulasi data atribut kategori yang memiliki relation dengan

subkategori yang ingin

ditambahkan / dimanipulasi

-

3 callback_field_atribut_kategori - Untuk

menampilkan data atribut kategori pada subkategori yang ingin dimanipulasi

Segmen Program 4.3

4 callback_column_atribut_kategori - Untuk

menampilkan jumlah data atribut kategori pada setiap subkategori yang ditampilkan di tabel

Segmen Program 4.4

(6)

 Fungsi callback_field_atribut_kategori

Fungsi callback_field_atribut_kategori akan dipanggil oleh index ketika user ingin melakukan edit pada item tertentu. Fungsi ini akan melakukan query database atribut kategori apa sajakah yang memiliki relasi dengan primary key subkategori yang dipilih. Untuk lebih jelasnya dapat dilihat di Segmen Program 4.3 berikut ini.

Segmen Program 4.3. Fungsi callback_field_atribut_kategori

public function callback_field_atribut_kategori($value, $primary_key){

$module_path = $this->cms_module_path();

$this->config->load('grocery_crud');

if(!isset($primary_key)) $primary_key = -1;

$query =

$this->db->select('atribut_kategori_id,nama,tipe')

->from($this->cms_complete_table_name('i_atribut_kategori')) ->where('subkategori_id', $primary_key)

->get();

$result = $query->result_array();

$options = array();

$data = array(

'result' => $result, 'options' => $options);

Return $this->load->view($this-

>cms_module_path().'/field_subkategori_atribut_kategori',$data, TRUE);}

(7)

 Fungsi callback_column_atribut_kategori

Fungsi callback_column_atribut_kategori akan dipanggil oleh index pada awal halaman dimana tabel akan ditampilkan. Fungsi ini akan melakukan query pada database persis seperti query pada fungsi callback_field_atribut_kategori namun pada fungsi ini hanya dilakukan perhitungan jumlahnya saja. Untuk lebih jelasnya dapat dilihat pada Segmen Program 4.4 berikut ini.

Segmen Program 4.4. Fungsi callback_column_atribut_kategori

 Perpindahan data menuju view field_subkategori_atribut_kategori

Data atribut kategori yang merupakan detail dari subkategori akan di render dari view yang berbeda melalui callback, yaitu dari field_subkategori_atribut_kategori. Untuk penerimaan data dari halaman master subkategori dapat dilihat pada Segmen Program 4.5 berikut ini.

public function callback_column_atribut_kategori($value, $row){

$module_path = $this->cms_module_path();

$query = $this->db->select('atribut_kategori_id,nama,tipe')

->from($this->cms_complete_table_name('i_atribut_kategori')) ->where('subkategori_id', $row->subkategori_id)

->get();

$num_row = $query->num_rows();

// show how many records if($num_row>1){

return $num_row .' Atribut Kategori';

}else if($num_row>0){

return $num_row .' Atribut Kategori';}

else{return 'Tidak ada Atribut';}

}

(8)

Segmen Program 4.5. Field_subkategori_atribut_kategori

 Pembuatan kolom baru pada view field_subkategori_atribut_kategori Pembuatan kolom pada field_subkategori_atribut_kategori tidak menggunakan grocerycrud, melainkan menggunakan html yang disisipkan pada variabel javascript. Sebagai contoh, pada Segmen Program 4.6 berikut ini akan terlihat bagaimana cara melakukan pembuatan field nama.

var OPTIONS_atribut_kategori = <?php echo json_encode($options); ?>;

var RECORD_INDEX_atribut_kategori = <?php echo $record_index; ?>;

var DATA_atribut_kategori = {update:new Array(), insert:new Array(), delete:new Array()};

var old_data = <?php echo json_encode($result) ; ?>;

for(var i=0; i<old_data.length; i++){

var row = old_data[i];

var record_index = i;

var primary_key = row['atribut_kategori_id'];

var data = row;

delete data['atribut_kategori_id'];

DATA_atribut_kategori.update.push({

'record_index' : record_index, 'primary_key' : primary_key, 'data' : data,

});

}

(9)

Segmen Program 4.6. Pembuatan kolom baru pada field_subkategori_atribut_kategori

4.5.3 Master Atribut Kategori

Halaman Master Atribut Kategori menggunakan library grocerycrud dicampur dengan beberapa fungsi dari No-CMS. Fungsi – fungsi yang terdapat pada halaman Atribut Kategori dapat dilihat pada Tabel 4.3 berikut ini.

Tabel 4.3. Fungsi Atribut Kategori

No. Nama Fungsi Model

yang diakses

Deskripsi Segmen

Program

1 index - Untuk

menginisiasi halaman dan generate data atribut kategori dilengkapi fungsi filter, add, dan edit

(menggunakan grocerycrud)

-

2 _before_delete - Trigger untuk

delete data choice atribut kategori yang memiliki relation dengan

subkategori yang ingin dihapus

Segmen Program 4.7

var field_value = '';

if(typeof(value) != 'undefined' && value.hasOwnProperty('nama')){

field_value = value.nama;}

component += '<td>';

component+='<input id =

"md_field_atribut_kategori_col_nama_'+RECORD_INDEX_atribut_kategori+'"

record_index="'+RECORD_INDEX_atribut_kategori+'"

class="md_field_atribut_kategori_col" column_name="nama" type="text"

value="'+field_value+'"/>';

component += '</td>';

(10)

Tabel 4.3. Fungsi Atribut Kategori (Sambungan)

No. Nama Fungsi Model

yang diakses

Deskripsi Segmen

Program 3 _after_insert_or_update - Trigger untuk

memanipulasi data choice atribut kategori yang memiliki relation dengan atribut kategori yang ingin ditambahkan / dimanipulasi

-

4 callback_field_atribut_kategori - Untuk

menampilkan data choice atribut kategori pada atribut kategori yang ingin

dimanipulasi

-

5 callback_column_atribut_kategori - Untuk

menampilkan jumlah data choice atribut kategori pada setiap

subkategori yang ditampilkan di tabel

-

 Fungsi _before_delete

Fungsi _before_delete adalah sebuah trigger untuk melakukan delete terhadap choice atribut kategori yang berhubungan dengan atribut kategori yang ingin dihapus. Fungsi ini akan langsung melakukan query untuk menghapus choice atribut kategori, choice atribut kategori item, dan atribut kategori item berdasarkan primary key atribut kategori yang ingin dihapus. Lebih jelasnya dapat dilihat pada Segmen Program 4.7 berikut ini.

(11)

Segmen Program 4.7. Fungsi before_delete

4.5.4 Approve Item

Halaman Approve Item menggunakan library grocerycrud dicampur dengan beberapa fungsi dari No-CMS. Fungsi – fungsi yang terdapat pada halaman Approve Item dapat dilihat pada Tabel 4.4 dibawah ini.

Tabel 4.4. Fungsi Approve Item

No. Nama Fungsi Model

yang diakses

Deskripsi Segmen

Program

1 index - Untuk

menginisiasi halaman dan generate data item dilengkapi fungsi filter, edit (menggunakan grocerycrud)

-

2 _before_delete - Trigger untuk

delete data item picture yang memiliki relation dengan item yang ingin dihapus

-

public function _before_delete($primary_key){

// delete corresponding atributte

$this->db->delete($this-

>cms_complete_table_name('i_choice_atribut_kategori'),array('atribut_k ategori_id'=>$primary_key));

$this->db->delete($this-

>cms_complete_table_name('i_atribut_kategori_item'),array('atribut_kat egori_id'=>$primary_key));

$this->db->delete($this-

>cms_complete_table_name('i_choice_atribut_kategori_item'),array('atri but_kategori_id'=>$primary_key));

return TRUE;

}

(12)

Tabel 4.4. Fungsi Approve Item (lanjutan)

No. Nama Fungsi Model

yang diakses

Deskripsi Segmen

Program 3 _after_insert_or_update - Trigger untuk

memanipulasi data item picture yang memiliki relation dengan item yang ingin ditambahkan / dimanipulasi

-

4 callback_field_item_picture - Untuk

menampilkan data item picture pada item yang ingin dimanipulasi

-

5

callback_column_item_picture

- Untuk

menampilkan jumlah data item picture pada setiap item yang

ditampilkan di tabel

-

4.5.5 Approve Sales

Halaman Approve Sales menggunakan library grocerycrud dicampur dengan beberapa fungsi dari No-CMS. Fungsi – fungsi yang terdapat pada halaman Approve Sales dapat dilihat pada 0 berikut ini.

(13)

Tabel 4.5. Fungsi Approve Sales

No. Nama Fungsi Model yang diakses Deskripsi Segmen Program

1 index - Untuk

menginisiasi halaman dan generate data Shopping Cart dilengkapi fungsi filter dan edit (menggunakan grocerycrud)

-

2

get_user_bycart

get_user_bycart

(item_manager_model)

Untuk mendapatkan user_id pada Shopping Cart tertentu

-

3 send_message - Untuk

mengirimkan email notifikasi kepada pembeli dan penjual setelah sebuah Shopping Cart divalidasi

0

 Fungsi send_message

Fungsi send_message adalah sebuah trigger ketika admin melakukan approval kepada sebuah Shopping Cart. Trigger ini dilakukan dengan pengecekan javascript pada view dan akan dipindahkan kepada controller. Fungsi pada controller dan pemanggilan pada view dapat dilihat berturut – turut pada 0 dan Segmen Program 4.9 berikut ini.

(14)

Segmen Program 4.8. Fungsi send_message pada controller

Segmen Program 4.9. Fungsi send message pada view

4.5.6 View Laporan Sales

Halaman View Laporan Sales menggunakan beberapa fungsi dari No-CMS digabung dengan plugin Google Chart. Fungsi – fungsi yang terdapat pada halaman View Laporan Sales dapat dilihat pada 0 berikut ini.

public function send_message(){

$shoppingcart_id = $this->input->get('shoppingcart_id');

$pembeli_nama = $this->input->get('pembeli_nama');

$pembeli_email = $this->input->get('pembeli_email');

$penjual_nama = $this->input->get('penjual_nama');

$penjual_email = $this->input->get('penjual_email');

$email_from_address = $this-

>cms_get_config('cms_email_reply_address');

$email_from_name = $this->cms_get_config('cms_email_reply_name');

$pembeli_email_subject = 'Pembayaran Anda Telah Diterima';

$pembeli_email_message = 'Kepada YTH '.$pembeli_nama.',<br /><br />

Terimakasih atas kepercayaannya menggunakan Marketplace.com<br /><br />Kami ingin menginformasikan bahwa pembayaran anda dengan nomor shopping cart SC'.$shoppingcart_id.', telah divalidasi oleh admin.<br /><br />Diharap kesabarannya menunggu pengiriman barang oleh

penjual.<br /><br />Terimakasih<br /><br /> Dikirim oleh Marketplace.com';

$pembeli_email_to_address = $pembeli_email;}

$.get('/marketplace/index.php/item_manager/confirm_cart/send_message', {'shoppingcart_id': $('#field-shoppingcart_id').html(),

'pembeli_nama': obj.get_user[0]['pembeli_nama'], 'pembeli_email':

obj.get_user[0]['pembeli_email'], 'penjual_nama':

obj.get_user[0]['penjual_nama'], 'penjual_email':

obj.get_user[0]['penjual_email']}, function(data) {});

(15)

Tabel 4.6. Tabel Laporan Sales No. Nama Fungsi Model yang

diakses

Deskripsi Segmen

Program

1 index - Untuk menginisasi

halaman

- 2 fill_sales Getsales

(report_model)

Untuk mendapatkan nominal sales pada setiap bulan

berdasarkan tahun tertentu (untuk ditampilkan pada grafik)

0, 0

 Fungsi fill_sales

Fungsi fill_sales akan memberi input kepada Google Chart mengenai sales yang terjadi pada website. Sales ini akan dibagi menjadi 12 bulan dalam tahun tertentu. View akan memanggil fungsi pada controller yaitu fill_sales dilengkapi dengan tahun, kemudian fungsi fill_sales akan memanggil model get_sales yang akan melakukan query. Fungsi pada controller dan model berturut – turut dapat dilihat pada 0 dan 0 berikut ini.

Segmen Program 4.10. Fungsi controller fill_sales

public function fill_sales(){

$crud=$this->new_crud();

$this->load->model($this->cms_module_path().'/report_model');

$this->report_model = new report_model();

$year = $this->input->get('year');

$result['jan'] = $this->report_model->getsales(1, $year)...

$result['des'] = $this->report_model->getsales(12, $year);

echo json_encode($result);

}

(16)

Segmen Program 4.11. Fungsi Model fill_sales

 Load Plugin Google Chart

Plugin Google Chart akan menerima dua macam data, melalui variabel data dan option. Variabel data akan menentukan grafik yang akan ditampilkan, sedangkan variabel option akan menentukan opsi tambahan yang akan ditampilkan. Cara load plugin secara lengkap dapat dilihat pada Segmen Program 4.12 berikut ini.

Segmen Program 4.12. Plugin Google Chart

public function getsales($month=0, $year=2014){

$query = $this->db->select('total')

->from($this->cms_complete_table_name('u_shoppingcart').' as shoppingcart')

->where('MONTH(a_confirm_date)',$month) ->where('YEAR(a_confirm_date)',$year) ->get();

$result = array();

$result = $query->result();

return $result;

}

google.load("visualization", "1", {packages:["corechart"]});

google.setOnLoadCallback(drawChart);

function drawChart() {

var data = google.visualization.arrayToDataTable([

['Month', 'Sales'],['Januari', totaljan] ...['Desember', totaldes]

]);

var options = {title: 'Company Sales Performance '+year+''};

var chart = new

google.visualization.LineChart(document.getElementById('chart_div'));

chart.draw(data, options);

(17)

4.5.7 View Laporan Jumlah Sales

Halaman View Laporan Jumlah Sales menggunakan beberapa fungsi dari No-CMS digabung dengan plugin Google Chart. Fungsi – fungsi yang terdapat pada halaman View Laporan Jumlah Sales dapat dilihat pada Tabel 4.7 berikut ini.

Tabel 4.7. Fungsi Laporan Jumlah Sales No. Nama Fungsi Model yang

diakses

Deskripsi Segmen

Program

1 index - Untuk menginisasi

halaman

- 2 fill_jmlsales Getsales

(report_model)

Untuk mendapatkan jumlah sales pada setiap bulan berdasarkan tahun tertentu (untuk ditampilkan pada grafik)

-

4.5.8 View Laporan User Registration

Halaman View Laporan User Registration menggunakan beberapa fungsi dari No-CMS digabung dengan plugin Google Chart. Fungsi – fungsi yang terdapat pada halaman View Laporan User Registration dapat dilihat pada Tabel 4.8 berikut ini.

Tabel 4.8. Fungsi Laporan User Registration No. Nama Fungsi Model yang

diakses

Deskripsi Segmen Program

1 index - Untuk menginisasi

halaman

- 2 fill_user Getuser

(report_model)

Untuk mendapatkan jumlah user yang melakukan registrasi pada setiap bulan berdasarkan tahun tertentu (untuk ditampilkan pada grafik)

-

(18)

4.5.9 View Laporan Traffic

Halaman View Laporan User Registration menggunakan beberapa fungsi dari No-CMS digabung dengan plugin Google Chart. Fungsi – fungsi yang terdapat pada halaman View Laporan User Registration dapat dilihat pada Tabel 4.9 ini.

Tabel 4.9. Fungsi Laporan Traffic No. Nama Fungsi Model yang

diakses

Deskripsi Segmen

Program

1 index - Untuk menginisasi

halaman

- 2 fill_subkategori Getsubkategori

(report_model)

Untuk mendapatkan data subkategori

- 3 fill_view Getitemview

(report_model)

Untuk mendapatkan jumlah view

berdasarkan subkategori

-

4.6 Modul User 4.6.1 Browse Item

Halaman Browse Item menggunakan beberapa fungsi dari No-CMS.

Fungsi – fungsi yang terdapat pada halaman Browse Item dapat dilihat pada Tabel 4.10 berikut ini.

Tabel 4.10. Fungsi Browse Item

No. Nama Fungsi Model yang diakses Deskripsi Segmen Program

1 index - Untuk

menginisasi halaman

-

2 get_data get_data, get_data2, get_data3, get_data4 (item_model)

Untuk mendapatkan data item yang belum atau sudah difilter dan disorting

Segmen Program 4.13, Segmen Program 4.14, Segmen Program 4.15

(19)

Tabel 4.10. Fungsi Browse Item (Sambungan) No. Nama Fungsi Model yang diakses Deskripsi Segmen

Program 3 update_view update_view

(item_model)

Untuk menambah jumlah view setiap kali sebuah item di klik

Segmen Program 4.16

4 fill_comment Getcomment (item_model)

Untuk mendapatkan data item comment yang memiliki relasi dengan item tertentu

-

5 insert_comment insert_comment (item_model)

Untuk

menginputkan data item comment yang memiliki relasi dengan item tertentu

-

6 getuserid - Untuk

mendapatkan user id yang sedang login sekarang

-

7 fill_rating Getrating (item_model) Untuk mendapatkan data item rating yang memiliki relasi dengan item tertentu

-

8 insert_rating check_insert_rating (item_model)

Untuk

menginputkan data item rating yang memiliki relasi dengan item dan user tertentu

-

(20)

Tabel 4.10. Fungsi Browse Item (Sambungan) No. Nama Fungsi Model yang diakses Deskripsi Segmen

Program 9 insert_shoppingcart check_shoppingcart,

add_shoppingcart, add_shoppingcart_detail, check_item_kembar (item_model)

Untuk

menginputkan data item tertentu pada Shopping Cart

Segmen Program 4.17

10 fill_kategori Getkategori (item_model) Untuk mendapatkan data kategori

-

11 fill_subkategori Getsubkategori (item_model)

Untuk mendapatkan data

subkategori yang memiliki relasi dengan kategori tertentu

-

16 fill_provinsi Getprovinsi (item_model) Untuk mendapatkan data provinsi

-

17 fill_filter Getfilteritematribut (item_model)

Untuk mendapatkan data atribut kategori yang memiliki relasi dengan

subkategori tertentu

-

18 fill_filterchoice Getfilterchoiceitematribut (item_model)

Untuk mendapatkan data atribut kategori choice yang memiliki relasi dengan atribut kategori tertentu

-

19 fill_rekomendasi get_data_rekomendasi (item_model)

Untuk mendapatkan data item yang serupa dengan item tertentu

-

(21)

 Fungsi get_data

Fungsi get_data dipanggil oleh view menuju controller dengan menggunakan ajax, kemudian controller akan memanggil model yang akan mengirimkan data query sesuai dengan inputan user. Data query akan diterima oleh controller dan dikirimkan kembali kepada view untuk ditampilkan. Fungsi pada view, controller, dan model berturut – turut dapat dilihat pada Segmen Program 4.13, Segmen Program 4.14, dan Segmen Program 4.15 berikut ini.

Segmen Program 4.13. Fungsi view fetch_more_data

function fetch_more_data(async){

if(typeof(async) == 'undefined'){async = true;}

$('#content-bottom').html('Load more item ...');

var keyword = $('#input_search').val();var filter =

$('#input_sort').val();var tipeitem = $('#input_tipe').val();

var $_GET = <?php echo json_encode($_GET); ?>;

var subkategori = $_GET['subkategori_id'];var kategori =

$_GET['kategori_id'];var cak = $_GET['cak_id'];

prov = provinsi;

kot = kota;

if(RUNNING_REQUEST){ REQUEST.abort();}

RUNNING_REQUEST = true;

REQUEST = $.ajax({

'url' : URL, 'type' : 'POST', 'async': async,

'data' : {'keyword' : keyword, 'filter' : filter, 'subkategori' : subkategori, 'kategori' : kategori, 'tipeitem' : tipeitem, 'cak' : cak,'prov' : prov, 'kot' : k ot, 'page' : PAGE, }, 'success' : function(response){

$('#record_content').append(response);

var bottom_content = 'No more item to show.';

$('#record_content_bottom').html(bottom_content);

RUNNING_REQUEST = false;

PAGE ++;}});}

(22)

Segmen Program 4.14. Fungsi controller get_data

public function get_data(){

$keyword = $this->input->post('keyword');

$subkategori = $this->input->post('subkategori');

$kategori = $this->input->post('kategori');

$filter = $this->input->post('filter');

$cak = $this->input->post('cak');

$kot = $this->input->post('kot');

$prov = $this->input->post('prov');

$tipeitem = $this->input->post('tipeitem');

$page = $this->input->post('page');

if($kot!=0){$daerah=2;$daerahid=$this->input->post('kot');}

elseif($prov!=0){$daerah=1;$daerahid=$this->input->post('prov');}

else{$daerah=0;$daerahid=0;}

$this->load->model($this->cms_module_path().'/item_model');

$this->item_Model = new item_Model();

if($keyword==''and $subkategori!='' and $cak!=''){$result = $this-

>item_Model->get_data4($keyword, $cak, $filter, $daerah, $daerahid,

$tipeitem, $page);}

elseif($keyword==''and $subkategori!=''){$result = $this ->item_Model-

>get_data2($keyword, $subkategori, $filter, $daerah, $daerahid,

$tipeitem, $page);}

elseif($keyword==''and $kategori!=''){$result = $this->item_Model-

>get_data3($keyword, $kategori, $filter, $daerah, $daerahid,

$tipeitem, $page);}

else{$result = $this->item_Model->get_data($keyword, $filter, $daerah,

$daerahid, $tipeitem, $page);}

$this->view($this-

>cms_module_path().'/browse_item_partial_view',$data,

$this->cms_complete_navigation_name('browse_item'), $config);

}

(23)

Segmen Program 4.15. Fungsi model get_data

public function get_data($keyword, $filter, $daerah, $daerahid,

$tipeitem, $page=0){

if($filter==0){$ordername = 'item.insert_date';$orderto = 'desc';}

elseif($filter==1){$ordername = 'item.insert_date';$orderto = 'asc';}

elseif($filter==2){$ordername = 'item.harga';$orderto = 'asc';}

elseif($filter==3){$ordername = 'item.harga';$orderto = 'desc';}

if($daerah==0){$wheredaerah='item.status_item';$isdaerah='a';}

elseif($daerah==1){$wheredaerah='kota.provinsi_id';$isdaerah=$daerahid

;}

elseif($daerah==2){$wheredaerah='user.kota_id';$isdaerah=$daerahid;}

if($tipeitem==0){$wheretipeitem='item.sta tus_item';$istipeitem='a';}

elseif($tipeitem==1){$wheretipeitem='item.tipe';$istipeitem='s';}

elseif($tipeitem==2){$wheretipeitem='item.tipe';$istipeitem='b';}

$query = $this->db->select('item.item_id, item.nama, item.tipe, item.picture1, item.harga, item. view, item.insert_date,

user.user_name as u_name,subkategori.nama as k_name, kota.nama as kota_nama, provinsi.nama as provinsi_nama')

from($this->cms_complete_table_name('i_item').' as item') ->join($this->cms_complete_table_name('i_subkategori').' as subkategori', 'item.subkategori_id=subkategori.subkategori_id', 'left')

->join($this->cms_complete_table_name('main_user').' as user', 'item.user_id=user.user_id', 'left')

->join($this->cms_complete_table_name('u_kota').' as kota', 'user.kota_id=kota.kota_id', 'left')

->join($this->cms_complete_table_name('u_provinsi').' as provinsi', 'kota.provinsi_id=provinsi.provinsi_id', 'left')

->where('item.status_item','a')

->where("(item.nama LIKE '%$keyword%')") ->where($wheredaerah,$isdaerah)

->where($wheretipeitem,$istipeitem) ->order_by($ordername,$orderto) ->limit(10, $page*10)

->get();

$result = $query->result();

return $result;}

(24)

 Fungsi update_view

Fungsi update_view akan dijalankan ketika user mengklik item untuk menampilkan isi detil dari item. Fungsi ini akan mengakumulasi view yang ada dan ditambahkan satu. Untuk lebih jelasnya fungsi pada model update_view dapat dilihat pada Segmen Program 4.16 berikut ini.

Segmen Program 4.16. Fungsi update_view

 Fungsi insert_shoppingcart

Fungsi insert_shoppingcart akan dijalankan ketika user mengklik tombol buy setelah modal detail item ditampilkan. Fungsi ini akan dibagi menjadi dua percabangan. Percabangan pertama adalah ketika tidak ditemukan Shopping Cart pada kedua user, maka akan dibuat Shopping Cart dan Detail Shopping Cart.

Percabangan selanjutnya adalah ketika Shopping Cart ditemukan pada kedua user, akan terdapat pengecekan item kembar terlebih dahulu, setelah pengecekan menunjukan tidak ada item kembar maka Detail Shopping Cart ditambahkan.

Fungsi pada controller dapat dilihat pada Segmen Program 4.17 berikut ini.

public function update_view($item_id=0){

$sql = "SELECT view FROM m_i_item WHERE item_id = ?";

$query = $this->db->query($sql,$item_id);

$hasil = array();

if($query->num_rows() > 0){

foreach($query->result_array() as $row){

$hasil['view'] = $row['view'] + 1;

} }

$array = array('view' => $hasil['view']);

$this->db->update($this-

>cms_complete_table_name('i_item'),$array,array('item_id' =>

$item_id));

}

(25)

Segmen Program 4.17. Fungsi insert_shoppingcart

public function insert_shoppingcart(){

$crud=$this->new_crud();

$this->load->model($this->cms_module_path().'/item_model');

$this->item_model = new item_model();

$item_id= $this->input->get('item_id');

$user_id_2 = $this->input->get('user_id_2');

$subtotal = $this->input->get('subtotal');

$harga = $this->input->get('harga');

$berat = $this->input->get('berat');

$user_id = $this->cms_user_id();

$result = $this->item_model->check_shoppingcart($user_id, $user_id_2);

if($result==0){

$result2 = $this->item_model->add_shoppingcart($user_id, $user_id_2);

$this->item_model->add_shoppingcart_detail(intval($result2), $item_id,

$harga, $subtotal, $berat);}

else{

$result2= $this->item_model->check_item_kembar($result, $item_id);

if($result2==0){$this->item_model-

>add_shoppingcart_detail(intval($result), $item_id, $harga,

$subtotal, $berat);}}

}

(26)

4.6.2 Pasang Item

Halaman Pasang Item menggunakan library grocerycrud dicampur dengan beberapa fungsi dari No-CMS. Fungsi – fungsi yang terdapat pada halaman Pasang Item dapat dilihat pada Tabel 4.11 dibawah ini.

Tabel 4.11. Fungsi Pasang Item No

.

Nama Fungsi

Model yang diakses

Deskripsi Segmen

Program

1 index - Untuk menginisiasi halaman

dan generate data item dilengkapi fungsi add dan edit (menggunakan

grocerycrud)

-

2 fill_kategori getkategori (pasang_item_m odel)

Untuk mendapatkan data kategori

-

3 fill_subkateg ori

getsubkategori (pasang_item_m odel)

Untuk mendapatkan data subkategori yang memiliki relasi dengan kategori tertentu

-

4 get_kategori get_data_kategor i

(pasang_item_m odel)

Untuk mendapatkan data kategori yang memiliki relasi dengan subkategori tertentu

-

5 fill_atribut_k ategori_choi ce

get_atribut_kate gori_choice (pasang_item_m odel)

Untuk mendapatkan data atribut kategori choice yang memiliki relasi dengan subkategori tertentu

-

6 fill_atribut_k ategori_choi ce_x

get_atribut_kate gori_choice_x (pasang_item_m odel)

Untuk mendapatkan data atribut kategori choice yang memiliki relasi dengan atribut kategori tertentu

-

7 fill_atribut_k ategori_fill

get_atribut_kate gori_fill

(pasang_item_m odel)

Untuk mendapatkan data atribut kategori fill yang memiliki relasi dengan subkategori tertentu

-

8 get_last_ite m_id

get_last_id (pasang_item_m odel)

Untuk mendapatkan data auto increment tabel item

Segmen Program 4.18 9 insert_atribu

t_kategori_c hoice

get_last_id, add_atribut_kate gori_choice (pasang_item_m odel)

Untuk menginputkan data atribut kategori choice pada sebuah item tertentu

-

(27)

 Fungsi get_last_item_id

Fungsi ini digunakan untuk menginputkan data foreign key (item_id) atribut kategori item atau choice atribut kategori item Untuk mendapatkan id auto increment pada tabel item di database, fungsi get_last_item_id perlu memanggil fungsi get_last_id pada model. Untuk lebih jelasnya dapat dilihat pada Segmen Program 4.18 berikut ini.

Segmen Program 4.18. Fungsi get_last_id

4.6.3 View Profile

Halaman View Profile menggunakan beberapa fungsi dari No-CMS. Fungsi – fungsi yang terdapat pada halaman View Profile dapat dilihat pada Tabel 4.12 berikut ini.

Tabel 4.12. Fungsi View Profile No

.

Nama Fungsi Model yang diakses

Deskripsi Segmen

Program

1 index - Untuk menginisasi

halaman

-

2 user - Untuk menginisasi

halaman jika halaman yang dimasuki memiliki

backslash user

-

3 get_data get_data, get_data_testim oni

(profile_model)

Untuk mendapatkan data item dan testimoni yang dimiliki user tertentu

-

4 fill_profile fill_profile, getsales

(profile_model)

Untuk mendapatkan data user

-

function get_last_id() {

$sql = "SHOW TABLE STATUS LIKE 'm_i_item'";

$query = $this->db->query($sql);

$hasil = array();

if($query->num_rows() > 0){

foreach($query->result_array() as $row){$hasil =

$row['Auto_increment'];}}

return $hasil;}

(28)

Tabel 4.13. Fungsi View Profile No

.

Nama Fungsi Model yang diakses

Deskripsi Segmen

Program 5 find_usernam

e

find_username (profile_model)

Untuk mencari data username berdasarkan user_id seorang user

-

6 find_userid find_userid (profile_model)

Untuk mencari data user_id berdasarkan username seorang user

-

7 fill_about fill_about (profile_model)

Untuk mendapatkan data extra tab yang dimiliki user tertentu

-

8 fill_kategori_

user_rating

get_kategori_us errating

(profile_model)

Untuk mendapatkan data kategori user rating

-

9 fill_user_rati ng

get_userrating (profile_model)

Untuk mendapatkan jumlah rating untuk setiap kategori user rating pada user tertentu

0

10 insert_user_r ating

check_insert_us er_rating

(profile_model)

Untuk menginputkan data user rating pada kategori user rating dan user tertentu

0, Segmen Program 4.21, Segmen Program 4.22

 Fungsi fill_user_rating

Untuk menampilkan rating daripada seorang user, terdapat dua kali pemanggilan dari view ke controller, untuk memanggil kategori rating dan rating itu sendiri. Hasil dari pemanggilan akan berbentuk gambar sesuai dengan rata – rata jumlah rating seorang user. Untuk lebih jelasnya dapat dilihat pada 0 berikut.

(29)

Segmen Program 4.19. Fungsi fill_user_rating

 Fungsi insert_user_rating

Untuk mengisi data rating dari seorang user ke user lain maka akan dilakukan pemanggilan fungsi dari view (ketika sebuah dropdown rating diklik) menuju controller dan model. Contoh code pada view, controller, dan model dapat dilihat berturut – turut daripada 0 , Segmen Program 4.21, dan Segmen Program 4.22 berikut ini.

$.get('/marketplace/index.php/member/profile/fill_user_rating', {'user_id': userid, 'kategori_user_rating_id':

obj.kategori_user_rating[i]['kategori_user_rating_id']}, function(data) {

var obj2 =$.parseJSON(data);

var user_rating = 0;

var user_count = obj2.getcount_userrating;

$.each(obj2.get_userrating,function(j){user_rating = user_rating + parseInt(obj2.get_userrating[j]['rate']);});

var user_total = number_format(user_rating / user_count, 1, '.', '');

var user_totalcheck = number_format(user_rating / user_count, 0, '.', '');

if(user_totalcheck==1){$('#user_rate').append(rating_1);}

else if(user_totalcheck==2){$('#user_rate').append(rating_2);}

else if(user_totalcheck==3){$('#user_rate').append(rating_3);}

else if(user_totalcheck==4){$('#user_rate').append(rating_4);}

else if(user_totalcheck==5){$('#user_rate').append(rating_5);}

else{$('#user_rate').append(rating_0);}

});

(30)

Segmen Program 4.20. Fungsi view insert_user_rating

Segmen Program 4.21. Fungsi controller insert_user_rating

$('#'+obj.kategori_user_rating[i]['kategori_user_rating_id']+'_rating_

1').live('click',function(){

$.get('/marketplace/index.php/member/profile/insert_user_rating', {'rate': 1, 'user_id': userid, 'kategori_user_rating_id':

obj.kategori_user_rating[i]['kategori_user_rating_id']}, function(data) {

var obj =$.parseJSON(data);

location.reload();});

});

public function insert_user_rating(){

$crud=$this->new_crud();

$this->load->model($this->cms_module_path().'/profile_model');

$this->profile_model = new profile_model();

$kategori_user_rating_id = $this->input-

>get('kategori_user_rating_id');

$user_id= $this->input->get('user_id');

$rate = $this->input->get('rate');

$user_id_2 = $this->cms_user_id();

$result['user_rating'] = $this->profile_model-

>check_insert_user_rating($kategori_user_rating_id,

$rate,$user_id,$user_id_2);

echo json_encode($result);

}

(31)

Segmen Program 4.22. Fungsi model insert_user_rating

4.6.4 Shopping Cart

Halaman Shopping Cart menggunakan beberapa fungsi dari No-CMS.

Fungsi – fungsi yang terdapat pada halaman Shopping Cart dapat dilihat pada 0 berikut ini.

public function check_insert_user_rating($kategori_user_rating_id=0,

$rate=0,$user_id=0,$user_id_2=0){

$query = $this->db->select('rating.user_rating_id')

->from($this->cms_complete_table_name('u_user_rating').' as rating')

->where('rating.user_id',$user_id) ->where('rating.user_id_2',$user_id_2) -

>where('rating.kategori_user_rating_id',$kategori_user_rating_id) ->get();

$result = array();

if($query->num_rows() > 0){

$array = array('rate' => $rate);

$this->db->update($this-

>cms_complete_table_name('u_user_rating'),$array,array('kategori _user_rating_id' => $kategori_user_rating_id, 'user_id' =>

$user_id, 'user_id_2' => $user_id_2));

return "Update Rating Sukses";}

else{

$array = array('kategori_user_rating_id' =>

$kategori_user_rating_id, 'user_id' => $user_id , 'rate' => $rate, 'user_id_2' => $user_id_2);

$this->db->set($array);

$this->db->insert($this-

>cms_complete_table_name('u_user_rating'));

return "Penambahan Rating Sukses";}

}

(32)

Tabel 4.14. Fungsi Shopping Cart No

.

Nama Fungsi

Model yang diakses

Deskripsi Segmen

Program

1 index - Untuk menginisiasi halaman -

2 get_data get_data, get_data_detail (shopping_cart _model)

Untuk mendapatkan data Shopping Cart yang dibeli user tertentu (sisi pembeli)

-

3 update_qu antity

update_quantit y

(shopping_cart _model)

Untuk memanipulasi data kuantitas item tertentu pada sebuah Shopping Cart

-

4 delete_sho ppingcart

delete_shoppin gcart_detail (shopping_cart _model)

Untuk menghapus item tertentu pada sebuah Shopping Cart

-

5 confirm_s hoppingca rt

confirm_shopp ingcart

(shopping_cart _model)

Untuk menngubah status Shopping Cart menjadi konfirmasi penjual

-

6 confirm_s hoppingca rt_final

confirm_shopp ingcart_final (shopping_cart _model)

Untuk menngubah status Shopping Cart menjadi konfirmasi admin

-

7 confirm_s hoppingca rt_penerim aan

confirm_shopp ingcart_peneri maan

(shopping_cart _model)

Untuk menngubah status Shopping Cart menjadi sukses

-

8 count_sho ppingcart

count_shoppin gcart

(shopping_cart _model)

Untuk menghitung jumlah Shopping Cart yang memiliki status tertentu

-

9 get_shoppi ngcart

get_shoppingc art

(shopping_cart _model)

Untuk mendapatkan data Shopping Cart berdasarkan shoppingcart_id

-

 Mengakses data JNE

Data JNE akan diakses menggunakan metode curl untuk mengoper data sehingga dapat diakses dalam bentuk php. Data kota pembeli dan penjual, data berat total juga dikirim terlebih dahulu. Untuk lebih jelasnya dapat dilihat pada

(33)

Segmen Program 4.23. Koneksi JNE

$ch = curl_init();

$url = "http://api.ongkir.info/cost/find";

$from = strtoupper($record->kota2nama);

$to = strtoupper($record->kota1nama);

$weight = $total_berat * 1000;

$params = array(

'from' => $from, 'to' => $to,

'weight' => $weight, 'courier' => 'jne', 'format' => 'json',

'API-Key' =>'fa73abe03841abe9068666060c586898');

// If its an array (instead of a query string)

if (is_array($params)){$params = http_build_query($params, NULL, '&');}

//set the url, number of POST vars, POST data curl_setopt($ch,CURLOPT_URL, $url);

curl_setopt($ch,CURLOPT_POST,TRUE);

curl_setopt($ch,CURLOPT_POSTFIELDS, $params);

curl_setopt($ch,CURLOPT_RETURNTRANSFER ,TRUE);

//execute post

$resultOngkir = curl_exec($ch);

$dataOngkir = json_decode($resultOngkir);

curl_close($ch);

(34)

4.6.5 Sales Cart

Halaman Sales Cart menggunakan beberapa fungsi dari No-CMS. Fungsi – fungsi yang terdapat pada halaman Sales Cart dapat dilihat pada Tabel 4.15 berikut ini.

Tabel 4.15. Fungsi Sales Cart No

.

Nama Fungsi

Model yang diakses

Deskripsi Segmen

Program

1 index - Untuk menginisiasi

halaman

- 2 get_data get_data,

get_data_detail (sales_cart_model )

Untuk mendapatkan data Shopping Cart yang dibeli user tertentu (sisi penjual)

-

3 confirm_sal escart

confirm_salescart (sales_cart_model )

Untuk mengubah status Shopping Cart menjadi konfirmasi final

-

4 confirm_sal escart_peng iriman

confirm_salescart _pengiriman (sales_cart_model )

Untuk mengubah status Shopping Cart menjadi konfirmasi penerimaan barang

-

5 count_sales cart

count_salescart (sales_cart_model )

Untuk menghitung jumlah sales cart yang memiliki status tertentu

-

6 get_city - Untuk mendapatkan kota

pada database JNE

-

7 get_cost - Untuk mendapatkan harga

pada database JNE berdasarkan jarak kedua kota

-

Gambar

Gambar 4.1.  Instalasi  No-CMS
Tabel 4.1.  Fungsi  Kategori  No.  Nama
Tabel 4.2.  Fungsi  Subkategori
Tabel 4.3.  Fungsi  Atribut  Kategori
+7

Referensi

Dokumen terkait

Tampilan halaman Hapus Laporan Pekerjaan dapat dilihat pada Gambar 8 terdapat dua tombol utama yaitu yes untuk mengkonfirmasi hapus data yang dipilih dan no

Berikut ini tabel pengujian posting perjalanan dapat dilihat pada Tabel 4.17 Tabel 4.17 Tabel Hasil Pengujian Merubah Profil. Kasus dan Hasil Uji

Gambar 4.22 Halaman Tampilan Laporan Detail Pemesanan Obat Adapun penjelasan mengenai Tampilan Laporan Stok dapat dilihat pada Tabel 4.16. Tabel 4.16 Penjelasan Tampilan

Laporan dapat dipilih sesuai dengan tanggal yang diinginkan Query pembuatan laporan pengiriman dapat dilihat pada Segmen 4.11. Sedangkan pembuatan laporan

View/kriteria/view.php Dalam setiap baris tabel, terdapat dua tombol aksi, yaitu tombol "Edit" dengan kelas "btn btn- sm btn-warning" yang mengarahkan pengguna ke halaman "formeditju"

Halaman home procurement terdapat link navigasi yang terdiri dari view PR, view PO, dimana ketika link view purchase request diklik maka akan tampil halaman yang menampilkan tabel yang

Untuk lebih jelasnya dapat dilihat pada tabel berikut ini : Tabel IV.7 Respon Responden Terhadap Pelatihan Dalam Bidang Pembukuan NO Respon Responden Jumlah Presentase % 1

Halaman Sales Order Halaman sales order yang dapat diakses oleh pemilik dan staff ini merupakan halaman yang berisi laporan data sales order dari perusahaan, pada halaman ini