Abstimmung wordpress: Unterschied zwischen den Versionen

Aus Wikizone
Wechseln zu: Navigation, Suche
Zeile 71: Zeile 71:
 
=== Weitere Abfragen ===
 
=== Weitere Abfragen ===
 
Welche Custom Fields gehören zu welchen Umfrage (Pivot Version)
 
Welche Custom Fields gehören zu welchen Umfrage (Pivot Version)
 +
 +
Dynamische Version (funktioniert noch nicht aber die Richtung dürfte stimmen)
 
<pre>
 
<pre>
 
SET @sql = NULL;
 
SET @sql = NULL;
Zeile 76: Zeile 78:
 
   GROUP_CONCAT(DISTINCT
 
   GROUP_CONCAT(DISTINCT
 
     CONCAT(
 
     CONCAT(
       'max(case when col1 = ''',
+
       'max(case when custom_field = ''',
       col1,
+
       custom_field,
       ''' then col2 end) AS ',
+
       ''' then custom_field end) AS ',
       col1
+
       custom_field
 
     )
 
     )
 
   ) INTO @sql
 
   ) INTO @sql
FROM yourtable;
+
FROM kas_wp_yop_poll_custom_fields;
  
SET @sql = CONCAT('SELECT id, ', @sql, '  
+
SET @sql = CONCAT('SELECT poll_id, ', @sql, '  
                   FROM yourtable
+
                   FROM kas_wp_yop_poll_custom_fields
                   GROUP BY id');
+
                   GROUP BY poll_id');
  
 
PREPARE stmt FROM @sql;
 
PREPARE stmt FROM @sql;

Version vom 7. April 2015, 12:40 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

Besser zum Testen wäre es wenn die Umfrage zunächst in eine Kategorie Test geht die auf der Startseite nicht dargestellt wird.

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.

Technischer Ablauf

Stand März 2015

  • Das Umfrage Plugin im WP ist auf block by Personal Number gestellt.
  • 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. 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

  • 1 oder mehrere Umfragen erstellen (z.B. eine alte klonen - Vorsicht: Einstellungen für Template und Blocking werden nicht übernommen)
  • Template: DEKRA Umfrage mit Kommentar
  • 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 don't Block ??? Oder auf nur Antwort !
  • Geo-bit erstellt die Fragen, diese werden von Mascha angepasst und von Ihr in einem Beitrag veröffentlicht.

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

Löschen unerwüsnchter 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%

Change Log

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 - Overflow für Kommentarausgabe, damit die Felder nicht zu groß werden