Skip to content

Commit

Permalink
dev Multi-language sorting works now
Browse files Browse the repository at this point in the history
git-svn-id: file:///Users/Shitiz/Downloads/lssvn/source/limesurvey_dev_cs@8268 b72ed6b6-b9f8-46b5-92b4-906544132732
  • Loading branch information
c-schmitz committed Jan 19, 2010
1 parent 03b7c34 commit 88341e5
Show file tree
Hide file tree
Showing 2 changed files with 98 additions and 20 deletions.
14 changes: 7 additions & 7 deletions admin/html.php
Expand Up @@ -1283,7 +1283,7 @@
$vasummary .= "<div class='header'>\n"
.$clang->gT("Edit answer options")
."</div>\n"
."<form name='editanswers' method='post' action='$scriptname'onsubmit=\"return codeCheck('code_',$maxsortorder,'".$clang->gT("Error: You are trying to use duplicate answer codes.",'js')."','".$clang->gT("Error: 'other' is a reserved keyword.",'js')."');\">\n"
."<form id='editanswersform' name='editanswers' method='post' action='$scriptname'>\n"
. "<input type='hidden' name='sid' value='$surveyid' />\n"
. "<input type='hidden' name='gid' value='$gid' />\n"
. "<input type='hidden' name='qid' value='$qid' />\n"
Expand Down Expand Up @@ -1336,7 +1336,7 @@
}
else
{
$vasummary .="<th style='display:none;'>";
$vasummary .="<th style='display:none;'>&nbsp;";
}

$vasummary .="</th><th align='center'>\n"
Expand All @@ -1357,18 +1357,18 @@
$row['code'] = htmlspecialchars($row['code']);
$row['answer']=htmlspecialchars($row['answer']);

$vasummary .= "<tr id='row_$position' ";
$vasummary .= "<tr class='row_$position ";
if ($alternate==true)
{
$vasummary.=' class="highlight" ';
$vasummary.='highlight';
}
$alternate=!$alternate;

$vasummary .=" ><td align='right'>\n";
$vasummary .=" '><td align='right'>\n";

if ($first)
{
$vasummary .= "<img src='$imagefiles/handle.png' /></td><td><input type='text' class='code' id='code_{$position}_{$scale_id}' name='code_{$position}_{$scale_id}' value=\"{$row['code']}\" maxlength='5' size='5'"
$vasummary .= "<img class='handle' src='$imagefiles/handle.png' /></td><td><input type='text' class='code' id='code_{$position}_{$scale_id}' name='code_{$position}_{$scale_id}' value=\"{$row['code']}\" maxlength='5' size='5'"
." onkeypress=\"return goodchars(event,'1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWZYZ_')\""
." />";
}
Expand All @@ -1389,7 +1389,7 @@
}
elseif ( $first)
{
$vasummary .= " style='display:none;'><input type='hidden' id='assessment_{$position}_{$scale_id}' name='assessment_{$position}_{$scale_id}' value=\"{$row['assessment_value']}\" maxlength='5' size='5'"
$vasummary .= " style='display:none;'><input type='hidden' class='assessment' id='assessment_{$position}_{$scale_id}' name='assessment_{$position}_{$scale_id}' value=\"{$row['assessment_value']}\" maxlength='5' size='5'"
." onkeypress=\"return goodchars(event,'-1234567890')\""
." />";
}
Expand Down
104 changes: 91 additions & 13 deletions admin/scripts/answers.js
@@ -1,11 +1,13 @@
// $Id: templates.js 7699 2009-09-30 22:28:50Z c_schmitz $

