You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

149 lines
4.8 KiB

<?php
/**
* @package tikiwiki
*/
// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project
//
// All Rights Reserved. See copyright.txt for details and a complete list of authors.
// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
// $Id$
$section = 'surveys';
require_once('tiki-setup.php');
include_once('lib/surveys/surveylib.php');
if ($prefs['feature_categories'] == 'y') {
$categlib = TikiLib::lib('categ');
}
$access->check_feature('feature_surveys');
if (! isset($_REQUEST["surveyId"])) {
$smarty->assign('msg', tra("No survey indicated"));
$smarty->display("error.tpl");
die;
}
$access->check_permission('take_survey', 'Take Survey', 'survey', $_REQUEST['surveyId']);
$smarty->assign('surveyId', $_REQUEST["surveyId"]);
$survey_info = $srvlib->get_survey($_REQUEST["surveyId"]);
$smarty->assign('survey_info', $survey_info);
// Check if user has taken this survey
if ($tiki_p_admin != 'y') {
if ($tikilib->user_has_voted($user, 'survey' . $_REQUEST["surveyId"])) {
$smarty->assign('msg', tra("You cannot take this survey twice"));
$smarty->display("error.tpl");
die;
}
}
$questions = $srvlib->list_survey_questions($_REQUEST["surveyId"], 0, -1, 'position_asc', '');
$smarty->assign('pagination', false);
foreach ($questions['data'] as $question) {
if ($question['type'] === 'h' && ! empty($question['explode']) && $question['explode'][0] === 'y') {
$smarty->assign('pagination', true);
$headerlib->add_css('.questionblock, .submit {display:none;}')
->add_jq_onready('
(function($) {
var surveyPage, surveyPageCount = 0, surveyHeight = 0, h = 0, beenToLastPage = false;
if (typeof surveyKeepSameHeight === "undefined") {
surveyKeepSameHeight = false;
}
$(".questionblock").each(function () {
h += $(this).outerHeight(true);
if ($(this).hasClass("page" + (surveyPageCount + 1))) {
surveyPageCount++;
if (h > surveyHeight) {
surveyHeight = h;
}
h = 0;
}
});
if (surveyKeepSameHeight) {
if (h > surveyHeight) {
surveyHeight = h;
}
$(".surveyquestions").height(surveyHeight + $(".submit").outerHeight(true));
}
var showPage = function (page) {
if (page < 1) {
page = 0;
$(".btn-prev").attr("disabled", true);
$(".btn-next").attr("disabled", false);
} else if (page >= surveyPageCount) {
page = surveyPageCount;
$(".btn-next").attr("disabled", true);
$(".btn-prev").attr("disabled", false);
} else {
$(".btn-next").attr("disabled", false);
$(".btn-prev").attr("disabled", false);
}
if (page != surveyPage) {
surveyPage = page;
var sTop = $(".surveyquestions").offset().top - 10;
if ($(window).scrollTop() > sTop) {
$(\'html, body\').animate({
scrollTop: sTop
}, 1000);
}
$(".questionblock:visible").slideUp("fast");
$(".page" + surveyPage).slideDown("fast");
location.hash = "page" + surveyPage;
$(".pageNum").text(surveyPage + 1);
$(".pageCount").text(surveyPageCount + 1);
if (surveyPage === surveyPageCount) {
beenToLastPage = true;
$(".submit").show("fast");
} else if (!beenToLastPage) {
$(".submit").hide("fast");
}
}
};
$(".btn-prev").click(function () {
showPage(surveyPage - 1);
return false;
});
$(".btn-next").click(function () {
showPage(surveyPage + 1);
return false;
});
$(window).on("hashchange load", function () {
var goPage = location.hash.match(/page(\d+)/);
if (goPage) {
showPage(Number(goPage[1]));
} else {
showPage(0);
}
});
})(jQuery)
');
break;
}
}
$smarty->assign_by_ref('questions', $questions["data"]);
$error_msg = '';
if (isset($_REQUEST["ans"])) {
check_ticket('take-survey');
$srvlib->register_answers($_REQUEST['surveyId'], $questions['data'], $_REQUEST, $error_msg);
if (empty($error_msg)) {
if (! empty($_REQUEST["vote"])) {
$srvlib->add_survey_hit($_REQUEST["surveyId"]);
}
header('Location: tiki-list_surveys.php');
die;
}
}
$showToolBars = false;
if ($prefs['poll_surveys_textarea_hidetoolbar'] != 'y') {
$showToolBars = true;
}
$smarty->assign('showToolBars', $showToolBars);
include_once('tiki-section_options.php');
ask_ticket('take-survey');
// Display the template
Feedback::error(['mes' => $error_msg]);
$smarty->assign('mid', 'tiki-take_survey.tpl');
$smarty->display("tiki.tpl");