View Issue Details

IDProjectCategoryView StatusLast Update
04650User patchesSurvey Takingpublic2010-12-14 13:02
Reporteruser9586Assigned Toc_schmitz 
PrioritynormalSeverityminor 
Status closedResolutionfixed 
Product Version1.90 
Target VersionFixed in Version1.91 
Summary04650: Page color alternation and navigation delay.
Description

As described before in http://sourceforge.net/mailarchive/message.php?msg_name=20100908124843.af9a493a.yuri.delia%40eurac.edu , we're using limesurvey on tablet-pcs in a setting similar to paper questionnaires.

One of the reported issues was the lack of visual feedback when moving from one question/group to the other. When the question text has the same question type and roughly the same size of the previous one, the next/prev buttons (and the layout in general) doesn't change. This confuses elderly people, which often don't notice that the question has changed, and keep clicking 'next' on the same spot until it moves to another location. This had a significant impact in missing answers in our study.

The same effect can be seen on any age group, to a lesser extent, when people click 'next' multiple times when waiting for limesurvey to process the page. Sometimes, the click happens in the 'next' page due to bad timing (due to latency on the user part, not noticing the page change).

This patch adds a new CSS class called 'odd' in the 'outerframe' div. By using the '.outerframe.odd' selector one can differentiate subsequent pages with different colors. In the patch, a 'greenish' color scheme is used instead of blueish. Note that 'odd' is added independently of the 'step' number (a page is odd if the previous one wasn't) so that page colors are always alternated, unless requesting exactly the same question/group.

The patch also disables next/prev buttons as soon as soon as they're clicked, via javascript. This prevents double-posts and provides additional visual cues that the page is being processed.

A new setting is added for each questionnaire, called 'Navigation Delay' (defaulting to 0 or disabled). When greater than 0, the next/prev buttons are disabled by default on the page, and are enabled with a count-down after the specified number of seconds. This effect is only visible in the last question/group. Going backward and then forward won't disable the buttons by default again. This helps stopping the 'aggressive clicking' problem as described above (for example with just a 1 second delay), and also enforce users to think (when using larger values).

Additional Information

This patch uses $_SESSION['prevstep'] and $_SESSION['maxstep'] which were implemented in bug 04643 http://bugs.limesurvey.org/view.php?id=4643

I'm sorry to submit dependent patches like this, but I can try to isolate all the changes if this has any chance to get integrated.

TagsNo tags attached.
Complete LimeSurvey version number (& build)9114

Activities

c_schmitz

c_schmitz

2010-10-11 23:55

administrator   ~13090

Can you please provide the patch as a subversion patch (svn diff) against our 1.91 development version at the subversion branch at :
https://limesurvey.svn.sourceforge.net/svnroot/limesurvey/source/limesurvey_dev

Thank you!

Mazi

Mazi

2010-10-14 15:13

partner   ~13180

I consider this a very useful feature especially with respect to the growing tablet PC/mobile device market. Mobile devices are more and more used for conducting online surveys.

Also the JS to disable the buttons to prevent multiple click events sounds very useful. When having large surveys with lots of conditions loading times might raise and this feature prevents running into the multiple click problem.

@wavexx: Is there a live survey where we can take a look at the layout changes?

user9586

2010-11-09 12:21

  ~13472

I could provide a live version (of this and all the other pending patches) if that would help.

Mazi

Mazi

2010-11-09 13:08

partner   ~13473

Everybody is curious to have a look at this so please post some link.

We'd also like to integrate this into the core, but to do so we need an updated patch against the 1.91 development version which you can find at our SVN at "limesurvey_dev", see Carsten's link above.

Thanks!

user9586

2010-11-10 17:46

  ~13494

I didn't update the SVN patch yet because I'm waiting for the others to get integrated, but the patch is already updated.

I just finished checking the JS to make it work on the damn IE, I will now try to put a testing survey online somewhere.

user9586

2010-11-26 11:34

  ~13606

Next patch. When a delay is requested, a countdown is shown only for delays longer than 1 second. For 1 second delays, the navigator is just disabled and then re-enabled (which looks a lot better).

In this patch I updated only the 'default' template. Some minor changes are required for the 'color alternation' to work: you need to override colors for the 'odd' class. Since this is a minor tweak for the existing templates, it would be nice if it could be integrated so we could go on to the real meat (it took me some time to mix-and-mash existing templates in the last patch). We could leave the bug open, so I can get back to it afterwards.

Mazi

Mazi

2010-11-26 12:15

partner   ~13607

Carsten, if the general work is done please assign this ticket to our template master Tony.

c_schmitz

c_schmitz

2010-11-26 14:27

administrator   ~13608

Last edited: 2010-11-26 14:31

View 3 revisions

I had a look at the patch and I think that this approach is too much bloated regarding the CSS issue. (the button disabling is fine and a good idea).
I think an easier approach would be to have a CSS class property for groups and questions (as a question attribute) in general. Setting that property to a string xyz would mean that the class xyz is added to the question/group div. (Please note that generally a div lement may have specified several classes separated by spaces). That way you would not need any template changes which we should avoid whereever possible.

You could even make it so that it alternates normally if no class is specified in the group/question attribute.

What do you think about that?

user9586

2010-11-26 14:40

  ~13609

I think the approach to page color alternation is very minimal. Could you explain a bit more what do you think constitutes bloat? (I'm open to rework how it's done).

When a page is 'odd', the 'odd' class is simply appended to the 'outerframe' div. In that sense, I could have used 'body' directly (now that I think about it, it makes more sense). Surely, styling an odd page can't be easier than that?

If I understand you correctly, each question would need a new question attribute, say "css_class", which could be specified manually? This is interesting for a styling point of view, but it wouldn't work with conditionals if a question is skipped.

My objective is to alternate page color at every different question, in all conditions. Internally we used the 'odd' class to change the layout of the entire page itself, not just the question (moving the main table a bit to provide even more visibility).

c_schmitz

c_schmitz

2010-11-26 15:06

administrator   ~13610

I mean 'bloat' only regarding the outerframe issue where all templates would needed to be touched. Attaching it to the body tag would be better, as you suggested.

I would also use a different class for odd/even pages than 'odd', maye better 'page_odd' and 'page_even', because 'odd'/'even' is already used for tables and that might be an appearance problem.

The suggestion for the css_attribute was a misunderstanding -. it would be a nice to have but isn't really part of this patch, so you can ignore it if you like.

Thanks for your help!

user9586

2010-11-26 15:09

  ~13611

I will correct the patch with these suggestions.

user9586

2010-11-26 16:53

  ~13614

I now apply 'page_odd' to body directly, and use ".page_odd" in the css.

user9586

2010-11-26 17:38

 

svn-patch-3.diff (18,517 bytes)
Index: group.php
===================================================================
--- group.php	(revision 9535)
+++ group.php	(working copy)
@@ -452,6 +452,20 @@
 //}
 echo templatereplace(file_get_contents("$thistpl/startpage.pstpl"));
 
+//ALTER PAGE CLASS TO PROVIDE WHOLE-PAGE ALTERNATION
+if ($_SESSION['step'] != $_SESSION['prevstep'] ||
+    (isset($_SESSION['stepno']) && $_SESSION['stepno'] % 2))
+{
+    if (!isset($_SESSION['stepno'])) $_SESSION['stepno'] = 0;
+    if ($_SESSION['step'] != $_SESSION['prevstep']) ++$_SESSION['stepno'];
+    if ($_SESSION['stepno'] % 2)
+    {
+        echo "<script type=\"text/javascript\">\n"
+        . "  $(\"body\").addClass(\"page-odd\");\n"
+        . "</script>\n";
+    }
+}
+
 $hiddenfieldnames=implode("|", $inputnames);
 
 if (isset($upload_file) && $upload_file)
Index: scripts/survey_runtime.js
===================================================================
--- scripts/survey_runtime.js	(revision 9535)
+++ scripts/survey_runtime.js	(working copy)
@@ -225,8 +225,60 @@
 		}
 }
 