$(document).ready(function(){
$('.answertable tbody').sortable({ containment:'parent',
update:updaterowproperties,
$('.tab-page:first .answertable tbody').sortable({ containment:'parent',
update:aftermove,
distance:3});
$('.btnaddanswer').click(addinput);
$('.btndelanswer').click(deleteinput);
$('.btndelanswer').click(deleteinput);
$('.btneditanswer').click(popupeditor);
$('#editanswersform').submit(code_duplicates_check)
});


Expand All @@ -18,15 +20,22 @@ function deleteinput()
if (countanswers>1)
{
// 2.) Remove the table row
position=$(this).closest('tr').attr('id').substr(4);
var x;
classes=$(this).closest('tr').attr('class').split(' ');
for (x in classes)
{
if (classes[x].substr(0,3)=='row'){
position=classes[x].substr(4);
}
}
info=$(this).closest('table').attr('id').split("_");
language=info[1];
scale_id=info[2];
languages=langs.split(';');
var x;
for (x in languages)
{
tablerow=$('#tabpage_'+languages[x]).find('#answers_'+languages[x]+'_'+scale_id+' #row_'+position);
tablerow=$('#tabpage_'+languages[x]).find('#answers_'+languages[x]+'_'+scale_id+' .row_'+position);
if (x==0) {
tablerow.fadeTo(400, 0, function(){
$(this).remove();
Expand All @@ -49,25 +58,43 @@ function deleteinput()

function addinput()
{
position=$(this).closest('tr').attr('id').substr(4);
var x;
classes=$(this).closest('tr').attr('class').split(' ');
for (x in classes)
{
if (classes[x].substr(0,3)=='row'){
position=classes[x].substr(4);
}
}
info=$(this).closest('table').attr('id').split("_");
language=info[1];
scale_id=info[2];
newposition=Number(position)+1;
languages=langs.split(';');
var x;

for (x in languages)
{
tablerow=$('#tabpage_'+languages[x]).find('#answers_'+languages[x]+'_'+scale_id+' #row_'+position);
tablerow=$('#tabpage_'+languages[x]).find('#answers_'+languages[x]+'_'+scale_id+' .row_'+position);
if (assessmentvisible)
{
assessment_style='';
assessment_type='text';
}
else
{
assessment_style='style="display:none;"';
assessment_type='hidden';
}
if (x==0) {
inserthtml='<tr id="row_'+newposition+'" style="display:none;"><td><img src="../images/handle.png" /></td><td><input class="code" type="text" maxlength="5" size="5" value="'+getNextCode($('#tabpage_'+languages[x]).find('#row_'+position+' .code').val())+'" /></td><td><input type="text" size="80" class="answer" value="New answer option"></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>'
inserthtml='<tr class="row_'+newposition+'" style="display:none;"><td><img class="handle" src="../images/handle.png" /></td><td><input class="code" type="text" maxlength="5" size="5" value="'+getNextCode($(this).parent().parent().find('.code').val())+'" /></td><td '+assessment_style+'><input class="assessment" type="'+assessment_type+'" maxlength="5" size="5" value="1"/></td><td><input type="text" size="80" class="answer" value="New answer option"></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
{
inserthtml='<tr id="row_'+newposition+'" style="display:none;"><td>&nbsp;</td><td>&nbsp;</td><td><input type="text" size="80" class="answer" value="New answer option"></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>'
inserthtml='<tr class="row_'+newposition+'" style="display:none;"><td>&nbsp;</td><td>&nbsp;</td><td><input type="text" size="80" class="answer" value="New answer option"></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>'
}
tablerow.after(inserthtml);
tablerow.next().find('.btnaddanswer').click(addinput);
tablerow.next().find('.btneditanswer').click(popupeditor);
tablerow.next().find('.btndelanswer').click(deleteinput);
tablerow.next().fadeIn(800);
tablerow.next().find('.code').blur(updatecodes);
Expand All @@ -82,9 +109,49 @@ function addinput()
updaterowproperties();
}

// This function adjust the alternating table rows and IDs and names
function aftermove(event,ui)
{
// But first we have change the sortorder in translations, too
var x;
classes=ui.item.attr('class').split(' ');
for (x in classes)
{
if (classes[x].substr(0,3)=='row'){
oldindex=classes[x].substr(4);
}
}

var newindex = $(ui.item[0]).parent().children().index(ui.item[0]);

info=$(ui.item[0]).closest('table').attr('id').split("_");
language=info[1];
scale_id=info[2];

languages=langs.split(';');
var x;
for (x in languages)
{
if (x>0) {
tablebody=$('#tabpage_'+languages[x]).find('#answers_'+languages[x]+'_'+scale_id+' tbody');
if (newindex<oldindex)
{
tablebody.find('.row_'+newindex).before(tablebody.find('.row_'+oldindex));
}
else
{
tablebody.find('.row_'+newindex).after(tablebody.find('.row_'+oldindex));
}
}
}
updaterowproperties();
}

// This function adjust the alternating table rows and renames IDs and names
// if the list has really changed
function updaterowproperties()
{


$('.answertable tbody').each(function(){
info=$(this).closest('table').attr('id').split("_");
language=info[1];
Expand All @@ -102,8 +169,8 @@ function updaterowproperties()
$(this).find('.code').attr('name','code_'+rownumber+'_'+scale_id);
$(this).find('.answer').attr('id','answer_'+language+'_'+rownumber+'_'+scale_id);
$(this).find('.answer').attr('name','answer_'+language+'_'+rownumber+'_'+scale_id);
$(this).find('.assessment').attr('id','assessment_'+language+'_'+rownumber+'_'+scale_id);
$(this).find('.assessment').attr('name','assessment_'+language+'_'+rownumber+'_'+scale_id);
$(this).find('.assessment').attr('id','assessment_'+rownumber+'_'+scale_id);
$(this).find('.assessment').attr('name','assessment_'+rownumber+'_'+scale_id);
highlight=!highlight;
rownumber++;
})
Expand Down Expand Up @@ -151,4 +218,15 @@ function getNextCode(sourcecode)

function is_numeric (mixed_var) {
return (typeof(mixed_var) === 'number' || typeof(mixed_var) === 'string') && mixed_var !== '' && !isNaN(mixed_var);
}

function popupeditor()
{
input_id=$(this).parent().find('.answer').attr('id');
start_popup_editor(input_id);
}

function code_duplicates_check()
{
//return false;
}

0 comments on commit 88341e5

Please sign in to comment.