Version 16.251.2

This commit is contained in:
Antonio Cañas Vargas 2017-07-16 20:50:01 +02:00
parent de4185ba70
commit 979ecb9e9b
6 changed files with 229 additions and 25 deletions

View File

@ -504,6 +504,7 @@ Assessment:
NEW. ActShoGam Show game NEW. ActShoGam Show game
NEW. ActEdiOneGamQst Edit a new question for a game NEW. ActEdiOneGamQst Edit a new question for a game
NEW. ActGamLstTstQst List test questions to select one or several questions NEW. ActGamLstTstQst List test questions to select one or several questions
NEW. ActAddTstQstToGam Add selected test questions to game
NEW. ActRcvGamQst Receive a question of a game NEW. ActRcvGamQst Receive a question of a game
NEW. ActReqRemGamQst Request the removal of a question of a game NEW. ActReqRemGamQst Request the removal of a question of a game
NEW. ActRemGamQst Confirm the removal of a question of a game NEW. ActRemGamQst Confirm the removal of a question of a game
@ -1981,6 +1982,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
/* ActShoGam */{1661,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_UnhideGame ,NULL}, /* ActShoGam */{1661,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_UnhideGame ,NULL},
/* ActEdiOneGamQst */{1662,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_RequestEditQuestion ,NULL}, /* ActEdiOneGamQst */{1662,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_RequestEditQuestion ,NULL},
/* ActGamLstTstQst */{1666,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Tst_ListQuestionsToSelect ,NULL}, /* ActGamLstTstQst */{1666,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Tst_ListQuestionsToSelect ,NULL},
/* ActAddTstQstToGam */{1667,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_AddTstQuestionsToGame ,NULL},
/* ActRcvGamQst */{1663,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_ReceiveQst ,NULL}, /* ActRcvGamQst */{1663,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_ReceiveQst ,NULL},
/* ActReqRemGamQst */{1664,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_RequestRemoveQst ,NULL}, /* ActReqRemGamQst */{1664,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_RequestRemoveQst ,NULL},
/* ActRemGamQst */{1665,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_RemoveQst ,NULL}, /* ActRemGamQst */{1665,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_RemoveQst ,NULL},
@ -4710,6 +4712,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
ActReqRemGamQst, // #1664 ActReqRemGamQst, // #1664
ActRemGamQst, // #1665 ActRemGamQst, // #1665
ActGamLstTstQst, // #1666 ActGamLstTstQst, // #1666
ActAddTstQstToGam, // #1667
}; };
/*****************************************************************************/ /*****************************************************************************/

View File

@ -57,9 +57,9 @@ typedef enum
typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
#define Act_NUM_ACTIONS (1 + 9 + 43 + 17 + 47 + 33 + 24 + 115 + 90 + 416 + 165 + 172 + 42 + 14 + 97) #define Act_NUM_ACTIONS (1 + 9 + 43 + 17 + 47 + 33 + 24 + 115 + 91 + 416 + 165 + 172 + 42 + 14 + 97)
#define Act_MAX_ACTION_COD 1666 #define Act_MAX_ACTION_COD 1667
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 12 #define Act_MAX_OPTIONS_IN_MENU_PER_TAB 12
@ -516,19 +516,20 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
#define ActShoGam (ActChgCalCrs1stDay + 76) #define ActShoGam (ActChgCalCrs1stDay + 76)
#define ActEdiOneGamQst (ActChgCalCrs1stDay + 77) #define ActEdiOneGamQst (ActChgCalCrs1stDay + 77)
#define ActGamLstTstQst (ActChgCalCrs1stDay + 78) #define ActGamLstTstQst (ActChgCalCrs1stDay + 78)
#define ActRcvGamQst (ActChgCalCrs1stDay + 79) #define ActAddTstQstToGam (ActChgCalCrs1stDay + 79)
#define ActReqRemGamQst (ActChgCalCrs1stDay + 80) #define ActRcvGamQst (ActChgCalCrs1stDay + 80)
#define ActRemGamQst (ActChgCalCrs1stDay + 81) #define ActReqRemGamQst (ActChgCalCrs1stDay + 81)
#define ActRemGamQst (ActChgCalCrs1stDay + 82)
#define ActSeeOneExaAnn (ActChgCalCrs1stDay + 82) #define ActSeeOneExaAnn (ActChgCalCrs1stDay + 83)
#define ActSeeDatExaAnn (ActChgCalCrs1stDay + 83) #define ActSeeDatExaAnn (ActChgCalCrs1stDay + 84)
#define ActEdiExaAnn (ActChgCalCrs1stDay + 84) #define ActEdiExaAnn (ActChgCalCrs1stDay + 85)
#define ActRcvExaAnn (ActChgCalCrs1stDay + 85) #define ActRcvExaAnn (ActChgCalCrs1stDay + 86)
#define ActPrnExaAnn (ActChgCalCrs1stDay + 86) #define ActPrnExaAnn (ActChgCalCrs1stDay + 87)
#define ActReqRemExaAnn (ActChgCalCrs1stDay + 87) #define ActReqRemExaAnn (ActChgCalCrs1stDay + 88)
#define ActRemExaAnn (ActChgCalCrs1stDay + 88) #define ActRemExaAnn (ActChgCalCrs1stDay + 89)
#define ActHidExaAnn (ActChgCalCrs1stDay + 89) #define ActHidExaAnn (ActChgCalCrs1stDay + 90)
#define ActShoExaAnn (ActChgCalCrs1stDay + 90) #define ActShoExaAnn (ActChgCalCrs1stDay + 91)
/*****************************************************************************/ /*****************************************************************************/
/******************************** Files tab **********************************/ /******************************** Files tab **********************************/

