Bienvenue, Invité
Nom d'utilisateur : Mot de passe : Se souvenir de moi

SUJET : Prevent accidentially closing the survey

Prevent accidentially closing the survey il y a 10 mois 5 jours #111051

  • LS_SR
  • Portrait de LS_SR
  • Hors ligne
  • Junior Lime
  • Messages : 24
  • Remerciements reçus 2
  • Karma: 0
Thanks for your fast answer.
L'administrateur a désactivé l'accès en écriture pour le public.

Prevent accidentially closing the survey il y a 4 mois 2 semaines #116036

  • fanepic
  • Portrait de fanepic
  • Hors ligne
  • Junior Lime
  • Messages : 21
  • Karma: 0
Thanks a lot for your Code.
Do you now how it's possible to make en exception for the languagechanger?

Cheers
Benny
L'administrateur a désactivé l'accès en écriture pour le public.

Prevent accidentially closing the survey il y a 4 mois 2 semaines #116038

  • jonsen
  • Portrait de jonsen
  • Hors ligne
  • Expert Lime
  • Messages : 83
  • Remerciements reçus 8
  • Karma: 1
Hi fanepic,

please try to add ".changelang" to the jQuery "on" action by changing this:
$(document).on('click',".button,[name='move']", ...

to this:
$(document).on('click',".button,.changelang,[name='move']", ...

Please leave a quick comment if this works, otherwise I'll have a closer look.

Best
jonsen
L'administrateur a désactivé l'accès en écriture pour le public.
Cet utilisateur a été remercié pour son message par: fanepic

Prevent accidentially closing the survey il y a 4 mois 2 semaines #116039

  • jonsen
  • Portrait de jonsen
  • Hors ligne
  • Expert Lime
  • Messages : 83
  • Remerciements reçus 8
  • Karma: 1
L'administrateur a désactivé l'accès en écriture pour le public.

Prevent accidentially closing the survey il y a 4 mois 2 semaines #116042

  • fanepic
  • Portrait de fanepic
  • Hors ligne
  • Junior Lime
  • Messages : 21
  • Karma: 0
Thank you jonson works fine.

Do you also now how to make it Multilanguage like only show if it's German?

Regards
fanepic
L'administrateur a désactivé l'accès en écriture pour le public.

Prevent accidentially closing the survey il y a 4 mois 2 semaines #116085

  • Mazi
  • Portrait de Mazi
  • Hors ligne
  • LimeSurvey Team
  • Messages : 5623
  • Remerciements reçus 324
  • Karma: 255
You can try using the {LANG} placeholder and maybe put everything into an IF statement like
...
if({LANG}=='de')
{
...
}

{LANG} should get replaced by Limesurvey with the current survey language.

Best regards/Beste Grüße,
Dr. Marcel Minke
(Limesurvey Head of Support)
Need Help? We offer professional Limesurvey support
Contact: marcel.minke(at)limesurvey.org'"
L'administrateur a désactivé l'accès en écriture pour le public.

Prevent accidentially closing the survey il y a 2 mois 1 jour #118624

  • jonsen
  • Portrait de jonsen
  • Hors ligne
  • Expert Lime
  • Messages : 83
  • Remerciements reçus 8
  • Karma: 1
Hi everyone,

the code has been working well on all of my past surveys. BUT now I have a survey which contains a file uploader question and there IT DOESN'T WORK CORRECTLY!

How to replicate the problem:
1. Add the code ( manual.limesurvey.org/Workarounds:_Surve...y_closing_the_survey ) to your template.js
2. Add a file uploader question
3. Navigate through the survey. If you open the file uploader, you will be asked if you want to leave the page EVEN THOUGH you use the LS navigation (the "next" or "previous" buttons).
4. Notice that you will not have the this problem if you just pass through that question without opening the uploader iframe.

The function works based on a <input type="hidden" id="submitted" /> tag being added when using the navigation, which then again is being checked for by the "goodbye" function to see if the buttons were used. The interesting point: Even though this tag is appeded to the end of the <body> correctly when using the navigation (even after opening the file uploader), the goodbye function does not recognize it. How can this be? It works flawlessly for all other pages, why not here? Does it have something to do with the iframe (which is the only differnce to other pages that I can see)?

I'm really looking forward to a new perspective on this, as I have been stuck on this for a week now. Thank you very much!

Best
Jonsen
Dernière édition: il y a 2 mois 1 jour par jonsen.
L'administrateur a désactivé l'accès en écriture pour le public.

Prevent accidentially closing the survey il y a 2 mois 22 heures #118659

  • tpartner
  • Portrait de tpartner
  • Hors ligne
  • LimeSurvey Team
  • Messages : 4846
  • Remerciements reçus 989
  • Karma: 417
Yeah, I think the problem is that, with the introduction of a second <body> element in the iframe, the scope to look for the "#submitted" element gets messed up.

Additionally, I'm not keen on introducing unnecessary input elements - I think it's better handled by adding a class to the <body> element.

So, try this which uses a class instead of a hidden input to indicate a valid move and limits the scope for the <body> elements to the top window (ignoring anything in an iframe).

function goodbye(e) {
	if(!$('body', top.document).hasClass('submitted')) { //check if a button was used to navigate or the survey is completed
		if(!e) e = window.event;
		//e.cancelBubble is supported by IE - this will kill the bubbling process.
		e.cancelBubble = true;
		e.returnValue = 'Are you sure you want to quit this survey?'; //This is displayed on the dialog for IE
 
		//e.stopPropagation works in Firefox.
		if (e.stopPropagation) {
			e.stopPropagation();
			e.preventDefault();
		}
 
		return 'Are you sure you want to quit this survey?'; // For chrome
	}
 
}
 
window.onbeforeunload = goodbye;
 
$(document).on('click', '.button, .changelang, [name="move"]', function(event){ //added .changelang here, please add other classes if you know which should be allowed to navigate
	$('body', top.document).addClass('submitted');
});
Cheers,
Tony Partner

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

LimeSurvey is open-source and run entirely by volunteers so please consider donating to support the project.
L'administrateur a désactivé l'accès en écriture pour le public.
Cet utilisateur a été remercié pour son message par: jonsen

Prevent accidentially closing the survey il y a 1 mois 4 semaines #118701

  • jonsen
  • Portrait de jonsen
  • Hors ligne
  • Expert Lime
  • Messages : 83
  • Remerciements reçus 8
  • Karma: 1
Thank you, Tony! I re-added !$('#completed').length for the final page, so one can leave the finished survey without being asked and also tried to fix it for the template editor by looking for the '.templateeditor' class...

Hope this does it for now! I updated the workaround in the wiki...
//FEATURES: (2015-03-27) Now with fix for iframes (e.g. file uploader) and the template editor 
function goodbye(e) {
    if(!$('body', top.document).hasClass('submitted') && !$('#completed').length && !$('.templateeditor', top.document).length) { //check if a button was used to navigate OR the survey is completed OR the template is displayed in the template editor
L'administrateur a désactivé l'accès en écriture pour le public.
Modérateurs: ITEd
Temps de génération de la page : 0.464 secondes
Donation Image