+function submit_and_disable()
+{
+	$('#limesurvey').submit();
+	$('#navigator input').attr('disabled', 'disabled');
+}
 
+function navigator_countdown_btn()
+{
+	return $('#movenextbtn, #moveprevbtn, #movesubmitbtn');
+}
 
+function navigator_countdown_end()
+{
+	navigator_countdown_btn().each(function(i, e)
+	{
+		e.value = $(e).data('text');
+		$(e).attr('disabled', '');
+	});
+	$(window).data('countdown', null);
+}
+
+function navigator_countdown_int()
+{
+	var n = $(window).data('countdown');
+	if(n)
+	{
+		navigator_countdown_btn().each(function(i, e)
+		{
+			e.value = $(e).data('text');
+
+                        // just count-down for delays longer than 1 second
+                        if(n > 1) e.value += " (" + n + ")";
+		});
+
+		$(window).data('countdown', --n);
+	}
+	window.setTimeout((n > 0? navigator_countdown_int: navigator_countdown_end), 1000);
+}
+
+function navigator_countdown(n)
+{
+	$(document).ready(function()
+	{
+		$(window).data('countdown', n);
+
+		navigator_countdown_btn().each(function(i, e)
+		{
+			$(e).data('text', e.value);
+		});
+
+		navigator_countdown_int();
+	});
+}
+
 // ==========================================================
 // totals
 
