Dodana nastavitev za preprecevanje naknadnega izpolnjevanja ankete (npr. ce klikne uporabnik "nazaj")

This commit is contained in:
pero1203 2020-10-20 10:02:50 +02:00
parent 77d06d6380
commit 09ebce3098
9 changed files with 73 additions and 2 deletions

View File

@ -319,6 +319,8 @@ class SurveyAdminAjax {
$state = $_POST['state']; $state = $_POST['state'];
if (isset ($_POST['return_finished'])) if (isset ($_POST['return_finished']))
$return_finished = $_POST['return_finished']; $return_finished = $_POST['return_finished'];
if (isset ($_POST['subsequent_answers']))
$subsequent_answers = $_POST['subsequent_answers'];
if (isset ($_POST['cookie_continue'])) if (isset ($_POST['cookie_continue']))
$cookie_continue = $_POST['cookie_continue']; $cookie_continue = $_POST['cookie_continue'];
if (isset ($_POST['block_ip'])) if (isset ($_POST['block_ip']))
@ -1084,6 +1086,7 @@ class SurveyAdminAjax {
'cookie', 'cookie',
'cookie_return', 'cookie_return',
'return_finished', 'return_finished',
'subsequent_answers',
'cookie_continue', 'cookie_continue',
'user_from_cms', 'user_from_cms',
'user_base', 'user_base',

View File

@ -496,6 +496,12 @@ class SurveyAdminSettings {
echo ' <label for="return_finished_0"><input type="radio" name="return_finished" value="0" id="return_finished_0"' . ($row['return_finished'] == 0 ? ' checked="checked"' : '') . ' />' . $lang['srv_return_finished_no'] . '</label></div>' . "\n\r"; echo ' <label for="return_finished_0"><input type="radio" name="return_finished" value="0" id="return_finished_0"' . ($row['return_finished'] == 0 ? ' checked="checked"' : '') . ' />' . $lang['srv_return_finished_no'] . '</label></div>' . "\n\r";
echo '<br/>'; echo '<br/>';
// Nikoli ne more popravljati svojih odgovorov (tudi ce se npr. vrne na prejsnjo stran)
echo '<div class="no-subsequent-answers"><span class="nastavitveSpan3 bold" ><label>' . $lang['srv_subsequent_answers'] . Help :: display('srv_subsequent_answers') . ':</label></span>';
echo ' <label for="subsequent_answers_1"><input type="radio" name="subsequent_answers" value="1" id="subsequent_answers_1"' . ($row['subsequent_answers'] == 1 ? ' checked="checked"' : '') . ' />' . $lang['srv_subsequent_answers_yes'] . '</label>' . "\n\r";
echo ' <label for="subsequent_answers_0"><input type="radio" name="subsequent_answers" value="0" id="subsequent_answers_0"' . ($row['subsequent_answers'] == 0 ? ' checked="checked"' : '') . ' />' . $lang['srv_subsequent_answers_no'] . '</label></div>' . "\n\r";
echo '<br/>';
// Ce ni sprejel piskotka lahko/ne more nadaljevati // Ce ni sprejel piskotka lahko/ne more nadaljevati
echo '<div class="no-cookie"><span class="nastavitveSpan3 bold" ><label>' . $lang['srv_cookie_continue'] . Help :: display('srv_cookie_continue') . ':</label></span>'; echo '<div class="no-cookie"><span class="nastavitveSpan3 bold" ><label>' . $lang['srv_cookie_continue'] . Help :: display('srv_cookie_continue') . ':</label></span>';
echo ' <label for="cookie_continue_1"><input type="radio" name="cookie_continue" value="1" id="cookie_continue_1"' . ($row['cookie_continue'] == 1 ? ' checked="checked"' : '') . ' />' . $lang['srv_cookie_continue_yes'] . '</label>' . "\n\r"; echo ' <label for="cookie_continue_1"><input type="radio" name="cookie_continue" value="1" id="cookie_continue_1"' . ($row['cookie_continue'] == 1 ? ' checked="checked"' : '') . ' />' . $lang['srv_cookie_continue_yes'] . '</label>' . "\n\r";

View File

@ -2358,6 +2358,9 @@ $lang = array (
"srv_return_finished" => "Uporabnik, ki je zaklju&#269;il anketo", "srv_return_finished" => "Uporabnik, ki je zaklju&#269;il anketo",
"srv_return_finished_yes" => "Lahko kasneje ureja svoje odgovore", "srv_return_finished_yes" => "Lahko kasneje ureja svoje odgovore",
"srv_return_finished_no" => "Ne more ve&#269; urejati svojih odgovorov", "srv_return_finished_no" => "Ne more ve&#269; urejati svojih odgovorov",
"srv_subsequent_answers" => "Uporabnik med izpolnjevanjem",
"srv_subsequent_answers_no" => "Ne more naknadno urejati svojih odgovorov",
"srv_subsequent_answers_yes" => "Lahko naknadno ureja svoje odgovore",
"srv_cookie_continue" => "Uporabnik, ki ne sprejme piškotka", "srv_cookie_continue" => "Uporabnik, ki ne sprejme piškotka",
"srv_cookie_continue_yes" => "Lahko vseeno nadaljuje z izpolnjevanjem", "srv_cookie_continue_yes" => "Lahko vseeno nadaljuje z izpolnjevanjem",
"srv_cookie_continue_no" => "Ne more odgovarjati na anketo", "srv_cookie_continue_no" => "Ne more odgovarjati na anketo",

View File

@ -2339,6 +2339,9 @@ $lang = array (
"srv_return_finished" => "User, that finished his survey", "srv_return_finished" => "User, that finished his survey",
"srv_return_finished_yes" => "Can later edit their answers", "srv_return_finished_yes" => "Can later edit their answers",
"srv_return_finished_no" => "Cannot edit their answers", "srv_return_finished_no" => "Cannot edit their answers",
"srv_subsequent_answers" => "User during answering",
"srv_subsequent_answers_no" => "Cannot subseqently edit their answers",
"srv_subsequent_answers_yes" => "Can subseqently edit their answers",
"srv_cookie_continue" => "User does not accept cookies", "srv_cookie_continue" => "User does not accept cookies",
"srv_cookie_continue_yes" => "Can still answer survey questions", "srv_cookie_continue_yes" => "Can still answer survey questions",
"srv_cookie_continue_no" => "Cannot respond to survey", "srv_cookie_continue_no" => "Cannot respond to survey",

View File

@ -7,6 +7,7 @@
namespace App\Controllers; namespace App\Controllers;
use App\Controllers\CheckController as Check;
use App\Controllers\DisplayController as Display; use App\Controllers\DisplayController as Display;
use App\Controllers\FindController as Find; use App\Controllers\FindController as Find;
use App\Controllers\HeaderController as Header; use App\Controllers\HeaderController as Header;
@ -1758,6 +1759,8 @@ class BodyController extends Controller
* @desc prikaze trenutno grupo * @desc prikaze trenutno grupo
*/ */
public function displayGrupa(){ public function displayGrupa(){
global $admin_type;
// Ce imamo vklopljene napredne parapodatke zabelezimo id-strani // Ce imamo vklopljene napredne parapodatke zabelezimo id-strani
if(SurveyAdvancedParadataLog::getInstance()->paradataEnabled()){ if(SurveyAdvancedParadataLog::getInstance()->paradataEnabled()){
@ -1873,6 +1876,14 @@ class BodyController extends Controller
Js::getInstance()->generateBranchingJS(); Js::getInstance()->generateBranchingJS();
// Disable odgovorov, ce je ze izpolnjeval to stran in ima vklopljeno nastavitev, da ni dovoljeno naknadno vnasanje odogovorov
if($rowa['subsequent_answers'] == '0' && $admin_type != '0'){
// Preverimo, ce je uporabnik ze bil na strani
if(Check::getInstance()->check_subsequent_visit())
Js::getInstance()->disableSubsequentAnswers();
}
// nov zgornji link pri uporabnosti // nov zgornji link pri uporabnosti
$link = SurveySetting::getInstance()->getSurveyMiscSetting('uporabnost_link_' . get('grupa')); $link = SurveySetting::getInstance()->getSurveyMiscSetting('uporabnost_link_' . get('grupa'));
if ($link != '' && strlen($link) > 7) if ($link != '' && strlen($link) > 7)

View File

@ -730,4 +730,18 @@ class CheckController extends Controller
} }
return $missing; return $missing;
} }
// Preverimo, ce je uporabnik ze bil na strani
public function check_subsequent_visit(){
$sql = sisplet_query("SELECT g.id
FROM srv_user_grupa".get('db_table')." u, srv_grupa g
WHERE u.gru_id=g.id AND u.usr_id='".get('usr_id')."' AND g.id='".get('grupa')."'
");
if(mysqli_num_rows($sql) > 0)
return true;
else
return false;
}
} }

View File

@ -2803,4 +2803,20 @@ class JsController extends Controller
return '(' . $expression . ')'; return '(' . $expression . ')';
} }
// Disable odgovorov, ce je ze izpolnjeval to stran in ima vklopljeno nastavitev, da ni dovoljeno naknadno vnasanje odogovorov
public static function disableSubsequentAnswers(){
echo '<script>';
echo ' $(":radio").prop("disabled", true);';
echo ' $(":checkbox").prop("disabled", true);';
echo ' $(":text").prop("disabled", true);';
echo ' $(":password").prop("disabled", true);';
echo ' $(":button").prop("disabled", true);';
echo ' $(":image").prop("disabled", true);';
echo ' $(":file").prop("disabled", true);';
echo '</script>';
}
} }

