/** * Deletes a language and redirect to admin/multilanguage/languages/manage * * Route: admin/multilanguage/languages/delete/:num * * @param int $id The id of the language to delete. */ public static function delete($id) { if (Multilanguage::language()->delete($id)) { Message::ok('Language deleted successfully.'); } else { Message::error('Error deleting language, please try again.'); } Url::redirect('admin/multilanguage/languages/manage'); }
/** * Display a form for editing a strings translation. */ public static function editContent($stringId, $contentId) { if (!($translation = Multilanguage::string()->find($contentId))) { return ERROR_404; } if (isset($_POST['update_translation']) && Html::form()->validate()) { $status = Multilanguage::string()->where('id', '=', $contentId)->update(array('content' => $_POST['content'])); if ($status) { Message::ok('Translation updated successfully.'); $translation = Multilanguage::string()->find($contentId); } else { Message::error('Error updating translation, please try again.'); } } $langs = Multilanguage::language()->orderBy('name')->all(); $sortedLangs = array('' => 'Choose One'); foreach ($langs as $l) { $sortedLangs[$l->id] = $l->name; } $form[] = array('fields' => array('language_id' => array('title' => 'Language', 'type' => 'select', 'options' => $sortedLangs, 'validate' => array('required'), 'selected' => $translation->language_id), 'content' => array('title' => 'Translated String', 'type' => strlen($translation->content) > 25 ? 'textarea' : 'text', 'validate' => array('required'), 'default_value' => $translation->content), 'update_translation' => array('type' => 'submit', 'value' => 'Update Translation'))); return array('title' => 'Edit Translation', 'content' => Html::form()->build($form)); }
/** * Checks if an available language code is set in the current route. Multilanguage must be enabled * in config in order for this to work. * * @param string $currentRoute The current route to check for a language code */ public static function urlHasLangCode($currentRoute) { if (!Config::get('multilanguage.enabled')) { return false; } $code = null; if (strstr($currentRoute, '/')) { $bits = explode('/', $currentRoute); if ($bits && strlen($bits[0]) == 2) { $code = $bits[0]; } } elseif (strlen($currentRoute) == 2) { $code = $currentRoute; } if (!is_null($code)) { $lang = Multilanguage::language()->where('code', 'LIKE', $code)->first(); if ($lang) { Log::debug('multilanguage', 'Setting language to: ' . $lang->name); self::$_currentLang = $lang; return true; } } return false; }
/** * Builds the contents form based on parameters returned from event. * * @param array $data An array of data to populate the form fields with when editing, key is field name, value is field value */ private static function _buildForm($module, $type, $typeId, $typeInfo, $data = array()) { $langs = Multilanguage::language()->orderBy('name')->all(); $sortedLangs = array('' => 'Choose One'); foreach ($langs as $lang) { $sortedLangs[$lang->id] = $lang->name; } $form[] = array('fields' => array('language_id' => array('title' => 'Language', 'type' => 'select', 'options' => $sortedLangs, 'validate' => array('required'), 'selected' => isset($data['language_id']) ? $data['language_id'] : 0))); foreach ($typeInfo as $colName => $colType) { $form[0]['fields'][$colName] = array('title' => ucfirst($colName), 'type' => $colType, 'validate' => array('required'), 'default_value' => isset($data[$colName]) ? $data[$colName] : ''); // Add tinymce to textareas if ($colType == 'textarea') { $form[0]['fields'][$colName]['attributes'] = array('class' => 'tinymce'); } } // Determine if we are creating or editing if ($data) { $form[0]['fields']['update_content'] = array('type' => 'submit', 'value' => 'Update Content'); } else { $form[0]['fields']['create_content'] = array('type' => 'submit', 'value' => 'Create Content'); } return Html::form()->build($form); }