BeratungEntwicklungSchulungTypo3TutorialsPHPMySQLFlash

Hooks für Dummies

Am folegenden Beispiel soll die Verwendung eines vorhandenenr Hooks näher erklärt werden.

Aufgabenstellung

Die Erweiterung calendar base (cal) soll so modifiziert werden, dass Redakteure im TYPO3-Backend nur bestimmte Veranstaltungen sehen und bearbeiten können. Die Auswahl ist abhängig von Veranstaltern.

Lösungsansatz

Den Redakteuren im Backend wird jeweils eine Liste von Veranstalter-Ids zugeordnet. Sie sehen nach dem Einlaggen in Backend nurnoch die entsprechenden Veranstaltungen.

Vorgehensweise

  • Erstellung eines neuen Feldes bei den Backend-Benutzern (be_users)
  • Heraussuchen des passenden Hooks
  • Erstellung einer neuen Klasse für den Hook

 

Die Schritte im Einzelnen

Zunächst muss das neue Feld für die BE-User angelegt werden. hierzu sind Änderungen in Zwei Dateien notwendig:

  1. ext_tables.sql
  2. ext_tables.php

ext_tables.sql

Hier wird die Definition für das neue Feld in der MySQL-Datenbank geschrieben. Wir nennen das an dieser Stelle mal "tx_cal_organizer_id".

Die Definition für be_users sollte dann so aussehen:

CREATE TABLE be_users (
    tx_cal_enable_accesscontroll tinyint(4) DEFAULT '0' NOT NULL,
    tx_cal_calendar tinyblob NOT NULL,
    tx_cal_category tinyblob NOT NULL,
    tx_cal_organizer_id tinyblob NOT NULL,
);

 

ext_tables.php

Hier werden nun die "neuen" Datenbankfelder schonmal vorab ins passende TCA geschrieben. Für die BE-USER-Felder wird dazu zunächst das standard Array geladen, dann modifiziert und dann zurückgeschrieben. uns reicht hier ein einfaches input-Feld.

Erstmal definieren:

$tempColumns = Array (
    'tx_cal_organizer_id' => Array (       
        'exclude' => 1,
        'label' => 'Ansicht auf organizer einschraenken',
        'displayCond' => 'FIELD:tx_cal_enable_accesscontroll:REQ:true',
        'config' => Array (
                'type' => 'input',   
                'size' => '30',
                'max' => '128'
            )
    )
);

 

Dann zuweisen:

t3lib_div::loadTCA('be_users');
t3lib_extMgm::addTCAcolumns('be_users',$tempColumns,1);
t3lib_extMgm::addToAllTCAtypes('be_users','tx_cal_organizer_id;;;;1-1-1', '0');

 

Lesen Sie in Kürze die nächsten Schritte:
  • Hook finden: Welche Klasse ist verantwortlich für die Ausgabe im BE?
  • Hook nutzen: Neue Klasse definieren und anhängen

 

 

Hooks für Dummies - Teil 2

Als nächstes suchen wir die TYPO3-Klasse, die für die Anzeige der Datensätze im TYPO3-Backend zuständig ist. Nach Konsultation der API läst sich die Funktion "getTable" in der Datei "typo3/class.db_list_extra.inc" finden. 

Hübsch. Da finden wir auch unseren kleinen "Haken" - in diesem Fall von Malte Jansen eingebunden. Vom Hook "aufgerufen" wird anscheinend die Funktion "getDBlistQuery". Das sollten wir uns merken!

Legen wir also flux eine neue Datei an "myHook.php". Hier bauen wir eine Klasse "myclass" und legen da die Funktion - rate mal - getDBlistQuery an.Sieht schon ganz gut aus! Jetzt zur eigentlichen Programmierarbeit: was sollte nochmal passieren?! Also schnell die entsprechenden Zeilen gecoded:

function getDBlistQuery($table, $pageId, &$additionalWhereClause, &$selectedFieldsList, &$parentObject){
    if($table == 'tx_cal_event') {
        if ($GLOBALS['BE_USER']->user['tx_cal_enable_accesscontroll'] && !$GLOBALS['BE_USER']->user['admin']){
            $additionalWhereClause .= ' AND organizer_id in('.$GLOBALS['BE_USER']->user['tx_cal_organizer_id'].')';
            }
        }
    }

Jetzt sorgen wir in der ext_localconf.php für eine entsprechende Zuweisung:

$GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/class.db_list_extra.inc']['getTable'][] = 'EXT:myext/myhook.php:myclass';

Finden

Aktuelles:

16.08.11

TYPO3 BUGFIX!

Heute, am 16. August, wurden für die TYPO3-Versionen 4.5, 4.4 und 4.3 neue Sicherheitsupdates...

 
27.07.11

TYPO3 Sicherheits-Updates!

Heute, am 27. Juli, wurden für die TYPO3-Versionen 4.5, 4.4 und 4.3 neue Sicherheitsupdates...

 

Neue Seiten


 ??   1   9dhttp:   明.   chico   d71f9548c2   data.sql   kreativermachersuchtwollmilch.   o   swapfile.c.htm   .t   typo3.de.sql   u 
 Berlin   Fehler   Google   News   Probleme   Schuhe   Schuster   Slideout   Typo3   TYPO3 


www.make-it-typo3.de
www.behrendt-it.de
www.typo3-crm.de
www.typo3-dienst.de
www.ratgeber-typo3.de
www.hilfetypo3.de
www.handbuch-typo3.de


XFN Friendly