Abstimmung wordpress: Unterschied zwischen den Versionen

Aus Wikizone
Wechseln zu: Navigation, Suche
Zeile 792: Zeile 792:
 
%POLL-VOTE-BUTTON%
 
%POLL-VOTE-BUTTON%
 
</pre>
 
</pre>
 +
 +
== Probleme lösen ==
 +
=== Kommentare werden am Ende der Umfrage nicht angezeigt ===
 +
* In der Umfrage muß Show results before vote gewählt werden
 +
* Im Template müssen die entsprechenden Felder im Bereich "Template after Poll End" vorhanden sein.
  
 
== Change Log ==
 
== Change Log ==

Version vom 10. Juni 2016, 11:22 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.

Todo

  • 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

yop poll Tabellen

------------                -----------------                 --------------
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

SQL nur Ergebnisse

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


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

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

Allgemein

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

Stand März 2015

  • Das Umfrage Plugin im WP ist auf block by Personal Number gestellt. -> Ab 2016 nur noch by Cookie(siehe oben)
  • 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

  • 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)
  • 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

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

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.

  • 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.
  • SQL Abfrage (siehe Statement), Export als ods oder csv
  • Doppelte überprüfen
  • Umwandeln in Excel
  • Schaubild aus Numbers

Löschen unerwünschter Kommentare

In

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

hier auswählen und löschen

Anpassungen am Plugin Yop poll

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

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)

Yop Poll Templates

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

DEKRA Umfrage mit Kommentar

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)

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

Kommentare werden am Ende der Umfrage nicht angezeigt

  • In der Umfrage muß Show results before vote gewählt werden
  • Im Template müssen die entsprechenden Felder im Bereich "Template after Poll End" vorhanden sein.

Change Log

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