"
""
""
" | ",
Gbl.RowEvenOdd,
Gbl.Prefs.IconsURL,
QuestionExists ? "tr" :
"ok_green",
QuestionExists ? Txt_Existing_question :
Txt_New_question,
QuestionExists ? Txt_Existing_question :
Txt_New_question);
/***** Write number of question *****/
fprintf (Gbl.F.Out,"",
ClassData,Gbl.RowEvenOdd);
if (!QuestionExists)
fprintf (Gbl.F.Out,"%u ",++NumNonExistingQst);
fprintf (Gbl.F.Out," | ");
/***** Write the question tags *****/
fprintf (Gbl.F.Out,"",
Gbl.RowEvenOdd);
if (Gbl.Test.Tags.Num)
{
/***** Write the tags *****/
fprintf (Gbl.F.Out,"");
for (NumTag = 0;
NumTag < Gbl.Test.Tags.Num;
NumTag++)
fprintf (Gbl.F.Out,""
""
" • "
" | "
""
"%s"
" | "
" ",
ClassData,
ClassData,Gbl.Test.Tags.Txt[NumTag]);
fprintf (Gbl.F.Out," ");
}
else // no tags for this question
fprintf (Gbl.F.Out," (%s) ",
ClassData,Txt_no_tags);
fprintf (Gbl.F.Out," | ");
/***** Write the question type *****/
fprintf (Gbl.F.Out,""
"%s "
" | ",
ClassData,Gbl.RowEvenOdd,
Txt_TST_STR_ANSWER_TYPES[Gbl.Test.AnswerType]);
/***** Write if shuffle is enabled *****/
fprintf (Gbl.F.Out,"",
Gbl.RowEvenOdd);
if (Gbl.Test.AnswerType == Tst_ANS_UNIQUE_CHOICE ||
Gbl.Test.AnswerType == Tst_ANS_MULTIPLE_CHOICE)
/* Put an icon that indicates whether shuffle is enabled or not */
if (Gbl.Test.Shuffle)
fprintf (Gbl.F.Out,"",
Gbl.Prefs.IconsURL,
QuestionExists ? "ok_off" :
"ok_on",
Txt_TEST_Correct_answer,
Txt_TEST_Correct_answer);
fprintf (Gbl.F.Out," | ");
/***** Write the stem and the answers *****/
fprintf (Gbl.F.Out,"",
Gbl.RowEvenOdd);
Tst_WriteQstStem (Stem,ClassStem);
Tst_WriteQstFeedback (Feedback,"TEST_EDI_LIGHT");
switch (Gbl.Test.AnswerType)
{
case Tst_ANS_INT:
fprintf (Gbl.F.Out,"(%ld)",
ClassStem,Gbl.Test.Answer.Integer);
break;
case Tst_ANS_FLOAT:
fprintf (Gbl.F.Out,"([%lg; %lg])",
ClassStem,Gbl.Test.Answer.FloatingPoint[0],Gbl.Test.Answer.FloatingPoint[1]);
break;
case Tst_ANS_TRUE_FALSE:
fprintf (Gbl.F.Out,"(",ClassStem);
Tst_WriteAnsTF (Gbl.Test.Answer.TF);
fprintf (Gbl.F.Out,")");
break;
case Tst_ANS_UNIQUE_CHOICE:
case Tst_ANS_MULTIPLE_CHOICE:
case Tst_ANS_TEXT:
fprintf (Gbl.F.Out,"");
for (NumOpt = 0;
NumOpt < Gbl.Test.Answer.NumOptions;
NumOpt++)
{
/* Convert the answer, that is in HTML, to rigorous HTML */
AnswerTextLength = strlen (Gbl.Test.Answer.Options[NumOpt].Text) *
Str_MAX_BYTES_PER_CHAR;
if ((AnswerText = (char *) malloc (AnswerTextLength + 1)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory to store answer.");
Str_Copy (AnswerText,Gbl.Test.Answer.Options[NumOpt].Text,
AnswerTextLength);
Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML,
AnswerText,AnswerTextLength,false);
/* Convert the feedback, that is in HTML, to rigorous HTML */
AnswerFeedbackLength = 0;
AnswerFeedback = NULL;
if (Gbl.Test.Answer.Options[NumOpt].Feedback)
if (Gbl.Test.Answer.Options[NumOpt].Feedback[0])
{
AnswerFeedbackLength = strlen (Gbl.Test.Answer.Options[NumOpt].Feedback) *
Str_MAX_BYTES_PER_CHAR;
if ((AnswerFeedback = (char *) malloc (AnswerFeedbackLength + 1)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory to store feedback.");
Str_Copy (AnswerFeedback,
Gbl.Test.Answer.Options[NumOpt].Feedback,
AnswerFeedbackLength);
Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML,
AnswerFeedback,AnswerFeedbackLength,false);
}
/* Put an icon that indicates whether the answer is correct or wrong */
fprintf (Gbl.F.Out,""
"",Gbl.RowEvenOdd);
if (Gbl.Test.Answer.Options[NumOpt].Correct)
fprintf (Gbl.F.Out,"",
Gbl.Prefs.IconsURL,
QuestionExists ? "ok_off" :
"ok_on",
Txt_TEST_Correct_answer,
Txt_TEST_Correct_answer);
fprintf (Gbl.F.Out," | ");
/* Write the number of option */
fprintf (Gbl.F.Out,""
"%c) "
" | ",
ClassData,'a' + (char) NumOpt);
/* Write the text and the feedback of the answer */
fprintf (Gbl.F.Out,""
" "
"%s"
" ",
ClassStem,AnswerText);
if (AnswerFeedbackLength)
fprintf (Gbl.F.Out,""
"%s"
" ",
AnswerFeedback);
fprintf (Gbl.F.Out," | "
" ");
/* Free memory allocated for the answer and the feedback */
free ((void *) AnswerText);
if (AnswerFeedbackLength)
free ((void *) AnswerFeedback);
}
fprintf (Gbl.F.Out," ");
break;
default:
break;
}
fprintf (Gbl.F.Out," | "
"
");
}