Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Разработка расширений / TYPO3 extension development (http://forum.typo3.ru/forumdisplay.php?f=38)
-   -   листинг и редактирование в mod1 (http://forum.typo3.ru/showthread.php?t=9933)

3ton 10.02.2012 12:44

листинг и редактирование в mod1
 
cnолкнулся с проблемой на которую пока не нашел ответа, буду рад любой помощи

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

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

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

Dmitry Dulepov 10.02.2012 16:13

$TCA[$tableName]['ctrl']['hideTable'] = true;

3ton 10.02.2012 17:08

Цитата:

Сообщение от Dmitry Dulepov (Сообщение 33077)
$TCA[$tableName]['ctrl']['hideTable'] = true;

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

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

к примеру вот тут
http://doxygen.frozenkiwi.com/typo3/...hp_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

Цитата:

Сообщение от dmartynenko (Сообщение 33082)
Пример собственного 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...hp_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_ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK);
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...79A801DB4E.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

Цитата:

Сообщение от dmartynenko (Сообщение 33098)
А как формулируется новая проблема?

"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


Часовой пояс GMT +4, время: 09:33.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot