diff --git a/admin/survey/SurveyAdminAjax.php b/admin/survey/SurveyAdminAjax.php
index 634f945c2..4891ce366 100644
--- a/admin/survey/SurveyAdminAjax.php
+++ b/admin/survey/SurveyAdminAjax.php
@@ -318,7 +318,9 @@ class SurveyAdminAjax {
if (isset ($_POST['state']))
$state = $_POST['state'];
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']))
$cookie_continue = $_POST['cookie_continue'];
if (isset ($_POST['block_ip']))
@@ -1084,6 +1086,7 @@ class SurveyAdminAjax {
'cookie',
'cookie_return',
'return_finished',
+ 'subsequent_answers',
'cookie_continue',
'user_from_cms',
'user_base',
diff --git a/admin/survey/SurveyAdminSettings.php b/admin/survey/SurveyAdminSettings.php
index a7bf114c5..e945ebce1 100644
--- a/admin/survey/SurveyAdminSettings.php
+++ b/admin/survey/SurveyAdminSettings.php
@@ -494,6 +494,12 @@ class SurveyAdminSettings {
echo '
';
echo ' ' . "\n\r";
echo '
' . "\n\r";
+ echo ' ';
+
+ // Nikoli ne more popravljati svojih odgovorov (tudi ce se npr. vrne na prejsnjo stran)
+ echo '
';
+ echo ' ' . "\n\r";
+ echo '
' . "\n\r";
echo ' ';
// Ce ni sprejel piskotka lahko/ne more nadaljevati
diff --git a/lang/1.php b/lang/1.php
index 3af2c5beb..10059c9b9 100644
--- a/lang/1.php
+++ b/lang/1.php
@@ -2358,6 +2358,9 @@ $lang = array (
"srv_return_finished" => "Uporabnik, ki je zaključil anketo",
"srv_return_finished_yes" => "Lahko kasneje ureja svoje odgovore",
"srv_return_finished_no" => "Ne more več 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_yes" => "Lahko vseeno nadaljuje z izpolnjevanjem",
"srv_cookie_continue_no" => "Ne more odgovarjati na anketo",
diff --git a/lang/2.php b/lang/2.php
index 3ae9a315f..f961822c2 100644
--- a/lang/2.php
+++ b/lang/2.php
@@ -2339,6 +2339,9 @@ $lang = array (
"srv_return_finished" => "User, that finished his survey",
"srv_return_finished_yes" => "Can later 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_yes" => "Can still answer survey questions",
"srv_cookie_continue_no" => "Cannot respond to survey",
diff --git a/main/survey/app/Controllers/BodyController.php b/main/survey/app/Controllers/BodyController.php
index 03527df56..f87dac488 100644
--- a/main/survey/app/Controllers/BodyController.php
+++ b/main/survey/app/Controllers/BodyController.php
@@ -7,6 +7,7 @@
namespace App\Controllers;
+use App\Controllers\CheckController as Check;
use App\Controllers\DisplayController as Display;
use App\Controllers\FindController as Find;
use App\Controllers\HeaderController as Header;
@@ -1758,7 +1759,9 @@ class BodyController extends Controller
* @desc prikaze trenutno grupo
*/
public function displayGrupa(){
-
+ global $admin_type;
+
+
// Ce imamo vklopljene napredne parapodatke zabelezimo id-strani
if(SurveyAdvancedParadataLog::getInstance()->paradataEnabled()){
SurveyAdvancedParadataLog::getInstance()->displayGrupa(get('grupa'));
@@ -1872,6 +1875,14 @@ class BodyController extends Controller
echo '' . "\n";
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
$link = SurveySetting::getInstance()->getSurveyMiscSetting('uporabnost_link_' . get('grupa'));
diff --git a/main/survey/app/Controllers/CheckController.php b/main/survey/app/Controllers/CheckController.php
index f6b84ff94..b16e31d12 100644
--- a/main/survey/app/Controllers/CheckController.php
+++ b/main/survey/app/Controllers/CheckController.php
@@ -730,4 +730,18 @@ class CheckController extends Controller
}
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;
+ }
}
\ No newline at end of file
diff --git a/main/survey/app/Controllers/JsController.php b/main/survey/app/Controllers/JsController.php
index 7b68473be..581c34565 100644
--- a/main/survey/app/Controllers/JsController.php
+++ b/main/survey/app/Controllers/JsController.php
@@ -2803,4 +2803,20 @@ class JsController extends Controller
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 '';
+ }
+
}
\ No newline at end of file
diff --git a/main/survey/app/Models/SaveSurvey.php b/main/survey/app/Models/SaveSurvey.php
index c475653be..9d5ba9472 100644
--- a/main/survey/app/Models/SaveSurvey.php
+++ b/main/survey/app/Models/SaveSurvey.php
@@ -67,6 +67,7 @@ class SaveSurvey extends Model
global $lang;
global $admin_type;
+
// 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'] != ''){
setcookie('panel_status', $_POST['panel_status'], 0, '/');
@@ -111,6 +112,16 @@ class SaveSurvey extends Model
SurveySetting::getInstance()->Init(get('anketa'));
$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)
* Namen je ta, da se vnosi kesirajo in naenkrat vnesejo v bazo, kar pohitri celotno zadevo
diff --git a/sql/update2.sql b/sql/update2.sql
index e95ba5aac..d3dcf97af 100644
--- a/sql/update2.sql
+++ b/sql/update2.sql
@@ -9327,3 +9327,7 @@ CREATE TABLE srv_clicks (
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";