PDA

Просмотр полной версии : листинг и редактирование в mod1


3ton
10.02.2012, 12:44
cnолкнулся с проблемой на которую пока не нашел ответа, буду рад любой помощи

создал кикстартером модуль для бэкенда и пара таблиц
отметил нужные галочки

получил вывод моих элементов и создание их на страницах в модуле web->list

теперь мне нужно сделать чтоб они там не выводились и не редактировались а чтоб листинг и редактирование происходило в моем модуле web->test

Dmitry Dulepov
10.02.2012, 16:13
$TCA[$tableName]['ctrl']['hideTable'] = true;

3ton
10.02.2012, 17:08
$TCA[$tableName]['ctrl']['hideTable'] = true;

спасибо за проявленный интерес к моей проблеме, данную часть задачи я решил убиранием галок в кикстарте при редактировании таблицы

теперь интересует вторая часть вопроса каким образом мне сделать листинг данных

к примеру вот тут
http://doxygen.frozenkiwi.com/typo3/html/df/d24/typo3_2sysext_2recordlist_2mod1_2index_8php_source .html

нашел интересный кусочек кода


$dblist = t3lib_div::makeInstance('localRecordList');
$dblist->backPath = $BACK_PATH;
$dblist->script = t3lib_BEfunc::getModuleUrl('web_list', array(), '');
$dblist->calcPerms = $BE_USER->calcPerms($this->pageinfo);
$dblist->thumbs = $BE_USER->uc['thumbnailsByDefault'];
$dblist->returnUrl=$this->returnUrl;
$dblist->allFields = ($this->MOD_SETTINGS['bigControlPanel'] || $this->table) ? 1 : 0;
$dblist->localizationView = $this->MOD_SETTINGS['localization'];
$dblist->showClipboard = 1;
$dblist->disableSingleTableView = $this->modTSconfig['properties']['disableSingleTableView'];
$dblist->listOnlyInSingleTableMode = $this->modTSconfig['properties']['listOnlyInSingleTableView'];
$dblist->hideTables = $this->modTSconfig['properties']['hideTables'];
$dblist->tableTSconfigOverTCA = $this->modTSconfig['properties']['table.'];
$dblist->clickTitleMode = $this->modTSconfig['properties']['clickTitleMode'];
$dblist->alternateBgColors=$this->modTSconfig['properties']['alternateBgColors']?1:0;
$dblist->allowedNewTables = t3lib_div::trimExplode(',', $this->modTSconfig['properties']['allowedNewTables'], 1);
$dblist->deniedNewTables = t3lib_div::trimExplode(',', $this->modTSconfig['properties']['deniedNewTables'], 1);
$dblist->newWizards=$this->modTSconfig['properties']['newWizards']?1:0;
$dblist->pageRow = $this->pageinfo;
$dblist->counter++;
$dblist->MOD_MENU = array('bigControlPanel' => '', 'clipBoard' => '', 'localization' => '');
$dblist->modTSconfig = $this->modTSconfig;


думаю чтото похожее есть и в ядре ТУПО3 отвечающее за вывод листинга

возможно ктото уже сталкивался?

кстати, Дмитрий, перечитываю сейчас Вашу книгу "Typo3 Extension Development" там тоже не нахожу выведение списка в своем модуле...

поправьте меня, возможно плохо ищу...

dmartynenko
10.02.2012, 18:30
Пример собственного BE модуля есть в эксте tt_news папка \mod1 (в BE это News Admin). Там как раз то что вам нужно.

3ton
10.02.2012, 18:45
Пример собственного BE модуля есть в эксте tt_news папка \mod1 (в BE это News Admin). Там как раз то что вам нужно.

спасибо, я заметил Вы часто на этот модуль ссылаетесь ;)

