Skip to content

Commit

Permalink
Fixed issue #7967: Without javascript there are still present button …
Browse files Browse the repository at this point in the history
…that don't work in the survey

Dev: except for change language and index : all work without JS in IE7
Dev: except for change language : all work without JS on modern browser
  • Loading branch information
Shnoulle committed Sep 24, 2013
1 parent e13bf4b commit 151d03b
Show file tree
Hide file tree
Showing 5 changed files with 87 additions and 58 deletions.
2 changes: 1 addition & 1 deletion application/controllers/survey/index.php
Expand Up @@ -47,7 +47,7 @@ function action()
$surveyid = $param['sid'];
Yii::app()->setConfig('surveyID',$surveyid);
$thisstep = $param['thisstep'];
$move = $param['move'];
$move=getMove();
$clienttoken = $param['token'];
$standardtemplaterootdir = Yii::app()->getConfig('standardtemplaterootdir');
if (is_null($thissurvey) && !is_null($surveyid)) $thissurvey = getSurveyInfo($surveyid);
Expand Down
6 changes: 4 additions & 2 deletions application/helpers/SurveyRuntimeHelper.php
Expand Up @@ -52,7 +52,7 @@ protected function createFullQuestionIndexByGroup($LEMsessid)
$_SESSION[$LEMsessid]['step'] == $group['step'] ? 'current' : ''

));
$sButtonSubmit=CHtml::htmlButton(gT('Go to this group'),array('type'=>'submit','value'=>$group['step'],'name'=>'move','class'=>'hide'));
$sButtonSubmit=CHtml::htmlButton(gT('Go to this group'),array('type'=>'submit','value'=>$group['step'],'name'=>'move','class'=>'jshide'));
echo CHtml::tag('li', array(
'data-gid' => $group['gid'],
'title' => $group['description'],
Expand Down Expand Up @@ -150,7 +150,7 @@ protected function createIncrementalQuestionIndex($LEMsessid, $surveyMode)
echo "<div class=\"row $class\"\">";
echo "<span class=\"hdr\">$v</span>";
echo "<span title=\"$sText\">$sText</span>";
echo CHtml::htmlButton($sButtonText,array('type'=>'submit','value'=>$s,'name'=>'move','class'=>'hide'));
echo CHtml::htmlButton($sButtonText,array('type'=>'submit','value'=>$s,'name'=>'move','class'=>'jshide'));
echo "</div>";
}

Expand Down Expand Up @@ -942,6 +942,8 @@ function run($surveyid,$args) {
<input type='hidden' name='fieldnames' value='{$hiddenfieldnames}' id='fieldnames' />\n";
// <-- END FEATURE - SAVE

// The default submit button
echo CHtml::htmlButton("default",array('type'=>'submit','id'=>"defaultbtn",'value'=>"default",'name'=>'move','class'=>"submit noview",'style'=>'display:none'));
if ($surveyMode == 'survey')
{
if (isset($thissurvey['showwelcome']) && $thissurvey['showwelcome'] == 'N')
Expand Down
40 changes: 37 additions & 3 deletions application/helpers/frontend_helper.php
Expand Up @@ -1623,7 +1623,7 @@ function surveymover()
// Construction of mover
if($sMovePrev){
$sLangMoveprev=$clang->gT("Previous");
$sSurveyMover.= CHtml::htmlButton($sLangMoveprev,array('type'=>'submit','id'=>"{$sMovePrev}btn",'value'=>$sMovePrev,'name'=>'move','accesskey'=>'p','class'=>$sClass));
$sSurveyMover.= CHtml::htmlButton($sLangMoveprev,array('type'=>'submit','id'=>"{$sMovePrev}btn",'value'=>$sMovePrev,'name'=>$sMovePrev,'accesskey'=>'p','class'=>$sClass));
}
if($sMovePrev && $sMoveNext){
$sSurveyMover .= " ";
Expand All @@ -1637,10 +1637,10 @@ function surveymover()
$sLangMovenext=$clang->gT("Next");
$sAccessKeyNext='n';
}
$sSurveyMover.= CHtml::htmlButton($sLangMovenext,array('type'=>'submit','id'=>"{$sMoveNext}btn",'value'=>$sMoveNext,'name'=>'move','accesskey'=>$sAccessKeyNext,'class'=>$sClass));
$sSurveyMover.= CHtml::htmlButton($sLangMovenext,array('type'=>'submit','id'=>"{$sMoveNext}btn",'value'=>$sMoveNext,'name'=>$sMoveNext,'accesskey'=>$sAccessKeyNext,'class'=>$sClass));
}
// Add a default submit button : first button is one clicked (carriage return on text input)
$sSurveyMover=CHtml::button($sMoveNext,array('type'=>'submit','id'=>'move','name'=>'move','style'=>'display:none')).$sSurveyMover;
//$sSurveyMover=CHtml::button($sMoveNext,array('type'=>'submit','id'=>'move','name'=>'move','style'=>'display:none')).$sSurveyMover;
return $sSurveyMover;
}

Expand Down Expand Up @@ -2287,3 +2287,37 @@ function SetSurveyLanguage($surveyid, $language)
$oApplication->lang=$clang;
return $clang;
}

