time_limit_disable_next and navigationdelay for individual questions

More
4 years 1 month ago #93538 by robstone
robstone created the topic: time_limit_disable_next and navigationdelay for individual questions
I see how navigationdelay is set for the whole survey and used in the frontend_helper:surveymover function to create the buttons,
but I see there is a question attribute called time_line_diable_next (and prev) which is used in qanda_helper:return_timer_script
but im not sure how !

what i am trying to achieve is the equivalent of navigation delay feature but with per question timeouts (or use
navigation delay if null) so there'd be choice....

1) 0
2) lime_surveys:sid:navigationdelay
3) lime_question_attributes:qid:time_line_diasble_next

is this sensible/achievable with a some easy tweaks (looks like i should amend surveymover) ?

Please Log in to join the conversation.

More
4 years 1 month ago #93811 by robstone
robstone replied the topic: time_limit_disable_next and navigationdelay for individual questions
I managed to do what i anted using javascript and calling the LS navigation_countdown function
after disabling the next button, All works well. Only pain is I have to hard code the time into
each question , cant get it from LS anywhere (eg a question attribute via a {USER_DATA} keyword
or such like, but i guess these are disabled for security)

Please Log in to join the conversation.

More
4 years 2 weeks ago #94915 by rasheed
rasheed replied the topic: time_limit_disable_next and navigationdelay for individual questions
Could you please share the code you used for that ?

Thank you

Please Log in to join the conversation.

More
4 years 1 week ago - 4 years 1 week ago #95234 by robstone
robstone replied the topic: time_limit_disable_next and navigationdelay for individual questions
sure

in the help section of the question is this code (where 10 means 10 seconds - put what you like)
<script type="text/javascript" charset="utf-8">
	$(document).ready(function() {
       /* See /uploads/templates/teds/template.js  */
       rfs_nav_delay(10); 
	});
</script>
 

the script is in the template.js uses 2 functions. we only enable the next button
when the countdown has timed out *and* an option has been selected.

comments / tweaks / tidying up / welcome

 
/*
 * The function rfs_nav_delay waits n seconds before enabling the next key 
 * 
 * uses same methods as normal LS. For including per question,
 */
 
function rfs_nav_delay(n)
{
	$(document).ready(function() {
		$('#movenextbtn').attr('disabled', 'disabled'); 
		$('#movenextbtn').attr('aria-disabled', true);
		$('#movenextbtn').button("disable");
		navigator_countdown(n); 
		//navigator_countdown(1); 
 
 
		//$('#movenextbtn').hide();
		//Show the next button when a radio is clicked
		// use rfs_click_required requires so doenst break if rfs_nav is not called.
		$(window).data('rfs_click_required',1);
		$('input.radio').click(function(){
			$(window).data('rfs_click_required', null);
			if (!$(window).data('countdown')) {
				$('#movenextbtn').attr('aria-disabled', false);
				$('#movenextbtn').button("option", "disabled", false);
			};
		});
	});
}
 
// RFS  addded the rfs_clicked state to check if a buton has been clicked.
// logic is a bit about face so that suvreys that don't set it are not affetced
function navigator_countdown_end()
{
	if (!$(window).data('rfs_click_required')) {
		navigator_countdown_btn().each(function(i, e)
		{
			e.value = $(e).data('text');
			$(e).button("option", "disabled", false);
			$(e).attr('aria-disabled','false');
		});
		$(window).data('countdown', null);
	}
}
 
Last Edit: 4 years 1 week ago by robstone.
The following user(s) said Thank You: rasheed

Please Log in to join the conversation.

More
4 years 6 days ago #95247 by rasheed
rasheed replied the topic: time_limit_disable_next and navigationdelay for individual questions
Thank you very much.

However, i see the countdown on the previous boutton as well. Is if possible to remove it from there ?

Thank you :)

Please Log in to join the conversation.

More
3 years 9 months ago #98606 by peehoo
peehoo replied the topic: time_limit_disable_next and navigationdelay for individual questions

robstone wrote: sure

in the help section of the question is this code (where 10 means 10 seconds - put what you like)

<script type="text/javascript" charset="utf-8">
	$(document).ready(function() {
       /* See /uploads/templates/teds/template.js  */
       rfs_nav_delay(10); 
	});
</script>
 

the script is in the template.js uses 2 functions. we only enable the next button
when the countdown has timed out *and* an option has been selected.

comments / tweaks / tidying up / welcome

 
/*
 * The function rfs_nav_delay waits n seconds before enabling the next key 
 * 
 * uses same methods as normal LS. For including per question,
 */
 
function rfs_nav_delay(n)
{
	$(document).ready(function() {
		$('#movenextbtn').attr('disabled', 'disabled'); 
		$('#movenextbtn').attr('aria-disabled', true);
		$('#movenextbtn').button("disable");
		navigator_countdown(n); 
		//navigator_countdown(1); 
 
 
		//$('#movenextbtn').hide();
		//Show the next button when a radio is clicked
		// use rfs_click_required requires so doenst break if rfs_nav is not called.
		$(window).data('rfs_click_required',1);
		$('input.radio').click(function(){
			$(window).data('rfs_click_required', null);
			if (!$(window).data('countdown')) {
				$('#movenextbtn').attr('aria-disabled', false);
				$('#movenextbtn').button("option", "disabled", false);
			};
		});
	});
}
 
// RFS  addded the rfs_clicked state to check if a buton has been clicked.
// logic is a bit about face so that suvreys that don't set it are not affetced
function navigator_countdown_end()
{
	if (!$(window).data('rfs_click_required')) {
		navigator_countdown_btn().each(function(i, e)
		{
			e.value = $(e).data('text');
			$(e).button("option", "disabled", false);
			$(e).attr('aria-disabled','false');
		});
		$(window).data('countdown', null);
	}
}
 


Hi!

I tried to dot this... Can you give me more specific instructions please :ohmy:.

I paste your code to the help section but it was visible when looking questions??

Please Log in to join the conversation.

More
3 years 9 months ago #98609 by rasheed
rasheed replied the topic: time_limit_disable_next and navigationdelay for individual questions
You need to place it in the source code of the help section (HTML).

Hope this helps.
The following user(s) said Thank You: peehoo

Please Log in to join the conversation.

More
3 years 9 months ago #98612 by peehoo
peehoo replied the topic: time_limit_disable_next and navigationdelay for individual questions
Sorry... How am I able to see each questions source code?

Please Log in to join the conversation.

More
3 years 9 months ago #98613 by rasheed
rasheed replied the topic: time_limit_disable_next and navigationdelay for individual questions
Click on the 3rd boutton from left: Source
The following user(s) said Thank You: peehoo

Please Log in to join the conversation.

More
3 years 9 months ago - 3 years 9 months ago #98614 by peehoo
peehoo replied the topic: time_limit_disable_next and navigationdelay for individual questions
Hi!

I just found it but... do I have to do something more? like:

"the script is in the template.js uses 2 functions. we only enable the next button
when the countdown has timed out *and* an option has been selected."

Do I have to modify template.js file? And if yes... where I put this code?

Sorry I'm noob!! :whistle:
Last Edit: 3 years 9 months ago by peehoo.

Please Log in to join the conversation.

More
3 years 9 months ago #98616 by rasheed
rasheed replied the topic: time_limit_disable_next and navigationdelay for individual questions
Go to Template Editor. First icon from right in the top manvigation menu of the admin panel.

Please Log in to join the conversation.

Start now!

Just create your account and start using Limesurvey today.

Register now