function displayNewsList() {
$content = '';

$this->initSubCategories();

$table = 'tt_news';
$dblist = t3lib_div::makeInstance('tx_ttnews_recordlist');

$dblist->backPath = $GLOBALS['BACK_PATH'];
$dblist->script = $this->script;
$dblist->doEdit = $this->mayUserEditArticles;
$dblist->ext_CALC_PERMS = $this->newArticleCalcPerms;
$dblist->perms_clause = $this->perms_clause;
$dblist->agePrefixes = $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:labels.minutesHoursDaysYears');
$dblist->id = $this->id;
$dblist->newRecPid = $this->newArticlePid;
$dblist->singlePid = $this->singlePid;
$dblist->selectedCategories = $this->selectedCategories;
$dblist->category = $this->category;
$dblist->returnUrl = t3lib_extMgm::extRelPath('tt_news').'mod1/'.$dblist->listURL($this->id,FALSE);
$dblist->excludeCats = $this->excludeCats;
$dblist->includeCats = $this->includeCats;
$dblist->isAdmin = $this->isAdmin;
$dblist->current_sys_language = $this->current_sys_language;
$dblist->showOnlyEditable = $this->mData['showOnlyEditable'];
$dblist->pidList = $this->pidList;
$dblist->editablePagesList = $this->editablePagesList;

$dblist->start($this->id,$table,$this->pointer,$this->search_field,$this->searchLevels,$this->showLimit);

$externalTables[$table][0]['fList'] = $this->fieldList;
$externalTables[$table][0]['icon'] = $this->TSprop['list.']['icon'];

$dblist->externalTables = $externalTables;
$dblist->no_noWrap = TRUE;
$dblist->lTSprop = $this->TSprop['list.'];
$dblist->thumbs = $this->thumbs;
$dblist->pObj = &$this;

$dblist->generateList();

if (is_array($this->TSprop['list.']['show.']) && $this->TSprop['list.']['show.']['search']) {
$search = $this->displaySearch($dblist->listURL($this->id,FALSE));
$content .= '<div style="float:right;">'.$search.'</div>';
}

$content .= $this->renderListCheckBoxes();
$content .= $this->getListHeaderMsg($dblist);
$content .= $dblist->HTMLcode;

$content = '<form action="'.htmlspecialchars($dblist->listURL()).'" method="post" name="dblistForm">'.$content.'</form>';


return '<div id="ttnewslist">'.$content.'</div>';
}



но они используют свой инстанс для генерации таблицы, мне бы хотелось узнать о встроенном в typo3




думаю копать следует в этом направлении

http://api.typo3.org/typo3v4/45/html/_table_list_view_helper_8php_source.html

метод public function render

00086 public function render($tableName, array $fieldList = array(), $storagePid = NULL, $levels = 0, $filter = '', $recordsPerPage = 0, $sortField = '', $sortDescending = FALSE, $readOnly = FALSE, $enableClickMenu = TRUE, $clickTitleMode = NULL, $alternateBackgroundColors = FALSE) {
00087 $pageinfo = t3lib_BEfunc::readPageAccess(t3lib_div::_GP('id'), $GLOBALS['BE_USER']->getPagePermsClause(1));
00088
00089 $dblist = t3lib_div::makeInstance('localRecordList');
00090 $dblist->backPath = $GLOBALS['BACK_PATH'];
00091 $dblist->pageRow = $pageinfo;
00092 if ($readOnly === FALSE) {
00093 $dblist->calcPerms = $GLOBALS['BE_USER']->calcPerms($pageinfo);
00094 }
00095 $dblist->showClipboard = FALSE;
00096 $dblist->disableSingleTableView = TRUE;
00097 $dblist->clickTitleMode = $clickTitleMode;
00098 $dblist->alternateBgColors = $alternateBackgroundColors;
00099 $dblist->clickMenuEnabled = $enableClickMenu;
00100
00101 if ($storagePid === NULL) {
00102 $frameworkConfiguration = $this->configurationManager->getConfiguration(Tx_Extbase_Configuration_Configur ationManagerInterface::CONFIGURATION_TYPE_FRAMEWOR K);
00103 $storagePid = $frameworkConfiguration['persistence']['storagePid'];
00104 }
00105
00106 $dblist->start($storagePid, $tableName, (integer)t3lib_div::_GP('pointer'), $filter, $levels, $recordsPerPage);
00107 $dblist->allFields = TRUE;
00108 $dblist->dontShowClipControlPanels = TRUE;
00109 $dblist->displayFields = FALSE;
00110 $dblist->setFields = array($tableName => $fieldList);
00111 $dblist->noControlPanels = TRUE;
00112 $dblist->sortField = $sortField;
00113 $dblist->sortRev = $sortDescending;
00114
00115 $dblist->script = $_SERVER['REQUEST_URI'];
00116 $dblist->generateList();
00117
00118 return $dblist->HTMLcode;
00119 }


