Bestätigungsbox

Bestätigungsbox

am 26.03.2006 12:07:04 von Heiko Rompel

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

Re: Bestätigungsbox

am 26.03.2006 13:48:55 von Tony Muler

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:

onClick="return(confirm('Wirklich?'))"
>Loeschen!


T.

Re: Bestätigungsbox

am 26.03.2006 19:57:08 von Slaven Rezic

"Heiko Rompel" 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 rezic de

sf-upload: make batch releases on SourceForge
http://sf-upload.sf.net

Re: Bestätigungsbox

am 27.03.2006 08:03:35 von Heiko Rompel

Hallo,

"Slaven Rezic" schrieb:

> Ist dir das Toolkit egal?

Welches Toolkit?

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

Sieht einfach aus.

MfG
Heiko

Re: Re: Bestätigungsbox

am 27.03.2006 22:53:31 von Slaven Rezic

"Heiko Rompel" 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 rezic de

Start a WWW browser - OS independent:
http://user.cs.tu-berlin.de/~eserte/src/perl/WWWBrowser/

Re: Bestätigungsbox

am 28.03.2006 19:32:32 von Tony Muler

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.

Re: Bestätigungsbox

am 29.03.2006 14:39:11 von Heiko Rompel

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:
>
> > onClick="return(confirm('Wirklich?'))"
> >Loeschen!


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

MfG
Heiko

Re: Re: Bestätigungsbox

am 29.03.2006 14:40:37 von Heiko Rompel

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

Re: Bestätigungsbox

am 29.03.2006 14:41:44 von Heiko Rompel

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

Re: Bestätigungsbox

am 29.03.2006 15:27:50 von Arne Ruhnau

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:
>>
>> >> onClick="return(confirm('Wirklich?'))"
>> >Loeschen!

>
>
> 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

Re: Bestätigungsbox

am 29.03.2006 15:50:43 von Heiko Rompel

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 ??

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

Re: Bestätigungsbox

am 29.03.2006 16:26:08 von Christian Winter

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

Re: Bestätigungsbox

am 29.03.2006 17:56:26 von Frank Seitz

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
??
>
> 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

Re: Bestätigungsbox

am 29.03.2006 23:16:26 von ReneeB

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

aus den specs:
%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:
%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
>

Re: Bestätigungsbox

am 30.03.2006 07:08:41 von Heiko Rompel

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

Re: Bestätigungsbox

am 30.03.2006 08:29:50 von Tony Muler

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:
>>
>>
>> onClick="return(confirm('Wirklich?'))"
>> >Loeschen!

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

Also doch Javascript?

T.

Re: Bestätigungsbox

am 30.03.2006 09:23:02 von Frank Seitz

ReneeB wrote:
> Doch, das stimmt. Bei XHTML1.x strict darf man es nicht verwenden:
>
> aus den specs:
> > %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:
> > %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

Re: Bestätigungsbox

am 30.03.2006 09:23:53 von Frank Seitz

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

Danke - Re: Bestätigungsbox

am 05.04.2006 09:17:09 von Heiko Rompel

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