mirror of https://github.com/acanas/swad-core.git
Version18.129
This commit is contained in:
parent
971d7f19d9
commit
03b97e1ba6
|
@ -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 "${INPUTS}"" 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 "${INPUTS}"" prefer-non-shared="true">
|
||||
|
||||
<language-scope id="org.eclipse.cdt.core.gcc"/>
|
||||
|
||||
|
|
|
@ -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 ();
|
||||
}
|
||||
|
|
43
swad_box.c
43
swad_box.c
|
@ -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--;
|
||||
}
|
||||
|
|
|
@ -35,6 +35,8 @@
|
|||
/****************************** Public constants *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define Box_MAX_NESTED 10
|
||||
|
||||
/*****************************************************************************/
|
||||
/********************************* Public types ******************************/
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -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>"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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!!!!!
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
21
swad_text.c
21
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";
|
||||
|
|
Loading…
Reference in New Issue