/application/controllers/app/optional.php

https://github.com/hachimae/mrmenu · PHP · 241 lines · 170 code · 47 blank · 24 comment · 17 complexity · 5c099b7479f5ae5a0391c9a27b572fe5 MD5 · raw file

  1. <?php if (!defined('BASEPATH')) exit('No direct script access allowed');
  2. class Optional extends APP_Controller
  3. {
  4. var $menu_id, $option_id;
  5. var $form = array(
  6. 'name' => array( 'type'=>'text', 'label'=>'Name (TH)', 'validate'=>'required', 'class'=>'required' ),
  7. 'name_en' => array( 'type'=>'text', 'label'=>'Name (EN)', 'validate'=>'required', 'class'=>'required' ),
  8. 'option_type' => array( 'type'=>'radio', 'label'=>'Option Type', 'validate'=>'required', 'class'=>'required', 'data'=>array('radio'=>'radio', 'checkbox'=>'checkbox'), 'value'=>'radio' ),
  9. 'option_meta' => array( 'type'=>'price_value', 'label'=>'Option Values' ),
  10. );
  11. function __construct()
  12. {
  13. parent::__construct();
  14. $this->load->model('option_model', 'option');
  15. $this->setModel( $this->option );
  16. $this->master_template = 'admin/list.php';
  17. $this->menu_id = $this->input->get('ref_id');
  18. if( !is_numeric($this->menu_id) && !empty($this->menu_id) ){
  19. list( $this->menu_id, $this->option_id ) = explode('/', $this->menu_id);
  20. }
  21. }
  22. // list on parent module form
  23. function index()
  24. {
  25. if( $this->menu_id==false ){
  26. $data = false;
  27. }else{
  28. $data = $this->model->getOption($this->menu_id);
  29. }
  30. $this->setContent('title', false);
  31. if( !empty($this->menu_id) ){
  32. $tools = array(
  33. 'add' => array( 'class'=>'button', 'name'=>'Add', 'action'=>'/app/optional/add?ref_id='.$this->menu_id ),
  34. 'edit' => array( 'class'=>'button', 'name'=>'Edit', 'action'=>'/app/optional/edit?ref_id='.$this->menu_id ),
  35. 'remove' => array( 'class'=>'button', 'name'=>'Remove', 'action'=>'/app/optional/remove?ref_id='.$this->menu_id ),
  36. );
  37. }else{
  38. $tools = array(
  39. 'add' => array( 'class'=>'button', 'name'=>'Add', 'action'=>'#submit-first' ),
  40. );
  41. }
  42. $col = array(
  43. 'id' => array( 'type'=>'normal', 'name'=>'ID', 'class'=>'col-id' ),
  44. 'name' => array( 'type'=>'normal', 'name'=>'Name', 'class'=>'col-name' ),
  45. 'option_type' => array( 'type'=>'normal', 'name'=>'Type', 'class'=>'col-type' ),
  46. );
  47. $this->_setListTools( $tools );
  48. $this->_setListCol( $col );
  49. $this->_setListData( $data );
  50. $this->render();
  51. }
  52. function add()
  53. {
  54. $this->setContent('title', 'Add Menu Option');
  55. $this->master_template = 'admin/form.php';
  56. /* parent::add( '/app/optional/update', array(
  57. 'option_id' => array( 'type'=>'select', 'label'=>'Option group', 'data'=>$this->model->allOption() ),
  58. 'menu_id' => array( 'type'=>'hidden', 'value'=>$this->menu_id ),
  59. )); */
  60. $this->form['menu_id'] = array( 'type'=>'hidden', 'value'=>$this->menu_id );
  61. parent::add(site_url('app/optional/added'), $this->form);
  62. }
  63. function edit()
  64. {
  65. $this->setContent('title', 'Edit Menu Option');
  66. $this->master_template = 'admin/form.php';
  67. // check option id
  68. if( empty($this->option_id) ){
  69. return show_404();
  70. }
  71. // get price data
  72. $data = $this->model->getRow($this->option_id);
  73. //print_r($data);
  74. // $data = $this->model->optionData($this->option_id);
  75. $this->form['name']['value'] = $data['name'];
  76. $this->form['name_en']['value'] = $data['name_en'];
  77. $this->form['option_type']['value'] = $data['option_type'];
  78. $this->form['id'] = array( 'type'=>'hidden', 'value'=>$this->option_id );
  79. $this->form['menu_id'] = array( 'type'=>'hidden', 'value'=>$this->menu_id );
  80. // get meta data
  81. $this->form['option_meta']['value'] = $this->model->getMeta($this->option_id);
  82. /* parent::edit( '/app/price/update', array(
  83. 'size' => array( 'type'=>'select', 'label'=>'Size', 'data'=>$this->_getSize(), 'value'=>$data['size'] ),
  84. 'price' => array( 'type'=>'text', 'label'=>'Price', 'validate'=>'required', 'value'=>$data['price'] ),
  85. 'menu_id' => array( 'type'=>'hidden', 'value'=>$this->menu_id ),
  86. 'option_id' => array( 'type'=>'hidden', 'value'=>$this->option_id ),
  87. ), $this->option_id ); */
  88. parent::edit(site_url('app/optional/update'), $this->form, $this->option_id);
  89. }
  90. function remove()
  91. {
  92. $response['success'] = false;
  93. if( empty($this->option_id) ){
  94. parent::remove($this->option_id);
  95. $response['success'] = true;
  96. }else{
  97. parent::remove($this->option_id);
  98. $response['success'] = true;
  99. }
  100. die( json_encode($response) );
  101. }
  102. function update()
  103. {
  104. // redefine data
  105. // update by $this->model->updateRow(data, id)
  106. $response = array('success'=>false);
  107. // post = array( size, price. menu_id[, option_id] )
  108. $data = array(
  109. 'name' => $this->input->post('name'),
  110. 'name_en' => $this->input->post('name_en'),
  111. 'option_type' => $this->input->post('option_type'),
  112. 'shop_id' => $this->shopId,
  113. 'menu_id' => $this->input->post('menu_id'),
  114. );
  115. if( $this->input->post('id') ){
  116. $data['id'] = $this->input->post('id');
  117. }
  118. if( empty($data['name']) ){
  119. $response['error'] = 'Missing param.';
  120. die( json_encode($response) );
  121. }
  122. $group_id = parent::update($data);
  123. // update option_meta
  124. if( $group_id ){
  125. $_meta_value = $this->input->post('meta_value');
  126. $_meta_name = $this->input->post('meta_name');
  127. $_meta_type = $this->input->post('meta_pricetype');
  128. $_meta_price = $this->input->post('meta_price');
  129. foreach($_meta_name as $key=>$value){
  130. if( empty($value) ) continue;
  131. $temp = array(
  132. 'name' => $value,
  133. 'price_type' => $_meta_type[$key],
  134. 'price_value' => $_meta_price[$key],
  135. );
  136. if( isset($_meta_value[$key]) ) {
  137. $temp['id'] = $_meta_value[$key];
  138. }
  139. $meta_data[] = $temp;
  140. }
  141. $this->model->updateMeta($group_id, $meta_data);
  142. }
  143. $id = $this->db->insert_id();
  144. $response['success'] = true;
  145. $response['key'] = empty($post['option_id']) ? $group_id : $post['option_id'];
  146. die( json_encode($response) );
  147. }
  148. function added()
  149. {
  150. // redefine data
  151. // update by $this->model->updateRow(data, id)
  152. $response = array('success'=>false);
  153. // post = array( size, price. menu_id[, option_id] )
  154. $data = array(
  155. 'name' => $this->input->post('name'),
  156. 'name_en' => $this->input->post('name_en'),
  157. 'option_type' => $this->input->post('option_type'),
  158. 'shop_id' => $this->shopId,
  159. 'menu_id' => $this->input->post('menu_id'),
  160. );
  161. if( $this->input->post('id') ){
  162. $data['id'] = $this->input->post('id');
  163. }
  164. if( empty($data['name']) ){
  165. $response['error'] = 'Missing param.';
  166. die( json_encode($response) );
  167. }
  168. $group_id = parent::update($data);
  169. // update option_meta
  170. if( $group_id ){
  171. $_meta_value = $this->input->post('meta_value');
  172. $_meta_name = $this->input->post('meta_name');
  173. $_meta_type = $this->input->post('meta_pricetype');
  174. $_meta_price = $this->input->post('meta_price');
  175. foreach($_meta_name as $key=>$value){
  176. if( empty($value) ) continue;
  177. $temp = array(
  178. 'name' => $value,
  179. 'price_type' => $_meta_type[$key],
  180. 'price_value' => $_meta_price[$key],
  181. );
  182. if( isset($_meta_value[$key]) ) {
  183. $temp['id'] = $_meta_value[$key];
  184. }
  185. $meta_data[] = $temp;
  186. }
  187. $this->model->updateMeta($group_id, $meta_data);
  188. }
  189. $id = $this->db->insert_id();
  190. $response['success'] = true;
  191. $response['key'] = empty($post['option_id']) ? $group_id : $post['option_id'];
  192. die( json_encode($response) );
  193. }
  194. }