/**
* getMove get move button clicked
**/
function getMove()
{
# $clang = Yii::app()->lang;
$aAcceptedMove=array('movenext','movesubmit','moveprev','saveall','loadall','clearall');
// We can control is save and load are OK : todo fix according to survey settings
// Maybe allow $aAcceptedMove in Plugin
$move=Yii::app()->request->getParam('move');
foreach($aAcceptedMove as $sAccepteMove)
{
if(Yii::app()->request->getParam($sAccepteMove))
$move=$sAccepteMove;
}
if($move=='default')
{
$surveyid=Yii::app()->getConfig('surveyID');
$thissurvey=getsurveyinfo($surveyid);
$iSessionStep=(isset($_SESSION['survey_'.$surveyid]['step']))?$_SESSION['survey_'.$surveyid]['step']:false;
$iSessionTotalSteps=(isset($_SESSION['survey_'.$surveyid]['totalsteps']))?$_SESSION['survey_'.$surveyid]['totalsteps']:false;
if ($iSessionStep && ($iSessionStep == $iSessionTotalSteps)|| $thissurvey['format'] == 'A')
{
$move="movesubmit";
}
else
{
$move="movenext";
}
}
return $move;
}

74 changes: 42 additions & 32 deletions application/helpers/replacements_helper.php
Expand Up @@ -403,38 +403,7 @@ function templatereplace($line, $replacements = array(), &$redata = array(), $de
}
if (isset($thissurvey['allowsave']) and $thissurvey['allowsave'] == "Y")
{
// Find out if the user has any saved data
if ($thissurvey['format'] == 'A')
{
if ($thissurvey['tokenanswerspersistence'] != 'Y' || !isset($surveyid) || !tableExists('tokens_'.$surveyid))
{
$_saveall = "\t\t\t<input type='button' name='loadall' value='" . $clang->gT("Load unfinished survey") . "' class='saveall button' onclick=\"javascript:addHiddenField(document.getElementById('limesurvey'),'loadall',this.value);document.getElementById('limesurvey').submit();\" " . (($thissurvey['active'] != "Y") ? "disabled='disabled'" : "") . "/>"
. "\n\t\t\t<input type='button' name='saveallbtn' value='" . $clang->gT("Resume later") . "' class='saveall button' onclick=\"javascript:document.limesurvey.move.value = this.value;addHiddenField(document.getElementById('limesurvey'),'saveall',this.value);document.getElementById('limesurvey').submit();\" " . (($thissurvey['active'] != "Y") ? "disabled='disabled'" : "") . "/>"; // Show Save So Far button
}
else
{
$_saveall = "\t\t\t<input type='button' name='saveallbtn' value='" . $clang->gT("Resume later") . "' class='saveall button' onclick=\"javascript:document.limesurvey.move.value = this.value;addHiddenField(document.getElementById('limesurvey'),'saveall',this.value);document.getElementById('limesurvey').submit();\" " . (($thissurvey['active'] != "Y") ? "disabled='disabled'" : "") . "/>"; // Show Save So Far button
};
}
elseif (isset($surveyid) && (!isset($_SESSION['survey_'.$surveyid]['step']) || !$_SESSION['survey_'.$surveyid]['step']))
{ //First page, show LOAD
if ($thissurvey['tokenanswerspersistence'] != 'Y' || !isset($surveyid) || !tableExists('tokens_'.$surveyid))
{
$_saveall = "\t\t\t<input type='button' name='loadall' value='" . $clang->gT("Load unfinished survey") . "' class='saveall button' onclick=\"javascript:addHiddenField(document.getElementById('limesurvey'),'loadall',this.value);document.getElementById('limesurvey').submit();\" " . (($thissurvey['active'] != "Y") ? "disabled='disabled'" : "") . "/>";
}
else
{
$_saveall = '';
}
}
elseif (isset($surveyid) && isset($_SESSION['survey_'.$surveyid]['scid']) && (isset($move) && $move == "movelast"))
{ //Already saved and on Submit Page, dont show Save So Far button
$_saveall = '';
}
else
{
$_saveall = "<input type='button' name='saveallbtn' value='" . $clang->gT("Resume later") . "' class='saveall button' onclick=\"javascript:document.limesurvey.move.value = this.value;addHiddenField(document.getElementById('limesurvey'),'saveall',this.value);document.getElementById('limesurvey').submit();\" " . (($thissurvey['active'] != "Y") ? "disabled='disabled'" : "") . "/>"; // Show Save So Far button
}
$_saveall = doHtmlSaveAll(isset($move)?$move:NULL);
}
else
{
Expand Down Expand Up @@ -905,4 +874,45 @@ function PassthruReplace($line, $thissurvey)
return $line;
}

