Ergebnis 1 bis 4 von 4

Thema: Page Reload nach Schließen eines Popups im BE

  1. #1
    Contao-Fan
    Registriert seit
    02.09.2009.
    Beiträge
    307

    Frage Page Reload nach Schließen eines Popups im BE

    Hallo,

    ich entwickle gerade ein eigenes Modul und verwende dabei die Popup-Möglichkeit von Contao (simple modal), um Daten einer fremden Tabelle pflegen zu können, ohne das eigentliche Formular verlassen zu müssen.

    PHP-Code:
    return ' <a href="contao/main.php?do=meinModul&amp;popup=1&amp;&amp;nb=1&amp;rt=' REQUEST_TOKEN '" title="Auswahlmöglichkeiten bearbeiten" style="padding-left:3px" onclick="Backend.openModalIframe({\'width\':768,\'title\':\'Optionen bearbeiten\',\'url\':this.href,\'id\':\'' $dc->field '\'});return false">' Image::getHtml('alias.gif'$GLOBALS['TL_LANG']['tl_content']['editalias'][0], 'style="vertical-align:top"') . '</a>'
    Da es sich bei den so gepflegten Daten um neue Auswahlmöglichkeiten in Selects oder Checkboxen des aufrufenden Formulars handelt, wäre es toll, wenn die Seite nach dem Schließen des Popups automatisch neu geladen würde, damit die neuen Auswahlmöglichkeiten im Formular dann auch sofort verfügbar sind.

    Leider habe ich nicht finden können, wie ich das bewerkstelligen könnte. Hat das jemand schon einmal so umgesetzt und kann mir einen Tipp geben?

    Danke und viele Grüße, juju

  2. #2
    Contao-Fan Avatar von Arno
    Registriert seit
    11.12.2009.
    Ort
    Potsdam-Babelsberg
    Beiträge
    290

    Standard

    Hey juju,

    ich baue auch gerade an so etwas herum. So weit wie du bin ich leider noch nicht, vielleicht kannst du mir helfen?
    Ich bekomme zwar mit openModalIframe ein Fenster auf, in dem dann auch das erscheint was ich will .
    Ich verstehe aber nicht: Wie bekomme ich den meine Auswahl (Checkboxen in meinem Fall) bestätigt und die Werte an das Hauptfenster zurück geschickt?

    Mir fehlen die normalerweise vorhandenen Buttons "Abbrechen" und "Speichern"... wie hast du das gemacht?

    Zu der Reload-Problematik:
    Könnte der Aufruf von
    Code:
     \Controller::reload();
    nach dem schließen des Modal-Fensters helfen? Sollte gehen. Wo man den Aufruf allerdings einbaut weiß ich natürlich bei meinem jetzigen Stand auch nicht. Ich vermute aber, dass ich den Reload auch brauchen werde...

    Gruß
    Arno

  3. #3
    Contao-Fan
    Registriert seit
    02.09.2009.
    Beiträge
    307

    Standard

    Hi Arno,

    da kann ich Dir vermutlich auch nicht helfen, da ich wie beschrieben keine Rückgabewerte benötige. Ich nutze das Popup nur um Daten einer fremden Tabelle zu pflegen und hätte diese Daten (Optionen) dann gern sofort in meinen Selects und Checkkboxen zur Verfügung, ohne selbst erst speichern zu müssen.

    Ich verstehe allerdings Deine Beschreibung auch nicht ganz. Warum brauchst Du den Umweg über das Popup? Willst Du so etwas ähnliches machen wie beim pagePicker oder bei Dateifeldern wie z.B. der Bildauswahl? Dann würde ich mir die tl_content (dca) mal ansehen, dort gibt es z.B. den pagePicker. Vielleicht hilft Dir das ja weiter. (Stichwort: Backend.openModalSelector)

    Wenn Du das Popup nicht benötigst, könntest Du das über eine einfache Mehrfachauswalhl (checkboox menü) umsetzen, wie z.B. hier:
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_content']['fields']['drivingLicence'] = array
            (
                
    'label'                   => &$GLOBALS['TL_LANG']['tl_content']['drivingLicence'],
                
    'exclude'                 => true,
                
    'inputType'               => 'checkbox',            
                
    'foreignKey'              => 'foreignTable.title',
                
    'eval'                    => array('multiple'=>true)
                
    'sql'                     => "blob NULL",
                
    'relation'                => array('type'=>'hasMany''load'=>'lazy')
                
            ); 
    Wäre das eine Lösung für Dich?

    Viele Grüße,
    juju

  4. #4
    Contao-Fan Avatar von Arno
    Registriert seit
    11.12.2009.
    Ort
    Potsdam-Babelsberg
    Beiträge
    290

    Standard

    Hey juju,

    ich mache den Umweg über das Popup aus folgendem Grund:
    Ich baue ein Modul bei dem übergreifend einzelne Beiträge aus allen FAQ-Kategorien zu einer individuellen Liste zusammengestellt werden können.
    Im Popup möchte ich in einer Baumdarstellung mit zwei Ebenen die FAQ-Kategorien sowie deren Einträge angezeigt bekommen, mit Checkboxen zur Auswahl der Einträge.
    Beim Klick auf den Button "Anwenden" soll dann die Auswahl der Einträge zurück ins Hauptfenster gegeben werden, damit dort eine individuelle Sortierung (wie z.B. bei der Auswahl und Einbindung der externen CSS-Stylesheets bei den Layout-Einstellungen) vorgenommen werden kann.

    Und das alles habe ich inzwischen auch schon hinbekommen!
    Entsprechend wird bei mir auch die Seite aktualisiert, denn die ausgewählten FAQ-Einträge bekomme ich schon in einer sortierbaren Liste angezeigt.
    Neu geladen wird die Seite allerdings nicht wirklich, sondern - und da habe ich einfach das Vorgehen von Contao beim Filepicker übernommen - der Seiteninhalt wird entsprechend der Auswahl im Popup per Javascript aktualisiert.

    Wenn du dir in der Datei "assets/contao/js/core-uncompressed.js" die Funktion "openModalSelector" mal anschaust:
    Auf den Zeilen 980 und 981 passiert das, meiner Meinung nach. Dort wird ja der onSuccess-Callback für den "Anwenden"-Button definiert und da wird das HTML der Ausgangsseite dann aktualisiert.

    In meinem Fall musste ich diese Javascript-Funktion durch eine eigene Variante ersetzen.
    Bei dir könnte das vielleicht auch helfen: Auf Zeile 982 wird ja z.B. per Ajax-Request diese Box "Die Daten werden geladen...", die man kurz sieht, wenn man das Popup mit dem Anwenden-Button schließt, wieder versteckt. Ich könnte mir vorstellen, dass du an der Stelle mit einem eigenen Ajax-Request den Aufruf von " \Controller::reload();" abfeuern könntest, was dann die Seite neu laden sollte. Das setzt aber natürlich voraus, dass die von dir gemachte Auswahl im Popup bereits dort dynamisch per Javascript und Ajax gespeichert wurde. Denn sonst geht dir die Auswahl ja beim Schließen des Popups verloren...

    Vielleicht helfen diese Überlegungen ja weiter...

    Viele Grüße!

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
  •