Version19.239.2

This commit is contained in:
acanas 2020-05-20 02:13:36 +02:00
parent 0d4d513866
commit 3d0a538fdb
9 changed files with 45 additions and 2067 deletions

View File

@ -1,4 +1,4 @@
/* swad_desktop.css:style-sheet for desktop layout of SWAD */ /* style-sheet for layout of SWAD */
/* /*
SWAD (Shared Workspace At a Distance), SWAD (Shared Workspace At a Distance),

File diff suppressed because it is too large Load Diff

View File

@ -557,11 +557,13 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
En OpenSWAD: En OpenSWAD:
ps2pdf source.ps destination.pdf ps2pdf source.ps destination.pdf
*/ */
#define Log_PLATFORM_VERSION "SWAD 19.238.3 (2020-05-19)" #define Log_PLATFORM_VERSION "SWAD 19.239.2 (2020-05-20)"
#define CSS_FILE "swad19.238.2.css" #define CSS_FILE "swad19.238.2.css"
#define JS_FILE "swad19.238.3.js" #define JS_FILE "swad19.239.js"
/* /*
Version 19.238.3: May 19, 2020 Fixed issue due to network timeout while answering exams. Reported by Nuria Torres Rosell. (301316 lines) Version 19.239.2: May 20, 2020 Fixed bug removing media. (301301 lines)
Version 19.239.1: May 19, 2020 Changes in timeout message. (301300 lines)
Version 19.239: May 19, 2020 Fixed issue due to network timeout while answering exams. Reported by Nuria Torres Rosell. (301316 lines)
Version 19.238.2: May 19, 2020 Exam description is written in exam heading. Suggested by Eva Martínez Ortigosa. (301254 lines) Version 19.238.2: May 19, 2020 Exam description is written in exam heading. Suggested by Eva Martínez Ortigosa. (301254 lines)
Version 19.238.1: May 19, 2020 Fixed bug: clicks on answers of exam prints are logged. (301566 lines) Version 19.238.1: May 19, 2020 Fixed bug: clicks on answers of exam prints are logged. (301566 lines)
Version 19.238: May 18, 2020 Fix exam-related details. Version 19.238: May 18, 2020 Fix exam-related details.

View File

@ -1295,7 +1295,7 @@ static void Exa_RemoveAllMedFilesFromAnsOfAllQstsInCrs (long CrsCod)
"SELECT exa_set_answers.MedCod" // row[0] "SELECT exa_set_answers.MedCod" // row[0]
" FROM exa_sets,exa_set_questions,exa_set_answers" " FROM exa_sets,exa_set_questions,exa_set_answers"
" WHERE exa_sets.CrsCod=%ld" " WHERE exa_sets.CrsCod=%ld"
" AND exa_sets.SetCod=exa_set_questions.SetCod", " AND exa_sets.SetCod=exa_set_questions.SetCod"
" AND exa_set_questions.QstCod=exa_set_answers.QstCod", " AND exa_set_questions.QstCod=exa_set_answers.QstCod",
CrsCod); CrsCod);

View File

@ -926,20 +926,20 @@ static void ExaPrn_WriteJSToUpdateExamPrint (const struct ExaPrn_Print *Print,
unsigned NumQst, unsigned NumQst,
const char *Id,int NumOpt) const char *Id,int NumOpt)
{ {
extern const char *Txt_The_changes_have_not_been_saved_; extern const char *Txt_Connection_issues_;
if (NumOpt < 0) if (NumOpt < 0)
HTM_TxtF (" onchange=\"updateExamPrint('examprint','%s','Ans'," HTM_TxtF (" onchange=\"updateExamPrint('examprint','%s','Ans',"
"'act=%ld&ses=%s&SesCod=%ld&NumQst=%u','%s');", "'act=%ld&ses=%s&SesCod=%ld&NumQst=%u','%s');",
Id, Id,
Act_GetActCod (ActAnsExaPrn),Gbl.Session.Id,Print->SesCod,NumQst, Act_GetActCod (ActAnsExaPrn),Gbl.Session.Id,Print->SesCod,NumQst,
Txt_The_changes_have_not_been_saved_); Txt_Connection_issues_);
else // NumOpt >= 0 else // NumOpt >= 0
HTM_TxtF (" onclick=\"updateExamPrint('examprint','%s_%d','Ans'," HTM_TxtF (" onclick=\"updateExamPrint('examprint','%s_%d','Ans',"
"'act=%ld&ses=%s&SesCod=%ld&NumQst=%u','%s');", "'act=%ld&ses=%s&SesCod=%ld&NumQst=%u','%s');",
Id,NumOpt, Id,NumOpt,
Act_GetActCod (ActAnsExaPrn),Gbl.Session.Id,Print->SesCod,NumQst, Act_GetActCod (ActAnsExaPrn),Gbl.Session.Id,Print->SesCod,NumQst,
Txt_The_changes_have_not_been_saved_); Txt_Connection_issues_);
HTM_Txt (" return false;\""); // return false is necessary to not submit form HTM_Txt (" return false;\""); // return false is necessary to not submit form
} }

View File

@ -2035,7 +2035,7 @@ static void ExaSet_RemoveMediaFromStemOfQst (long SetCod,long QstCod)
NumMedia = NumMedia =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get media", (unsigned) DB_QuerySELECT (&mysql_res,"can not get media",
"SELECT MedCod" // row[0] "SELECT MedCod" // row[0]
" FROM exa_set_questions," " FROM exa_set_questions"
" WHERE QstCod=%ld" " WHERE QstCod=%ld"
" AND SetCod=%ld", // Extra check " AND SetCod=%ld", // Extra check
QstCod,SetCod); QstCod,SetCod);
@ -2057,7 +2057,7 @@ static void ExaSet_RemoveMediaFromAllAnsOfQst (long SetCod,long QstCod)
NumMedia = NumMedia =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get media", (unsigned) DB_QuerySELECT (&mysql_res,"can not get media",
"SELECT exa_set_answers.MedCod" // row[0] "SELECT exa_set_answers.MedCod" // row[0]
" FROM exa_set_answers,exa_set_questions," " FROM exa_set_answers,exa_set_questions"
" WHERE exa_set_answers.QstCod=%ld" " WHERE exa_set_answers.QstCod=%ld"
" AND exa_set_answers.QstCod=exa_set_questions.QstCod" " AND exa_set_answers.QstCod=exa_set_questions.QstCod"
" AND exa_set_questions.SetCod=%ld" // Extra check " AND exa_set_questions.SetCod=%ld" // Extra check

View File

@ -27,6 +27,7 @@
#include <mysql/mysql.h> // To access MySQL databases #include <mysql/mysql.h> // To access MySQL databases
#include <stdbool.h> // For boolean type #include <stdbool.h> // For boolean type
#include <stdlib.h> // For free
#include <string.h> // For string functions #include <string.h> // For string functions
#include "swad_action.h" #include "swad_action.h"

View File

@ -5720,7 +5720,7 @@ static void Tst_RemoveMediaFromAllAnsOfQst (long CrsCod,long QstCod)
(unsigned) DB_QuerySELECT (&mysql_res,"can not get media", (unsigned) DB_QuerySELECT (&mysql_res,"can not get media",
"SELECT tst_answers.MedCod" // row[0] "SELECT tst_answers.MedCod" // row[0]
" FROM tst_answers,tst_questions" " FROM tst_answers,tst_questions"
" WHERE tst_answers.QstCod=%ld", " WHERE tst_answers.QstCod=%ld"
" AND tst_answers.QstCod=tst_questions.QstCod" " AND tst_answers.QstCod=tst_questions.QstCod"
" AND tst_questions.CrsCod=%ld" // Extra check " AND tst_questions.CrsCod=%ld" // Extra check
" AND tst_questions.QstCod=%ld", // Extra check " AND tst_questions.QstCod=%ld", // Extra check

View File

@ -4522,25 +4522,25 @@ const char *Txt_Comments =
"Coment&aacute;rios"; "Coment&aacute;rios";
#endif #endif
const char *Txt_Teachers_comment = const char *Txt_Connection_issues_ =
#if L==1 // ca #if L==1 // ca
"Comentari de professors"; "Problemes de connexi&oacute;. Els canvis no s'han desat.";
#elif L==2 // de #elif L==2 // de
"Lehrern-Kommentar"; "Verbindungsprobleme. Die &Auml;nderungen wurden nicht gespeichert.";
#elif L==3 // en #elif L==3 // en
"Teachers' comment"; "Connection issues. The changes have not been saved.";
#elif L==4 // es #elif L==4 // es
"Comentario de profesores"; "Problema de conexi&oacute;n. Los cambios no se han guardado.";
#elif L==5 // fr #elif L==5 // fr
"Commentaire des enseignants"; "Probl&egrave;mes de connexion. Les modifications n'ont pas &eacute;t&eacute; enregistr&eacute;es.";
#elif L==6 // gn #elif L==6 // gn
"Comentario de profesores"; // Okoteve traducción "Problema de conexi&oacute;n. Los cambios no se han guardado."; // Okoteve traducción
#elif L==7 // it #elif L==7 // it
"Commento degli professori"; "Problemi di connessione. Le modifiche non sono state salvate.";
#elif L==8 // pl #elif L==8 // pl
"Komentarz nauczycieli"; "Problemy z po&lstrok;&aogon;czeniem. Zmiany nie zosta&lstrok;y zapisane.";
#elif L==9 // pt #elif L==9 // pt
"Coment&aacute;rio dos professores"; "Problemas de conex&atilde;o. As altera&ccedil;&otilde;es n&atilde;o foram salvas.";
#endif #endif
const char *Txt_Configure = const char *Txt_Configure =
@ -45697,6 +45697,27 @@ const char *Txt_teachers_ABBREVIATION = // Abbreviation of "Teachers"
"prof."; "prof.";
#endif #endif
const char *Txt_Teachers_comment =
#if L==1 // ca
"Comentari de professors";
#elif L==2 // de
"Lehrern-Kommentar";
#elif L==3 // en
"Teachers' comment";
#elif L==4 // es
"Comentario de profesores";
#elif L==5 // fr
"Commentaire des enseignants";
#elif L==6 // gn
"Comentario de profesores"; // Okoteve traducción
#elif L==7 // it
"Commento degli professori";
#elif L==8 // pl
"Komentarz nauczycieli";
#elif L==9 // pt
"Coment&aacute;rio dos professores";
#endif
const char *Txt_Teachers_files_area = const char *Txt_Teachers_files_area =
#if L==1 // ca #if L==1 // ca
"Zona d'arxius de professors"; "Zona d'arxius de professors";
@ -46312,45 +46333,6 @@ const char *Txt_The_centre_X_has_been_renamed_as_Y = // Warning: it is very impo
"O centro <strong>%s</strong> foi renomeado como <strong>%s</strong>."; "O centro <strong>%s</strong> foi renomeado como <strong>%s</strong>.";
#endif #endif
const char *Txt_The_changes_have_not_been_saved_ =
#if L==1 // ca
"Els canvis no s'han desat."
" &Eacute;s possible que el servidor estigui trigant a respondre"
" o que hi hagi problemes en la connexi&oacute; de xarxa.";
#elif L==2 // de
"Die &Auml;nderungen wurden nicht gespeichert."
" Der Server reagiert m&ouml;glicherweise nur langsam"
" oder es treten Probleme mit Ihrer Netzwerkverbindung auf.";
#elif L==3 // en
"The changes have not been saved."
" The server may be slow to respond"
" or there may be problems with your network connection.";
#elif L==4 // es
"Los cambios no se han guardado."
" Es posible que el servidor est&eacute; tardando en responder"
" o que haya problemas en la conexi&oacute;n de red.";
#elif L==5 // fr
"Les modifications n'ont pas &eacute;t&eacute; enregistr&eacute;es."
" Le serveur peut &ecirc;tre lent &agrave; r&eacute;pondre"
" ou il peut y avoir des probl&egrave;mes avec votre connexion r&eacute;seau.";
#elif L==6 // gn
"Los cambios no se han guardado."
" Es posible que el servidor est&eacute; tardando en responder"
" o que haya problemas en la conexi&oacute;n de red."; // Okoteve traducción
#elif L==7 // it
"Le modifiche non sono state salvate."
" Il server potrebbe rispondere lentamente"
" o potrebbero esserci problemi con la connessione di rete.";
#elif L==8 // pl
"Zmiany nie zosta&lstrok;y zapisane."
" Serwer mo&zdot;e d&lstrok;ugo reagowa&cacute;"
" lub mog&aogon; wyst&eogon;powa&cacute; problemy z po&lstrok;&atrok;czeniem sieciowym.";
#elif L==9 // pt
"As altera&ccedil;&otilde;es n&atilde;o foram salvas."
" O servidor pode demorar para responder"
" ou pode haver problemas com sua conex&atilde;o de rede.";
#endif
const char *Txt_The_comment_no_longer_exists = const char *Txt_The_comment_no_longer_exists =
#if L==1 // ca #if L==1 // ca
"El comentari ja no existeix."; "El comentari ja no existeix.";