+ Antworten
Ergebnis 1 bis 7 von 7

Thema: Controller redirect/setRedirect target

  1. #1
    War schon öfter hier
    Registriert seit
    28.11.2008
    Beiträge
    149
    Bedankte sich
    22
    Erhielt 4 Danksagungen
    in 4 Beiträgen

    Standard Controller redirect/setRedirect target

    Hallo,

    in einem Task eines Controllers bearbeite ich die Daten eines Formulars, das ich zuvor in einem modalen Fester geöffnet habe. Am Ende der Bearbeitung möchte ich auf das Vaterfenster zurückkehren. Leider öffnet sich der Inhalt nach einem

    $this->redirect($link);

    weiterhin im modalen Fester. HTML lehrt ja, dass mit der Angabe von target="_parent" prinzipiell möglich ist, in den Frames einen Schritt nach außen zu gehen.

    Ist dies bei einem Redirect nicht möglich? Ist dies vielleicht auch einfach nicht in der Joomla API durchgezogen? Kann ich evtl. den Link um einen Parameter erweitern?

    Danke J.

  2. #2
    Hat hier eine Zweitwohnung Avatar von JoomDesign
    Registriert seit
    19.03.2006
    Ort
    Berlin, Deutschland
    Beiträge
    1.927
    Bedankte sich
    269
    Erhielt 594 Danksagungen
    in 511 Beiträgen

    Standard

    Kleiner Denkanstoss:
    ...das Modal-Fenster wird mit JavaScript aufgerufen - also muss es mit JavaScript wieder geschlossen werden.

    Schau dir die com_config (admin) von J! genau an.
    Dort wird im View eine JS Function genutzt die das aktuelle Modal nach ca. 700 oder 900 ms schliesst.

  3. #3
    War schon öfter hier
    Registriert seit
    28.11.2008
    Beiträge
    149
    Bedankte sich
    22
    Erhielt 4 Danksagungen
    in 4 Beiträgen

    Standard

    Zitat Zitat von joom_mob-i-co Beitrag anzeigen
    Kleiner Denkanstoss:
    ...das Modal-Fenster wird mit JavaScript aufgerufen - also muss es mit JavaScript wieder geschlossen werden.
    Klingt plausibel. Vielleicht reicht ja eine Art onclick="window.cLose();return true" ??
    Ich finde bloß das Fenster im DOM nicht, die zugrunde liegende JS-Bibliothek gibt es leider nur als packed-Version.

    Zitat Zitat von joom_mob-i-co Beitrag anzeigen
    Schau dir die com_config (admin) von J! genau an.
    Dort wird im View eine JS Function genutzt die das aktuelle Modal nach ca. 700 oder 900 ms schliesst.
    Du meinst also administrator/components/com_config/Views ... ?

    Wo genau?

    EDIT: gefunden ...

    <button type="button" onclick="window.parent.document.getElementById('sb ox-window').close();">
    <?php echo JText::_( 'Cancel' );?></button>


    Danke J.


    EDIT2:

    Leider komme ich an dieser Stelle nicht weiter. Wie kann man das Fenster dereferenzieren, wenn man es nicht im DOM findet? Laut Implementierung ist es eine lokale Variable in der window.addEvent('domready', function() ..
    Geändert von joomlix (17.11.2010 um 11:28 Uhr)

  4. #4
    Hat hier eine Zweitwohnung Avatar von JoomDesign
    Registriert seit
    19.03.2006
    Ort
    Berlin, Deutschland
    Beiträge
    1.927
    Bedankte sich
    269
    Erhielt 594 Danksagungen
    in 511 Beiträgen

    Standard

    Ich verstehe zwar die letzten 2 Zeilen nicht wirklich aber wenn Du mit :

    <a href="index.php?option=com_your_com&amp;view=your_ view" rel="{handler: 'iframe', size: {x: 860, y: 520}}" class="modal">LINKTEXT</a>
    ein Modal (von irgendwo) aufrufst und mit
    onclick="window.parent.document.getElementById('sb ox-window').close();"
    wieder schliessen willst geht das!

    Du hattest bei 'sbox-window' ein Leerzeichen ('sb ox-window') drin.
    (War aber auch wahrscheinlich das Forum) Evtl. lags daran.

    //edit: Wenn du es nicht anders benennst - heisst das immer 'sbox-window'.
    //edit2:
    onclick="submitbutton('storeParams'); window.top.setTimeout('window.parent.document.getE lementById(\'sbox-window\').close()', 700);"
    ruft dann vorher noch die Funktion 'storeParams' aus deinem Controller (wenn vorhanden) auf.
    Die JS-Funktion 'submitbutton' wird auch bei der Toolbar verwendet und befindet sich in /includes/js/joomla.javascript.js
    Geändert von JoomDesign (17.11.2010 um 12:46 Uhr)

  5. Erhielt Danksagungen von:


  6. #5
    War schon öfter hier
    Registriert seit
    28.11.2008
    Beiträge
    149
    Bedankte sich
    22
    Erhielt 4 Danksagungen
    in 4 Beiträgen

    Standard

    Danke für Deine ausführliche Antwort.
    Es ist, und hierin liegt das Missverständnis, nicht das Joomla-eigene modale Fenster, sondern ein Replacement dafür aus einem Template.

    EDIT: Ich habe inzwischen gelöst, indem ich die Variable im Template global gemacht habe, dazu musste ich zwar das Template ändern, aber was soll's?
    Danke!!!

    EDIT2: Den Sinn des Timeouts habe ich noch nicht ganz verstanden. Ist dieser notwendig, zum die Daten für die Übergabe noch kurz zu halten?
    Geändert von joomlix (17.11.2010 um 13:27 Uhr)

  7. #6
    Hat hier eine Zweitwohnung Avatar von JoomDesign
    Registriert seit
    19.03.2006
    Ort
    Berlin, Deutschland
    Beiträge
    1.927
    Bedankte sich
    269
    Erhielt 594 Danksagungen
    in 511 Beiträgen

    Standard

    Zitat Zitat von joomlix Beitrag anzeigen
    EDIT2: Den Sinn des Timeouts habe ich noch nicht ganz verstanden. Ist dieser notwendig, zum die Daten für die Übergabe noch kurz zu halten?
    Ich glaube das ist unwichtig.
    Dient nur der Benutzerfreundlichkeit.
    Der andere Task (save etc.) wird vorher ja im Hintergrund eh aufgerufen wurde und damit auch ausgeführt.

    Wenn dieser (1.) Task nämlich länger dauert dann sieht man im Browser auch noch das Daten übertragen werden.

  8. #7
    War schon öfter hier
    Registriert seit
    28.11.2008
    Beiträge
    149
    Bedankte sich
    22
    Erhielt 4 Danksagungen
    in 4 Beiträgen

    Standard

    Die onClick-Anweisung sieht jetzt wie folgt aus:

    window.top.setTimeout('location.reload(true);',20) ;document.getElementById('ttt').submit();window.pa rent.my_modal_box.close();return true

    ttt ist die aktuelle Form, die auch richtig submittiert wird. Allerdings funktioniert der Redirect nicht mehr so, dass die Message dargestellt wird.

    Ich nehme mal an, dass hier ein Problem vorliegt, dass der Redirect noch auf's alte Fenster abziehlt, das Fensterhandle aber ungültig wird, argl.

+ Antworten

Lesezeichen

Berechtigungen

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