/** * รับค่าจาก 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(); } }