public function index()
 {
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // initialize groceryCRUD
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     $crud = $this->new_crud();
     // this is just for code completion
     if (FALSE) {
         $crud = new Extended_Grocery_CRUD();
     }
     // check state & get primary_key
     $state = $crud->getState();
     $state = $crud->getState();
     $state_info = $crud->getStateInfo();
     $primary_key = isset($state_info->primary_key) ? $state_info->primary_key : NULL;
     switch ($state) {
         case 'unknown':
             break;
         case 'list':
             break;
         case 'add':
             break;
         case 'edit':
             break;
         case 'delete':
             break;
         case 'insert':
             break;
         case 'update':
             break;
         case 'ajax_list':
             break;
         case 'ajax_list_info':
             break;
         case 'insert_validation':
             break;
         case 'update_validation':
             break;
         case 'upload_file':
             break;
         case 'delete_file':
             break;
         case 'ajax_relation':
             break;
         case 'ajax_relation_n_n':
             break;
         case 'success':
             break;
         case 'export':
             break;
         case 'print':
             break;
     }
     // unset things
     $crud->unset_jquery();
     $crud->unset_read();
     // $crud->unset_add();
     // $crud->unset_edit();
     // $crud->unset_list();
     // $crud->unset_back_to_list();
     // $crud->unset_print();
     // $crud->unset_export();
     // set model
     // $crud->set_model($this->cms_module_path().'/grocerycrud_main_language_model');
     // adjust groceryCRUD's language to No-CMS's language
     $crud->set_language($this->cms_language());
     // table name
     $crud->set_table(cms_table_name('main_language'));
     // set subject
     $crud->set_subject('Language');
     // displayed columns on list
     $crud->columns('name', 'code', 'iso_code', 'translations');
     // displayed columns on edit operation
     $crud->edit_fields('name', 'code', 'iso_code', 'translations');
     // displayed columns on add operation
     $crud->add_fields('name', 'code', 'iso_code', 'translations');
     // caption of each columns
     $crud->display_as('name', 'Name');
     $crud->display_as('iso_code', 'ISO Code');
     $crud->display_as('translations', 'Translations');
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put required field validation codes here
     // (documentation: http://www.grocerycrud.com/documentation/options_functions/required_fields)
     // eg:
     //      $crud->required_fields( $field1, $field2, $field3, ... );
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     $crud->required_fields('name', 'code');
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put required field validation codes here
     // (documentation: http://www.grocerycrud.com/documentation/options_functions/unique_fields)
     // eg:
     //      $crud->unique_fields( $field1, $field2, $field3, ... );
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     $crud->unique_fields('name', 'code', 'iso_code');
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put field validation codes here
     // (documentation: http://www.grocerycrud.com/documentation/options_functions/set_rules)
     // eg:
     //      $crud->set_rules( $field_name , $caption, $filter );
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put set relation (lookup) codes here
     // (documentation: http://www.grocerycrud.com/documentation/options_functions/set_relation)
     // eg:
     //      $crud->set_relation( $field_name , $related_table, $related_title_field , $where , $order_by );
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put set relation_n_n (detail many to many) codes here
     // (documentation: http://www.grocerycrud.com/documentation/options_functions/set_relation_n_n)
     // eg:
     //      $crud->set_relation_n_n( $field_name, $relation_table, $selection_table, $primary_key_alias_to_this_table,
     //          $primary_key_alias_to_selection_table , $title_field_selection_table, $priority_field_relation );
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put custom field type here
     // (documentation: http://www.grocerycrud.com/documentation/options_functions/field_type)
     // eg:
     //      $crud->field_type( $field_name , $field_type, $value  );
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     $crud->unset_texteditor('code');
     $crud->unset_texteditor('iso_code');
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put callback here
     // (documentation: httm://www.grocerycrud.com/documentation/options_functions)
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     $crud->callback_before_insert(array($this, '_before_insert'));
     $crud->callback_before_update(array($this, '_before_update'));
     $crud->callback_before_delete(array($this, '_before_delete'));
     $crud->callback_after_insert(array($this, '_after_insert'));
     $crud->callback_after_update(array($this, '_after_update'));
     $crud->callback_after_delete(array($this, '_after_delete'));
     $crud->callback_column('translations', array($this, '_callback_column_translations'));
     $crud->callback_field('translations', array($this, '_callback_field_translations'));
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put custom error message here
     // (documentation: httm://www.grocerycrud.com/documentation/set_lang_string)
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // $crud->set_lang_string('delete_error_message', 'Cannot delete the record');
     // $crud->set_lang_string('update_error',         'Cannot edit the record'  );
     // $crud->set_lang_string('insert_error',         'Cannot add the record'   );
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // render
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     $output = $crud->render();
     // prepare css & js, add them to config
     $config = array();
     $asset = new Cms_asset();
     foreach ($output->css_files as $file) {
         $asset->add_css($file);
     }
     $config['css'] = $asset->compile_css();
     foreach ($output->js_files as $file) {
         $asset->add_js($file);
     }
     $config['js'] = $asset->compile_js();
     // show the view
     $this->view($this->cms_module_path() . '/language/manage_main_language_view', $output, $this->n('main_language_management'), $config);
 }
