Hallo,
in den Umfragen stört es die User gemein, dass es nur zwei Möglichkeiten für Abstimmungen gibt.
Entweder jeder kann eine Stimme abgeben, oder jeder kann alle Optionen abstimmen.
Hat jemand für mich ein paar Ansätze, wie ich ein Plugin basteln kann, in dem der User, der die Umfrage erstellt, die Abstimmungsanzahl selektieren kann.
Das würde bspw. bedeuten, man erstellt eine Umfrage mit 10 Antwortmöglichkeiten, aber nur 5 sind erlaubt.
Ich will kein komplettes Plugin, mir würde es bestimmt reichen, wenn ich ein paar Ansätze bekommen könnte.
Du müsstest vermutlich auf Javascript ausweichen um die ausgewählten Boxen zu überprüfen. z.b. so
PHP-Code:
function CheckCheckboxes(j){ var elLength = document.getElementsByTagName('input').length; var max = 3; var first = 0; var checks = 0; for (i=0; i < elLength; i++) { var type = document.getElementsByTagName('input')[i].type; if (type=="checkbox") { first=i; i=elLength; } } for (i=0; i < elLength; i++) { var type2 = document.getElementsByTagName('input')[i].type; if (type2=="checkbox" && document.getElementsByTagName('input')[i].checked) { checks = checks + 1; if(type2=="checkbox" && checks >= max) { j = j + 1; document.getElementsByTagName('input')[j].checked = false; } } }
}
Ich bin ein absoluter js Anfänger und man kann das sicher auch eleganter lösen. Soviel zur Auswahl. Zusätzlich müsstest du bei der poll-erstellung ein neues Feld einbauen, bei der man eine max Anzahl an Antworten vorgeben kann. Diese müsstest du dann ebenfalls in die js-funktion übergeben und dann als max-wert nehmen.
Außerdem bräuchtest du vermutlich ein neues Template, welches die die checkboxen anpasst. Dieses Template könnte etwa so aussehen.
Dann musst man vermutlich noch die showthread.php anpassen und die neue "semi-multi" dort auch irgendwie bekannt machen. Die entsprechende Stelle sieht im Moment noch so aus
dort müsste man halt dann noch eine Abfrage auf die von dir festgelegte Variable machen
PHP-Code:
also if($poll['semi'] == 1) eval("\$polloptions .= \"".$templates->get("showthread_poll_option_semi")."\";"); }
Aber wie gesagt, dass habe ich alles nicht selber ausgetestet (bis auf das js). So würde ich halt vorgehen und mich rantasten. Vermutlich muss man auch in der poll.php Anpassungen durchführen. Leider fehlt mir hier noch die Erfahrung. Aber das js hat zumindest in meiner Testumgebung funktioniert. Sollte ein User aber kein JS erlauben, dann hast du auch wieder ein Problem und müsstest diese irgendwie abfangen.
Fazit: Meiner Meinung nach sehr viel Aufwand, vor allem im Hinblick auf eventuelle Updates bei mybb. Daher würde ich lieber weiter ein fertiges plugin suchen
So, mal ein kleines Update. Ich habe das ganze nun erfolgreich in der Testumgebung eingespielt. jedoch habe ich dafür
- einen weiteren DB-Eintrag in der poll Tabelle (maxvotes)
- diverse Templates anpassen müssen
- die poll.php und showthread.php anpassen müssen.
Wenn du dir den Aufwand wirklich machen willst, dann kann ich dir später mal die Änderungen bzw. die geänderten Files raus suchen. Wie bereits im ersten Beitrag erwähnt, geht das ganze auch nur mit aktiviertem js. Du müsstest daher überprüfen, ob der User js aktiviert hat und nur in diesem Fall die Umfrage anzeigen lassen. Wenn er es nicht aktiviert hat, dann müsstes du ihm eine entsprechende Meldung ausgeben.
23.01.2011, 15:20 (Dieser Beitrag wurde zuletzt bearbeitet: 23.01.2011, 15:44 von tomtom.)
(22.01.2011, 13:44)Loone schrieb: bei deinem Problem kann ich dir leider nicht helfen, aber dafür habe ich habe ein neues für dich, sorry
Hallo Loone,
vielen Dank für den Hinweis, das muss beim letzten Update auf 1.6.1 passiert sein. Habe es sofort geändert.
Hallo RedParkz,
hey, das ist schon fast mehr als ich wollte
Nein, wirklich vielen Dank, dass sieht gut aus.
Mit der Anpassung wird kein Problem, da ich mir daraus ein Plugin basteln will.
Die Problem bei den Updates/Upgrades sind einfach zu groß und viel zu aufwendig.
Wenn Du mir die Inhalte für die Template- und Dateiänderungen gibst, würde das sehr helfen.
polls.php am besten eine Differenzanalyse mit notepad ++ machen. Dann siehst du die Änderungen sofort. Das sind viele kleinere die ich hier nicht alle raussuchen will. Bitte zuerst in einer Testumgebung testen Ich hoffe, ich habe nichts vergessen.
Hallo RedParkz,
leider habe ich nun doch ein Problem.
Alles installiert, der Wert wird in der Datenbank eingetragen und eine Fehlermeldung bekomme ich auch nicht.
Nur leider funktioniert es bei mir nicht.
Ich vermute dass es an dem js Script liegt, finde aber den Fehler nicht.
Das Script habe ich versucht an unterschiedlichen Stellen zu intigrieren, unter anderem auch im "headerinclude", aber immer ohne Erfolg.