Bestätigungsbox

Moin,

da bin ich schon wieder mal mit einer Frage.

Wie geht man es an, wenn man z.B. vor einer Löschaktion
eine "Bestätigungsbox" erscheinen lassen will?

Man müßte doch das Hauptscript irgendwie verlassen
und die Box ausgeben. Dann müßte man mit dem Ergebnis (ja/nein)
das Hauptscript weiterlaufen lassen - oder?

MfG
Heiko
Heiko Rompel [ So, 26 März 2006 12:07 ] [ ID #1246861 ]

Re: Bestätigungsbox

Heiko Rompel wrote:
> Moin,
>
> da bin ich schon wieder mal mit einer Frage.
>
> Wie geht man es an, wenn man z.B. vor einer Löschaktion
> eine "Bestätigungsbox" erscheinen lassen will?
>
> Man müßte doch das Hauptscript irgendwie verlassen
> und die Box ausgeben. Dann müßte man mit dem Ergebnis (ja/nein)
> das Hauptscript weiterlaufen lassen - oder?

Aufgrund vorheriger Postings Deinerseits gehe ich
davon aus, dass Deine Frage sich auf eine Web-Anwendung
bezieht (von Standalone-GUIs habe ich eh keine Ahnung).
Dort ist die Ausgabe einer Box Sache des Clients.
Wenn Du damit leben kannst, Clients ohne Javascript
auf den "Luxus" der Bestätigung verzichten können,
dann solltest Du das Web nach den Stichworten
"javascript" und "confirm" abgrasen.

Damit sind wir off-topic und ich darf meinen
Vorschlag sicher ungetestet anbrigen:

<a href="/cgi-bin/loeschMich.pl"
onClick="return(confirm('Wirklich?'))"
>Loeschen!</a>

T.
Tony Muler [ So, 26 März 2006 13:48 ] [ ID #1246862 ]

Re: Bestätigungsbox

"Heiko Rompel" <noreply [at] heiko-rompel.de> writes:

> Moin,
>
> da bin ich schon wieder mal mit einer Frage.
>
> Wie geht man es an, wenn man z.B. vor einer Löschaktion
> eine "Bestätigungsbox" erscheinen lassen will?
>
> Man müßte doch das Hauptscript irgendwie verlassen
> und die Box ausgeben. Dann müßte man mit dem Ergebnis (ja/nein)
> das Hauptscript weiterlaufen lassen - oder?
>

Ist dir das Toolkit egal? Hier eine Lösung mit Tk:

if (bestaetigung()) {
print "weitermachen...\n";
} else {
print "dann nicht\n";
}

sub bestaetigung {
use Tk;
my $mw = tkinit;
$mw->withdraw;
return lc $mw->messageBox(-message => "Tatsächlich?", -type => "YesNo") eq 'yes';
}
__END__

Gruß,
Slaven

--
Slaven Rezic - slaven <at> rezic <dot> de

sf-upload: make batch releases on SourceForge
http://sf-upload.sf.net
Slaven Rezic [ So, 26 März 2006 19:57 ] [ ID #1246864 ]

Re: Bestätigungsbox

Hallo,

"Slaven Rezic" schrieb:

> Ist dir das Toolkit egal?

Welches Toolkit?

> Hier eine Lösung mit Tk:
> [...]

Sieht einfach aus.

MfG
Heiko
Heiko Rompel [ Mo, 27 März 2006 08:03 ] [ ID #1248606 ]

Re: Re: Bestätigungsbox

"Heiko Rompel" <noreply [at] heiko-rompel.de> writes:

> Hallo,
>
> "Slaven Rezic" schrieb:
>
> > Ist dir das Toolkit egal?
>
> Welches Toolkit?
>

Mit Perl kannst du auf eine grafische Benutzeroberfläche nicht direkt
zugreifen (bzw. nicht trivial). Man braucht ein zusätzliches Modul,
das oft "GUI-Toolkit" oder ähnlich genannt wird. Tk ist ein Beispiel,
weitere Beispiele sind Gtk, Wx, Win32::GUI, Prima, PerlQt usw.

Gruß,
Slaven

--
Slaven Rezic - slaven <at> rezic <dot> de

Start a WWW browser - OS independent:
http://user.cs.tu-berlin.de/~eserte/src/perl/WWWBrowser/
Slaven Rezic [ Mo, 27 März 2006 22:53 ] [ ID #1248616 ]

Re: Bestätigungsbox

Heiko Rompel wrote:
> Hallo,
>
> "Slaven Rezic" schrieb:
>
>> Ist dir das Toolkit egal?
>
>
> Welches Toolkit?

LOL. Siehste, und ich sach doch es geht um Web.

t.
Tony Muler [ Di, 28 März 2006 19:32 ] [ ID #1252070 ]

Re: Bestätigungsbox

Moin,

"Tony Muler" schrieb:

> Aufgrund vorheriger Postings Deinerseits gehe ich
> davon aus, dass Deine Frage sich auf eine Web-Anwendung
> bezieht

Ja.

> (von Standalone-GUIs habe ich eh keine Ahnung).

Und ich vergesse immer, das man mit Perl auch sowas machen kann.

> Dort ist die Ausgabe einer Box Sache des Clients.
> Wenn Du damit leben kannst, Clients ohne Javascript
> auf den "Luxus" der Bestätigung verzichten können,
> dann solltest Du das Web nach den Stichworten
> "javascript" und "confirm" abgrasen.

Das ich das mit JavaScript hinbekomme weiß ich,
aber es soll ohne JavaScript laufen.

> Damit sind wir off-topic und ich darf meinen
> Vorschlag sicher ungetestet anbrigen:
>
> <a href="/cgi-bin/loeschMich.pl"
> onClick="return(confirm('Wirklich?'))"
> >Loeschen!</a>

Da ich jetzt wieder einigermasen gesund bin,
werde ich das mal testen.

MfG
Heiko
Heiko Rompel [ Mi, 29 März 2006 14:39 ] [ ID #1252072 ]

Re: Re: Bestätigungsbox

Hallo,


> Mit Perl kannst du auf eine grafische Benutzeroberfläche nicht direkt
> zugreifen (bzw. nicht trivial). Man braucht ein zusätzliches Modul,
> das oft "GUI-Toolkit" oder ähnlich genannt wird. Tk ist ein Beispiel,
> weitere Beispiele sind Gtk, Wx, Win32::GUI, Prima, PerlQt usw.

Hmm, das hört sich nicht nach Webanwendung an.
Ich vergaß zu erwähnen, das ich eine Web-Lösung ohne JavaScript suche.

MfG
Heiko
Heiko Rompel [ Mi, 29 März 2006 14:40 ] [ ID #1252073 ]

Re: Bestätigungsbox

Hallo,

"Tony Muler" schrieb:

>> Welches Toolkit?
>
> LOL. Siehste, und ich sach doch es geht um Web.

Der Kandiat erhält 2 Wissenspunkte und weiteres Antwortrecht. :-)

MfG
Heiko
Heiko Rompel [ Mi, 29 März 2006 14:41 ] [ ID #1252074 ]

Re: Bestätigungsbox

Hallo Heiko,

Heiko Rompel wrote:
> "Tony Muler" schrieb:
>
>> Dort ist die Ausgabe einer Box Sache des Clients.
>> Wenn Du damit leben kannst, Clients ohne Javascript
>> auf den "Luxus" der Bestätigung verzichten können,
>> dann solltest Du das Web nach den Stichworten
>> "javascript" und "confirm" abgrasen.
>
>
> Das ich das mit JavaScript hinbekomme weiß ich,
> aber es soll ohne JavaScript laufen.
>
>> Damit sind wir off-topic und ich darf meinen
>> Vorschlag sicher ungetestet anbrigen:
>>
>> <a href="/cgi-bin/loeschMich.pl"
>> onClick="return(confirm('Wirklich?'))"
>> >Loeschen!</a>
>
>
> Da ich jetzt wieder einigermasen gesund bin,
> werde ich das mal testen.

Das ist dann aber paradox, da das Codefragment JavaScript enthält...
Eine ganz und gar serverseitige Lösung wäre es, mit Sessions zu
arbeiten und bei Formularabgabe die Daten dort zu hinterlegen, ein
Skript aufzurufen das eine Bestätigungsseite generiert (vielleicht
angereichert mit den Daten aus der Session), um von dieser Seite aus
zur eigentlichen Bearbeitung der Daten weiterzuführen. Das ganze kann
bestimmt hübsch generalisieren, indem man dem
Bestätigungsseitenerzeugeskript mitteilt, was bei "Ja" und was bei
"Nein" als nächstes passieren soll...

Ein neues Fenster dafür zu öffnen ist dann aber etwas trickreicher,
glaube ich, da es glaube ich keine Möglichkeit gibt, ohne JavaScript
das Schließen eines Fensters zu veranlassen. (Öffnen geht ja mit
diesem target-Attribut von a).

Arne Ruhnau
Arne Ruhnau [ Mi, 29 März 2006 15:27 ] [ ID #1252075 ]

Re: Bestätigungsbox

Hallo,

"Arne Ruhnau" schrieb:

>> Da ich jetzt wieder einigermasen gesund bin,
>> werde ich das mal testen.
>
> Das ist dann aber paradox, da das Codefragment JavaScript enthält...

Dann bin ich doch noch nicht ganz gesund :-)

> Eine ganz und gar serverseitige Lösung wäre es, mit Sessions zu arbeiten
> und bei Formularabgabe die Daten dort zu hinterlegen, ein Skript
> aufzurufen das eine Bestätigungsseite generiert (vielleicht angereichert
> mit den Daten aus der Session), um von dieser Seite aus zur eigentlichen
> Bearbeitung der Daten weiterzuführen. Das ganze kann bestimmt hübsch
> generalisieren, indem man dem Bestätigungsseitenerzeugeskript mitteilt,
> was bei "Ja" und was bei "Nein" als nächstes passieren soll...

Hmm ..

> Ein neues Fenster dafür zu öffnen ist dann aber etwas trickreicher, glaube
> ich, da es glaube ich keine Möglichkeit gibt, ohne JavaScript das
> Schließen eines Fensters zu veranlassen.

Wieso, da ich die Antwort aus dem Fenster (ja oder Nein) ja auswerten muss,
kann ich das Fenster mittels "submit" schliessen.

>(Öffnen geht ja mit diesem target-Attribut von a).

a) ??? meinst Du <a ...> ??

Das hatte ich auch schon überlegt.
Aber da ich versuche Seiten die erstelle "XHTML 1.x strict" zu erstellen,
geht das so nicht, da "target" lt. Valiator nicht strict ist.


MfG
Heiko
Heiko Rompel [ Mi, 29 März 2006 15:50 ] [ ID #1252076 ]

Re: Bestätigungsbox

Heiko Rompel schrieb:
> "Arne Ruhnau" schrieb:
>
>> Eine ganz und gar serverseitige Lösung wäre es, mit Sessions zu
>> arbeiten und bei Formularabgabe die Daten dort zu hinterlegen, ein
>> Skript aufzurufen das eine Bestätigungsseite generiert (vielleicht
>> angereichert mit den Daten aus der Session), um von dieser Seite aus
>> zur eigentlichen Bearbeitung der Daten weiterzuführen. Das ganze kann
>> bestimmt hübsch generalisieren, indem man dem
>> Bestätigungsseitenerzeugeskript mitteilt, was bei "Ja" und was bei
>> "Nein" als nächstes passieren soll...
>
> Hmm ..
>
>> Ein neues Fenster dafür zu öffnen ist dann aber etwas trickreicher,
>> glaube ich, da es glaube ich keine Möglichkeit gibt, ohne JavaScript
>> das Schließen eines Fensters zu veranlassen.
>
>
> Wieso, da ich die Antwort aus dem Fenster (ja oder Nein) ja auswerten muss,
> kann ich das Fenster mittels "submit" schliessen.

Und woher soll das Ursprungsfenster davon erfahren?
Scriptfreie cgi-Anwendungen sind linear. Du kannst nicht zwischen
mehreren Fenster hin-und-her kommunizieren (zumindest nicht direkt,
sondern nur mit widerlichen Refresh-Tricksereien oder sinnlosen,
unergonomischen Zusatzschritten).

Du mußt also entweder alle Daten durch die Dialoge mitschleifen
(serialisiert im Cookie oder als hidden-Parameter in Forms, wenn
Du ganz grausam sein willst auch als URL-Param mit Image-Links) oder
nur einen Session Identifier mitnehmen und am Server die zugehörigen
Daten halten, wie Arne vorgeschlagen hat.

Viele Grüße
-Christian
Christian Winter [ Mi, 29 März 2006 16:26 ] [ ID #1252078 ]

Re: Bestätigungsbox

Heiko Rompel wrote:
> "Arne Ruhnau" schrieb:
>>
>>Ein neues Fenster dafür zu öffnen ist dann aber etwas trickreicher, glaube
>>ich, da es glaube ich keine Möglichkeit gibt, ohne JavaScript das
>>Schließen eines Fensters zu veranlassen.
>
> Wieso, da ich die Antwort aus dem Fenster (ja oder Nein) ja auswerten muss,
> kann ich das Fenster mittels "submit" schliessen.

Mittels Submit kannst Du kein Fenster schließen.
Arne hat recht: dazu brauchst Du Javascript.

>>(Öffnen geht ja mit diesem target-Attribut von a).
>
> a) ??? meinst Du <a ...> ??
>
> Das hatte ich auch schon überlegt.
> Aber da ich versuche Seiten die erstelle "XHTML 1.x strict" zu erstellen,
> geht das so nicht, da "target" lt. Valiator nicht strict ist.

Laut der XHTML DTD des W3C stimmt das nicht.

Bitte keine Falschinformationen posten

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel
Frank Seitz [ Mi, 29 März 2006 17:56 ] [ ID #1252079 ]

Re: Bestätigungsbox

Doch, das stimmt. Bei XHTML1.x strict darf man es nicht verwenden:

aus den specs:
<!ATTLIST a
%attrs;
%focus;
charset %Charset; #IMPLIED
type %ContentType; #IMPLIED
name NMTOKEN #IMPLIED
href %URI; #IMPLIED
hreflang %LanguageCode; #IMPLIED
rel %LinkTypes; #IMPLIED
rev %LinkTypes; #IMPLIED
shape %Shape; "rect"
coords %Coords; #IMPLIED
>

Bei XHTML1.x transitional darf man es:
<!ATTLIST a
%attrs;
%focus;
charset %Charset; #IMPLIED
type %ContentType; #IMPLIED
name NMTOKEN #IMPLIED
href %URI; #IMPLIED
hreflang %LanguageCode; #IMPLIED
rel %LinkTypes; #IMPLIED
rev %LinkTypes; #IMPLIED
shape %Shape; "rect"
coords %Coords; #IMPLIED
target %FrameTarget; #IMPLIED
>
ReneeB [ Mi, 29 März 2006 23:16 ] [ ID #1252082 ]

Re: Bestätigungsbox

Hallo,

"Frank Seitz" schrieb:

>> Das hatte ich auch schon überlegt.
>> Aber da ich versuche Seiten die erstelle "XHTML 1.x strict" zu erstellen,
>> geht das so nicht, da "target" lt. Valiator nicht strict ist.
>
> Laut der XHTML DTD des W3C stimmt das nicht.
>
> Bitte keine Falschinformationen posten

Habe ich nicht vor. Ich gab nur das wieder, was ich als Meldung
des Validators erhielt.

MfG
Heiko
Heiko Rompel [ Do, 30 März 2006 07:08 ] [ ID #1253793 ]

Re: Bestätigungsbox

ReneeB wrote:
> Doch, das stimmt. Bei XHTML1.x strict darf man es nicht verwenden:
>
> aus den specs:
> <!ATTLIST a
> %attrs;
> %focus;
> charset %Charset; #IMPLIED
> type %ContentType; #IMPLIED
> name NMTOKEN #IMPLIED
> href %URI; #IMPLIED
> hreflang %LanguageCode; #IMPLIED
> rel %LinkTypes; #IMPLIED
> rev %LinkTypes; #IMPLIED
> shape %Shape; "rect"
> coords %Coords; #IMPLIED
> >
>
> Bei XHTML1.x transitional darf man es:
> <!ATTLIST a
> %attrs;
> %focus;
> charset %Charset; #IMPLIED
> type %ContentType; #IMPLIED
> name NMTOKEN #IMPLIED
> href %URI; #IMPLIED
> hreflang %LanguageCode; #IMPLIED
> rel %LinkTypes; #IMPLIED
> rev %LinkTypes; #IMPLIED
> shape %Shape; "rect"
> coords %Coords; #IMPLIED
> target %FrameTarget; #IMPLIED
> >

Du hast recht. Ich hatte in
http://www.w3.org/TR/xhtml1/dtds.html#a_dtd_XHTML-1.0-Strict
nach "target" gesucht und war bei ELEMENT a fündig geworden.
In dem Dokument ist aber gemeinerweise auch die
Transitional DTD enthalten.

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel
Frank Seitz [ Do, 30 März 2006 09:23 ] [ ID #1253795 ]

Re: Bestätigungsbox

Heiko Rompel wrote:
> "Frank Seitz" schrieb:
>>
>>Bitte keine Falschinformationen posten
>
> Habe ich nicht vor. Ich gab nur das wieder, was ich als Meldung
> des Validators erhielt.

Der Irrtum lag auf meiner Seite. Pardon.

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel
Frank Seitz [ Do, 30 März 2006 09:23 ] [ ID #1253796 ]

Re: Bestätigungsbox

Heiko Rompel wrote:

>> Dort ist die Ausgabe einer Box Sache des Clients.
>> Wenn Du damit leben kannst, Clients ohne Javascript
>> auf den "Luxus" der Bestätigung verzichten können,
[...]

> Das ich das mit JavaScript hinbekomme weiß ich,
> aber es soll ohne JavaScript laufen.

Schau mal nach Sessions / Cookies / State.
Z.B.:
http://search.cpan.org/~sherzodr/CGI-Session-4.10/lib/CGI/Se ssion/Tutorial.pm

>> Damit sind wir off-topic und ich darf meinen
>> Vorschlag sicher ungetestet anbrigen:
>>
>> <a href="/cgi-bin/loeschMich.pl"
>> onClick="return(confirm('Wirklich?'))"
>> >Loeschen!</a>
>
>
> Da ich jetzt wieder einigermasen gesund bin,
> werde ich das mal testen.

Also doch Javascript?

T.
Tony Muler [ Do, 30 März 2006 08:29 ] [ ID #1255355 ]

Danke - Re: Bestätigungsbox

Danke für die vielen Antworten und Tips.

Ich habe das jetzt so gelöst:

Da ich sowieso ein "Admin-Menü" mittels Script erzeuge,
habe ich die Löschabfrage nicht in das Formular gepackt,
sondern als Punkt in den Menü.
Wenn der Punkt jetzt gewählt wird, wird das Script mit
entsprechenden Parameter wieder aufgerufen und gibt eine
Löschabfrage aus und ruft dann das Script wieder mit einem entsprechenden
Parameter für das löschen auf.

MfG
Heiko
Heiko Rompel [ Mi, 05 April 2006 09:17 ] [ ID #1261854 ]
Perl » de.comp.lang.perl.misc » Bestätigungsbox

Vorheriges Thema: Prüfen ob mein Script schon läuft
Nächstes Thema: GD fürwin32