Version18.129

This commit is contained in:
Antonio Cañas Vargas 2019-07-04 10:13:51 +02:00
parent 971d7f19d9
commit 03b97e1ba6
11 changed files with 87 additions and 18 deletions

View File

@ -11,7 +11,7 @@
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuildCommandParser" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser" keep-relative-paths="false" name="CDT GCC Build Output Parser" parameter="(g?cc)|([gc]\+\+)|(clang)" prefer-non-shared="true"/>
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="-524711994852726662" id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="-524615883298614662" id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>

View File

@ -139,6 +139,7 @@ static void Acc_ShowFormCheckIfIHaveAccount (const char *Title)
extern const char *Txt_If_you_think_you_may_have_been_registered_;
extern const char *Txt_ID;
extern const char *Txt_Check;
extern const char *Txt_Skip_this_step;
/***** Start box *****/
Box_StartBox (NULL,Title,NULL,
@ -157,9 +158,12 @@ static void Acc_ShowFormCheckIfIHaveAccount (const char *Title)
"</label>",
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_ID,
ID_MAX_CHARS_USR_ID);
Btn_PutConfirmButton (Txt_Check);
Btn_PutConfirmButtonInline (Txt_Check);
Frm_EndForm ();
/***** Form to skip this step *****/
Btn_PutCloseBoxButtonInline (Txt_Skip_this_step);
/***** End box *****/
Box_EndBox ();
}

View File

@ -54,11 +54,9 @@ extern struct Globals Gbl;
/*****************************************************************************/
/*****************************************************************************/
/***************************** Private variabled *****************************/
/***************************** Private variables *****************************/
/*****************************************************************************/
static unsigned Box_Nested = 0;
/*****************************************************************************/
/***************************** Private prototypes ****************************/
/*****************************************************************************/
@ -114,6 +112,7 @@ void Box_StartBoxShadow (const char *Width,const char *Title,
"FRAME_SHADOW");
}
// Return pointer to box id string
static void Box_StartBoxInternal (const char *Width,const char *Title,
void (*FunctionToDrawContextualIcons) (void),
const char *HelpLink,Box_Closable_t Closable,
@ -121,15 +120,30 @@ static void Box_StartBoxInternal (const char *Width,const char *Title,
{
extern const char *Txt_Help;
extern const char *Txt_Close;
char IdFrame[Frm_MAX_BYTES_ID + 1];
/***** Check level of nesting *****/
if (Gbl.Box.Nested >= Box_MAX_NESTED - 1) // Can not nest a new box
Lay_ShowErrorAndExit ("Box nesting limit reached.");
/***** Increase level of nesting *****/
Gbl.Box.Nested++;
/***** Create unique identifier for this box *****/
if (Closable == Box_CLOSABLE)
{
if ((Gbl.Box.Ids[Gbl.Box.Nested] = (char *) malloc (Frm_MAX_BYTES_ID + 1)) == NULL)
Lay_ShowErrorAndExit ("Error allocating memory for box id.");
}
else
Gbl.Box.Ids[Gbl.Box.Nested] = NULL;
/***** Start box container *****/
fprintf (Gbl.F.Out,"<div class=\"FRAME_CONTAINER\"");
if (Closable == Box_CLOSABLE)
{
/* Create unique id for alert */
Frm_SetUniqueId (IdFrame);
fprintf (Gbl.F.Out," id=\"%s\"",IdFrame);
Frm_SetUniqueId (Gbl.Box.Ids[Gbl.Box.Nested]);
fprintf (Gbl.F.Out," id=\"%s\"",Gbl.Box.Ids[Gbl.Box.Nested]);
}
fprintf (Gbl.F.Out,">");
@ -166,7 +180,7 @@ static void Box_StartBoxInternal (const char *Width,const char *Title,
{
fprintf (Gbl.F.Out,"<a href=\"\""
" onclick=\"toggleDisplay('%s');return false;\" />",
IdFrame);
Gbl.Box.Ids[Gbl.Box.Nested]);
Ico_PutDivIcon ("CONTEXT_OPT HLP_HIGHLIGHT",
"close.svg",Txt_Close);
fprintf (Gbl.F.Out,"</a>");
@ -182,11 +196,9 @@ static void Box_StartBoxInternal (const char *Width,const char *Title,
fprintf (Gbl.F.Out,"<div class=\"FRAME_TITLE %s\">"
"%s"
"</div>",
Box_Nested ? "FRAME_TITLE_SMALL" :
Gbl.Box.Nested ? "FRAME_TITLE_SMALL" :
"FRAME_TITLE_BIG",
Title);
Box_Nested++;
}
void Box_EndBoxTable (void)
@ -209,9 +221,18 @@ void Box_EndBoxWithButton (Btn_Button_t Button,const char *TxtButton)
void Box_EndBox (void)
{
Box_Nested--;
/***** Check level of nesting *****/
if (Gbl.Box.Nested < 0)
Lay_ShowErrorAndExit ("Trying to end a box not open.");
/***** Free memory allocated for box id string *****/
if (Gbl.Box.Ids[Gbl.Box.Nested])
free (Gbl.Box.Ids[Gbl.Box.Nested]);
/***** End box and box container *****/
fprintf (Gbl.F.Out,"</div>"
"</div>");
/***** Decrease level of nesting *****/
Gbl.Box.Nested--;
}

View File

@ -35,6 +35,8 @@
/****************************** Public constants *****************************/
/*****************************************************************************/
#define Box_MAX_NESTED 10
/*****************************************************************************/
/********************************* Public types ******************************/
/*****************************************************************************/

View File

@ -150,10 +150,19 @@ void Btn_PutRemoveButtonInline (const char *TxtButton)
TxtButton);
}
void Btn_PutCloseButton (const char *TxtButton)
void Btn_PutCloseBoxButtonInline (const char *TxtButton)
{
fprintf (Gbl.F.Out,"<button type=\"submit\" class=\"BT_SUBMIT_INLINE BT_REMOVE\""
" onclick=\"toggleDisplay('%s');return false;\">"
"%s"
"</button>",
Gbl.Box.Ids[Gbl.Box.Nested],TxtButton);
}
void Btn_PutCloseTabButton (const char *TxtButton)
{
fprintf (Gbl.F.Out,"<div class=\"CENTER_MIDDLE\">"
"<button type=\"submit\" class=\"BT_SUBMIT BT_CONFIRM\""
"<button type=\"submit\" class=\"BT_SUBMIT BT_REMOVE\""
" onclick=\"window.close();\">"
"%s"
"</button>"

View File

@ -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

View File

@ -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.

View File

@ -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!!!!!
}
/*****************************************************************************/

View File

@ -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;

View File

@ -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

View File

@ -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
"&Uuml;berspringen Sie diesen Schritt";
#elif L==3 // en
"Skip this step";
#elif L==4 // es
"Saltar este paso";
#elif L==5 // fr
"Passer cette &eacute;tape";
#elif L==6 // gn
"Saltar este paso"; // Okoteve traducción
#elif L==7 // it
"Salta questo passaggio";
#elif L==8 // pl
"Pomi&nacute; ten krok";
#elif L==9 // pt
"Pule esta etapa";
#endif
const char *Txt_Sort_degrees_by =
#if L==1 // ca
"Ordenar titulacions per";