Skip to content

Commit

Permalink
dev Implemented Quick add dialog for answer options
Browse files Browse the repository at this point in the history
dev Subquestions now share the same qid across languages like normal questions


git-svn-id: file:///Users/Shitiz/Downloads/lssvn/source/limesurvey_dev_cs@8306 b72ed6b6-b9f8-46b5-92b4-906544132732
  • Loading branch information
c-schmitz committed Jan 26, 2010
1 parent 5481d03 commit ca2ce8e
Show file tree
Hide file tree
Showing 4 changed files with 131 additions and 38 deletions.
18 changes: 15 additions & 3 deletions admin/database.php
Original file line number Diff line number Diff line change
Expand Up @@ -900,20 +900,32 @@ function get_max_question_order($gid)
$myFilter = new InputFilter('','',1,1,1);


$insertqids=array();
foreach ($anslangs as $language)
{
$position=0;
foreach ($rows[$language] as $subquestionkey=>$subquestionvalue)
{
if (substr($subquestionkey,0,3)!='new')
{
$query='Update '.db_table_name('questions').' set question_order='.($position+1).', title='.db_quoteall($codes[$position]).', question='.db_quoteall($subquestionvalue).' where qid='.db_quoteall($subquestionkey);
$query='Update '.db_table_name('questions').' set question_order='.($position+1).', title='.db_quoteall($codes[$position]).', question='.db_quoteall($subquestionvalue).' where qid='.db_quoteall($subquestionkey).' AND language='.db_quoteall($language);
$connect->execute($query);
}
else
{
$query='insert into '.db_table_name('questions').' (question_order, title, question, parent_qid, language) values ('.($position+1).','.db_quoteall($codes[$position]).','.db_quoteall($subquestionvalue).','.$qid.','.db_quoteall($language).')';
if (!isset($insertqid[$position]))
{
$query='INSERT into '.db_table_name('questions').' (sid, gid, question_order, title, question, parent_qid, language) values ('.$surveyid.','.$gid.','.($position+1).','.db_quoteall($codes[$position]).','.db_quoteall($subquestionvalue).','.$qid.','.db_quoteall($language).')';
$connect->execute($query);
$insertqid[$position]=$connect->Insert_Id(db_table_name_nq('questions'),"qid");
}
else
{
$query='INSERT into '.db_table_name('questions').' (qid, sid, gid, question_order, title, question, parent_qid, language) values ('.$insertqid[$position].','.$surveyid.','.$gid.','.($position+1).','.db_quoteall($codes[$position]).','.db_quoteall($subquestionvalue).','.$qid.','.db_quoteall($language).')';
if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n') $query = "SET IDENTITY_INSERT ".db_table_name('questions')." ON; " . $query . "SET IDENTITY_INSERT ".db_table_name('questions')." OFF;";
$connect->execute($query);
}
}
$connect->execute($query);
$position++;
}

Expand Down
9 changes: 9 additions & 0 deletions admin/html.php
Original file line number Diff line number Diff line change
Expand Up @@ -1312,6 +1312,7 @@
var strcode='".$clang->gT('Code','js')."';
var strlabel='".$clang->gT('Label','js')."';
var lsbrowsertitle='".$clang->gT('Label set browser','js')."';
var quickaddtitle='".$clang->gT('Quick-add subquestions','js')."';
var duplicateanswercode='".$clang->gT('Error: You are trying to use duplicate answer codes.','js')."';
var langs='".implode(';',$anslangs)."';</script>\n";

Expand Down Expand Up @@ -1423,6 +1424,7 @@
$vasummary .= "<input type='hidden' id='answercount_{$scale_id}' name='answercount_{$scale_id}' value='$anscount' />\n";
}
$vasummary .= "<button id='btnlsbrowser_{$scale_id}' class='btnlsbrowser' type='button'>".$clang->gT('Predefined label sets...')."</button>";
$vasummary .= "<button id='btnquickadd_{$scale_id}' class='btnquickadd' type='button'>".$clang->gT('Quick add...')."</button>";

}
$vasummary .= "<input type='hidden' id='lid0' name='lid0' value='{$qrow['lid']}' />\n";
Expand All @@ -1443,6 +1445,13 @@
<button id='btncancel' type='button'>".$clang->gT('Cancel')."</button></div>
<div id='labelsetpreview' style='float:right;width:500px;'></div></div> ";
$vasummary .= "<div id='quickadd' style='display:none;'><div style='float:left;'>
<label for='quickadd'>".$clang->gT('Enter your subquestions:')."</label>
<br /><textarea id='quickaddarea' class='tipme' title='Enter one subquestion per line. You can provide a code by separating code and subquestion text with a semikolon or tab.' rows='30' style='width:570px;'></textarea>
<br /><button id='btnqareplace' type='button'>".$clang->gT('Replace')."</button>
<button id='btnqainsert' type='button'>".$clang->gT('Add')."</button>
<button id='btnqacancel' type='button'>".$clang->gT('Cancel')."</button></div>
</div> ";
// Save button
$vasummary .= "<p><input type='submit' id='saveallbtn_$anslang' name='method' value='".$clang->gT("Save changes")."' />\n";
$vasummary .= "</div></form>";
Expand Down
133 changes: 102 additions & 31 deletions admin/scripts/answers.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,11 @@ $(document).ready(function(){
$('#labelsetbrowser').dialog({ autoOpen: false,
modal: true,
width:800,
title: lsbrowsertitle});
title: lsbrowsertitle});
$('#quickadd').dialog({ autoOpen: false,
modal: true,
width:600,
title: quickaddtitle});
$('.btnlsbrowser').click(lsbrowser);
$('#btncancel').click(function(){
$('#labelsetbrowser').dialog('close');
Expand All @@ -20,6 +24,14 @@ $(document).ready(function(){
$('#btnlsinsert').click(transferlabels);
$('#labelsets').click(lspreview);
$('#languagefilter').click(lsbrowser);

$('#btnqacancel').click(function(){
$('#quickadd').dialog('close');
});
$('#btnqareplace').click(quickaddlabels);
$('#btnqainsert').click(quickaddlabels);
$('.btnquickadd').click(quickadddialog);

updaterowproperties();
});

Expand Down Expand Up @@ -444,7 +456,7 @@ function transferlabels()
}
else
{
tablerows=tablerows+'<tr class="row_'+k+'" ><td>&nbsp;</td><td>&nbsp;</td><td><input type="text" size="100" class="answer" value="'+lsrows[k].code+'"></input><img src="../images/edithtmlpopup.png" class="btnaddanswer" /></td><td><img src="../images/addanswer.png" class="btnaddanswer" /><img src="../images/deleteanswer.png" class="btndelanswer" /></td></tr>'
tablerows=tablerows+'<tr class="row_'+k+'" ><td>&nbsp;</td><td>&nbsp;</td><td><input type="text" size="100" class="answer" value="'+lsrows[k].title+'"></input><img src="../images/edithtmlpopup.png" class="btnaddanswer" /></td><td><img src="../images/addanswer.png" class="btnaddanswer" /><img src="../images/deleteanswer.png" class="btndelanswer" /></td></tr>'
}
}
}
Expand Down Expand Up @@ -478,38 +490,97 @@ function transferlabels()

}

