View Issue Details

This bug affects 1 person(s).
 4
IDProjectCategoryView StatusLast Update
04839Bug reportsConditionspublic2011-01-07 20:44
Reportermdekker Assigned Tolemeur  
PrioritynormalSeveritypartial_block 
Status closedResolutionfixed 
Product Version1.90+ 
Fixed in Version1.91RC1 
Summary04839: when more than one array dual scale question with drop downs is present conditions might fail
Description

Qanda introduces a special_checkconditions function for each and every duals scale drop down you use. This way the last inserted function wins and sometimes the condtions fail due to routing to noop_checkconditions instead of checkconditions.

Steps To Reproduce

check the attached survey, when you delete te last dual scale question is works fine but when you leave it in it doesn't

(condition: first question, first scale set to first answer, the text question should pop up)

TagsNo tags attached.
Attached Files
dual_scale_dropdown.diff (3,269 bytes)   
# This patch file was generated by NetBeans IDE
# Following Index: paths are relative to: C:\Documents and Settings\175780\My Documents\NetBeansProjects\LimeSurvey\limesurvey
# This patch can be applied using context Tools: Patch action on respective folder.
# It uses platform neutral UTF-8 encoding and \n newlines.
# Above lines and this line are ignored by the patching process.
Index: qanda.php
--- qanda.php Base (BASE)
+++ qanda.php Locally Modified (Based On LOCAL)
@@ -7420,19 +7420,7 @@
         $separatorwidth=(100-$answerwidth)/10;
         $columnswidth=100-$answerwidth-($separatorwidth*2);
 
-        $answer = "<script type='text/javascript'>\n"
-        . "<!--\n"
-        . "\tfunction special_checkconditions(value, name, type, rank)\n"
-        . "{\n"
-        . "\tif (value == '') {\n"
-        . "if (rank == 0) { dualname = name.replace(/#0/g,\"#1\"); }\n"
-        . "else if (rank == 1) { dualname = name.replace(/#1/g,\"#0\"); }\n"
-        . "document.getElementsByName(dualname)[0].value=value;\n"
-        . "\t}\n"
-        . "$checkconditionFunction(value, name, type);\n"
-        . "}\n"
-        . " //-->\n"
-        . " </script>\n";
+        $answer = "";
 
         // Get Answers
 
@@ -7578,7 +7566,7 @@
                     $answer .= "\t<td class=\"ddprefix\">$ddprefix</td>\n";
                 }
                 $answer .= "\t<td >\n"
-                . "<select name=\"$myfname\" id=\"answer$myfname\" onchange=\"special_checkconditions(this.value, this.name, this.type,$dualgroup);\">\n";
+                . "<select name=\"$myfname\" id=\"answer$myfname\" onchange=\"array_dual_dd_checkconditions(this.value, this.name, this.type,$dualgroup,$checkconditionFunction);\">\n";
 
                 if (!isset($_SESSION[$myfname]) || $_SESSION[$myfname] =='')
                 {
@@ -7632,7 +7620,7 @@
                 }
                 //				$answer .= "\t<td align='left' width='$columnswidth%'>\n"
                 $answer .= "\t<td>\n"
-                . "<select name=\"$myfname1\" id=\"answer$myfname1\" onchange=\"special_checkconditions(this.value, this.name, this.type,$dualgroup1);\">\n";
+                . "<select name=\"$myfname1\" id=\"answer$myfname1\" onchange=\"array_dual_dd_checkconditions(this.value, this.name, this.type,$dualgroup1,$checkconditionFunction);\">\n";
 
                 if (!isset($_SESSION[$myfname1]) || $_SESSION[$myfname1] =='')
                 {
Index: scripts/survey_runtime.js
--- scripts/survey_runtime.js Base (BASE)
+++ scripts/survey_runtime.js Locally Modified (Based On LOCAL)
@@ -875,3 +875,16 @@
 		_collection.push(new multi_total(ids[ii]));
 	}
 }
+
+//Special function for array dual scale in drop down layout to check conditions
+function array_dual_dd_checkconditions(value, name, type, rank, condfunction)
+{
+	if (value == '') {
+        //If value is set to empty, reset both drop downs and check conditions
+        if (rank == 0) { dualname = name.replace(/#0/g,"#1"); }
+        else if (rank == 1) { dualname = name.replace(/#1/g,"#0"); }
+        document.getElementsByName(dualname)[0].value=value;
+        condfunction(value, dualname, type);
+	}
+    condfunction(value, name, type);
+}
dual_scale_dropdown.diff (3,269 bytes)   
Bug heat4
Complete LimeSurvey version number (& build)9643
I will donate to the project if issue is resolvedNo
Browser
Database type & versiondn
Server OS (if known)dn
Webserver software & version (if known)dn
PHP Versiondn

Users monitoring this issue

There are no users monitoring this issue.

Activities

mdekker

mdekker

2010-12-30 11:13

reporter   ~13834

I had to do a quick fix in my running install. I just changed a line around 6500 in qanda.php in the section that defines the javascript special_checkcondition function to always use continue to the checkconditions function

mdekker

mdekker

2010-12-30 11:26

reporter   ~13835

Noticed another strange thing: when both dropdowns are set to be empty, the conditions only update for one of the drop downs. The java{SGQID} is only updated once instead of twice.

mdekker

mdekker

2011-01-03 12:08

reporter   ~13841

Added a fix for the dropdown layout, didn't check the radio button layout. Please review and commit if you think it is the right way to solve this.

lemeur

lemeur

2011-01-04 20:43

developer   ~13845

Hi mdekker,

Many thanks for your work on this one.
I wasn't aware of this function!

Lemme check your fix.

lemeur

lemeur

2011-01-04 20:57

developer   ~13846

Your fix is ok. Comitted to version 9695

Many thx

Issue History

Date Modified Username Field Change
2010-12-30 11:11 mdekker New Issue
2010-12-30 11:11 mdekker Status new => assigned
2010-12-30 11:11 mdekker Assigned To => lemeur
2010-12-30 11:11 mdekker File Added: limesurvey_survey_78491.lss
2010-12-30 11:13 mdekker Note Added: 13834
2010-12-30 11:26 mdekker Note Added: 13835
2011-01-03 12:07 mdekker File Added: dual_scale_dropdown.diff
2011-01-03 12:08 mdekker Note Added: 13841
2011-01-04 20:43 lemeur Note Added: 13845
2011-01-04 20:43 lemeur Status assigned => confirmed
2011-01-04 20:57 lemeur Note Added: 13846
2011-01-04 20:57 lemeur Status confirmed => resolved
2011-01-04 20:57 lemeur Fixed in Version => 1.91RC1
2011-01-04 20:57 lemeur Resolution open => fixed
2011-01-07 20:44 c_schmitz Status resolved => closed