From 67cdf9f0ffcfaf894efc57a7025eb5fe685e4a5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Mon, 17 Feb 2020 09:31:32 +0100 Subject: [PATCH] Version19.124 --- swad_changelog.h | 3 +- swad_global.c | 1 + swad_test.c | 14 +++++ swad_test.h | 1 + swad_test_result.c | 25 +++++++++ swad_test_result.h | 28 +++++++++- swad_text.c | 129 +++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 199 insertions(+), 2 deletions(-) diff --git a/swad_changelog.h b/swad_changelog.h index 8902f9810..1447aea52 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -497,7 +497,7 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - * En OpenSWAD: ps2pdf source.ps destination.pdf */ -#define Log_PLATFORM_VERSION "SWAD 19.123 (2020-02-16)" +#define Log_PLATFORM_VERSION "SWAD 19.124 (2020-02-17)" #define CSS_FILE "swad19.118.css" #define JS_FILE "swad19.91.1.js" /* @@ -507,6 +507,7 @@ ps2pdf source.ps destination.pdf // TODO: En la lista de conectados central, poner el logo de la institución a la que pertenece el usuario // TODO: Urgente: Añadir nuevos niveles de realimentación tras sugerencia de Mancia y conversación con Javier. + Version 19.124: Feb 17, 2020 New form for result visibility in tests. (279001 lines) Version 19.123: Feb 16, 2020 New module swad_test_result for test results. (278815 lines) Version 19.122.4: Feb 14, 2020 Fixed bug refreshing degree average photo. (278699 lines) Version 19.122.3: Feb 14, 2020 Fixed bug in games, reported by Gustavo Romero López. diff --git a/swad_global.c b/swad_global.c index ddcb91ddf..c4fc7a76e 100644 --- a/swad_global.c +++ b/swad_global.c @@ -356,6 +356,7 @@ void Gbl_InitializeGlobals (void) /* Tests */ Gbl.Test.Config.Pluggable = Tst_PLUGGABLE_UNKNOWN; + Gbl.Test.Config.Visibility = TsR_VISIBILITY_DEFAULT; Gbl.Test.NumQsts = Tst_CONFIG_DEFAULT_DEF_QUESTIONS; Gbl.Test.AllowTeachers = false; // Must the test result be saved? Gbl.Test.AllAnsTypes = false; diff --git a/swad_test.c b/swad_test.c index 8c22e3cb7..8fab71716 100644 --- a/swad_test.c +++ b/swad_test.c @@ -1812,6 +1812,7 @@ static void Tst_ShowFormConfigTst (void) extern const char *Txt_default; extern const char *Txt_maximum; extern const char *Txt_Minimum_time_seconds_per_question_between_two_tests; + extern const char *Txt_Result_visibility; extern const char *Txt_Feedback_to_students; extern const char *Txt_TST_STR_FEEDBACK[TsR_NUM_TYPES_FEEDBACK]; extern const char *Txt_Save_changes; @@ -1893,6 +1894,19 @@ static void Tst_ShowFormConfigTst (void) HTM_TR_End (); + /***** Visibility of results *****/ + HTM_TR_Begin (NULL); + + HTM_TD_Begin ("class=\"%s RT\"",The_ClassFormInBox[Gbl.Prefs.Theme]); + HTM_TxtF ("%s:",Txt_Result_visibility); + HTM_TD_End (); + + HTM_TD_Begin ("class=\"LB\""); + TsR_PutVisibilityCheckboxes (Gbl.Test.Config.Visibility); + HTM_TD_End (); + + HTM_TR_End (); + /***** Feedback to students *****/ HTM_TR_Begin (NULL); diff --git a/swad_test.h b/swad_test.h index ed9c119b2..eca490ab6 100644 --- a/swad_test.h +++ b/swad_test.h @@ -82,6 +82,7 @@ struct Tst_Config unsigned Def; // Default number of questions unsigned Max; // Maximum number of questions unsigned long MinTimeNxtTstPerQst; + unsigned Visibility; // One bit for each visibility item TsR_Feedback_t Feedback; }; diff --git a/swad_test_result.c b/swad_test_result.c index 4211384b7..0a079b0cb 100644 --- a/swad_test_result.c +++ b/swad_test_result.c @@ -58,6 +58,7 @@ Visibility of results: * Score of each question * Total score */ + // strings are limited to TsR_MAX_BYTES_FEEDBACK_TYPE bytes const char *TsR_FeedbackXML[TsR_NUM_TYPES_FEEDBACK] = { @@ -1165,3 +1166,27 @@ TsR_Feedback_t TsR_GetFeedbackTypeFromForm (void) (unsigned long) TsR_FEEDBACK_DEFAULT); } +/*****************************************************************************/ +/************ Put checkboxes in form to select result visibility *************/ +/*****************************************************************************/ + +void TsR_PutVisibilityCheckboxes (unsigned SelectedVisibility) + { + extern const char *Txt_TST_STR_VISIBILITY[TsR_NUM_ITEMS_VISIBILITY]; + TsR_ResultVisibility_t Visibility; + + for (Visibility = (TsR_ResultVisibility_t) 0; + Visibility <= (TsR_ResultVisibility_t) (TsR_NUM_ITEMS_VISIBILITY - 1); + Visibility++) + { + HTM_LABEL_Begin ("class=\"DAT\""); + HTM_INPUT_CHECKBOX ("Visibility",false, + "value=\"%u\"%s", + (unsigned) Visibility, + (SelectedVisibility & (1 << Visibility)) != 0 ? " checked=\"checked\"" : + ""); + HTM_Txt (Txt_TST_STR_VISIBILITY[Visibility]); + HTM_LABEL_End (); + HTM_BR (); + } + } diff --git a/swad_test_result.h b/swad_test_result.h index 40c22c52e..1a58a932b 100644 --- a/swad_test_result.h +++ b/swad_test_result.h @@ -27,7 +27,6 @@ /********************************* Headers ***********************************/ /*****************************************************************************/ -// #include "swad_game.h" #include "swad_user.h" /*****************************************************************************/ @@ -41,6 +40,31 @@ /*****************************************************************************/ /******************************* Public types ********************************/ /*****************************************************************************/ +/* +Visibilidad de resultados: +* Texto de preguntas y respuestas +* Texto de realimentación +* Respuestas correctas +* Puntuación de cada pregunta +* Puntuación total + +Visibility of results: +* Text of questions and answers +* Feedback text +* Correct answers +* Score of each question +* Total score +*/ +#define TsR_NUM_ITEMS_VISIBILITY 5 +typedef enum + { + TsR_VISIBLE_QST_ANS_TEXT = 0, // Questions and answers text + TsR_VISIBLE_FEEDBACK_TEXT = 1, // Feedback text + TsR_VISIBLE_CORRECT_ANSWER = 2, // Correct answers + TsR_VISIBLE_EACH_QST_SCORE = 3, // Score of each question + TsR_VISIBLE_TOTAL_SCORE = 4, // Total score + } TsR_ResultVisibility_t; +#define TsR_VISIBILITY_DEFAULT ((1 << TsR_NUM_ITEMS_VISIBILITY) - 1) // All visible #define TsR_NUM_TYPES_FEEDBACK 5 typedef enum @@ -74,4 +98,6 @@ void TsR_RemoveCrsTestResults (long CrsCod); TsR_Feedback_t TsR_GetFeedbackTypeFromForm (void); +void TsR_PutVisibilityCheckboxes (unsigned SelectedVisibility); + #endif diff --git a/swad_text.c b/swad_text.c index 83f172856..f58d1bc7b 100644 --- a/swad_text.c +++ b/swad_text.c @@ -51574,6 +51574,114 @@ const char *Txt_TST_STR_ORDER_SHORT[Tst_NUM_TYPES_ORDER_QST] = #endif }; +const char *Txt_TST_STR_VISIBILITY[TsR_NUM_ITEMS_VISIBILITY] = + { + [TsR_VISIBLE_QST_ANS_TEXT] = +#if L==1 // ca + "Text de preguntes i respostes" +#elif L==2 // de + "Fragen und Antworten Text" +#elif L==3 // en + "Questions and answers text" +#elif L==4 // es + "Texto de preguntas y respuestas" +#elif L==5 // fr + "Texte de questions et réponses." +#elif L==6 // gn + "Texto de preguntas y respuestas" // Okoteve traducción +#elif L==7 // it + "Testo di domande e risposte" +#elif L==8 // pl + "Tekst pytań i odpowiedzi" +#elif L==9 // pt + "Texto de perguntas e respostas" +#endif + , + [TsR_VISIBLE_FEEDBACK_TEXT] = +#if L==1 // ca + "Text de realimentació" +#elif L==2 // de + "Feedback-Text" +#elif L==3 // en + "Feedback text" +#elif L==4 // es + "Texto de realimentación" +#elif L==5 // fr + "Texte de rétroaction" +#elif L==6 // gn + "Texto de realimentación" // Okoteve traducción +#elif L==7 // it + "Testo di feedback" +#elif L==8 // pl + "Tekst feedback" +#elif L==9 // pt + "Texto de feedback" +#endif + , + [TsR_VISIBLE_CORRECT_ANSWER] = +#if L==1 // ca + "Respostes correctes" +#elif L==2 // de + "Richtige Antworten" +#elif L==3 // en + "Correct answers" +#elif L==4 // es + "Respuestas correctas" +#elif L==5 // fr + "Bonnes réponses" +#elif L==6 // gn + "Respuestas correctas" // Okoteve traducción +#elif L==7 // it + "Risposte corrette" +#elif L==8 // pl + "Prawidłowe odpowiedzi" +#elif L==9 // pt + "Respostas corretas" +#endif + , + [TsR_VISIBLE_EACH_QST_SCORE] = +#if L==1 // ca + "Puntuació de cada pregunta" +#elif L==2 // de + "Punktzahl jeder Frage" +#elif L==3 // en + "Score of each question" +#elif L==4 // es + "Puntuación de cada pregunta" +#elif L==5 // fr + "Score de chaque question" +#elif L==6 // gn + "Puntuación de cada pregunta" // Okoteve traducción +#elif L==7 // it + "Punteggio di ogni domanda" +#elif L==8 // pl + "Wynik każdego pytania" +#elif L==9 // pt + "Pontuação de cada pergunta" +#endif + , + [TsR_VISIBLE_TOTAL_SCORE] = +#if L==1 // ca + "Puntuació total" +#elif L==2 // de + "Gesamtpunktzahl" +#elif L==3 // en + "Total score" +#elif L==4 // es + "Puntuación total" +#elif L==5 // fr + "Score total" +#elif L==6 // gn + "Puntuación total" // Okoteve traducción +#elif L==7 // it + "Punteggio totale" +#elif L==8 // pl + "Łączny wynik" +#elif L==9 // pt + "Pontuação total" +#endif + }; + const char *Txt_TF_QST[2] = { #if L==1 // ca // True @@ -53712,6 +53820,27 @@ const char *Txt_View_homework = "Ver trabalhos"; #endif +const char *Txt_Result_visibility = +#if L==1 // ca + "Visibilitat de resultats"; +#elif L==2 // de + "Ergebnis Sichtbarkeit"; +#elif L==3 // en + "Result visibility"; +#elif L==4 // es + "Visibilidad de resultados"; +#elif L==5 // fr + "Visibilité des résultats"; +#elif L==6 // gn + "Visibilidad de resultados"; // Okoteve traducción +#elif L==7 // it + "Visibilità dei risultati"; +#elif L==8 // pl + "Widoczność wyników"; +#elif L==9 // pt + "Visibilidade dos resultados"; +#endif + const char *Txt_Visible_by_BR_the_student = #if L==1 // ca "¿Visible por
el estudiante?"; // Necessita traduccio