Index: question.php
===================================================================
--- question.php	(revision 9535)
+++ question.php	(working copy)
@@ -434,6 +434,20 @@
 
 echo templatereplace(file_get_contents("$thistpl/startpage.pstpl"));
 
+//ALTER PAGE CLASS TO PROVIDE WHOLE-PAGE ALTERNATION
+if ($_SESSION['step'] != $_SESSION['prevstep'] ||
+    (isset($_SESSION['stepno']) && $_SESSION['stepno'] % 2))
+{
+    if (!isset($_SESSION['stepno'])) $_SESSION['stepno'] = 0;
+    if ($_SESSION['step'] != $_SESSION['prevstep']) ++$_SESSION['stepno'];
+    if ($_SESSION['stepno'] % 2)
+    {
+        echo "<script type=\"text/javascript\">\n"
+        . "  $(\"body\").addClass(\"page-odd\");\n"
+        . "</script>\n";
+    }
+}
+
 echo "\n<form method='post' action='{$publicurl}/index.php' id='limesurvey' name='limesurvey' autocomplete='off'>\n";
 
 //PUT LIST OF FIELDS INTO HIDDEN FORM ELEMENT
Index: admin/database.php
===================================================================
--- admin/database.php	(revision 9535)
+++ admin/database.php	(working copy)
@@ -1064,6 +1064,7 @@
                             'usecookie'=>$_POST['usecookie'],
                             'allowregister'=>$_POST['allowregister'],
                             'allowsave'=>$_POST['allowsave'],
+                            'navigationdelay'=>$_POST['navigationdelay'],
                             'printanswers'=>$_POST['printanswers'],
                             'publicstatistics'=>$_POST['publicstatistics'],
                             'autoredirect'=>$_POST['autoredirect'],
@@ -1356,6 +1357,7 @@
                             'emailnotificationto'=>$_POST['emailnotificationto'],
                             'allowregister'=>$_POST['allowregister'],
                             'allowsave'=>$_POST['allowsave'],
+                            'navigationdelay'=>$_POST['navigationdelay'],
                             'autoredirect'=>$_POST['autoredirect'],
                             'showXquestions'=>$_POST['showXquestions'],
                             'showgroupinfo'=>$_POST['showgroupinfo'],
Index: admin/install/create-mysql.sql
===================================================================
--- admin/install/create-mysql.sql	(revision 9535)
+++ admin/install/create-mysql.sql	(working copy)
@@ -279,6 +279,7 @@
   `showwelcome` char(1) default 'Y',
   `showprogress` char(1) default 'Y',
   `allowjumps` char(1) default 'N',
+  `navigationdelay` tinyint(2) default '0',
    PRIMARY KEY(`sid`)
 ) ENGINE=$databasetabletype CHARACTER SET utf8 COLLATE utf8_unicode_ci;
 
Index: admin/install/create-mssqlnative.sql
===================================================================
--- admin/install/create-mssqlnative.sql	(revision 9535)
+++ admin/install/create-mssqlnative.sql	(working copy)
@@ -299,6 +299,7 @@
   [bounceaccountencryption] varchar(3) default NULL,
   [showprogress] char(1) default 'N',
   [allowjumps] char(1) default 'N',
+  [navigationdelay] tinyint default '0',
   
   PRIMARY KEY  ([sid])
 ) 
