/** * * @param array $entries * @param array $columns * @param tx_rnbase_util_FormTool $formTool * @param Tx_Rnbase_Domain_Model_DataInterface $options * @return array 0 are data and 1 layout */ public static function prepareTable($entries, $columns, $formTool, $options) { $options = tx_rnbase_model_data::getInstance($options); $tableLayout = $formTool->getDoc()->tableLayout; $tableData = array(self::getHeadline($columns, $options, $formTool)); $rowCount = 1; $isRowOdd = FALSE; foreach ($entries as $entry) { $tableData[$rowCount] = self::prepareRow($entry, $columns, $formTool, $options); $rowCount++; // now add the language overlays! // sample css for mod template: // table.typo3-dblist tr.localization { opacity: 0.5; font-size: 0.92em; } // table.typo3-dblist tr.localization td:nth-child(1), table.typo3-dblist tr.localization td:nth-child(2) { padding-left: 24px; } if ($entry instanceof Tx_Rnbase_Domain_Model_RecordInterface && $options->getAddI18Overlays() && $entry->getUid() == $entry->getProperty('uid') && !$entry->getSysLanguageUid()) { // set the layout for the original (last) row $defName = $isRowOdd ? 'defRowOdd' : 'defRowEven'; $tableLayout[$rowCount - 1] = is_array($tableLayout[$defName]) ? $tableLayout[$defName] : $tableLayout['defRow']; // the spacial layout for the overlay rows $layout = $tableLayout[$rowCount - 1]; $layout['tr'][0] = '<tr class="' . ($isRowOdd ? 'db_list_normal' : 'db_list_alt') . ' localization">'; $isRowOdd = !$isRowOdd; // render the overlays with the special layout foreach (self::getLangOverlayEntries($entry) as $overlay) { $overlay->setProperty('_MOD_OVERLAY', TRUE); $tableData[$rowCount] = self::prepareRow($overlay, $columns, $formTool, $options); $overlay->unsProperty('_MOD_OVERLAY'); $tableLayout[$rowCount] = $layout; $rowCount++; } } } return array($tableData, $tableLayout); }
/** * @test */ public function testRecursiveInstance() { $data = array('gender' => 'm', 'name' => array('first' => 'John', 'last' => 'Doe', 'test' => array())); $model = tx_rnbase_model_data::getInstance($data); $this->assertSame('m', $model->getGender()); $this->assertInstanceOf('tx_rnbase_model_data', $model->getName()); $this->assertSame('John', $model->getName()->getFirst()); $this->assertSame('Doe', $model->getName()->getLast()); $this->assertInstanceOf('tx_rnbase_model_data', $model->getName()->getTest()); }
/** * * @param tx_rnbase_model_base $model * @param array|tx_rnbase_model_data $options * @return string */ protected function makeLink($model = NULL, $options = NULL) { if (!$model instanceof tx_rnbase_model_base) { $item = $this->getModel(array('uid' => 14))->setTableName('pages'); } if (!$options instanceof tx_rnbase_model_data) { $options = tx_rnbase_model_data::getInstance($options); } /* @var $linker tx_rnbase_mod_linker_ShowDetails */ $linker = tx_rnbase::makeInstance('tx_rnbase_mod_linker_ShowDetails'); self::assertInstanceOf('tx_rnbase_mod_linker_LinkerInterface', $linker); return $linker->makeLink($item, tx_rnbase::makeInstance('tx_rnbase_util_FormTool'), 0, $options); }
/** * returns the sprite icon for the given sys language record. * * @param array|int $recordOrUid * @return Ambigous <string, multitype:> */ public static function getLangSpriteIcon($recordOrUid, $options = NULL) { tx_rnbase::load('tx_rnbase_model_data'); $options = tx_rnbase_model_data::getInstance($options); if (!is_array($recordOrUid)) { $langUid = (int) $recordOrUid; $record = self::getLangRecord($recordOrUid); } else { $langUid = (int) $recordOrUid['uid']; $record = $recordOrUid; } $spriteIconName = 'flags-multiple'; if (!empty($record)) { $spriteIconName = t3lib_iconWorks::mapRecordTypeToSpriteIconName('sys_language', $record); } $out = tx_rnbase_mod_Util::getSpriteIcon($spriteIconName); // add title per default (typo3 equivalent)! if ($options->getShowTitle() !== FALSE) { $langTitle = 'N/A'; if ($langUid === -1) { $langTitle = 'LLL:EXT:lang/locallang_general.xml:LGL.allLanguages'; } elseif ($langUid === 0) { $langTitle = 'LLL:EXT:lang/locallang_general.xml:LGL.default_value'; } elseif (!empty($record['title'])) { $langTitle = $record['title']; } $out .= ' ' . htmlspecialchars($GLOBALS['LANG']->sL($langTitle)); } return $out; }
/** * * @param string $tableName * @param array $options * only_record_fields: validates only fields included in the record * @return array */ public static function getTcaColumns($tableName, $options = NULL) { self::loadTCA($tableName); $options = tx_rnbase_model_data::getInstance($options); $columns = empty($GLOBALS['TCA'][$tableName]['columns']) ? array() : $GLOBALS['TCA'][$tableName]['columns']; $tcaOverrides = $options->getTcaOverrides(); if (!empty($tcaOverrides['columns'])) { tx_rnbase::load('tx_rnbase_util_Arrays'); $columns = tx_rnbase_util_Arrays::mergeRecursiveWithOverrule($columns, $tcaOverrides['columns']); } return $columns; }