Exemple #2
0
 private function make_crud()
 {
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // initialize groceryCRUD
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     $crud = $this->new_crud();
     // this is just for code completion
     if (FALSE) {
         $crud = new Extended_Grocery_CRUD();
     }
     // check state & get primary_key
     $state = $crud->getState();
     $state_info = $crud->getStateInfo();
     $primary_key = isset($state_info->primary_key) ? $state_info->primary_key : NULL;
     switch ($state) {
         case 'unknown':
             break;
         case 'list':
             break;
         case 'add':
             break;
         case 'edit':
             break;
         case 'delete':
             break;
         case 'insert':
             break;
         case 'update':
             break;
         case 'ajax_list':
             break;
         case 'ajax_list_info':
             break;
         case 'insert_validation':
             break;
         case 'update_validation':
             break;
         case 'upload_file':
             break;
         case 'delete_file':
             break;
         case 'ajax_relation':
             break;
         case 'ajax_relation_n_n':
             break;
         case 'success':
             break;
         case 'export':
             break;
         case 'print':
             break;
     }
     // unset things
     $crud->unset_jquery();
     $crud->unset_read();
     // $crud->unset_add();
     // $crud->unset_edit();
     // $crud->unset_delete();
     // $crud->unset_list();
     // $crud->unset_back_to_list();
     // $crud->unset_print();
     // $crud->unset_export();
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Create custom search form (if needed)
     // usage:
     //     $crud->unset_default_search();
     //     // Your custom form
     //     $html =  '<div class="row container col-md-12" style="margin-bottom:10px;">';
     //     $html .= '</div>';
     //     $html .= '<input name="keyword" placeholder="Keyword" value="'.$keyword.'" /> &nbsp;';
     //     $html .= '<input type="button" value="Search" class="crud_search btn btn-primary form-control" id="crud_search" />';
     //     $crud->set_search_form_components($html);
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // set custom grocery crud model, uncomment to use.
     /*
     $this->load->model('grocery_crud_model');
     $this->load->model('grocery_crud_generic_model');
     $this->load->model('grocery_crud_automatic_model');
     $crud->set_model($this->cms_module_path().'/Grocerycrud_city_model');
     */
     // adjust groceryCRUD's language to No-CMS's language
     $crud->set_language($this->cms_language());
     // table name
     $crud->set_table($this->cms_complete_table_name('city'));
     // primary key
     $crud->set_primary_key('city_id');
     // set subject
     $crud->set_subject('City');
     // displayed columns on list
     $crud->columns('country_id', 'name', 'tourism', 'commodity', 'citizen');
     // displayed columns on edit operation
     $crud->edit_fields('country_id', 'name', 'tourism', 'commodity', 'citizen');
     // displayed columns on add operation
     $crud->add_fields('country_id', 'name', 'tourism', 'commodity', 'citizen');
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put Tabs (if needed)
     // usage:
     //     $crud->set_outside_tab($how_many_field_outside_tab);
     //     $crud->set_tabs(array(
     //        'First Tab Caption'  => $how_many_field_on_first_tab,
     //        'Second Tab Caption' => $how_many_field_on_second_tab,
     //     ));
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // caption of each columns
     $crud->display_as('country_id', 'Country');
     $crud->display_as('name', 'Name');
     $crud->display_as('tourism', 'Tourism');
     $crud->display_as('commodity', 'Commodity');
     $crud->display_as('citizen', 'Citizen');
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put required field validation codes here
     // (documentation: http://www.grocerycrud.com/documentation/options_functions/required_fields)
     // eg:
     //      $crud->required_fields( $field1, $field2, $field3, ... );
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     $crud->required_fields('name');
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put required field validation codes here
     // (documentation: http://www.grocerycrud.com/documentation/options_functions/unique_fields)
     // eg:
     //      $crud->unique_fields( $field1, $field2, $field3, ... );
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     $crud->unique_fields('name');
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put field validation codes here
     // (documentation: http://www.grocerycrud.com/documentation/options_functions/set_rules)
     // eg:
     //      $crud->set_rules( $field_name , $caption, $filter );
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put set relation (lookup) codes here
     // (documentation: http://www.grocerycrud.com/documentation/options_functions/set_relation)
     // eg:
     //      $crud->set_relation( $field_name , $related_table, $related_title_field , $where , $order_by );
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     $crud->set_relation('country_id', $this->cms_complete_table_name('country'), 'name');
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put set relation_n_n (detail many to many) codes here
     // (documentation: http://www.grocerycrud.com/documentation/options_functions/set_relation_n_n)
     // eg:
     //      $crud->set_relation_n_n( $field_name, $relation_table, $selection_table, $primary_key_alias_to_this_table,
     //          $primary_key_alias_to_selection_table , $title_field_selection_table, $priority_field_relation );
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     $crud->set_relation_n_n('tourism', $this->cms_complete_table_name('city_tourism'), $this->cms_complete_table_name('tourism'), 'city_id', 'tourism_id', 'name', NULL);
     $crud->set_relation_n_n('commodity', $this->cms_complete_table_name('city_commodity'), $this->cms_complete_table_name('commodity'), 'city_id', 'commodity_id', 'name', 'priority');
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put custom field type here
     // (documentation: http://www.grocerycrud.com/documentation/options_functions/field_type)
     // eg:
     //      $crud->field_type( $field_name , $field_type, $value  );
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put callback here
     // (documentation: httm://www.grocerycrud.com/documentation/options_functions)
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     $crud->callback_before_insert(array($this, '_before_insert'));
     $crud->callback_before_update(array($this, '_before_update'));
     $crud->callback_before_delete(array($this, '_before_delete'));
     $crud->callback_after_insert(array($this, '_after_insert'));
     $crud->callback_after_update(array($this, '_after_update'));
     $crud->callback_after_delete(array($this, '_after_delete'));
     $crud->callback_column('citizen', array($this, '_callback_column_citizen'));
     $crud->callback_field('citizen', array($this, '_callback_field_citizen'));
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put custom error message here
     // (documentation: httm://www.grocerycrud.com/documentation/set_lang_string)
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // $crud->set_lang_string('delete_error_message', 'Cannot delete the record');
     // $crud->set_lang_string('update_error',         'Cannot edit the record'  );
     // $crud->set_lang_string('insert_error',         'Cannot add the record'   );
     $this->crud = $crud;
     return $crud;
 }
