Vorschau der Signatur

PhoenixDH

Erfahrenes Mitglied
Ich will in meinem Board die Signatur mit einer Vorschaufunktion versehen. Und zwar soll dabei nicht die alte Signatur angezeigt werden, sondern die die man gerade eingegeben hat. D.h. man öffnet sein Profil und ändert die Signatur, darunter soll ein Vorschau Button sein, mit welchem sich ein neues Fenster öffnet in dem die Signatur dann zu sehen ist.

So sieht der Quellcode des Textfeldes für die Signatur aus:
Code:
          <tr class="cellA"> 
            <td width="20%">$style[stdfont]Signatur$style[stdfontend]</td>
            <td> 
              <textarea class="tbtextarea" name="user[usersignature]" rows="7" cols="40">$user[usersignature]</textarea>
        $style[smallfont]<br />Eine Signatur wird unter jedem von Ihnen erstellten Beitrag 
        angef&uuml;gt.<br />
        Maximal <strong>$config[sig_maxlines]</strong> Zeilen, jedoch nicht mehr als <strong>$config[sig_maxlen]</strong> Zeichen.
        ThWboard-Code-Tags werden nicht ber&uuml;cksichtigt.$style[smallfontend]</td>
          </tr>

Wie mache ich jetzt das, das der aktuelle Signaturtext an ein neues Fenster übergeben wird ?
Ich habe von Javascript leider keine Ahnung ! Aber für eure Hilfe wäre ich euch dankbar !
 
Sende das Formular an das Popup... dort kannst du dann mit PHP den eingegebenen Text wie gewohnt parsen und ausgeben.

Dazu müsstest du mit JS vorübergehend die action und das target des Formulars ändern....
als "action" die URL des Vorschau-PHP-Skriptes, als "target" den Namen des Popups.

Theoretisch könnest du den Inhalt des Textfeldes auch mit JS parsen und per write() in das Popup schreiben... ob das sinnvoll ist, hängt davon ab, wie umfangreich die möglichen BB-Codes sind, die in der Signatur verwendet werden dürfen.
 
Aha, das sieht doch schonmal gut aus, leider wie gesagt, habe ich absolut keine Ahnung von Javascript, wie müsste denn die Syntax aussehen ?
 
Also ich hab mich da jetzt mal rangesetzt !
Ich habe nur ein Problem, das ist wie ich den aktuellen Inhalt der Textbox übermittle an das neue Fenster:

Das ist die Funktion:
Code:
<script type="text/javascript">
function open_sig_prev() {		
PrevFenster = window.open("sig_prev.php", "Vorschau der Signatur", "width=600,height=200,scrollbars");
PrevFenster.focus();
}					
</script>

damit wird sie aufgerufen:
Code:
<input type="button" value="Vorschau" class="tbinput" onclick="open_sig_prev();">

und so sieht das Textfeld aus:
Code:
<textarea class="tbtextarea" name="user[usersignature]" rows="7" cols="40">$user[usersignature]</textarea>

Wie muss ich das jetzt machen das der Inhalt an das neue Fenster sig_prev.php übermittelt wird ?
 
Wie beschrieben... kurzzeitig action und target ändern:
Code:
function open_sig_prev(objButton) 
{ 
PrevFenster = window.open("about:blank", "Vorschau", "width=600,height=200,scrollbars=yes"); 
PrevFenster.focus(); 
objButton.form.action='sig_prev.php';//action ändern
objButton.form.target='Vorschau';//target ändern(2.Parameter beim open())
objButton.form.submit();//formular senden
objButton.form.action='sig.php';//action zurücksetzen(ggf. anpassen)
objButton.form.target='_self';//target zurücksetzen
}

Aufruf per onclick="open_sig_prev(this);"
 
Hab das jetzt getestet, das neue Fenster wird geöffnet, inclusive des richtigen Inhalts !
Nur leider wird noch ein Fenster geöffnet das leer ist !

Woran liegt das ?

----------

Nochmal edit:

ist nur beim Mozilla so das noch ein 2. Fenster geöffnet wird, im i.e geht es !
 
Zuletzt bearbeitet:
Mmmh, könnte sein, dass es dem Firefox zu schnell geht... wenn das Formular gesendet wird, bevor das Popup bekannt ist., würde das passieren.(meiner hat damit keine Probleme)

Workarounds:
  • du könntest alles , was nach der Zeile mit focus() steht, zeitverzögert ausführen.
  • wenn es dir nicht auf die Grösse des neuen Fensters ankommt, könntest du das open() ... focus() auch komplett herausnehmen.
 

Neue Beiträge

Zurück