Index: admin/install/create-postgres.sql
===================================================================
--- admin/install/create-postgres.sql	(revision 9535)
+++ admin/install/create-postgres.sql	(working copy)
@@ -303,7 +303,8 @@
     emailnotificationto text,
 	tokenlength smallint DEFAULT '15',
     showprogress character(1) DEFAULT 'N'::bpchar,
-    allowjumps character(1) DEFAULT 'N'::bpchar
+    allowjumps character(1) DEFAULT 'N'::bpchar,
+    navigationdelay smallint DEFAULT '0'
 );
 
 ALTER TABLE ONLY prefix_surveys ADD CONSTRAINT prefix_surveys_pkey PRIMARY KEY (sid);
Index: admin/install/create-mssql.sql
===================================================================
--- admin/install/create-mssql.sql	(revision 9535)
+++ admin/install/create-mssql.sql	(working copy)
@@ -290,6 +290,7 @@
   [bounceaccountencryption] varchar(3) default NULL,
   [showprogress] char(1) default 'N',
   [allowjumps] char(1) default 'N',
+  [navigationdelay] tinyint default '0',
   
   PRIMARY KEY  ([sid])
 ) 
Index: admin/editsurveysettings.php
===================================================================
--- admin/editsurveysettings.php	(revision 9535)
+++ admin/editsurveysettings.php	(working copy)
@@ -301,8 +301,11 @@
         $editsurvey .= ">" . $clang->gT("No") . "</option>\n"
                 . "</select></li>\n";
 
+        //Navigation Delay
+        $editsurvey .= "<li><label for='navigationdelay'>".$clang->gT("Navigation delay (seconds):")."</label>\n"
+        . "<input type='text' value=\"{$esrow['navigationdelay']}\" name='navigationdelay' id='navigationdelay' size='12' maxlength='2' onkeypress=\"return goodchars(event,'0123456789')\" />\n"
+        . "</li>\n";
 
-
         //Show Prev Button
         $editsurvey .= "<li><label for='allowprev'>".$clang->gT("Show [<< Prev] button")."</label>\n"
         . "<select id='allowprev' name='allowprev'>\n"
Index: admin/update/upgrade-mysql.php
===================================================================
--- admin/update/upgrade-mysql.php	(revision 9535)
+++ admin/update/upgrade-mysql.php	(working copy)
@@ -413,6 +413,7 @@
         modify_database("", "ALTER TABLE `prefix_surveys` ADD `showwelcome` CHAR(1) NULL default 'Y'"); echo $modifyoutput; flush();
         modify_database("", "ALTER TABLE `prefix_surveys` ADD `showprogress` char(1) default 'Y'"); echo $modifyoutput; flush();
         modify_database("", "ALTER TABLE `prefix_surveys` ADD `allowjumps` char(1) default 'N'"); echo $modifyoutput; flush();
