[gelöst] Benutzer soll einem Termin zu- oder absagen können
![](http://www.drupalcenter.de/files/noavatar_mini.gif)
am 18.11.2009 - 23:41 Uhr in
Hey Leute, habe (mal wieder -,-') ein Problem:
Auf meiner Seite werden öfters mal Termine veröffentlicht. Nicht nur durch mich sondern hauptsächlich durch ein paar andere Leute.
Bei manchen dieser Termine ist allerdings eine Rückmeldung gewünscht, ob die Benutzer diesen Termin wahrnehmen können oder nicht.
Jetzt stellt sich mir die Frage: Wie stelle ich das am besten an?!
Ich habe schon mit Webform rumprobiert, aber damit bin ich nicht so wirklich weiter gekommen =(
Momentan bin ich mit meiner Erkenntnis so weit, dass meine Leute einen Termin erstellen würden und danach ein Webform erstellen müssten.
Leider kennen die sich nicht so besonders gut aus und ich bin mir ziemlich sicher, dass die Node-Erstellung für Webforms zu kompliziert für meine Leute ist =(
Hat jemand eine Idee, wie sich das besser umsetzen ließe?
Wenn ein Termin erstellt wird, bei dem eine Rückmeldung erforderlich ist, soll es eben eine Möglichkeit für die restlichen Benutzer geben, dort zu- oder abzusagen.
Am besten wäre es, wenn die Benutzer gleich beim Termin einen Button oder ähnliches hätten, bei dem sie zwischen "Teilnehmen" und "nicht Teilnehmen" wählen können.
Leider weiß ich nicht so recht, wie sich das umsetzen ließe und wäre für ein paar Vorschläge sehr dankbar.
mfg Exterior
- Anmelden oder Registrieren um Kommentare zu schreiben
Flag
am 19.11.2009 - 06:21 Uhr
Nimm das Flag-Modul, damit geht das hervorragend.
Beste Grüße
Werner
signup
am 19.11.2009 - 07:51 Uhr
Oder Du verwendest einfach das Modul Signup.
hth,
Stefan
--
sei nett zu Deinem Themer
Hey, danke schonmal für die
am 19.11.2009 - 17:51 Uhr
Hey, danke schonmal für die Tips =)
Habe noch Autocreate Node Reference gefunden, das wäre im Zusammenspiel mit Webform auch eine gute Lösung.
Aber ein paar Fragen hätte ich da noch:
Kann man die Ergebnisse von Webform irgendwie "schöner" zugänglich machen, als über den "Ergebnisse"-Reiter des Formulars?
Ich würde gerne meinen Leuten einfach eine Seite zur Verfügung stellen auf der sie ganz einfach sehen können, wer was angeklickt hat. Unter dem Ergebnisse-Reiter gibt's ja "Tabelle", so in der Art wäre nicht schlecht, aber da sind zuviele unnötige Infos drin, IP usw. das interessiert die nicht.
Eine Seite mit einer Art Tabelle, in der einfach nur in einer Spalte der Benutzername und in der nächsten seine Auswahl angezeigt wird (das Webform hat nur eine Komponente mit Radio-Buttons), ist sowas möglich?
Dann noch eine Frage zu Signup: Kann man diese "Anmeldeinfos" verändern? Ich habe das aktiviert und kann im entsprechenden Node Benutzername und Telefonnummer eingeben. Kann man das mit der Telefonnummer weg machen? Außerdem wäre noch interessant, ob man irgendwie (z.B. mittels Token oder so) als Standard-Wert Dinge aus den Profilfeldern der Benutzer eintragen kann, das geht z.B. bei Webform. Dass also, wenn jemand den Node öffnet, dort beim Name die Werte für Vor- und Nachname aus seinem Profil genommen werden und er sie nicht erst eintippen muss.
Und zu guter Letzt noch eine Frage zu Flag:
Ich habe das installiert und kann mir jetzt zum Beispiel unter den entsprechenden Nodes "Teilnehmen" und "nicht Teilnehmen" anzeigen lassen.
Kann ich irgendwie verhindern, dass ein User beides anwählt? Denn er kann ja entweder teilnehmen oder nicht. Kann man es so einrichten, dass er nicht mehr auf "nicht teilnehmen" klicken kann, wenn er schon "teilnehmen" gewählt hatte?
Sorry für die vielen Fragen, aber jedes Modul hat da so seine Vor- und Nachteile und die Entscheidung ist alles andere als einfach -,-'
mfg Exterior
Soweit ich Flag kenne, kommt
am 19.11.2009 - 20:18 Uhr
Soweit ich Flag kenne, kommt anmelden, wenn man noch nicht angemeldet ist, und abmelden, wenn man sich angemeldet hat (muß halt richtig konfiguriert werden). Beide gleichzeitig hatte ich nicht.
Beste Grüße
Werner
signup
am 19.11.2009 - 20:55 Uhr
Dann noch eine Frage zu Signup: Kann man diese "Anmeldeinfos" verändern? Ich habe das aktiviert und kann im entsprechenden Node Benutzername und Telefonnummer eingeben. Kann man das mit der Telefonnummer weg machen?
Ja, das kann man alles tun. Dazu musst Du die Datei theme/signup_form.inc entsprechend der Doku anpassen.
Außerdem wäre noch interessant, ob man irgendwie (z.B. mittels Token oder so) als Standard-Wert Dinge aus den Profilfeldern der Benutzer eintragen kann, das geht z.B. bei Webform. Dass also, wenn jemand den Node öffnet, dort beim Name die Werte für Vor- und Nachname aus seinem Profil genommen werden und er sie nicht erst eintippen muss.
Signup trägt automatisch den Benutzernamen ein. In der theme/signup_form.inc kannst Du jedoch auch einfach ein Feld definieren, dass den vollen Namen des Benutzers enthält.
hth,
Stefan
--
sei nett zu Deinem Themer
Vielen Dank für eure Hilfe
am 19.11.2009 - 23:02 Uhr
Vielen Dank für eure Hilfe =)
Eine Sache habe ich noch:
Ich benutze das Theme "Pixture reloaded". Wenn ich da einem Inhaltstyp 2 Flags zuweise, dann stehen die unter dem Node sehr dicht beieinander. So sieht das aus, als ob die beiden Flags ein zusammenhängender Link wären, obwohl es ja zwei sind.
Kann man die irgendwie weiter auseinander bekommen?
Ich vermute mal, dass man das in der flag.tpl.php machen kann und muss nur leider habe ich keine Ahnung, was ich dort ändern müsste =(
Geschafft =)
am 23.11.2009 - 22:22 Uhr
So, habe mich jetzt durch den Theming-Guide von Flag gearbeitet und zeige meine Flags jetzt als zwei schöne Buttons an :)
Hab mir also eine Lösung mit Flag und Views gebastelt, das ist für die Leute, die damit arbeiten sollen, die übersichtlichste Lösung.
Danke für eure Hilfe =)
Ergebnis
am 04.12.2009 - 21:44 Uhr
Exterior,
könntest Du Deinen Lösungsweg noch posten. Ich sitze gerade an einem ähnlichen Problem & will meine erstellten Flags auch als Button darstellen. Außerdem versuche ich gerade, die so gekennzeichneten Inhalte in einer erstellten Tabelle zu visualisieren, mit der Möglichkeit, nach Flag zu sortieren. Tabelle kein Problem, kann aber als Feld kein Flag hinzufügen :-/
Danke für Deine Erfahrungsberichte.
Da du bereits deine
am 04.12.2009 - 22:19 Uhr
Da du bereits deine Erfahrung damit gemacht hast - kannst du mir dazu vielleicht noch weitere Hinweise und/Tips geben?
Ich bin da auch gerade an einer Variante mit Flag und Rules ;)
So hab ich's gemacht
am 05.12.2009 - 00:44 Uhr
Uff, also:
Erstmal hab ich 2 Flags angelegt, welche bei dem jeweiligen Inhaltstyp angezeigt werden, also "Teilnehmen" und "Nicht teilnehmen". Dann habe ich mir mit einem Button-Creator noch 2 schöne Buttons gebastelt und die template.php vom Flag-Modul entsprechend bearbeitet, sodass die Flags nicht als normale Links, sondern als schöne Buttons angezeigt werden.
Beide Flags habe ich gleichzeitig anzeigen lassen. Dann noch ein wenig gebastel mit Rules: Erstens habe ich es so eingerichtet, dass man einen Flag nicht zurücknehmen kann. Normalerweise klickt man auf einen Flag-Link und Flagt den Inhalt damit. Wenn man nochmal draufklickt, wird der Flag zurückgenommen. Ich habe es aber so gemacht, dass der Flag sofort neu gesetzt wird, wenn man nochmal auf den Flaglink klickt. Das ganze dient dazu, dass ein User nicht versehentlich zweimal auf den Link klickt, denkt, er würde als Teilnehmer angezeigt und taucht aber in keiner Liste auf, weil er den Flag wieder runtergenommen hat. Wenn man also auf einen Button klickt, dann gilt das auch so, egal, wie oft man drauf klickt.
Außerdem habe ich es noch folgendes gemacht (mit Rules): Wenn man auf "Nicht teilnehmen" klickt und der Node bereits als "Teilnehmen" geflagt ist, dann wird der Node unter "Nicht teilnehmen" geflagt und der Flag "Teilnehmen" wird wieder entfernt. Damit kann ein User nicht gleichzeitig bei Teilnehmen und "Nicht teilnehmen" auftauchen. Wenn es sich also jemand anders überlegt und doch nicht teilnehmen kann, klickt er auf den entsprechenden Button und sein früherer Klick auf "Teilnehmen" wird negiert. Allerdings muss man darauf achten, zu prüfen, ob der andere Flag gesetzt ist, denn sonst greift wieder die Regel, dass der Flag neu gesetzt wird, wenn man ihn entfernen möchte. Muss man eben bissel nachdenken, wenn man daran bastelt ;)
Mit Views habe ich mir dann noch drei Ansichten gemacht:
Erstmal eine, die tabellarisch alle Termine auflistet und dazu jeweils einen Link zu den Zusagen und einen zu den Absagen. Bei diesen Links wird jeweils die Anzahl angezeigt, also wieviele Zu- und Absagen es zum jeweiligen Termin gibt.
Und dann eben noch eine Ansicht für die Zu- und eine für die Absagen.
Dort wird z.B. der Benutzername aller Mitglieder gelistet, die diesen Node mit "Teilnehmen" geflagt haben. Zusätzlich habe ich noch aus den Profilfeldern die eMailadresse und den Vor- und Nachname eingefügt.
Um das dem Node zuzuordnen, musst du natürlich den Nodetitel oder die Node-ID als Argument übergeben und den Zusage-Link entsprechend gestalten, dass er den Titel oder die ID als Argument sendet.
Damit habe ich unter den Terminen zwei gut sichtbare Buttons, die nur Mitglieder sehen können. Ein Benutzer muss nur auf so einen Button klicken, keinen Namen eingeben, nichts. Einfach auf den Button klicken und schon taucht er mit Benutzername, Vor- und Nachname und eMail-Adresse in der entsprechenden Tabelle auf. Man kann auch wenig beim Button-Klick falsch machen, weil man entsprechende Reaktionen mittels Rules aufgestellt hat. Meiner Meinung nach sehr benutzerfreundlich ;) Man muss sich eben beim basteln etwas konzentrieren und überlegen, aber das ganze klappt ganz gut.
Leider muss ich diese Variante für mich wahrscheinlich wieder verwerfen =( Aber evtl. hilft sie dir ja.
Edit:
Hoppla, hab den Post von Herrn Orwell übersehen -,-'
Also, um ein Feld für Flags hinzuzufügen, musst du unter Beziehungen eine Beziehung zu dem Flag und eine Beziehung zu dem User, der den Flag gesetzt hat, hinzufügen. Dann kannst du zum Beispiel als Feld den Benutzername hinzufügen und kannst bei diesem Feld die entsprechende Beziehung auswählen und schon wird dir der User angezeigt, der den entsprechenden Inhalt geflagt hat.
Bei der Beziehung zum Flag musst du auswählen, welchen Flag du haben willst (du kannst pro Beziehung nur einen Auswählen, zum Beispiel "Teilnehmen") und einen Haken bei "Nur gekennzeichneten Inhalt einschließen" setzen, dann bekommst du alle Benutzer aufgelistet, die für diesen Inhalt "Teilnehmen" angeklickt haben. Und in einer anderen View machst du eben das gleiche, nur mit dem anderen Flag. Wie man beide zusammen gleichzeitig sinnvoll in einer View listen kann, habe ich noch nicht herausgefunden, habe es aber auch nicht sehr ausdauernd probiert, weil ich ohnehin die getrennte Ansicht angestrebt habe.
Um die Flag-Links in Buttons darzustellen, hilft ein Blick in die Readme im Ordner Flag->Theme.
In diesem Ordner gibt es eine Datei namens flag.tpl.php, diese musst du in deinen Theme-Ordner packen und dann kannst du in der template.php des Themes den Output der Flag-Links mittels preprocess ändern. Es gibt auch noch andere Möglichkeiten, dazu einfach mal die besagte Readme lesen.
Kleines Beispiel von mir:
Ich habe in die template.php meines Themes Pixture_reloaded folgenden Code eingefügt:
function pixture_reloaded_preprocess_flag(&$vars) {
$image_file = path_to_theme() . '/flag-' . $vars['flag']->name . '-' . ($vars['action'] == 'flag' ? 'off' : 'on');
// Uncomment the following line when debugging.
$image_full = $image_file . '.png';
//drupal_set_message("Flag is looking for '$image_full'...");
if (file_exists($image_full)) {
$vars['link_text'] = '<img src="' . base_path() . $image_file . '.png" onmouseover="this.src=\'' . base_path() . $image_file . '-mouseover.png\';" onmouseout="this.src=\'' . base_path() . $image_file . '.png\';" />';
Damit werden die Flag-Links als Buttons dargestellt. Dazu müssen die Buttons allerdings als .png im Ordner des Themes gespeichert sein. Man braucht pro Flag zwei Buttons, einen für on und einen für off (Also jeweils einen dafür, ob der Inhalt geflagt ist oder nicht). Da bei mir ein Flag sowohl im on- als auch im off-Modus das gleiche machen soll, sehen diese beiden Buttons bei mir gleich aus. Außerdem braucht man mit diesem Code oben noch zwei Buttons pro Flag, weil ich einen MouseOver-Effekt eingebaut habe, also braucht man noch ein Bild für den Mouseover-Effekt, jeweils für on und off. Damit braucht man pro Flag also 4 Button-Bilder im Ordner, das macht bei 2 Flags 8 Bilder. Die Bilder müssen einen bestimmten Namen haben: Die Buttons für den Flag "Teilnehmen" müssen mit dem obigen Code so aussehen:
flag-teilnahme-on.png
flag-teilnahme-on-mouseover.png
flag-teilnahme-off.png
flag-teilnahme-off-mouseover.png
Das gleiche dann noch für den Flag "nicht_teilnehmen".
Der Aufbau ist also immer "flag--[-mouseover]" (Ich hoffe, ihr könnt mit dieser Backus-Nauer-Form was anfangen)
Dabei sind die On- und Off-Bilder immer gleich, also ist das Bild "flag-teilnahme-on.png" das gleiche wie "flag-teilnahme-off.png", aber sie müssen beide vorhanden sein.
Bei diesem Code wird erst geprüft, ob diese Button-Bilder vorhanden sind. Wenn ja, werden sie für die Ausgabe genutzt, wenn nicht, werden die Flags ganz normal wie immer dargestellt.
So, ich hoffe, das war einigermaßen verständlich ;) Man muss dabei eben auch bissel probieren, geht aber im Grunde ziemlich gut.
mfg Exterior
Button in View
am 05.12.2009 - 11:35 Uhr
Super Beschreibung. Habe es gleich in die Tat umgesetzt und bin begeistert. Danke also für Deine ausführliche Hilfe. WIe immer ergebn sich jedoch ein paar Fragen:
erscheinen bei Dir in der view dann auch die Button oder der Status als Link???
Ich habe das Problem, dass er in meiner View immer den Link "Kennzeichnung zurücknehmen" setzt, anstatt wirklich den entsprechenden Status.
Zudem habe ich das Problem, dass ich die Stati in der View nicht sortieren kann. also alle nach Teilnehmen oder nicht Teilnehmen. Wie hast DU das gelöst?
Angesichts der Vielzahl der eben gefundenen Button creator, kannst Du einen nach deiner Arbeit empfehlen?
Eine Anfängerfrage noch. Wenn ich eine Kennzeichnung setze, kommt bei mir eine Bestätigungsseite. In dieser Seite befindet sich ja schon ein Button. Kann man den nicht irgendwo auslesen und dann als Button für das eigentliche Kennzeichnen verwenden bzw. ihn mit einer anderen Frage für die Roll-over Version versehen? Wo versteckt er sich? Im Ordner des Flag Module habe ich keine Dateien gefunden.
Hast Du Dein Beispiel online, dass man es sich mal optisch anschauen kann?
Herzlichen Dank noch einmal. Besten Gruß
George Orwell
Den Flag-Link nehme ich in
am 05.12.2009 - 17:15 Uhr
Den Flag-Link nehme ich in die View gar nicht mit rein.
Wie gesagt, ich habe zwei getrennte Views gemacht, eine View für alle, die teilgenommen haben und eine für alle, die abgesagt haben.
Denn wenn du unter Beziehungen eine Beziehung zu einem bestimmten Flag herstellst und den Haken bei "Nur gekennzeichnete Inhalte einschließen" (oder so ähnlich) setzt, dann bekommst du nur die Mitglieder gelistet, die zum Beispiel auf "Teilnehmen" geklickt haben.
Wenn du aber dann noch eine Beziehung zum anderen Flag herstellst, hast du natürlich wieder alle User in der Liste, weil dann jeder aufgelistet wird, der bei dem Termin auf "Teilnehmen" oder "Nicht teilnehmen" geklickt hat und das war nicht das (bzw. mein) Ziel.
Deswegen habe ich ja zwei Views gemacht, eine für Teilnahmen und eine für Absagen. Und die für Teilnahmen bekommt eben eine Beziehung zum Flag "teilnehmen" und die für Absagen eine Beziehung zum Flag "nicht_teilnehmen". Dann jeweils den Haken bei "Nur gekennzeichnete Inhalte einschließen" setzen und den Node-Titel oder die ID als Argument übergeben und schon siehst du in der einen View alle Mitglieder, die auf teilnehmen geklickt haben und in der anderen alle, die auf "Nicht teilnehmen" geklickt haben. In beiden Views habe ich noch als Felder die Benutzernamen und die eMail-Adresse sowie die Vor- und Nachnamen (aus Profilfeldern) eingefügt und als Beziehung den "Kennzeichnenden Benutzer" ausgewählt. Damit muss ich in dieser Tabelle nicht mehr anzeigen und suchen, wer teilgenommen hat und wer nicht, sondern habe in der einen Tabelle die Teilnehmer und in der anderen Tabelle die "Absager".
Darüber habe ich noch eine andere View gebaut, die alle Inhalte des entsprechenden Typs auflistet. Dahinter wird pro Inhalt ein Link zu den Zusagen und ein Link zu den Absagen angezeigt. Die Links verweisen jeweils auf ihre View und übergeben den Nodetitel oder die Node-ID als Argument.
Außerdem habe ich noch als Beziehungen einen Zähler für jeden Flag eingefügt (Also Flag-teilnehmen Zähler und Flag-nicht_teilnehmen Zähler) und lass die Anzahl der Kennzeichnungen jeweils als Zahl vor dem Link erscheinen.
Puh, Button-Generator... Ich hab da auch das nächstbeste genommen, was nicht ganz hässlich war ^^ Habe diesen Button hier angepasst und verwendet: Link
Mmmh, zu der Bestätigungsseite kann ich dir leider nichts sagen, weil ich die deaktiviert habe (in den Flag-Einstellungen), weil ich wollte, dass die Leute einfach auf den Button klicken können und fertig, in meinem Konzept war diese Bestätigungsseite nicht nötig. Wenn man aus versehen auf "Teilnehmen" klickt, obwohl man nicht teilnehmen will, kann man immer noch auf den anderen Button drücken, eine Bestätigungsseite wäre da nur ein unnötiger Button-Klick mehr für den Benutzer.
Mmmh, kann dir leider kein Live-Beispiel geben, weil ich erstens diese Lösung wahrscheinlich für mich selbst wieder verwerfen muss --> momentan existieren keine Beiträge mit dieser Lösung. Und zweitens, selbst wenn es Beiträge gäbe, könnten die nur angemeldete Benutzer sehen und das bist du nicht und darfst du auch nicht sein, laut meines "Vorgesetzten" ;)
Aber du kannst dir mal dieses Video ansehen, da habe ich eine kleine "Vorführung" für die künftigen Nutzer aufgenommen (nicht wundern, da fehlen paar Farben wegen der 256-Color-Websafe-Palette).
mehrere Kennzeichnungen in einer View
am 06.12.2009 - 00:21 Uhr
Genau dieses Problem, dass beide (Absage & Teilnahme) aber in einer View angezeigt werden sollen habe ich, daher versuche ich mal mein Problem zu schildern, vielleicht kennt ja jemand eine Lösungfür das Problem:
3 Kennzeichnungen: offen, in Bearbeitung, ausgedruckt
keine Regeln
in der View habe ich unter Beziehungen alle drei Kennzeichnungen hinzugefügt, von irgendeinem Nutzer, das Häkchen bei "Nur gekennzeichneten Inhalt einschließen" habe ich nicht gesetzt, ändert aber auch nichts, wenn ich es tue.
unter Felder habe ich den Kennzeichnungs Link hinzu gefügt.
DasProblem ist nun, dass in der View nur jene Einträge gelistet werden, die mit dem Merkmal geflagged sind, die an erster Stelle unter Beziehungen stehen. Ich will aber alle anzeigen lassen & dann in der view danach sortieren lassen (wenn man flags überhaupt sortieren kann :-(
Weiß jemand Rat?
3 views sind keine ALternativen, dass wäre im vorliegenden Fall leider zu unübersichtlich