From f524f142eb58ba1d92d9fb07f2f601cc561d74f7 Mon Sep 17 00:00:00 2001 From: Denis Chenu Date: Sat, 1 Dec 2012 18:09:10 +0100 Subject: [PATCH] Fixed issue #06983: partial : add new response in dataentry for ranking question Fixed issue: Add new question in dataentry for checkbox Fixed issue: Add new question in dataentry if admin lang are not in survey lang Dev: Only for new response actually, edit response are broken Dev: Surely other question type to review --- application/controllers/admin/dataentry.php | 7 +- application/modules/CheckQuestion.php | 8 +- application/modules/RankingQuestion.php | 171 ++++---------------- 3 files changed, 34 insertions(+), 152 deletions(-) diff --git a/application/controllers/admin/dataentry.php b/application/controllers/admin/dataentry.php index 20f4fcdee32..cef7be47549 100644 --- a/application/controllers/admin/dataentry.php +++ b/application/controllers/admin/dataentry.php @@ -603,7 +603,7 @@ public function editdata($subaction, $id, $surveyid, $language='') } $output .= "\tloadLibrary('Limesurvey_lang',array($lang)); $blang = new Limesurvey_lang($lang); @@ -1203,7 +1203,7 @@ public function view($surveyid, $lang=NULL) { LimeExpressionManager::StartProcessingGroup($degrow['gid'], ($thissurvey['anonymized']!="N"),$surveyid); - $results = Questions::model()->with('question_types')->findAllByAttributes(array('gid' => $degrow['gid'], 'language' => $sDataEntryLanguage), array('order' => 'question_order')); + $results = Questions::model()->with('question_types')->findAllByAttributes(array('gid' => $degrow['gid'],'parent_qid' => '0', 'language' => $sDataEntryLanguage), array('order' => 'question_order')); $aDataentryoutput .= "\t\n" ."".flattenText($degrow['group_name'],true)."\n" ."\t\n"; @@ -1218,7 +1218,6 @@ public function view($surveyid, $lang=NULL) // TODO - can questions be hidden? Are JavaScript variables names used? Consistently with everywhere else? // TMSW Conditions->Relevance: Show relevance equation instead of conditions here - better yet, have data entry use survey-at-a-time but with different view - $qinfo = LimeExpressionManager::GetQuestionStatus($deqrow['qid']); $q = $qinfo['info']['q']; $qidattributes = is_a($q, 'QuestionModule') ? $q->getAttributeValues() : array(); diff --git a/application/modules/CheckQuestion.php b/application/modules/CheckQuestion.php index f925f515fee..fe83a383372 100644 --- a/application/modules/CheckQuestion.php +++ b/application/modules/CheckQuestion.php @@ -667,7 +667,7 @@ public function getDataEntryView($language) $meaquery = "SELECT title, question FROM {{questions}} WHERE parent_qid={$this->id} AND language='{$language->getlangcode()}' ORDER BY question_order"; $mearesult = dbExecuteAssoc($meaquery); $meacount = $mearesult->getRowCount(); - + $fieldname="{$this->surveyid}X{$this->gid}X{$this->id}";// $this->fieldname give the last sq fieldname in dataentry $output = ''; if ($this->isother == "Y") $meacount++; if ($dcols > 0 && $meacount >= $dcols) @@ -684,13 +684,13 @@ public function getDataEntryView($language) echo $divider; $upto=0; } - $output .= ""; - $output .= "
"; + $output .= ""; + $output .= "
"; $upto++; } if ($this->isother == "Y") { - $output .= $language->gT("Other") . ""; + $output .= $language->gT("Other") . ""; } $output .= ""; } diff --git a/application/modules/RankingQuestion.php b/application/modules/RankingQuestion.php index 657ce5056a6..cb71a7a6097 100644 --- a/application/modules/RankingQuestion.php +++ b/application/modules/RankingQuestion.php @@ -294,11 +294,11 @@ public function getHeaderIncludes() public function createFieldmap() { $clang = Yii::app()->lang; - $data = Answers::model()->findAllByAttributes(array('qid' => $this->id, 'language' => $this->language)); + $data = Answers::model()->findAllByAttributes(array('qid' => $this->id,'parent_qid' => '0', 'language' => $this->language)); $map = array(); for ($i=1; $i<=count($data); $i++) { - $fieldname="{$this->surveyid}X{$this->gid}X{$this->id}$i"; + $fieldname="{$this->surveyid}X{$this->gid}X{$this->id}{$i}"; $q = clone $this; $q->fieldname = $fieldname; $q->aid = $i; @@ -458,155 +458,38 @@ public function getValueJS() public function getDataEntryView($language) { - $ansquery = "SELECT * FROM {{answers}} WHERE qid={$this->id} AND language='{$language->getlangcode()}' ORDER BY sortorder, answer"; - $ansresult = dbExecuteAssoc($ansquery); - $anscount = $ansresult->getRowCount(); - - foreach ($ansresult->readAll() as $ansrow) - { - $answers[] = array($ansrow['code'], $ansrow['answer']); - } - for ($i=1; $i<=$anscount; $i++) - { - if (isset($fname)) + $ansquery = "SELECT * FROM {{answers}} WHERE qid={$this->id} AND language='{$language->getlangcode()}' and scale_id=0 ORDER BY sortorder, answer"; + $ansresult = Yii::app()->db->createCommand($ansquery)->query()->readAll(); + $anscount = count($ansresult); + $answers= array(); + foreach ($ansresult as $ansrow) { - $myfname=$fname.$i; + $answers[] = $ansrow; } - if (isset($myfname) && Yii::app()->session[$myfname]) - { - $existing++; - } - } + $fieldname="{$this->surveyid}X{$this->gid}X{$this->id}";// $this->fieldname give the last sq fieldname in dataentry + $output = ""; + $output .= "
    "; for ($i=1; $i<=$anscount; $i++) { - if (isset($fname)) - { - $myfname = $fname.$i; - } - if (isset($myfname) && Yii::app()->session[$myfname]) - { - foreach ($answers as $ans) - { - if ($ans[0] == Yii::app()->session[$myfname]) - { - $thiscode=$ans[0]; - $thistext=$ans[1]; - } - } - } - if (!isset($ranklist)) {$ranklist="";} - $ranklist .= " {$i}: session[$myfname]) - { - $ranklist .= " value='"; - $ranklist .= $thistext; - $ranklist .= "'"; - } - $ranklist .= " onFocus=\"this.blur()\" />\n"; - $ranklist .= "\n"; - $ranklist .= "".$language->gT("Remove this item").""; + $output .=""; } - $choicelist .= "\n"; - $output = << - - - - - - - -
    - {$language->gT("Your choices")}:
    - {$choicelist} -
    - {$language->gT("Your ranking")}:
    - {$ranklist} -
    - - -OUTPUT; + $output .=""; + $output .= '
'; + $output .= '
'; return $output; } @@ -724,4 +607,4 @@ public function questionProperties($prop = false) return $prop?$props[$prop]:$props; } } -?> \ No newline at end of file +?>