extension dev

Plugin im Wizard

Im derzeitigem Backend der TYPO3 Version 3.8 gibt es die Möglichkeit Seitenelemente über einen Wizard hinzuzufügen.
Möchte man eigene Erweiterungen auch über den Wizard verfügbar machen, kann man sich eines Hooks bedienen. (Der in der Datei "sysext/cms/layout/db_new_content.php" aufgerufen wird.)

Im folgenden sollen die Schritte beispielhaft für ein Frontendplugin "tx_danpcourses_pi1" der Erweiterung "danp_courses"
gezeigt werden. Am Ende des Beispiels findet man auch eine den Quellcode einer Klasse für den Hook, der modifiziert und verwendet werden kann.


1. Vorbereitungen:

 -Ein Bild für den Wizard erstellen, dies sollte 22px breit sein. Die typische Vorlage gibt es hier:
 Dieses Bild als wizard.gif im Ordner des Frontendplugins speichern ("pi1")
 
 -Einen Titel und eine Beschreibung für den Wizard einfallen lassen, und diese in die locallang_db Datei der Extension schreiben:

 

 

     'wizard_title_pi1'=>'Kursanzeige',    
    'wizard_description_pi1'=>'Kursanzeige einfügen',

 




2. Hook registrieren

In ext_tables.php den Hook für den Wizard registrieren, für die eigene Verwendung dieses Quelltextes, sollte nur die Variable
$wizardClassName entsprechend geändert werden

 

 

if (TYPO3_MODE=='BE') {
 //Hook für Wizard
 $wizardClassName='tx_danpcourses_pi1_wizicon';
 $wizardClassFile='pi1/class.'.$wizardClassName.'.php';
 
 $TBE_MODULES_EXT['xMOD_db_new_content_el']['addElClasses'][$wizardClassName] = t3lib_extMgm::extPath($_EXTKEY).$wizardClassFile;
}

 

 

3. Klasse des Hooks anlegen

Der Hook benötigt eine Klasse (Klassennamen und Klassenpfad wurden im Hook registriert.) mit der
Funktion proc()

Als Vorlage für diese Klasse kann der Quelltext unterhalb verwendet werden. Für die Verwendung sollten lediglich die Variablen
$extKey, $feExtId sowie der "XCLASS" Eintrag am Ende abgeändert werden. Die Klasse beachtet auch die Berechtigungseinstellungen des angemeldeten BE-Users insoweit,
dass der Eintrag nicht angezeigt wird, sobald die Erweiterung als "explicit deny" in einer BE-Gruppe konfiguriert wurde.

 

 

<?php
    /***************************************************************
    *  Copyright notice
    *
    *
    *  This script is part of the Typo3 project. The Typo3 project is
    *  free software; you can redistribute it and/or modify
    *  it under the terms of the GNU General Public License as published by
    *  the Free Software Foundation; either version 2 of the License, or
    *  (at your option) any later version.
    *
    *  The GNU General Public License can be found at
    *  www.gnu.org/copyleft/gpl.html.
    *
    *  This script is distributed in the hope that it will be useful,
    *  but WITHOUT ANY WARRANTY; without even the implied warranty of
    *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    *  GNU General Public License for more details.
    *
    *  This copyright notice MUST APPEAR in all copies of the script!
    ***************************************************************/

    /**
     * Class that adds the wizard icon.
     * The plugin is defined as a CType
     *
     */
    class tx_danpcourses_pi1_wizicon {
        var $extKey='danp_courses';
        var $feExtId='tx_danpcourses_pi1';
        
        
        function proc(&$wizardItems) {
            global $BE_USER, $LANG;
            
            
            $extKeyPlugin=$this->extKey.'_pi1';
            $iconFile='pi1/wizard.gif';
            
            //print_r($BE_USER->groupData);        
            
            //Nur Wenn das Plugin für aktuellen Nutzer erlaubt ist:
            if ($BE_USER->checkAuthMode('tt_content','',$extKeyPlugin,'explicitDeny')!==FALSE) {
                    $LL = $this->includeLocalLang();
        
                    $wizardItems['plugins_'.$this->feExtId] = array(
                    'icon' => t3lib_extMgm::extRelPath($this->extKey).$iconFile,
                    'title' => $LANG->getLLL('wizard_title_pi1', $LL),
                    'description' => $LANG->getLLL('wizard_description_pi1', $LL),
                    'params' => '&defVals[tt_content][CType]=list&defVals[tt_content][list_type]='.$extKeyPlugin);
            }

            return $wizardItems;
        }

    /**
     * Gets the extension language array
     *
     * @return    array        the extension language array
     */
        function includeLocalLang() {
            include(t3lib_extMgm::extPath($this->extKey).'locallang_db.php');
            return $LOCAL_LANG;
        }
    }


   if (defined("TYPO3_MODE") &&
$TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/danp_courses/pi1/class.tx_danpcourses_pi1_wizicon.php"]) {        include_once($TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/danp_courses/pi1/class.tx_danpcourses_pi1_wizicon.php"]);
  }

?>

 

 

 

blog comments powered by Disqus
blogroll