"
- ""
diff --git a/swad_button.h b/swad_button.h
index dd9270354..4c36aea01 100644
--- a/swad_button.h
+++ b/swad_button.h
@@ -55,6 +55,7 @@ void Btn_PutConfirmButton (const char *TxtButton);
void Btn_PutConfirmButtonInline (const char *TxtButton);
void Btn_PutRemoveButton (const char *TxtButton);
void Btn_PutRemoveButtonInline (const char *TxtButton);
-void Btn_PutCloseButton (const char *TxtButton);
+void Btn_PutCloseBoxButtonInline (const char *TxtButton);
+void Btn_PutCloseTabButton (const char *TxtButton);
#endif
diff --git a/swad_changelog.h b/swad_changelog.h
index 6998f1211..928074d32 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -437,6 +437,8 @@ Lo de mutear anuncios, en principio prefiero hacer una opci
// TODO: Probar qué ocurre si se está jugando una partida en una pestaña y se reanuda la misma en otra pestaña (da igual otra pestaña que otro navegador u ordenador)
// TODO: ¿Puede un profesor reanudar una partida comenzada por otro profesor?
+// TODO: Perico: bloquear la subida de archivos por parte de estudiantes (no tiene que ver con el bloqueo de la edición de proyectos)
+
/*****************************************************************************/
/****************************** Public constants *****************************/
/*****************************************************************************/
@@ -456,10 +458,11 @@ En OpenSWAD:
ps2pdf source.ps destination.pdf
*/
-#define Log_PLATFORM_VERSION "SWAD 18.128 (2019-06-13)"
+#define Log_PLATFORM_VERSION "SWAD 18.129 (2019-07-04)"
#define CSS_FILE "swad18.123.css"
#define JS_FILE "swad18.123.js"
/*
+ Version 18.129: Jul 04, 2019 Button to skip step in creation of a new account. (243425 lines)
Version 18.128: Jun 13, 2019 Fixed bug in creation of degrees. (243365 lines)
Version 18.127.3: May 31, 2019 Code refactoring and cleaning in games. (243346 lines)
Version 18.127.2: May 31, 2019 Question index is shown in match status.
diff --git a/swad_game.c b/swad_game.c
index b4d0e7165..da805d73a 100644
--- a/swad_game.c
+++ b/swad_game.c
@@ -3509,7 +3509,7 @@ static void Gam_ShowAlertFinishedMatch (void)
Ale_ShowAlert (Ale_WARNING,Txt_Finished_match);
/***** Button to close browser tab *****/
- Btn_PutCloseButton ("Cerrar"); // TODO: Need translation!!!!!
+ Btn_PutCloseTabButton ("Cerrar"); // TODO: Need translation!!!!!
}
/*****************************************************************************/
diff --git a/swad_global.c b/swad_global.c
index 73ffcdb82..c2551783f 100644
--- a/swad_global.c
+++ b/swad_global.c
@@ -124,6 +124,8 @@ void Gbl_InitializeGlobals (void)
Gbl.Form.Num = -1; // Number of form. It's increased by 1 at the begin of each form
Gbl.Form.Inside = false; // Set to true inside a form to avoid nested forms
+ Gbl.Box.Nested = -1; // -1 means no box open
+
Gbl.Alerts.Num = 0; // No pending alerts to be shown
Gbl.DB.DatabaseIsOpen = false;
diff --git a/swad_global.h b/swad_global.h
index a769e5d90..47780df7d 100644
--- a/swad_global.h
+++ b/swad_global.h
@@ -38,6 +38,7 @@
#include "swad_assignment.h"
#include "swad_attendance.h"
#include "swad_banner.h"
+#include "swad_box.h"
#include "swad_centre.h"
#include "swad_classroom.h"
#include "swad_connected.h"
@@ -106,6 +107,11 @@ struct Globals
char UniqueId[32 + Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64 + 10 + 1]; // Unique identifier string used in forms
bool Inside; // Set to true inside a form to avoid nested forms
} Form;
+ struct
+ {
+ int Nested; // Index of top open box
+ char *Ids[Box_MAX_NESTED]; // 0 <= box index < Box_MAX_NESTED
+ } Box;
struct
{
size_t Num; // Number of alert
diff --git a/swad_text.c b/swad_text.c
index 067ac1e74..2fe01e005 100644
--- a/swad_text.c
+++ b/swad_text.c
@@ -39257,6 +39257,27 @@ const char *Txt_Size_of_photos =
"Tamanho das fotos";
#endif
+const char *Txt_Skip_this_step =
+#if L==1 // ca
+ "Saltar aquest pas";
+#elif L==2 // de
+ "Überspringen Sie diesen Schritt";
+#elif L==3 // en
+ "Skip this step";
+#elif L==4 // es
+ "Saltar este paso";
+#elif L==5 // fr
+ "Passer cette étape";
+#elif L==6 // gn
+ "Saltar este paso"; // Okoteve traducción
+#elif L==7 // it
+ "Salta questo passaggio";
+#elif L==8 // pl
+ "Pomiń ten krok";
+#elif L==9 // pt
+ "Pule esta etapa";
+#endif
+
const char *Txt_Sort_degrees_by =
#if L==1 // ca
"Ordenar titulacions per";