Этот скрипт поможет вам организовать систему опросов и голосований на сайте в каждом материале. Ведь теперь прикрепить опрос или голосование можно непосредственно при добавлении или редактировании статьи.
Добавление опроса к материалу происходит одним щелчком мыши. После чего вам остается только ввести вопрос и задать для него до 10 вариантов ответов. Вы так же можете установить срок действия каждого опроса. Будет ли этот опрос/голосование для всех пользователей сайта или только для зарегистрированных - решать вам! Можно ли будет выбирать один вариант ответа или несколько - решать опять вам!
Вы можете легко создавать и модифицировать ваши опросы. Для этого нужно просто перейти в редактирование статьи. Результаты голосования отображаются графически. Вы можете также выбирать цвет для отображения результатов. В век динамических ip адресов, для защиты опроса от повторного голосования, было принято решение отказаться от проверки ip. Для защиты от накруток используются cookies.
























.add_poll_inp {width:80%}
.add_poll_inp_vote {width:14%; margin-left:1% !important}
.poll-block {width:100%; padding:10px; clear:both;}
.poll-qa {font-size:13px; font-weight:bold}
.poll-form {margin:8px 15px; width:100%}
.poll-answer {display:inline-block;width:100%;vertical-align:middle;line-height:1; font-size:13px}
.poll-answer-radio {display:inline-block;vertical-align:middle;margin:1px 2px 2px 2px;}
.poll-answer-check {display:inline-block;vertical-align:middle;margin-top:2px;}
.num-votes {text-align:center;margin-top:0px;}
.num_votes_int {font-weight:bold}
.poll-button {margin-top:3px;}
.poll-result {margin:7px 0 0 2px;}
.poll-result-answer {margin:0 0 2px 0px;display:inline-block;width:100%;vertical-align:middle;font-size:13px}
.poll-background {display:inline-block;vertical-align:middle;background:#ebeced;width:85%;height:11px;margin-bottom:3px;margin-top:1px;border-radius:2px;}
.poll-result-back {width:0%;height:11px;background:#A1B6CC;border-radius:2px;}
.poll-result-percent {font-size:11px; font-weight: bold;padding-left:5px;}
ul.poll-search-opt {margin: 10px 0px 30px 0px; padding:0px; display: block;}
ul.poll-search-opt li {list-style: none; width: 49%; margin: .5%;float: left; }
ul.poll-search-opt li.clear {width: 100%; clear: both}
.count-poll-all {float: right}
#count-poll-page {font-weight: bold}
add_poll_inp
– поле ввода ответа на странице добавления материала;
add_poll_inp_vote
– поле ввода количества ответов на странице добавления материала;
poll-block
– весь блок с опросом;
poll-qa
– название опроса (вопрос);
poll-form
– форма, в которой размещаются варианты ответов;
poll-answer
– варианты ответов;
poll-answer-radio
– radio кнопка;
poll-answer-check
– checkbox;
num-votes
– строка "Всего ответов";
num_votes_int
– количество ответов в строке "Всего ответов";
poll-button
– блок с кнопкой кнопкой "Ответить" и "Результаты";
poll-result
– блок с результатами опроса;
poll-result-answer
– вариант ответа в результатах опроса;
poll-background
– графическая "полоса" варианта ответа в результатах опроса (бэкграунд);
poll-result-back
– графическая "полоса" варианта ответа в результатах опроса (основной цвет);
poll-result-percent
– кол-во проголосовавших за ответ в результатах опроса;
color1...color10
– класс задает индивидуальный цвет графической "полосы" варианта ответа в результатах опроса..color5 {background: red} задаст красный цвет для 5 ответа в результатах опроса.
<div class="poll-block" style="display:none"></div>
<script type="text/javascript">
$(function () {
$.ajax({
type: 'POST',
url: '/php/polls/result_poll.php',
data: 'poll_id=$MODULE_ID$-$ID$',
cache: false,
success: function(msg){
if ( msg.length != 0 ) $('.poll-block').html(msg).show();
}
});
});
</script>
Для новой:
<li><label for="poll">Опции опросов / голосований:</label>
<li id="polltd2">
<label><input id="pollActive" name="pollActive" onclick="$('#pollTable').toggle()" type="checkbox">Прикрепить опрос к сообщению</label><table id="pollTable" data-page="$PAGE_ID$,$MODULE_ID$" style="width:100%; display:none; margin-top:5px"><tr><td colspan="2">Название опроса:</td></tr><tr><td colspan="2"><input id="pollName" name="pollName" type="text" style="width: 100%" /></td></tr><tr><td colspan="2">Варианты ответов:<span id="count_vote" style="float:right;">Голоса: </span></td></tr><tr id="answer0"><td style="width:40px"><input class="button" style="width:24px;" type="button" value=" + " onclick="addPoll()" title="Добавить ответ"></td><td><input id="pollId0" name="answer[]" type="text" class="add_poll_inp" /><input id="point_poll0" name="count[]" min="0" type="number" class="add_poll_inp_vote" value="0"></td></tr><tr><td colspan="2"><label><input id="pollMuch" name="pollMuch" type="checkbox">Множественный выбор</label></td></tr><tr><td colspan="2"><label><input id="regOnly" type="checkbox" name="regOnly">Только для зарегистрированных пользователей</label></td></tr><tr><td colspan="2"><label><input id="datePoll" onclick="change();" type="checkbox">Cрок действия до </label><select size="1" id="pollYear" name="pollYear" disabled="disabled"><option value="2015">2015</option><option value="2016">2016</option><option value="2017">2017</option><option value="2018">2018</option><option value="2019">2019</option><option value="2020">2020</option></select>-<select size="1" id="pollMonth" name="pollMonth" disabled="disabled"><option value="1">Январь</option><option value="2">Февраль</option><option value="3">Март</option><option value="4">Апрель</option><option value="5">Май</option><option value="6">Июнь</option><option value="7">Июль</option><option value="8">Август</option><option value="9">Сентябрь</option><option value="10">Октябрь</option><option value="11">Ноябрь</option><option value="12">Декабрь</option></select>-<select size="1" id="pollDay" name="pollDay" disabled="disabled"><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option><option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option><option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option><option value="29">29</option><option value="30">30</option><option value="31">31</option></select> <select size="1" id="pollHours" name="pollHours" disabled="disabled"><option value="00">00</option><option value="01">01</option><option value="2">02</option><option value="03">03</option><option value="04">04</option><option value="05">05</option><option value="06">06</option><option value="07">07</option><option value="08">08</option><option value="09">09</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option><option value="21">21</option><option value="22">22</option><option selected="selected" value="23">23</option></select>:<select size="1" id="pollMin" name="pollMin" disabled="disabled"><option value="00">00</option><option value="01">01</option><option value="2">02</option><option value="03">03</option><option value="04">04</option><option value="05">05</option><option value="06">06</option><option value="07">07</option><option value="08">08</option><option value="09">09</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option><option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option><option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option><option value="29">29</option><option value="30">30</option><option value="31">31</option><option value="32">32</option><option value="33">33</option><option value="34">34</option><option value="35">35</option><option value="36">36</option><option value="37">37</option><option value="38">38</option><option value="39">39</option><option value="40">40</option><option value="41">41</option><option value="42">42</option><option value="43">43</option><option value="44">44</option><option value="45">45</option><option value="46">46</option><option value="47">47</option><option value="48">48</option><option value="49">49</option><option value="50">50</option><option value="51">51</option><option value="52">52</option><option value="53">53</option><option value="54">54</option><option value="55">55</option><option value="56">56</option><option value="57">57</option><option value="58">58</option><option selected="selected" value="59">59</option></select></td></tr><tr><td colspan="2">Надпись на кнопке: <input type="text" id="butAnswPoll" name="butAnswPoll" value="Ответить"></td></tr></table>
</li>
Для старой:
<tr><td height="10" class="manTdSep" colspan="2"><hr class="manHr"></td></tr><tr id="polltr"><td class="manTd1" id="polltd">Опции опросов / голосований:</td><td class="manTd2" id="polltd2"><label><input id="pollActive" name="pollActive" onclick="$('#pollTable').toggle()" type="checkbox">Прикрепить опрос к сообщению</label><table id="pollTable" data-page="$PAGE_ID$,$MODULE_ID$" style="width:100%; display:none; margin-top:5px"><tr><td colspan="2">Название опроса:</td></tr><tr><td colspan="2"><input id="pollName" name="pollName" type="text" style="width: 100%" /></td></tr><tr><td colspan="2">Варианты ответов:<span id="count_vote" style="float:right;">Голоса: </span></td></tr><tr id="answer0"><td style="width:40px"><input class="button" style="width:24px;" type="button" value=" + " onclick="addPoll()" title="Добавить ответ"></td><td><input id="pollId0" name="answer[]" type="text" class="add_poll_inp" /><input id="point_poll0" name="count[]" min="0" type="number" class="add_poll_inp_vote" value="0"></td></tr><tr><td colspan="2"><label><input id="pollMuch" name="pollMuch" type="checkbox">Множественный выбор</label></td></tr><tr><td colspan="2"><label><input id="regOnly" type="checkbox" name="regOnly">Только для зарегистрированных пользователей</label></td></tr><tr><td colspan="2"><label><input id="datePoll" onclick="change();" type="checkbox">Cрок действия до </label><select size="1" id="pollYear" name="pollYear" disabled="disabled"><option value="2015">2015</option><option value="2016">2016</option><option value="2017">2017</option><option value="2018">2018</option><option value="2019">2019</option><option value="2020">2020</option></select>-<select size="1" id="pollMonth" name="pollMonth" disabled="disabled"><option value="1">Январь</option><option value="2">Февраль</option><option value="3">Март</option><option value="4">Апрель</option><option value="5">Май</option><option value="6">Июнь</option><option value="7">Июль</option><option value="8">Август</option><option value="9">Сентябрь</option><option value="10">Октябрь</option><option value="11">Ноябрь</option><option value="12">Декабрь</option></select>-<select size="1" id="pollDay" name="pollDay" disabled="disabled"><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option><option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option><option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option><option value="29">29</option><option value="30">30</option><option value="31">31</option></select> <select size="1" id="pollHours" name="pollHours" disabled="disabled"><option value="00">00</option><option value="01">01</option><option value="2">02</option><option value="03">03</option><option value="04">04</option><option value="05">05</option><option value="06">06</option><option value="07">07</option><option value="08">08</option><option value="09">09</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option><option value="21">21</option><option value="22">22</option><option selected="selected" value="23">23</option></select>:<select size="1" id="pollMin" name="pollMin" disabled="disabled"><option value="00">00</option><option value="01">01</option><option value="2">02</option><option value="03">03</option><option value="04">04</option><option value="05">05</option><option value="06">06</option><option value="07">07</option><option value="08">08</option><option value="09">09</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option><option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option><option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option><option value="29">29</option><option value="30">30</option><option value="31">31</option><option value="32">32</option><option value="33">33</option><option value="34">34</option><option value="35">35</option><option value="36">36</option><option value="37">37</option><option value="38">38</option><option value="39">39</option><option value="40">40</option><option value="41">41</option><option value="42">42</option><option value="43">43</option><option value="44">44</option><option value="45">45</option><option value="46">46</option><option value="47">47</option><option value="48">48</option><option value="49">49</option><option value="50">50</option><option value="51">51</option><option value="52">52</option><option value="53">53</option><option value="54">54</option><option value="55">55</option><option value="56">56</option><option value="57">57</option><option value="58">58</option><option selected="selected" value="59">59</option></select></td></tr><tr><td colspan="2">Надпись на кнопке: <input type="text" id="butAnswPoll" name="butAnswPoll" value="Ответить"></td></tr></table></td></tr>
<?if($PAGE_ID$ == 'add') or ($PAGE_ID$ == 'edit')?>
<script type="text/javascript">
$(function () {
$.getScript("/js/addPoll.min.js", function(){
addNewPoll ($YEAR$, $MONTH$, $DAY$, '$PAGE_ID$', '$MODULE_ID$', '$REQUEST_URI$');
});
});
</script>
<?endif?>
<h1>Все опросы</h1>
<hr>
<form id="all_polls" onsubmit="return false">
Сортировать по
<select name="sort">
<option value="date-desc">дате, новые вверху</option>
<option value="date-asc">дате, новые внизу</option>
<option value="all_point-desc">количеству голосов (по убыванию)</option>
<option value="all_point-asc">количеству голосов (по возрастанию)</option>
</select>
<ul class="poll-search-opt">
<li><label><input type="checkbox" name="p1">Скрыть опросы, в которых я голосовал(а)</label></li>
<li><label><input type="checkbox" name="p2">Скрыть опросы, в которых я не голосовал(а)</label></li>
<li><label><input type="checkbox" name="p3">Скрыть завершенные опросы</label></li>
<li><label><input type="checkbox" name="p4">Скрыть незавершенные опросы</label></li>
<li><label><input type="checkbox" name="p5">Скрыть опросы для зарегистрированных</label></li>
<li><label><input type="checkbox" name="p6">Скрыть опросы для незарегистрированных</label></li>
<li class="clear"></li>
</ul>
<button type="button" id="goSort">Показать</button>
<hr>
</form>
<div id="all_polls_results"></div>
<script type="text/javascript">
$(function () {
$.fancybox.showLoading();
$.ajax({
type: 'GET',
url: '/php/polls/all_polls.php?poll_id=all',
cache: false,
success: function(msg){
if ( msg.length != 0 ) $('#all_polls_results').html(msg).show();
else $('#all_polls_results').html('Нет опросов').show();
},
error: function (xhr, textStatus, error) {
$('#all_polls_results').html(textStatus + ', ' + error);
},
complete: function () {
$.fancybox.hideLoading();
}
});
$('#goSort').on('click', function() {
$.fancybox.showLoading();
var str = $("#all_polls").serialize();
$(this).attr('disabled', true);
$.ajax({
type: 'POST',
url: '/php/polls/all_polls.php',
data: str,
cache: false,
success: function(msg){
if ( msg.length != 0 ) $('#all_polls_results').html(msg).show();
else $('#all_polls_results').html('Нет опросов').show();
},
error: function (xhr, textStatus, error) {
$('#all_polls_results').html(textStatus + ', ' + error);
},
complete: function () {
$.fancybox.hideLoading();
$('#goSort').removeAttr('disabled');
}
});
});
$('body').delegate('#load_polls', 'click', function() {
$.fancybox.showLoading();
var page = $(this).attr('alt'),
str = $("#all_polls").serialize();
$(this).remove();
$.ajax({
type: 'POST',
url: '/php/polls/all_polls.php?page='+page,
data: str,
cache: false,
success: function(msg){
if ( msg.length != 0 ) $('#all_polls_results').append(msg);
},
error: function (xhr, textStatus, error) {
$('#all_polls_results').append(textStatus + ', ' + error);
},
complete: function () {
$.fancybox.hideLoading();
}
});
});
});
</script>
$error вы можете указать свои тексты возможных ошибок при голосовании.
$archive указывается отобрать ли ссылку на все опросы ( 0 - нет, 1 - да )
$archive_text указывается текст ссылки на все опросы
$url_archive указывается ссылка на страницу со всеми опросами (Вы ее создавали в 5 шаге на 3 этапе).
$history задается интервал времени, через которое пользователь сможет повторно проголосовать. По умолчанию этот интервал равен 30 дням.
$consumer_key, $consumer_secret, $oauth_token, $oauth_token_secret - данные для работы uAPI uCoz