Ergebnis 1 bis 4 von 4

Thema: Probleme mit Palette und Datenbank-Tabellen

  1. #1
    Contao-Nutzer Avatar von Gausi
    Registriert seit
    04.09.2009.
    Beiträge
    149

    Standard Probleme mit Palette und Datenbank-Tabellen

    Ich versuche, meine Kalender-Erweiterung in ein Contao-4-Bundle umzubauen. Code liegt auf Github, Packagist ist eingerichtet, wird auch im Contao-Manager als Paket gefunden. Edit: Ich nutze die Managed-Edition, was anderes gibt es ja anscheinend auch nicht mehr.

    Ein Problem habe ich jetzt erstmal mit dem DCA-Gedöns. Die Dateien sind dort zu finden
    https://github.com/DanielGausi/Conta...ces/contao/dca

    Problem 1.) in der tl_module.php funktionieren nur die "neuen" Paletten. Die anderen Module stehen zwar zur Auswahl, können aber nicht wirklich ausgewählt werden - die Auswahl springt dann zurück auf den vorher ausgewählten Modultyp.

    Das funktioniert, wird also im Backend angezeigt, wenn ich ein solches Modul erstellen will
    PHP-Code:
     $GLOBALS['TL_DCA']['tl_module']['palettes']['EventEditor']         = '{title_legend},name,headline,type;{redirect_legend},jumpTo;{config_legend},cal_calendar,caledit_mandatoryfields, caledit_allowPublish,caledit_allowDelete,caledit_allowClone,caledit_sendMail;{template_legend}, caledit_template,caledit_delete_template, caledit_clone_template, caledit_tinMCEtemplate, caledit_alternateCSSLabel,caledit_usePredefinedCss;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID,space'
    Das jedoch nicht, hier möchte ich die Palette vom normalen Kalender-Modul um ein paar Felder erweitern (aber in einem gesondertem Modul haben, also nicht das normale Kalender-Modul "überschreiben")
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_module']['palettes']['calendarEdit'] =  $GLOBALS['TL_DCA']['tl_module']['palettes']['calendar'].';{edit_legend},caledit_add_jumpTo; {edit_holidays},cal_holidayCalendar' 
    (Der Zeilenumbruch ist hier im Forum ggf. etwas blöd.)

    Problem 2.) Über die Dateien tl_calendar.php und tl_calendar_events.php möchte ich diesen Tabellen ein paar weitere Felder hinzufügen. Davon lässt sich das InstallTool aber nicht beieindrucken - die Felder werden in der Datenbank nicht angelegt, und die Paletten im Backend werden auch nicht angepasst.

    Wo liegt der Fehler? Habe auch schon ein paar andere Kalender-Erweiterungen angeschaut, und sehe da keinen Unterschied zu meinem Vorgehen...
    All of this has happened before - but the question remains: Does all of this have to happen again?

  2. #2
    Contao-Nutzer Avatar von Gausi
    Registriert seit
    04.09.2009.
    Beiträge
    149

    Standard

    Ich hole das nochmal hoch, weil ich hier einfach nicht weiterkomme. Ich programmiere ja an und für sich gerne, und ich suche auch gerne Fehler. Aber ich sehe hier absolut keinen Ansatzpunkt, wo ich weitersuchen kann.

    Ich habe die gleiche Ordner/Datei-Struktur wie in calendar-extended-bundle, was in einigen Anleitungen erwähnt wird.

    Ich habe also unter anderem eine Datei

    Calendar-Editor\src\Resources\contao\dca\tl_calendar.php
    Auf dem Server dann nach der Installation des Bundles eine Datei
    vendor/danielgausi/contao-calendareditor-bundle/src/Resources/contao/dca/tl_calendar.php

    Diese Datei sieht so aus - ich poste sie jetzt mal komplett

    Was ich damit erreichen will ist, dass ein "Kalender", also das Contao-Konstrukt, in dem Events eingetragen werden, über das Frontend bearbeitet werden kann. Das regelt die Checkbox bzw. die boolsche Variable allowEdit. Aktiviert man die Checkbox, sollen ein paar weitere Optionen erscheinen (das läuft über den neuen Eintrag bei subpalettes), in dem die Bearbeitungsoptionen weiter verfeinert werden können.

    Frage: Warum erscheint das nicht im Backend? Warum schlägt mir das Installtool keine Änderungen an der Datenbank vor? Muss ich diese tl_calender.php noch irgendwo anders "registrieren" oder sowas, damit das Symfony-Framework das erkennt?

    Was muss ich tun, damit das läuft? Oder anders: Wo kann ich mit der Fehlersuche weitermachen, und wie kann ich die ggf. finden und beheben? Ich sehe in meinem Code keine signifikanten Abweichungen zu dem Code in anderen Kalender-Erweiterungen.


    PHP-Code:
    <?php 

    /**
     * Contao Open Source CMS
     * Copyright (C) 2005-2010 Leo Feyer
      *
     * @copyright  Daniel Gaussmann 2011-2018
     * @author     Daniel Gaussmann <mail@gausi.de> 
     * @package    CalendarEditor
     * @license    GNU/LGPL
     */


    /**
     * Add palettes to tl_calendar
     */

    // Am Ende der Palette einen Eintrag anhängen
    $GLOBALS['TL_DCA']['tl_calendar']['palettes']['default'] .= ';{edit_legend},allowEdit';

    $GLOBALS['TL_DCA']['tl_calendar']['palettes']['__selector__'][] = 'allowEdit';
    $GLOBALS['TL_DCA']['tl_calendar']['subpalettes']['allowEdit']='caledit_onlyFuture, caledit_jumpTo, caledit_loginRequired, caledit_onlyUser;';



    $GLOBALS['TL_DCA']['tl_calendar']['fields']['allowEdit'] = array
    (
        
    'label'                   => &$GLOBALS['TL_LANG']['tl_calendar']['allowEdit'],
        
    'exclude'                 => true,
        
    'filter'                  => true,
        
    'inputType'               => 'checkbox',
        
    'eval'                    => array('submitOnChange'=>true),
        
    'sql'                      => "char(1) NOT NULL default ''"
    );

    $GLOBALS['TL_DCA']['tl_calendar']['fields']['caledit_onlyFuture'] = array
    (
        
    'label'                   => &$GLOBALS['TL_LANG']['tl_calendar']['caledit_onlyFuture'],
        
    'inputType'               => 'checkbox',
        
    'eval'                    => array('default'=>'true'),
        
    'sql'                      => "char(1) NOT NULL default ''"
    );

    $GLOBALS['TL_DCA']['tl_calendar']['fields']['caledit_jumpTo'] = array
    (
        
    'label'                   => &$GLOBALS['TL_LANG']['tl_calendar']['caledit_jumpTo'],
        
    'exclude'                 => true,
        
    'inputType'               => 'pageTree',
        
    'eval'                    => array('fieldType'=>'radio'),
        
    'sql'                      => "int(10) unsigned NOT NULL default '0'"
    );

    $GLOBALS['TL_DCA']['tl_calendar']['fields']['caledit_loginRequired'] = array
    (
        
    'label'                   => &$GLOBALS['TL_LANG']['tl_calendar']['caledit_loginRequired'],
        
    'inputType'               => 'checkbox',
        
    'eval'                    => array('default'=>'true'),
        
    'sql'                      => "char(1) NOT NULL default '1'"
    );
    $GLOBALS['TL_DCA']['tl_calendar']['fields']['caledit_onlyUser'] = array
    (
        
    'label'                   => &$GLOBALS['TL_LANG']['tl_calendar']['caledit_onlyUser'],
        
    'exclude'                 => true,
        
    'inputType'               => 'checkbox',
        
    'sql'                      => "char(1) NOT NULL default ''"
    );
    All of this has happened before - but the question remains: Does all of this have to happen again?

  3. #3
    Alter Contao-Hase Avatar von kmielke
    Registriert seit
    21.06.2009.
    Beiträge
    1.173

    Standard

    Hi Gausi,

    wie sehen denn die anderen Dateien aus?

    vendor/<bundle>/src/<bundle>Bundle.php

    und

    vendor/<bundle>/src/ContaoManager/Plugin.php, wenn du die ManagedEdition nutzt.

    Gruß Kester
    Gruß Kester

    Kein Support via PN ohne vorherige Absprache.

  4. #4
    Contao-Nutzer Avatar von Gausi
    Registriert seit
    04.09.2009.
    Beiträge
    149

    Standard

    src/DanielGausiCalendarEditorBundle.php
    PHP-Code:
    <?php
    namespace DanielGausi\CalendarEditorBundle;

    use 
    Symfony\Component\HttpKernel\Bundle\Bundle;


    class 
    DanielGausiCalendarEditorBundle extends Bundle
    {
    }
    Plugin.php
    PHP-Code:
    <?php

    namespace DanielGausi\CalendarEditorBundle\ContaoManager;

    use 
    DanielGausi\CalendarEditorBundle\CalendarEditorBundle;

    use 
    Contao\ManagerPlugin\Bundle\Config\BundleConfig;
    use 
    Contao\ManagerPlugin\Bundle\BundlePluginInterface;
    use 
    Contao\ManagerPlugin\Bundle\Parser\ParserInterface;

    class 
    Plugin implements BundlePluginInterface
    {
        
    /**
         * {@inheritdoc}
         */
        
    public function getBundles(ParserInterface $parser)
        {
            return [
                
    BundleConfig::create('DanielGausi\CalendarEditorBundle\DanielGausiCalendarEditorBundle')
                    ->
    setLoadAfter(
                        [
                            
    'Contao\CoreBundle\ContaoCoreBundle',
                            
    'Contao\CalendarBundle\ContaoCalendarBundle'
                        
    ]
                    )
            ];
        }
    }
    In der Plugin.php ist (relativ) neu die Zeile "'Contao\CalendarBundle\ContaoCalendarBundle'" dazu gekommen. Ich vermute, dass es am Ende daran lag. Cache hatte ich danach aber eigentlich gelöscht.

    Aber egal, fürs erste. Habe auf dem Testserver ganz von vorne angefangen (inklusive einer neuen Subdomain), und jetzt scheint es zu laufen. Weiß der Geier, warum.
    All of this has happened before - but the question remains: Does all of this have to happen again?

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •