diff --git a/swad_API.c b/swad_API.c index 758141c7e..893ba800a 100644 --- a/swad_API.c +++ b/swad_API.c @@ -4022,7 +4022,7 @@ int swad__getTestConfig (struct soap *soap, if ((ReturnCode = API_GetTstConfig ((long) courseCode)) != SOAP_OK) return ReturnCode; getTestConfigOut->pluggable = (TstCfg_GetConfigPluggable () == TstCfg_PLUGGABLE_YES) ? 1 : - 0; + 0; getTestConfigOut->minQuestions = (int) TstCfg_GetConfigMin (); getTestConfigOut->defQuestions = (int) TstCfg_GetConfigDef (); getTestConfigOut->maxQuestions = (int) TstCfg_GetConfigMax (); diff --git a/swad_action.c b/swad_action.c index 8a5c94991..61d110bc8 100644 --- a/swad_action.c +++ b/swad_action.c @@ -546,7 +546,7 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = [ActSeeAsg ] = { 801, 1,TabAss,ActSeeAsg ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Asg_SeeAssignments ,"edit" }, [ActSeePrj ] = {1674, 2,TabAss,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_SeeProjects ,"file-invoice" }, [ActReqTst ] = { 103, 3,TabAss,ActReqTst ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_RequestTest ,"check" }, - [ActSeeAllExa ] = {1848, 4,TabAss,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_SeeAllExams ,"file-signature" }, + [ActSeeAllExa ] = {1848, 4,TabAss,ActSeeAllExa ,0x200,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_SeeAllExams ,"file-signature" }, [ActSeeAllGam ] = {1649, 4,TabAss,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_SeeAllGames ,"gamepad" }, [ActSeeAllSvy ] = { 966, 5,TabAss,ActSeeAllSvy ,0x3F8,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_SeeAllSurveys ,"poll" }, [ActSeeAllExaAnn ] = { 85, 6,TabAss,ActSeeAllExaAnn ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaAnn_ListExamAnnouncementsSee,"bullhorn" }, diff --git a/swad_changelog.h b/swad_changelog.h index fa964854e..154ed8ded 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -479,33 +479,7 @@ contiene una de las que yo imparto. As // TODO: Al exportar tests, los & hay que exportarlos como & o &#numero;, ya que un & no es correcto en XML. // TODO: Junto al enlace test.xml hay que indicar que se descarga con "Guardar enlace como..." porque si se abre, se copia y se pega, son incorrectos los < -/*****************************************************************************/ -/****************************** Public constants *****************************/ -/*****************************************************************************/ - -// Size of photos: -// find -iname '*.jpg' -exec du -cb {} + | grep total$ | cut -f1 | paste -sd+ - | bc -// find -iname '*original.jpg' -exec du -cb {} + | grep total$ | cut -f1 | paste -sd+ - | bc -// 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 -/* Printing: -En local: -enscript -1 --file-align=2 --highlight --line-numbers -o - * > swad17.26.7_bn_1_columna.ps -enscript -1 --color --file-align=2 --highlight --line-numbers -o - * > swad17.26.7_color_1_columna.ps -enscript -2 --landscape --file-align=2 --highlight --line-numbers -o - * > swad17.26.7_bn_2_columnas.ps -enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - * > swad17.26.7_color_2_columnas.ps -En OpenSWAD: -ps2pdf source.ps destination.pdf -*/ -#define Log_PLATFORM_VERSION "SWAD 19.193.2 (2020-04-23)" -#define CSS_FILE "swad19.193.1.css" -#define JS_FILE "swad19.193.1.js" -/* - * - Call parameters: - userID: string (DNI/passport, @nickname or email of the user). -// TODO: Geolocalización: - +/* TODO: Geolocalización: Función API sendCurrentLocation... Parámetros a enviar a la función: @@ -533,15 +507,15 @@ Funci 2. Añadir lista desplegable de MAC asociadas a una ubicación 3. API: getLocations (como parámetro se pasa la MAC) - que devolveria las filas de la tabla de ubicaciones asociadas a esa MAC - +*/ // TODO: Sugerencia de Jesús García Miranda. En las preguntas de tipo test de elección única (o un nuevo tipo con un nuevo nombre), - poner por ejemplo 10 o 20 opciones, con 3 o 4 verdaderas y las demás falsas, - y que swad saque una pregunta de 4 cogiendo una verdadera y 3 falsas al azar. +// poner por ejemplo 10 o 20 opciones, con 3 o 4 verdaderas y las demás falsas, +// y que swad saque una pregunta de 4 cogiendo una verdadera y 3 falsas al azar. // TODO: Laura García: "Ahora estoy utilizando la plataforma SWAD más que nunca, evidentemente, debido a las circunstancias, e incluso les he hecho un examencillo a los alumnos utilizando los test de autoevaluación. - Pero quería preguntarte un par de cosas: - - lo primero es si se pueden borrar los test realizados por cualquier usuario, incluido profesores. Yo misma he hecho un montón para simular el examen, y ya me están sobrando. - - por otra parte, he buscado pero no he encontrado, la posibilidad de cambiar la manera de corregir los tes, quitar la penalización por respuesta negativa,, o cambiarla, etc.. La verdad es que si se puede hacer me facilitaría un montón el trabajo próximo que nos espera con los alumnos." +// Pero quería preguntarte un par de cosas: +// - lo primero es si se pueden borrar los test realizados por cualquier usuario, incluido profesores. Yo misma he hecho un montón para simular el examen, y ya me están sobrando. +// - por otra parte, he buscado pero no he encontrado, la posibilidad de cambiar la manera de corregir los tes, quitar la penalización por respuesta negativa,, o cambiarla, etc.. La verdad es que si se puede hacer me facilitaría un montón el trabajo próximo que nos espera con los alumnos." // TODO: Hacer un nuevo rol en los TFG: tutor externo (profesor de áreas no vinculadas con el centro, profesionales de empresas, etc.) // TODO: Impedir la creación y edición de proyectos si no son editables. // TODO: No se puede entrar con DNI '1' suponiendo que no tenga password ¿por qué? @@ -552,6 +526,33 @@ Funci // TODO: Cambiar icono notificaciones nuevas con "bell-on.svg" // TODO: Ahmed El Moukhtari Koubaa: Cuando le damos a la opción de mostrar solo los mensajes no leídos, se muestran estos mensajes, pero cuando los intentamos leer, es decir, hacemos clic sobre ellos se recarga toda la página por así decirlo y vuelve a dar una lista con los mensajes, pero descartando aquel que clicamos porque, entiendo yo al menos, que ya lo ha marcado como leído. +/*****************************************************************************/ +/****************************** Public constants *****************************/ +/*****************************************************************************/ + +// Size of photos: +// find -iname '*.jpg' -exec du -cb {} + | grep total$ | cut -f1 | paste -sd+ - | bc +// find -iname '*original.jpg' -exec du -cb {} + | grep total$ | cut -f1 | paste -sd+ - | bc +// 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 +/* Printing: +En local: +enscript -1 --file-align=2 --highlight --line-numbers -o - * > swad17.26.7_bn_1_columna.ps +enscript -1 --color --file-align=2 --highlight --line-numbers -o - * > swad17.26.7_color_1_columna.ps +enscript -2 --landscape --file-align=2 --highlight --line-numbers -o - * > swad17.26.7_bn_2_columnas.ps +enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - * > swad17.26.7_color_2_columnas.ps +En OpenSWAD: +ps2pdf source.ps destination.pdf +*/ +#define Log_PLATFORM_VERSION "SWAD 19.193.3 (2020-04-23)" +#define CSS_FILE "swad19.193.1.css" +#define JS_FILE "swad19.193.1.js" +/* + Version 19.193.3: Apr 23, 2020 Added new MIME type, reported by Jesús Garrido Manrique. + Changed text in test configuration. (297640 lines) + 1 change necessary in database: +UPDATE tst_config SET Pluggable='unknown' WHERE Pluggable='Y'; + Version 19.193.2: Apr 23, 2020 Buttons translated in tests. (297626 lines) Version 19.193.1: Apr 23, 2020 Changes in CSS for exams. Changes in JavaScript for exams. (297623 lines) diff --git a/swad_file_MIME.c b/swad_file_MIME.c index 9e68cdeac..d185532e1 100644 --- a/swad_file_MIME.c +++ b/swad_file_MIME.c @@ -106,6 +106,7 @@ const char *MIM_MIMETypesAllowed[] = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", // Excel Microsoft Office Open XML Format Spreadsheet .xlsx "application/vnd.openxmlformats-officedocument.wordprocessingml.document", // Word Microsoft Office Open XML Format Document .docx "application/vnd.pdf", // PDF + "application/vnd.rar", // RAR "application/vnd.wolfram.mathematica.package", // Octave .m file "application/x-7z-compressed", // 7 zip compressed file "application/x-bz2", // Bzip 2 UNIX Compressed File diff --git a/swad_help_URL.c b/swad_help_URL.c index 72c428ef6..0841fc591 100644 --- a/swad_help_URL.c +++ b/swad_help_URL.c @@ -1369,6 +1369,27 @@ const char *Hlp_ASSESSMENT_Tests_writing_a_question = "ASSESSMENT.Tests.en#writing-a-question"; #endif +const char *Hlp_ASSESSMENT_Tests_configuring_tests = +#if L==1 + "ASSESSMENT.Tests.es#configurar-test"; +#elif L==2 + "ASSESSMENT.Tests.en#configuring-tests"; +#elif L==3 + "ASSESSMENT.Tests.en#configuring-tests"; +#elif L==4 + "ASSESSMENT.Tests.es#configurar-test"; +#elif L==5 + "ASSESSMENT.Tests.en#configuring-tests"; +#elif L==6 + "ASSESSMENT.Tests.es#configurar-test"; +#elif L==7 + "ASSESSMENT.Tests.en#configuring-tests"; +#elif L==8 + "ASSESSMENT.Tests.en#configuring-tests"; +#elif L==9 + "ASSESSMENT.Tests.en#configuring-tests"; +#endif + const char *Hlp_ASSESSMENT_Tests_results = #if L==1 "ASSESSMENT.Tests.es#resultados"; diff --git a/swad_test.c b/swad_test.c index 79b42766f..975a508bc 100644 --- a/swad_test.c +++ b/swad_test.c @@ -1464,11 +1464,11 @@ static void Tst_PutButtonToAddQuestion (void) void Tst_ShowFormConfig (void) { - extern const char *Txt_Please_specify_if_you_allow_access_to_test_questions_from_mobile_applications; + extern const char *Txt_Please_specify_if_you_allow_downloading_the_question_bank_from_other_applications; /***** If current course has tests and pluggable is unknown... *****/ if (Tst_CheckIfCourseHaveTestsAndPluggableIsUnknown ()) - Ale_ShowAlert (Ale_WARNING,Txt_Please_specify_if_you_allow_access_to_test_questions_from_mobile_applications); + Ale_ShowAlert (Ale_WARNING,Txt_Please_specify_if_you_allow_downloading_the_question_bank_from_other_applications); /***** Form to configure test *****/ Tst_ShowFormConfigTst (); @@ -1668,7 +1668,7 @@ bool Tst_CheckIfCourseHaveTestsAndPluggableIsUnknown (void) row = mysql_fetch_row (mysql_res); TstCfg_SetConfigPluggable (TstCfg_PLUGGABLE_UNKNOWN); - for (Pluggable = TstCfg_PLUGGABLE_NO; + for (Pluggable = TstCfg_PLUGGABLE_NO; Pluggable <= TstCfg_PLUGGABLE_YES; Pluggable++) if (!strcmp (row[0],TstCfg_PluggableDB[Pluggable])) @@ -1847,7 +1847,7 @@ static void Tst_ShowFormSelTags (const struct Tst_Tags *Tags, static void Tst_ShowFormEditTags (void) { - extern const char *Hlp_ASSESSMENT_Tests_writing_a_question; + extern const char *Hlp_ASSESSMENT_Tests_configuring_tests; extern const char *Txt_No_test_questions; extern const char *Txt_Tags; MYSQL_RES *mysql_res; @@ -1862,7 +1862,7 @@ static void Tst_ShowFormEditTags (void) /***** Begin box and table *****/ Box_BoxTableBegin (NULL,Txt_Tags, NULL,NULL, - Hlp_ASSESSMENT_Tests_writing_a_question,Box_NOT_CLOSABLE,2); + Hlp_ASSESSMENT_Tests_configuring_tests,Box_NOT_CLOSABLE,2); /***** Show tags *****/ for (NumTag = 0; @@ -1952,7 +1952,7 @@ static void Tst_PutIconDisable (long TagCod,const char *TagTxt) static void Tst_ShowFormConfigTst (void) { - extern const char *Hlp_ASSESSMENT_Tests; + extern const char *Hlp_ASSESSMENT_Tests_configuring_tests; extern const char *The_ClassFormInBox[The_NUM_THEMES]; extern const char *Txt_Configure_tests; extern const char *Txt_Plugins; @@ -1977,7 +1977,7 @@ static void Tst_ShowFormConfigTst (void) /***** Begin box *****/ Box_BoxBegin (NULL,Txt_Configure_tests, Tst_PutIconsTests,&Test, - Hlp_ASSESSMENT_Tests,Box_NOT_CLOSABLE); + Hlp_ASSESSMENT_Tests_configuring_tests,Box_NOT_CLOSABLE); /***** Begin form *****/ Frm_StartForm (ActRcvCfgTst); @@ -1991,7 +1991,7 @@ static void Tst_ShowFormConfigTst (void) HTM_TD_End (); HTM_TD_Begin ("class=\"LB\""); - for (Pluggable = TstCfg_PLUGGABLE_NO; + for (Pluggable = TstCfg_PLUGGABLE_NO; Pluggable <= TstCfg_PLUGGABLE_YES; Pluggable++) { @@ -2000,7 +2000,7 @@ static void Tst_ShowFormConfigTst (void) "value=\"%u\"%s", (unsigned) Pluggable, Pluggable == TstCfg_GetConfigPluggable () ? " checked=\"checked\"" : - ""); + ""); HTM_Txt (Txt_TST_PLUGGABLE[Pluggable]); HTM_LABEL_End (); HTM_BR (); diff --git a/swad_test_config.c b/swad_test_config.c index aa1f8409b..b4b9ae2f8 100644 --- a/swad_test_config.c +++ b/swad_test_config.c @@ -135,7 +135,7 @@ void TstCfg_GetConfigFromRow (MYSQL_ROW row) /***** Get whether test are visible via plugins or not *****/ TstCfg_SetConfigPluggable (TstCfg_PLUGGABLE_UNKNOWN); - for (Pluggable = TstCfg_PLUGGABLE_NO; + for (Pluggable = TstCfg_PLUGGABLE_NO; Pluggable <= TstCfg_PLUGGABLE_YES; Pluggable++) if (!strcmp (row[0],TstCfg_PluggableDB[Pluggable])) diff --git a/swad_text.c b/swad_text.c index d4779a7fa..514214b8b 100644 --- a/swad_text.c +++ b/swad_text.c @@ -30687,34 +30687,25 @@ const char *Txt_Please_select_your_institution = "Por favor, selecione sua instituição."; #endif -const char *Txt_Please_specify_if_you_allow_access_to_test_questions_from_mobile_applications = +const char *Txt_Please_specify_if_you_allow_downloading_the_question_bank_from_other_applications = #if L==1 // ca - "Por favor, especifique si permite el acceso" - " a las preguntas de test desde aplicaciones móviles."; // Necessita traduccio + "Si us plau, especifiqui si permet la descàrrega de el banc de preguntes des d'altres aplicacions."; #elif L==2 // de - "Please specify if you allow access" - " to test questions from mobile applications."; // Need Übersetzung + "Bitte geben Sie an, ob Sie das Herunterladen der Fragenbank aus anderen Anwendungen zulassen."; #elif L==3 // en - "Please specify if you allow access" - " to test questions from mobile applications."; + "Please specify if you allow downloading the question bank from other applications."; #elif L==4 // es - "Por favor, especifique si permite el acceso" - " a las preguntas de test desde aplicaciones móviles."; + "Por favor, especifique si permite la descarga del banco de preguntas desde otras aplicaciones."; #elif L==5 // fr - "Please specify if you allow access" - " to test questions from mobile applications."; // Besoin de traduction + "Veuillez indiquer si vous autorisez le téléchargement de la banque de questions à partir d'autres applications."; #elif L==6 // gn - "Por favor, especifique si permite el acceso" - " a las preguntas de test desde aplicaciones móviles."; // Okoteve traducción + "Por favor, especifique si permite la descarga del banco de preguntas desde otras aplicaciones."; // Okoteve traducción #elif L==7 // it - "Please specify if you allow access" - " to test questions from mobile applications."; // Bisogno di traduzione + "Si prega di specificare se si consente il download della banca delle domande da altre applicazioni."; #elif L==8 // pl - "Please specify if you allow access" - " to test questions from mobile applications."; // Potrzebujesz tlumaczenie + "Określ, czy zezwalasz na pobieranie banku pytań z innych aplikacji."; #elif L==9 // pt - "Por favor, especifique se você permite acesso" - " para perguntas de teste de aplicativos para dispositivos móveis."; + "Por favor, especifique se você deseja baixar o banco de perguntas de outros aplicativos."; #endif const char *Txt_Please_wait_ = @@ -52997,44 +52988,44 @@ const char *Txt_TST_PLUGGABLE[TstCfg_NUM_OPTIONS_PLUGGABLE] = "", [TstCfg_PLUGGABLE_NO] = #if L==1 // ca - "Tests no visibles des de mòbils (SWADroid, TriSWADos)" + "Banc de preguntes no descarregable/visible des d'altres aplicacions (SWADroid, iSWAD, TriSWADos)." #elif L==2 // de - "Tests nicht zum Download aus Handys (SWADroid, TriSWADos)" + "Fragenbank nicht herunterladbar/sichtbar von anderen Anwendungen (SWADroid, iSWAD, TriSWADos)." #elif L==3 // en - "Tests not downloadable from mobile phones (SWADroid, TriSWADos)" + "Question bank not downloadable/visible from other applications (SWADroid, iSWAD, TriSWADos)." #elif L==4 // es - "Tests no visibles desde móviles (SWADroid, TriSWADos)" + "Banco de preguntas no descargable/visible desde otras aplicaciones (SWADroid, iSWAD, TriSWADos)." #elif L==5 // fr - "Tests non téléchargeables à partir de mobiles (SWADroid, TriSWADos)" + "Banque de questions non téléchargeable/visible depuis d'autres applications (SWADroid, iSWAD, TriSWADos)." #elif L==6 // gn - "Tests no visibles desde móviles (SWADroid, TriSWADos)" // Okoteve traducción + "Banco de preguntas no descargable/visible desde otras aplicaciones (SWADroid, iSWAD, TriSWADos)."// Okoteve traducción #elif L==7 // it - "Test non scaricabili da cellulari (SWADroid, TriSWADos)" + "Banca di domande non scaricabile/visibile da altre applicazioni (SWADroid, iSWAD, TriSWADos)." #elif L==8 // pl - "Nie Testy pobrania z komórkowych (SWADroid, TriSWADos)" + "Bank pytań nie do pobrania/widoczny z innych aplikacji (SWADroid, iSWAD, TriSWADos)." #elif L==9 // pt - "Testes não para download de celulares (SWADroid, TriSWADos)" + "Banco de perguntas não disponível para download/visível de outros aplicativos (SWADroid, iSWAD, TriSWADos)." #endif , [TstCfg_PLUGGABLE_YES] = #if L==1 // ca - "Tests visibles des de mòbils (SWADroid, TriSWADos), opció recomanada" + "Banc de preguntes descarregable/visible des d'altres aplicacions (SWADroid, iSWAD, TriSWADos)." #elif L==2 // de - "Tests zum Download aus Handys (SWADroid, TriSWADos), empfohlene Option" + "Fragenbank herunterladbar/sichtbar von anderen Anwendungen (SWADroid, iSWAD, TriSWADos)." #elif L==3 // en - "Tests downloadable from mobile phones (SWADroid, TriSWADos), recommended option" + "Question bank downloadable/visible from other applications (SWADroid, iSWAD, TriSWADos)." #elif L==4 // es - "Tests visibles desde móviles (SWADroid, TriSWADos), opción recomendada" + "Banco de preguntas descargable/visible desde otras aplicaciones (SWADroid, iSWAD, TriSWADos)." #elif L==5 // fr - "Tests téléchargeables à partir de mobiles (SWADroid, TriSWADos), option recommandée" + "Banque de questions téléchargeable/visible depuis d'autres applications (SWADroid, iSWAD, TriSWADos)." #elif L==6 // gn - "Tests visibles desde móviles (SWADroid, TriSWADos), opción recomendada"// Okoteve traducción + "Banco de preguntas descargable/visible desde otras aplicaciones (SWADroid, iSWAD, TriSWADos)."// Okoteve traducción #elif L==7 // it - "Test scaricabili da cellulari (SWADroid, TriSWADos), opzione consigliata" + "Banca di domande scaricabile/visibile da altre applicazioni (SWADroid, iSWAD, TriSWADos)." #elif L==8 // pl - "Testy do pobrania z komórkowych (SWADroid, TriSWADos), zalecana opcja" + "Bank pytań do pobrania/widoczny z innych aplikacji (SWADroid, iSWAD, TriSWADos)." #elif L==9 // pt - "Testes para download de celulares (SWADroid, TriSWADos), opção recomendada" + "Banco de perguntas disponível para download/visível de outros aplicativos (SWADroid, iSWAD, TriSWADos)." #endif };