Catalog // Frontend Bearbeitung // Version

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • ahhhhhhhhhh
    Contao-Nutzer
    • 20.02.2012
    • 12

    #1

    Catalog // Frontend Bearbeitung // Version

    Hallo,

    ich hab folgendes Problem:

    Ich habe einen Katalog in dem FE-Benutzer eigene Einträge bearbeiten können. Ich möchte aber nicht das die Benutzer live Daten bearbeiten, sondern ein Dublikat angelegt wird das ich dann über eine Funktion mit dem Live-Eintrag tauschen kann. Editieren funktioniert, das Dublikat kann ich auch über einen Hook in catalogFrontendUpdate erzeugen. Problem ist jetzt noch das meine Live-Daten geändert werden. Klar, ich mach ja offiziell ein Update. Jetzt könnte ich die Zeilen

    PHP-Code:
    objUpdatedItem = $this->Database->prepare('UPDATE '.$this->strTable.' %s WHERE id=?')
                    ->set($arrRecordData)
                    ->execute($this->objActiveRecord->id); 
    
    aus der itemUpdate Funktion rausnehmen. Möchte aber den Core von Catalog nicht anfassen.

    Hat jmd. eine Idee wie ich das Problem lösen kann oder vielleicht generell einen anderen Lösungsansatz?

    Vielen Dank.

    Ahhhhhhhhh
  • ahhhhhhhhhh
    Contao-Nutzer
    • 20.02.2012
    • 12

    #2
    Kleines Update

    Habe bisher leider noch keine Lösung dafür gefunden, aber ich Frage mich ob ich die Methode nicht einfach überschreiben kann.

    Allerdings habe ich dabei ein Problem mit der Registrierung. Laut http://contao.org/de/overriding-class-methods.html geschieht das in der /meinmodul/config/config.php

    PHP-Code:
    $GLOBALS['FE_MOD']['navigationMenu']['navigation'] = 'ModuleMyNavigation'; 
    
    Ich versteh den Aufbau hierbei nicht so ganz.

    PHP-Code:
    $GLOBALS['FE_MOD']['ModuleCatalogEdit']['catalogFrontendUpdate'] = 'ModuleCustomCatalog'; 
    
    funktioniert nicht.

    Und in meinem Modul
    PHP-Code:
    class ModuleCustomCatalog extends DC_DynamicTableEdit 
    
    extende ich DC_DynamicTableEdit? oder was anderes.

    Ihr merkt schon, meine Verwirrung ist groß :-/

    Kommentar

    • ahhhhhhhhhh
      Contao-Nutzer
      • 20.02.2012
      • 12

      #3
      Nochmal kleines Update

      Es läuft jetzt solala.

      Da es für $this->objDCEdit keinen getter/setter gibt musste ich die compile in meine Klasse holen. Ebenso die handleOnSaveCallbacks, da die wieder privat ist ... jetzt funktioniert es, aber das ist echt ein monkey patch.

      Hat das wirklich noch niemand vor mir hier versucht?! Oder wieso bekomm ich nur Views und keine Anworten

      Kommentar

      • Tim G
        Contao-Urgestein
        • 13.02.2010
        • 2212

        #4
        Ist einfach kein triviales Thema.
        Ich stecke nicht so tief drin wie du, aber vielleicht ein interessanter Zusatzansatz.

        Das überschreiben der Methode ist erstmal nichts falsches. Besser ist richtiges Vererben, weil beides updatesicher ist - meintest du ja selbst.

        Ich würde es, glaube ich, über zwei Hooks probieren.
        1. wie du, catalogFrontendUpdate, das Duplikat erzeugen und im gleichen Schritt von dem alten Datensatz eine temp. Kopie in eine Globale, oder Session Variable legen - nur damit du daraus später den vom Katalog geupdaten Eintrag wieder zurücksetzen kannst - id etc. hast du ja.
        2. hier brauchst du einfach nur einen Hook, der sehr spät getriggert wird. Ich nehme dafür gern den generatePageHook oder den parseFrontendTemplate Hook (fokus auf das fe_page Template). Mit denen kannst du sicher sein, dass der Katalog bereits geschrieben hat.
        In diesem Hook einfach den gespeicherten Datensatz wieder in den Katalog zurückführen.

        Sollte klappen. Good luck
        http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

        Kommentar

        Lädt...