/**
  * รับค่าจาก action
  */
 public function action()
 {
     $ret = array();
     // referer, session, admin
     if (self::$request->initSession() && self::$request->isReferer() && ($login = Login::isAdmin())) {
         if (empty($login['fb'])) {
             // ค่าที่ส่งมา
             $type = self::$request->post('type')->toString();
             $type = $type == 'js' ? 'js' : 'php';
             $id = self::$request->post('id')->toString();
             $action = self::$request->post('action')->toString();
             if ($action == 'delete') {
                 // โหลดภาษา
                 $datas = Language::installed($type);
                 // ลบรายการที่ส่งมา
                 $datas = ArrayTool::delete($datas, $id);
                 // save
                 $error = Language::save($datas, $type);
                 if (empty($error)) {
                     $ret['location'] = 'reload';
                 } else {
                     $ret['alert'] = $error;
                 }
             }
         }
     } else {
         $ret['alert'] = Language::get('Unable to complete the transaction');
     }
     echo json_encode($ret);
 }
 /**
  * ตารางภาษา
  *
  * @return string
  */
 public function render()
 {
     // ชนิดของภาษาที่เลือก php,js
     $type = self::$request->get('type')->toString();
     $type = $type == 'js' ? 'js' : 'php';
     // โหลดภาษา
     $datas = Language::installed($type);
     $installed_language = Language::installedLanguage();
     // Uri
     $uri = self::$request->getUri();
     // ตารางภาษา
     $table = new DataTable(array('datas' => $datas, 'onRow' => array($this, 'onRow'), 'perPage' => max(10, self::$request->cookie('language_perPage', 30)->toInt()), 'sort' => self::$request->cookie('language_sort', 'key')->toString(), 'searchColumns' => array_merge(array('key'), $installed_language), 'headers' => array('id' => array('text' => '{LNG_ID}', 'sort' => 'id'), 'key' => array('text' => '{LNG_Key}', 'sort' => 'key')), 'action' => 'index.php/index/model/language/action?type=' . $type, 'actionCallback' => 'doFormSubmit', 'actionConfirm' => 'confirmAction', 'actions' => array(array('id' => 'action', 'class' => 'ok', 'text' => '{LNG_With selected}', 'options' => array('delete' => '{LNG_Delete}')), array('class' => 'button add icon-plus', 'href' => $uri->createBackUri(array('module' => 'languageedit', 'id' => null, 'type' => $type)), 'text' => '{LNG_Add New}')), 'buttons' => array(array('class' => 'icon-edit button green', 'href' => $uri->createBackUri(array('module' => 'languageedit', 'id' => ':id', 'type' => $type)), 'text' => '{LNG_Edit}')), 'filters' => array('type' => array('name' => 'type', 'text' => '{LNG_Type}', 'options' => array('php' => 'php', 'js' => 'js'), 'value' => $type))));
     foreach ($installed_language as $lng) {
         $table->headers[$lng]['sort'] = $lng;
     }
     // save cookie
     setcookie('language_perPage', $table->perPage, time() + 3600 * 24 * 365, '/');
     setcookie('language_sort', $table->sort, time() + 3600 * 24 * 365, '/');
     return $table->render();
 }
 /**
  * form submit
  */
 public function save()
 {
     $ret = array();
     // referer, session, member
     if (self::$request->initSession() && self::$request->isReferer() && ($login = Login::isAdmin())) {
         if ($login['email'] == 'demo') {
             $ret['alert'] = Language::get('Unable to complete the transaction');
         } else {
             // ชนิดของภาษาที่เลือก php,js
             $type = self::$request->post('write_type')->toString();
             $type = $type == 'js' ? 'js' : 'php';
             // โหลดไฟล์ภาษา ที่ติดตั้ง
             $languages = Language::installed($type);
             // -1 ใหม่ มากกว่า -1แก้ไข
             $write_id = self::$request->post('write_id', -1)->toInt();
             $id = $write_id >= 0 ? $write_id : sizeof($languages);
             // ข้อมูลที่ POST มา
             $key = self::$request->post('write_topic')->quote();
             // ตรวจสอบข้อมูลซ้ำ
             $search = Language::keyExists($languages, $key);
             if ($search == -1 || $search == $id) {
                 $save = array();
                 $languages[$id] = array('key' => $key);
                 foreach (self::$request->post('save_array')->toString() as $key => $value) {
                     foreach (Language::installedLanguage() as $lng) {
                         $v = self::$request->post('language_' . $lng)->get($key)->quote();
                         if ($type == 'php') {
                             if ($v != '' && $v != $languages[$id]['key']) {
                                 $languages[$id][$lng]["{$value}"] = $v;
                             }
                         } elseif ($type == 'js') {
                             if ($v == '' || $v == $languages[$id]['key']) {
                                 if ($v == '') {
                                     $v = $languages[$id]['key'];
                                 }
                                 $languages[$id]['key'] = strtoupper(trim(preg_replace(array('/[\\s_\\!]{1,}/', '/[\\?\\[\\]<>\\{\\}%]/', '/_$/'), array('_', '', ''), $languages[$id]['key'])));
                             }
                             $languages[$id][$lng][''] = $v;
                         }
                     }
                 }
                 foreach ($languages[$id] as $lng => $value) {
                     if ($lng != 'key' && sizeof($value) == 1) {
                         $keys = array_keys($value);
                         if (reset($keys) === '') {
                             $languages[$id][$lng] = $value[$keys[0]];
                         }
                     }
                 }
                 // บันทึกเป็นไฟล์
                 $result = Language::save($languages, $type);
                 // คืนค่า
                 if (empty($result)) {
                     $ret['alert'] = Language::get('Saved successfully');
                     if ($write_id >= 0) {
                         $ret['location'] = self::$request->getUri()->postBack('index.php', array('module' => 'language', 'type' => $type)) . '#datatable_' . $id;
                     } else {
                         $ret['location'] = self::$request->getUri()->postBack('index.php', array('module' => 'language', 'type' => $type, 'sort' => 'id', 'sort_type' => 'desc')) . '#datatable_' . $id;
                     }
                 } else {
                     $ret['alert'] = $result;
                 }
             } else {
                 $ret['alert'] = Language::get('This message already exist');
             }
         }
     } else {
         $ret['alert'] = Language::get('Unable to complete the transaction');
     }
     // คืนค่า json
     echo json_encode($ret);
 }
 /**
  * แสดงผล
  */
 public function render()
 {
     // แอดมิน
     if (Login::isAdmin()) {
         // ชนิดของภาษาที่เลือก php,js
         $this->type = self::$request->get('type')->toString();
         $this->type = $this->type == 'js' ? 'js' : 'php';
         // รายการที่แก้ไข (id)
         $this->id = self::$request->get('id', -1)->toInt();
         // โหลดไฟล์ภาษา ที่ติดตั้ง
         $languages = Language::installed($this->type);
         $installed_languages = Language::installedLanguage();
         $this->languages = array();
         if ($this->id > -1) {
             $this->language = $languages[$this->id];
             foreach ($installed_languages as $item) {
                 if (isset($this->language['array'])) {
                     if (isset($this->language[$item])) {
                         foreach ($this->language[$item] as $k => $v) {
                             if (!isset($this->languages[$k]['key'])) {
                                 $this->languages[$k]['key'] = $k;
                                 foreach ($installed_languages as $a) {
                                     $this->languages[$k][$a] = '';
                                 }
                             }
                             $this->languages[$k][$item] = $v;
                         }
                     }
                 } else {
                     if (!isset($this->languages[0]['key'])) {
                         $this->languages[0]['key'] = '';
                         foreach ($installed_languages as $a) {
                             $this->languages[0][$a] = '';
                         }
                     }
                     if (isset($this->language[$item])) {
                         $this->languages[0][$item] = $this->language[$item];
                     }
                 }
             }
         } else {
             // ใหม่
             $this->language = array('key' => '');
             $this->languages[0]['key'] = '';
             foreach ($installed_languages as $item) {
                 $this->languages[0][$item] = '';
             }
         }
         // แสดงผล
         $section = Html::create('section');
         // breadcrumbs
         $breadcrumbs = $section->add('div', array('class' => 'breadcrumbs'));
         $ul = $breadcrumbs->add('ul');
         $ul->appendChild('<li><span class="icon-tools">{LNG_Tools}</span></li>');
         $ul->appendChild('<li><a href="{BACKURL?module=language}">{LNG_Language}</a></li>');
         $ul->appendChild('<li><span>{LNG_' . ($this->id > -1 ? 'Edit' : 'Create') . '}</span></li>');
         $section->add('header', array('innerHTML' => '<h1 class="icon-language">' . $this->title() . '</h1>'));
         // แสดงฟอร์ม
         $section->appendChild(createClass('Index\\Languageedit\\View')->render($this));
         return $section->render();
     } else {
         // 404.html
         return \Index\Error\Controller::page404();
     }
 }