Abstimmung wordpress: Unterschied zwischen den Versionen

Aus Wikizone
Wechseln zu: Navigation, Suche
 
(27 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
siehe auch [[DEKRA Direkt Blog]]
 
siehe auch [[DEKRA Direkt Blog]]
 
Der Blog '''DEKRA Direkt''' wird als interner Konzernblog verwendet und soll als Kontaktmittel der Mitarbeiter zur Vorstandsebene dienen. Dazu gibt es unter anderem die DEKRA Direkt Mitarbeiter Umfrage.
 
Der Blog '''DEKRA Direkt''' wird als interner Konzernblog verwendet und soll als Kontaktmittel der Mitarbeiter zur Vorstandsebene dienen. Dazu gibt es unter anderem die DEKRA Direkt Mitarbeiter Umfrage.
 +
 +
== Quickstart ==
 +
=== Ablauf 2017 ===
 +
* Poll anlegen (alten kopieren - Datum Template und Blocking wird nicht kopiert und muß gesetzt werden)
 +
** View Results auf after Vote
 +
** Blocking by Cookie
 +
** Datum (Startdatum aktuell und Ende offen)
 +
** Template (Kommentar)
 +
* Testbeitrag anlegen
 +
** Kategorie Test
 +
** Später Kategorie ändern
 +
* Beenden
 +
** End Datum setzen
 +
** View Results before Vote
  
 
== Todo ==
 
== Todo ==
Besser zum Testen wäre es wenn die Umfrage zunächst in eine Kategorie Test geht die auf der Startseite nicht dargestellt wird.  
+
* Backendanzeige der Votes ist Buggy
 +
* Besser zum Testen wäre es wenn die Umfrage zunächst in eine Kategorie Test geht die auf der Startseite nicht dargestellt wird. - OK ist über Plugin realisiert.
  
 
Wordpress Extension Yop Poll - verwendet bei Mascha im Blog intern:
 
Wordpress Extension Yop Poll - verwendet bei Mascha im Blog intern:
Zeile 98: Zeile 113:
 
=== Allgemein ===
 
=== Allgemein ===
 
Läuft 2 Wochen ab ca. Mitte des Monats. Danach Auswertung und Grafikerstellung.
 
Läuft 2 Wochen ab ca. Mitte des Monats. Danach Auswertung und Grafikerstellung.
 +
==== Updates ====
 +
2015-10 - Umfrage nur mit Cookie check -> Mascha möchte keine Userunterbrechung. Später werden die Ergebnisse manuell gereinigt
 +
 +
===== Infos zum Cookie Check =====
 +
Wenn man mit Cookies kontrolliert, wie wir das im Moment machen, dann testet das Plugin immer ob für eine bestimmte Umfrage schon abgestimmt wurde. '''Egal ob die Umfrage neu gestartet wurde'''.
 +
 +
Technisch wird dazu ein Cookie mit der ID der Umfrage hinterlegt. Dieses hat eine '''Gültigkeitsdauer''' (kann man einstellen z.B. 14 Tage). Solange das Cookie gültig ist kann man dann nicht mehr abstimmen.
 +
 +
Das bedeutet '''alle Browser die noch nicht abgestimmt haben können auch abstimmen''' !
 +
 +
Wenn du nochmal testen willst mußt du die Cookies löschen oder 14 Tage warten.
 +
 +
Nochmal zur Info Vor und Nachteile der anderen Lösungen
 +
 +
* '''Kontrolle über IP''': Vorteil recht zuverlässig schwer zu umgehen. Nachteil: wenn Benutzer mit der gleichen IP ankommen kann es sein dass einer nicht abstimmen kann.
 +
 +
* Über die '''Personalnummer''' Vorteil: Sehr Zuverlässig. Nachteil: Schlechte User Experience
  
 
== Technischer Ablauf ==
 
== Technischer Ablauf ==
Stand März 2015
+
Stand 2017
 +
* Block by Cookie
  
* Das Umfrage Plugin im WP ist auf '''block by Personal Number''' gestellt.
+
Stand März 2015 (obsolete)
* Ein User kann nur Voten wenn eine id=12345 (Personalnummer) angehängt ist. Ansonsten wird zunächst auf das DEKRA Intranet weiter geleitet (über alert).  
+
 
 +
* Das Umfrage Plugin im WP ist auf '''block by Personal Number''' gestellt. -> Ab 2016 nur noch '''by Cookie'''(siehe oben)
 +
* obsolete -> Ein User kann nur Voten wenn eine id=12345 (Personalnummer) angehängt ist. Ansonsten wird zunächst auf das DEKRA Intranet weiter geleitet (über alert).  
 
* Dort wird die Personalnummer als id=12345 an den Link angehängt und auf intern-blog.dekra.de/category/dekra-direkt/?id=12345 geleitet Nur wenn eine solche id vorhanden ist kann gevoted werden. Ist nicht supersicher weil die Nummer willkürlich geändert werden kann, nachträgliche Prüfung wäre mit Personalnummern Liste möglich. Verbesserungspotential wäre POST übermittlung, Gültigkeitsprüfung durch PN-Index oder Formel.
 
* Dort wird die Personalnummer als id=12345 an den Link angehängt und auf intern-blog.dekra.de/category/dekra-direkt/?id=12345 geleitet Nur wenn eine solche id vorhanden ist kann gevoted werden. Ist nicht supersicher weil die Nummer willkürlich geändert werden kann, nachträgliche Prüfung wäre mit Personalnummern Liste möglich. Verbesserungspotential wäre POST übermittlung, Gültigkeitsprüfung durch PN-Index oder Formel.
 
* Hat die id '''schon gevotet''' wird nur das Ergebnis angezeigt.
 
* Hat die id '''schon gevotet''' wird nur das Ergebnis angezeigt.
Zeile 109: Zeile 144:
  
 
=== Umfrage erstellen ===
 
=== Umfrage erstellen ===
 +
* Achtung manchmal kollidiert die Abfrage mit alten Cookies der letzten Umfrage. Genau ist das noch nicht geklärt. Hilfe bringt:
 +
** dafür sorgen, daß die alte Umfrage nicht mit angezeigt wird
 +
** Logs löschen
 +
** Wenn nichts hilft die Stats Reseten (kann sein daß dies nicht nötig ist.)
 +
 
* 1 oder mehrere (Mascha will meist 3) Umfragen-Dummies erstellen (z.B. eine alte klonen - '''Vorsicht: Einstellungen für Datum, Template und Blocking''' werden nicht übernommen)
 
* 1 oder mehrere (Mascha will meist 3) Umfragen-Dummies erstellen (z.B. eine alte klonen - '''Vorsicht: Einstellungen für Datum, Template und Blocking''' werden nicht übernommen)
* Template: '''DEKRA Umfrage mit Kommentar'''
+
* Template: '''DEKRA Umfrage mit Kommentar'''  
 +
** Mit dem Template '''DEKRA Umfrage mit dynamischem Kommentar''' kann man zusätzlich noch JavaScript Popups öffnen und auf die gewählte Antwort reagieren (siehe JS im Template)
 +
** Das Template '''Umfrage mit mehr Antworten''' erlaubt mehr als zwei Antwortmöglichkeiten. Die Kommentare werden dann untereinander dargestellt. Das ist zugleich auch das sicherste Template, was die Darstellung angeht.
 
* Blocking by auf '''Personal Number''' - dadurch wird die Abfrage des id Parameters gestartet. Zum Testen auf don't Block stellen. Achtung IE hat manchmal Caching Probleme.
 
* Blocking by auf '''Personal Number''' - dadurch wird die Abfrage des id Parameters gestartet. Zum Testen auf don't Block stellen. Achtung IE hat manchmal Caching Probleme.
 
* Start und Enddatum setzen
 
* Start und Enddatum setzen
Zeile 122: Zeile 164:
 
=== Ende der Umfrage und Auswertung ===
 
=== Ende der Umfrage und Auswertung ===
 
Für die Auswertung benötigt Mascha eine '''Excel-Tabelle''' in der '''nach Antworten und sortiert''' ist. Ebenso die dazugehörigen Kommentare. Doppelte IPs rausschmeißen. Wenn Personalnummerliste vorhanden könnte man hier nach Gültigkeit prüfen.
 
Für die Auswertung benötigt Mascha eine '''Excel-Tabelle''' in der '''nach Antworten und sortiert''' ist. Ebenso die dazugehörigen Kommentare. Doppelte IPs rausschmeißen. Wenn Personalnummerliste vorhanden könnte man hier nach Gültigkeit prüfen.
* Umfrage mit Datum beenden oder auf Maschas Hinweis, '''Umfrage auf don't block''', damit die Umleitung auf Dekra nicht mehr aktiv ist, außerdem '''Enddatum setzen''' und auf '''Ergebnis anzeigen nach Enddatum'''.
+
* Umfrage mit Datum beenden oder auf Maschas Hinweis, '''Umfrage auf don't block''', damit die Umleitung auf Dekra nicht mehr aktiv ist, außerdem '''Enddatum setzen''' und auf '''Ergebnis anzeigen nach Enddatum'''. Endzeit etwas zurücksetzen, da manchmal die Serverzeit um ein paar Stunden differiert.
 
* SQL Abfrage (siehe Statement), Export als ods oder csv
 
* SQL Abfrage (siehe Statement), Export als ods oder csv
 
* Doppelte überprüfen
 
* Doppelte überprüfen
Zeile 134: Zeile 176:
  
 
hier auswählen und löschen
 
hier auswählen und löschen
 +
 +
Problem: die Kommentare werden nicht mehr angezeigt. TODO
  
 
=== Anpassungen  am Plugin Yop poll===
 
=== Anpassungen  am Plugin Yop poll===
Zeile 160: Zeile 204:
  
 
'''Im Template muß der Block natürlich auch gesetzt sein.''' (beim entsprechenden Template)
 
'''Im Template muß der Block natürlich auch gesetzt sein.''' (beim entsprechenden Template)
 +
 +
Problem: Die Ausgabe erfolgt nur wenn die Logs der Umfrage nicht gelöscht sind.
 +
Ausgabe der Kommentare bisher
 +
<syntaxhighlight lang="sql">
 +
SELECT yp.id,yp.name,yp.question,ypa.answer,ypvcf.custom_field_value,ypcf.custom_field,ypl.vote_id FROM kas_wp_yop_polls yp
 +
JOIN kas_wp_yop_poll_custom_fields ypcf ON (yp.id=ypcf.poll_id)
 +
JOIN kas_wp_yop_poll_votes_custom_fields ypvcf ON (ypcf.id = ypvcf.custom_field_id)
 +
JOIN kas_wp_yop_poll_logs ypl ON (ypvcf.vote_id = ypl.vote_id)
 +
JOIN kas_wp_yop_poll_answers ypa ON (ypl.answer_id = ypa.id)
 +
WHERE yp.id=[pollID] AND ypl.answer_id=[answerID];
 +
</syntaxhighlight>
 +
Die Abfrage wird für jede Antwort (answer_id) ausgeführt. Aus den Logs wird die answer_id geholt. Wenn diese im Log fehlt wird nichts zurückgegeben.
 +
Wie kann man die Zuordnung Kommentar - answer_id noch herstellen? answer_id und vote_id stehen auch in yop_poll_voters, vote_id steht auch in yop_poll_votes_custom_fields
 +
Also statt mit wp_yop_poll_logs joint man mit yop_poll_voters.
 +
 +
Beispiel
 +
<syntaxhighlight lang="sql">
 +
SELECT yp.id, yp.name, yp.question, ypa.answer, ypvcf.custom_field_value, ypcf.custom_field, ypv.vote_id
 +
FROM kas_wp_yop_polls yp
 +
JOIN kas_wp_yop_poll_custom_fields ypcf ON ( yp.id = ypcf.poll_id )
 +
JOIN kas_wp_yop_poll_votes_custom_fields ypvcf ON ( ypcf.id = ypvcf.custom_field_id )
 +
JOIN kas_wp_yop_poll_voters ypv ON ( ypvcf.vote_id = ypv.vote_id )
 +
JOIN kas_wp_yop_poll_answers ypa ON ( ypv.answer_id = ypa.id )
 +
WHERE yp.id =50
 +
AND ypv.answer_id =113
 +
</syntaxhighlight>
  
 
== Yop Poll Templates ==
 
== Yop Poll Templates ==
Zeile 768: Zeile 838:
 
%POLL-VOTE-BUTTON%
 
%POLL-VOTE-BUTTON%
 
</pre>
 
</pre>
 +
 +
== Probleme lösen ==
 +
=== Generelle Prüfungen ===
 +
* Custom Text Fields müssen für die Modifizierungen genau Custom Text Field 1 Kommentarund  Custom Text Field 2 Name lauten (Mascha verändert das manchmal)
 +
 +
=== Kommentare werden am Ende der Umfrage nicht angezeigt ===
 +
* In der Umfrage muß bei Show results after Poll End Date oder zur Not auch Before Vote gewählt werden
 +
* Im Template müssen die entsprechenden Felder im Bereich "Template after Poll End" vorhanden sein.
  
 
== Change Log ==
 
== Change Log ==
 +
=== Anpassungen für Admin Kommentare ===
 +
2016-07
 +
 +
'''Datenbanktabelle:'''
 +
<syntaxhighlight lang="sql">
 +
--
 +
-- Tabellenstruktur für Tabelle `kas_wp_yop_poll_admin_comments`
 +
--
 +
 +
CREATE TABLE IF NOT EXISTS `kas_wp_yop_poll_admin_comments` (
 +
`id` int(10) unsigned NOT NULL,
 +
  `vote_id` varchar(128) COLLATE latin1_general_ci NOT NULL,
 +
  `comment` text COLLATE latin1_general_ci NOT NULL,
 +
  `poll_id` int(11) NOT NULL
 +
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=2 ;
 +
 +
</syntaxhighlight>
 +
 +
<pre>
 +
 +
 +
db_schema.php Tabelle hinzufügen
 +
admin.php Tabelle hinzufügen
 +
yop_poll.php Tabelle hinzufügen
 +
 +
answer_result_replace_callback ->
 +
get_poll_comments -> admin kommentare dazufügen
 +
 +
2016-06
 +
Problem: Wenn Logs gelöscht sind werden keine Kommentare mehr angezeigt
 +
Lösungsansatz. Leeres Ergebnis, weil ein Join über die vote_id zu den Logs geht.
 
8.8.13
 
8.8.13
<pre>
+
 
 
Hallo Mascha und Clemens,
 
Hallo Mascha und Clemens,
  
Zeile 793: Zeile 902:
  
 
10/2014
 
10/2014
- Kommentare in Spalten sortieren, je nach Antwort
+
* Kommentare in Spalten sortieren, je nach Antwort
- Overflow für Kommentarausgabe, damit die Felder nicht zu groß werden
+
* CSS Overflow auf auto setzen, damit bei langen Kommentaren ein Scrollbalken kommt. Dafür maximale Höhe für Kommentarausgabe, damit die Felder optisch nicht zu groß werden
 +
 
 +
2016 - 04
 +
* Neues Template für mehr Antwortoptionen. Kommentare werden untereinander (nicht in Spalten) dargestellt
 +
* Einträge bei denen der User die nur den Namen ausfüllen aber nichts im Kommentarfeld schreiben werden nicht mehr angezeigt

Aktuelle Version vom 30. November 2017, 11:18 Uhr

siehe auch DEKRA Direkt Blog Der Blog DEKRA Direkt wird als interner Konzernblog verwendet und soll als Kontaktmittel der Mitarbeiter zur Vorstandsebene dienen. Dazu gibt es unter anderem die DEKRA Direkt Mitarbeiter Umfrage.

Quickstart[Bearbeiten]

Ablauf 2017[Bearbeiten]

  • Poll anlegen (alten kopieren - Datum Template und Blocking wird nicht kopiert und muß gesetzt werden)
    • View Results auf after Vote
    • Blocking by Cookie
    • Datum (Startdatum aktuell und Ende offen)
    • Template (Kommentar)
  • Testbeitrag anlegen
    • Kategorie Test
    • Später Kategorie ändern
  • Beenden
    • End Datum setzen
    • View Results before Vote

Todo[Bearbeiten]

  • Backendanzeige der Votes ist Buggy
  • Besser zum Testen wäre es wenn die Umfrage zunächst in eine Kategorie Test geht die auf der Startseite nicht dargestellt wird. - OK ist über Plugin realisiert.

Wordpress Extension Yop Poll - verwendet bei Mascha im Blog intern:

yop poll Anpassungen[Bearbeiten]

yop poll Tabellen[Bearbeiten]

------------                -----------------                 --------------
yop_polls                   yop_poll_answers                  yop_poll_logs
------------                -----------------                 --------------
id          --------------| id               --------------|  id
name                      |-poll_id                        |  pn
question                    answer                         |  poll_id
total_votes                 votes                          |  vote_id
total_answers               ...                            |- answer_id
...                                                           --------------
------------                -----------------




----------------------      ----------------------------
yop_poll_custom_fields      yop_poll_votes_custom_fields
----------------------      ----------------------------
id                          id
poll_id                     poll_id
custom_field                vote_id
...                         custom_field_id
----------------------      user_id
                            custom_field_value
                            ----------------------------

Da bei einem custom text field bei der fragesstellung nur einzeiliger text möglich war, musst die datei

/wp-content/plugins/yop-poll/inc/yop_poll_model.php


In der datenbank die Tabelle:

kas_wp_yop_poll_votes_custom_fields

Feld: custom_field_value

von varchar (255) auf Text geändert.

SQL-Abfragen für Antworten mit Kommentar[Bearbeiten]

SQL nur Ergebnisse[Bearbeiten]

SELECT `id` , `poll_id` , `answer_id` , `ip` , `http_referer` , `vote_date` , `pn`
FROM `kas_wp_yop_poll_logs`
WHERE `poll_id` =38
ORDER BY `answer_id` ASC
LIMIT 0 , 500

SQL Abfrage mit Kommentaren[Bearbeiten]


Alte Abfrage

SELECT *
FROM `kas_wp_yop_poll_logs`
LEFT OUTER JOIN `kas_wp_yop_poll_votes_custom_fields` ON `kas_wp_yop_poll_logs`.`vote_id` = `kas_wp_yop_poll_votes_custom_fields`.`vote_id`
WHERE `kas_wp_yop_poll_logs`.`poll_id` =13

Weitere Abfragen[Bearbeiten]

Welche Custom Fields gehören zu welchen Umfrage (Pivot Version)

Dynamische Version (funktioniert noch nicht aber die Richtung dürfte stimmen)

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'max(case when custom_field = ''',
      custom_field,
      ''' then custom_field end) AS ',
      custom_field
    )
  ) INTO @sql
FROM kas_wp_yop_poll_custom_fields;

SET @sql = CONCAT('SELECT poll_id, ', @sql, ' 
                  FROM kas_wp_yop_poll_custom_fields 
                  GROUP BY poll_id');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

Neue Umfrage für DEKRA Connect durchführen[Bearbeiten]

Allgemein[Bearbeiten]

Läuft 2 Wochen ab ca. Mitte des Monats. Danach Auswertung und Grafikerstellung.

Updates[Bearbeiten]

2015-10 - Umfrage nur mit Cookie check -> Mascha möchte keine Userunterbrechung. Später werden die Ergebnisse manuell gereinigt
Infos zum Cookie Check[Bearbeiten]

Wenn man mit Cookies kontrolliert, wie wir das im Moment machen, dann testet das Plugin immer ob für eine bestimmte Umfrage schon abgestimmt wurde. Egal ob die Umfrage neu gestartet wurde.

Technisch wird dazu ein Cookie mit der ID der Umfrage hinterlegt. Dieses hat eine Gültigkeitsdauer (kann man einstellen z.B. 14 Tage). Solange das Cookie gültig ist kann man dann nicht mehr abstimmen.

Das bedeutet alle Browser die noch nicht abgestimmt haben können auch abstimmen !

Wenn du nochmal testen willst mußt du die Cookies löschen oder 14 Tage warten.

Nochmal zur Info Vor und Nachteile der anderen Lösungen

  • Kontrolle über IP: Vorteil recht zuverlässig schwer zu umgehen. Nachteil: wenn Benutzer mit der gleichen IP ankommen kann es sein dass einer nicht abstimmen kann.
  • Über die Personalnummer Vorteil: Sehr Zuverlässig. Nachteil: Schlechte User Experience

Technischer Ablauf[Bearbeiten]

Stand 2017

  • Block by Cookie

Stand März 2015 (obsolete)

  • Das Umfrage Plugin im WP ist auf block by Personal Number gestellt. -> Ab 2016 nur noch by Cookie(siehe oben)
  • obsolete -> Ein User kann nur Voten wenn eine id=12345 (Personalnummer) angehängt ist. Ansonsten wird zunächst auf das DEKRA Intranet weiter geleitet (über alert).
  • Dort wird die Personalnummer als id=12345 an den Link angehängt und auf intern-blog.dekra.de/category/dekra-direkt/?id=12345 geleitet Nur wenn eine solche id vorhanden ist kann gevoted werden. Ist nicht supersicher weil die Nummer willkürlich geändert werden kann, nachträgliche Prüfung wäre mit Personalnummern Liste möglich. Verbesserungspotential wäre POST übermittlung, Gültigkeitsprüfung durch PN-Index oder Formel.
  • Hat die id schon gevotet wird nur das Ergebnis angezeigt.
  • Im DEKRA Intranet werden Links an die eine id angehängt werden soll mit dem Parameter ?id=public Veröffentlicht. public wird dann automatisch durch die Personalnummer des Mitarbeiters ersetzt, bevor weitergeleitet wird.

Umfrage erstellen[Bearbeiten]

  • Achtung manchmal kollidiert die Abfrage mit alten Cookies der letzten Umfrage. Genau ist das noch nicht geklärt. Hilfe bringt:
    • dafür sorgen, daß die alte Umfrage nicht mit angezeigt wird
    • Logs löschen
    • Wenn nichts hilft die Stats Reseten (kann sein daß dies nicht nötig ist.)
  • 1 oder mehrere (Mascha will meist 3) Umfragen-Dummies erstellen (z.B. eine alte klonen - Vorsicht: Einstellungen für Datum, Template und Blocking werden nicht übernommen)
  • Template: DEKRA Umfrage mit Kommentar
    • Mit dem Template DEKRA Umfrage mit dynamischem Kommentar kann man zusätzlich noch JavaScript Popups öffnen und auf die gewählte Antwort reagieren (siehe JS im Template)
    • Das Template Umfrage mit mehr Antworten erlaubt mehr als zwei Antwortmöglichkeiten. Die Kommentare werden dann untereinander dargestellt. Das ist zugleich auch das sicherste Template, was die Darstellung angeht.
  • Blocking by auf Personal Number - dadurch wird die Abfrage des id Parameters gestartet. Zum Testen auf don't Block stellen. Achtung IE hat manchmal Caching Probleme.
  • Start und Enddatum setzen
  • Abstimmung in einen Beitrag in Kategorie Dekra Direkt einpflegen (evtl. erst nach dem Testen) -> Startseite sichtbar
  • Am Ende Umfrage auf nur Antwort !
  • Geo-bit erstellt die Fragen, diese werden von Mascha angepasst und von Ihr in einem Beitrag veröffentlicht.
  • Start der Umfrage durch setzen der Kategorie (todo ob das klappt)

Test der Umfrage[Bearbeiten]

  • Vorige Tests sind sinnvoll. Ein Test von Geo-bit (einfach id anhängen). Ein Test von Dekra

Ende der Umfrage und Auswertung[Bearbeiten]

Für die Auswertung benötigt Mascha eine Excel-Tabelle in der nach Antworten und sortiert ist. Ebenso die dazugehörigen Kommentare. Doppelte IPs rausschmeißen. Wenn Personalnummerliste vorhanden könnte man hier nach Gültigkeit prüfen.

  • Umfrage mit Datum beenden oder auf Maschas Hinweis, Umfrage auf don't block, damit die Umleitung auf Dekra nicht mehr aktiv ist, außerdem Enddatum setzen und auf Ergebnis anzeigen nach Enddatum. Endzeit etwas zurücksetzen, da manchmal die Serverzeit um ein paar Stunden differiert.
  • SQL Abfrage (siehe Statement), Export als ods oder csv
  • Doppelte überprüfen
  • Umwandeln in Excel
  • Schaubild aus Numbers

Löschen unerwünschter Kommentare[Bearbeiten]

In

Admin -> Yop poll -> All polls -> meineUmfrage -> votes

hier auswählen und löschen

Problem: die Kommentare werden nicht mehr angezeigt. TODO

Anpassungen am Plugin Yop poll[Bearbeiten]

yop-poll => inc => admin.php

Hier die DB mit prefix versehen. "kas_"

yop-poll => inc => yop_poll_model.php
yop-poll => inc => db_schema.php
yop-poll => js => yop_poll_public.js

Kommentare[Bearbeiten]

MUSS überarbeitet werden

yop_poll_modell.php
return_poll_html -> 

dort wird der Template Block

[ANSWER_RESULT_CONTAINER]
[/ANSWER_RESULT_CONTAINER]

mit pregreplace über eine Callback Funktion ersetzt

answer_result_callback(m$)

darin wiederum wird

get_poll_comments($poll_id) 

aufgerufen, dieses gibt ein array zurück das dann in HTML umgesetzt wird. Diese Ausgabe erfolbt über die Abfrage von

$this->is_view_poll_results()

Das bedeutet die Ausgabe erfolgt wenn im Backend die Bedingung für die Ausgabe der Results gesetzt ist (z.B. Results after End Date) Gute erweiterung wäre ein eigener Block für die Comments

Im Template muß der Block natürlich auch gesetzt sein. (beim entsprechenden Template)

Problem: Die Ausgabe erfolgt nur wenn die Logs der Umfrage nicht gelöscht sind. Ausgabe der Kommentare bisher

SELECT yp.id,yp.name,yp.question,ypa.answer,ypvcf.custom_field_value,ypcf.custom_field,ypl.vote_id FROM kas_wp_yop_polls yp 
JOIN kas_wp_yop_poll_custom_fields ypcf ON (yp.id=ypcf.poll_id) 
JOIN kas_wp_yop_poll_votes_custom_fields ypvcf ON (ypcf.id = ypvcf.custom_field_id)
JOIN kas_wp_yop_poll_logs ypl ON (ypvcf.vote_id = ypl.vote_id)
JOIN kas_wp_yop_poll_answers ypa ON (ypl.answer_id = ypa.id)
WHERE yp.id=[pollID] AND ypl.answer_id=[answerID];

Die Abfrage wird für jede Antwort (answer_id) ausgeführt. Aus den Logs wird die answer_id geholt. Wenn diese im Log fehlt wird nichts zurückgegeben. Wie kann man die Zuordnung Kommentar - answer_id noch herstellen? answer_id und vote_id stehen auch in yop_poll_voters, vote_id steht auch in yop_poll_votes_custom_fields Also statt mit wp_yop_poll_logs joint man mit yop_poll_voters.

Beispiel

SELECT yp.id, yp.name, yp.question, ypa.answer, ypvcf.custom_field_value, ypcf.custom_field, ypv.vote_id
FROM kas_wp_yop_polls yp
JOIN kas_wp_yop_poll_custom_fields ypcf ON ( yp.id = ypcf.poll_id )
JOIN kas_wp_yop_poll_votes_custom_fields ypvcf ON ( ypcf.id = ypvcf.custom_field_id )
JOIN kas_wp_yop_poll_voters ypv ON ( ypvcf.vote_id = ypv.vote_id )
JOIN kas_wp_yop_poll_answers ypa ON ( ypv.answer_id = ypa.id )
WHERE yp.id =50
AND ypv.answer_id =113

Yop Poll Templates[Bearbeiten]

Todo - Anpassen um ungenutzte Features zu nutzen (z.B. after End Date schöne Anzeige der Ergebnisse)

DEKRA Umfrage mit Kommentar[Bearbeiten]

Vor Umfrage:

<div id="yop-poll-name-%POLL-ID%" class="yop-poll-name">%POLL-NAME%</div>
<div id="yop-poll-question-%POLL-ID%" class="yop-poll-question" style="display:table-cell;height:130px;vertical-align:middle;">%POLL-QUESTION%</div>
<div id="yop-poll-answers-%POLL-ID%" class="yop-poll-answers">
	<ul>
		[ANSWER_CONTAINER]
		<li class="yop-poll-li-answer-%POLL-ID%">
			%POLL-ANSWER-CHECK-INPUT% 
			%POLL-ANSWER-LABEL%
			<span class="yop-poll-results-text-%POLL-ID%">%POLL-ANSWER-RESULT-LABEL%</span>
             %POLL-ANSWER-RESULT-BAR%
        </li>
        [/ANSWER_CONTAINER]
		[OTHER_ANSWER_CONTAINER]
		<li class="yop-poll-li-answer-%POLL-ID%">
			%POLL-OTHER-ANSWER-CHECK-INPUT% 
			%POLL-OTHER-ANSWER-LABEL% 
			<span class="yop-poll-results-text-%POLL-ID%">%POLL-ANSWER-RESULT-LABEL%</span>
			%POLL-OTHER-ANSWER-TEXT-INPUT% 
            %POLL-ANSWER-RESULT-BAR%
        </li>
        [/OTHER_ANSWER_CONTAINER]
	</ul>
</div>
<div id="yop-poll-custom-%POLL-ID%">
	<ul>
		[CUSTOM_FIELD_CONTAINER]
		<li>%POLL-CUSTOM-FIELD-LABEL% %POLL-CUSTOM-FIELD-TEXT-INPUT%</li>
		[/CUSTOM_FIELD_CONTAINER]
	</ul>
</div>    
[CAPTCHA_CONTAINER]
<div id="yop-poll-captcha-%POLL-ID%">
    <div class="yop-poll-captcha-image-div" id="yop-poll-captcha-image-div-%POLL-ID%">
        %CAPTCHA-IMAGE%
        <div class="yop-poll-captcha-helpers-div" id="yop-poll-captcha-helpers-div-%POLL-ID%">%RELOAD-CAPTCHA-IMAGE% </div>
        <div class="yop_poll_clear"></div>
    </div>
    %CAPTCHA-LABEL%
    <div class="yop-poll-captcha-input-div" id="yop-poll-captcha-input-div-%POLL-ID%">%CAPTCHA-INPUT%</div>
</div>
[/CAPTCHA_CONTAINER]
<div id="yop-poll-vote-%POLL-ID%" class="yop-poll-footer">
	<div>%POLL-VOTE-BUTTON%</div>
	<div id="yop-poll-results-%POLL-ID%">%POLL-VIEW-RESULT-LINK%</div>
	<div>%POLL-TOTAL-ANSWERS%</div>
	<div>%POLL-TOTAL-VOTES%</div>
</div>

Nach Umfrage

<div id="yop-poll-name-%POLL-ID%" class="yop-poll-name">%POLL-NAME%</div>
<div id="yop-poll-question-%POLL-ID%" class="yop-poll-question" style="display:table-cell;height:130px;vertical-align:middle;">%POLL-QUESTION%</div>
<div id="yop-poll-answers-%POLL-ID%" class="yop-poll-answers">
</li><div id="gb_cust">VORLÄUFIGES·ERGEBNIS·DER·ABSTIMMUNG</div>	
<ul>
		[ANSWER_RESULT_CONTAINER]
		<li class="yop-poll-li-result-%POLL-ID%">
			<label class="pds-feedback-label-%POLL-ID%">
				<span class="pds-answer-text-%POLL-ID%">%POLL-ANSWER-LABEL%</span>
				<span class="pds-feedback-result-%POLL-ID%">
					<span class="pds-feedback-per-%POLL-ID%"> %POLL-ANSWER-RESULT-LABEL%</span>
				</span>
			</label>
			<div>
             %POLL-ANSWER-RESULT-BAR%
           </div>
		
		[/ANSWER_RESULT_CONTAINER]

	</ul>
</div>
<div id="yop-poll-vote-%POLL-ID%" class="yop-poll-footer">
	<div>%POLL-TOTAL-ANSWERS%</div>

	<div>%POLL-TOTAL-VOTES%</div>
	<div id="yop-poll-back-%POLL-ID%">%POLL-BACK-TO-VOTE-LINK%</div>
</div>

Before Start Date

This poll is about to <br>
start at %POLL-START-DATE%<br>
and finish at %POLL-END-DATE%<br>

After End Date

<div id="yop-poll-name-%POLL-ID%" class="yop-poll-name">%POLL-NAME%</div>
<div id="yop-poll-question-%POLL-ID%" class="yop-poll-question">%POLL-QUESTION%</div>
<div id="yop-poll-answers-%POLL-ID%" class="yop-poll-answers">

</div>
<div id="gb_end">Die Abstimmung ist beendet.</div>

<ul class="afterVote">

		[ANSWER_RESULT_CONTAINER]
		
		[/ANSWER_RESULT_CONTAINER]
</ul>

CSS

#yop-poll-container-%POLL-ID% {
    background-image: url("http://intern-blog.dekra.de/wp-content/uploads/2013/02/bg_poll_1.png");
/*    border: 5px solid #3F8B43;*/
background-repeat:no-repeat;
    color: #555555;
    font-size: 12px;
    overflow: hidden;
    padding: 10px;
    width: 632px;
/*    height: 300px;*/
}
#yop-poll-name-%POLL-ID% {
	font-size:14px;
	font-weight:bold;
}

#yop-poll-question-%POLL-ID% {
    color: #000000;
    font-size: 14pt;
    font-weight: 500;
    height: 80px;
    line-height: 26px;
    margin: 0 50px 0 0;
    padding-left: 215px;
    padding-top: 40px;
    text-align: center;
    width: 300px;
margin-bottom: 100px;
}
#yop-poll-answers-%POLL-ID% { 
 }
#yop-poll-answers-%POLL-ID% ul {
    list-style: none outside none;
    margin: 0;
    position: relative;
    top: 20px;
    left: 270px;
}
#yop-poll-answers-%POLL-ID% ul li { 
	font-style:normal;
	margin-bottom:10px;
	padding:0px;
	font-size:12px;
   width: 190px !important;
}
#yop-poll-answers-%POLL-ID% ul li input { 
	margin:0px; 
	float:none;
}
#yop-poll-answers-%POLL-ID% ul li label { 
	margin:0px; 
	font-style:normal; 
	font-weight:bold; 
	font-size:16px; 
	float:none;
        z-index: 10; 
}
.yop-poll-results-%POLL-ID% {
    font-size: 12px;
    font-style: italic;
    font-weight: normal;
    margin-left: 15px;
}

#yop-poll-custom-%POLL-ID% {  }
#yop-poll-custom-%POLL-ID% ul {
    font-size: 14px;
    font-weight: 500;
    left: 270px;
    list-style: none outside none;
    margin: 0;
    padding: 0;
    position: relative;
    top: 20px;
    float: left;
    width: 375px;
}
#yop-poll-custom-%POLL-ID% ul li { 
	padding:0px;
	margin:0px;	
	font-size:14px;
}
#yop-poll-container-%POLL-ID% input[type='text'] { 
    font-size: 12px;
    margin: 10px 0;
    padding: 2%;
    text-indent: 2%;
    width: 92%;
    border: 1px solid #B9B8B8;
}

#yop-poll-container-%POLL-ID% textarea {
    font-size: 12px;
    margin: 10px 0;
    padding: 2%;
    text-indent: 2%;
    width: 92%;
    font-family: Verdana;
    color: #666;
    border: 1px solid #B9B8B8;
}

#yop-poll-captcha-input-div-%POLL-ID% {
margin-top:5px;
}
#yop-poll-captcha-helpers-div-%POLL-ID% {
width:30px;
float:left;
margin-left:5px;
height:0px;
}

#yop-poll-captcha-helpers-div-%POLL-ID% img {
margin-bottom:2px;
}

#yop-poll-captcha-image-div-%POLL-ID% {
margin-bottom:5px;
}

#yop_poll_captcha_image_%POLL-ID% {
float:left;
}

.yop_poll_clear {
clear:both;
}



#yop-poll-vote-%POLL-ID% {
float:left; 
/*width:100%; */
padding-left: 270px;
margin-top: 20px;
margin-bottom: 100px;
}

li.yop-poll-li-result-%POLL-ID% {
/*    margin-top: 50px;*/
}

.yop-poll-results-bar-%POLL-ID% { background:#f5f5f5; height:10px;  }
.yop-poll-results-bar-%POLL-ID% div { background:#555; height:10px; }
#yop-poll-vote-%POLL-ID% div#yop-poll-vote-%POLL-ID% button { float:left; }
#yop-poll-vote-%POLL-ID% div#yop-poll-results-%POLL-ID% {
    float: right;
    margin-bottom: 20px;
    margin-top: -20px;
    width: auto;
}
#yop-poll-vote-%POLL-ID% div#yop-poll-results-%POLL-ID% a { color:#3F8B43; text-decoration:underline; font-size:12px;}
#yop-poll-vote-%POLL-ID% div#yop-poll-back-%POLL-ID% a { color:#3F8B43; text-decoration:underline; font-size:12px;}
#yop-poll-vote-%POLL-ID% div { float:left; width:100%; }

#yop-poll-container-error-%POLL-ID% {
	font-size:12px;
	font-style:italic;
	color:red;
    left: 290px;
    position: relative;
    top: 270px;
}

.gb-btn {
    background-image: url("http://intern-blog.dekra.de/wp-content/uploads/2013/02/bg_button.png");
    border: medium none;
    border-radius: 10px 10px 10px 10px;
    color: #FFFFFF;
    cursor: pointer;
    font-size: 1.9em;
    font-weight: bold;
    height: 40px;
    text-transform: uppercase;
    width: 130px;
}

#gb_cust {
    color: #999999;
    font-size: 1.4em;
    font-weight: bold;
    padding-left: 0px;
    padding-top: 40px;
    background-color: transparent;
}
.yop-poll-results-bar-%POLL-ID% div{
    background-image: url("http://intern-blog.dekra.de/wp-content/uploads/2013/02/bg_button.png");
    height: 30px;
    margin-top: 0px;
}


.yop-poll-results-bar-%POLL-ID% {
height: 30px;
width:99%;
}

.pds-answer-text-%POLL-ID% {
font-size: 0.85em;
    font-weight: bold;
color: #999;
/*    margin-top: -10px;*/
}

.pds-feedback-per-%POLL-ID% {
   color: #999999;
    font-size: 1em;
    margin-left: 5px;
    margin-top: -25px;
    font-weight: bold;
}

.yop_poll_vote_button{
    background-image: url("http://intern-blog.dekra.de/wp-content/uploads/2013/02/bg_button.png");
    border: medium none;
    border-radius: 10px 10px 10px 10px;
    color: #FFFFFF;
    cursor: pointer;
    font-size: 1.9em;
    font-weight: bold;
    height: 40px;
    width: 250px;
}

#gb_end {
    color: #999999;
    font-size: 1.4em;
    font-weight: bold;
    padding-bottom: 100px;
    padding-left: 250px;
    padding-top: 130px;
    background-color: transparent;
}

#yop-poll-container-%POLL-ID% textarea {
#max-width: 350px !important;
}

#yop-poll-container-success-%POLL-ID% {
	font-size:12px;
	font-style:italic;
	color:green;
}

JS

function stripBorder_%POLL-ID%(object) {
	object.each(function() {
			if( parseInt(jQuery(this).width() ) > 0) {
				jQuery(this).width( parseInt( jQuery(this).width() ) - parseInt(jQuery(this).css("border-left-width")) - parseInt(jQuery(this).css("border-right-width")) );
			}
			else {
				jQuery(this).css("border-left-width", '0px');
				jQuery(this).css("border-right-width", '0px');
			}
	});
}
function stripPadding_%POLL-ID%(object) {
	object.each(function() { 
			jQuery(this).width( parseInt( jQuery(this).width() ) - parseInt(jQuery(this).css("padding-left")) - parseInt(jQuery(this).css("padding-left")) );
	});
}

function strip_results_%POLL-ID%() {
        stripPadding_%POLL-ID%( jQuery("#yop-poll-container-%POLL-ID% .yop_poll_li_result-%POLL-ID%") );   
	stripBorder_%POLL-ID%( jQuery("#yop-poll-container-%POLL-ID% .yop-poll-result-bar-%POLL-ID%"));
}

jQuery(document).ready(function(e) {
                if(typeof window.strip_results_%POLL-ID% == 'function') 
			strip_results_%POLL-ID%();
    
		if(typeof window.tabulate_answers_%POLL-ID% == 'function') 
			tabulate_answers_%POLL-ID%();
		
		if(typeof window.tabulate_results_%POLL-ID% == 'function') 
			tabulate_results_%POLL-ID%();
		
});

function equalWidth_%POLL-ID%(obj, cols, findWidest ) {
 findWidest  = typeof findWidest  !== 'undefined' ? findWidest  : false;
    if ( findWidest ) {
		obj.each(function() {
				var thisWidth = jQuery(this).width();
				width = parseInt(thisWidth / cols); 
				jQuery(this).width(width);	
				jQuery(this).css('float', 'left');	
		});
	}
	else {
		var widest = 0;
		obj.each(function() {
				var thisWidth = jQuery(this).width();
				if(thisWidth > widest) {
					widest = thisWidth; 
				}	
		});
		width = parseInt( widest / cols); 
		obj.width(width);	
		obj.css('float', 'left');	
	}	
}

function tabulate_answers_%POLL-ID%() {
	equalWidth_%POLL-ID%( jQuery("#yop-poll-container-%POLL-ID% .yop-poll-li-answer-%POLL-ID%"), %ANSWERS-TABULATED-COLS% );
        //equalWidth_%POLL-ID%( jQuery("#yop-poll-container-%POLL-ID% .yop-poll-li-answer-%POLL-ID% .yop-poll-results-bar-%POLL-ID% div "), %ANSWERS-TABULATED-COLS%, true );
}

function tabulate_results_%POLL-ID%() {
	equalWidth_%POLL-ID%( jQuery("#yop-poll-container-%POLL-ID% .yop-poll-li-result-%POLL-ID%"), %RESULTS-TABULATED-COLS% );
        //equalWidth_%POLL-ID%( jQuery("#yop-poll-container-%POLL-ID% .yop-poll-li-result-%POLL-ID% .yop-poll-results-bar-%POLL-ID% div "), %RESULTS-TABULATED-COLS%, true );
}
			jQuery(document).ready(function(){
				runOnPollStateChange_%POLL-ID%();
				});

			function runOnPollStateChange_%POLL-ID%() {};

Dekra Poll Template für ID 2 (altes Template)[Bearbeiten]

Vor Umfrage

<div id="yop-poll-name-%POLL-ID%" class="yop-poll-name">%POLL-NAME%</div>
<div id="yop-poll-question-%POLL-ID%" class="yop-poll-question">%POLL-QUESTION%</div>
<div id="yop-poll-answers-%POLL-ID%" class="yop-poll-answers">
<div id="gb_cust">STIMMEN SIE JETZT AB !</div>
  <ul>
    [ANSWER_CONTAINER]
    <li class="gb-ac yop-poll-li-answer-%POLL-ID%">
      %POLL-ANSWER-CHECK-INPUT% 
      %POLL-ANSWER-LABEL%
      <span class="yop-poll-results-text-%POLL-ID%">
        %POLL-ANSWER-RESULT-LABEL%
      </span>
      %POLL-ANSWER-RESULT-BAR%
    </li>
    [/ANSWER_CONTAINER]
    [OTHER_ANSWER_CONTAINER]
    <li class="gb-oac yop-poll-li-answer-%POLL-ID%">
      %POLL-OTHER-ANSWER-CHECK-INPUT% 
      %POLL-OTHER-ANSWER-LABEL% 
      <span class="yop-poll-results-text-%POLL-ID%">
        %POLL-ANSWER-RESULT-LABEL%
      </span>
      %POLL-OTHER-ANSWER-TEXT-INPUT% 
      %POLL-ANSWER-RESULT-BAR%
    </li>
    [/OTHER_ANSWER_CONTAINER]
  </ul>
</div>
[CUSTOM_FIELD_CONTAINER]
		<li>%POLL-CUSTOM-FIELD-LABEL% %POLL-CUSTOM-FIELD-TEXT-INPUT%</li>
		[/CUSTOM_FIELD_CONTAINER]
[CAPTCHA_CONTAINER]
<div id="yop-poll-captcha-%POLL-ID%">
    <div class="yop-poll-captcha-image-div" id="yop-poll-captcha-image-div-%POLL-ID%">
        %CAPTCHA-IMAGE%
        <div class="yop-poll-captcha-helpers-div" id="yop-poll-captcha-helpers-div-%POLL-ID%">%RELOAD-CAPTCHA-IMAGE% </div>
        <div class="yop_poll_clear"></div>
    </div>
    %CAPTCHA-LABEL%
    <div class="yop-poll-captcha-input-div" id="yop-poll-captcha-input-div-%POLL-ID%">%CAPTCHA-INPUT%</div>
</div>
[/CAPTCHA_CONTAINER]
<div id="yop-poll-vote-%POLL-ID%" class="yop-poll-footer">
  <div class="poll-vote-button">%POLL-VOTE-BUTTON%</div>
  <div>%POLL-TOTAL-ANSWERS%</div>
  <div>%POLL-TOTAL-VOTES%</div>
</div>
<div class="gb-storage" gb-poll-id="%POLL-ID%"></div>
<script type="text/javascript">

// Load check from Dean Edwards/Matthias Miller/John Resig

function init() {
  if (arguments.callee.done) return;
  arguments.callee.done = true;
  if (_timer) clearInterval(_timer);

  jQuery(document).ready(function() {
    // remove vote button
    jQuery('.poll-vote-button').html('');
    // add Buttons
    jQuery('.gb-ac').each(function(index,domEle){
      var answer_id;
      var label;
      var content;
      answer_id = jQuery(this).find('input:first').val();
      label = jQuery(this).find('label:first').html();
      content = '<button class="gb-btn" value="' + answer_id + '" type="button">' + label + '</button>';
      //jQuery(this).append(content);
      jQuery(this).html(content);
      //add click handler
      jQuery(this).find('button:first').click(function(){
        answer_id = jQuery(this).val();
        poll_id = jQuery('.gb-storage:first').attr('gb-poll-id');
        hidden_field = '<input id="yop-poll-answer-' +answer_id + '" type="hidden" name="yop_poll_answer" value="' + answer_id + '">'
        jQuery(this).after(hidden_field);
        yop_poll_do_vote(poll_id);
        return false;
      });
    });
  });

};

/* for Mozilla/Opera9 */
if (document.addEventListener) {
  document.addEventListener("DOMContentLoaded", init, false);
}

/* for Internet Explorer */
/*@cc_on @*/
/*@if (@_win32)
  document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
  var script = document.getElementById("__ie_onload");
  script.onreadystatechange = function() {
    if (this.readyState == "complete") {
      init(); // call the onload handler
    }
  };
/*@end @*/

/* for Safari */
if (/WebKit/i.test(navigator.userAgent)) { // sniff
  var _timer = setInterval(function() {
    if (/loaded|complete/.test(document.readyState)) {
      init(); // call the onload handler
    }
  }, 10);
}

/* for other browsers */
window.onload = init;
</script>

Nach Umfrage

<div id="yop-poll-name-%POLL-ID%" class="yop-poll-name">%POLL-NAME%</div>
<div id="yop-poll-question-%POLL-ID%" class="yop-poll-question">%POLL-QUESTION%</div>
<div id="yop-poll-answers-%POLL-ID%" class="yop-poll-answers">
<div id="gb_cust">VORLÄUFIGES ERGEBNIS DER ABSTIMMUNG</div>
	<ul>
		[ANSWER_RESULT_CONTAINER]
		<li class="yop-poll-li-result-%POLL-ID%">
			<label class="pds-feedback-label-%POLL-ID%">
				<div class="pds-answer-text-%POLL-ID%">%POLL-ANSWER-LABEL%</div>
				<div class="pds-feedback-result-%POLL-ID%">
					
				</div>
			</label>
			<div>
             %POLL-ANSWER-RESULT-BAR%
           </div><div class="pds-feedback-per-%POLL-ID%"> %POLL-ANSWER-RESULT-LABEL%</div>
		</li>
		[/ANSWER_RESULT_CONTAINER]
	</ul>
</div>
<div id="yop-poll-vote-%POLL-ID%" class="yop-poll-footer">
	<div>%POLL-TOTAL-ANSWERS%</div>
	<div>%POLL-TOTAL-VOTES%</div>
	<!--<div id="yop-poll-back-%POLL-ID%">%POLL-BACK-TO-VOTE-LINK%</div>-->
</div>

Before Start Date

This poll is about to <br>
start at %POLL-START-DATE%<br>
and finish at %POLL-END-DATE%<br>

After End Date

This poll is closed!
Poll activity: <br>
start_date %POLL-START-DATE%<br>
end_date %POLL-END-DATE%<br>

Poll Results:
<div id="yop-poll-question-%POLL-ID%" class="yop-poll-question">%POLL-QUESTION%</div>
<div id="yop-poll-answers-1" class="yop-poll-answers">
	<ul>
		[ANSWER_RESULT_CONTAINER]
		<li class="yop-poll-li-result-%POLL-ID%">
			<label class="pds-feedback-label">
				<span class="pds-answer-text">%POLL-ANSWER-LABEL%</span>
				<span class="pds-feedback-result">
					<span class="pds-feedback-per"> %POLL-ANSWER-RESULT-LABEL%</span>
				</span>
			</label>
			<span class="pds-clear" style="display: block;clear: both;height:1px;line-height:1px;"> </span>
	%POLL-ANSWER-RESULT-BAR%
		</li>
		[/ANSWER_RESULT_CONTAINER]
	</ul>
</div>
%POLL-VOTE-BUTTON%

Probleme lösen[Bearbeiten]

Generelle Prüfungen[Bearbeiten]

  • Custom Text Fields müssen für die Modifizierungen genau Custom Text Field 1 Kommentarund Custom Text Field 2 Name lauten (Mascha verändert das manchmal)

Kommentare werden am Ende der Umfrage nicht angezeigt[Bearbeiten]

  • In der Umfrage muß bei Show results after Poll End Date oder zur Not auch Before Vote gewählt werden
  • Im Template müssen die entsprechenden Felder im Bereich "Template after Poll End" vorhanden sein.

Change Log[Bearbeiten]

Anpassungen für Admin Kommentare[Bearbeiten]

2016-07

Datenbanktabelle:

--
-- Tabellenstruktur für Tabelle `kas_wp_yop_poll_admin_comments`
--

CREATE TABLE IF NOT EXISTS `kas_wp_yop_poll_admin_comments` (
`id` int(10) unsigned NOT NULL,
  `vote_id` varchar(128) COLLATE latin1_general_ci NOT NULL,
  `comment` text COLLATE latin1_general_ci NOT NULL,
  `poll_id` int(11) NOT NULL
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=2 ;


db_schema.php Tabelle hinzufügen
admin.php Tabelle hinzufügen
yop_poll.php Tabelle hinzufügen

answer_result_replace_callback -> 
get_poll_comments -> admin kommentare dazufügen

2016-06
Problem: Wenn Logs gelöscht sind werden keine Kommentare mehr angezeigt
Lösungsansatz. Leeres Ergebnis, weil ein Join über die vote_id zu den Logs geht.
8.8.13

Hallo Mascha und Clemens,

folgende Funktionalität ist jetzt implementiert:

- Zu einem Hauptbeitrag (Sozusagen 1.Ebene - entspricht dem Post in
Wordpress) kann ein normaler Benutzer eine Frage stellen.
- Zu den Fragen (das wäre dann die 2. Ebene) kann jeder Benutzer
beliebig viele Beiträge machen
- Benutzer ab Level 7 (Redakteure und Admins) können beliebig viele
Fragen stellen.

- Labels sind jetzt: "Hinterlasse einen Beitrag" und "Beitrag abschicken"

Grüße,

Stephan

11

10/2014

  • Kommentare in Spalten sortieren, je nach Antwort
  • CSS Overflow auf auto setzen, damit bei langen Kommentaren ein Scrollbalken kommt. Dafür maximale Höhe für Kommentarausgabe, damit die Felder optisch nicht zu groß werden

2016 - 04

  • Neues Template für mehr Antwortoptionen. Kommentare werden untereinander (nicht in Spalten) dargestellt
  • Einträge bei denen der User die nur den Namen ausfüllen aber nichts im Kommentarfeld schreiben werden nicht mehr angezeigt