Umfrage Plugin

Hallo,

ich habe folgendes Problem: Für meine Elgg Installation benötige ich ein Umfrage Plugin.

Dafür benutze ich derzeit dieses hier: http://community.elgg.org/plugins/515853/0.8/polls (Davon die aktuelle Github Version mit 1.8 Unterstützung)

Dieses Plugin funktioniert sehr gut, allerdings benötige ich auch die Möglichkeit das Mitglieder des Portals eigene Antwortmöglichkeiten hinzufügen können.

Wisst ihr wie ich das bewerkstelligen kann? Kennt ihr ein anderes Plugin, dass diese Funktionen bietet oder wisst ihr wie man das Plugin anpasst?

Vielen Dank für die hoffentlich baldige Hilfe, Julius

 

  • Ich glaube nicht, dass es schon ein Plugin gibt, das Deine Anforderungen erfüllt.

    Wahrscheinlich ist es auch nicht ganz trivial, das Polls-Plugin dahingehend zu modifizieren, dass es die Möglichkeiten bietet, die Du suchst. Ich kann Dir sicherlich keine Schritt-für-Schritt-Anleitung geben, um das umzusetzen, da es mit Sicherheit nicht damit getan ist, nur ein / zwei Zeilen zu ändern.

    Ich denke, dass folgende Punkte zu klären sind:

    Ermöglicht es das Polls-Plugin bisher schon, dass derjenige, der eine Umfrage gestartet hat, die Antwortmöglichkeiten später ändern kann bzw. neue Möglichkeiten hinzufügen kann? Wenn dies bereits möglich ist, dann könnte die Erweiterung des Plugins, um allen Mitgliedern eine Änderung der Antwortmöglichkeiten zu erlauben, deutlich einfacher sein. Elgg hat eine Rechtemanagement, das man anpassen kann. Normalerweise kann nur der Besitzer oder ein Admin bestimmte Dinge editieren / löschen. Im Falle der Umfragen, müßten die Zugriffsrechte für eine Umfrage dahingehend geändert werden, dass allen Mitgliedern das Editieren erlaubt wird. Falls das spätere Editieren noch gar nicht möglich ist, ist das Erreichen dessen, was Du suchst, noch einmal deutlich komplexer.

    Was ist mit Mitgliedern, die bereits abgestimmt haben? Im Grunde läuft es darauf hinaus, ob ein Mitglied seine Antwort später ändern kann oder nicht. Wenn die Antwortmöglichkeiten immer die gleichen bleiben, ist dies wahrscheinlich nicht ganz so wichtig, aber wenn zu einem späteren Zeitpunkt plötzlich ganz andere Optionen verfügbar sind (oder jemand womöglich die schon bereits verfügbaren Antworten manipuliert), muss es gerechterweise möglich sein, eine bereits abgegebene Antwort jederzeit zu ändern oder u.U. auch komplett zurückzunehmen. Wie sieht es dahingehend beim Polls-Plugin aus? Wenn es bereits möglich ist, seine Antwort zu ändern, ist es natürlich wiederum deutlich einfacher, das Plugin an Deine Anforderungen anzupassen.

  • Vielen Dank für deine Antwort :)

    Das hilft mir schon mal weiter, denn die Umfragen können tatsächlich nachträglich geändert werden. Ich werde mir dann gleich mal anschauen wie ich das vlt. mit den Rechten regeln kann...

    Ich melde später nochmal und berichte.

  • Mein Wissen über das Elgg Framework reicht leider absolut nicht aus um da Änderungen vorzunehmen...

    Für andere aus diesem Forum ist das bestimmt kein Problem, da es anscheinend keine tief greifenden Änderungen verlangt. Mir ist diese Funktion sehr Wichtig und andere könnten diese wahrscheinlich auch sehr gut gebrauchen. Hat also irgendjemand die Möglichkeit diese kleine Funktion zu implementieren?

    (Das Plugin das ich meine findet sich in aktuellster Form hier: https://github.com/kevinjardine/polls)

    Danke schonmal dafür, dass sich das vlt. jemand mal anschaut.

  • Ganz so trivial ist das ganze nun auch wieder nicht...

    Damit jeder einer Umfrage neue Auswahlmöglichkeiten hinzufügen kann, mußst Du den sogenannten permissions_check-Plugin Hook verwenden. Dafür ist folgendes in der start.php des Polls-Plugins hinzuzufügen:

    Zuest die folgende Zeile in der polls_init()-Funktion:

    elgg_register_plugin_hook_handler('permissions_check', 'object', 'polls_write_permission_check');

    und dann die polls_write_permission_check()-Funktion z.B. am Ende von start.php selbst:

    function polls_write_permission_check($hook, $entity_type, $returnvalue, $params)
    {
            if ($params['entity']->getSubtype() == 'poll') {

                    $user = $params['user'];

                    if ($user) {
                       return true;
                    }
            }
    }

    Durch Modifizieren des Codes in dieser Weise, wird jedem Mitglied Deiner Seite Schreibzugriff auf alle Polls-Elggobjekte gegeben. Das haben standardmäßig nur derjenige, der die Umfrage gestartet hat und Admins. Allerdings wird es durch diese Modifizierung allein auch jedem Mitglied möglich sein, jede Umfrage nicht nur zu verändern sondern auch zu löschen.

    Was allerdings nach Änderung der Umfrageoptionen nicht möglich ist, ist die schon getroffene Abstimmungsentscheidung zu revidieren. Das Plugin sieht eine solche Möglichkeit nicht vor.

    Das mit dem Löschen ist vielleicht auch noch recht einfach zu implementieren, aber die Möglichkeit, seine Meinung bei einer Umfrage zu ändern (ohne das die Stimme dann gleich zweimal gezählt wird) ist dann schon etwas komplizierten und zeitaufwändiger umzusetzen.

    Ich glaube nicht, dass Dir das einer für umsonst zeitnah liefern wird. Wenn Du unbedingt darauf angewiesen bist, würde ich mal bei Kevin Jardine nachfragen, ob er sein Polls-Plugin Deinen Wünschen entsprechend erweitert. Da er aber eine professioneller Entwickler ist (also zum Lebensunterhalt Geld verdienen muss), wird er das wohl kaum für umsonst machen.

  • Vielen, vielen Dank.

    Das hilft mir schonmal weiter. Das mit der Bezahlung des Wntwicklers ist so eine Sache...viel Geld möchte ich da jetzt auch nicht investieren. Zur Not werde ich irgendeine Elgg unabhängige Lösung wählen müssen. Das würde mich direkt zu einer nächsten Frage bringen: Welche Methode wäre am klügsten um eine Nutzersitzung, also den Login etc. auf eine eigene php-Anwendung zu übertragen? Hantiert man da am besten mit der Session, oder ist es besser den Login extra zu machen und auf die Elgg Datenbank zuzugreifen?

    Ich hoffe das mein Gedankengang deutlich geworden ist...

     

  • Sorry, aber wie genau Du eine externe Anwendung einbindest, kann ich Dir leider nicht sagen. Ich denke, es kommt in ersten Linie schon mal darauf an, was für Möglichkeiten zur Nutzeridentifizierung diese Anwendung liefert. Im Prinzip kannst Du auf die Elgg-Funktionen innerhalb eines externen PHP-Skripts zurückgreifen, wenn Du ein Include von engine/start.php von Elgg in dieses Skript einfügst. Damit wäre auch eine Benutzervalidierung/-identifizierung über die Session möglich. Dann mußt Du natürlich trotzdem diese externe Anwendung "auf den Schirm" kriegen, d.h. irgendwie innerhalb Deiner Elgg-Seite einbinden.

    Eine solche Einbindung läuft mehr oder weniger darauf hinaus, ein Elgg-Plugin dafür zu schreiben - sei es um nur einen Menulink zu haben, der einen auf die Seite der externen Anwendung leitet. Wenn die Integration so sein soll, dass ein Nutzer gar nicht merkt, dass er auf eine externe Anwendung zugreift, ist der Aufwand wahrscheinlich genau so gross wie eine Anpassung der Polls-Plugins. Du kannst aber u.U. auch einfach ein iframe innerhalb einer Seite auf Deiner Elgg-Installation einblenden. Innerhalb des iframes wäre dann die externe Anwendung. Das setzt aber vorraus, das diese Anwendung über die aufgerufene URL den Nutzer identifizieren kann (get_input) und die ganze Verwaltung von Abstimmungen selbst getrennt von der Elgg-Datenbank vornimmt.

    Um direkt auf die Elgg-Datenbank zuzugreifen, gibt es wohl auch Möglichkeiten über die RestAPI von Elgg. Da hab ich allerdings noch nie was damit zu tun gehabt.

German Support Group

German Support Group

The German support group within the Elgg community.