Tutorial Codeigniter Part 13 – Menggunakan WYSIWYG Editor TinyMCE

codeigniter-kcdev
Advertisements

Selamat berjumpa kembali diks. Kali ini kita akan membahas mengenai cara menggunakan WYSIWYG Editor pada codeigniter. WYSIWYG adalah singkatan dari “What You See Is What You Get“. WYSIWYG editor adalah solusi yang sempurna untuk mengatur konten dan teks secara cepat, mengatur tata letak konten dengan mudah, memasukan gambar, menentukan ukuran tulisan, mengatur indentasi, bullet & numbering. Kalau kace bilang sih penggunaanya sangat mirip dengan microsoft office word. Sebenarnya ada banyak sekali WYSIWYG editor yang bisa kita gunakan secara gratis, namun di tutorial ini kita akan menggunakan TinyMCE karena UI yang simple, kemudahan dalam instalasi dan konfigurasinya. TinyMCE ini akan kita pasang pada modul lowongan kerja yang sudah kita rencanakan pada tutorial part 0. Oke langsung saja kita mulai.

1. Download Plugin TinyMCE

Silahkan mengunjungi website resmi TinyMCE untuk mengunduh file plugin nya atau adiks bisa langsung klik disini saja. Kemudian file plugin tersebut akan kita letakkan di dalam folder assets/plugins/tinymce. Jadi struktur folder project kita akan terlihat seperti di bawah ini.

codeigniter
|-application
|-assets
| |-materialize
| | |-css
| | |-fonts
| | |-js
| |-images
| | |-logo.png
| | |-nav.jpg
| |-css
| | |-kcdev.css
| |-js
| | |-kcdev.js
| |-plugins
| | |-tinymce
|-system
.htaccess
index.php

2. Membuat Tabel Loker Pada Database

