Navigation überspringen

[Gelöst] Geschlossener Bereich

This support ticket is created vor 5 Jahren, 7 Monaten. There's a good chance that you are reading advice that it now obsolete.

This is the technical support forum for Toolset - a suite of plugins for developing WordPress sites without writing PHP.

Everyone can read this forum, but only Toolset clients can post in it. Toolset support works 6 days per week, 19 hours per day.

Sun Mon Tue Wed Thu Fri Sat
- - 14:00 – 20:00 14:00 – 20:00 14:00 – 20:00 14:00 – 20:00 14:00 – 20:00
- - - - - - -

Supporter timezone: Asia/Ho_Chi_Minh (GMT+07:00)

Dieses Thema enthält 57 Antworten, hat 2 Stimmen.

Zuletzt aktualisiert von Beda vor 5 Jahren, 6 Monaten.

Assistiert von: Beda.

Author
Artikel
#1255677

Nur wenn alle vom Gremium dafür sind, wird ein Spieler aufgenommen.

#1257917

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?

#1258499

Ja, das wäre cool.
Aber NUR wenn vier von vier dafür sind.
im Moment ist aber nix zu sehen unter dem Link

#1258505

Hab mich vergessen anzumelden 🙂

Kann man die Seite "Intern" auch sperren? So dass nur angemeldete Personen diesen Bereich sehen?

#1259173
Bildschirmfoto 2019-06-05 um 14.40.25.png

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.

#1259259

Kann man machen, dass man das Resultat auch auf der Page sieht? Sowie WER bereits abgestimmt hat?

#1259303

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.

#1260037

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.

#1260045

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?

#1260059

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.

#1260873

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.

#1260927

Erledigt.
Passt gut, da ich heute alle Gremium Mitglieder sehe 🙂

#1261911

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

#1261929

Und wo finde ich die iD?

#1261965

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