"
"%s",row[1]);
}
/* If it's a new tag received from the form */
- if (TagNotFound && Gbl.Test.TagText[NumTag][0])
+ if (TagNotFound && Gbl.Test.Tags.Txt[NumTag][0])
fprintf (Gbl.F.Out,"",
- Gbl.Test.TagText[NumTag],Gbl.Test.TagText[NumTag]);
+ Gbl.Test.Tags.Txt[NumTag],Gbl.Test.Tags.Txt[NumTag]);
fprintf (Gbl.F.Out,""
""
"
",
@@ -4475,7 +4469,7 @@ static void Tst_PutFormEditOneQst (char *Stem,char *Feedback)
" class=\"TAG_TXT\" maxlength=\"%u\" value=\"%s\""
" onchange=\"changeSelTag('%u')\" />"
"",
- NumTag,NumTag,Tst_MAX_TAG_LENGTH,Gbl.Test.TagText[NumTag],NumTag);
+ NumTag,NumTag,Tst_MAX_TAG_LENGTH,Gbl.Test.Tags.Txt[NumTag],NumTag);
fprintf (Gbl.F.Out,"");
}
@@ -4733,15 +4727,8 @@ static void Tst_PutFormEditOneQst (char *Stem,char *Feedback)
void Tst_QstConstructor (void)
{
unsigned NumOpt;
- unsigned NumTag;
Gbl.Test.QstCod = -1L;
- for (NumTag = 0;
- NumTag < Tst_MAX_TAGS_PER_QUESTION;
- NumTag++)
- Gbl.Test.TagText[NumTag][0] = '\0';
- Gbl.Test.NumTags = 0;
- Gbl.Test.TagsList = NULL;
Gbl.Test.Stem.Text = NULL;
Gbl.Test.Stem.Length = 0;
Gbl.Test.Feedback.Text = NULL;
@@ -4933,8 +4920,8 @@ static void Tst_GetQstDataFromDB (char *Stem,char *Feedback)
NumRow++)
{
row = mysql_fetch_row (mysql_res);
- strncpy (Gbl.Test.TagText[NumRow],row[0],Tst_MAX_BYTES_TAG);
- Gbl.Test.TagText[NumRow][Tst_MAX_BYTES_TAG] = '\0';
+ strncpy (Gbl.Test.Tags.Txt[NumRow],row[0],Tst_MAX_BYTES_TAG);
+ Gbl.Test.Tags.Txt[NumRow][Tst_MAX_BYTES_TAG] = '\0';
}
/* Free structure that stores the query result */
@@ -5148,19 +5135,19 @@ static void Tst_GetQstFromForm (char *Stem,char *Feedback)
NumTag++)
{
sprintf (TagStr,"TagTxt%u",NumTag);
- Par_GetParToText (TagStr,Gbl.Test.TagText[NumTag],Tst_MAX_BYTES_TAG);
+ Par_GetParToText (TagStr,Gbl.Test.Tags.Txt[NumTag],Tst_MAX_BYTES_TAG);
- if (Gbl.Test.TagText[NumTag][0])
+ if (Gbl.Test.Tags.Txt[NumTag][0])
{
Str_ChangeFormat (Str_FROM_FORM,Str_TO_TEXT,
- Gbl.Test.TagText[NumTag],Tst_MAX_BYTES_TAG,true);
+ Gbl.Test.Tags.Txt[NumTag],Tst_MAX_BYTES_TAG,true);
/* Check if not repeated */
for (NumTagRead = 0;
NumTagRead < NumTag;
NumTagRead++)
- if (!strcmp (Gbl.Test.TagText[NumTagRead],Gbl.Test.TagText[NumTag]))
+ if (!strcmp (Gbl.Test.Tags.Txt[NumTagRead],Gbl.Test.Tags.Txt[NumTag]))
{
- Gbl.Test.TagText[NumTag][0] = '\0';
+ Gbl.Test.Tags.Txt[NumTag][0] = '\0';
break;
}
}
@@ -5282,11 +5269,11 @@ static void Tst_GetQstFromForm (char *Stem,char *Feedback)
}
/***** Adjust global variables related to this test question *****/
- for (NumTag = 0, Gbl.Test.NumTags = 0;
+ for (NumTag = 0, Gbl.Test.Tags.Num = 0;
NumTag < Tst_MAX_TAGS_PER_QUESTION;
NumTag++)
- if (Gbl.Test.TagText[NumTag][0])
- Gbl.Test.NumTags++;
+ if (Gbl.Test.Tags.Txt[NumTag][0])
+ Gbl.Test.Tags.Num++;
Gbl.Test.Stem.Text = Stem;
Gbl.Test.Stem.Length = strlen (Gbl.Test.Stem.Text);
Gbl.Test.Feedback.Text = Feedback;
@@ -5330,7 +5317,7 @@ bool Tst_CheckIfQstFormatIsCorrectAndCountNumOptions (void)
Gbl.Test.Answer.NumOptions = 0;
/***** A question must have at least one tag *****/
- if (!Gbl.Test.NumTags) // There are no tags with text
+ if (!Gbl.Test.Tags.Num) // There are no tags with text
{
Lay_ShowAlert (Lay_WARNING,Txt_You_must_type_at_least_one_tag_for_the_question);
return false;
@@ -5942,14 +5929,14 @@ static void Tst_InsertTagsIntoDB (void)
/***** For each tag... *****/
for (NumTag = 0, TagIdx = 0;
- TagIdx < Gbl.Test.NumTags;
+ TagIdx < Gbl.Test.Tags.Num;
NumTag++)
- if (Gbl.Test.TagText[NumTag][0])
+ if (Gbl.Test.Tags.Txt[NumTag][0])
{
/***** Check if this tag exists for current course *****/
- if ((TagCod = Tst_GetTagCodFromTagTxt (Gbl.Test.TagText[NumTag])) < 0)
+ if ((TagCod = Tst_GetTagCodFromTagTxt (Gbl.Test.Tags.Txt[NumTag])) < 0)
/* This tag is new for current course. Add it to tags table */
- TagCod = Tst_CreateNewTag (Gbl.CurrentCrs.Crs.CrsCod,Gbl.Test.TagText[NumTag]);
+ TagCod = Tst_CreateNewTag (Gbl.CurrentCrs.Crs.CrsCod,Gbl.Test.Tags.Txt[NumTag]);
/***** Insert tag in tst_question_tags *****/
sprintf (Query,"INSERT INTO tst_question_tags (QstCod,TagCod,TagInd)"
diff --git a/swad_test_import.c b/swad_test_import.c
index d0d350dc..98fb0c64 100644
--- a/swad_test_import.c
+++ b/swad_test_import.c
@@ -551,22 +551,21 @@ static void TsI_ImportQuestionsFromXMLBuffer (const char *XMLBuffer)
Lay_ShowErrorAndExit ("Wrong type of answer.");
/* Get tags */
- Gbl.Test.NumTags = 0;
- for (TagsElem = QuestionElem->FirstChild;
+ for (TagsElem = QuestionElem->FirstChild, Gbl.Test.Tags.Num = 0;
TagsElem != NULL;
TagsElem = TagsElem->NextBrother)
if (!strcmp (TagsElem->TagName,"tags"))
{
for (TagElem = TagsElem->FirstChild;
- TagElem != NULL && Gbl.Test.NumTags < Tst_MAX_TAGS_PER_QUESTION;
+ TagElem != NULL && Gbl.Test.Tags.Num < Tst_MAX_TAGS_PER_QUESTION;
TagElem = TagElem->NextBrother)
if (!strcmp (TagElem->TagName,"tag"))
{
if (TagElem->Content)
{
- strncpy (Gbl.Test.TagText[Gbl.Test.NumTags],TagElem->Content,Tst_MAX_BYTES_TAG);
- Gbl.Test.TagText[Gbl.Test.NumTags][Tst_MAX_BYTES_TAG] = '\0';
- Gbl.Test.NumTags++;
+ strncpy (Gbl.Test.Tags.Txt[Gbl.Test.Tags.Num],TagElem->Content,Tst_MAX_BYTES_TAG);
+ Gbl.Test.Tags.Txt[Gbl.Test.Tags.Num][Tst_MAX_BYTES_TAG] = '\0';
+ Gbl.Test.Tags.Num++;
}
}
break; // Only first element "tags"
@@ -1051,12 +1050,12 @@ static void TsI_WriteRowImportedQst (struct XMLElement *StemElem,
/***** Write the question tags *****/
fprintf (Gbl.F.Out,"
",
Gbl.RowEvenOdd);
- if (Gbl.Test.NumTags)
+ if (Gbl.Test.Tags.Num)
{
/***** Write the tags *****/
fprintf (Gbl.F.Out,"