/**
* doHtmlSaveAll return HTML part of saveall button in survey
**/
function doHtmlSaveAll($move="")
{
$surveyid=Yii::app()->getConfig('surveyID');
$thissurvey=getsurveyinfo($surveyid);
$clang = Yii::app()->lang;
$disabled=($thissurvey['active'] != "Y")? array("disabled"=>"disabled"):NULL;

This comment has been minimized.

Copy link
@mennodekker

mennodekker Sep 24, 2013

Contributor

This creates errors! The htmloptions used later on should be key/value. The way it is done now adds [] = array('disabled'=>'disabled') and gives error in encoding ==> htmlspecialchars() expects parameter 1 to be string, array given

This comment has been minimized.

Copy link
@Shnoulle

Shnoulle Sep 24, 2013

Author Collaborator

Yeap .... rigth (see that in template ...but don't pull ....)

Silly boy ;)
8399a4c

$_saveall="";
// Find out if the user has any saved data
if ($thissurvey['format'] == 'A')
{
if ($thissurvey['tokenanswerspersistence'] != 'Y' || !isset($surveyid) || !tableExists('tokens_'.$surveyid))
{
$_saveall .= CHtml::htmlButton($clang->gT("Load unfinished survey"),array('type'=>'submit','id'=>"loadallbtn",'value'=>'loadall','name'=>'loadall','class'=>"saveall submit button",$disabled));
}
$_saveall .= CHtml::htmlButton($clang->gT("Resume later"),array('type'=>'submit','id'=>"saveallbtn",'value'=>'saveall','name'=>'saveall','class'=>"saveall submit button",$disabled));
}
elseif ($surveyid && (!isset($_SESSION['survey_'.$surveyid]['step']) || !$_SESSION['survey_'.$surveyid]['step']))//First page, show LOAD (but not save)
{
if ($thissurvey['tokenanswerspersistence'] != 'Y' || !isset($surveyid) || !tableExists('tokens_'.$surveyid))
{
$_saveall .= CHtml::htmlButton($clang->gT("Load unfinished survey"),array('type'=>'submit','id'=>"loadallbtn",'value'=>'loadall','name'=>'loadall','class'=>"saveall submit button",$disabled));
}
}
elseif ($surveyid && (isset($_SESSION['survey_'.$surveyid]['maxstep']) && $_SESSION['survey_'.$surveyid]['maxstep']==1) && $thissurvey['showwelcome']=="N")//First page, show LOAD and SAVE
{ //First page, show LOAD
if ($thissurvey['tokenanswerspersistence'] != 'Y' || !isset($surveyid) || !tableExists('tokens_'.$surveyid))
{
$_saveall .= CHtml::htmlButton($clang->gT("Load unfinished survey"),array('type'=>'submit','id'=>"loadallbtn",'value'=>'loadall','name'=>'loadall','class'=>"saveall submit button",$disabled));
}
$_saveall .= CHtml::htmlButton($clang->gT("Resume later"),array('type'=>'submit','id'=>"saveallbtn",'value'=>'saveall','name'=>'saveall','class'=>"saveall submit button",$disabled));
}
elseif (!isset($_SESSION['survey_'.$surveyid]['scid']) || $move == "movelast") // Not on last page or submited survey
{
$_saveall .= CHtml::htmlButton($clang->gT("Resume later"),array('type'=>'submit','id'=>"saveallbtn",'value'=>'saveall','name'=>'saveall','class'=>"saveall submit button",$disabled));
}
return $_saveall;
}

// Closing PHP tag intentionally omitted - yes, it is okay
23 changes: 3 additions & 20 deletions scripts/survey_runtime.js
Expand Up @@ -72,28 +72,10 @@ $(document).ready(function()
// Deactivate all other button on submit
function limesurveySubmitHandler(){
$("#limesurvey").on("click",".disabled",function(){return false;});
$(document).on('click',"button[name='move'],a.button", function(event){
$("button[name='move']").not($(this)).prop('disabled',true);
$(document).on('click',"button[type='submit'],a.button", function(event){
$("button[type='submit']").not($(this)).prop('disabled',true);
$("a.button").not($(this)).addClass('disabled');
});
// Deactivate submit on text validation : don't work with index actually
// $(document).on('submit',"#limesurvey", function(event){
// if (event.originalEvent.explicitOriginalTarget.name != "move") {
// console.log(event.originalEvent);
// event.preventDefault();
// }
// });

/* 130712 IE6+IE7 need this */
if('v'=='\v'){ // Quick hack for IE6/7 surely 8 and more
$(function() {
$("button[name='move']").click(function(e){
$("button[name='move']").prop('disabled',true);
$('<input>').attr({type: 'hidden',name: 'move',value: $(this).val()}).appendTo('#limesurvey');
$("#limesurvey").submit();
});
});
}
}


Expand Down Expand Up @@ -147,6 +129,7 @@ function navbuttonsJqueryUi(){
* Manage the index
*/
function manageIndex(){
$("#index .jshide").hide();
$("#index").on('click','li,.row',function(e){
if(!$(e.target).is('button')){
$(this).children("[name='move']").click();
Expand Down

0 comments on commit 151d03b

Please sign in to comment.