diff --git a/swad_API.c b/swad_API.c index c96984158..4939073b9 100644 --- a/swad_API.c +++ b/swad_API.c @@ -4303,10 +4303,10 @@ static int API_GetTstQuestions (struct soap *soap, /* Get answer type (row[1]) */ AnswerType = Qst_ConvertFromStrAnsTypDBToAnsTyp (row[1]); getTestsOut->questionsArray.__ptr[NumRow].answerType = - soap_malloc (soap,Tst_MAX_BYTES_ANSWER_TYPE + 1); + soap_malloc (soap,Qst_MAX_BYTES_ANSWER_TYPE + 1); Str_Copy (getTestsOut->questionsArray.__ptr[NumRow].answerType, Tst_StrAnswerTypesXML[AnswerType], - Tst_MAX_BYTES_ANSWER_TYPE); + Qst_MAX_BYTES_ANSWER_TYPE); /* Get shuffle (row[2]) */ getTestsOut->questionsArray.__ptr[NumRow].shuffle = (row[2][0] == 'Y') ? 1 : @@ -4651,9 +4651,9 @@ int swad__getTrivialQuestion (struct soap *soap, /* Get answer type (row[1]) */ AnswerType = Qst_ConvertFromStrAnsTypDBToAnsTyp (row[1]); getTrivialQuestionOut->question.answerType = - soap_malloc (soap,Tst_MAX_BYTES_ANSWER_TYPE + 1); + soap_malloc (soap,Qst_MAX_BYTES_ANSWER_TYPE + 1); Str_Copy (getTrivialQuestionOut->question.answerType, - Tst_StrAnswerTypesXML[AnswerType],Tst_MAX_BYTES_ANSWER_TYPE); + Tst_StrAnswerTypesXML[AnswerType],Qst_MAX_BYTES_ANSWER_TYPE); /* Get shuffle (row[2]) */ getTrivialQuestionOut->question.shuffle = (row[2][0] == 'Y') ? 1 : diff --git a/swad_changelog.h b/swad_changelog.h index 719e7cdd9..ce945ed1a 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -602,13 +602,14 @@ TODO: FIX BUG, URGENT! En las fechas como par TODO: En las encuestas, que los estudiantes no puedan ver los resultados hasta que no finalice el plazo. */ -#define Log_PLATFORM_VERSION "SWAD 21.42.1 (2021-10-25)" +#define Log_PLATFORM_VERSION "SWAD 21.42.2 (2021-10-25)" #define CSS_FILE "swad20.45.css" #define JS_FILE "swad20.69.1.js" /* TODO: Rename CENTRE to CENTER in help wiki. TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams + Version 21.42.2: Oct 25, 2021 Code refactoring in test questions. (320795 lines) Version 21.42.1: Oct 25, 2021 Code refactoring in test questions. (320784 lines) Version 21.42: Oct 24, 2021 Code refactoring in test questions. (320782 lines) Version 21.41.2: Oct 24, 2021 Query moved to module swad_setting_database. (320777 lines) diff --git a/swad_course.c b/swad_course.c index cb6706679..85d315ceb 100644 --- a/swad_course.c +++ b/swad_course.c @@ -1841,6 +1841,9 @@ static void Crs_EmptyCourseCompletely (long CrsCod) /***** Remove all tests in the course *****/ Tst_RemoveCrsTests (CrsCod); + /***** Remove all questions in the course *****/ + Qst_RemoveCrsQsts (CrsCod); + /***** Remove groups in the course *****/ Grp_DB_RemoveCrsGrps (CrsCod); diff --git a/swad_exam_database.h b/swad_exam_database.h index 644436d7a..af68e06fb 100644 --- a/swad_exam_database.h +++ b/swad_exam_database.h @@ -31,7 +31,7 @@ #include "swad_exam_print.h" #include "swad_exam_session.h" #include "swad_exam_set.h" -#include "swad_test_type.h" +#include "swad_question_type.h" /*****************************************************************************/ /************************* Public types and constants ************************/ diff --git a/swad_exam_set.h b/swad_exam_set.h index 671766520..0897a03f6 100644 --- a/swad_exam_set.h +++ b/swad_exam_set.h @@ -29,7 +29,7 @@ /*****************************************************************************/ #include "swad_exam_type.h" -#include "swad_test_type.h" +#include "swad_question_type.h" /*****************************************************************************/ /************************** Public types and constants ***********************/ diff --git a/swad_test_type.h b/swad_question_type.h similarity index 93% rename from swad_test_type.h rename to swad_question_type.h index 49b6f3a7d..e1b7d0c83 100644 --- a/swad_test_type.h +++ b/swad_question_type.h @@ -1,7 +1,7 @@ -// swad_test_type.h: definition of types for tests +// swad_question_type.h: definition of types for questions -#ifndef _SWAD_TST_TYP -#define _SWAD_TST_TYP +#ifndef _SWAD_QST_TYP +#define _SWAD_QST_TYP /* SWAD (Shared Workspace At a Distance in Spanish), is a web platform developed at the University of Granada (Spain), @@ -43,8 +43,6 @@ #define Qst_MAX_CHARS_ANSWERS_ONE_QST (128 - 1) // 127 #define Qst_MAX_BYTES_ANSWERS_ONE_QST ((Qst_MAX_CHARS_ANSWERS_ONE_QST + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047 -#define Tst_SCORE_MAX 10 // Maximum score of a test (10 in Spain). Must be unsigned! // TODO: Make this configurable by teachers - /*****************************************************************************/ /******************************* Public types ********************************/ /*****************************************************************************/ diff --git a/swad_test.c b/swad_test.c index 9e19cdd3c..e417de19d 100644 --- a/swad_test.c +++ b/swad_test.c @@ -66,7 +66,7 @@ /***************************** Public constants ******************************/ /*****************************************************************************/ -// strings are limited to Tst_MAX_BYTES_ANSWER_TYPE characters +// strings are limited to Qst_MAX_BYTES_ANSWER_TYPE characters const char *Tst_StrAnswerTypesXML[Qst_NUM_ANS_TYPES] = { [Qst_ANS_INT ] = "int", @@ -148,7 +148,7 @@ static void Tst_ShowFormConfigTst (void); static void Tst_PutInputFieldNumQst (const char *Field,const char *Label, unsigned Value); -static void Tst_ShowFormAnswerTypes (const struct Tst_AnswerTypes *AnswerTypes); +static void Tst_ShowFormAnswerTypes (const struct Qst_AnswerTypes *AnswerTypes); static void Qst_GetQuestions (struct Tst_Test *Test,MYSQL_RES **mysql_res); static void Tst_GetQuestionsForNewTestFromDB (struct Tst_Test *Test, struct TstPrn_Print *Print); @@ -192,7 +192,7 @@ static bool Tst_GetParamsTst (struct Tst_Test *Test, static unsigned Tst_GetParamNumTst (void); static unsigned Tst_GetParamNumQsts (void); static unsigned Tst_CountNumTagsInList (const struct Tag_Tags *Tags); -static int Tst_CountNumAnswerTypesInList (const struct Tst_AnswerTypes *AnswerTypes); +static int Tst_CountNumAnswerTypesInList (const struct Qst_AnswerTypes *AnswerTypes); static void Qst_PutFormEditOneQst (struct Qst_Question *Question); static void Qst_PutFloatInputField (const char *Label,const char *Field, @@ -266,7 +266,7 @@ static void Tst_Constructor (struct Tst_Test *Test) Test->AnswerTypes.List[0] = '\0'; /***** Reset selected order *****/ - Test->SelectedOrder = Tst_DEFAULT_ORDER; + Test->SelectedOrder = Qst_DEFAULT_ORDER; /***** Question constructor *****/ Qst_QstConstructor (&Test->Question); @@ -990,7 +990,7 @@ static void Qst_ShowFormRequestEditQsts (struct Tst_Test *Test) if ((Test->Tags.Num = Tag_DB_GetAllTagsFromCurrentCrs (&mysql_res))) { Frm_BeginForm (ActLstTstQst); - Par_PutHiddenParamUnsigned (NULL,"Order",(unsigned) Tst_DEFAULT_ORDER); + Par_PutHiddenParamUnsigned (NULL,"Order",(unsigned) Qst_DEFAULT_ORDER); HTM_TABLE_BeginPadding (2); @@ -1533,7 +1533,7 @@ static void Tst_PutInputFieldNumQst (const char *Field,const char *Label, /***************** Show form for select the types of answers *****************/ /*****************************************************************************/ -static void Tst_ShowFormAnswerTypes (const struct Tst_AnswerTypes *AnswerTypes) +static void Tst_ShowFormAnswerTypes (const struct Qst_AnswerTypes *AnswerTypes) { extern const char *The_ClassFormInBox[The_NUM_THEMES]; extern const char *Txt_Types_of_answers; @@ -1619,7 +1619,7 @@ void Qst_ListQuestionsToEdit (void) Tst_Constructor (&Test); /***** Get parameters, query the database and list the questions *****/ - if (Tst_GetParamsTst (&Test,Tst_EDIT_TEST)) // Get parameters from the form + if (Tst_GetParamsTst (&Test,Tst_EDIT_QUESTIONS)) // Get parameters from the form { /***** Get question codes from database *****/ Qst_GetQuestions (&Test,&mysql_res); // Query database @@ -1814,27 +1814,27 @@ static void Qst_GetQuestions (struct Tst_Test *Test,MYSQL_RES **mysql_res) switch (Test->SelectedOrder) { - case Tst_ORDER_STEM: + case Qst_ORDER_STEM: Str_Concat (Query," ORDER BY tst_questions.Stem", Tst_MAX_BYTES_QUERY_TEST); break; - case Tst_ORDER_NUM_HITS: + case Qst_ORDER_NUM_HITS: Str_Concat (Query," ORDER BY tst_questions.NumHits DESC," "tst_questions.Stem", Tst_MAX_BYTES_QUERY_TEST); break; - case Tst_ORDER_AVERAGE_SCORE: + case Qst_ORDER_AVERAGE_SCORE: Str_Concat (Query," ORDER BY tst_questions.Score/tst_questions.NumHits DESC," "tst_questions.NumHits DESC," "tst_questions.Stem", Tst_MAX_BYTES_QUERY_TEST); break; - case Tst_ORDER_NUM_HITS_NOT_BLANK: + case Qst_ORDER_NUM_HITS_NOT_BLANK: Str_Concat (Query," ORDER BY tst_questions.NumHitsNotBlank DESC," "tst_questions.Stem", Tst_MAX_BYTES_QUERY_TEST); break; - case Tst_ORDER_AVERAGE_SCORE_NOT_BLANK: + case Qst_ORDER_AVERAGE_SCORE_NOT_BLANK: Str_Concat (Query," ORDER BY tst_questions.Score/tst_questions.NumHitsNotBlank DESC," "tst_questions.NumHitsNotBlank DESC," "tst_questions.Stem", @@ -2182,9 +2182,9 @@ static void Qst_WriteHeadingRowQuestionsForEdition (struct Tst_Test *Test) extern const char *Txt_Date; extern const char *Txt_Tags; extern const char *Txt_Shuffle; - extern const char *Txt_TST_STR_ORDER_FULL[Tst_NUM_TYPES_ORDER_QST]; - extern const char *Txt_TST_STR_ORDER_SHORT[Tst_NUM_TYPES_ORDER_QST]; - Tst_QuestionsOrder_t Order; + extern const char *Txt_TST_STR_ORDER_FULL[Qst_NUM_TYPES_ORDER_QST]; + extern const char *Txt_TST_STR_ORDER_SHORT[Qst_NUM_TYPES_ORDER_QST]; + Qst_QuestionsOrder_t Order; /***** Begin row *****/ HTM_TR_Begin (NULL); @@ -2201,8 +2201,8 @@ static void Qst_WriteHeadingRowQuestionsForEdition (struct Tst_Test *Test) /* Stem and answers of question */ /* Number of times that the question has been answered */ /* Average score */ - for (Order = (Tst_QuestionsOrder_t) 0; - Order <= (Tst_QuestionsOrder_t) (Tst_NUM_TYPES_ORDER_QST - 1); + for (Order = (Qst_QuestionsOrder_t) 0; + Order <= (Qst_QuestionsOrder_t) (Qst_NUM_TYPES_ORDER_QST - 1); Order++) { HTM_TH_Begin (1,1,"LT"); @@ -2926,7 +2926,7 @@ static bool Tst_GetParamsTst (struct Tst_Test *Test, switch (ActionToDoWithQuestions) { case Tst_SHOW_TEST_TO_ANSWER: - case Tst_EDIT_TEST: + case Tst_EDIT_QUESTIONS: case Tst_SELECT_QUESTIONS_FOR_EXAM: /* Get parameter that indicates if all types of answer are selected */ Test->AnswerTypes.All = Par_GetParToBool ("AllAnsTypes"); @@ -2964,18 +2964,18 @@ static bool Tst_GetParamsTst (struct Tst_Test *Test, Error = true; } break; - case Tst_EDIT_TEST: + case Tst_EDIT_QUESTIONS: /* Get starting and ending dates */ Dat_GetIniEndDatesFromForm (); /* Get ordering criteria */ Par_GetParMultiToText ("Order",UnsignedStr,Cns_MAX_DECIMAL_DIGITS_UINT); if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1) - Test->SelectedOrder = (Tst_QuestionsOrder_t) - ((UnsignedNum < Tst_NUM_TYPES_ORDER_QST) ? UnsignedNum : + Test->SelectedOrder = (Qst_QuestionsOrder_t) + ((UnsignedNum < Qst_NUM_TYPES_ORDER_QST) ? UnsignedNum : 0); else - Test->SelectedOrder = (Tst_QuestionsOrder_t) 0; + Test->SelectedOrder = (Qst_QuestionsOrder_t) 0; break; case Tst_SELECT_QUESTIONS_FOR_EXAM: case Tst_SELECT_QUESTIONS_FOR_GAME: @@ -2983,7 +2983,7 @@ static bool Tst_GetParamsTst (struct Tst_Test *Test, Dat_GetIniEndDatesFromForm (); /* Order question by stem */ - Test->SelectedOrder = Tst_ORDER_STEM; + Test->SelectedOrder = Qst_ORDER_STEM; break; default: break; @@ -3041,7 +3041,7 @@ static unsigned Tst_CountNumTagsInList (const struct Tag_Tags *Tags) /**** Count the number of types of answers in the list of types of answers ***/ /*****************************************************************************/ -static int Tst_CountNumAnswerTypesInList (const struct Tst_AnswerTypes *AnswerTypes) +static int Tst_CountNumAnswerTypesInList (const struct Qst_AnswerTypes *AnswerTypes) { const char *Ptr; int NumAnsTypes = 0; @@ -4593,7 +4593,7 @@ void Qst_RequestRemoveSelectedQsts (void) Tst_Constructor (&Test); /***** Get parameters *****/ - if (Tst_GetParamsTst (&Test,Tst_EDIT_TEST)) // Get parameters from the form + if (Tst_GetParamsTst (&Test,Tst_EDIT_QUESTIONS)) // Get parameters from the form { /***** Show question and button to remove question *****/ Ale_ShowAlertAndButton (ActRemSevTstQst,NULL,NULL, @@ -4628,7 +4628,7 @@ void Qst_RemoveSelectedQsts (void) Tst_Constructor (&Test); /***** Get parameters *****/ - if (Tst_GetParamsTst (&Test,Tst_EDIT_TEST)) // Get parameters + if (Tst_GetParamsTst (&Test,Tst_EDIT_QUESTIONS)) // Get parameters { /***** Get question codes *****/ Qst_GetQuestions (&Test,&mysql_res); // Query database @@ -4694,7 +4694,7 @@ void Qst_RequestRemoveOneQst (void) /* Get other parameters */ if (!EditingOnlyThisQst) - if (!Tst_GetParamsTst (&Test,Tst_EDIT_TEST)) + if (!Tst_GetParamsTst (&Test,Tst_EDIT_QUESTIONS)) Err_ShowErrorAndExit ("Wrong test parameters."); /***** Show question and button to remove question *****/ @@ -5036,7 +5036,7 @@ static void Qst_InsertAnswersIntoDB (struct Qst_Question *Question) /*********************** Update the score of a question **********************/ /*****************************************************************************/ -void Tst_UpdateQstScoreInDB (struct TstPrn_PrintedQuestion *PrintedQuestion) +void Qst_UpdateQstScoreInDB (struct TstPrn_PrintedQuestion *PrintedQuestion) { /***** Update number of clicks and score of the question *****/ Str_SetDecimalPointToUS (); // To print the floating point as a dot @@ -5059,7 +5059,7 @@ void Tst_UpdateQstScoreInDB (struct TstPrn_PrintedQuestion *PrintedQuestion) } /*****************************************************************************/ -/**************** Remove all tests and questions in a course *****************/ +/************************* Remove all tests in a course **********************/ /*****************************************************************************/ void Tst_RemoveCrsTests (long CrsCod) @@ -5072,7 +5072,14 @@ void Tst_RemoveCrsTests (long CrsCod) "DELETE FROM tst_config" " WHERE CrsCod=%ld", CrsCod); + } +/*****************************************************************************/ +/********************* Remove all questions in a course **********************/ +/*****************************************************************************/ + +void Qst_RemoveCrsQsts (long CrsCod) + { /***** Remove associations between test questions and test tags in the course *****/ DB_QueryDELETE ("can not remove tags associated" @@ -5133,13 +5140,14 @@ static void Qst_RemoveMediaFromStemOfQst (long CrsCod,long QstCod) unsigned NumMedia; /***** Get media code associated to stem of test question from database *****/ - NumMedia = - (unsigned) DB_QuerySELECT (&mysql_res,"can not get media", - "SELECT MedCod" - " FROM tst_questions" - " WHERE QstCod=%ld" - " AND CrsCod=%ld", // Extra check - QstCod,CrsCod); + NumMedia = (unsigned) + DB_QuerySELECT (&mysql_res,"can not get media", + "SELECT MedCod" + " FROM tst_questions" + " WHERE QstCod=%ld" + " AND CrsCod=%ld", // Extra check + QstCod, + CrsCod); /***** Go over result removing media *****/ Med_RemoveMediaFromAllRows (NumMedia,mysql_res); diff --git a/swad_test.h b/swad_test.h index 7b2f41084..cf49d7130 100644 --- a/swad_test.h +++ b/swad_test.h @@ -30,9 +30,9 @@ #include "swad_exam.h" #include "swad_game.h" #include "swad_media.h" +#include "swad_question_type.h" #include "swad_test_config.h" #include "swad_test_print.h" -#include "swad_test_type.h" /*****************************************************************************/ /***************************** Public constants ******************************/ @@ -41,34 +41,36 @@ #define Tst_MAX_CHARS_ANSWER_OR_FEEDBACK (1024 - 1) // 1023 #define Tst_MAX_BYTES_ANSWER_OR_FEEDBACK ((Tst_MAX_CHARS_ANSWER_OR_FEEDBACK + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 16383 -#define Tst_MAX_BYTES_ANSWER_TYPE 32 +#define Qst_MAX_BYTES_ANSWER_TYPE 32 + +#define Tst_SCORE_MAX 10 // Maximum score of a test (10 in Spain). Must be unsigned! // TODO: Make this configurable by teachers /*****************************************************************************/ /******************************* Public types ********************************/ /*****************************************************************************/ -struct Tst_AnswerTypes +struct Qst_AnswerTypes { bool All; char List[Qst_MAX_BYTES_LIST_ANSWER_TYPES + 1]; }; -#define Tst_NUM_TYPES_ORDER_QST 5 +#define Qst_NUM_TYPES_ORDER_QST 5 typedef enum { - Tst_ORDER_STEM = 0, - Tst_ORDER_NUM_HITS = 1, - Tst_ORDER_AVERAGE_SCORE = 2, - Tst_ORDER_NUM_HITS_NOT_BLANK = 3, - Tst_ORDER_AVERAGE_SCORE_NOT_BLANK = 4, - } Tst_QuestionsOrder_t; -#define Tst_DEFAULT_ORDER Tst_ORDER_STEM + Qst_ORDER_STEM = 0, + Qst_ORDER_NUM_HITS = 1, + Qst_ORDER_AVERAGE_SCORE = 2, + Qst_ORDER_NUM_HITS_NOT_BLANK = 3, + Qst_ORDER_AVERAGE_SCORE_NOT_BLANK = 4, + } Qst_QuestionsOrder_t; +#define Qst_DEFAULT_ORDER Qst_ORDER_STEM struct Tst_Test { struct Tag_Tags Tags; // Selected tags - struct Tst_AnswerTypes AnswerTypes; // Selected answer types - Tst_QuestionsOrder_t SelectedOrder; // Order for listing questions + struct Qst_AnswerTypes AnswerTypes; // Selected answer types + Qst_QuestionsOrder_t SelectedOrder; // Order for listing questions unsigned NumQsts; // Number of questions struct Qst_Question Question; // Selected / editing question }; @@ -77,7 +79,7 @@ typedef enum { Tst_SHOW_TEST_TO_ANSWER, // Showing a test to a student Tst_SHOW_TEST_RESULT, // Showing the assessment of a test - Tst_EDIT_TEST, // Editing test questions + Tst_EDIT_QUESTIONS, // Editing test questions Tst_SELECT_QUESTIONS_FOR_EXAM, // Selecting test questions for a set of questions in an exam Tst_SELECT_QUESTIONS_FOR_GAME, // Selecting test questions for a game } Tst_ActionToDoWithQuestions_t; @@ -173,9 +175,10 @@ void Qst_PutParamQstCod (void *QstCod); void Qst_InsertOrUpdateQstTagsAnsIntoDB (struct Qst_Question *Question); -void Tst_UpdateQstScoreInDB (struct TstPrn_PrintedQuestion *PrintedQuestion); +void Qst_UpdateQstScoreInDB (struct TstPrn_PrintedQuestion *PrintedQuestion); void Tst_RemoveCrsTests (long CrsCod); +void Qst_RemoveCrsQsts (long CrsCod); void Tst_GetTestStats (Qst_AnswerType_t AnsType,struct Tst_Stats *Stats); diff --git a/swad_test_print.c b/swad_test_print.c index 3ce2bcf2e..3fe3329dd 100644 --- a/swad_test_print.c +++ b/swad_test_print.c @@ -633,7 +633,7 @@ void TstPrn_ShowPrintAfterAssess (struct TstPrn_Print *Print) /***** Update the number of accesses and the score of this question *****/ if (Gbl.Usrs.Me.Role.Logged == Rol_STD) - Tst_UpdateQstScoreInDB (&Print->PrintedQuestions[QstInd]); + Qst_UpdateQstScoreInDB (&Print->PrintedQuestions[QstInd]); /***** Destroy test question *****/ Qst_QstDestructor (&Question); @@ -795,7 +795,7 @@ void TstPrn_ComputeScoresAndStoreQuestionsOfPrint (struct TstPrn_Print *Print, /* Update the number of hits and the score of this question in tests database */ if (UpdateQstScore) - Tst_UpdateQstScoreInDB (&Print->PrintedQuestions[QstInd]); + Qst_UpdateQstScoreInDB (&Print->PrintedQuestions[QstInd]); } } diff --git a/swad_test_print.h b/swad_test_print.h index d9fc0cd48..c466c8595 100644 --- a/swad_test_print.h +++ b/swad_test_print.h @@ -27,8 +27,8 @@ /********************************* Headers ***********************************/ /*****************************************************************************/ +#include "swad_question_type.h" #include "swad_test_config.h" -#include "swad_test_type.h" #include "swad_test_visibility.h" #include "swad_user.h" diff --git a/swad_text.c b/swad_text.c index 69329d3e5..d31ee5858 100644 --- a/swad_text.c +++ b/swad_text.c @@ -53951,9 +53951,9 @@ const char *Txt_TST_STR_ANSWER_TYPES[Qst_NUM_ANS_TYPES] = #endif }; -const char *Txt_TST_STR_ORDER_FULL[Tst_NUM_TYPES_ORDER_QST] = +const char *Txt_TST_STR_ORDER_FULL[Qst_NUM_TYPES_ORDER_QST] = { - [Tst_ORDER_STEM] = + [Qst_ORDER_STEM] = #if L==1 // ca "Ordenar por enunciado de la pregunta" // Necessita traduccio #elif L==2 // de @@ -53974,7 +53974,7 @@ const char *Txt_TST_STR_ORDER_FULL[Tst_NUM_TYPES_ORDER_QST] = "Classificar por formulação da pergunta" #endif , - [Tst_ORDER_NUM_HITS] = + [Qst_ORDER_NUM_HITS] = #if L==1 // ca "Ordenar por nº de veces que se ha respondido la pregunta" // Necessita traduccio #elif L==2 // de @@ -53995,7 +53995,7 @@ const char *Txt_TST_STR_ORDER_FULL[Tst_NUM_TYPES_ORDER_QST] = "Classificar por nº de vezes que a pergunta foi respondida" #endif , - [Tst_ORDER_AVERAGE_SCORE] = + [Qst_ORDER_AVERAGE_SCORE] = #if L==1 // ca "Ordenar por puntuación media" // Necessita traduccio #elif L==2 // de @@ -54016,7 +54016,7 @@ const char *Txt_TST_STR_ORDER_FULL[Tst_NUM_TYPES_ORDER_QST] = "Classificar por pontuação média" #endif , - [Tst_ORDER_NUM_HITS_NOT_BLANK] = + [Qst_ORDER_NUM_HITS_NOT_BLANK] = #if L==1 // ca "Ordenar por nº de veces que se ha respondido" " la pregunta (excluyendo respuestas en blanco)" // Necessita traduccio @@ -54046,7 +54046,7 @@ const char *Txt_TST_STR_ORDER_FULL[Tst_NUM_TYPES_ORDER_QST] = " que a pergunta foi respondida (não em branco)" #endif , - [Tst_ORDER_AVERAGE_SCORE_NOT_BLANK] = + [Qst_ORDER_AVERAGE_SCORE_NOT_BLANK] = #if L==1 // ca "Ordenar por puntuación media (excluyendo respuestas en blanco)" // Necessita traduccio #elif L==2 // de @@ -54068,9 +54068,9 @@ const char *Txt_TST_STR_ORDER_FULL[Tst_NUM_TYPES_ORDER_QST] = #endif }; -const char *Txt_TST_STR_ORDER_SHORT[Tst_NUM_TYPES_ORDER_QST] = +const char *Txt_TST_STR_ORDER_SHORT[Qst_NUM_TYPES_ORDER_QST] = { - [Tst_ORDER_STEM] = + [Qst_ORDER_STEM] = #if L==1 // ca "Pregunta" #elif L==2 // de @@ -54091,7 +54091,7 @@ const char *Txt_TST_STR_ORDER_SHORT[Tst_NUM_TYPES_ORDER_QST] = "Pergunta" #endif , - [Tst_ORDER_NUM_HITS] = + [Qst_ORDER_NUM_HITS] = #if L==1 // ca "N.º
resp." // Necessita traduccio #elif L==2 // de @@ -54112,7 +54112,7 @@ const char *Txt_TST_STR_ORDER_SHORT[Tst_NUM_TYPES_ORDER_QST] = "N.º
resp." #endif , - [Tst_ORDER_AVERAGE_SCORE] = + [Qst_ORDER_AVERAGE_SCORE] = #if L==1 // ca "Puntuación
media" // Necessita traduccio #elif L==2 // de @@ -54133,7 +54133,7 @@ const char *Txt_TST_STR_ORDER_SHORT[Tst_NUM_TYPES_ORDER_QST] = "Pontuação
média" #endif , - [Tst_ORDER_NUM_HITS_NOT_BLANK] = + [Qst_ORDER_NUM_HITS_NOT_BLANK] = #if L==1 // ca "N.º
resp.
no en
blanco" // Necessita traduccio #elif L==2 // de @@ -54154,7 +54154,7 @@ const char *Txt_TST_STR_ORDER_SHORT[Tst_NUM_TYPES_ORDER_QST] = "N.º
resp.
não em
branco" #endif , - [Tst_ORDER_AVERAGE_SCORE_NOT_BLANK] = + [Qst_ORDER_AVERAGE_SCORE_NOT_BLANK] = #if L==1 // ca "Puntuación
media
no en
blanco" // Necessita traduccio #elif L==2 // de