уж очень похоже на то что я ищу

dmartynenko
10.02.2012, 19:08
Экст tt_news популярен -> его много кто использует -> значит он вполне рабочий и содержит мало ошибок -> значит можно рекомендовать его как пример :)

А толку вам от встроенного если вы наверняка захотите какую-то уникальную нужную вам функциональность?

Ну ладно, вот еще один пример: templavoila\mod1\class.tx_templavoila_mod1_recordl ist.php

require_once(PATH_t3lib . 'class.t3lib_recordlist.php');
require_once(PATH_typo3 . 'class.db_list.inc');
require_once(PATH_typo3 . 'class.db_list_extra.inc');

// Need List lables for delete confirmation
$LANG->includeLLFile('EXT:lang/locallang_mod_web_list.xml');

/**
* Extension of standard List module
*
* @author Dmitry Dulepov <dmitry@typo3.org>
* @package TYPO3
* @subpackage tx_templavoila
*/
class tx_templavoila_mod1_recordlist extends localRecordList {

3ton
13.02.2012, 21:06
я оказался прав

используя
$dblist = t3lib_div::makeInstance('localRecordList');

можно выводить листинг элементов таблицы в своем расширении аналогичный режиму Web->List с контролами и прочим

теперь возникла следущая проблема которую можно решить 2-мя путями

1. добавить в таблицу к кнопкам (редактирование, инфо, удаление...) своей кнопки с нужным функционалом

2. в режиме редактирования(создания) элемента таблицы добавить добавление другого контента по примеру того как в расширении t3blog создавая статью можно добавить несколько различных элементов контента

http://typo3.org/typo3temp/tx_terdoc/documentscache/t/3/t3blog-0.5.0/docbook/pictures/100002010000020800000279A801DB4E.png

на данном рисунке они в разделе "Your contents"

dmartynenko
13.02.2012, 21:13
А как формулируется новая проблема?

"Your contents" похоже на поле типа IRRE (http://wiki.typo3.org/Inline_Relational_Record_Editing)

3ton
14.02.2012, 00:54
А как формулируется новая проблема?

"Your contents" похоже на поле типа IRRE (http://wiki.typo3.org/Inline_Relational_Record_Editing)

спасибо!!! а Вы случаем не телепат????

это и есть моя проблема - необходимость товару добавить множество цен в зависимости от какой-либо характеристики...

именно как отображено на Вашей ссылке на картинке

теперь осталось понять как это реализовать.

Буду рад любой помощи

dmartynenko
14.02.2012, 18:10
Я отвечал вам (а может не вам) в другой ветке http://forum.typo3.biz/showthread.php?p=33079#post33079. В кратце - не факт что IRRE удобен во всех случаях.

IRRE штука простая - две таблицы и настройка поля-связки в конфигурации TCA родительской таблицы. Есть экст-пример irre_tutorial

Dmitry Dulepov
17.02.2012, 11:42
Экст tt_news популярен -> его много кто использует -> значит он вполне рабочий и содержит мало ошибок -> значит можно рекомендовать его как пример :)
Не, не правильно :) Это очень старое и тормозное расширение с ужасно плохим кодом. А популярное только потому, что не было альтернативы.

Андрей Аксенов
18.02.2012, 09:24
Не, не правильно :) Это очень старое и тормозное расширение с ужасно плохим кодом. А популярное только потому, что не было альтернативы.
А как news в качестве альтернативы?