Source for file LanguageEditor.class.php
Documentation is available at LanguageEditor.class.php
* Содержит класс TranslationEditor
* @copyright Energine 2006
//require_once('core/modules/share/components/Grid.class.php');
public function __construct($name, $module, Document $document, array $params = null) {
parent::__construct($name, $module, $document, $params);
* Добавляем паттерн и сообщение об ошибке для описания поля lang_abbr. Поле должно содержать две маленькие латинские буквы
* @return DataDescription
if ($this->getType() !== self::COMPONENT_TYPE_LIST) {
$langAbbr = $dataDescription->getFieldDescriptionByName('lang_abbr');
$langAbbr->setProperty('message', 'MSG_BAD_LANG_ABBR');
* При создании нового языка не даем возможности сделать его дефолтным
protected function add() {
$field = new Field('lang_default');
$this->getData()->addField($field);
* Для формы редактирования, если чекбокс языка по умолчания отмечен делает его неактивным
public function build() {
if ($this->getType() == self::COMPONENT_TYPE_FORM_ALTER ) {
//Если это язык по умолчанию - делаем неактивным
if ($this->getData()->getFieldByName('lang_default')->getRowData(0) === true) {
* Переопределенный метод сохранения
if ($this->getAction() == 'save' && isset ($result[0]['lang_default']) && $result[0]['lang_default'] !== '0') {
* Переопределенный родительский метод
//если мы пытаемся удалить текущий язык
* При добавлении нового языка создаем задизейбленые разделы
if ($this->saver->getMode() == QAL::INSERT) {
$this->dbh->modifyRequest('INSERT INTO share_sitemap_translation(smap_id, lang_id, smap_name) SELECT smap_id, %s, concat(\'--\',smap_name, \'--\') as smap_name from share_sitemap_translation WHERE lang_id = (select lang_id from share_languages where lang_default=1)', $langID);
$this->dbh->modifyRequest('INSERT INTO share_lang_tags_translation(ltag_id, lang_id, ltag_value_rtf) SELECT ltag_id, %s, ltag_name from share_lang_tags', $langID);
* @todo По хорошему, при добавлении нового языка нужно вносить данные во все _translation таблицы
|