View File

@ -236,13 +236,17 @@
/****************************** Public constants *****************************/ /****************************** Public constants *****************************/
/*****************************************************************************/ /*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 16.251.1 (2017-07-16)" #define Log_PLATFORM_VERSION "SWAD 16.251.2 (2017-07-16)"
#define CSS_FILE "swad16.235.1.css" #define CSS_FILE "swad16.235.1.css"
#define JS_FILE "swad16.206.3.js" #define JS_FILE "swad16.206.3.js"
// Number of lines (includes comments but not blank lines) has been got with the following command: // Number of lines (includes comments but not blank lines) has been got with the following command:
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1 // nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1
/* /*
Version 16.251.2: Jul 16, 2017 Listing games for remote control. Not finished. (227062 lines)
1 change necessary in database:
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1667','es','N','Añadir tests a juego');
Version 16.251.1: Jul 16, 2017 Listing games for remote control. Not finished. (226888 lines) Version 16.251.1: Jul 16, 2017 Listing games for remote control. Not finished. (226888 lines)
Version 16.251: Jul 16, 2017 Listing games for remote control. Not finished. (226867 lines) Version 16.251: Jul 16, 2017 Listing games for remote control. Not finished. (226867 lines)
19 changes necessary in database: 19 changes necessary in database:

View File

@ -3140,6 +3140,15 @@ static void Rmt_PutButtonToAddNewQuestions (void)
Act_FormEnd (); Act_FormEnd ();
} }
/*****************************************************************************/
/******************** Add selected test questions to game ********************/
/*****************************************************************************/
void Rmt_AddTstQuestionsToGame (void)
{
Ale_ShowAlert (Ale_WARNING,"Under development...."); // TODO: Write this function
}
/*****************************************************************************/ /*****************************************************************************/
/****************** Write the heading of a game question *******************/ /****************** Write the heading of a game question *******************/
/*****************************************************************************/ /*****************************************************************************/

View File

@ -113,6 +113,8 @@ void Rmt_RemoveGames (Sco_Scope_t Scope,long Cod);
void Rmt_RequestEditQuestion (void); void Rmt_RequestEditQuestion (void);
void Rmt_ReceiveQst (void); void Rmt_ReceiveQst (void);
void Rmt_AddTstQuestionsToGame (void);
void Rmt_RequestRemoveQst (void); void Rmt_RequestRemoveQst (void);
void Rmt_RemoveQst (void); void Rmt_RemoveQst (void);

View File