View File

@ -67,6 +67,7 @@ class SaveSurvey extends Model
global $lang; global $lang;
global $admin_type; global $admin_type;
// Modul panel - status - shranimo v cookie, ker drugace se vcasih ne ohrani do konca ce so strani preskocene // Modul panel - status - shranimo v cookie, ker drugace se vcasih ne ohrani do konca ce so strani preskocene
if(isset($_POST['panel_status']) && $_POST['panel_status'] != ''){ if(isset($_POST['panel_status']) && $_POST['panel_status'] != ''){
setcookie('panel_status', $_POST['panel_status'], 0, '/'); setcookie('panel_status', $_POST['panel_status'], 0, '/');
@ -111,6 +112,16 @@ class SaveSurvey extends Model
SurveySetting::getInstance()->Init(get('anketa')); SurveySetting::getInstance()->Init(get('anketa'));
$question_resp_comment = SurveySetting::getInstance()->getSurveyMiscSetting('question_resp_comment'); $question_resp_comment = SurveySetting::getInstance()->getSurveyMiscSetting('question_resp_comment');
// Disable odgovorov, ce je ze izpolnjeval to stran in ima vklopljeno nastavitev, da ni dovoljeno naknadno vnasanje odogovorov
if($rowa['subsequent_answers'] == '0' && $admin_type != '0'){
// Preverimo, ce je uporabnik ze bil na strani
if(Check::getInstance()->check_subsequent_visit())
return;
}
/** /**
* Tele spremenljivke so za vse INSERTe, ki se vnasajo v tabele (z imenom spremenljivke) * Tele spremenljivke so za vse INSERTe, ki se vnasajo v tabele (z imenom spremenljivke)
* Namen je ta, da se vnosi kesirajo in naenkrat vnesejo v bazo, kar pohitri celotno zadevo * Namen je ta, da se vnosi kesirajo in naenkrat vnesejo v bazo, kar pohitri celotno zadevo

View File

@ -9327,3 +9327,7 @@ CREATE TABLE srv_clicks (
UPDATE misc SET value='20.09.21' WHERE what="version"; UPDATE misc SET value='20.09.21' WHERE what="version";
ALTER TABLE srv_anketa ADD subsequent_answers ENUM('0', '1') NOT NULL DEFAULT '1' AFTER return_finished;
INSERT INTO srv_help (help, what) VALUES ('Uporabnik ne more nikoli naknadno urejati svojih odgovorov (npr. s klikom nazaj)', 'srv_subsequent_answers');
UPDATE misc SET value='20.10.20' WHERE what="version";