Hook-Problem beim Anzeigen der Listenansicht über t3lib_localRecordListGetTableHook

  • brendlin brendlin
    Typ im Roten Hemd
    0 x
    2 Beiträge
    0 Hilfreiche Beiträge
    05. 11. 2009, 17:29

    Hallo Forum,

    ich versuche nun seit zwei Tagen die Listenansicht ( exakt so wie unter Web>Liste) in ein von mir geschriebenes Backend-Modul zu integrieren. #angry# Ich arbeite gerade an einem Kunden-Center Modul für TYPO3, bei dem Redakteure neue Kundenseiten im passwortgeschützten Bereich (Frontend) anlegen können, diese mit Inhalten füllen und natürlich im Backend auch sehen sollen welche Inhalte auf den Seiten vorhanden sind ohne dafür auf Web>Seite oder Web>Liste wechseln zu müssen. Dafür habe ich mir als Ansatz überlegt den Hook "interface t3lib_localRecordListGetTableHook" einzusetzen. Damit glaube ich schon auf dem richtigen Weg zu sein bis auf den Umstand dass mir die Liste der auf einer Seite vorhandenen Inhalte eben nicht angezeigt wird.

    Der Hook selbst greift auch schon, denn wenn ich einen echo Irgendwas Befehl in die Funktion 'getDBlistQuery' meiner Hook-Klasse 'tx_biscustomercenter_listviewhook' einfüge wird mir dieser über Web>Liste auch im Backend ausgegeben. Der Teufel steckt mal wieder im Detail, er will sich (mir) nur nicht zeigen.

    Dieser Hooh wird benutzt:
    /typo3/class.db_list_extra.inc, Zeile 372ff

    Hier meine Hook-Klasse:

    1. <?php
    2.  
    3. require_once(PATH_t3lib.'interfaces/interface.t3lib_localrecordlistgettablehook.php');
    4.  
    5. class tx_biscustomercenter_listviewhook implements t3lib_localRecordListGetTableHook {
    6.  
    7.  
    8. /**
    9.   * Modfies the db_list-query
    10.   * - Adds if need a limitation to the where-clause to get only the own records.
    11.   * @param string the current database table
    12.   * @param integer the record's unique ID
    13.   * @param string an additional WHERE clause
    14.   * @param string comma separated list of selected fields
    15.   * @param localRecordList parent localRecordList object
    16.   */
    17.  
    18. public function getDBlistQuery($table, $pageId, &$additionalWhereClause, &$selectedFieldsList, &$parentObject) {
    19. echo("Die Tabelle ".$table."");
    20. echo("mit der PageID ".$pageId."");
    21. echo("mit selectedFields ".$selectedFieldsList."");
    22. }
    23.  
    24.  
    25.  
    26. }
    27.  
    28.  
    29. if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/bis_customercenter/mod3/class.tx_biscustomercenter_listviewhook.php']) {
    30. include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/bis_customercenter/mod3/class.tx_biscustomercenter_listviewhook.php']);
    31. }
    32. ?>

    Ich hoffe dass einer von euch vielleicht schon mal vor dem gleichen Problem stand und mir einen Wink in die richtige Richtung geben kann.

    Besten Dank für Hinweise.


  • 1
  • matin matin
    R2-D2
    0 x
    91 Beiträge
    0 Hilfreiche Beiträge
    05. 11. 2009, 19:34

    hatte mal vor langer zum testen ein backendmodul angelegt, wo alle datensätze einer tabelle angezeigt wurden. hatte das etwas hard gefrickelt, hat aber funktioniert. es ging um felgen und autos. naja, hier einfach mal der ganze code für die db-abfrage und content-ausgabe - vielleicht hilft dir dieser ansatz:

    1. $res_felgen=$GLOBALS['TYPO3_DB']->exec_SELECTquery(
    2. '*', #select
    3. 'tx_mwbackend_felgen', #from
    4. 'hidden=0 and deleted=0 and pid='.$_GET[id], #where
    5. $groupBy='',
    6. $orderBy=''
    7. #$limit=$this->piVars['pointer']*3 . ',3' #limit
    8. );
    9.  
    10. while( $row_felgen = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res_felgen)) {
    11. $content .='GET:'.$_GET[id].'<br />';
    12. $content .= "<a href=\"http://www.domain.at/testserver/typo3/alt_doc.php?returnUrl=db_list.php%3Fid%3D".$_GET[id]."%26table%3D&edit[tx_mwbackend_felgen][".$row_felgen['uid']."]=edit\" target=\"_blank\" onClick=\"window.open('http://www.domain.at/testserver/typo3/alt_doc.php?returnUrl=db_list.php%3Fid%3D".$_GET[id]."%26table%3D&edit[tx_mwbackend_felgen][".$row_felgen['uid']."]=edit','Datensatz bearbeiten','width=650,height=600,scrollbars');return false\"><img src=\"http://www.domain.at/testserver/typo3/sysext/t3skin/icons/gfx/edit2.gif\" title=\"Datensatz bearbeiten\" alt=\"\" width=\"16\" height=\"16\"></a>";
    13. $content .= $row_felgen['marke']." ".$row_felgen['typ']." ".$row_felgen['dimension']." ".$row_felgen['anschluss']."<br />";
    14.  
    15.  
    16.  
    17. $res_autos=$GLOBALS['TYPO3_DB']->exec_SELECTquery(
    18. '*', #select
    19. 'tx_mwbackend_auto', #from
    20. 'hidden=0 and deleted=0 and anschluss='.$row_felgen['anschluss'], #where
    21. $groupBy='',
    22. $orderBy=''
    23. #$limit=$this->piVars['pointer']*3 . ',3' #limit
    24. );
    25.  
    26. while( $row_autos = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res_autos)) {
    27.  
    28. $content .= $row_autos['marke']." ".$row_autos['model']." ".$row_autos['anschluss']." ".$row_autos['textfeld']."<br />";
    29.  
    30. $content .= "<form action=\"\" method=\"post\" enctype=\"multipart/form-data\" name=\"editform\">
    31. <table>
    32. <tr class=\"class-main11\">
    33. <td nowrap=\"nowrap\">Anmerkung:<img name=\"cm_tx_mwbackend_felgenzuordnung_1_marke\" src=\"http://www.domain.at/testserver/typo3/clear.gif\" width=\"7\" height=\"10\" alt=\"\" /></td>
    34. <td valign=\"top\"><input type=\"text\" name=\"name[".$row_autos['uid']."]\" value=\"\" style=\"width:288px;\" class=\"formField1\" maxlength=\"256\" /></td>
    35. <td valign=\"top\"><input type=\"text\" name=\"typ[".$row_autos['uid']."]\" value=\"\" style=\"width:100px;\" class=\"formField1\" maxlength=\"256\" />fff
    36. <input type=\"checkbox\" name=\"box[".$row_autos['uid']."]\" value=\"1\" />fred</td>
    37.  
    38.  
    39. <td valign=\"top\" class=\"thumbnails\"><span class=\"nobr\"><a href=\"http://www.domain.at/testserver/typo3/browser.php?mode=file&bparams=name[".$row_autos['uid']."]|||||\" target=\"_blank\" onClick=\"window.open('http://www.domain.at/testserver/typo3/browser.php?mode=file&bparams=name[".$row_autos['uid']."]||||','Datensatz bearbeiten','width=650,height=600,scrollbars');return false\"><img src=\"http://www.domain.at/testserver/typo3/thumbs.php?&amp;dummy=1229315378&amp;file=..%2Fuploads%2Ftx_mwreference%2Fdatenblatt1_03.pdf&amp;md5sum=9a4fe7ac01\" hspace=\"2\" border=\"0\" title=\"../uploads/tx_mwreference/datenblatt1_03.pdf\" align=\"middle\" alt=\"\" /></a> <a href=\"http://www.domain.at/testserver/typo3/browser.php?mode=file&bparams=data[tx_mwreference_referenzen][2][datenblatt]||||\" target=\"_blank\" onClick=\"window.open('http://www.domain.at/testserver/typo3/browser.php?mode=file&bparams=data[tx_mwreference_referenzen][2][datenblatt]||||','Datensatz bearbeiten','width=650,height=600,scrollbars');return false\"><img src=\"http://www.domain.at/testserver/typo3/gfx/fileicons/pdf.gif\" width=\"18\" height=\"16\" class=\"absmiddle\" title=\"datenblatt1_03.pdf (2.9 Kbytes)\" alt=\"\" /></a>datenblatt1_03.pdf</span></td>
    40.  
    41. </tr>
    42. </table>";
    43.  
    44.  
    45. }
    46.  
    47. }
    48. $content .= "<input name=\"senden\" type=\"submit\" value=\"Daten speichern\">
    49. </form><br /><br />";
    50.  
    51.  
    52. if($_POST)
    53. {
    54. #$count = count($row_autos['uid']);
    55. #for($i=1; $count < $i; $i++)
    56. # {
    57. # echo $row_autos['uid'];
    58. # }
    59. echo "<pre>";
    60. print_r ($_POST);
    61. echo "</pre>";
    62.  
    63. }
    64.  
    65. //neues element anlegen
    66. $content .= "<a href=\"http://www.domain.at/testserver/typo3/alt_doc.php?returnUrl=db_list.php%3Fid%3D".$_GET[id]."%26table%3D&edit[tx_mwbackend_felgen][".$_GET[id]."]=new\" target=\"_blank\" onClick=\"window.open('http://www.domain.at/testserver/typo3/alt_doc.php?returnUrl=db_list.php%3Fid%3D".$_GET[id]."%26table%3D&edit[tx_mwbackend_felgen][".$_GET[id]."]=new','Datensatz bearbeiten','width=650,height=600,scrollbars');return false\"><img src=\"http://www.domain.at/testserver/typo3/sysext/t3skin/icons/gfx/new_el.gif\" width=\"16\" height=\"16\" title=\"neuen Datensatz erstellen\" alt=\"\" /></a>";
    67. $content .='<div align=center><strong>Menu item #2...</strong> Mein Text</div>';
    68. $this->content.=$this->doc->section('Message #2:',$content,0,1);

  • brendlin brendlin
    Typ im Roten Hemd
    0 x
    2 Beiträge
    0 Hilfreiche Beiträge
    06. 11. 2009, 18:33

    Hallo Matin,

    danke für Deine schnelle Antwort aber deine Lösung passt für mein Vorhaben leider nicht. Ein Verwaltungsbackend für einzelne Tabellen zu erstellen ist kein Problem, ich möchte aber exakt diese Ansicht (Foto) aus dem Listenmodul in meiner Extension nutzen.

    [img]http://seoportal.brendlin.com/screenshot.jpg[/img]

    [url]http://seoportal.brendlin.com/screenshot.jpg[/url]

    Notfalls werde ich über's Wo-Ende versuchen die gesamte /typo3/db_list.php in mein Modul zu kopieren aber da muß es doch einen smarteren Weg geben Web>Liste wieder zu geben. Bin mir inzwischen auch nicht mehr so sicher ob der gefundene Hook wirklich ans Ziel führt denn bisher konnte ich über diesen nur die Ansicht der 'echten' Web>Liste manipulieren (das funktioniert auch...).

    Für weitere Ideen und mögliche Lösungen bin ich immer offen, versuche hier weiterhin eine Lösung zu finden.

    Beste Grüße.

  • Sturmi Sturmi
    Sternenflotten-Admiral
    0 x
    211 Beiträge
    0 Hilfreiche Beiträge
    29. 01. 2010, 13:45

    Hast du das inzwischen lösen können? Würde mich einfach mal interessieren.

  • 1