Exemple #3
0
 public function index()
 {
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // initialize groceryCRUD
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     $crud = $this->new_crud();
     // this is just for code completion
     if (FALSE) {
         $crud = new Extended_Grocery_CRUD();
     }
     // check state & get primary_key
     $state = $crud->getState();
     $state = $crud->getState();
     $state_info = $crud->getStateInfo();
     $primary_key = isset($state_info->primary_key) ? $state_info->primary_key : NULL;
     switch ($state) {
         case 'unknown':
             break;
         case 'list':
             break;
         case 'add':
             break;
         case 'edit':
             break;
         case 'delete':
             break;
         case 'insert':
             break;
         case 'update':
             break;
         case 'ajax_list':
             break;
         case 'ajax_list_info':
             break;
         case 'insert_validation':
             break;
         case 'update_validation':
             break;
         case 'upload_file':
             break;
         case 'delete_file':
             break;
         case 'ajax_relation':
             break;
         case 'ajax_relation_n_n':
             break;
         case 'success':
             break;
         case 'export':
             break;
         case 'print':
             break;
     }
     // unset things
     $crud->unset_jquery();
     $crud->unset_read();
     // $crud->unset_add();
     // $crud->unset_edit();
     // $crud->unset_list();
     // $crud->unset_back_to_list();
     // $crud->unset_print();
     // $crud->unset_export();
     // set model
     // $crud->set_model($this->cms_module_path().'/grocerycrud_label_model');
     // adjust groceryCRUD's language to No-CMS's language
     $crud->set_language($this->cms_language());
     // table name
     $crud->set_table($this->t('label'));
     // set subject
     $crud->set_subject('Label');
     // displayed columns on list
     $crud->columns('name', 'status', 'ip', 'referer', 'user_agents');
     // displayed columns on edit operation
     $crud->edit_fields('name', 'status', 'ip', 'referer', 'user_agents');
     // displayed columns on add operation
     $crud->add_fields('name', 'status', 'ip', 'referer', 'user_agents');
     // caption of each columns
     $crud->display_as('name', 'Name');
     $crud->display_as('status', 'Status');
     $crud->display_as('ip', 'IP Addresses');
     $crud->display_as('referer', 'Referers');
     $crud->display_as('user_agents', 'User Agents');
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put required field validation codes here
     // (documentation: http://www.grocerycrud.com/documentation/options_functions/required_fields)
     // eg:
     //      $crud->required_fields( $field1, $field2, $field3, ... );
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     $crud->required_fields('name', 'status');
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put required field validation codes here
     // (documentation: http://www.grocerycrud.com/documentation/options_functions/unique_fields)
     // eg:
     //      $crud->unique_fields( $field1, $field2, $field3, ... );
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     $crud->unique_fields('name');
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put field validation codes here
     // (documentation: http://www.grocerycrud.com/documentation/options_functions/set_rules)
     // eg:
     //      $crud->set_rules( $field_name , $caption, $filter );
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put set relation (lookup) codes here
     // (documentation: http://www.grocerycrud.com/documentation/options_functions/set_relation)
     // eg:
     //      $crud->set_relation( $field_name , $related_table, $related_title_field , $where , $order_by );
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put set relation_n_n (detail many to many) codes here
     // (documentation: http://www.grocerycrud.com/documentation/options_functions/set_relation_n_n)
     // eg:
     //      $crud->set_relation_n_n( $field_name, $relation_table, $selection_table, $primary_key_alias_to_this_table,
     //          $primary_key_alias_to_selection_table , $title_field_selection_table, $priority_field_relation );
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put custom field type here
     // (documentation: http://www.grocerycrud.com/documentation/options_functions/field_type)
     // eg:
     //      $crud->field_type( $field_name , $field_type, $value  );
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     $crud->field_type('status', 'enum', array('not set', 'black list', 'white list'));
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put callback here
     // (documentation: httm://www.grocerycrud.com/documentation/options_functions)
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     $crud->callback_before_insert(array($this, 'before_insert'));
     $crud->callback_before_update(array($this, 'before_update'));
     $crud->callback_before_delete(array($this, 'before_delete'));
     $crud->callback_after_insert(array($this, 'after_insert'));
     $crud->callback_after_update(array($this, 'after_update'));
     $crud->callback_after_delete(array($this, 'after_delete'));
     $crud->callback_column('ip', array($this, 'callback_column_ip'));
     $crud->callback_field('ip', array($this, 'callback_field_ip'));
     $crud->callback_column('referer', array($this, 'callback_column_referer'));
     $crud->callback_field('referer', array($this, 'callback_field_referer'));
     $crud->callback_column('user_agents', array($this, 'callback_column_user_agents'));
     $crud->callback_field('user_agents', array($this, 'callback_field_user_agents'));
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put custom error message here
     // (documentation: httm://www.grocerycrud.com/documentation/set_lang_string)
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // $crud->set_lang_string('delete_error_message', 'Cannot delete the record');
     // $crud->set_lang_string('update_error',         'Cannot edit the record'  );
     // $crud->set_lang_string('insert_error',         'Cannot add the record'   );
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // render
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     $output = $crud->render();
     $this->view($this->cms_module_path() . '/manage_label_view', $output, $this->n('manage_label'));
 }
 public function index()
 {
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // initialize groceryCRUD
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     $crud = $this->new_crud();
     //$crud->set_theme('datatables');
     // this is just for code completion
     if (FALSE) {
         $crud = new Extended_Grocery_CRUD();
     }
     // check state & get primary_key
     $state = $crud->getState();
     $state = $crud->getState();
     $state_info = $crud->getStateInfo();
     $primary_key = isset($state_info->primary_key) ? $state_info->primary_key : NULL;
     switch ($state) {
         case 'unknown':
             break;
         case 'list':
             break;
         case 'add':
             break;
         case 'edit':
             break;
         case 'delete':
             break;
         case 'insert':
             break;
         case 'update':
             break;
         case 'ajax_list':
             break;
         case 'ajax_list_info':
             break;
         case 'insert_validation':
             break;
         case 'update_validation':
             break;
         case 'upload_file':
             break;
         case 'delete_file':
             break;
         case 'ajax_relation':
             break;
         case 'ajax_relation_n_n':
             break;
         case 'success':
             break;
         case 'export':
             break;
         case 'print':
             break;
     }
     // unset things
     $crud->unset_jquery();
     $crud->unset_read();
     // $crud->unset_add();
     // $crud->unset_edit();
     // $crud->unset_list();
     // $crud->unset_back_to_list();
     $crud->unset_print();
     $crud->unset_export();
     // set model
     // $crud->set_model($this->cms_module_path().'/grocerycrud_permohonan_peng_data_model');
     // adjust groceryCRUD's language to No-CMS's language
     $crud->set_language($this->cms_language());
     // table name
     $crud->set_table($this->cms_complete_table_name('surat_masuk'));
     // set subject
     $crud->set_subject('Surat Masuk');
     // displayed columns on list
     $crud->columns('nama_surat', 'dari', 'untuk', 'sifat', 'tanggal', 'file');
     $crud->order_by('id_surat_masuk', 'DESC');
     // displayed columns on edit operation
     $crud->edit_fields('nama_surat', 'dari', 'untuk', 'sifat', 'tanggal', 'file');
     // displayed columns on add operation
     $crud->add_fields('nama_surat', 'dari', 'untuk', 'sifat', 'tanggal', 'file');
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put required field validation codes here
     // (documentation: http://www.grocerycrud.com/documentation/options_functions/required_fields)
     // eg:
     //      $crud->required_fields( $field1, $field2, $field3, ... );
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     $crud->required_fields('nama_surat', 'dari', 'untuk', 'sifat', 'tanggal', 'file');
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put required field validation codes here
     // (documentation: http://www.grocerycrud.com/documentation/options_functions/unique_fields)
     // eg:
     //      $crud->unique_fields( $field1, $field2, $field3, ... );
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put field validation codes here
     // (documentation: http://www.grocerycrud.com/documentation/options_functions/set_rules)
     // eg:
     //      $crud->set_rules( $field_name , $caption, $filter );
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put set relation (lookup) codes here
     // (documentation: http://www.grocerycrud.com/documentation/options_functions/set_relation)
     // eg:
     //      $crud->set_relation( $field_name , $related_table, $related_title_field , $where , $order_by );
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put set relation_n_n (detail many to many) codes here
     // (documentation: http://www.grocerycrud.com/documentation/options_functions/set_relation_n_n)
     // eg:
     //      $crud->set_relation_n_n( $field_name, $relation_table, $selection_table, $primary_key_alias_to_this_table,
     //          $primary_key_alias_to_selection_table , $title_field_selection_table, $priority_field_relation );
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put custom field type here
     // (documentation: http://www.grocerycrud.com/documentation/options_functions/field_type)
     // eg:
     //      $crud->field_type( $field_name , $field_type, $value  );
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     $crud->field_type('sifat', 'dropdown', array('Sangat Rahasia' => 'Sangat Rahasia', 'Rahasia' => 'Rahasia', 'Sangat Segera' => 'Sangat Segera', 'Segera' => 'Segera', 'Edaran' => 'Edaran', 'Pengumuman' => 'Pengumuman', 'Biasa' => 'Biasa'));
     $crud->set_field_upload('file', 'assets/surat_masuk/');
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put callback here
     // (documentation: httm://www.grocerycrud.com/documentation/options_functions)
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     $crud->callback_before_insert(array($this, 'before_insert_update'));
     $crud->callback_before_update(array($this, 'before_insert_update'));
     $crud->callback_before_delete(array($this, 'before_delete'));
     $crud->callback_after_insert(array($this, 'after_insert_update'));
     $crud->callback_after_update(array($this, 'after_insert_update'));
     $crud->callback_after_delete(array($this, 'after_delete'));
     $crud->callback_column('file', array($this, 'cc_file'));
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // HINT: Put custom error message here
     // (documentation: httm://www.grocerycrud.com/documentation/set_lang_string)
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // $crud->set_lang_string('delete_error_message', 'Cannot delete the record');
     // $crud->set_lang_string('update_error',         'Cannot edit the record'  );
     // $crud->set_lang_string('insert_error',         'Cannot add the record'   );
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // render
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     $output = $crud->render();
     $this->view($this->cms_module_path() . '/manage_surat_masuk_view', $output, $this->cms_complete_navigation_name('surat_masuk'));
 }