Source for file MultiLanguageBuilder.class.php
Documentation is available at MultiLanguageBuilder.class.php
* Класс MultiLanguageBuilder.
* @copyright Energine 2006
//require_once('core/framework/Builder.class.php');
* Построитель для мультиязычных компонентов.
protected function run() {
$dom_recordSet = $this->result->createElement('recordset');
$this->result->appendChild($dom_recordSet);
// для режима списка и режима редактирования (когда есть данные)
if (!$this->data->isEmpty()) {
foreach ($this->dataDescription->getFieldDescriptions() as $fieldName => $fieldInfo) {
$fieldData = $this->data->getFieldByName($fieldName);
// если это первичный ключ
if ($fieldInfo->getPropertyValue('key') === true) {
$fieldInfo->setProperty('tabName', $this->translate('TXT_PROPERTIES'));
while ($i < $fieldData->getRowCount()) {
$rowData = $fieldData->getRowData($i);
$index = (is_null($rowData))? 0: $rowData;
$correlation[$i] = $index;
if (!isset ($records[$index])) {
$records[$index][] = $this->createField($fieldName, $fieldInfo, $rowData, $fieldData->getRowProperties($i));
// если это мультиязычное поле
elseif ($fieldInfo->isMultilanguage()) {
// $title = $fieldInfo->getPropertyValue('title');
foreach ($fieldData->getData() as $key => $data) {
$langID = $this->data->getFieldByName('lang_id')->getRowData($key);
$dataProperties = $fieldData->getRowProperties($key);
$fieldInfo->setProperty('language', $langID);
$fieldInfo->setProperty('tabName', $lang->getNameByID($langID));
$dom_field = $this->createField($fieldName, $fieldInfo, $data, $dataProperties);
$records[$correlation[$key]][] = $dom_field;
elseif (!$fieldInfo->getPropertyValue('languageID')) {
foreach ($tmp as $key => $value) {
if ($this->data && $this->data->getFieldByName($fieldName)) {
$data = array($this->data->getFieldByName($fieldName)->getRowData($i));
$data = $this->data->getFieldByName($fieldName)->getRowData($i);
elseif ($this->data->getFieldByName($fieldName)) {
$fieldValue = $fieldData->getRowData($value);
$dataProperties = ($fieldData)? $fieldData->getRowProperties($value): false;
if (is_null($fieldInfo->getPropertyValue('tabName'))) {
$fieldInfo->setProperty('tabName', $this->translate('TXT_PROPERTIES'));
$fieldInfo->setProperty('tabName', $fieldInfo->getPropertyValue('tabName'));
$dom_field = $this->createField($fieldName, $fieldInfo, $fieldValue, $dataProperties);
$records[$correlation[$value]][] = $dom_field;
foreach ($records as $key => $value) {
$dom_record = $this->result->createElement('record');
foreach ($value as $val) {
$dom_record->appendChild($val);
$dom_recordSet->appendChild($dom_record);
// для режима вставки (когда данные отсутствуют)
$dom_record = $this->result->createElement('record');
foreach ($this->dataDescription->getFieldDescriptions() as $fieldName => $fieldInfo) {
if ($fieldInfo->isMultilanguage()) {
//$title = $fieldInfo->getPropertyValue('title');
foreach (array_keys($lang->getLanguages()) as $langID) {
$fieldInfo->setProperty('language', $langID);
$fieldInfo->setProperty('tabName', $lang->getNameByID($langID));
$dom_record->appendChild($this->createField($fieldName, $fieldInfo, ''));
elseif (!$fieldInfo->getPropertyValue('languageID')){
if (is_null($fieldInfo->getPropertyValue('tabName'))) {
$fieldInfo->setProperty('tabName', $this->translate('TXT_PROPERTIES'));
$fieldInfo->setProperty('tabName', $fieldInfo->getPropertyValue('tabName'));
$dom_record->appendChild($this->createField($fieldName, $fieldInfo, $fieldValue));
$dom_recordSet->setAttribute('empty', 'empty');
$dom_recordSet->appendChild($dom_record);
|