SVarlamov
9 years ago
commit
d85d01f238
21 changed files with 2147 additions and 0 deletions
@ -0,0 +1,22 @@ |
|||||||
|
## poll |
||||||
|
|
||||||
|
# Модуль Опросы/Голосование v1.1a |
||||||
|
|
||||||
|
|
||||||
|
## Данный модуль предназачен для организации системы опросов на сайте. |
||||||
|
|
||||||
|
* Возможности модуля позволяют создавать неограниченное количество опросных листов, а также неограниченное количество вопросов. |
||||||
|
* Добавить в .htaccess <br> |
||||||
|
|
||||||
|
```php |
||||||
|
## Poll<br> |
||||||
|
RewriteRule ^poll-([0-9]+).html$ index.php?module=poll&action=result&pid=$1<br> |
||||||
|
RewriteRule ^pollcomment-([0-9]+).html$ index.php?module=poll&action=form&pop=1&pid=$1<br> |
||||||
|
RewriteRule ^poll-archive.html$ index.php?module=poll&action=archive<br> |
||||||
|
``` |
||||||
|
|
||||||
|
## Перед копированием модуля в папку modules, удалите файл README.md, копируйте только корневую папку poll со всем ее содержимым внутри! |
||||||
|
|
||||||
|
## Changelog: |
||||||
|
|
||||||
|
22.09.2013 - версия 1.1a |
@ -0,0 +1,7 @@ |
|||||||
|
Äîáàâèòü â .htaccess |
||||||
|
|
||||||
|
|
||||||
|
## Poll |
||||||
|
RewriteRule ^poll-([0-9]+).html$ index.php?module=poll&action=result&pid=$1 |
||||||
|
RewriteRule ^pollcomment-([0-9]+).html$ index.php?module=poll&action=form&pop=1&pid=$1 |
||||||
|
RewriteRule ^poll-archive.html$ index.php?module=poll&action=archive |
@ -0,0 +1,78 @@ |
|||||||
|
<div class="title"><h5>{#POLL_COMMENTS_TITLE#}</h5></div> |
||||||
|
|
||||||
|
<div class="widget" style="margin-top: 0px;"> |
||||||
|
<div class="body"> |
||||||
|
{#POLL_COMMENTS_INFO#} |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="breadCrumbHolder module"> |
||||||
|
<div class="breadCrumb module"> |
||||||
|
<ul> |
||||||
|
<li class="firstB"><a href="index.php" title="{#MAIN_PAGE#}">{#MAIN_PAGE#}</a></li> |
||||||
|
<li><a href="index.php?do=modules&cp={$sess}">{#MODULES_SUB_TITLE#}</a></li> |
||||||
|
<li><a href="index.php?do=modules&action=modedit&mod=poll&moduleaction=1&cp={$sess}">{#POLL_MODULE_NAME#}</a></li> |
||||||
|
<li><strong class="code">{#POLL_COMMENTS_TITLE#}</strong></li> |
||||||
|
</ul> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
<div class="widget first"> |
||||||
|
<div class="head"> |
||||||
|
<h5 class="iFrames">{#POLL_COMMENTS_TITLE#}</h5> |
||||||
|
<div class="num"><a class="basicNum" href="index.php?do=modules&action=modedit&mod=poll&moduleaction=new&cp={$sess}">{#POLL_NEW_LINK#}</a></div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<form method="post" action="index.php?do=modules&action=modedit&mod=poll&moduleaction=comments&id={$smarty.request.id|escape}&cp={$sess}&pop=1&sub=save&page={$smarty.request.page|escape}"> |
||||||
|
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm"> |
||||||
|
<col width="10" /> |
||||||
|
<col width="150" /> |
||||||
|
<thead> |
||||||
|
<tr> |
||||||
|
<td align="center"><div align="center"><span class="icon_sprite ico_delete"></span></div></td> |
||||||
|
<td>{#POLL_COMMENT_INFO#}</td> |
||||||
|
<td>{#POLL_COMMENT_TITLE#}</td> |
||||||
|
</tr> |
||||||
|
</thead> |
||||||
|
<tbody> |
||||||
|
{foreach from=$items item=item} |
||||||
|
<tr> |
||||||
|
<td> |
||||||
|
<input title="{#POLL_MARK_DELETE#}" name="del[{$item->id}]" type="checkbox" id="del[{$item->id}]" class="topDir" value="1"> |
||||||
|
</td> |
||||||
|
<td nowrap="nowrap" valign="top"> |
||||||
|
{#POLL_COMMENT_AUTHOR#}<br /> |
||||||
|
<strong>{$item->poll_comment_author|escape}</strong> |
||||||
|
<br /> |
||||||
|
<br /> |
||||||
|
{#POLL_COMMENT_DATE#}<br /> |
||||||
|
<strong>{$item->poll_comment_time|date_format:$DATE_FORMAT|pretty_date}</strong> |
||||||
|
</td> |
||||||
|
<td> |
||||||
|
<div class="pr12"> |
||||||
|
<span class="dgrey">Тема</span> |
||||||
|
<input name="comment_title[{$item->id}]" type="text" id="comment_title[{$item->id}]" value="{$item->poll_comment_title|escape}"><br /> |
||||||
|
<span class="dgrey">Комментарий</span> |
||||||
|
<textarea name="comment_text[{$item->id}]" cols="50" rows="5" id="comment_text[{$item->id}]">{$item->poll_comment_text|escape}</textarea> |
||||||
|
</div> |
||||||
|
</td> |
||||||
|
</tr> |
||||||
|
{/foreach} |
||||||
|
<tr> |
||||||
|
<td class="third" colspan="3"> |
||||||
|
<input class="basicBtn" type="submit" value="{#POLL_BUTTON_SAVE#}" /> |
||||||
|
</td> |
||||||
|
</tr> |
||||||
|
</tbody> |
||||||
|
</table> |
||||||
|
</form> |
||||||
|
</div> |
||||||
|
|
||||||
|
{if $page_nav} |
||||||
|
<div class="pagination"> |
||||||
|
<ul class="pages"> |
||||||
|
{$page_nav} |
||||||
|
</ul> |
||||||
|
</div> |
||||||
|
{/if} |
@ -0,0 +1,299 @@ |
|||||||
|
<script language="Javascript" type="text/javascript" src="/modules/poll/admin/js/iColorPicker.js"></script> |
||||||
|
|
||||||
|
<script language="Javascript" type="text/javascript"> |
||||||
|
|
||||||
|
$(document).ready(function(){ldelim} |
||||||
|
|
||||||
|
{literal} |
||||||
|
(function($) { |
||||||
|
$.fn.tableSortable = function(options) { |
||||||
|
options = $.extend({}, $.fn.tableSortable.defaults, options); |
||||||
|
this.sortable({ |
||||||
|
items: options.items, |
||||||
|
axis: 'y', |
||||||
|
cursor: 'move', |
||||||
|
tolerance: 'pointer', |
||||||
|
handle: options.handle, |
||||||
|
helper: 'clone', |
||||||
|
placeholder: 'sortable-placeholder', |
||||||
|
start: function( event, ui ) { |
||||||
|
// задаём placeholder |
||||||
|
$(this).find(' .sortable-placeholder').html(ui.item.html()).css('opacity',0.3); |
||||||
|
// назначаем колонкам ширину |
||||||
|
origTd = $(this).find(' .sortable-placeholder td'); |
||||||
|
ui.helper.find(' td').each(function(index, element) { |
||||||
|
$(element).width(origTd.eq(index).width()); |
||||||
|
}); |
||||||
|
}, |
||||||
|
stop: function( event, ui ) { |
||||||
|
// удаляем ширину колонок |
||||||
|
ui.item.find(' tr:first td').each(function(index, element) { |
||||||
|
$(element).width(''); |
||||||
|
}); |
||||||
|
}, |
||||||
|
update: function( event, ui ) { |
||||||
|
// отправляем результаты сортировки |
||||||
|
sorted = $(this).sortable('serialize', { |
||||||
|
key: options.key+'[]', |
||||||
|
attribute: options.attr |
||||||
|
}); |
||||||
|
$.ajax({ |
||||||
|
url: options.url+'&'+sorted, |
||||||
|
success: function () { |
||||||
|
$.jGrowl(options.success,{theme: 'accept'}); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
}); |
||||||
|
}; |
||||||
|
|
||||||
|
$.fn.tableSortable.defaults = { |
||||||
|
items: 'tr', |
||||||
|
handle: '.ico_navigation', |
||||||
|
url: 'index.php?', |
||||||
|
key: 'sort', |
||||||
|
attr: 'data-id', |
||||||
|
success: 'Порядок сохранён' |
||||||
|
}; |
||||||
|
|
||||||
|
})(jQuery); |
||||||
|
{/literal} |
||||||
|
|
||||||
|
$('#published').datetimepicker({ldelim} |
||||||
|
changeMonth: true, |
||||||
|
changeYear: true, |
||||||
|
stepHour: 1, |
||||||
|
stepMinute: 1, |
||||||
|
|
||||||
|
onClose: function(dateText, inst) {ldelim} |
||||||
|
var endDateTextBox = $('#expire'); |
||||||
|
if (endDateTextBox.val() != '') {ldelim} |
||||||
|
var testStartDate = new Date(dateText); |
||||||
|
var testEndDate = new Date(endDateTextBox.val()); |
||||||
|
if (testStartDate > testEndDate) |
||||||
|
endDateTextBox.val(dateText); |
||||||
|
{rdelim} |
||||||
|
else {ldelim} |
||||||
|
endDateTextBox.val(dateText); |
||||||
|
{rdelim} |
||||||
|
{rdelim} |
||||||
|
{rdelim}); |
||||||
|
|
||||||
|
$('#expire').datetimepicker({ldelim} |
||||||
|
changeMonth: true, |
||||||
|
changeYear: true, |
||||||
|
|
||||||
|
stepHour: 1, |
||||||
|
stepMinute: 1, |
||||||
|
|
||||||
|
onClose: function(dateText, inst) {ldelim} |
||||||
|
var startDateTextBox = $('#published'); |
||||||
|
if (startDateTextBox.val() != '') {ldelim} |
||||||
|
var testStartDate = new Date(startDateTextBox.val()); |
||||||
|
var testEndDate = new Date(dateText); |
||||||
|
if (testStartDate > testEndDate) |
||||||
|
startDateTextBox.val(dateText); |
||||||
|
{rdelim} |
||||||
|
else {ldelim} |
||||||
|
startDateTextBox.val(dateText); |
||||||
|
{rdelim} |
||||||
|
{rdelim}, |
||||||
|
onSelect: function (selectedDateTime){ldelim} |
||||||
|
var end = $(this).datetimepicker('getDate'); |
||||||
|
$('#published').datetimepicker('option', 'maxDate', new Date(end.getTime()) ); |
||||||
|
{rdelim} |
||||||
|
{rdelim}); |
||||||
|
|
||||||
|
// Сортировка |
||||||
|
$('#itemsId').tableSortable({ldelim} |
||||||
|
url: 'index.php?do=modules&action=modedit&mod=poll&moduleaction=edit&sub=sortable&cp={$sess}', |
||||||
|
success: '{#POLL_POSITION_SUCCES#}' |
||||||
|
{rdelim}); |
||||||
|
|
||||||
|
{rdelim}); |
||||||
|
</script> |
||||||
|
|
||||||
|
|
||||||
|
{if $smarty.request.moduleaction == 'new'} |
||||||
|
<div class="title"><h5>{#POLL_ADD_POLL#}</h5></div> |
||||||
|
|
||||||
|
<div class="widget" style="margin-top: 0px;"> |
||||||
|
<div class="body"> |
||||||
|
{#POLL_NEW_INFO#} |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{else} |
||||||
|
<div class="title"><h5>{#POLL_EDIT#}</h5></div> |
||||||
|
|
||||||
|
<div class="widget" style="margin-top: 0px;"> |
||||||
|
<div class="body"> |
||||||
|
{#POLL_EDIT_INFO#} |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{/if} |
||||||
|
|
||||||
|
<div class="breadCrumbHolder module"> |
||||||
|
<div class="breadCrumb module"> |
||||||
|
<ul> |
||||||
|
<li class="firstB"><a href="#" title="{#MAIN_PAGE#}">{#MAIN_PAGE#}</a></li> |
||||||
|
<li><a href="index.php?do=modules&cp={$sess}">{#MODULES_SUB_TITLE#}</a></li> |
||||||
|
<li><a href="index.php?do=modules&action=modedit&mod=poll&moduleaction=1&cp={$sess}">{#POLL_MODULE_NAME#}</a></li> |
||||||
|
{if $smarty.request.moduleaction == 'new'} |
||||||
|
<li><strong class="code">{#POLL_ADD_POLL#}</strong></li> |
||||||
|
{else} |
||||||
|
<li>{#POLL_EDIT#}</li> |
||||||
|
<li><strong class="code">{$row->poll_title|default:''}</strong></li> |
||||||
|
{/if} |
||||||
|
</ul> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
<form method="post" action="{$formaction}" class="mainForm"> |
||||||
|
|
||||||
|
<div class="widget first"> |
||||||
|
<div class="head"> |
||||||
|
<h5 class="iFrames">{if $smarty.request.id != ''}{#POLL_EDIT#}{else}{#POLL_ADD_POLL#}{/if}</h5> |
||||||
|
</div> |
||||||
|
|
||||||
|
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm"> |
||||||
|
<col width="200"> |
||||||
|
<tr> |
||||||
|
<td>{#POLL_NAME#}:</td> |
||||||
|
<td colspan="3"> |
||||||
|
<div class="pr12"><input name="poll_name" type="text" id="poll_name" value="{$row->poll_title|default:''}" size="20" /></div> |
||||||
|
</td> |
||||||
|
</tr> |
||||||
|
<tr> |
||||||
|
<td>{#POLL_STATUS#}?</td> |
||||||
|
<td colspan="3"> |
||||||
|
<input type="radio" name="poll_status" id="poll_status" {if $row->poll_status==1}checked{/if} value="1"/><label>{#POLL_YES#}</label> |
||||||
|
<input type="radio" name="poll_status" id="poll_status" {if $row->poll_status==0}checked{/if} value="0" /><label>{#POLL_NO#}</label> |
||||||
|
</td> |
||||||
|
</tr> |
||||||
|
<tr> |
||||||
|
<td>{#POLL_CAN_COMMENT#}</td> |
||||||
|
<td colspan="3"> |
||||||
|
<input type="radio" name="poll_can_comment" id="poll_can_comment" value="1" {if $row->poll_can_comment==1}checked{/if} /><label>{#POLL_YES#}</label> |
||||||
|
<input type="radio" name="poll_can_comment" id="poll_can_comment" value="0" {if $row->poll_can_comment==0}checked{/if} /><label>{#POLL_NO#}</label> |
||||||
|
</td> |
||||||
|
</tr> |
||||||
|
<tr> |
||||||
|
<td>{#POLL_START_TIME#}</td> |
||||||
|
<td> |
||||||
|
<input id="published" name="poll_published" type="text" value="{if $row->poll_end}{$row->poll_start|date_format:"%d.%m.%Y %H:%M"}{else}{$published|date_format:"%d.%m.%Y %H:%M"}{/if}" style="width: 150px;" /> |
||||||
|
</td> |
||||||
|
<td>{#POLL_END_TIME#}</td> |
||||||
|
<td> |
||||||
|
<input id="expire" name="poll_expire" type="text" value="{if $row->poll_end}{$row->poll_end|date_format:"%d.%m.%Y %H:%M"}{else}{$expire|date_format:"%d.%m.%Y %H:%M"}{/if}" style="width: 150px;" /> |
||||||
|
</td> |
||||||
|
</tr> |
||||||
|
<tr> |
||||||
|
<td valign="top">{#POLL_USER_GROUPS#}<br /><small>{#POLL_GROUP_INFO#}</small></td> |
||||||
|
<td colspan="3"> |
||||||
|
<select class="select" style="width:200px" name="groups[]" size="5" multiple="multiple"> |
||||||
|
{html_options options=$groups selected=$selected} |
||||||
|
</select> |
||||||
|
</td> |
||||||
|
</tr> |
||||||
|
</table> |
||||||
|
|
||||||
|
{if $smarty.request.id != ''} |
||||||
|
</div> |
||||||
|
<div class="widget first"> |
||||||
|
<div class="head"> |
||||||
|
<h5 class="iFrames">{#POLL_QUESTIONS#}</h5> |
||||||
|
</div> |
||||||
|
|
||||||
|
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm"> |
||||||
|
<col width="10" /> |
||||||
|
<col width="10" /> |
||||||
|
<col /> |
||||||
|
<col width="160" /> |
||||||
|
<col width="100" /> |
||||||
|
<thead> |
||||||
|
<tr> |
||||||
|
<td align="center"><div align="center"><span class="icon_sprite ico_delete"></span></div></td> |
||||||
|
<td align="center"></td> |
||||||
|
<td>{#POLL_QUESTION_NAME#}</td> |
||||||
|
<td>{#POLL_QUESTION_COLOR#} </td> |
||||||
|
<td>{#POLL_QUESTION_HITS#}</td> |
||||||
|
</tr> |
||||||
|
</thead> |
||||||
|
<tbody id="itemsId"> |
||||||
|
{if $items} |
||||||
|
{foreach from=$items item=item} |
||||||
|
<tr data-id="item_{$item->id}"> |
||||||
|
<td> |
||||||
|
<input title="{#POLL_MARK_DELETE#}" name="del[{$item->id}]" class="topDir" type="checkbox" id="del[{$item->id}]" value="1" /> |
||||||
|
</td> |
||||||
|
<td> |
||||||
|
<div align="center"><span class="icon_sprite ico_navigation" style="cursor: move;"></span></div> |
||||||
|
</td> |
||||||
|
<td > |
||||||
|
<div class="pr12"><input name="item_title[{$item->id}]" type="text" id="item_title[{$item->id}]" value="{$item->poll_item_title}" /></div> |
||||||
|
</td> |
||||||
|
<td> |
||||||
|
<input maxlength="7" style="width: 100px;" type="text" name="line_color[{$item->id}]" value="{$item->poll_item_color}" class="iColorPicker" id="line_color{$item->id}" /> |
||||||
|
</td> |
||||||
|
<td> |
||||||
|
<input style="width:80px" name="poll_item_hits[{$item->id}]" type="text" id="poll_item_hits[{$item->id}]" value="{$item->poll_item_hits}" /> |
||||||
|
</td> |
||||||
|
</tr> |
||||||
|
{/foreach} |
||||||
|
{else} |
||||||
|
<tr> |
||||||
|
<td colspan="5"> |
||||||
|
<ul class="messages"> |
||||||
|
<li class="highlight yellow">{#POLL_QUESTION_NO_ITEMS#}</li> |
||||||
|
</ul> |
||||||
|
</td> |
||||||
|
</tr> |
||||||
|
{/if} |
||||||
|
</tbody> |
||||||
|
</table> |
||||||
|
|
||||||
|
{/if} |
||||||
|
<div class="rowElem"> |
||||||
|
<input type="submit" class="basicBtn" value="{#POLL_BUTTON_SAVE#}" /> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</form> |
||||||
|
|
||||||
|
{if $smarty.request.id != ''} |
||||||
|
<div class="widget first"> |
||||||
|
<div class="head"> |
||||||
|
<h5 class="iFrames">{#POLL_QUESTIONS_ADD#}</h5> |
||||||
|
</div> |
||||||
|
<form method="post" action="index.php?do=modules&action=modedit&mod=poll&moduleaction=save_new&cp={$sess}&id={$smarty.request.id|escape}" name="new"> |
||||||
|
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm"> |
||||||
|
<col /> |
||||||
|
<col width="160" /> |
||||||
|
<col width="100" /> |
||||||
|
<thead> |
||||||
|
<tr> |
||||||
|
<td>{#POLL_QUESTION_NAME#}</td> |
||||||
|
<td>{#POLL_QUESTION_COLOR#} </td> |
||||||
|
<td>{#POLL_QUESTION_HITS#}</td> |
||||||
|
</tr> |
||||||
|
</thead> |
||||||
|
<tbody> |
||||||
|
<tr> |
||||||
|
<td> |
||||||
|
<div class="pr12"><input name="item_title" type="text" id="item_title" value="" /></div> |
||||||
|
</td> |
||||||
|
<td> |
||||||
|
<input maxlength="7" style="width: 100px;" type="text" name="line_color" class="iColorPicker" value="" id="color1" /> |
||||||
|
</td> |
||||||
|
<td> |
||||||
|
<input style="width:80px" name="poll_item_hits" type="text" id="poll_item_hits" value="" /> |
||||||
|
</td> |
||||||
|
</tr> |
||||||
|
<tr> |
||||||
|
<td colspan="4"><input type="submit" class="basicBtn" value="{#POLL_BUTTON_ADD#}" /></td> |
||||||
|
</tr> |
||||||
|
</tbody> |
||||||
|
</table> |
||||||
|
</form> |
||||||
|
</div> |
||||||
|
{/if} |
@ -0,0 +1,102 @@ |
|||||||
|
<div class="title"><h5>{#POLL_MODULE_NAME#}</h5></div> |
||||||
|
|
||||||
|
<div class="widget" style="margin-top: 0px;"> |
||||||
|
<div class="body"> |
||||||
|
{#POLL_MODULE_TITLE#} |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="breadCrumbHolder module"> |
||||||
|
<div class="breadCrumb module"> |
||||||
|
<ul> |
||||||
|
<li class="firstB"><a href="index.php" title="{#MAIN_PAGE#}">{#MAIN_PAGE#}</a></li> |
||||||
|
<li><a href="index.php?do=modules&cp={$sess}">{#MODULES_SUB_TITLE#}</a></li> |
||||||
|
<li><a href="index.php?do=modules&action=modedit&mod=poll&moduleaction=1&cp={$sess}">{#POLL_MODULE_NAME#}</a></li> |
||||||
|
<li><strong class="code">{#POLL_MODULE_ALL#}</strong></li> |
||||||
|
</ul> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
<div class="widget first"> |
||||||
|
<div class="head"> |
||||||
|
<h5 class="iFrames">{#POLL_MODULE_ALL#}</h5> |
||||||
|
<div class="num"><a class="basicNum" href="index.php?do=modules&action=modedit&mod=poll&moduleaction=new&cp={$sess}">{#POLL_NEW_LINK#}</a></div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm"> |
||||||
|
<col width="20"> |
||||||
|
<col> |
||||||
|
<col width="120"> |
||||||
|
<col width="200"> |
||||||
|
<col width="200"> |
||||||
|
<col width="150"> |
||||||
|
{if $items} |
||||||
|
<thead> |
||||||
|
<tr> |
||||||
|
<td align="center" width="1%"><span class="">[!]</span></td> |
||||||
|
<td>{#POLL_NAME#}</td> |
||||||
|
<td>{#POLL_SYSTEM_TAG#}</td> |
||||||
|
<td>{#POLL_START_END#}</td> |
||||||
|
<td>{#POLL_HITS_CMMENT#}</td> |
||||||
|
<td colspan="3" align="center" width="2%">{#POLL_ACTIONS#}</td> |
||||||
|
</tr> |
||||||
|
</thead> |
||||||
|
|
||||||
|
{foreach from=$items item=item} |
||||||
|
<tr> |
||||||
|
<td width="10"> |
||||||
|
{if $item->poll_status != '1'} |
||||||
|
<span class="icon_sprite ico_delete_no"></span> |
||||||
|
{else} |
||||||
|
<span class="icon_sprite ico_ok"></span> |
||||||
|
{/if} |
||||||
|
</td> |
||||||
|
|
||||||
|
<td> |
||||||
|
<a href="index.php?do=modules&action=modedit&mod=poll&moduleaction=edit&cp={$sess}&id={$item->id}"><strong>{$item->poll_title}</strong></a> |
||||||
|
</td> |
||||||
|
|
||||||
|
<td> |
||||||
|
<div class="pr12"><input type="text" value="[mod_poll:{$item->id}]" size="12" readonly></div> |
||||||
|
</td> |
||||||
|
|
||||||
|
<td align="center"> |
||||||
|
<span class="date_text dgrey">c {$item->poll_start|date_format:$TIME_FORMAT|pretty_date}</span> |
||||||
|
<br /> |
||||||
|
<span class="date_text dgrey">по {$item->poll_end|date_format:$TIME_FORMAT|pretty_date}</span> |
||||||
|
</td> |
||||||
|
|
||||||
|
<td align="center"> |
||||||
|
{if $item->sum_hits == ''} 0 {else} {$item->sum_hits} {/if} / <a href="index.php?do=modules&action=modedit&mod=poll&moduleaction=comments&cp={$sess}&id={$item->id}">{$item->comments}</a> |
||||||
|
</td> |
||||||
|
|
||||||
|
<td width="1%" align="center"> |
||||||
|
<a title="{#POLL_EDIT_POLL#}" href="index.php?do=modules&action=modedit&mod=poll&moduleaction=edit&cp={$sess}&id={$item->id}"><span class="icon_sprite ico_edit"></span></a> |
||||||
|
</td> |
||||||
|
|
||||||
|
<td width="1%" align="center"> |
||||||
|
<a title="{#POLL_DELETE#}" class="ConfirmDelete toprightpDir" dir="{#POLL_DELETE#}" name="{#POLL_DELETE_CONFIRM#}" href="index.php?do=modules&action=modedit&mod=poll&moduleaction=delete&cp={$sess}&id={$item->id}"><span class="icon_sprite ico_delete"></span></a> |
||||||
|
</td> |
||||||
|
</tr> |
||||||
|
{/foreach} |
||||||
|
{else} |
||||||
|
<tr> |
||||||
|
<td colspan="7"> |
||||||
|
<ul class="messages"> |
||||||
|
<li class="highlight yellow">{#POLL_MODULE_NO_ITEMS#}</li> |
||||||
|
</ul> |
||||||
|
</td> |
||||||
|
</tr> |
||||||
|
{/if} |
||||||
|
</table> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
{if $page_nav} |
||||||
|
<div class="pagination"> |
||||||
|
<ul class="pages"> |
||||||
|
{$page_nav} |
||||||
|
</ul> |
||||||
|
</div> |
||||||
|
{/if} |
After Width: | Height: | Size: 892 B |
File diff suppressed because one or more lines are too long
@ -0,0 +1,938 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
class Poll |
||||||
|
{ |
||||||
|
|
||||||
|
/** |
||||||
|
* СВОЙСТВА |
||||||
|
*/ |
||||||
|
|
||||||
|
var $_adminlimit = 5; |
||||||
|
var $_limit = 5; |
||||||
|
var $_commentwords = 1000; |
||||||
|
var $_antispam = 0; |
||||||
|
|
||||||
|
/** |
||||||
|
* ВНУТРЕННИЕ МЕТОДЫ |
||||||
|
*/ |
||||||
|
|
||||||
|
function _pollLinkRewrite($string) |
||||||
|
{ |
||||||
|
return (REWRITE_MODE) ? PollRewrite($string) : $string; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* ВНЕШНИЕ МЕТОДЫ |
||||||
|
*/ |
||||||
|
|
||||||
|
/** |
||||||
|
* Методы публичной части |
||||||
|
*/ |
||||||
|
|
||||||
|
/** |
||||||
|
* Отображение опроса (вывод тегами) |
||||||
|
* |
||||||
|
* @param string $tpl_dir путь к папке с шаблонами модуля |
||||||
|
* @param string $lang_file путь к языковому файлу модуля |
||||||
|
* @param int $pid идентификатор опроса |
||||||
|
*/ |
||||||
|
function pollShow($tpl_dir, $lang_file, $pid) |
||||||
|
{ |
||||||
|
global $AVE_DB, $AVE_Template; |
||||||
|
|
||||||
|
// if (isset($_REQUEST['module']) && $_REQUEST['module'] == 'poll') return; |
||||||
|
|
||||||
|
$AVE_Template->config_load($lang_file, 'showpoll'); |
||||||
|
|
||||||
|
$row = $AVE_DB->Query(" |
||||||
|
SELECT |
||||||
|
poll.*, |
||||||
|
SUM(itm.poll_item_hits) AS sumhits |
||||||
|
FROM |
||||||
|
" . PREFIX . "_module_poll AS poll |
||||||
|
LEFT JOIN |
||||||
|
" . PREFIX . "_module_poll_items AS itm |
||||||
|
ON poll_id = poll.id |
||||||
|
WHERE |
||||||
|
poll.id = '" . $pid . "' AND |
||||||
|
poll.poll_title != '' AND |
||||||
|
poll.poll_status = '1' AND |
||||||
|
poll.poll_start < '" . time() . "' |
||||||
|
GROUP BY poll.id |
||||||
|
")->FetchRow(); |
||||||
|
|
||||||
|
if (!$row) return; |
||||||
|
|
||||||
|
$poll_groups_id = empty($row->poll_groups_id) ? array() : explode(',', $row->poll_groups_id); |
||||||
|
$poll_users_id = empty($row->poll_users_id) ? array() : explode(',', $row->poll_users_id); |
||||||
|
$poll_users_ip = empty($row->poll_users_ip) ? array() : explode(',', $row->poll_users_ip); |
||||||
|
|
||||||
|
$current_user_ip = empty($_SERVER['REMOTE_ADDR']) ? '' : $_SERVER['REMOTE_ADDR']; |
||||||
|
|
||||||
|
if (@in_array($current_user_ip, $poll_users_ip) || |
||||||
|
@in_array($_SESSION['user_id'], $poll_users_id) || |
||||||
|
(isset($_COOKIE['poll_' . $pid]) && $_COOKIE['poll_' . $pid] == '1') ) |
||||||
|
{ |
||||||
|
$row->message = $AVE_Template->get_config_vars('POLL_ALREADY_POLL'); |
||||||
|
} |
||||||
|
elseif (!(@in_array(UGROUP, $poll_groups_id))) |
||||||
|
{ |
||||||
|
$row->message = $AVE_Template->get_config_vars('POLL_NO_PERMISSION'); |
||||||
|
} |
||||||
|
elseif ($row->poll_end < time()) |
||||||
|
{ |
||||||
|
$row->message = $AVE_Template->get_config_vars('POLL_EXPIRED'); |
||||||
|
} |
||||||
|
|
||||||
|
$items = array(); |
||||||
|
$sql = $AVE_DB->Query(" |
||||||
|
SELECT |
||||||
|
*, |
||||||
|
" . ($row->sumhits > 0 ? 'ROUND(poll_item_hits*100/' . $row->sumhits . ')' : 0) . " AS sum |
||||||
|
FROM " . PREFIX . "_module_poll_items |
||||||
|
WHERE poll_id = '" . $pid . "' |
||||||
|
ORDER BY poll_item_position ASC |
||||||
|
"); |
||||||
|
while ($row_items = $sql->FetchRow()) |
||||||
|
{ |
||||||
|
array_push($items, $row_items); |
||||||
|
} |
||||||
|
|
||||||
|
$AVE_Template->assign('formaction', 'index.php?module=poll&action=vote&pid=' . $pid); |
||||||
|
$AVE_Template->assign('formaction_result', $this->_pollLinkRewrite('index.php?module=poll&action=result&pid=' . $pid)); |
||||||
|
$AVE_Template->assign('formaction_archive', $this->_pollLinkRewrite('index.php?module=poll&action=archive')); |
||||||
|
|
||||||
|
$AVE_Template->assign('poll', $row); |
||||||
|
$AVE_Template->assign('items', $items); |
||||||
|
|
||||||
|
if (isset($row->message)) |
||||||
|
{ |
||||||
|
$AVE_Template->display($tpl_dir . 'poll_nav_result.tpl'); |
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
$AVE_Template->display($tpl_dir . 'poll_nav.tpl'); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Учет результатов опроса |
||||||
|
* |
||||||
|
* @param int $pid идентификатор опроса |
||||||
|
*/ |
||||||
|
function pollVote($pid) |
||||||
|
{ |
||||||
|
global $AVE_DB; |
||||||
|
|
||||||
|
$row = $AVE_DB->Query(" |
||||||
|
SELECT * |
||||||
|
FROM " . PREFIX . "_module_poll |
||||||
|
WHERE id = '" . $pid . "' |
||||||
|
")->FetchRow(); |
||||||
|
|
||||||
|
$poll_groups_id = empty($row->poll_groups_id) ? array() : explode(',', $row->poll_groups_id); |
||||||
|
$poll_users_id = empty($row->poll_users_id) ? array() : explode(',', $row->poll_users_id); |
||||||
|
$poll_users_ip = empty($row->poll_users_ip) ? array() : explode(',', $row->poll_users_ip); |
||||||
|
|
||||||
|
$current_user_ip = empty($_SERVER['REMOTE_ADDR']) ? '' : $_SERVER['REMOTE_ADDR']; |
||||||
|
|
||||||
|
$back = $this->_pollLinkRewrite('index.php?module=poll&action=result&pid=' . $pid); |
||||||
|
|
||||||
|
if (!(@in_array(UGROUP, $poll_groups_id))) |
||||||
|
{ |
||||||
|
header('Location:' . $back); |
||||||
|
exit; |
||||||
|
} |
||||||
|
|
||||||
|
if (@in_array($current_user_ip, $poll_users_ip) || |
||||||
|
@in_array($_SESSION['user_id'], $poll_users_id) || |
||||||
|
$_COOKIE['poll_' . $pid] == '1') |
||||||
|
{ |
||||||
|
header('Location:' . $back); |
||||||
|
exit; |
||||||
|
} |
||||||
|
|
||||||
|
setcookie('poll_' . $pid, '1', time() + 3600 * 3600); |
||||||
|
|
||||||
|
$AVE_DB->Query(" |
||||||
|
UPDATE " . PREFIX . "_module_poll_items |
||||||
|
SET poll_item_hits = poll_item_hits + 1 |
||||||
|
WHERE id = '" . (int)$_POST['p_item'] . "' |
||||||
|
"); |
||||||
|
|
||||||
|
$AVE_DB->Query(" |
||||||
|
UPDATE " . PREFIX . "_module_poll |
||||||
|
SET |
||||||
|
poll_users_ip = CONCAT_WS(',', poll_users_ip, '" . $current_user_ip . "') |
||||||
|
" . ((UGROUP != 2) ? ", poll_users_id = CONCAT_WS(',', poll_users_id, '" . $_SESSION['user_id'] . "')" : '') . " |
||||||
|
WHERE |
||||||
|
id = '" . $pid . "' |
||||||
|
"); |
||||||
|
|
||||||
|
header('Location:' . $back); |
||||||
|
exit; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Подробная информация и статистика опроса, комментарии пользователей |
||||||
|
* |
||||||
|
* @param string $tpl_dir путь к папке с шаблонами модуля |
||||||
|
* @param string $lang_file путь к языковому файлу модуля |
||||||
|
* @param int $pid идентификатор опроса |
||||||
|
*/ |
||||||
|
function pollResultShow($tpl_dir, $lang_file, $pid) |
||||||
|
{ |
||||||
|
global $AVE_DB, $AVE_Template; |
||||||
|
|
||||||
|
$AVE_Template->config_load($lang_file, 'showresult'); |
||||||
|
|
||||||
|
if (isset($_REQUEST['sub']) && $_REQUEST['sub'] == 'new') |
||||||
|
{ |
||||||
|
$errors = $this->pollCommentNew($pid); |
||||||
|
|
||||||
|
if (sizeof($errors) == 0) |
||||||
|
{ |
||||||
|
header('Location:' . $this->_pollLinkRewrite('index.php?module=poll&action=result&pid=' . $pid)); |
||||||
|
exit; |
||||||
|
} |
||||||
|
|
||||||
|
$AVE_Template->assign('errors', $errors); |
||||||
|
} |
||||||
|
|
||||||
|
$poll = $AVE_DB->Query(" |
||||||
|
SELECT |
||||||
|
poll.*, |
||||||
|
SUM(itm.poll_item_hits) AS votes |
||||||
|
FROM |
||||||
|
" . PREFIX . "_module_poll AS poll |
||||||
|
LEFT JOIN |
||||||
|
" . PREFIX . "_module_poll_items AS itm |
||||||
|
ON poll_id = poll.id |
||||||
|
WHERE |
||||||
|
poll.id = '" . $pid . "' AND |
||||||
|
poll.poll_title != '' AND |
||||||
|
poll.poll_status = '1' AND |
||||||
|
poll.poll_start < '" . time() . "' |
||||||
|
GROUP BY poll.id |
||||||
|
")->FetchRow(); |
||||||
|
|
||||||
|
if ($poll === false) return; |
||||||
|
|
||||||
|
$items = array(); |
||||||
|
$sql = $AVE_DB->Query(" |
||||||
|
SELECT |
||||||
|
*, |
||||||
|
" . ($poll->votes > 0 ? 'ROUND(poll_item_hits*100/' . $poll->votes . ')' : 0) . " AS sum |
||||||
|
FROM " . PREFIX . "_module_poll_items |
||||||
|
WHERE poll_id = '" . $pid . "' |
||||||
|
ORDER BY poll_item_position ASC |
||||||
|
"); |
||||||
|
while ($row_items = $sql->FetchRow()) |
||||||
|
{ |
||||||
|
array_push($items, $row_items); |
||||||
|
} |
||||||
|
|
||||||
|
if ($poll->poll_can_comment == 1) |
||||||
|
{ |
||||||
|
//include_once(BASE_DIR . '/lib/markitup/sets/bbcode/markitup.bbcode-parser.php'); |
||||||
|
|
||||||
|
$comments = array(); |
||||||
|
$sql = $AVE_DB->Query(" |
||||||
|
SELECT |
||||||
|
cmnt.*, |
||||||
|
IFNULL(firstname, '') AS firstname, |
||||||
|
IFNULL(lastname, '" . $AVE_Template->get_config_vars('POLL_GUEST') . "') AS lastname |
||||||
|
FROM |
||||||
|
" . PREFIX . "_module_poll_comments AS cmnt |
||||||
|
LEFT JOIN |
||||||
|
" . PREFIX . "_users AS usr |
||||||
|
ON usr.Id = cmnt.poll_comment_author_id |
||||||
|
WHERE poll_id = '" . $pid . "' |
||||||
|
ORDER BY poll_comment_time DESC |
||||||
|
"); |
||||||
|
while ($row_comments = $sql->FetchRow()) |
||||||
|
{ |
||||||
|
$row_comments->poll_comment_text = $row_comments->poll_comment_text; |
||||||
|
|
||||||
|
array_push($comments, $row_comments); |
||||||
|
} |
||||||
|
|
||||||
|
$poll->count_comments = $sql->NumRows(); |
||||||
|
} |
||||||
|
|
||||||
|
$poll_users_id = empty($poll->poll_users_id) ? array() : explode(',', $poll->poll_users_id); |
||||||
|
$poll_users_ip = empty($poll->poll_users_ip) ? array() : explode(',', $poll->poll_users_ip); |
||||||
|
|
||||||
|
$current_user_ip = empty($_SERVER['REMOTE_ADDR']) ? '' : $_SERVER['REMOTE_ADDR']; |
||||||
|
|
||||||
|
$is_vote = 1; |
||||||
|
if (@in_array($current_user_ip, $poll_users_ip) || |
||||||
|
@in_array($_SESSION['user_id'], $poll_users_id) || |
||||||
|
(isset($_COOKIE['poll_' . $pid]) && $_COOKIE['poll_' . $pid] == '1')) |
||||||
|
{ |
||||||
|
$is_vote = 0; |
||||||
|
} |
||||||
|
|
||||||
|
$rights = 0; |
||||||
|
$groups = array(); |
||||||
|
if ($poll->poll_groups_id != '') |
||||||
|
{ |
||||||
|
$sql = $AVE_DB->Query(" |
||||||
|
SELECT |
||||||
|
user_group, |
||||||
|
user_group_name |
||||||
|
FROM |
||||||
|
" . PREFIX . "_user_groups |
||||||
|
WHERE |
||||||
|
user_group IN(" . $poll->poll_groups_id . ") |
||||||
|
"); |
||||||
|
while ($row_g = $sql->FetchRow()) |
||||||
|
{ |
||||||
|
if (UGROUP == $row_g->user_group) $rights = 1; |
||||||
|
array_push($groups, $row_g->user_group_name); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
$poll->can_vote = ($is_vote == 1 && $rights == 1) ? 1 : 0; |
||||||
|
$poll->groups = implode(', ', $groups); |
||||||
|
$poll->can_comment = ($poll->poll_status == 1 && $poll->poll_can_comment == 1 && $rights == 1) ? 1 : 0; |
||||||
|
$poll->anti_spam = ($this->_antispam == 1 && function_exists('imagettftext') && function_exists('imagejpeg')) ? 1 : 0; |
||||||
|
$poll->comment_max_chars = $this->_commentwords; |
||||||
|
$poll->items = $items; |
||||||
|
$poll->comments = $comments; |
||||||
|
$poll->formaction = 'index.php?module=poll&action=vote&pid=' . $pid; |
||||||
|
$poll->link_result = $this->_pollLinkRewrite('index.php?module=poll&action=result&pid=' . $pid); |
||||||
|
// $poll->link_archive = $this->_pollLinkRewrite('index.php?module=poll&action=archive'); |
||||||
|
// $poll->link_comment = $this->_pollLinkRewrite('index.php?module=poll&action=form&pop=1&pid=' . $pid); |
||||||
|
|
||||||
|
$AVE_Template->assign('poll', $poll); |
||||||
|
|
||||||
|
define('MODULE_SITE', $AVE_Template->get_config_vars('POLL_PAGE_TITLE_PREFIX') . $poll->poll_title); |
||||||
|
define('MODULE_CONTENT', $AVE_Template->fetch($tpl_dir . 'result.tpl')); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Список завершенных и действующих опросов |
||||||
|
* |
||||||
|
* @param string $tpl_dir путь к папке с шаблонами модуля |
||||||
|
* @param string $lang_file путь к языковому файлу модуля |
||||||
|
*/ |
||||||
|
function pollArchiveShow($tpl_dir, $lang_file) |
||||||
|
{ |
||||||
|
global $AVE_DB, $AVE_Template; |
||||||
|
|
||||||
|
if (empty($_REQUEST['order'])) |
||||||
|
{ |
||||||
|
$order = 'poll_title'; |
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
switch ($_REQUEST['order']) |
||||||
|
{ |
||||||
|
case 'title': |
||||||
|
$order = 'poll_title'; |
||||||
|
break; |
||||||
|
|
||||||
|
case 'start': |
||||||
|
$order = 'poll_start'; |
||||||
|
break; |
||||||
|
|
||||||
|
case 'end': |
||||||
|
$order = 'poll_end'; |
||||||
|
break; |
||||||
|
|
||||||
|
case 'votes': |
||||||
|
$order = 'votes'; |
||||||
|
break; |
||||||
|
|
||||||
|
default: |
||||||
|
$order = 'poll_title'; |
||||||
|
break; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
if (isset($_REQUEST['by']) && $_REQUEST['by'] == 'desc') |
||||||
|
{ |
||||||
|
$order .= ' DESC'; |
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
$order .= ' ASC'; |
||||||
|
} |
||||||
|
|
||||||
|
$items = array(); |
||||||
|
$sql = $AVE_DB->Query(" |
||||||
|
SELECT |
||||||
|
poll.id, |
||||||
|
poll.poll_title, |
||||||
|
poll.poll_start, |
||||||
|
poll.poll_end, |
||||||
|
SUM(itm.poll_item_hits) AS votes |
||||||
|
FROM |
||||||
|
" . PREFIX . "_module_poll AS poll |
||||||
|
LEFT JOIN |
||||||
|
" . PREFIX . "_module_poll_items AS itm |
||||||
|
ON poll_id = poll.id |
||||||
|
WHERE |
||||||
|
poll.poll_title != '' AND |
||||||
|
poll.poll_status = '1' AND |
||||||
|
poll.poll_start < '" . time() . "' |
||||||
|
GROUP BY poll.id |
||||||
|
ORDER BY " . $order |
||||||
|
); |
||||||
|
while ($row = $sql->FetchRow()) |
||||||
|
{ |
||||||
|
$row->plink = $this->_pollLinkRewrite('index.php?module=poll&action=result&pid=' . $row->id); |
||||||
|
array_push($items, $row); |
||||||
|
} |
||||||
|
|
||||||
|
$AVE_Template->assign('items', $items); |
||||||
|
$AVE_Template->config_load($lang_file, 'showarchive'); |
||||||
|
|
||||||
|
define('MODULE_SITE', $AVE_Template->get_config_vars('POLL_ARCHIVE_TITLE')); |
||||||
|
define('MODULE_CONTENT', $AVE_Template->fetch($tpl_dir . 'archive.tpl')); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Метод отображения комментариев |
||||||
|
* |
||||||
|
* @param string $tpl_dir путь к папке с шаблонами модуля |
||||||
|
* @param string $lang_file путь к языковому файлу модуля |
||||||
|
* @param ini $pid идентификатор опроса |
||||||
|
* @param string $theme |
||||||
|
* @param string $errors |
||||||
|
* @param string $text |
||||||
|
* @param string $title |
||||||
|
*/ |
||||||
|
function pollCommentShow($tpl_dir, $lang_file, $pid, $theme, $errors='', $text='', $title='') |
||||||
|
{ |
||||||
|
global $AVE_DB, $AVE_Template; |
||||||
|
|
||||||
|
$AVE_Template->config_load($lang_file, 'displayform'); |
||||||
|
|
||||||
|
$row = $AVE_DB->Query(" |
||||||
|
SELECT * |
||||||
|
FROM " . PREFIX . "_module_poll |
||||||
|
WHERE id = '" . $pid . "' |
||||||
|
LIMIT 1 |
||||||
|
")->FetchRow(); |
||||||
|
$groups = explode(',', $row->poll_groups_id); |
||||||
|
|
||||||
|
if ($row->poll_status == 1 && $row->poll_can_comment == 1 && in_array(UGROUP, $groups)) |
||||||
|
{ |
||||||
|
$AVE_Template->assign('cancomment', 1); |
||||||
|
} |
||||||
|
$AVE_Template->assign('max_chars', $this->_commentwords); |
||||||
|
|
||||||
|
if ($this->_antispam == 1 && function_exists('imagettftext') && function_exists('imagejpeg')) |
||||||
|
{ |
||||||
|
$AVE_Template->assign('anti_spam', 1); |
||||||
|
} |
||||||
|
|
||||||
|
if (!empty($errors)) $AVE_Template->assign('errors', $errors); |
||||||
|
|
||||||
|
$AVE_Template->assign('theme_folder', $theme); |
||||||
|
$AVE_Template->assign('title', $title); |
||||||
|
$AVE_Template->assign('text', $text); |
||||||
|
$AVE_Template->display($tpl_dir . 'poll_form.tpl'); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Метод создания нового комментария |
||||||
|
* |
||||||
|
* @param string $tpl_dir путь к папке с шаблонами модуля |
||||||
|
* @param string $lang_file путь к языковому файлу модуля |
||||||
|
* @param int $pid идентификатор опроса |
||||||
|
*/ |
||||||
|
function pollCommentNew($pid) |
||||||
|
{ |
||||||
|
global $AVE_DB, $AVE_Template; |
||||||
|
|
||||||
|
$errors = array(); |
||||||
|
|
||||||
|
if (isset($_REQUEST['ajax']) && $_REQUEST['ajax'] == 1) |
||||||
|
{ |
||||||
|
$comment_title = iconv('utf-8', 'cp1251', $_POST['comment_title']); |
||||||
|
$comment_text = iconv('utf-8', 'cp1251', $_POST['comment_text']); |
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
$comment_title = $_POST['comment_title']; |
||||||
|
$comment_text = $_POST['comment_text']; |
||||||
|
} |
||||||
|
|
||||||
|
$text = (mb_strlen($comment_text) > $this->_commentwords) |
||||||
|
? mb_substr($comment_text, 0, $this->_commentwords) . '...' |
||||||
|
: $comment_text; |
||||||
|
|
||||||
|
if (mb_strlen($text) <= 10) $errors[] = $AVE_Template->get_config_vars('POLL_ENTER_TEXT'); |
||||||
|
if (empty($comment_title)) $errors[] = $AVE_Template->get_config_vars('POLL_ENTER_TITLE'); |
||||||
|
|
||||||
|
if ($this->_antispam == 1) |
||||||
|
{ |
||||||
|
if (! (isset($_SESSION['captcha_keystring']) && isset($_POST['securecode']) |
||||||
|
&& $_SESSION['captcha_keystring'] == $_POST['securecode'])) |
||||||
|
{ |
||||||
|
$errors[] = $AVE_Template->get_config_vars('POLL_ENTER_CODE'); |
||||||
|
} |
||||||
|
|
||||||
|
unset($_SESSION['captcha_keystring']); |
||||||
|
} |
||||||
|
|
||||||
|
if (sizeof($errors) == 0) |
||||||
|
{ |
||||||
|
$poll_groups_id = $AVE_DB->Query(" |
||||||
|
SELECT poll_groups_id |
||||||
|
FROM " . PREFIX . "_module_poll |
||||||
|
WHERE id = '" . $pid . "' |
||||||
|
AND poll_status = '1' |
||||||
|
AND poll_can_comment = '1' |
||||||
|
")->GetCell(); |
||||||
|
|
||||||
|
if (!empty($poll_groups_id) && in_array(UGROUP, explode(',', $poll_groups_id))) |
||||||
|
{ |
||||||
|
$author_id = isset($_SESSION['user_id']) ? $_SESSION['user_id'] : 0; |
||||||
|
$author_ip = empty($_SERVER['REMOTE_ADDR']) ? '' : $_SERVER['REMOTE_ADDR']; |
||||||
|
|
||||||
|
$AVE_DB->Query(" |
||||||
|
INSERT " . PREFIX . "_module_poll_comments |
||||||
|
SET |
||||||
|
poll_id = '" . $pid . "', |
||||||
|
poll_comment_time = '" . time() . "', |
||||||
|
poll_comment_author_id = '" . $author_id . "', |
||||||
|
poll_comment_author_ip = '" . $author_ip . "', |
||||||
|
poll_comment_title = '" . $comment_title . "', |
||||||
|
poll_comment_text = '" . $text . "' |
||||||
|
"); |
||||||
|
|
||||||
|
return $errors; |
||||||
|
} |
||||||
|
|
||||||
|
$errors[] = $AVE_Template->get_config_vars('POLL_ERROR_PERM'); |
||||||
|
} |
||||||
|
|
||||||
|
return $errors; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Методы административной части |
||||||
|
*****************************************************************************************************************************************************/ |
||||||
|
|
||||||
|
/** |
||||||
|
* Метод вывода списка опросов |
||||||
|
* |
||||||
|
* @param string $adm_dir путь к папке с шаблонами модуля |
||||||
|
* @param string $lang_file путь к языковому файлу модуля |
||||||
|
*/ |
||||||
|
function pollList($adm_dir, $lang_file) |
||||||
|
{ |
||||||
|
global $AVE_DB, $AVE_Template; |
||||||
|
|
||||||
|
$AVE_Template->config_load($lang_file, 'showpolls'); |
||||||
|
|
||||||
|
$num = $AVE_DB->Query("SELECT COUNT(*) FROM " . PREFIX . "_module_poll")->GetCell(); |
||||||
|
|
||||||
|
$limit = $this->_adminlimit; |
||||||
|
$pages = ceil($num / $limit); |
||||||
|
$start = get_current_page() * $limit - $limit; |
||||||
|
|
||||||
|
$items = array(); |
||||||
|
$sql = $AVE_DB->Query(" |
||||||
|
SELECT * |
||||||
|
FROM " . PREFIX . "_module_poll |
||||||
|
LIMIT " . $start . "," . $limit |
||||||
|
); |
||||||
|
while ($row = $sql->FetchRow()) |
||||||
|
{ |
||||||
|
$row_hits = $AVE_DB->Query(" |
||||||
|
SELECT SUM(poll_item_hits) |
||||||
|
FROM " . PREFIX . "_module_poll_items |
||||||
|
WHERE poll_id = '" . $row->id . "' |
||||||
|
GROUP BY poll_id |
||||||
|
")->GetCell(); |
||||||
|
|
||||||
|
$row->sum_hits = floor($row_hits); |
||||||
|
|
||||||
|
$row->comments = $AVE_DB->Query(" |
||||||
|
SELECT COUNT(*) |
||||||
|
FROM " . PREFIX . "_module_poll_comments |
||||||
|
WHERE poll_id = '" . $row->id . "' |
||||||
|
")->GetCell(); |
||||||
|
|
||||||
|
array_push($items, $row); |
||||||
|
} |
||||||
|
|
||||||
|
if ($num > $limit) |
||||||
|
{ |
||||||
|
$page_nav = " <a class=\"pnav\" href=\"index.php?do=modules&action=modedit&mod=poll&moduleaction=1&cp=" . SESSION . "&page={s}\">{t}</a> "; |
||||||
|
$page_nav = get_pagination($pages, 'page', $page_nav); |
||||||
|
$AVE_Template->assign('page_nav', $page_nav); |
||||||
|
} |
||||||
|
|
||||||
|
$AVE_Template->assign('items', $items); |
||||||
|
$AVE_Template->assign('content', $AVE_Template->fetch($adm_dir . 'admin_forms.tpl')); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Метод создания нового опроса |
||||||
|
* |
||||||
|
* @param string $adm_dir путь к папке с шаблонами модуля |
||||||
|
* @param string $lang_file путь к языковому файлу модуля |
||||||
|
*/ |
||||||
|
function pollNew($adm_dir, $lang_file) |
||||||
|
{ |
||||||
|
global $AVE_DB, $AVE_Template; |
||||||
|
|
||||||
|
$AVE_Template->config_load($lang_file, 'newpolls'); |
||||||
|
|
||||||
|
switch ($_REQUEST['sub']) |
||||||
|
{ |
||||||
|
case '': |
||||||
|
$groups = array(); |
||||||
|
$sql = $AVE_DB->Query(" |
||||||
|
SELECT |
||||||
|
user_group AS id, |
||||||
|
user_group_name AS name |
||||||
|
FROM " . PREFIX . "_user_groups |
||||||
|
"); |
||||||
|
while ($row = $sql->FetchRow()) |
||||||
|
{ |
||||||
|
$groups[$row->id] = $row->name; |
||||||
|
} |
||||||
|
|
||||||
|
$AVE_Template->assign('published', time()); |
||||||
|
$AVE_Template->assign('expire', mktime(date("H"), date("i"), 0, date("m"), date("d"), date("Y") + 10)); |
||||||
|
|
||||||
|
$AVE_Template->assign('groups', $groups); |
||||||
|
$AVE_Template->assign('selected', array_keys($groups)); |
||||||
|
$AVE_Template->assign('start', time()); |
||||||
|
$AVE_Template->assign('end', time()); |
||||||
|
$AVE_Template->assign('adm_dir', $adm_dir); |
||||||
|
$AVE_Template->assign('formaction', 'index.php?do=modules&action=modedit&mod=poll&moduleaction=new&sub=save&cp=' . SESSION); |
||||||
|
$AVE_Template->assign('content', $AVE_Template->fetch($adm_dir . 'admin_fields.tpl')); |
||||||
|
break; |
||||||
|
|
||||||
|
case 'save': |
||||||
|
|
||||||
|
$_REQUEST['poll_published'] = $this->_mktime($_REQUEST['poll_published']); |
||||||
|
$_REQUEST['poll_expire'] = $this->_mktime($_REQUEST['poll_expire']); |
||||||
|
$_REQUEST['poll_status'] = (!empty($_REQUEST['poll_status'])) ? (int)$_REQUEST['poll_status'] : '0'; |
||||||
|
$_REQUEST['poll_can_comment'] = (!empty($_REQUEST['poll_can_comment'])) ? (int)$_REQUEST['poll_can_comment'] : '0'; |
||||||
|
|
||||||
|
$AVE_DB->Query(" |
||||||
|
INSERT |
||||||
|
INTO " . PREFIX . "_module_poll |
||||||
|
SET |
||||||
|
id = '', |
||||||
|
poll_title = '" . $_REQUEST['poll_name'] . "', |
||||||
|
poll_status = '" . $_REQUEST['poll_status'] . "', |
||||||
|
poll_groups_id = '" . @implode(',', $_REQUEST['groups']) . "', |
||||||
|
poll_users_id = '0', |
||||||
|
poll_users_ip = '0', |
||||||
|
poll_can_comment = '" . $_REQUEST['poll_can_comment'] . "', |
||||||
|
poll_start = '" . $_REQUEST['poll_published'] . "', |
||||||
|
poll_end = '" . $_REQUEST['poll_expire'] . "' |
||||||
|
"); |
||||||
|
|
||||||
|
$iid = $AVE_DB->InsertId(); |
||||||
|
|
||||||
|
reportLog($_SESSION['user_name'] . ' - Добавил новый опрос (' . stripslashes($_REQUEST['poll_name']) . ')'); |
||||||
|
|
||||||
|
header('Location:index.php?do=modules&action=modedit&mod=poll&moduleaction=edit&id=' . $iid . '&cp=' . SESSION); |
||||||
|
exit; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Метод записи вариантов ответа нового опроса |
||||||
|
* |
||||||
|
* @param int $pid идентификатор опроса |
||||||
|
*/ |
||||||
|
function pollNewItemSave($pid) |
||||||
|
{ |
||||||
|
global $AVE_DB; |
||||||
|
|
||||||
|
if (!empty($_POST['item_title'])) |
||||||
|
{ |
||||||
|
|
||||||
|
$position = (int)$AVE_DB->Query(" |
||||||
|
SELECT MAX(poll_item_position) |
||||||
|
FROM " . PREFIX . "_module_poll_items |
||||||
|
WHERE poll_id = '" . $pid . "' |
||||||
|
")->GetCell() + 1; |
||||||
|
|
||||||
|
$AVE_DB->Query(" |
||||||
|
INSERT |
||||||
|
INTO " . PREFIX . "_module_poll_items |
||||||
|
SET |
||||||
|
id = '', |
||||||
|
poll_id = '" . $pid . "', |
||||||
|
poll_item_title = '" . $_REQUEST['item_title'] . "', |
||||||
|
poll_item_hits = '" . $_REQUEST['poll_item_hits'] . "', |
||||||
|
poll_item_color = '" . $_REQUEST['line_color'] . "', |
||||||
|
poll_item_position = '" . $position . "' |
||||||
|
"); |
||||||
|
} |
||||||
|
|
||||||
|
reportLog($_SESSION['user_name'] . ' - Добавил новый вариант ответа (' . ($_REQUEST['item_title']) . ') для опроса', 2, 2); |
||||||
|
|
||||||
|
header('Location:index.php?do=modules&action=modedit&mod=poll&moduleaction=edit&id=' . $pid . '&cp=' . SESSION); |
||||||
|
exit; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Метод редактирования опроса |
||||||
|
* |
||||||
|
* @param string $adm_dir путь к папке с шаблонами модуля |
||||||
|
* @param string $lang_file путь к языковому файлу модуля |
||||||
|
* @param int $pid идентификатор опроса |
||||||
|
*/ |
||||||
|
function pollEdit($adm_dir, $lang_file, $pid) |
||||||
|
{ |
||||||
|
global $AVE_DB, $AVE_Template; |
||||||
|
|
||||||
|
$AVE_Template->config_load($lang_file, 'editpolls'); |
||||||
|
|
||||||
|
switch ($_REQUEST['sub']) |
||||||
|
{ |
||||||
|
case '': |
||||||
|
$items = array(); |
||||||
|
$sql = $AVE_DB->Query(" |
||||||
|
SELECT * |
||||||
|
FROM " . PREFIX . "_module_poll_items |
||||||
|
WHERE poll_id = '" . $pid . "' |
||||||
|
ORDER BY poll_item_position ASC |
||||||
|
"); |
||||||
|
while ($row = $sql->FetchRow()) |
||||||
|
{ |
||||||
|
array_push($items, $row); |
||||||
|
} |
||||||
|
|
||||||
|
$groups = array(); |
||||||
|
$sql = $AVE_DB->Query(" |
||||||
|
SELECT |
||||||
|
user_group AS id, |
||||||
|
user_group_name AS name |
||||||
|
FROM " . PREFIX . "_user_groups |
||||||
|
"); |
||||||
|
while ($row = $sql->FetchRow()) |
||||||
|
{ |
||||||
|
$groups[$row->id] = $row->name; |
||||||
|
} |
||||||
|
|
||||||
|
$row = $AVE_DB->Query(" |
||||||
|
SELECT * |
||||||
|
FROM " . PREFIX . "_module_poll |
||||||
|
WHERE id = '" . $pid . "' |
||||||
|
")->FetchRow(); |
||||||
|
|
||||||
|
$AVE_Template->assign('groups', $groups); |
||||||
|
$AVE_Template->assign('selected', explode(',', $row->poll_groups_id)); |
||||||
|
$AVE_Template->assign('row', $row); |
||||||
|
$AVE_Template->assign('items', $items); |
||||||
|
$AVE_Template->assign('adm_dir', $adm_dir); |
||||||
|
$AVE_Template->assign('start', $row->poll_start); |
||||||
|
$AVE_Template->assign('end', $row->poll_end); |
||||||
|
$AVE_Template->assign('formaction', 'index.php?do=modules&action=modedit&mod=poll&moduleaction=save&cp=' . SESSION . '&id=' . $pid); |
||||||
|
$AVE_Template->assign('content', $AVE_Template->fetch($adm_dir . 'admin_fields.tpl')); |
||||||
|
break; |
||||||
|
|
||||||
|
case 'sortable': |
||||||
|
foreach ($_REQUEST['sort'] as $position => $items_id) |
||||||
|
{ |
||||||
|
$AVE_DB->Query(" |
||||||
|
UPDATE " . PREFIX . "_module_poll_items |
||||||
|
SET |
||||||
|
poll_item_position = '" . (int)$position . "' |
||||||
|
WHERE |
||||||
|
id = '" . (int)$items_id . "' |
||||||
|
"); |
||||||
|
} |
||||||
|
exit; |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Метод записи изменений в опросе |
||||||
|
* |
||||||
|
* @param int $pid идентификатор опроса |
||||||
|
*/ |
||||||
|
function pollSave($pid) |
||||||
|
{ |
||||||
|
global $AVE_DB; |
||||||
|
|
||||||
|
$AVE_DB->Query(" |
||||||
|
UPDATE " . PREFIX . "_module_poll |
||||||
|
SET |
||||||
|
poll_title = '" . $_REQUEST['poll_name'] . "', |
||||||
|
poll_status = '" . $_REQUEST['poll_status'] . "', |
||||||
|
poll_can_comment = '" . $_REQUEST['poll_can_comment'] . "', |
||||||
|
poll_start = '" . $this->_mktime($_REQUEST['poll_published']) . "', |
||||||
|
poll_end = '" . $this->_mktime($_REQUEST['poll_expire']). "', |
||||||
|
poll_groups_id = '" . @implode(',', (array)$_REQUEST['groups']) . "' |
||||||
|
WHERE |
||||||
|
id = '" . $pid . "' |
||||||
|
"); |
||||||
|
|
||||||
|
if (!empty($_POST['del'])) |
||||||
|
{ |
||||||
|
foreach ($_POST['del'] as $id => $field) |
||||||
|
{ |
||||||
|
$AVE_DB->Query(" |
||||||
|
DELETE |
||||||
|
FROM " . PREFIX . "_module_poll_items |
||||||
|
WHERE id = '" . $id . "' |
||||||
|
"); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
foreach ($_POST['item_title'] as $id => $field) |
||||||
|
{ |
||||||
|
if (!empty($field)) |
||||||
|
{ |
||||||
|
$AVE_DB->Query(" |
||||||
|
UPDATE " . PREFIX . "_module_poll_items |
||||||
|
SET |
||||||
|
poll_item_title = '" . $field . "', |
||||||
|
poll_item_hits = '" . $_POST['poll_item_hits'][$id] . "', |
||||||
|
poll_item_color = '" . $_POST['line_color'][$id] . "' |
||||||
|
WHERE |
||||||
|
id = '" . $id . "' |
||||||
|
"); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
header('Location:index.php?do=modules&action=modedit&mod=poll&moduleaction=edit&id=' . $pid . '&cp=' . SESSION); |
||||||
|
exit; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Метод удаления опроса |
||||||
|
* |
||||||
|
* @param int $pid идентификатор опроса |
||||||
|
*/ |
||||||
|
function pollDelete($pid) |
||||||
|
{ |
||||||
|
global $AVE_DB; |
||||||
|
|
||||||
|
$AVE_DB->Query(" |
||||||
|
DELETE |
||||||
|
FROM " . PREFIX . "_module_poll |
||||||
|
WHERE id = '" . $pid . "' |
||||||
|
"); |
||||||
|
$AVE_DB->Query(" |
||||||
|
DELETE |
||||||
|
FROM " . PREFIX . "_module_poll_items |
||||||
|
WHERE poll_id = '" . $pid . "' |
||||||
|
"); |
||||||
|
$AVE_DB->Query(" |
||||||
|
DELETE |
||||||
|
FROM " . PREFIX . "_module_poll_comments |
||||||
|
WHERE poll_id = '" . $pid . "' |
||||||
|
"); |
||||||
|
|
||||||
|
reportLog($_SESSION['user_name'] . ' - удалил опрос (' . $pid . ')', 2, 2); |
||||||
|
|
||||||
|
header('Location:index.php?do=modules&action=modedit&mod=poll&moduleaction=1&cp=' . SESSION); |
||||||
|
exit; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Метод управления комментариями к опросам |
||||||
|
* |
||||||
|
* @param string $tpl_dir путь к папке с шаблонами модуля |
||||||
|
* @param string $lang_file путь к языковому файлу модуля |
||||||
|
* @param int $pid идентификатор опроса |
||||||
|
*/ |
||||||
|
function pollCommentEdit($adm_dir, $lang_file, $pid) |
||||||
|
{ |
||||||
|
global $AVE_DB, $AVE_Template; |
||||||
|
|
||||||
|
$AVE_Template->config_load($lang_file, 'showcomments'); |
||||||
|
|
||||||
|
switch ($_REQUEST['sub']) |
||||||
|
{ |
||||||
|
case '': |
||||||
|
$items = array(); |
||||||
|
$sql = $AVE_DB->Query(" |
||||||
|
SELECT * |
||||||
|
FROM " . PREFIX . "_module_poll_comments |
||||||
|
WHERE poll_id = '" . $pid . "' |
||||||
|
"); |
||||||
|
while ($row = $sql->FetchRow()) |
||||||
|
{ |
||||||
|
$row->poll_comment_author = get_username_by_id($row->poll_comment_author_id); |
||||||
|
|
||||||
|
array_push($items, $row); |
||||||
|
} |
||||||
|
|
||||||
|
$AVE_Template->assign('items', $items); |
||||||
|
$AVE_Template->assign('adm_dir', $adm_dir); |
||||||
|
$AVE_Template->assign('content', $AVE_Template->fetch($adm_dir . 'admin_comments.tpl')); |
||||||
|
break; |
||||||
|
|
||||||
|
case 'save': |
||||||
|
if (!empty($_POST['del'])) |
||||||
|
{ |
||||||
|
foreach ($_POST['del'] as $id => $val) |
||||||
|
{ |
||||||
|
$AVE_DB->Query(" |
||||||
|
DELETE |
||||||
|
FROM " . PREFIX . "_module_poll_comments |
||||||
|
WHERE id = '" . $id . "' |
||||||
|
"); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
foreach ($_POST['comment_text'] as $id => $comment) |
||||||
|
{ |
||||||
|
if (!empty($comment)) |
||||||
|
{ |
||||||
|
$AVE_DB->Query(" |
||||||
|
UPDATE " . PREFIX . "_module_poll_comments |
||||||
|
SET |
||||||
|
poll_comment_title = '" . $_POST['comment_title'][$id] . "', |
||||||
|
poll_comment_text = '" . $comment . "' |
||||||
|
WHERE |
||||||
|
id = '" . $id . "' |
||||||
|
"); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
header('Location:index.php?do=modules&action=modedit&mod=poll&moduleaction=comments&id=' . $pid . '&cp=' . SESSION); |
||||||
|
exit; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Формитрование метки времени по данным полученным из выпадающих списков |
||||||
|
* сформированных Smarty {html_select_date} и {html_select_time} |
||||||
|
* |
||||||
|
* @param string $date имя массива с значениями даты |
||||||
|
* @param string $time имя массива с значениями времени |
||||||
|
* @return unknown timestamp |
||||||
|
*/ |
||||||
|
function _mktime($data=0) |
||||||
|
{ |
||||||
|
$data = explode(" ", $data); |
||||||
|
$stamp[day] = explode(".", $data[0]); |
||||||
|
$stamp[time] = explode(":", $data[1]); |
||||||
|
|
||||||
|
if (!empty($stamp)) |
||||||
|
{ |
||||||
|
$timestamp = mktime( |
||||||
|
$stamp[time][0], |
||||||
|
$stamp[time][1], |
||||||
|
0, |
||||||
|
$stamp[day][1], |
||||||
|
$stamp[day][0], |
||||||
|
$stamp[day][2] |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
return $timestamp; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
?> |
@ -0,0 +1,13 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
function PollRewrite($print_out) |
||||||
|
{ |
||||||
|
$print_out = preg_replace('/index.php([?])module=poll&action=result&pid=(\d+)/', ABS_PATH . 'poll-\\2.html', $print_out); |
||||||
|
$print_out = preg_replace('/index.php([?])module=poll&action=form&pop=1&pid=(\d+)/', ABS_PATH . 'pollcomment-\\2.html', $print_out); |
||||||
|
$print_out = preg_replace('/index.php([?])module=poll&action=archive/', ABS_PATH . 'poll-archive.html', $print_out); |
||||||
|
$print_out = str_replace(".html&print=1", "-print.html", $print_out); |
||||||
|
|
||||||
|
return $print_out; |
||||||
|
} |
||||||
|
|
||||||
|
?> |
@ -0,0 +1,140 @@ |
|||||||
|
[showpoll] |
||||||
|
POLL_ALREADY_POLL = "Ваше мнение уже учтено" |
||||||
|
POLL_BUTTON_VOTE = "Голосовать" |
||||||
|
POLL_EXPIRED = "Ваше мнние не может быть учтено, т.к. период опроса истек" |
||||||
|
POLL_NO_PERMISSION = "Ваше мнние не может быть учтено, т.к. Вы не участвуете в опросе" |
||||||
|
POLL_PUBLIC_TITLE = "Оставьте ваше мнение" |
||||||
|
POLL_PUB_RESULTS = "Результаты" |
||||||
|
POLL_VIEW_ARCHIVES = "Архив" |
||||||
|
POLL_VOTES = "Мнений:" |
||||||
|
|
||||||
|
[showresult] |
||||||
|
POLL_ACTIVE_INFO = "Опрос активен. Вы можете высказать свое мнение." |
||||||
|
POLL_ADDED = "Добавил" |
||||||
|
POLL_ALL_COMMENTS = "Всего комментариев:" |
||||||
|
POLL_ALL_HITS = "Всего мнений:" |
||||||
|
POLL_BUTTON_VOTE = "Голосовать" |
||||||
|
POLL_DATE_FORMAT1 = "%d.%m.%Y, %H:%M" |
||||||
|
POLL_ENDED = "Окончание опроса:" |
||||||
|
POLL_GROUPS_PERM = "Участвующие группы:" |
||||||
|
POLL_INACTIVE_INFO = "Опрос неактивен. Период действия опроса истек. Вы не можете оставить свой голос." |
||||||
|
POLL_INFOS = "Дополнительная информация" |
||||||
|
POLL_PUB_ADD_COMMENT = "Добавить комментарий" |
||||||
|
POLL_PUB_COMMENTS = "Комментарии к опросу" |
||||||
|
POLL_PUB_STATUS = "Статус опроса:" |
||||||
|
POLL_QUESTION_LIST = "Варианты ответов" |
||||||
|
POLL_RESULT_INFO = "Мнений | График | Процент" |
||||||
|
POLL_STARTED = "Начало опроса:" |
||||||
|
POLL_PAGE_TITLE_PREFIX = "Результаты опроса / " |
||||||
|
POLL_GUEST = "Прохожий" |
||||||
|
POLL_BUTTON_ADD_C = "Добавить" |
||||||
|
POLL_CHARSET_LEFT = "осталось символов" |
||||||
|
POLL_YOUR_NAME = "Имя" |
||||||
|
POLL_SECURE_CODE = "Защитный код" |
||||||
|
POLL_ERROR_NO_TITLE = "Пожалуйста, укажите заголовок комментария" |
||||||
|
POLL_ERROR_NO_TEXT = "Пожалуйста, напишите комментарий длинной не менее 10 символов" |
||||||
|
POLL_ERROR_NO_SCODE = "Пожалуйста, укажите защитный код" |
||||||
|
|
||||||
|
[showarchive] |
||||||
|
POLL_ARCHIVE_HITS = "Мнений" |
||||||
|
POLL_ARCHIVE_TITLE = "Архив опросов" |
||||||
|
POLL_DATE_FORMAT2 = "%d.%m.%Y" |
||||||
|
POLL_PUB_START = "Начало" |
||||||
|
POLL_PUB_END = "Окончание" |
||||||
|
POLL_PUB_TITLE = "Тема опроса" |
||||||
|
|
||||||
|
[displayform] |
||||||
|
POLL_ADD_COMMENT = "Оставьте свой комментарий" |
||||||
|
POLL_BUTTON_ADD_C = "Добавить комментарий" |
||||||
|
POLL_BUTTON_RESET = "Очистить поля" |
||||||
|
POLL_CHARSET_LEFT = "осталось символов" |
||||||
|
POLL_CLOSE_W = "Закрыть окно" |
||||||
|
POLL_COMMENT_ERROR = "Извините, но у вас недостаточно прав для добавления комментария." |
||||||
|
POLL_COMMENT_M = "Текст комментария" |
||||||
|
POLL_COMMENT_T = "Заголовок комментария" |
||||||
|
POLL_ENTER_CODE = "Пожалуйста, укажите защитный код" |
||||||
|
POLL_ENTER_TEXT = "Пожалуйста, напишите комментарий длинной не менее 10 символов" |
||||||
|
POLL_ENTER_TITLE = "Пожалуйста, укажите заголовок комментария" |
||||||
|
POLL_SECURE_CODE = "Защитный код" |
||||||
|
|
||||||
|
[showpolls] |
||||||
|
POLL_ACTIONS = "Действия" |
||||||
|
POLL_ACTIVE = "Опрос активен" |
||||||
|
POLL_DATE_FORMAT1 = "%d.%m.%Y, %H:%M" |
||||||
|
POLL_DELETE = "Удалить данный опрос" |
||||||
|
POLL_DELETE_CONFIRM = "Вы уверены, что хотите удалить данный опрос?" |
||||||
|
POLL_EDIT_POLL = "Редактировать данный опрос" |
||||||
|
POLL_HITS_CMMENT = "Мнений/Комментариев" |
||||||
|
POLL_INACTIVE = "Опрос неактивен" |
||||||
|
POLL_MODULE_NAME = "Опросы" |
||||||
|
POLL_MODULE_TITLE = "В данном разделе представлены все существующие опросы в системе." |
||||||
|
POLL_MODULE_ALL = "Список опросов" |
||||||
|
POLL_NAME = "Тема опроса" |
||||||
|
POLL_NEW_LINK = "Создать новый опрос" |
||||||
|
POLL_START_END = "Время проведения" |
||||||
|
POLL_SYSTEM_TAG = "Системный тег" |
||||||
|
POLL_MODULE_NO_ITEMS = "В данный момент, нет опросов." |
||||||
|
|
||||||
|
[editpolls] |
||||||
|
POLL_ADD_POLL = "Создание нового опроса" |
||||||
|
POLL_BUTTON_ADD = "Добавить вариант ответа" |
||||||
|
POLL_BUTTON_SAVE = "Сохранить изменения" |
||||||
|
POLL_CAN_COMMENT = "Разрешить комментарии?" |
||||||
|
POLL_EDIT = "Редактирование опроса" |
||||||
|
POLL_EDIT_INFO = "В данном разделе вы можете внести изменения в текущий опрос, продлить или сократить время действия опроса." |
||||||
|
POLL_END_TIME = "Дата и время окончания:" |
||||||
|
POLL_GROUP_INFO = "Для выбора нескольких групп, удерживайте клавишу CTRL." |
||||||
|
POLL_MARK_DELETE = "Отметить для удаления" |
||||||
|
POLL_NAME = "Тема опроса" |
||||||
|
POLL_NEW_INFO = "В данном разделе вы можете создать новый опрос указав дату начала и окончания опроса. Также вы можете выбрать статус опроса, разрешить или запретить комментарии к даннному опросу и выбрать группы пользователей, которым будет доступно голосование." |
||||||
|
POLL_NO = "Нет" |
||||||
|
POLL_QUESTION_COLOR = "Цвет (например #F96600)" |
||||||
|
POLL_QUESTION_HITS = "Мнений" |
||||||
|
POLL_QUESTION_NAME = "Вариант ответа" |
||||||
|
POLL_QUESTION_POSI = "Позиция" |
||||||
|
POLL_SETTINGS_TITLE = "Создание нового опроса" |
||||||
|
POLL_START_TIME = "Дата и время начала:" |
||||||
|
POLL_STATUS = "Активный" |
||||||
|
POLL_USER_GROUPS = "Группы пользователей, участвующие в опросе:" |
||||||
|
POLL_YES = "Да" |
||||||
|
POLL_MODULE_NAME = "Опросы" |
||||||
|
POLL_QUESTIONS = "Варианты ответа" |
||||||
|
POLL_QUESTIONS_ADD = "Добавить вариант" |
||||||
|
POLL_QUESTION_NO_ITEMS = "Нет вариантов ответа" |
||||||
|
POLL_POSITION_SUCCES = "Порядок сохранён" |
||||||
|
|
||||||
|
[newpolls] |
||||||
|
POLL_ADD_POLL = "Создание нового опроса" |
||||||
|
POLL_BUTTON_ADD = "Добавить вариант" |
||||||
|
POLL_BUTTON_SAVE = "Сохранить изменения" |
||||||
|
POLL_CAN_COMMENT = "Разрешить комментарии?" |
||||||
|
POLL_EDIT = "Редактирование опроса" |
||||||
|
POLL_EDIT_INFO = "В данном разделе вы можете внести изменения в текущий опрос, продлить или сократить время действия опроса." |
||||||
|
POLL_END_TIME = "Дата и время окончания:" |
||||||
|
POLL_GROUP_INFO = "Для выбора нескольких групп, удерживайте клавишу CTRL." |
||||||
|
POLL_MARK_DELETE = "Отметить для удаления" |
||||||
|
POLL_NAME = "Название опроса" |
||||||
|
POLL_NEW_INFO = "В данном разделе вы можете создать новый опрос указав дату начала и окончания опроса. Также вы можете выбрать статус опроса, разрешить или запретить комментарии к даннному опросу и выбрать группы пользователей, которым будет доступно голосование." |
||||||
|
POLL_NO = "Нет" |
||||||
|
POLL_QUESTION_COLOR = "Цвет (например #F96600)" |
||||||
|
POLL_QUESTION_HITS = "Голосов" |
||||||
|
POLL_QUESTION_NAME = "Название вопроса" |
||||||
|
POLL_QUESTION_POSI = "Позиция" |
||||||
|
POLL_SETTINGS_TITLE = "Создание нового опроса" |
||||||
|
POLL_START_TIME = "Дата и время начала:" |
||||||
|
POLL_STATUS = "Активный" |
||||||
|
POLL_USER_GROUPS = "Группы пользователей, участвующие в опросе:" |
||||||
|
POLL_YES = "Да" |
||||||
|
POLL_MODULE_NAME = "Опросы" |
||||||
|
|
||||||
|
[showcomments] |
||||||
|
POLL_BUTTON_CLOSE = "Закрыть окно" |
||||||
|
POLL_BUTTON_SAVE = "Сохранить изменения" |
||||||
|
POLL_COMMENTS_INFO = "В данном разделе вы можете удалить или отредактировать комментарии, оставленные пользоателями для данного опроса." |
||||||
|
POLL_COMMENTS_TITLE = "Просмотр / Редактирование комментариев" |
||||||
|
POLL_COMMENT_AUTHOR = "Автор:" |
||||||
|
POLL_COMMENT_DATE = "Дата создания:" |
||||||
|
POLL_COMMENT_INFO = "Информация" |
||||||
|
POLL_COMMENT_TITLE = "Содержимое комментария" |
||||||
|
POLL_MARK_DELETE = "Отметить для удаления" |
||||||
|
POLL_MODULE_NAME = "Опросы" |
@ -0,0 +1,118 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
if(!defined('BASE_DIR')) exit; |
||||||
|
|
||||||
|
if (defined('ACP')) |
||||||
|
{ |
||||||
|
$modul['ModuleName'] = 'Опросы'; |
||||||
|
$modul['ModuleSysName'] = 'poll'; |
||||||
|
$modul['ModuleVersion'] = '1.1a'; |
||||||
|
$modul['ModuleDescription'] = 'Данный модуль предназачен для организации системы опросов на сайте. Возможности модуля позволяют создавать неограниченное количество опросных листов, а также неограниченное количество вопросов.'; |
||||||
|
$modul['ModuleAutor'] = 'AVE.CMS Team'; |
||||||
|
$modul['ModuleCopyright'] = '© 2007-2013 AVE.CMS'; |
||||||
|
$modul['ModuleIsFunction'] = 1; |
||||||
|
$modul['ModuleTemplate'] = 1; |
||||||
|
$modul['ModuleAdminEdit'] = 1; |
||||||
|
$modul['ModuleFunction'] = 'mod_poll'; |
||||||
|
$modul['ModuleTag'] = '[mod_poll:XXX]'; |
||||||
|
$modul['ModuleTagLink'] = null; |
||||||
|
$modul['ModuleAveTag'] = '#\\\[mod_poll:(\\\d+)]#'; |
||||||
|
$modul['ModulePHPTag'] = "<?php mod_poll(''$1''); ?>";
|
||||||
|
} |
||||||
|
|
||||||
|
function mod_poll($poll_id) |
||||||
|
{ |
||||||
|
require_once(BASE_DIR . '/modules/poll/class.poll.php'); |
||||||
|
require_once(BASE_DIR . '/modules/poll/funcs/func.rewrite.php'); |
||||||
|
|
||||||
|
$poll = new Poll; |
||||||
|
|
||||||
|
$tpl_dir = BASE_DIR . '/modules/poll/templates/'; |
||||||
|
$lang_file = BASE_DIR . '/modules/poll/lang/' . $_SESSION['user_language'] . '.txt'; |
||||||
|
|
||||||
|
$poll->pollShow($tpl_dir, $lang_file, stripslashes($poll_id)); |
||||||
|
} |
||||||
|
|
||||||
|
if (!defined('ACP') |
||||||
|
&& isset($_REQUEST['module']) && $_REQUEST['module'] == 'poll' |
||||||
|
&& isset($_REQUEST['action'])) |
||||||
|
{ |
||||||
|
require_once(BASE_DIR . '/modules/poll/class.poll.php'); |
||||||
|
require_once(BASE_DIR . '/modules/poll/funcs/func.rewrite.php'); |
||||||
|
|
||||||
|
$poll = new Poll; |
||||||
|
|
||||||
|
$tpl_dir = BASE_DIR . '/modules/poll/templates/'; |
||||||
|
$lang_file = BASE_DIR . '/modules/poll/lang/' . $_SESSION['user_language'] . '.txt'; |
||||||
|
|
||||||
|
switch ($_REQUEST['action']) |
||||||
|
{ |
||||||
|
case 'result': |
||||||
|
$poll->pollResultShow($tpl_dir, $lang_file, (int)$_REQUEST['pid']); |
||||||
|
break; |
||||||
|
|
||||||
|
case 'vote': |
||||||
|
$poll->pollVote((int)$_REQUEST['pid']); |
||||||
|
break; |
||||||
|
|
||||||
|
case 'archive': |
||||||
|
$poll->pollArchiveShow($tpl_dir, $lang_file); |
||||||
|
break; |
||||||
|
|
||||||
|
case 'form': |
||||||
|
$poll->pollCommentShow($tpl_dir, $lang_file, (int)$_REQUEST['pid'], THEME_FOLDER); |
||||||
|
break; |
||||||
|
|
||||||
|
case 'comment': |
||||||
|
$poll->pollCommentNew($tpl_dir, $lang_file, (int)$_REQUEST['pid']); |
||||||
|
break; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
if (defined('ACP') && !empty($_REQUEST['moduleaction'])) |
||||||
|
{ |
||||||
|
require_once(BASE_DIR . '/modules/poll/class.poll.php'); |
||||||
|
require_once(BASE_DIR . '/modules/poll/funcs/func.rewrite.php'); |
||||||
|
|
||||||
|
$poll = new Poll; |
||||||
|
|
||||||
|
$adm_dir = BASE_DIR . '/modules/poll/admin/'; |
||||||
|
$lang_file = BASE_DIR . '/modules/poll/lang/' . $_SESSION['user_language'] . '.txt'; |
||||||
|
|
||||||
|
switch ($_REQUEST['moduleaction']) |
||||||
|
{ |
||||||
|
case '1': |
||||||
|
$poll->pollList($adm_dir, $lang_file); |
||||||
|
break; |
||||||
|
|
||||||
|
case 'new': |
||||||
|
$poll->pollNew($adm_dir, $lang_file); |
||||||
|
break; |
||||||
|
|
||||||
|
case 'save_new': |
||||||
|
$poll->pollNewItemSave((int)$_REQUEST['id']); |
||||||
|
break; |
||||||
|
|
||||||
|
case 'edit': |
||||||
|
$poll->pollEdit($adm_dir, $lang_file, (int)$_REQUEST['id']); |
||||||
|
break; |
||||||
|
|
||||||
|
case 'save': |
||||||
|
$poll->pollSave((int)$_REQUEST['id']); |
||||||
|
break; |
||||||
|
|
||||||
|
case 'delete': |
||||||
|
$poll->pollDelete((int)$_REQUEST['id']); |
||||||
|
break; |
||||||
|
|
||||||
|
case 'comments': |
||||||
|
$poll->pollCommentEdit($adm_dir, $lang_file, (int)$_REQUEST['id']); |
||||||
|
break; |
||||||
|
|
||||||
|
case 'sort': |
||||||
|
$poll->pollSort((array)$_REQUEST['sort']); |
||||||
|
exit; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
?> |
@ -0,0 +1,93 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
/** |
||||||
|
* AVE.cms - Модуль Опросы. |
||||||
|
* |
||||||
|
* @package AVE.cms |
||||||
|
* @subpackage mod_poll |
||||||
|
* @since 1.1 |
||||||
|
* @filesource |
||||||
|
*/ |
||||||
|
|
||||||
|
/** |
||||||
|
* mySQL-запросы для установки, обновления и удаления модуля |
||||||
|
*/ |
||||||
|
|
||||||
|
$module_sql_install = array(); |
||||||
|
$module_sql_deinstall = array(); |
||||||
|
$module_sql_update = array(); |
||||||
|
|
||||||
|
// Удаление модуля |
||||||
|
$module_sql_deinstall[] = "DROP TABLE IF EXISTS CPPREFIX_module_poll;"; |
||||||
|
$module_sql_deinstall[] = "DROP TABLE IF EXISTS CPPREFIX_module_poll_comments;"; |
||||||
|
$module_sql_deinstall[] = "DROP TABLE IF EXISTS CPPREFIX_module_poll_items;"; |
||||||
|
|
||||||
|
// Установка модуля |
||||||
|
$module_sql_install[] = "CREATE TABLE CPPREFIX_module_poll ( |
||||||
|
id int(10) unsigned NOT NULL auto_increment, |
||||||
|
poll_title varchar(255) NOT NULL default '', |
||||||
|
poll_status enum('1','0') NOT NULL default '1', |
||||||
|
poll_can_comment enum('0','1') NOT NULL default '0', |
||||||
|
poll_groups_id tinytext, |
||||||
|
poll_start int(10) unsigned NOT NULL default '0', |
||||||
|
poll_end int(10) unsigned NOT NULL default '0', |
||||||
|
poll_users_id text NOT NULL default '', |
||||||
|
poll_users_ip text NOT NULL default '', |
||||||
|
PRIMARY KEY (id) |
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8;"; |
||||||
|
|
||||||
|
$module_sql_install[] = "CREATE TABLE CPPREFIX_module_poll_comments ( |
||||||
|
id int(10) unsigned NOT NULL auto_increment, |
||||||
|
poll_id int(10) NOT NULL, |
||||||
|
poll_comment_author_id int(10) NOT NULL, |
||||||
|
poll_comment_author_ip text NOT NULL default '', |
||||||
|
poll_comment_time int(10) unsigned NOT NULL default '0', |
||||||
|
poll_comment_title varchar(250) NOT NULL default '', |
||||||
|
poll_comment_text text NOT NULL default '', |
||||||
|
PRIMARY KEY (id) |
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8;"; |
||||||
|
|
||||||
|
$module_sql_install[] = "CREATE TABLE CPPREFIX_module_poll_items ( |
||||||
|
id int(10) unsigned NOT NULL auto_increment, |
||||||
|
poll_id int(10) NOT NULL, |
||||||
|
poll_item_title varchar(250) NOT NULL default '', |
||||||
|
poll_item_hits int(10) NOT NULL default '0', |
||||||
|
poll_item_color varchar(10) NOT NULL default '', |
||||||
|
poll_item_position int(2) NOT NULL, |
||||||
|
PRIMARY KEY (id) |
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8;"; |
||||||
|
|
||||||
|
// Обновление модуля |
||||||
|
$module_sql_update[] = " |
||||||
|
UPDATE |
||||||
|
`CPPREFIX_module` |
||||||
|
SET |
||||||
|
ModuleAveTag = '" . $modul['ModuleAveTag'] . "', |
||||||
|
ModulePHPTag = '" . $modul['ModulePHPTag'] . "', |
||||||
|
ModuleVersion = '" . $modul['ModuleVersion'] . "' |
||||||
|
WHERE |
||||||
|
ModuleSysName = '" . $modul['ModuleSysName'] . "' |
||||||
|
LIMIT 1; |
||||||
|
"; |
||||||
|
|
||||||
|
$module_sql_update[] = " |
||||||
|
RENAME TABLE |
||||||
|
`CPPREFIX_modul_poll` |
||||||
|
TO |
||||||
|
`CPPREFIX_module_poll` |
||||||
|
"; |
||||||
|
|
||||||
|
$module_sql_update[] = " |
||||||
|
RENAME TABLE |
||||||
|
`CPPREFIX_modul_poll_comments` |
||||||
|
TO |
||||||
|
`CPPREFIX_module_poll_comments` |
||||||
|
"; |
||||||
|
|
||||||
|
$module_sql_update[] = " |
||||||
|
RENAME TABLE |
||||||
|
`CPPREFIX_modul_poll_items` |
||||||
|
TO |
||||||
|
`CPPREFIX_module_poll_items` |
||||||
|
"; |
||||||
|
?> |
@ -0,0 +1,24 @@ |
|||||||
|
<h2>{#POLL_ARCHIVE_TITLE#}</h2><br /> |
||||||
|
<br /> |
||||||
|
|
||||||
|
<table width="100%" border="0" cellpadding="0" cellspacing="1"> |
||||||
|
<col> |
||||||
|
<col width="100"> |
||||||
|
<col width="100"> |
||||||
|
<col width="100"> |
||||||
|
<tr> |
||||||
|
<td class="mod_poll_table"><a href="index.php?module=poll&action=archive&order=title{if $smarty.request.order=='title' && $smarty.request.by!='desc'}&by=desc{/if}">{#POLL_PUB_TITLE#}</a></td> |
||||||
|
<td class="mod_poll_table" align="center"><a href="index.php?module=poll&action=archive&order=start{if $smarty.request.order=='start' && $smarty.request.by!='desc'}&by=desc{/if}">{#POLL_PUB_START#}</a></td> |
||||||
|
<td class="mod_poll_table" align="center"><a href="index.php?module=poll&action=archive&order=end{if $smarty.request.order=='end' && $smarty.request.by!='desc'}&by=desc{/if}">{#POLL_PUB_END#}</a></td> |
||||||
|
<td class="mod_poll_table" align="center"><a href="index.php?module=poll&action=archive&order=votes{if $smarty.request.order=='votes' && $smarty.request.by!='desc'}&by=desc{/if}">{#POLL_ARCHIVE_HITS#}</a></td> |
||||||
|
</tr> |
||||||
|
{foreach from=$items item=item} |
||||||
|
<tr class="{cycle name='1' values="mod_poll_first,mod_poll_second"}"> |
||||||
|
<td><a href="{$item->plink}">{$item->poll_title}</a></td> |
||||||
|
<td align="center">{$item->poll_start|date_format:$DATE_FORMAT|pretty_date}</td> |
||||||
|
<td align="center">{$item->poll_end|date_format:$DATE_FORMAT|pretty_date}</td> |
||||||
|
<td align="center">{$item->votes}</td> |
||||||
|
</tr> |
||||||
|
{/foreach} |
||||||
|
</table><br /> |
||||||
|
<br /> |
@ -0,0 +1 @@ |
|||||||
|
(function($){$.fn.extend({limit:function(limit,element){var interval,f;var self=$(this);$(this).focus(function(){interval=window.setInterval(substring,100)});$(this).blur(function(){clearInterval(interval);substring()});substringFunction="function substring(){ var val = $(self).val();var length = val.length;if(length > limit){$(self).val($(self).val().substring(0,limit));}";if(typeof element!='undefined')substringFunction+="if($(element).html() != limit-length){$(element).html((limit-length<=0)?'0':limit-length);}";substringFunction+="}";eval(substringFunction);substring()}})})(jQuery); |
@ -0,0 +1,93 @@ |
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml"> |
||||||
|
<head> |
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
||||||
|
<title>{#POLL_ADD_COMMENT#}</title> |
||||||
|
<link href="templates/{$theme_folder}/css/layout.css" rel="stylesheet" type="text/css" media="screen" /> |
||||||
|
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script> |
||||||
|
<script src="templates/{$theme_folder}/js/common.js" type="text/javascript"></script> |
||||||
|
</head> |
||||||
|
|
||||||
|
<body id="body_popup"> |
||||||
|
|
||||||
|
<script type="text/javascript" language="JavaScript"> |
||||||
|
var aveabspath = '{$smarty.const.ABS_PATH}'; |
||||||
|
$(document).ready(function() {ldelim} |
||||||
|
$('#comment_text') |
||||||
|
.after('{#POLL_CHARSET_LEFT#} - <span class="charsLeft" id="charsLeft_new"></span>') |
||||||
|
.limit({$max_chars},'#charsLeft_new'); |
||||||
|
$('#gpf').submit(function() {ldelim} |
||||||
|
if ($('comment_title').val() == '') {ldelim} |
||||||
|
alert("{#POLL_ENTER_TITLE#}"); |
||||||
|
$('comment_title').focus(); |
||||||
|
return false; |
||||||
|
{rdelim} |
||||||
|
if ($('comment_text').val() == '') {ldelim} |
||||||
|
alert("{#POLL_ENTER_TEXT#}"); |
||||||
|
$('comment_text').focus(); |
||||||
|
return false; |
||||||
|
{rdelim} |
||||||
|
{if $anti_spam == 1} |
||||||
|
if ($('#gbf #securecode').val() == '') {ldelim} |
||||||
|
alert("{#POLL_ENTER_CODE#}"); |
||||||
|
$('#gbf #securecode').focus(); |
||||||
|
return false; |
||||||
|
{rdelim}{/if} |
||||||
|
{rdelim}); |
||||||
|
{rdelim}); |
||||||
|
</script> |
||||||
|
|
||||||
|
<h5>{#POLL_ADD_COMMENT#}</h5> |
||||||
|
|
||||||
|
<div id="module_content"> |
||||||
|
{if $cancomment != 1} |
||||||
|
<p id="module_intro">{#POLL_COMMENT_ERROR#}</p> |
||||||
|
<p> </p> |
||||||
|
<p><input onclick="window.close();" type="button" class="button" value="{#POLL_CLOSE_W#}" /></p> |
||||||
|
{else} |
||||||
|
<form id="pf" method="post" action="index.php?module=poll&action=comment&pid={$smarty.request.pid|escape}"> |
||||||
|
{if $errors}<ul> |
||||||
|
{foreach from=$errors item=error}<li>{$error|escape}</li> |
||||||
|
{/foreach} |
||||||
|
</ul>{/if} |
||||||
|
<fieldset> |
||||||
|
<legend><label for="l_Titel">{#POLL_COMMENT_T#}</label></legend> |
||||||
|
<input name="comment_title" type="text" id="comment_title" style="width:250px" value="{$title|escape}" /> |
||||||
|
</fieldset><br /> |
||||||
|
|
||||||
|
<fieldset> |
||||||
|
<legend><label for="l_Text">{#POLL_COMMENT_M#}</label></legend> |
||||||
|
{* <textarea onkeyup="javascript:textCounter(this.form.comment_text,this.form.charleft,{$max_chars});" onkeydown="javascript:textCounter(this.form.comment_text,this.form.charleft,{$max_chars});" style="width:98%; height:165px" name="comment_text" id="comment_text">{$text}</textarea> |
||||||
|
<input type="text" size="6" name="charleft" value="{$max_chars}" /> {#POLL_CHARSET_LEFT#} |
||||||
|
*} |
||||||
|
<textarea id="comment_text" name="comment_text" cols="80" rows="15" style="width:98%; height:165px">{$text}</textarea> |
||||||
|
</fieldset> |
||||||
|
|
||||||
|
{if $anti_spam == 1} |
||||||
|
<fieldset> |
||||||
|
{* |
||||||
|
<legend><label for="l_Text">{#POLL_SECURE_CODE#}</label></legend> |
||||||
|
<img src="inc/antispam.php?cp_secureimage={$im}" alt="" width="121" height="41" border="0" /><br /> |
||||||
|
<br /> |
||||||
|
<small><span id="S_secure_{$im}"></span></small> |
||||||
|
<input name="comment_code" type="text" id="comment_code" style="width:100px" maxlength="7" /> |
||||||
|
*} |
||||||
|
<p> |
||||||
|
<label>{#POLL_SECURE_CODE#}</label> |
||||||
|
<span id="captcha"><img src="{$ABS_PATH}inc/captcha.php" alt="" width="120" height="60" border="0" /></span><br /> |
||||||
|
<label>{#POLL_ENTER_CODE#}</label><br /> |
||||||
|
<input name="securecode" type="text" id="securecode" maxlength="10" /><br /> |
||||||
|
</p> |
||||||
|
</fieldset> |
||||||
|
{/if} |
||||||
|
|
||||||
|
<p> |
||||||
|
<input type="submit" class="button" value="{#POLL_BUTTON_ADD_C#}" /> |
||||||
|
<input type="reset" class="button" value="{#POLL_BUTTON_RESET#}" /> |
||||||
|
</p> |
||||||
|
</form> |
||||||
|
{/if} |
||||||
|
</div> |
||||||
|
|
||||||
|
</body> |
||||||
|
</html> |
@ -0,0 +1,10 @@ |
|||||||
|
<p><strong>{$poll->poll_title}</strong></p> |
||||||
|
<form method="post" action="{$formaction}"> |
||||||
|
<p> |
||||||
|
{foreach from=$items item=item} |
||||||
|
<input class="absmiddle" type="radio" name="p_item" value="{$item->id}" /> {$item->poll_item_title}<br /> |
||||||
|
{/foreach} |
||||||
|
</p> |
||||||
|
<input type="submit" style="width:80px" class="button" value="{#POLL_BUTTON_VOTE#}" /> |
||||||
|
<input type="button" style="width:80px" class="button" value="{#POLL_PUB_RESULTS#}" onclick="location.href='{$formaction_result}';" /> |
||||||
|
</form> |
@ -0,0 +1,15 @@ |
|||||||
|
<p><strong>{$poll->poll_title}</strong></p> |
||||||
|
<p> |
||||||
|
{foreach from=$items item=item} |
||||||
|
<div style="padding:2px">{$item->poll_item_title}</div> |
||||||
|
<div style="width:98%;height:5px;padding:0"> |
||||||
|
<div style="display:block;background-color:{$item->poll_item_color};height:5px;width:{$item->sum|default:'0'}%"></div> |
||||||
|
</div> |
||||||
|
<small style="color:{$item->poll_item_color}">{#POLL_VOTES#} {$item->poll_item_hits} ({$item->sum|default:'0'}%)</small> |
||||||
|
{/foreach} |
||||||
|
</p> |
||||||
|
{if $poll->message != ''}<p><small>{$poll->message}</small></p>{/if} |
||||||
|
<form method="post"> |
||||||
|
<input type="button" class="button" style="width:100px" onclick="location.href='{$formaction_result}';" value="{#POLL_PUB_RESULTS#} ({$poll->sumhits})" /> |
||||||
|
<input type="button" class="button" style="width:50px" onclick="location.href='{$formaction_archive}';" value="{#POLL_VIEW_ARCHIVES#}" /> |
||||||
|
</form> |
@ -0,0 +1,181 @@ |
|||||||
|
{literal} |
||||||
|
<style> |
||||||
|
#new fieldset {text-align:center; border:#ccc solid 1px;} |
||||||
|
#new fieldset input {width:120px;} |
||||||
|
#new .p_input label {float:left; width:10%; text-align:right; padding-right:.5em;} |
||||||
|
#new .p_input input {width:40%;} |
||||||
|
</style> |
||||||
|
{/literal} |
||||||
|
<script type="text/javascript" src="/modules/poll/templates/js/common.js"></script> |
||||||
|
|
||||||
|
<script language="javascript"> |
||||||
|
$(document).ready(function() {ldelim} |
||||||
|
$('#markItUpPost .markItUpHeader').append('{#POLL_CHARSET_LEFT#} - <span class="charsLeft" id="charsLeft_new"></span>'); |
||||||
|
$('#post').limit({$poll->comment_max_chars},'#charsLeft_new'); |
||||||
|
$('#new').submit(function() {ldelim} |
||||||
|
if ($('#post_title').val() == '') {ldelim} |
||||||
|
alert('{#POLL_ERROR_NO_TITLE#}'); |
||||||
|
$('#post_title').focus(); |
||||||
|
return false; |
||||||
|
{rdelim} |
||||||
|
var pftext = $('#new textarea').val(); |
||||||
|
if (pftext.length < 10) {ldelim} |
||||||
|
alert("{#POLL_ERROR_SMALL_TEXT#}"); |
||||||
|
$('#new textarea').focus(); |
||||||
|
return false; |
||||||
|
{rdelim} |
||||||
|
{if $poll->anti_spam == 1} |
||||||
|
if ($('#securecode').val() == '') {ldelim} |
||||||
|
alert("{#POLL_ERROR_NO_SCODE#}"); |
||||||
|
$('#securecode').focus(); |
||||||
|
return false; |
||||||
|
{rdelim}{/if} |
||||||
|
{rdelim}); |
||||||
|
{rdelim}); |
||||||
|
</script> |
||||||
|
|
||||||
|
<h2 id="page-heading">{$poll->poll_title|escape}</h2> |
||||||
|
|
||||||
|
<div class="tablebox"> |
||||||
|
<table width="100%" border="0" cellpadding="5" cellspacing="1" bgcolor="#CCCCCC"> |
||||||
|
<col width="50%"> |
||||||
|
<col width="5%"> |
||||||
|
<col width="40%"> |
||||||
|
<col width="5%"> |
||||||
|
<thead> |
||||||
|
<tr> |
||||||
|
<th>{#POLL_QUESTION_LIST#}</th> |
||||||
|
<th colspan="3">{#POLL_RESULT_INFO#}</th> |
||||||
|
</tr> |
||||||
|
</thead> |
||||||
|
{foreach from=$poll->items item=item} |
||||||
|
<tr class="{cycle name="1" values=",odd"}"> |
||||||
|
<td>{$item->poll_item_title|escape}</td> |
||||||
|
<td><div align="center"> {$item->poll_item_hits} </div></td> |
||||||
|
<td > |
||||||
|
<div style="width:100%;height:12px;padding:0"> |
||||||
|
<div style="width:{if $item->sum!=""}{$item->sum}%{else}1%{/if};height:12px;background-color:{$item->poll_item_color}"> |
||||||
|
<img height="1" width="1" src="{$img_folder}/pixel.gif" alt="" /> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</td> |
||||||
|
<td class="{cycle name="pollerg4" values="mod_poll_first,mod_poll_second"}" width="5%" nowrap="nowrap"><div align="center"> {$item->sum} %</div></td> |
||||||
|
</tr> |
||||||
|
{/foreach} |
||||||
|
</table> |
||||||
|
|
||||||
|
<table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#cccccc"> |
||||||
|
<col width="170"> |
||||||
|
<thead> |
||||||
|
<tr> |
||||||
|
<th colspan="2">{#POLL_INFOS#}</th> |
||||||
|
</tr> |
||||||
|
</thead> |
||||||
|
<tr class="odd"> |
||||||
|
<td>{#POLL_ALL_HITS#}</td> |
||||||
|
<td>{$poll->votes}</td> |
||||||
|
</tr> |
||||||
|
|
||||||
|
<tr > |
||||||
|
<td>{#POLL_PUB_STATUS#}</td> |
||||||
|
<td>{if $poll->poll_end > $smarty.now}{#POLL_ACTIVE_INFO#}{else}{#POLL_INACTIVE_INFO#}{/if}</td> |
||||||
|
</tr> |
||||||
|
|
||||||
|
<tr class="odd"> |
||||||
|
<td>{#POLL_STARTED#}</td> |
||||||
|
<td>{$poll->poll_start|date_format:$TIME_FORMAT|pretty_date}</td> |
||||||
|
</tr> |
||||||
|
|
||||||
|
<tr > |
||||||
|
<td>{#POLL_ENDED#}</td> |
||||||
|
<td>{$poll->poll_end|date_format:$TIME_FORMAT|pretty_date}</td> |
||||||
|
</tr> |
||||||
|
|
||||||
|
<tr class="odd"> |
||||||
|
<td>{#POLL_GROUPS_PERM#}</td> |
||||||
|
<td>{$poll->groups|escape}</td> |
||||||
|
</tr> |
||||||
|
</table> |
||||||
|
|
||||||
|
{if $poll->can_vote == 1} |
||||||
|
<br /> |
||||||
|
<div style="padding:5px"><strong>{$poll->poll_title|escape}</strong></div> |
||||||
|
<form method="post" action="{$poll->formaction}"> |
||||||
|
{foreach from=$poll->items item=item} |
||||||
|
<div style="margin-left:5px"><input type="radio" name="p_item" value="{$item->id}" /> {$item->poll_item_title|escape}</div> |
||||||
|
{/foreach} |
||||||
|
<div style="padding:5px"><input type="submit" class="button" value="{#POLL_BUTTON_VOTE#}" /></div> |
||||||
|
</form> |
||||||
|
{/if} |
||||||
|
</div> |
||||||
|
|
||||||
|
{if $poll->poll_can_comment == 1} |
||||||
|
<br /> |
||||||
|
<h6>{#POLL_PUB_COMMENTS#}</h6> |
||||||
|
|
||||||
|
<a href="{$poll->link_result}#new">{#POLL_PUB_ADD_COMMENT#}</a> | {#POLL_ALL_COMMENTS#} {$poll->count_comments}<br /> |
||||||
|
<br /> |
||||||
|
|
||||||
|
{foreach from=$poll->comments item=comment} |
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="mod_comment_box" id="{$comment->id}"> |
||||||
|
<tr> |
||||||
|
<td class="mod_comment_header"> |
||||||
|
<div class="mod_comment_author"> |
||||||
|
{*#POLL_ADDED#*} <a href="#">{$comment->lastname|escape} {$comment->firstname|escape}</a> {$comment->poll_comment_time|date_format:$TIME_FORMAT|pretty_date} |
||||||
|
</div> |
||||||
|
</td> |
||||||
|
</tr> |
||||||
|
<tr> |
||||||
|
<td class="mod_comment_text"> |
||||||
|
<strong>{$comment->poll_comment_title|escape}</strong><br /> |
||||||
|
{$comment->poll_comment_text} |
||||||
|
</td> |
||||||
|
</tr> |
||||||
|
</table> |
||||||
|
{/foreach} |
||||||
|
|
||||||
|
{if $poll->can_comment == 1} |
||||||
|
<br /> |
||||||
|
{*<a name="new"></a>*} |
||||||
|
{*<form id="new" method="post" action="index.php?module=poll&action=comment&pid={$poll->id}">*} |
||||||
|
<form id="new" method="post"> |
||||||
|
<input name="sub" type="hidden" value="new" /> |
||||||
|
|
||||||
|
<div class="p_input"> |
||||||
|
<p> |
||||||
|
<label>Заголовок</label> |
||||||
|
<input type="text" name="comment_title" id="post_title" class="inputfield" size="80" value="{$smarty.post.comment_title|escape|stripslashes}" /> |
||||||
|
</p> |
||||||
|
</div> |
||||||
|
|
||||||
|
<textarea id="post" name="comment_text" cols="80" rows="15">{$smarty.post.comment_text|escape|stripslashes}</textarea> |
||||||
|
|
||||||
|
<fieldset> |
||||||
|
{if $poll->anti_spam == 1} |
||||||
|
<p> |
||||||
|
<span id="captcha"><img src="{$ABS_PATH}inc/captcha.php" alt="" width="120" height="60" border="0" /></span><br /> |
||||||
|
<label>{#POLL_SECURE_CODE#}</label><br /> |
||||||
|
<input name="securecode" type="text" id="securecode" maxlength="10" /><br /> |
||||||
|
</p> |
||||||
|
{/if} |
||||||
|
<input name="submit" type="submit" class="button" value="{#POLL_BUTTON_ADD_C#}" /> |
||||||
|
</fieldset> |
||||||
|
</form> |
||||||
|
|
||||||
|
<script> |
||||||
|
$(document).ready(function(){ldelim} |
||||||
|
$('#new').submit(function(){ldelim} |
||||||
|
$(this).ajaxSubmit({ldelim} |
||||||
|
url: aveabspath+'index.php?module=poll&action=result&pid={$poll->id}&ajax=1', |
||||||
|
success: function(){ldelim} |
||||||
|
target = $('h6').offset().top; |
||||||
|
$("html").animate({ldelim}scrollTop: target{rdelim}, 1100); |
||||||
|
{rdelim}, |
||||||
|
timeout: 3000 |
||||||
|
{rdelim}); |
||||||
|
return false; |
||||||
|
{rdelim}); |
||||||
|
{rdelim}); |
||||||
|
</script> |
||||||
|
{/if} |
||||||
|
{/if} |
Loading…
Reference in new issue