Webform nicht mehr anzeigen, wenn schon ausgefüllt
Eingetragen von mikolaskova (776)
am 16.04.2009 - 14:29 Uhr in
am 16.04.2009 - 14:29 Uhr in
Hallo,
ich habe eine Umfrage mit Webform erstellt. Jeder Benutzer darf nur einmal Teilnehmen. Das konnte ich einstellen. Wie erreiche ich nun, dass ein Benutzer, der bereits teilgenommen hat, beim Aufruf des entsprechenden Nodes nicht mehr das Formular sondern eine bestimmte Nachricht angezeigt wird?
(z.B "Jeder darf nur einmal teilnehmen")
Für Hinweise wäre ich sehr dankbar.
Gruss
Adriana
- Anmelden oder Registrieren um Kommentare zu schreiben
Webform beschränken
am 17.04.2009 - 09:05 Uhr
Moin!
Beim Erstellen eines Webforms kannst Du (jedenfalls in der aktuellen Version) einstellen, wie oft ein Nutzer dieses Formular abschicken darf. Wenn Du in das Textfeld den Wert "1" eingibst und dann "ever" beim Zeitraum auswählst, darf jeder Benutzer das Formular nur ein einziges Mal absenden.
Die Nachricht kannst Du dann ausgeben, indem Du die Funktion
theme_webform_view
in Deinem Theme überschreibst.hth,
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Feedback per Formular
am 17.04.2009 - 09:06 Uhr
Hallo Adriana,
zwar keine direkte Lösung, aber in diesem Thread ging's schon mal ausführlich um ein ähnliches Thema: Feedback Formular (http://www.drupalcenter.de/node/17244), vielleicht hilft das weiter.
Wenn die Umfrage nicht zu textlastig ist, hilft vielleicht auch ein Modul wie Advanced Poll (http://drupalmodules.com/module/advanced-poll).
Gruß
Frank
Gruß
Frank
Bitte Erledigtes im Betreff des ersten Postings als [gelöst] markieren. Danke!
Du kannst den Benutzer doch
am 17.04.2009 - 09:23 Uhr
Du kannst den Benutzer doch ein spezielle Nachricht (Node) anzeigen, sobald er die Form abgeschickt hat, dass du nur einstellen für diese Form.
----------------------------------------
http://tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
Ja. Das mache ich auch. Mir
am 17.04.2009 - 09:37 Uhr
Ja. Das mache ich auch. Mir geht es aber nicht um den Zeitpunkt unmittelbar nach dem Ausfüllen. Da zeige ich schon eine andere Seite an. Es geht mir darum, wenn der Benutzer die URL mit der entsprechenden Umfrage aufruft: in dem Fall soll nicht mehr die Umfrage angezeigt werden.
zur Zeit ist es so, dass der Benutzer das Form zwar ausfüllen kann, aber erst beim Abschicken wird ihm gesagt, dass er nur einmal durfte. Diese Information möchte ich dem Benutzer geben, bevor er das Form ein zweites Mal ausfüllt. Danke trotzdem.
An stBorchert und Frank Ralf: Danke für die Hinweise. Ich müsste also vor dem Darstellen der Seite in der DB, in der entsprechenden Tabelle abfragen, ob dieser User schon existiert, also schon mal ausgefüllt hat und falls ja das Form nicht anzeigen (in der entsprechenden theme-funktion)
Hat das jemand so schon umgesetzt?
Danke und Gruss
Adriana
lesen?
am 17.04.2009 - 09:42 Uhr
Nur so nebenbei: meine Antwort hast Du gelesen? Das Feature ist bereits in Webform eingebaut!
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
ja, ich habe Deine Antwort
am 17.04.2009 - 10:14 Uhr
ja, ich habe Deine Antwort gelesen! Zumindest bei Webform 5 kann ich aber in den settings nur definieren, wie oft das Webform ausgefüllt werden kann. Wie Du geschrieben hast, bleibt mir also nur noch mit Hilfe der Function theme_webform_form_[node id here] die Ausgabe des Forms zu beeinflussen.
An dieser Stelle muss ich aber abfragen, ob das Form vom aktuellen User bereits ausgefüllt wurde, oder nicht.
Oder hab ich da etwas falsch verstanden?
Gruss
Adriana
theme_webform_view
am 17.04.2009 - 10:21 Uhr
Die Funktion heisst
theme_webform_view
. In dieser Funktion wird das schon abgefragt,Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Vielen Dank für Deine
am 17.04.2009 - 10:51 Uhr
Vielen Dank für Deine Geduld- ich habe nach einer API für diese Funktion gesucht , aber nicht gefunden (nur für die Version 6, ich benutze aber 5)- für einen Link oder einen weiteren Hinweis wäre ich extrem dankbar.
Adriana
theme_XXX
am 17.04.2009 - 15:19 Uhr
Ein API benötigst Du nicht. Die Funktion steht in der Datei webform.module und kann entsprechend Using Theme Override Functions überschrieben werden.
Hier mal die Originalfunktion:
<?php
function theme_webform_view($node, $teaser, $page, $form, $enabled) {
// Only show the form if this user is allowed access.
if ($enabled) {
return $form;
}
}
?>
Wie Du siehst, wird dort nach
$enabled
abgefragt. Diese Variable hat unter Anderem den WertFALSE
, wenn das Limit für den aktuell angemeldeten Benutzer überschritten ist. Allerdings auch, wenn das Webform aus anderen Gründen nicht angezeigt werden soll.Du kannst allerdings auch noch zusätzlich mittels
_webform_submission_limit_check($node)
überprüfen, ob das Limit erreicht wurde.hth,
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.