+        modify_database("", "ALTER TABLE `prefix_surveys` ADD `navigationdelay` tinyint(2) default '0'"); echo $modifyoutput; flush();
         modify_database("", "CREATE TABLE `prefix_survey_permissions` (
                                 `sid` int(10) unsigned NOT NULL,
                                 `uid` int(10) unsigned NOT NULL,
Index: admin/update/upgrade-mssqlnative.php
===================================================================
--- admin/update/upgrade-mssqlnative.php	(revision 9535)
+++ admin/update/upgrade-mssqlnative.php	(working copy)
@@ -427,6 +427,7 @@
         modify_database("", "ALTER TABLE [prefix_surveys] ADD showwelcome CHAR(1) NULL default 'Y' "); echo $modifyoutput; flush();
         modify_database("", "ALTER TABLE [prefix_surveys] ADD showprogress CHAR(1) NULL default 'Y'"); echo $modifyoutput; flush();
         modify_database("", "ALTER TABLE [prefix_surveys] ADD allowjumps CHAR(1) NULL default 'N'"); echo $modifyoutput; flush();
+        modify_database("", "ALTER TABLE [prefix_surveys] ADD navigationdelay tinyint NOT NULL default '0'"); echo $modifyoutput; flush();
         modify_database("", "CREATE TABLE [prefix_survey_permissions] (
                             [sid] INT NOT NULL,         
                             [uid] INT NOT NULL,         
Index: admin/update/upgrade-postgres.php
===================================================================
--- admin/update/upgrade-postgres.php	(revision 9535)
+++ admin/update/upgrade-postgres.php	(working copy)
@@ -255,6 +255,7 @@
         modify_database("", "ALTER TABLE prefix_surveys ADD showwelcome CHAR(1) NULL default 'Y'"); echo $modifyoutput; flush();
         modify_database("", "ALTER TABLE prefix_surveys ADD showprogress CHAR(1) NULL default 'Y'"); echo $modifyoutput; flush();
         modify_database("", "ALTER TABLE prefix_surveys ADD allowjumps CHAR(1) NULL default 'N'"); echo $modifyoutput; flush();
+        modify_database("", "ALTER TABLE prefix_surveys ADD navigationdelay smallint NOT NULL default '0'"); echo $modifyoutput; flush();
         modify_database("", "CREATE TABLE prefix_survey_permissions (
                             sid integer DEFAULT 0 NOT NULL,
                             uid integer DEFAULT 0 NOT NULL,
Index: admin/update/upgrade-mssql.php
===================================================================
--- admin/update/upgrade-mssql.php	(revision 9535)
+++ admin/update/upgrade-mssql.php	(working copy)
@@ -430,6 +430,7 @@
         modify_database("", "ALTER TABLE [prefix_surveys] ADD showwelcome CHAR(1) NULL default 'Y'"); echo $modifyoutput; flush();
         modify_database("", "ALTER TABLE [prefix_surveys] ADD showprogress CHAR(1) NULL default 'Y'"); echo $modifyoutput; flush();
         modify_database("", "ALTER TABLE [prefix_surveys] ADD allowjumps CHAR(1) NULL default 'N'"); echo $modifyoutput; flush();
+        modify_database("", "ALTER TABLE [prefix_surveys] ADD navigationdelay tinyint default '0'"); echo $modifyoutput; flush();
         modify_database("", "CREATE TABLE [prefix_survey_permissions] (
                             [sid] INT NOT NULL,         
                             [uid] INT NOT NULL,         
Index: index.php
===================================================================
--- index.php	(revision 9535)
+++ index.php	(working copy)
@@ -2795,41 +2795,55 @@
     global $thissurvey, $clang;
     global $surveyid, $presentinggroupdescription;
     $surveymover = "";
+
+    if ($thissurvey['navigationdelay'] > 0 && (
+        isset($_SESSION['maxstep']) && $_SESSION['maxstep'] > 0 && $_SESSION['maxstep'] == $_SESSION['step']))
+    {
+        $disabled = "disabled=\"disabled\"";
+        $surveymover .= "<script type=\"text/javascript\">\n"
+        . "  navigator_countdown(" . $thissurvey['navigationdelay'] . ");\n"
+        . "</script>\n";
+    }
+    else
+    {
+        $disabled = "";
+    }
+
     if (isset($_SESSION['step']) && $_SESSION['step'] && ($_SESSION['step'] == $_SESSION['totalsteps']) && !$presentinggroupdescription && $thissurvey['format'] != "A")
     {
-        $surveymover = "<input type=\"hidden\" name=\"move\" value=\"movesubmit\" id=\"movesubmit\" />";
+        $surveymover .= "<input type=\"hidden\" name=\"move\" value=\"movesubmit\" id=\"movesubmit\" />";
     }
     else
     {
-        $surveymover = "<input type=\"hidden\" name=\"move\" value=\"movenext\" id=\"movenext\" />";
+        $surveymover .= "<input type=\"hidden\" name=\"move\" value=\"movenext\" id=\"movenext\" />";
     }
 
     if (isset($_SESSION['step']) && $thissurvey['format'] != "A" && ($thissurvey['allowprev'] != "N" || $thissurvey['allowjumps'] == "Y") &&
 	($_SESSION['step'] > 0 || (!$_SESSION['step'] && $presentinggroupdescription && $thissurvey['showwelcome'] == 'Y')))
     {
-        $surveymover .= "<input class='submit' accesskey='p' type='button' onclick=\"javascript:document.limesurvey.move.value = 'moveprev'; $('#limesurvey').submit();\" value=' &lt;&lt; "
-        . $clang->gT("Previous")." ' name='move2' id='moveprevbtn' />\n";
+        $surveymover .= "<input class='submit' accesskey='p' type='button' onclick=\"javascript:document.limesurvey.move.value = 'moveprev'; submit_and_disable();\" value=' &lt;&lt; "
+        . $clang->gT("Previous")." ' name='move2' id='moveprevbtn' $disabled />\n";
     }
     if (isset($_SESSION['step']) && $_SESSION['step'] && (!$_SESSION['totalsteps'] || ($_SESSION['step'] < $_SESSION['totalsteps'])))
     {
-        $surveymover .=  "\t<input class='submit' type='submit' accesskey='n' onclick=\"javascript:document.limesurvey.move.value = 'movenext';\" value=' "
-        . $clang->gT("Next")." &gt;&gt; ' name='move2' id='movenextbtn' />\n";
+        $surveymover .=  "\t<input class='submit' type='submit' accesskey='n' onclick=\"javascript:document.limesurvey.move.value = 'movenext'; submit_and_disable();\" value=' "
+        . $clang->gT("Next")." &gt;&gt; ' name='move2' id='movenextbtn' $disabled />\n";
     }
     // here, in some lace, is where I must modify to turn the next button conditionable
     if (!isset($_SESSION['step']) || !$_SESSION['step'])
     {
-        $surveymover .=  "\t<input class='submit' type='submit' accesskey='n' onclick=\"javascript:document.limesurvey.move.value = 'movenext';\" value=' "
-        . $clang->gT("Next")." &gt;&gt; ' name='move2' id='movenextbtn' />\n";
+        $surveymover .=  "\t<input class='submit' type='submit' accesskey='n' onclick=\"javascript:document.limesurvey.move.value = 'movenext'; submit_and_disable();\" value=' "
+        . $clang->gT("Next")." &gt;&gt; ' name='move2' id='movenextbtn' $disabled />\n";
     }
     if (isset($_SESSION['step']) && $_SESSION['step'] && ($_SESSION['step'] == $_SESSION['totalsteps']) && $presentinggroupdescription == "yes")
     {
-        $surveymover .=  "\t<input class='submit' type='submit' onclick=\"javascript:document.limesurvey.move.value = 'movenext';\" value=' "
-        . $clang->gT("Next")." &gt;&gt; ' name='move2' id=\"movenextbtn\"/>\n";
+        $surveymover .=  "\t<input class='submit' type='submit' onclick=\"javascript:document.limesurvey.move.value = 'movenext'; submit_and_disable();\" value=' "
+        . $clang->gT("Next")." &gt;&gt; ' name='move2' id=\"movenextbtn\" $disabled />\n";
     }
     if (($_SESSION['step'] && ($_SESSION['step'] == $_SESSION['totalsteps']) && !$presentinggroupdescription) || $thissurvey['format'] == 'A')
     {
         $surveymover .= "\t<input class=\"submit\" type=\"submit\" accesskey=\"l\" onclick=\"javascript:document.limesurvey.move.value = 'movesubmit';\" value=\""
-        . $clang->gT("Submit")."\" name=\"move2\" id=\"movesubmitbtn\" />\n";
+        . $clang->gT("Submit")."\" name=\"move2\" id=\"movesubmitbtn\" $disabled />\n";
     }
 
     //	$surveymover .= "<input type='hidden' name='PHPSESSID' value='".session_id()."' id='PHPSESSID' />\n";
Index: templates/default/navigator.pstpl
===================================================================
--- templates/default/navigator.pstpl	(revision 9535)
+++ templates/default/navigator.pstpl	(working copy)
@@ -1,4 +1,4 @@
-<table width="100%" align="center" bgcolor="#EEF6FF">
+<table class="navigator-table">
 	<tr>
 		<td align="left" width='30%'>
 			{SAVE}
Index: templates/default/template.css
===================================================================
--- templates/default/template.css	(revision 9535)
+++ templates/default/template.css	(working copy)
@@ -211,6 +211,42 @@
   padding: 0.5em 1em;
 }
 
+.page-odd td.questiontext {
+  background-color: #EFFFEE;
+}
+
+.navigator-table {
+  background-color: #EEF6FF;
+  text-align: center;
+  width: 100%;
+}
+
+.page-odd .navigator-table {
+  background-color: #EFFFEE;
+}
+
+td.page-title {
+  text-align: center;
+  background-color: #EEF6FF;
+}
+
+.page-odd td.page-title {
+  background-color: #EFFFEE;
+}
+
+table.question-group {
+  width: 100%;
+  text-align: center;
+  background-color: #d2e0f2;
+  border: 0;
+  border-collapse:collapse;
+  border-color: #111111;
+}
+
+.page-odd table.question-group {
+  background-color: #D2F2D3;
+}
+
 td.answer {
   padding: 0.5em 1.5em;
 }
@@ -221,6 +257,10 @@
   padding-left: 1em;
 }
 
+.page-odd td.survey-question-help {
+  background-color: #EFFFEE;
+}
+
 td.survey-question-help img {
   margin: 4px 4px 4px 0;
   padding-right: 5px;
@@ -648,6 +688,10 @@
   border: 1px solid #999999;
 }
 
+.page-odd td.graph {
+  background-color: #D2F2D3;
+}
+
 /** UI Slider **/
 .numeric-multi label.slider-label {
   display: table-cell;
Index: templates/default/survey.pstpl
===================================================================
--- templates/default/survey.pstpl	(revision 9535)
+++ templates/default/survey.pstpl	(working copy)
@@ -1,6 +1,6 @@
 <table width="100%" align="center" cellspacing="0">
 	<tr>
-		<td align="center" bgcolor="#EEF6FF">
+		<td class="page-title">
 			<h2>{SURVEYNAME}</h2><br />
 			<span style='font-size:10px;' >{SURVEYDESCRIPTION}</span>
 		</td>
Index: templates/default/startgroup.pstpl
===================================================================
--- templates/default/startgroup.pstpl	(revision 9535)
+++ templates/default/startgroup.pstpl	(working copy)
@@ -1,5 +1,5 @@
 <table><tr><td height="2"></td></tr></table>
-<table width="100%" align="center" bgcolor="#d2e0f2" border="0" style="border-collapse:collapse; border-color:#111111;">
+<table class="question-group">
 	<tr>
 		<td align="center">
 			<font face="verdana" size="2"><strong>{GROUPNAME}</strong></font>
svn-patch-3.diff (18,517 bytes)

user9586

2010-11-26 17:39

  ~13615

I updated the patch again to use "page-odd" (for consistency), and I updated the default template's css as I discovered that IE6 doesn't support attribute selectors.

c_schmitz

c_schmitz

2010-11-26 22:05

administrator   ~13624

Applied patch - thank you very much.

Issue History

Date Modified Username Field Change
2010-10-05 15:34 user9586 New Issue
2010-10-05 15:34 user9586 File Added: patch.diff
2010-10-11 23:55 c_schmitz Status new => feedback
2010-10-11 23:55 c_schmitz Note Added: 13090
2010-10-14 15:13 Mazi Note Added: 13180
2010-11-01 17:36 c_schmitz Assigned To => c_schmitz
2010-11-01 17:36 c_schmitz Status feedback => assigned
2010-11-09 12:21 user9586 Note Added: 13472
2010-11-09 13:08 Mazi Note Added: 13473
2010-11-10 17:46 user9586 Note Added: 13494
2010-11-26 11:27 user9586 File Added: svn-patch.diff
2010-11-26 11:34 user9586 Note Added: 13606
2010-11-26 12:15 Mazi Note Added: 13607
2010-11-26 14:27 c_schmitz Note Added: 13608
2010-11-26 14:27 c_schmitz File Deleted: patch.diff
2010-11-26 14:28 c_schmitz Note Edited: 13608 View Revisions
2010-11-26 14:31 c_schmitz Note Edited: 13608 View Revisions
2010-11-26 14:40 user9586 Note Added: 13609
2010-11-26 15:06 c_schmitz Note Added: 13610
2010-11-26 15:09 user9586 Note Added: 13611
2010-11-26 16:52 user9586 File Added: svn-patch-2.diff
2010-11-26 16:53 user9586 Note Added: 13614
2010-11-26 17:38 user9586 File Added: svn-patch-3.diff
2010-11-26 17:39 user9586 Note Added: 13615
2010-11-26 22:02 c_schmitz File Deleted: svn-patch.diff
2010-11-26 22:02 c_schmitz File Deleted: svn-patch-2.diff
2010-11-26 22:05 c_schmitz Note Added: 13624
2010-11-26 22:05 c_schmitz Status assigned => resolved
2010-11-26 22:05 c_schmitz Fixed in Version => 1.91
2010-11-26 22:05 c_schmitz Resolution open => fixed
2010-12-14 13:02 c_schmitz Status resolved => closed