-- ----------------------------
-- Table structure for loker
-- ----------------------------
DROP TABLE IF EXISTS `loker`;
CREATE TABLE `loker` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nama_perusahaan` varchar(50) NOT NULL,
  `contact` varchar(20) NOT NULL,
  `tanggal_berakhir` date NOT NULL,
  `posisi` varchar(30) NOT NULL,
  `deskripsi` longtext NOT NULL,
  `username` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- ----------------------------
-- Records of loker
-- ----------------------------
INSERT INTO `loker` VALUES ('1', 'PT Maju Terus Pantang Mundur', '08213123213', '2017-04-05', 'Freelancer', '<p>PT. Maju Terus Pantang Mundur adalah sebuah perusahaan yang bergerak di bidang datar yang lurus. Membutuhkan seorang pegawai yang berintegritas tinggi dan memahami rumus pythagoras secara menyeluruh.</p>\r\n<p>Kualifikasi:</p>\r\n<ol>\r\n<li>Bertubuh Gitar Spanyola</li>\r\n<li>Minimal berusia 35 Tahun</li>\r\n<li>Rajin pangkal pandai</li>\r\n</ol>\r\n<p>Jika anda memenuhi kualifikasi di atas, silahkan mengirimkan cv anda pada&nbsp;<a href=\"http://www.majumundur.com\">website kami</a>&nbsp;atau pada email kami di maju@terus.com</p>', 'administrator');

3. Membuat Controller Loker

Pada folder application/controllers buat sebuah file baru bernama Loker.php yang berisi kode berikut.

<?php defined('BASEPATH') OR exit('No direct script access allowed');

class Loker extends MY_Controller {

  public function __construct()
  {
    parent::__construct();
    
    // Cek apakah user sudah login
    $this->cekLogin();

    // Load model loker
    $this->load->model('model_loker');
  }

  public function index()
  {
    // Load library pagination
    $this->load->library('pagination');

    // Pengaturan pagination
    $config['base_url'] = base_url('loker/index/');
    $config['total_rows'] = $this->model_loker->get()->num_rows();
    $config['per_page'] = 5;
    $config['offset'] = $this->uri->segment(3);

    // Styling pagination
    $config['first_link'] = false;
    $config['last_link'] = false;

    $config['full_tag_open'] = '<ul class="pagination">';
    $config['full_tag_close'] = '</ul>';

    $config['num_tag_open'] = '<li class="waves-effect">';
    $config['num_tag_close'] = '</li>';

    $config['prev_tag_open'] = '<li class="waves-effect">';
    $config['prev_tag_close'] = '</li>';

    $config['next_tag_open'] = '<li class="waves-effect">';
    $config['next_tag_close'] = '</li>';

    $config['cur_tag_open'] = '<li class="active"><a href="#">';
    $config['cur_tag_close'] = '</a></li>';

    $this->pagination->initialize($config);

    // Data untuk page index
    $data['pageTitle'] = 'Lowongan Kerja';
    $data['loker'] = $this->model_loker->get_offset($config['per_page'], $config['offset'])->result();
    $data['pageContent'] = $this->load->view('loker/lokerList', $data, TRUE);

    // Jalankan view template/layout
    $this->load->view('template/layout', $data);
  }

  public function add()
  {
    // Jika form di submit jalankan blok kode ini
    if ($this->input->post('submit')) {
      
      // Mengatur validasi data nama perusahaan,
      // # required = tidak boleh kosong
      $this->form_validation->set_rules('nama_perusahaan', 'Nama Perusahaan', 'required');

      // Mengatur validasi data contact,
      // # required = tidak boleh kosong
      $this->form_validation->set_rules('contact', 'Contact Person', 'required');

      // Mengatur validasi data tanggal berakhir,
      // # required = tidak boleh kosong
      $this->form_validation->set_rules('tanggal_berakhir', 'Tanggal Berakhir', 'required');

      // Mengatur validasi data posisi,
      // # required = tidak boleh kosong
      $this->form_validation->set_rules('posisi', 'Posisi', 'required');

      // Mengatur validasi data deskripsi,
      // # required = tidak boleh kosong
      $this->form_validation->set_rules('deskripsi', 'Deskripsi', 'required');

      // Mengatur pesan error validasi data
      $this->form_validation->set_message('required', '%s tidak boleh kosong!');

      // Jalankan validasi jika semuanya benar maka lanjutkan
      if ($this->form_validation->run() === TRUE) {

        $data = array(
          'nama_perusahaan' => $this->input->post('nama_perusahaan'),
          'contact' => $this->input->post('contact'),
          'tanggal_berakhir' => date_format(date_create($this->input->post('tanggal_berakhir')), 'Y-m-d'),
          'posisi' => $this->input->post('posisi'),
          'deskripsi' => $this->input->post('deskripsi'),
          'username' => $this->session->userdata('username')
        );

        // Jalankan function insert pada model_loker
        $query = $this->model_loker->insert($data);

        // cek jika query berhasil
        if ($query) $message = array('status' => true, 'message' => 'Berhasil menambahkan lowongan kerja');
        else $message = array('status' => true, 'message' => 'Gagal menambahkan lowongan kerja');

        // simpan message sebagai session
        $this->session->set_flashdata('message', $message);

        // refresh page
        redirect('loker/add', 'refresh');
			} 
    }
    
    // Data untuk page loker/add
    $data['pageTitle'] = 'Tambah Data Lowongan Kerja';
    $data['pageContent'] = $this->load->view('loker/lokerAdd', $data, TRUE);

    // Jalankan view template/layout
    $this->load->view('template/layout', $data);
  }

  public function detail($id = null)
  {
    // Ambil data loker dari database
    $loker = $this->model_loker->get_where(array('id' => $id))->row();
    
    // Jika data loker tidak ada maka show 404
    if (!$loker) show_404();

    // Data untuk page loker/detail
    $data['pageTitle'] = 'Detail Lowongan Kerja';
    $data['loker'] = $loker;
    $data['pageContent'] = $this->load->view('loker/lokerDetail', $data, TRUE);

    // Jalankan view template/layout
    $this->load->view('template/layout', $data);
  }

  public function edit($id = null)
  {
    // Jika form di submit jalankan blok kode ini
    if ($this->input->post('submit')) {
      
      // Mengatur validasi data nama perusahaan,
      // # required = tidak boleh kosong
      $this->form_validation->set_rules('nama_perusahaan', 'Nama Perusahaan', 'required');

      // Mengatur validasi data contact,
      // # required = tidak boleh kosong
      $this->form_validation->set_rules('contact', 'Contact Person', 'required');

      // Mengatur validasi data tanggal berakhir,
      // # required = tidak boleh kosong
      $this->form_validation->set_rules('tanggal_berakhir', 'Tanggal Berakhir', 'required');

      // Mengatur validasi data posisi,
      // # required = tidak boleh kosong
      $this->form_validation->set_rules('posisi', 'Posisi', 'required');

      // Mengatur validasi data deskripsi,
      // # required = tidak boleh kosong
      $this->form_validation->set_rules('deskripsi', 'Deskripsi', 'required');

      // Mengatur pesan error validasi data
      $this->form_validation->set_message('required', '%s tidak boleh kosong!');

      // Jalankan validasi jika semuanya benar maka lanjutkan
      if ($this->form_validation->run() === TRUE) {

        $data = array(
          'nama_perusahaan' => $this->input->post('nama_perusahaan'),
          'contact' => $this->input->post('contact'),
          'tanggal_berakhir' => date_format(date_create($this->input->post('tanggal_berakhir')), 'Y-m-d'),
          'posisi' => $this->input->post('posisi'),
          'deskripsi' => $this->input->post('deskripsi')
        );

        // Jalankan function update pada model_loker
        $query = $this->model_loker->update($id, $data);

        // cek jika query berhasil
        if ($query) $message = array('status' => true, 'message' => 'Berhasil memperbarui lowongan kerja');
        else $message = array('status' => true, 'message' => 'Gagal memperbarui lowongan kerja');

        // simpan message sebagai session
        $this->session->set_flashdata('message', $message);

        // refresh page
        redirect('loker/edit/'.$id, 'refresh');
			} 
    }
    
    // Ambil data loker dari database
    $loker = $this->model_loker->get_where(array('id' => $id))->row();
    
    // Mengubah format tanggal dari database
    $loker->tanggal_berakhir = date_format(date_create($loker->tanggal_berakhir), 'd-m-Y');

    // Jika data loker tidak ada maka show 404
    if (!$loker) show_404();

    // Jika data loker diedit oleh user lain maka show 404
    if ($loker->username !== $this->session->userdata('username')) show_404();

    // Data untuk page loker/add
    $data['pageTitle'] = 'Edit Data Lowongan Kerja';
    $data['loker'] = $loker;
    $data['pageContent'] = $this->load->view('loker/lokerEdit', $data, TRUE);

    // Jalankan view template/layout
    $this->load->view('template/layout', $data);
  }

  public function delete($id)
  {
    // Ambil data loker dari database
    $loker = $this->model_loker->get_where(array('id' => $id))->row();

    // Jika data loker tidak ada maka show 404
    if (!$loker) show_404();

    // Jika data loker didelete oleh user lain maka show 404
    if ($loker->username !== $this->session->userdata('username')) show_404();

    // Jalankan function delete pada model_loker
    $query = $this->model_loker->delete($id);

    // cek jika query berhasil
    if ($query) $message = array('status' => true, 'message' => 'Berhasil menghapus lowongan kerja');
    else $message = array('status' => true, 'message' => 'Gagal menghapus lowongan kerja');

    // simpan message sebagai session
    $this->session->set_flashdata('message', $message);

    // refresh page
    redirect('loker', 'refresh');
  }
}

4. Membuat Model Loker

Tugas kita selanjutnya adalah membuat model loker. Pada folder application/models buat file baru bernama Model_loker.php.

<?php
  class Model_loker extends CI_Model {

    public $table = 'loker';

    public function get()
    {
      // Jalankan query
      $query = $this->db->get($this->table);

      // Return hasil query
      return $query;
    }

    public function get_offset($limit, $offset)
    {
      // Jalankan query
      $query = $this->db
        ->limit($limit, $offset)
        ->get($this->table);

      // Return hasil query
      return $query;
    }

    public function get_where($where)
    {
      // Jalankan query
      $query = $this->db
        ->where($where)
        ->get($this->table);

      // Return hasil query
      return $query;
    }

    public function insert($data)
    {
      // Jalankan query
      $query = $this->db->insert($this->table, $data);

      // Return hasil query
      return $query;
    }

    public function update($id, $data)
    {
      // Jalankan query
      $query = $this->db
        ->where('id', $id)
        ->update($this->table, $data);
      
      // Return hasil query
      return $query;
    }

    public function delete($id)
    {
      // Jalankan query
      $query = $this->db
        ->where('id', $id)
        ->delete($this->table);
      
      // Return hasil query
      return $query;
    }
  }

5. Membuat View Untuk Modul Loker

Tugas berikutnya adalah membuat 4 file view sama seperti di modul events. Yaitu:

File application/views/loker/lokerList.php

<div class="row">
    <div class="col s12">
      <div class="card">
        <div class="card-content light-blue lighten-1 white-text">
          <span class="card-title">Data Lowongan Kerja</span>
          <a href="<?php echo base_url('loker/add'); ?>" class="btn-floating right halfway-fab waves-effect waves-light amber tooltipped" data-position="top" data-tooltip="Tambah Data"><i class="material-icons">add</i></a>
        </div>
        <div class="card-content">
          <?php if($message = $this->session->flashdata('message')): ?>
            <div class="col s12">
              <div class="card-panel <?php echo ($message['status']) ? 'green' : 'red'; ?>">
                <span class="white-text"><?php echo $message['message']; ?></span>
              </div>
            </div>
          <?php endif; ?>
          <table class="bordered highlight">
              <thead>
                  <tr>
                      <th>No</th>
                      <th>Nama Perusahaan</th>
                      <th>Contact</th>
                      <th class="center-align">Tgl. Berakhir</th>
                      <th>Posisi</th>
                      <th class="center-align">Action</th>
                  </tr>
              </thead>
              <tbody>
                <?php if($loker): ?>
                  <?php $no = $this->uri->segment(3); foreach($loker as $row): ?>
                    <tr>
                      <td><?php echo ++$no; ?></td>
                      <td><?php echo $row->nama_perusahaan; ?></td>
                      <td><?php echo $row->contact; ?></td>
                      <td class="center-align"><?php echo $row->tanggal_berakhir; ?></td>
                      <td><?php echo $row->posisi; ?></td>
                      <td class="center-align">
                        <a href="<?php echo base_url('loker/detail/' . $row->id); ?>" class="btn-floating halfway-fab waves-effect waves-light tooltipped" data-position="top" data-tooltip="Detail"><i class="material-icons">list</i></a>
                        <a <?php echo ($this->session->userdata('username') !== $row->username) ? 'disabled' : ''; ?> href="<?php echo base_url('loker/edit/' . $row->id); ?>" class="btn-floating halfway-fab waves-effect waves-light tooltipped" data-position="top" data-tooltip="Edit Data"><i class="material-icons">edit</i></a>
                        <a <?php echo ($this->session->userdata('username') !== $row->username) ? 'disabled' : ''; ?> href="<?php echo base_url('loker/delete/' . $row->id); ?>" class="btn-floating halfway-fab waves-effect waves-light tooltipped" data-position="top" data-tooltip="Delete Data"><i class="material-icons">delete</i></a>
                      </td>
                    </tr>
                  <?php endforeach; ?>
                <?php else: ?>
                  <tr>
                    <td class="center-align" colspan="7">Belum ada data lowongan kerja</td>
                  </tr>
                <?php endif; ?>
              </tbody>
          </table>
          <div class="center-align">
            <?php echo $this->pagination->create_links(); ?>
          </div>
        </div>
      </div>
    </div>
</div>

File application/views/loker/lokerDetail.php

<div class="row">
  <div class="col s12">
    <div class="card">
      <div class="card-content light-blue lighten-1 white-text">
        <span class="card-title"><?php echo $pageTitle; ?></span>
      </div>
      <div class="card-content">
        <div class="row">
          <div class="input-field col s12 m6">
              <input readonly id="nama_perusahaan" name="nama_perusahaan" type="text" value="<?php echo $loker->nama_perusahaan; ?>">
              <label for="nama_perusahaan" class="">Nama Perusahaan</label>
          </div>
          <div class="input-field col s12 m6">
              <input readonly id="contact" name="contact" type="text" value="<?php echo $loker->contact; ?>">
              <label for="contact" class="">Contact Person</label>
          </div>
          <div class="input-field col s12 m6">
              <input readonly id="tanggal_berakhir" name="tanggal_berakhir" type="text" value="<?php echo $loker->tanggal_berakhir; ?>">
              <label for="tanggal_berakhir" class="">Tanggal Berakhir</label>
          </div>
          <div class="input-field col s12 m6">
              <input readonly id="posisi" name="posisi" type="text" value="<?php echo $loker->posisi; ?>">
              <label for="posisi" class="">Posisi</label>
          </div>
          <div class="col s12 m12">
              <label for="deskripsi">Deskripsi</label>
              <?php echo $loker->deskripsi; ?>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

File application/views/loker/lokerAdd.php

<div class="row">
  <div class="col s12">
    <div class="card">
      <div class="card-content light-blue lighten-1 white-text">
        <span class="card-title"><?php echo $pageTitle; ?></span>
      </div>
      <div class="card-content">
        <form class="row" id="add-user-form" method="post" action="">
          <?php if(validation_errors()): ?>
            <div class="col s12">
              <div class="card-panel red">
                <span class="white-text"><?php echo validation_errors('<p>', '</p>'); ?></span>
              </div>
            </div>
          <?php endif; ?>
          <?php if($message = $this->session->flashdata('message')): ?>
            <div class="col s12">
              <div class="card-panel <?php echo ($message['status']) ? 'green' : 'red'; ?>">
                <span class="white-text"><?php echo $message['message']; ?></span>
              </div>
            </div>
          <?php endif; ?>
          <div class="input-field col s12 m6">
              <input id="nama_perusahaan" name="nama_perusahaan" type="text" value="<?php echo set_value('nama_perusahaan'); ?>">
              <label for="nama_perusahaan" class="">Nama Perusahaan</label>
          </div>
          <div class="input-field col s12 m6">
              <input id="contact" name="contact" type="text" value="<?php echo set_value('contact'); ?>">
              <label for="contact" class="">Contact Person</label>
          </div>
          <div class="input-field col s12 m6">
              <input id="tanggal_berakhir" class="datepicker" name="tanggal_berakhir" type="text" value="<?php echo set_value('tanggal_berakhir'); ?>">
              <label for="tanggal_berakhir" class="">Tanggal Berakhir</label>
          </div>
          <div class="input-field col s12 m6">
              <input id="posisi" name="posisi" type="text" value="<?php echo set_value('posisi'); ?>">
              <label for="posisi" class="">Posisi</label>
          </div>
          <div class="col s12 m12">
              <label for="deskripsi">Deskripsi</label>
              <textarea id="deskripsi" name="deskripsi" type="text" value="<?php echo set_value('deskripsi'); ?>"></textarea>
          </div>
          <div class="input-field col s12 right-align">
              <button type="submit" name="submit" value="add_event" class="btn amber waves-effect waves-green">Simpan</button>
          </div>
        </form>
      </div>
    </div>
  </div>
</div>

File application/views/loker/lokerEdit.php

<div class="row">
  <div class="col s12">
    <div class="card">
      <div class="card-content light-blue lighten-1 white-text">
        <span class="card-title"><?php echo $pageTitle; ?></span>
      </div>
      <div class="card-content">
        <form class="row" id="edit-user-form" method="post" action="">
          <?php if(validation_errors()): ?>
            <div class="col s12">
              <div class="card-panel red">
                <span class="white-text"><?php echo validation_errors('<p>', '</p>'); ?></span>
              </div>
            </div>
          <?php endif; ?>
          <?php if($message = $this->session->flashdata('message')): ?>
            <div class="col s12">
              <div class="card-panel <?php echo ($message['status']) ? 'green' : 'red'; ?>">
                <span class="white-text"><?php echo $message['message']; ?></span>
              </div>
            </div>
          <?php endif; ?>
          <div class="input-field col s12 m6">
              <input id="nama_perusahaan" name="nama_perusahaan" type="text" value="<?php echo $loker->nama_perusahaan; ?>">
              <label for="nama_perusahaan" class="">Nama Perusahaan</label>
          </div>
          <div class="input-field col s12 m6">
              <input id="contact" name="contact" type="text" value="<?php echo $loker->contact; ?>">
              <label for="contact" class="">Contact Person</label>
          </div>
          <div class="input-field col s12 m6">
              <input id="tanggal_berakhir" class="datepicker" name="tanggal_berakhir" type="text" value="<?php echo $loker->tanggal_berakhir; ?>">
              <label for="tanggal_berakhir" class="">Tanggal Berakhir</label>
          </div>
          <div class="input-field col s12 m6">
              <input id="posisi" name="posisi" type="text" value="<?php echo $loker->posisi; ?>">
              <label for="posisi" class="">Posisi</label>
          </div>
          <div class="input-field col s12 m12">
              <textarea id="deskripsi" name="deskripsi" type="text"><?php echo $loker->deskripsi; ?></textarea>
              <label for="deskripsi" class="">Deskripsi</label>
          </div>
          <div class="input-field col s12 right-align">
              <button type="submit" name="submit" value="<?php echo $loker->id; ?>" class="btn amber waves-effect waves-green">Simpan</button>
          </div>
        </form>
      </div>
    </div>
  </div>
</div>

6. Memperbarui Template Sidebar, Template Footer dan Kcdev.js

Pada template sidebar kita akan menambahkan menu baru yaitu menu Lowongan Kerja. Menu baru ini bisa dilihat oleh semua level user.

sidebar.php

<aside>
  <ul id="sidenav" class="side-nav fixed">
    
    <li>
      <div class="userView">
        <div class="background">
          <img src="<?php echo base_url('assets/images/nav6.jpg'); ?>">
        </div>
        <a href="#!user"><img class="circle" src="<?php echo base_url('assets/images/noavatar.png'); ?>"></a>
        <a href="#!name"><span class="white-text name"><?php echo ucwords(strtolower($this->session->userdata('username'))); ?></span></a>
        <a href="#!email"><span class="white-text email"><?php echo ucwords(strtolower($this->session->userdata('level'))); ?></span></a>
      </div>
    </li>

    <li>
      <a class="waves-effect" href="<?php echo base_url('dashboard'); ?>"><i class="material-icons">home</i>Dashboard</a>
    </li>

    <li>
      <a class="waves-effect" href="<?php echo base_url('events'); ?>"><i class="material-icons">event</i>Events</a>
    </li>

    <li>
      <a class="waves-effect" href="<?php echo base_url('loker'); ?>"><i class="material-icons">work</i>Lowongan Kerja</a>
    </li>
    
    <li>
      <div class="divider"></div>
    </li>

    <?php if($this->session->userdata('level') === 'administrator'): ?>
      <li>
        <a class="subheader">Admin</a>
      </li>
      
      <li>
        <a class="waves-effect" href="<?php echo base_url('users'); ?>"><i class="material-icons">people</i>Users</a>
      </li>
      
      <li>
        <div class="divider"></div>
      </li>
    <?php endif; ?>

    <li>
      <a class="waves-effect"  href="<?php echo base_url('auth/logout'); ?>"><i class="material-icons">exit_to_app</i>Logout</a>
    </li>
    
  </ul>
</aside>
Advertisements

footer.php

    <footer class="page-footer white">
      <div class="footer-copyright amber darken-1">
        <div class="container center">
          Copyright &copy; <a class="white-text text-lighten-3" href="https://www.kcdev.id">Kcdev Interactive Software</a>
        </div>
      </div>
    </footer>
    <!--  Scripts-->
    <script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
    <script src="<?php echo base_url('assets/plugins/tinymce/tinymce.min.js'); ?>"></script>
    <script src="<?php echo base_url('assets/materialize/js/materialize.js'); ?>"></script>
    <script src="<?php echo base_url('assets/js/kcdev.js'); ?>"></script>
  </body>
</html>

Dan file kcdev.js

$(document).ready(function() {
  $('.button-collapse').sideNav();
  
  $('select').material_select();
  
  $('.datepicker').pickadate({
    format: 'dd-mm-yyyy',
  });

  tinymce.init({
    selector: '#deskripsi',
    plugins : 'advlist autolink link lists charmap print preview'
  });
});

7. Testing

Tampilan awal modul lowongan kerja yang sudah jadi.

tutorial-codeigniter-part-13-menggunakan-wysiwyg-editor-tinymce

Saat kita ingin menambahkan loker, maka akan tampil wysiwyg editor kita pada bagian deskripsi.

tutorial-codeigniter-part-13-menggunakan-wysiwyg-editor-tinymce

Saat kita mengklik tombol detail pada tabel lowongan kerja akan tampil seperti berikut.

tutorial-codeigniter-part-13-menggunakan-wysiwyg-editor-tinymce

Advertisements

Mission Completed Diks. Untuk mengunduh tutorial ini silahkan mengunjungi github saya -> disini <-

“Sedekah gak harus uang melulu, satu baris kode yang kamu bagikan pun insya Allah bernilai ibadah”

Sekian tutorial kali ini, semoga bermanfaat.

kaceManaf

Author: kaceManaf

Founders of kcdev.id, freelance full stack web developer and also a web-tech wanderer. Passionate about code readability and simplicity. https://www.linkedin.com/in/nafplann/

8 Replies to “Tutorial Codeigniter Part 13 – Menggunakan WYSIWYG Editor TinyMCE

  1. halo kak, kalau error seperti ini problemnya ada di mana ya kak?
    tinymce.min.js:11 Uncaught TypeError: u is not a constructor

  2. gan saya mau disable user pada saat di halaman event pada button edit sama delete, saya coba samakan dengan loker tapi gak bisa, bagaimana ya gan terima kasih

Leave a Reply

Your email address will not be published. Required fields are marked *