function in_array (needle, haystack, argStrict) {
// http://kevin.vanzonneveld.net
// + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + improved by: vlado houba
// + input by: Billy
// + bugfixed by: Brett Zamir (http://brett-zamir.me)
// * example 1: in_array('van', ['Kevin', 'van', 'Zonneveld']);
// * returns 1: true
// * example 2: in_array('vlado', {0: 'Kevin', vlado: 'van', 1: 'Zonneveld'});
// * returns 2: false
// * example 3: in_array(1, ['1', '2', '3']);
// * returns 3: true
// * example 3: in_array(1, ['1', '2', '3'], false);
// * returns 3: true
// * example 4: in_array(1, ['1', '2', '3'], true);
// * returns 4: false

var key = '', strict = !!argStrict;

if (strict) {
for (key in haystack) {
if (haystack[key] === needle) {
return true;
}


function quickaddlabels()
{
if ($(this).attr('id')=='btnqareplace')
{
var lsreplace=true;
}
else
{
var lsreplace=false;
}

languages=langs.split(';');
for (x in languages)
{

if (assessmentvisible)
{
assessment_style='';
assessment_type='text';
}
else
{
assessment_style='style="display:none;"';
assessment_type='hidden';
}

lsrows=$('#quickaddarea').val().split("\n");

if (lsrows[0].indexOf("\t")==-1)
{
separatorchar=';'
}
} else {
for (key in haystack) {
if (haystack[key] == needle) {
return true;
else
{
separatorchar="\t";
}
tablerows='';
for (k in lsrows)
{
thisrow=lsrows[k].splitCSV(separatorchar);
if (thisrow.length==1)
{
thisrow[1]=thisrow[0];
thisrow[0]=k+1;
}

if (x==0) {
tablerows=tablerows+'<tr class="row_'+k+'" ><td><img class="handle" src="../images/handle.png" /></td><td><input class="code" type="text" maxlength="5" size="5" value="'+thisrow[0]+'" /></td><td '+assessment_style+'><input class="assessment" type="'+assessment_type+'" maxlength="5" size="5" value="1"/></td><td><input type="text" size="100" class="answer" value="'+thisrow[1]+'"></input><img src="../images/edithtmlpopup.png" class="btneditanswer" /></td><td><img src="../images/addanswer.png" class="btnaddanswer" /><img src="../images/deleteanswer.png" class="btndelanswer" /></td></tr>'
}
else
{
tablerows=tablerows+'<tr class="row_'+k+'" ><td>&nbsp;</td><td>&nbsp;</td><td><input type="text" size="100" class="answer" value="'+thisrow[1]+'"></input><img src="../images/edithtmlpopup.png" class="btnaddanswer" /></td><td><img src="../images/addanswer.png" class="btnaddanswer" /><img src="../images/deleteanswer.png" class="btndelanswer" /></td></tr>'

}
}
if (lsreplace) {
$('#answers_'+languages[x]+'_'+scale_id+' tbody').empty();
}
$('#answers_'+languages[x]+'_'+scale_id+' tbody').append(tablerows);
// Unbind any previous events
$('#answers_'+languages[x]+'_'+scale_id+' .btnaddanswer').unbind('click');
$('#answers_'+languages[x]+'_'+scale_id+' .btneditanswer').unbind('click');
$('#answers_'+languages[x]+'_'+scale_id+' .btndelanswer').unbind('click');
$('#answers_'+languages[x]+'_'+scale_id+' .answer').unbind('focus');
$('#answers_'+languages[x]+'_'+scale_id+' .btnaddanswer').click(addinput);
$('#answers_'+languages[x]+'_'+scale_id+' .btneditanswer').click(popupeditor);
$('#answers_'+languages[x]+'_'+scale_id+' .btndelanswer').click(deleteinput);
$('#answers_'+languages[x]+'_'+scale_id+' .answer').focus(function(){
if ($(this).val()==newansweroption_text)
{
$(this).val('');
}
});
}
$('#quickadd').dialog('close');
$('#quickaddarea').val('');
$('.answertable tbody').sortable('refresh');
updaterowproperties();
}




return false;




function quickadddialog()
{
scale_id=removechars($(this).attr('id'));
$('#quickadd').dialog('open');
}
9 changes: 5 additions & 4 deletions admin/scripts/subquestions.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,12 @@ $(document).ready(function(){
$('#btncancel').click(function(){
$('#labelsetbrowser').dialog('close');
});
$('#btnqacancel').click(function(){
$('#quickadd').dialog('close');
});

$('#btnlsreplace').click(transferlabels);
$('#btnlsinsert').click(transferlabels);
$('#btnqacancel').click(function(){
$('#quickadd').dialog('close');
});
$('#btnqareplace').click(quickaddlabels);
$('#btnqainsert').click(quickaddlabels);
$('#labelsets').click(lspreview);
Expand Down Expand Up @@ -508,5 +509,5 @@ function quickaddlabels()

function quickadddialog()
{
$('#quickadd').dialog('open');
$('#quickadd').dialog('open');
}

0 comments on commit ca2ce8e

Please sign in to comment.