Nur wenn alle vom Gremium dafür sind, wird ein Spieler aufgenommen.
OK, dann müssen wir hier eine änderung machen.
1. Wir brauchen ein feld um das total der stimmen zu errechnen. Das kann in Benutzerdefinierte Feldergruppen > Player > Total Stimmen gefunden werden.
Es ist ein single line feld, wir benutzen es um eine zahl (die stimme) abzuspeichern.
2. In der Form verwenden wir ein generisches Feld (das speichert nichts) um das gremium mitglied entscheiden zu lassen ob ja oder nein zur aufnahme.
Je nachdem was das Gremium Mitglied wählt können wir nun:
- die gesamtzahl der stimmen um eins erhöhen falls ja
- oder die gesamtzahl stimmen um eins verringern falls nein.
Willst Du, dass wenn "nein" gestimmt wird, ein punkt abegzogen wird? Währe ja sinnvol, richtig?
Dann werden wir ein Code dafür brauchen, der den wert des Ja/Nein kästchens erhält und +1 oder -1 macht, je nachdem was gewählt wurde.
Das sollte geschen wenn Die Form eingesendet wird, also mit cred_save_data():
https://toolset.com/documentation/programmer-reference/cred-api/#cred_save_data
versteckter Link
add_action('cred_save_data', 'my_save_data_action',10,2);
function my_save_data_action($post_id, $form_data) {
// Form ID ändern
if ($form_data['id']==12558) {
//falls das kästchen gesetzt ist
if ( isset($_POST['aufnehmen-ablehnen']) ) {
//was genau ist im kästchen gesetzt?
$stimme = (int)$_POST['aufnehmen-ablehnen'][0];
if ($stimme=='1') {
//existierende stimmen holen
$stimmen = get_post_meta($post_id, 'wpcf-total-stimmen', true);
//neue stimme +1 in der datenbasis speichern
if (!is_numeric($stimmen)){$stimmen = 0;}
update_post_meta($post_id, 'wpcf-total-stimmen', ++$stimmen);
}
if ($stimme=='2') {
//existierende stimmen holen
$stimmen = get_post_meta($post_id, 'wpcf-total-stimmen', true);
//neue stimme -1 in der datenbasis speichern
if (!is_numeric($stimmen)){$stimmen = 0;}
update_post_meta($post_id, 'wpcf-total-stimmen', --$stimmen);
}
}
}
}
Wenn Du die form in versteckter Link einsendest mit Ja oder nein, wird ein wert im "Total stimmen" angefügt.
Nun könntest Du dann anhand dieser Stimmen sogar den post automatisch ins "hall of fame" bewegen.
Möchtest Du das?
Ja, das wäre cool.
Aber NUR wenn vier von vier dafür sind.
im Moment ist aber nix zu sehen unter dem Link
Hab mich vergessen anzumelden 🙂
Kann man die Seite "Intern" auch sperren? So dass nur angemeldete Personen diesen Bereich sehen?
In dem link sah ich zuvor die Form die Ich einsetzte, ich hab ja mehrmals die Form eingesendet um manuela brütsch zu stimmen.
Nun sehe ich aber ein "Permission denied", statt der form, dies ist wenn ich Gast bin. Das ist gut, du willst ja besucher der seite dies nicht brauchen lassen.
Wir werden später, in einem anderen ticket, die gesamte page unter spezielle regeln setzen damit sie nur von gremium mitglieder gesehen werden kann.
Nun, als administrator sehe ich die form und kann sie einsenden:
versteckter Link
Siehe auch screenshot.
Natürlich muss die Form und die View gestylt werden, mit HTML und CSS in der Form und in der View, aber damit können wir im support ja nicht helfen.
Wenn Du zum beispiel bei Brütsch Manuela ein häckchen für Aufnehmen machst und einsendest, dann wird Brütsch Manuela ein punkt mehr im feld "total stimmen" haben.
Bitte mach ein paar tests ob das alles nach deinem wunsch funktioniert.
Danach, werden wir mit 2 teilen fortfahren:
1. Die page versteckter Link mit Toolset Access vor allen usern vesrtecken ausser den Gremium Mitgliedern
https://toolset.com/forums/topic/pages-mit-access-verstecken-oder-kontrollieren-wer-sie-sehen-kann/
2. Ein mechanismus erstellen, den der Spieler direkt ins hall of fame katapultiert wenn er 4 stimmen erreicht.
https://toolset.com/forums/topic/anhand-von-feldwert-mit-forms-api-ein-anderes-feld-manipulieren/
Nun, wenn hier alles funktionert (funktion der form) wie gewollt können wir mit den obigen 2 tasks fortfahren.
Kann man machen, dass man das Resultat auch auf der Page sieht? Sowie WER bereits abgestimmt hat?
Hmm.... zudem sollte jeder User (Gremium-Mitglied) nur einmal stimmen können. Jetzt sind da schon 5 Stimmen.
Kleiner Nachtrag:
Beim "Ablehnen" müsste man noch eine Begründung hinzufügen können. Heisst also, dass es pro Spieler vier Stimmen gibt, die einem Benutzer zugewiesen werden sollten sowie ein Feld für die Begründung.
Bezüglich des resultates:
mann kann zeigen weiviele stimmen ein spieler hat, aber nicht von welchem Gremium Mitglied.
Also versteh mich nicht falsch: Mann kann das schon machen, aber das brauch Custom Code den Ich hier so nicht zur verfügung stellen kann.
Man kann dennoch zeigen wieviele stimmen jemand hat, indem man das feld "Total Stimmen" einfügt in der View Loop.
==> Hmm.... zudem sollte jeder User (Gremium-Mitglied) nur einmal stimmen können. Jetzt sind da schon 5 Stimmen.
Ja, 5 stimmen wegen meinen tests.
Aber Du hast recht, man sollte Die Form limitieren damit jede person nur einmal abstimmen darf. Aber dann kann ein gremium Mitglied seine stimme auch nicht weiderrufen.
Um zu limitieren wieviele male man abstimmen darf, gibt's vershiedene möglichkeiten.
Das einfachste währe wohl die Post ID gegen welche abgestimmt wird im User zu speichern.
Dann kann man vergleichen ob der User den Post schon abgestimmt hat und die Form ganz verstecken, zum beispiel.
Es ist etwas code nötig, und es könnte bei vielen posts eine etwas langsame seite werden (auf der internen seite).
Es gibt aber keine andere gute möglickeit ohne code und abfragen der posts um dies zu bestimmen.
Es wird etwas zeit brauchen um dies zu knostruieren, aber Ich denke Ich sollte morgen, oder samstag spätestens was haben.
Vielen lieben Dank
Liege wieder mit Schmerzmittel rum 🙁
Wiederrufen muss man die Stimme nicht.
Es kann dann einfach sein, dass ein Spieler, der heute abgelehnt wird, in einem oder zwei Jahren wieder zur Auswahl steht.
Wo passe ich das Design an? Gibt eine View oder?
Ja, die view hast Du ja bereits im Layout in der Page angefügt, die ist versteckter Link
Ich werde dann nach der form und dessen verhalten schauen.
Ich habe eine idee.
Habe eine neue taxonomie "Stimm berechtigte" gemacht, bitte füge da die User als terms ein.
In versteckter Link füge alle gremium mitglieder an, mit dem namen des users als titel und dessen ID als Slug.
Dann werden wir die posts taggen mit diesen users, wenn sie gestimmt haben.
Das erlaubt uns dann in der View die posts auszfiltern die bereits mit dem gegenwärtigen user getaggt sind.
Auch erlaubt es den stimmenden (dessen namen) anzuzeigen - aber nur wer gestimmt hat, nicht was.
Lass mich wissen wann Du alle gremium mitglieder mit name/id in versteckter Link eingefügt hast damit wir fortfharen können.
Erledigt.
Passt gut, da ich heute alle Gremium Mitglieder sehe 🙂
Ich sehe Du hast die gremium mitglieder angefügt aber Du solltest diese so qwie vorhin beschrieben einfügen:
https://toolset.com/forums/topic/geschlossener-bereich/page/2/#post-1260873
Der "Name" des tags sollte der Name des Users sein, und die "Titelform" darunter, sollte die ID des Users sein.
Wenn das fertig ist, können wir dann ein code anfügen um den Post mit dem tag zu aktualiseren wann ein user seine stimme gibt.
Dann, werden wir in der View der filter einbauen um diese posts nicht zu zeigen wenn diejenigen Users eingeloggt sind.
Auch erlaubt uns dass dann anzuzeigen wer bereits stimmte.
Lass mich wissen wann die user bereit sind in versteckter Link
Ah, wenn Du unter Dashboard > Benutzer > BEARBEITEN > in der URL steht die User ID, gleich nach dem wert "user_id=", die zahl ist die User ID.
Diese zahl solltest du als Titelform brauchen