overriding the question timer cookie

More
2 weeks 3 days ago #175919 by Siem
Siem created the topic: overriding the question timer cookie
We have a survey that has a question timer. It causes some problems for candidates.
Especially when different candidates use the same computer (LimeSurvey will use the timer from the previous candidate) and sometimes due to human error.

In order to solve it, it would help if we could reset the timer each time the survey is started or if the page is reloaded.

Any idea how to do this? I suspect the timing code is in time.min.js see below:


!function(e){var i={};function t(n){if(i[n])return i[n].exports;var s=i[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,t),s.l=!0,s.exports}t.m=e,t.c=i,t.d=function(e,i,n){t.o(e,i)||Object.defineProperty(e,i,{enumerable:!0,get:n})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,i){if(1&i&&(e=t(e)),8&i)return e;if(4&i&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&i&&"string"!=typeof e)for(var s in e)t.d(n,s,function(i){return e[i]}.bind(null,s));return n},t.n=function(e){var i=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(i,"a",i),i},t.o=function(e,i){return Object.prototype.hasOwnProperty.call(e,i)},t.p="",t(t.s=1)}([function(e,i,t){"use strict";Object.defineProperty(i,"__esModule",{value:!0});var n=function(){function e(e,i){for(var t=0;t<i.length;t++){var n=i[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(i,t,n){return t&&e(i.prototype,t),n&&e(i,n),i}}(),s=function(){function e(i){var t=this;return function(e,i){if(!(e instanceof i))throw new TypeError("Cannot call a class as a function")}(this,e),this.option=this._parseOptions(i),this.timerWarning=null,this.timerWarning2=null,this.timerLogger=new ConsoleShim("TIMER#"+i.questionid,!window.debugState.frontend),this.intervalObject=null,this.warning=0,this.timersessionname="timer_question_"+this.option.questionid,this.timeLeft=this._getTimerFromLocalStorage()||this.option.timer,this.disable_next=$("#disablenext-"+this.timersessionname).val(),this.disable_prev=$("#disableprev-"+this.timersessionname).val(),this.$timerDisplayElement=function(){return $("#LS_question"+t.option.questionid+"_Timer")},this.$timerExpiredElement=$("#question"+this.option.questionid+"_timer"),this.$warningTimeDisplayElement=$("#LS_question"+this.option.questionid+"_Warning"),this.$warningDisplayElement=$("#LS_question"+this.option.questionid+"_warning"),this.$warning2TimeDisplayElement=$("#LS_question"+this.option.questionid+"_Warning_2"),this.$warning2DisplayElement=$("#LS_question"+this.option.questionid+"_warning_2"),this.$countDownMessageElement=$("#countdown-message-"+this.timersessionname),this.redirectWarnTime=$("#message-delay-"+this.timersessionname).val(),this.$toBeDisabledElement=$("#"+this.option.disabledElement),this.timerLogger.log("Options set:",this.option),{startTimer:function(){return t.startTimer.apply(t)},finishTimer:function(){return t.finishTimer.apply(t)}}}return n(e,[{key:"_parseOptions",value:function(e){return{questionid:e.questionid||null,timer:e.timer||0,action:e.action||1,warning:e.warning||0,warning2:e.warning2||0,warninghide:e.warninghide||0,warning2hide:e.warning2hide||0,disabledElement:e.disabledElement||null}}},{key:"_parseTimeToObject",value:function(e,i){i=i||!1;var t=moment.duration(e,"seconds"),n=String(t.hours()),s=String(t.minutes()),r=String(t.seconds());return{hours:i?1==n.length?"0"+n:n:parseInt(n),minutes:i?1==s.length?"0"+s:s:parseInt(s),seconds:i?1==r.length?"0"+r:r:parseInt(sSecond)}}},{key:"_intervalStep",value:function(){var e=this._getTimerFromLocalStorage();e=parseInt(e)-1,this.timerLogger.log("Interval emitted | seconds left:",e),e<=0&&this.finishTimer(),this._checkForWarning(e),this._setTimerToLocalStorage(e),this._setTimer(e)}},{key:"_setInterval",value:function(){var e=this;this._existsDisplayElement()&&(this._setTimer(this.option.timer),this.intervalObject=setInterval(function(){return e._intervalStep.apply(e)},1e3))}},{key:"_unsetInterval",value:function(){clearInterval(this.intervalObject),this.intervalObject=null}},{key:"_existsDisplayElement",value:function(){return!(!this.$timerDisplayElement().length>0&&(this._unsetInterval(),1))}},{key:"_setTimer",value:function(e){var i=this._parseTimeToObject(e,!0);this._existsDisplayElement()&&this.$timerDisplayElement().css({display:"flex"}).html(this.$countDownMessageElement.html()+"&nbsp;&nbsp;<div class='ls-timer-time'>"+i.hours+":"+i.minutes+":"+i.seconds+"</div>")}},{key:"_checkForWarning",value:function(e){e==this.option.warning&&this._showWarning(),e==this.option.warning2&&this._showWarning2()}},{key:"_showWarning",value:function(){var e=this;0!==this.option.warning&&(this.timerLogger.log("Warning called!"),this.$warningDisplayElement.removeClass("hidden").css({opacity:0}).animate({opacity:1},200),setTimeout(function(){e.timerLogger.log("Warning ended!"),e.$warningDisplayElement.animate({opacity:0},200,function(){e.$warningDisplayElement.addClass("hidden")})},1e3*this.option.warninghide))}},{key:"_showWarning2",value:function(){var e=this;0!==this.option.warning2&&(this.timerLogger.log("Warning2 called!"),this.$warning2DisplayElement.removeClass("hidden").css({opacity:0}).animate({opacity:1},200),setTimeout(function(){e.timerLogger.log("Warning2 ended!"),e.$warning2DisplayElement.animate({opacity:0},200,function(){e.$warning2DisplayElement.addClass("hidden")})},1e3*this.option.warning2hide))}},{key:"_disableNavigation",value:function(){var e=this;this.timerLogger.log("Disabling navigation"),$(".ls-move-previous-btn").each(function(i,t){$(t).prop("disabled",1==e.disable_prev)}),$(".ls-move-next-btn,.ls-move-submit-btn").each(function(i,t){$(t).prop("disabled",1==e.disable_next)})}},{key:"_enableNavigation",value:function(){$(".ls-move-previous-btn").each(function(){$(this).prop("disabled",!1)}),$(".ls-move-next-btn,.ls-move-submit-btn").each(function(){$(this).prop("disabled",!1)})}},{key:"_getTimerFromLocalStorage",value:function(){var e=window.localStorage.getItem("limesurvey_timers_"+this.timersessionname);return isNaN(parseInt(e))?0:e}},{key:"_setTimerToLocalStorage",value:function(e){window.localStorage.setItem("limesurvey_timers_"+this.timersessionname,e)}},{key:"_unsetTimerInLocalStorage",value:function(){window.localStorage.removeItem("limesurvey_timers_"+this.timersessionname)}},{key:"_warnBeforeRedirection",value:function(){this._disableInput(),setTimeout(this._redirectOut,this.redirectWarnTime)}},{key:"_disableInput",value:function(){this.$toBeDisabledElement.prop("readonly",!0),$("#question"+this.option.questionid).find(".answer-container").children("div").not(".timer_header").fadeOut()}},{key:"_showExpiredNotice",value:function(){this.$timerExpiredElement.removeClass("hidden")}},{key:"_redirectOut",value:function(){$("#ls-button-submit").trigger("click")}},{key:"_bindUnsetToSubmit",value:function(){var e=this;$("#limesurvey").on("submit",function(){e._unsetTimerInLocalStorage()})}},{key:"finishTimer",value:function(){switch(this.timerLogger.log("Timer has ended or was ended"),this._unsetInterval(),this._enableNavigation(),this._bindUnsetToSubmit(),this._disableInput(),this.option.action){case 3:this._showExpiredNotice();break;case 2:this._redirectOut();break;case 1:default:this._showExpiredNotice(),this._warnBeforeRedirection()}}},{key:"startTimer",value:function(){0!=this.timeLeft?(this._setTimerToLocalStorage(this.timeLeft),this._disableNavigation(),this._setInterval()):this.finishTimer()}}]),e}();
/**
 * @file Script for timer
 * @copyright LimeSurvey <http://www.limesurvey.org>
 * @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later
 */i.default=s},function(e,i,t){"use strict";var n=function(e){return e&&e.__esModule?e:{default:e}}(t(0));window.countdown=function(e,i,t,s,r,o,a,l){window.timerObjectSpace=window.timerObjectSpace||{},window.timerObjectSpace[e]||(window.timerObjectSpace[e]=new n.default({questionid:e,timer:i,action:t,warning:s,warning2:r,warninghide:o,warning2hide:a,disabledElement:l}),window.timerObjectSpace[e].startTimer())}}]);

Please Log in or Create an account to join the conversation.

More
2 weeks 3 days ago #175932 by tpartner
tpartner replied the topic: overriding the question timer cookie
To reset the timer when the survey is restarted, append newtest=Y to the URL. Something like:

http://pathTo/limesurvey/index.php/167179?lang=en&newtest=Y

Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.

Please Log in or Create an account to join the conversation.

More
1 week 6 days ago #176115 by Siem
Siem replied the topic: overriding the question timer cookie
Unfortunately the timer does not reset. 'newtest=Y' was already in our URLs.

Please Log in or Create an account to join the conversation.

More
1 week 6 days ago #176116 by tpartner
tpartner replied the topic: overriding the question timer cookie
Hmm, maybe that was never fixed - see this thread - www.limesurvey.org/forum/can-i-do-this-w...-on-last-page#170640

Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
The following user(s) said Thank You: Siem

Please Log in or Create an account to join the conversation.

More
1 week 4 days ago #176199 by Siem
Siem replied the topic: overriding the question timer cookie
Thanks that worked like a charm!

Please Log in or Create an account to join the conversation.

Start now!

Just create your account and start using Limesurvey today.

Register now
Join our Newsletter!