@ -194,7 +194,8 @@ static unsigned long Tst_GetQuestions (MYSQL_RES **mysql_res);
static unsigned long Tst_GetQuestionsForTest (MYSQL_RES **mysql_res); static unsigned long Tst_GetQuestionsForTest (MYSQL_RES **mysql_res);
static void Tst_ListOneQstToEdit (void); static void Tst_ListOneQstToEdit (void);
static bool Tst_GetOneQuestionByCod (long QstCod,MYSQL_RES **mysql_res); static bool Tst_GetOneQuestionByCod (long QstCod,MYSQL_RES **mysql_res);
static void Tst_ListOneOrMoreQuestions (unsigned long NumRows,MYSQL_RES *mysql_res); static void Tst_ListOneOrMoreQuestionsForEdition (unsigned long NumRows,MYSQL_RES *mysql_res);
static void Tst_ListOneOrMoreQuestionsForSelection (unsigned long NumRows,MYSQL_RES *mysql_res);
static void Tst_WriteAnswersOfAQstEdit (long QstCod); static void Tst_WriteAnswersOfAQstEdit (long QstCod);
static void Tst_WriteAnswersOfAQstViewTest (unsigned NumQst,long QstCod,bool Shuffle); static void Tst_WriteAnswersOfAQstViewTest (unsigned NumQst,long QstCod,bool Shuffle);
@ -2598,7 +2599,7 @@ void Tst_ListQuestionsToEdit (void)
fprintf (Gbl.F.Out,"</div>"); fprintf (Gbl.F.Out,"</div>");
/* Show the table with the questions */ /* Show the table with the questions */
Tst_ListOneOrMoreQuestions (NumRows,mysql_res); Tst_ListOneOrMoreQuestionsForEdition (NumRows,mysql_res);
} }
/***** Free structure that stores the query result *****/ /***** Free structure that stores the query result *****/
@ -2631,7 +2632,7 @@ void Tst_ListQuestionsToSelect (void)
{ {
if ((NumRows = Tst_GetQuestions (&mysql_res)) != 0) // Query database if ((NumRows = Tst_GetQuestions (&mysql_res)) != 0) // Query database
/* Show the table with the questions */ /* Show the table with the questions */
Tst_ListOneOrMoreQuestions (NumRows,mysql_res); Tst_ListOneOrMoreQuestionsForSelection (NumRows,mysql_res);
/***** Free structure that stores the query result *****/ /***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res); DB_FreeMySQLResult (&mysql_res);
@ -2951,7 +2952,7 @@ static void Tst_ListOneQstToEdit (void)
/***** Query database *****/ /***** Query database *****/
if (Tst_GetOneQuestionByCod (Gbl.Test.QstCod,&mysql_res)) if (Tst_GetOneQuestionByCod (Gbl.Test.QstCod,&mysql_res))
/***** Show the question ready to edit it *****/ /***** Show the question ready to edit it *****/
Tst_ListOneOrMoreQuestions (1,mysql_res); Tst_ListOneOrMoreQuestionsForEdition (1,mysql_res);
else else
Lay_ShowErrorAndExit ("Can not get question."); Lay_ShowErrorAndExit ("Can not get question.");
@ -2997,7 +2998,7 @@ static bool Tst_GetOneQuestionByCod (long QstCod,MYSQL_RES **mysql_res)
/****************** List for edition one or more test questions **************/ /****************** List for edition one or more test questions **************/
/*****************************************************************************/ /*****************************************************************************/
static void Tst_ListOneOrMoreQuestions (unsigned long NumRows,MYSQL_RES *mysql_res) static void Tst_ListOneOrMoreQuestionsForEdition (unsigned long NumRows,MYSQL_RES *mysql_res)
{ {
extern const char *Hlp_ASSESSMENT_Tests; extern const char *Hlp_ASSESSMENT_Tests;
extern const char *Txt_Questions; extern const char *Txt_Questions;
@ -3023,12 +3024,12 @@ static void Tst_ListOneOrMoreQuestions (unsigned long NumRows,MYSQL_RES *mysql_r
/***** Start box *****/ /***** Start box *****/
Box_StartBox (NULL,Txt_Questions,Tst_PutIconsTests, Box_StartBox (NULL,Txt_Questions,Tst_PutIconsTests,
Hlp_ASSESSMENT_Tests,Box_NOT_CLOSABLE); Hlp_ASSESSMENT_Tests,Box_NOT_CLOSABLE);
/***** Write the heading *****/ /***** Write the heading *****/
Tbl_StartTableWideMargin (2); Tbl_StartTableWideMargin (2);
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>"
"<th colspan=\"2\"></th>" "<th></th>"
"<th class=\"CENTER_TOP\">" "<th class=\"CENTER_TOP\">"
"%s" "%s"
"</th>" "</th>"
@ -3114,9 +3115,11 @@ static void Tst_ListOneOrMoreQuestions (unsigned long NumRows,MYSQL_RES *mysql_r
if ((Gbl.Test.QstCod = Str_ConvertStrCodToLongCod (row[0])) < 0) if ((Gbl.Test.QstCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
Lay_ShowErrorAndExit ("Wrong code of question."); Lay_ShowErrorAndExit ("Wrong code of question.");
/* Write icon to remove the question */ /***** Icons *****/
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>"
"<td class=\"BT%u\">",Gbl.RowEvenOdd); "<td class=\"BT%u\">",Gbl.RowEvenOdd);
/* Write icon to remove the question */
Act_FormStart (ActReqRemTstQst); Act_FormStart (ActReqRemTstQst);
Tst_PutParamQstCod (); Tst_PutParamQstCod ();
if (NumRows == 1) if (NumRows == 1)
@ -3125,10 +3128,8 @@ static void Tst_ListOneOrMoreQuestions (unsigned long NumRows,MYSQL_RES *mysql_r
Tst_WriteParamEditQst (); Tst_WriteParamEditQst ();
Ico_PutIconRemove (); Ico_PutIconRemove ();
Act_FormEnd (); Act_FormEnd ();
fprintf (Gbl.F.Out,"</td>");
/* Write icon to edit the question */ /* Write icon to edit the question */
fprintf (Gbl.F.Out,"<td class=\"BT%u\">",Gbl.RowEvenOdd);
Act_FormStart (ActEdiOneTstQst); Act_FormStart (ActEdiOneTstQst);
Tst_PutParamQstCod (); Tst_PutParamQstCod ();
fprintf (Gbl.F.Out,"<input type=\"image\" src=\"%s/edit64x64.png\"" fprintf (Gbl.F.Out,"<input type=\"image\" src=\"%s/edit64x64.png\""
@ -3138,6 +3139,7 @@ static void Tst_ListOneOrMoreQuestions (unsigned long NumRows,MYSQL_RES *mysql_r
Txt_Edit_question, Txt_Edit_question,
Txt_Edit_question); Txt_Edit_question);
Act_FormEnd (); Act_FormEnd ();
fprintf (Gbl.F.Out,"</td>"); fprintf (Gbl.F.Out,"</td>");
/* Write number of question */ /* Write number of question */
@ -3280,6 +3282,189 @@ static void Tst_ListOneOrMoreQuestions (unsigned long NumRows,MYSQL_RES *mysql_r
Box_EndBox (); Box_EndBox ();
} }
/*****************************************************************************/
/****************** List for edition one or more test questions **************/
/*****************************************************************************/
static void Tst_ListOneOrMoreQuestionsForSelection (unsigned long NumRows,MYSQL_RES *mysql_res)
{
extern const char *Hlp_ASSESSMENT_Tests;
extern const char *Txt_Questions;
extern const char *Txt_No_INDEX;
extern const char *Txt_Code;
extern const char *Txt_Date;
extern const char *Txt_Tags;
extern const char *Txt_Type;
extern const char *Txt_TST_STR_ANSWER_TYPES[Tst_NUM_ANS_TYPES];
extern const char *Txt_Shuffle;
extern const char *Txt_Question;
extern const char *Txt_Today;
extern const char *Txt_Add_questions;
unsigned long NumRow;
MYSQL_ROW row;
unsigned UniqueId;
time_t TimeUTC;
/***** Start box *****/
Box_StartBox (NULL,Txt_Questions,NULL,
Hlp_ASSESSMENT_Tests,Box_NOT_CLOSABLE);
/***** Start form *****/
Act_FormStart (ActAddTstQstToGam);
/***** Write the heading *****/
Tbl_StartTableWideMargin (2);
fprintf (Gbl.F.Out,"<tr>"
"<th></th>"
"<th class=\"CENTER_TOP\">"
"%s"
"</th>"
"<th class=\"CENTER_TOP\">"
"%s"
"</th>"
"<th class=\"CENTER_TOP\">"
"%s"
"</th>"
"<th class=\"LEFT_TOP\">"
"%s"
"</th>"
"<th class=\"CENTER_TOP\">"
"%s"
"</th>"
"<th class=\"CENTER_TOP\">"
"%s"
"</th>"
"<th class=\"CENTER_TOP\">"
"%s"
"</th>"
"</tr>",
Txt_No_INDEX,
Txt_Code,
Txt_Date,
Txt_Tags,
Txt_Type,
Txt_Shuffle,
Txt_Question);
/***** Write rows *****/
for (NumRow = 0, UniqueId = 1;
NumRow < NumRows;
NumRow++, UniqueId++)
{
Gbl.RowEvenOdd = NumRow % 2;
row = mysql_fetch_row (mysql_res);
/*
row[ 0] QstCod
row[ 1] UNIX_TIMESTAMP(EditTime)
row[ 2] AnsType
row[ 3] Shuffle
row[ 4] Stem
row[ 5] Feedback
row[ 6] ImageName
row[ 7] ImageTitle
row[ 8] ImageURL
row[ 9] NumHits
row[10] NumHitsNotBlank
row[11] Score
*/
/***** Create test question *****/
Tst_QstConstructor ();
/* row[0] holds the code of the question */
if ((Gbl.Test.QstCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
Lay_ShowErrorAndExit ("Wrong code of question.");
/***** Icons *****/
fprintf (Gbl.F.Out,"<tr>"
"<td class=\"BT%u\">",Gbl.RowEvenOdd);
/* Write checkbox to select the question */
fprintf (Gbl.F.Out,"<input type=\"checkbox\" name=\"QstCods\""
" value=\"%ld\" />",
Gbl.Test.QstCod);
/* Write number of question */
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">"
"%lu&nbsp;"
"</td>",
Gbl.RowEvenOdd,NumRow + 1);
/* Write question code */
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">"
"%ld&nbsp;"
"</td>",
Gbl.RowEvenOdd,Gbl.Test.QstCod);
/* Write the date (row[1] has the UTC date-time) */
TimeUTC = Dat_GetUNIXTimeFromStr (row[1]);
fprintf (Gbl.F.Out,"<td id=\"tst_date_%u\""
" class=\"DAT_SMALL CENTER_TOP COLOR%u\">"
"<script type=\"text/javascript\">"
"writeLocalDateHMSFromUTC('tst_date_%u',%ld,"
"%u,'<br />','%s',true,false,0x7);"
"</script>"
"</td>",
UniqueId,Gbl.RowEvenOdd,
UniqueId,(long) TimeUTC,
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
/* Write the question tags */
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP COLOR%u\">",
Gbl.RowEvenOdd);
Tst_GetAndWriteTagsQst (Gbl.Test.QstCod);
fprintf (Gbl.F.Out,"</td>");
/* Write the question type (row[2]) */
Gbl.Test.AnswerType = Tst_ConvertFromStrAnsTypDBToAnsTyp (row[2]);
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">"
"%s&nbsp;"
"</td>",
Gbl.RowEvenOdd,
Txt_TST_STR_ANSWER_TYPES[Gbl.Test.AnswerType]);
/* Write if shuffle is enabled (row[3]) */
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">",
Gbl.RowEvenOdd);
fprintf (Gbl.F.Out,"<input type=\"checkbox\" name=\"Shuffle\" value=\"Y\"");
if (row[3][0] == 'Y')
fprintf (Gbl.F.Out," checked=\"checked\"");
fprintf (Gbl.F.Out," disabled=\"disabled\" />");
fprintf (Gbl.F.Out,"</td>");
/* Write the stem (row[4]), the image (row[6], row[7], row[8]),
the feedback (row[5]) and the answers */
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP COLOR%u\">",
Gbl.RowEvenOdd);
Tst_WriteQstStem (row[4],"TEST_EDI");
Img_GetImageNameTitleAndURLFromRow (row[6],row[7],row[8],&Gbl.Test.Image);
Img_ShowImage (&Gbl.Test.Image,
"TEST_IMG_EDIT_LIST_STEM_CONTAINER",
"TEST_IMG_EDIT_LIST_STEM");
Tst_WriteQstFeedback (row[5],"TEST_EDI_LIGHT");
Tst_WriteAnswersOfAQstEdit (Gbl.Test.QstCod);
fprintf (Gbl.F.Out,"</td>"
"</tr>");
/***** Destroy test question *****/
Tst_QstDestructor ();
}
/***** End table *****/
Tbl_EndTable ();
/***** Button to add questions *****/
Btn_PutConfirmButton (Txt_Add_questions);
/***** End form *****/
Act_FormEnd ();
/***** End box *****/
Box_EndBox ();
}
/*****************************************************************************/ /*****************************************************************************/
/*********** Write hidden parameters for edition of test questions ***********/ /*********** Write hidden parameters for edition of test questions ***********/
/*****************************************************************************/ /*****************************************************************************/