Version 18.26.3

This commit is contained in:
Antonio Cañas Vargas 2019-01-03 11:32:14 +01:00
parent 9eb9a8bafd
commit 300c651135
5 changed files with 110 additions and 93 deletions

View File

@ -345,6 +345,8 @@ Buenos d
// TODO: Que un grupo tenga asociado un lugar, como un aula, así al hacer un evento de asistencia, podría tener por defecto el lugar asignado al grupo elegido. // TODO: Que un grupo tenga asociado un lugar, como un aula, así al hacer un evento de asistencia, podría tener por defecto el lugar asignado al grupo elegido.
// TODO: Refactorize OrderBySubQuery
/*****************************************************************************/ /*****************************************************************************/
/****************************** Public constants *****************************/ /****************************** Public constants *****************************/
/*****************************************************************************/ /*****************************************************************************/
@ -364,11 +366,12 @@ En OpenSWAD:
ps2pdf source.ps destination.pdf ps2pdf source.ps destination.pdf
*/ */
#define Log_PLATFORM_VERSION "SWAD 18.26.2 (2019-01-02)" #define Log_PLATFORM_VERSION "SWAD 18.26.3 (2019-01-03)"
#define CSS_FILE "swad18.22.css" #define CSS_FILE "swad18.22.css"
#define JS_FILE "swad17.17.1.js" #define JS_FILE "swad17.17.1.js"
/* /*
Version 18.26.2: Jan 02, 2019 New field location in classrooms table. (238711 lines) Version 18.26.3: Jan 03, 2019 New column location in classrooms listing. (238725 lines)
Version 18.26.2: Jan 02, 2019 New column location in classrooms table. (238711 lines)
1 change necessary in database: 1 change necessary in database:
ALTER TABLE classrooms ADD COLUMN Location VARCHAR(2047) NOT NULL AFTER Capacity; ALTER TABLE classrooms ADD COLUMN Location VARCHAR(2047) NOT NULL AFTER Capacity;

View File

@ -25,7 +25,9 @@
/********************************** Headers **********************************/ /********************************** Headers **********************************/
/*****************************************************************************/ /*****************************************************************************/
#define _GNU_SOURCE // For asprintf
#include <linux/stddef.h> // For NULL #include <linux/stddef.h> // For NULL
#include <stdio.h> // For asprintf
#include <string.h> // For string functions #include <string.h> // For string functions
#include "swad_box.h" #include "swad_box.h"
@ -84,8 +86,8 @@ void Cla_SeeClassrooms (void)
{ {
extern const char *Hlp_CENTRE_Classrooms; extern const char *Hlp_CENTRE_Classrooms;
extern const char *Txt_Classrooms; extern const char *Txt_Classrooms;
extern const char *Txt_CLASSROOMS_HELP_ORDER[2]; extern const char *Txt_CLASSROOMS_HELP_ORDER[Cla_NUM_ORDERS];
extern const char *Txt_CLASSROOMS_ORDER[2]; extern const char *Txt_CLASSROOMS_ORDER[Cla_NUM_ORDERS];
extern const char *Txt_New_classroom; extern const char *Txt_New_classroom;
Cla_Order_t Order; Cla_Order_t Order;
unsigned NumCla; unsigned NumCla;
@ -103,8 +105,8 @@ void Cla_SeeClassrooms (void)
Hlp_CENTRE_Classrooms,Box_NOT_CLOSABLE); Hlp_CENTRE_Classrooms,Box_NOT_CLOSABLE);
Tbl_StartTableWideMargin (2); Tbl_StartTableWideMargin (2);
fprintf (Gbl.F.Out,"<tr>"); fprintf (Gbl.F.Out,"<tr>");
for (Order = Cla_ORDER_BY_CLASSROOM; for (Order = (Cla_Order_t) 0;
Order <= Cla_ORDER_BY_CAPACITY; Order <= (Cla_Order_t) (Cla_NUM_ORDERS - 1);
Order++) Order++)
{ {
fprintf (Gbl.F.Out,"<th class=\"LEFT_MIDDLE\">"); fprintf (Gbl.F.Out,"<th class=\"LEFT_MIDDLE\">");
@ -136,7 +138,11 @@ void Cla_SeeClassrooms (void)
Gbl.Classrooms.Lst[NumCla].FullName); Gbl.Classrooms.Lst[NumCla].FullName);
Cla_WriteCapacity (Gbl.Classrooms.Lst[NumCla].Capacity); Cla_WriteCapacity (Gbl.Classrooms.Lst[NumCla].Capacity);
fprintf (Gbl.F.Out,"</td>" fprintf (Gbl.F.Out,"</td>"
"</tr>"); "<td class=\"DAT LEFT_MIDDLE\">"
"%s"
"</td>"
"</tr>",
Gbl.Classrooms.Lst[NumCla].Location);
} }
/***** End table *****/ /***** End table *****/
@ -261,7 +267,7 @@ void Cla_PutIconToViewClassrooms (void)
void Cla_GetListClassrooms (void) void Cla_GetListClassrooms (void)
{ {
char OrderBySubQuery[256]; char *OrderBySubQuery;
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
MYSQL_ROW row; MYSQL_ROW row;
unsigned long NumRows; unsigned long NumRows;
@ -269,26 +275,41 @@ void Cla_GetListClassrooms (void)
struct Classroom *Cla; struct Classroom *Cla;
/***** Get classrooms from database *****/ /***** Get classrooms from database *****/
/* Build order subquery */
switch (Gbl.Classrooms.SelectedOrder) switch (Gbl.Classrooms.SelectedOrder)
{ {
case Cla_ORDER_BY_CLASSROOM: case Cla_ORDER_BY_CLASSROOM:
sprintf (OrderBySubQuery,"FullName"); if (asprintf (&OrderBySubQuery,"FullName") < 0)
Lay_NotEnoughMemoryExit ();
break; break;
case Cla_ORDER_BY_CAPACITY: case Cla_ORDER_BY_CAPACITY:
sprintf (OrderBySubQuery,"Capacity DESC,FullName"); if (asprintf (&OrderBySubQuery,"Capacity DESC,"
"FullName") < 0)
Lay_NotEnoughMemoryExit ();
break;
case Cla_ORDER_BY_LOCATION:
if (asprintf (&OrderBySubQuery,"Location DESC,"
"FullName") < 0)
Lay_NotEnoughMemoryExit ();
break; break;
} }
/* Build query */
NumRows = DB_QuerySELECT (&mysql_res,"can not get classrooms", NumRows = DB_QuerySELECT (&mysql_res,"can not get classrooms",
"SELECT ClaCod," "SELECT ClaCod,"
"ShortName," "ShortName,"
"FullName," "FullName,"
"Capacity" "Capacity,"
"Location"
" FROM classrooms" " FROM classrooms"
" WHERE CtrCod=%ld" " WHERE CtrCod=%ld"
" ORDER BY %s", " ORDER BY %s",
Gbl.CurrentCtr.Ctr.CtrCod, Gbl.CurrentCtr.Ctr.CtrCod,
OrderBySubQuery); OrderBySubQuery);
/* Free allocated memory for subquery */
free ((void *) OrderBySubQuery);
/***** Count number of rows in result *****/ /***** Count number of rows in result *****/
if (NumRows) // Classrooms found... if (NumRows) // Classrooms found...
{ {
@ -314,15 +335,19 @@ void Cla_GetListClassrooms (void)
/* Get the short name of the classroom (row[1]) */ /* Get the short name of the classroom (row[1]) */
Str_Copy (Cla->ShrtName,row[1], Str_Copy (Cla->ShrtName,row[1],
Cla_MAX_BYTES_CLASSROOM_SHRT_NAME); Cla_MAX_BYTES_SHRT_NAME);
/* Get the full name of the classroom (row[2]) */ /* Get the full name of the classroom (row[2]) */
Str_Copy (Cla->FullName,row[2], Str_Copy (Cla->FullName,row[2],
Cla_MAX_BYTES_CLASSROOM_FULL_NAME); Cla_MAX_BYTES_FULL_NAME);
/* Get seating capacity in this classroom (row[3]) */ /* Get seating capacity in this classroom (row[3]) */
if (sscanf (row[3],"%u",&Cla->Capacity) != 1) if (sscanf (row[3],"%u",&Cla->Capacity) != 1)
Cla->Capacity = Cla_UNLIMITED_CAPACITY; Cla->Capacity = Cla_UNLIMITED_CAPACITY;
/* Get the full name of the classroom (row[4]) */
Str_Copy (Cla->Location,row[4],
Cla_MAX_BYTES_LOCATION);
} }
} }
else else
@ -338,8 +363,6 @@ void Cla_GetListClassrooms (void)
void Cla_GetDataOfClassroomByCod (struct Classroom *Cla) void Cla_GetDataOfClassroomByCod (struct Classroom *Cla)
{ {
extern const char *Txt_Classroom_unspecified;
extern const char *Txt_Another_classroom;
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
MYSQL_ROW row; MYSQL_ROW row;
unsigned long NumRows; unsigned long NumRows;
@ -348,29 +371,17 @@ void Cla_GetDataOfClassroomByCod (struct Classroom *Cla)
Cla->ShrtName[0] = '\0'; Cla->ShrtName[0] = '\0';
Cla->FullName[0] = '\0'; Cla->FullName[0] = '\0';
Cla->Capacity = Cla_UNLIMITED_CAPACITY; Cla->Capacity = Cla_UNLIMITED_CAPACITY;
Cla->Location[0] = '\0';
/***** Check if classroom code is correct *****/ /***** Check if classroom code is correct *****/
if (Cla->ClaCod < 0) if (Cla->ClaCod > 0)
{
Str_Copy (Cla->ShrtName,Txt_Classroom_unspecified,
Cla_MAX_BYTES_CLASSROOM_SHRT_NAME);
Str_Copy (Cla->FullName,Txt_Classroom_unspecified,
Cla_MAX_BYTES_CLASSROOM_FULL_NAME);
}
else if (Cla->ClaCod == 0)
{
Str_Copy (Cla->ShrtName,Txt_Another_classroom,
Cla_MAX_BYTES_CLASSROOM_SHRT_NAME);
Str_Copy (Cla->FullName,Txt_Another_classroom,
Cla_MAX_BYTES_CLASSROOM_FULL_NAME);
}
else if (Cla->ClaCod > 0)
{ {
/***** Get data of a classroom from database *****/ /***** Get data of a classroom from database *****/
NumRows = DB_QuerySELECT (&mysql_res,"can not get data of a classroom", NumRows = DB_QuerySELECT (&mysql_res,"can not get data of a classroom",
"SELECT ShortName," "SELECT ShortName,"
"FullName," "FullName,"
"Capacity" "Capacity,"
"Location"
" FROM classrooms" " FROM classrooms"
" WHERE ClaCod=%ld", " WHERE ClaCod=%ld",
Cla->ClaCod); Cla->ClaCod);
@ -383,15 +394,19 @@ void Cla_GetDataOfClassroomByCod (struct Classroom *Cla)
/* Get the short name of the classroom (row[0]) */ /* Get the short name of the classroom (row[0]) */
Str_Copy (Cla->ShrtName,row[0], Str_Copy (Cla->ShrtName,row[0],
Cla_MAX_BYTES_CLASSROOM_SHRT_NAME); Cla_MAX_BYTES_SHRT_NAME);
/* Get the full name of the classroom (row[1]) */ /* Get the full name of the classroom (row[1]) */
Str_Copy (Cla->FullName,row[1], Str_Copy (Cla->FullName,row[1],
Cla_MAX_BYTES_CLASSROOM_FULL_NAME); Cla_MAX_BYTES_FULL_NAME);
/* Get seating capacity in this classroom (row[2]) */ /* Get seating capacity in this classroom (row[2]) */
if (sscanf (row[2],"%u",&Cla->Capacity) != 1) if (sscanf (row[2],"%u",&Cla->Capacity) != 1)
Cla->Capacity = Cla_UNLIMITED_CAPACITY; Cla->Capacity = Cla_UNLIMITED_CAPACITY;
/* Get the location of the classroom (row[3]) */
Str_Copy (Cla->Location,row[3],
Cla_MAX_BYTES_LOCATION);
} }
/***** Free structure that stores the query result *****/ /***** Free structure that stores the query result *****/
@ -457,7 +472,7 @@ static void Cla_ListClassroomsForEdition (void)
" maxlength=\"%u\" value=\"%s\"" " maxlength=\"%u\" value=\"%s\""
" class=\"INPUT_SHORT_NAME\"" " class=\"INPUT_SHORT_NAME\""
" onchange=\"document.getElementById('%s').submit();\" />", " onchange=\"document.getElementById('%s').submit();\" />",
Cla_MAX_CHARS_CLASSROOM_SHRT_NAME,Cla->ShrtName,Gbl.Form.Id); Cla_MAX_CHARS_SHRT_NAME,Cla->ShrtName,Gbl.Form.Id);
Frm_EndForm (); Frm_EndForm ();
fprintf (Gbl.F.Out,"</td>"); fprintf (Gbl.F.Out,"</td>");
@ -469,7 +484,7 @@ static void Cla_ListClassroomsForEdition (void)
" maxlength=\"%u\" value=\"%s\"" " maxlength=\"%u\" value=\"%s\""
" class=\"INPUT_FULL_NAME\"" " class=\"INPUT_FULL_NAME\""
" onchange=\"document.getElementById('%s').submit();\" />", " onchange=\"document.getElementById('%s').submit();\" />",
Cla_MAX_CHARS_CLASSROOM_FULL_NAME,Cla->FullName,Gbl.Form.Id); Cla_MAX_CHARS_FULL_NAME,Cla->FullName,Gbl.Form.Id);
Frm_EndForm (); Frm_EndForm ();
fprintf (Gbl.F.Out,"</td>"); fprintf (Gbl.F.Out,"</td>");
@ -574,7 +589,7 @@ static void Cla_RenameClassroom (Cns_ShrtOrFullName_t ShrtOrFullName)
const char *FieldName = NULL; // Initialized to avoid warning const char *FieldName = NULL; // Initialized to avoid warning
unsigned MaxBytes = 0; // Initialized to avoid warning unsigned MaxBytes = 0; // Initialized to avoid warning
char *CurrentClaName = NULL; // Initialized to avoid warning char *CurrentClaName = NULL; // Initialized to avoid warning
char NewClaName[Cla_MAX_BYTES_CLASSROOM_FULL_NAME + 1]; char NewClaName[Cla_MAX_BYTES_FULL_NAME + 1];
Cla = &Gbl.Classrooms.EditingCla; Cla = &Gbl.Classrooms.EditingCla;
switch (ShrtOrFullName) switch (ShrtOrFullName)
@ -582,13 +597,13 @@ static void Cla_RenameClassroom (Cns_ShrtOrFullName_t ShrtOrFullName)
case Cns_SHRT_NAME: case Cns_SHRT_NAME:
ParamName = "ShortName"; ParamName = "ShortName";
FieldName = "ShortName"; FieldName = "ShortName";
MaxBytes = Cla_MAX_BYTES_CLASSROOM_SHRT_NAME; MaxBytes = Cla_MAX_BYTES_SHRT_NAME;
CurrentClaName = Cla->ShrtName; CurrentClaName = Cla->ShrtName;
break; break;
case Cns_FULL_NAME: case Cns_FULL_NAME:
ParamName = "FullName"; ParamName = "FullName";
FieldName = "FullName"; FieldName = "FullName";
MaxBytes = Cla_MAX_BYTES_CLASSROOM_FULL_NAME; MaxBytes = Cla_MAX_BYTES_FULL_NAME;
CurrentClaName = Cla->FullName; CurrentClaName = Cla->FullName;
break; break;
} }
@ -705,7 +720,7 @@ void Cla_ChangeMaxStudents (void)
NewCapacity = (unsigned) NewCapacity = (unsigned)
Par_GetParToUnsignedLong ("Capacity", Par_GetParToUnsignedLong ("Capacity",
0, 0,
Cla_MAX_CAPACITY_OF_A_CLASSROOM, Cla_MAX_CAPACITY,
Cla_UNLIMITED_CAPACITY); Cla_UNLIMITED_CAPACITY);
/***** Get data of the classroom from database *****/ /***** Get data of the classroom from database *****/
@ -752,7 +767,7 @@ void Cla_ChangeMaxStudents (void)
static void Cla_WriteCapacity (unsigned Capacity) static void Cla_WriteCapacity (unsigned Capacity)
{ {
if (Capacity <= Cla_MAX_CAPACITY_OF_A_CLASSROOM) if (Capacity <= Cla_MAX_CAPACITY)
fprintf (Gbl.F.Out,"%u",Capacity); fprintf (Gbl.F.Out,"%u",Capacity);
} }
@ -793,7 +808,7 @@ static void Cla_PutFormToCreateClassroom (void)
" class=\"INPUT_SHORT_NAME\"" " class=\"INPUT_SHORT_NAME\""
" required=\"required\" />" " required=\"required\" />"
"</td>", "</td>",
Cla_MAX_CHARS_CLASSROOM_SHRT_NAME,Cla->ShrtName); Cla_MAX_CHARS_SHRT_NAME,Cla->ShrtName);
/***** Classroom full name *****/ /***** Classroom full name *****/
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">"
@ -802,7 +817,7 @@ static void Cla_PutFormToCreateClassroom (void)
" class=\"INPUT_FULL_NAME\"" " class=\"INPUT_FULL_NAME\""
" required=\"required\" />" " required=\"required\" />"
"</td>", "</td>",
Cla_MAX_CHARS_CLASSROOM_FULL_NAME,Cla->FullName); Cla_MAX_CHARS_FULL_NAME,Cla->FullName);
/***** Seating capacity *****/ /***** Seating capacity *****/
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">"
@ -866,16 +881,16 @@ void Cla_RecFormNewClassroom (void)
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Get classroom short name */ /* Get classroom short name */
Par_GetParToText ("ShortName",Cla->ShrtName,Cla_MAX_BYTES_CLASSROOM_SHRT_NAME); Par_GetParToText ("ShortName",Cla->ShrtName,Cla_MAX_BYTES_SHRT_NAME);
/* Get classroom full name */ /* Get classroom full name */
Par_GetParToText ("FullName",Cla->FullName,Cla_MAX_BYTES_CLASSROOM_FULL_NAME); Par_GetParToText ("FullName",Cla->FullName,Cla_MAX_BYTES_FULL_NAME);
/* Get seating capacity */ /* Get seating capacity */
Cla->Capacity = (unsigned) Cla->Capacity = (unsigned)
Par_GetParToUnsignedLong ("Capacity", Par_GetParToUnsignedLong ("Capacity",
0, 0,
Cla_MAX_CAPACITY_OF_A_CLASSROOM, Cla_MAX_CAPACITY,
Cla_UNLIMITED_CAPACITY); Cla_UNLIMITED_CAPACITY);
if (Cla->ShrtName[0] && Cla->FullName[0]) // If there's a classroom name if (Cla->ShrtName[0] && Cla->FullName[0]) // If there's a classroom name

View File

@ -33,15 +33,15 @@
/************************** Public types and constants ***********************/ /************************** Public types and constants ***********************/
/*****************************************************************************/ /*****************************************************************************/
#define Cla_MAX_CHARS_CLASSROOM_SHRT_NAME (32 - 1) // 31 #define Cla_MAX_CHARS_SHRT_NAME (32 - 1) // 31
#define Cla_MAX_BYTES_CLASSROOM_SHRT_NAME ((Cla_MAX_CHARS_CLASSROOM_SHRT_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 511 #define Cla_MAX_BYTES_SHRT_NAME ((Cla_MAX_CHARS_SHRT_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 511
#define Cla_MAX_CHARS_CLASSROOM_FULL_NAME (128 - 1) // 127 #define Cla_MAX_CHARS_FULL_NAME (128 - 1) // 127
#define Cla_MAX_BYTES_CLASSROOM_FULL_NAME ((Cla_MAX_CHARS_CLASSROOM_FULL_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047 #define Cla_MAX_BYTES_FULL_NAME ((Cla_MAX_CHARS_FULL_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047
#define Cla_MAX_CAPACITY_OF_A_CLASSROOM 10000 // If capacity of a classroom is greater than this, it is considered infinite #define Cla_MAX_CAPACITY 10000 // If capacity of a classroom is greater than this, it is considered infinite
#define Cla_UNLIMITED_CAPACITY INT_MAX // This number can be stored in database as an integer... #define Cla_UNLIMITED_CAPACITY INT_MAX // This number can be stored in database as an integer...
// ...and means that a classroom has no limited capacity // ...and means that a classroom has no limited capacity
#define Cla_MAX_CHARS_LOCATION (128 - 1) // 127 #define Cla_MAX_CHARS_LOCATION (128 - 1) // 127
#define Cla_MAX_BYTES_LOCATION ((Cla_MAX_CHARS_LOCATION + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047 #define Cla_MAX_BYTES_LOCATION ((Cla_MAX_CHARS_LOCATION + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047
@ -50,17 +50,18 @@ struct Classroom
{ {
long ClaCod; long ClaCod;
long InsCod; long InsCod;
char ShrtName[Cla_MAX_BYTES_CLASSROOM_SHRT_NAME + 1]; char ShrtName[Cla_MAX_BYTES_SHRT_NAME + 1];
char FullName[Cla_MAX_BYTES_CLASSROOM_FULL_NAME + 1]; char FullName[Cla_MAX_BYTES_FULL_NAME + 1];
unsigned Capacity; // Seating capacity (maximum number of people that fit in the room) unsigned Capacity; // Seating capacity (maximum number of people that fit in the room)
char Location[Cla_MAX_BYTES_LOCATION + 1]; // Examples: Ground floor, first floor, basement char Location[Cla_MAX_BYTES_LOCATION + 1]; // Examples: Ground floor, first floor, basement
}; };
#define Cla_NUM_ORDERS 2 #define Cla_NUM_ORDERS 3
typedef enum typedef enum
{ {
Cla_ORDER_BY_CLASSROOM = 0, Cla_ORDER_BY_CLASSROOM = 0,
Cla_ORDER_BY_CAPACITY = 1, Cla_ORDER_BY_CAPACITY = 1,
Cla_ORDER_BY_LOCATION = 2,
} Cla_Order_t; } Cla_Order_t;
#define Cla_ORDER_DEFAULT Cla_ORDER_BY_CLASSROOM #define Cla_ORDER_DEFAULT Cla_ORDER_BY_CLASSROOM

View File

@ -482,8 +482,8 @@ mysql> DESCRIBE classrooms;
DB_CreateTable ("CREATE TABLE IF NOT EXISTS classrooms (" DB_CreateTable ("CREATE TABLE IF NOT EXISTS classrooms ("
"ClaCod INT NOT NULL AUTO_INCREMENT," "ClaCod INT NOT NULL AUTO_INCREMENT,"
"CtrCod INT NOT NULL," "CtrCod INT NOT NULL,"
"ShortName VARCHAR(511) NOT NULL," // Cla_MAX_BYTES_CLASSROOM_SHRT_NAME "ShortName VARCHAR(511) NOT NULL," // Cla_MAX_BYTES_SHRT_NAME
"FullName VARCHAR(2047) NOT NULL," // Cla_MAX_BYTES_CLASSROOM_FULL_NAME "FullName VARCHAR(2047) NOT NULL," // Cla_MAX_BYTES_FULL_NAME
"Capacity INT NOT NULL," "Capacity INT NOT NULL,"
"Location VARCHAR(2047) NOT NULL," // Cla_MAX_BYTES_LOCATION "Location VARCHAR(2047) NOT NULL," // Cla_MAX_BYTES_LOCATION
"UNIQUE INDEX(ClaCod)," "UNIQUE INDEX(ClaCod),"

View File

@ -1642,27 +1642,6 @@ const char *Txt_Another_centre =
"Outro centro"; "Outro centro";
#endif #endif
const char *Txt_Another_classroom =
#if L==1 // ca
"Una altra aula";
#elif L==2 // de
"Ein weiterer Klassenzimmer";
#elif L==3 // en
"Another classroom";
#elif L==4 // es
"Otra aula";
#elif L==5 // fr
"Une autre salle de classe";
#elif L==6 // gn
"Otra aula"; // Okoteve traducción
#elif L==7 // it
"Un'altra aula";
#elif L==8 // pl
"Innym klasa";
#elif L==9 // pt
"Outra sala de aula";
#endif
const char *Txt_Another_country = const char *Txt_Another_country =
#if L==1 // ca #if L==1 // ca
"Un altre pa&iacute;s"; "Un altre pa&iacute;s";
@ -3918,7 +3897,7 @@ const char *Txt_Classroom_X_removed = // Warning: it is very important to includ
const char *Txt_CLASSROOMS_HELP_ORDER[Cla_NUM_ORDERS] = const char *Txt_CLASSROOMS_HELP_ORDER[Cla_NUM_ORDERS] =
{ {
#if L==1 // ca #if L==1 // ca
"Ordenar por aula" // Necessita traduccio "Ordenar per aula"
#elif L==2 // de #elif L==2 // de
"Nach Klassenzimmer sortieren" "Nach Klassenzimmer sortieren"
#elif L==3 // en #elif L==3 // en
@ -3955,6 +3934,26 @@ const char *Txt_CLASSROOMS_HELP_ORDER[Cla_NUM_ORDERS] =
"Sortuj wed&lsgtrok;ug pojemno&sacute;ci miejsc" "Sortuj wed&lsgtrok;ug pojemno&sacute;ci miejsc"
#elif L==9 // pt #elif L==9 // pt
"Ordenar por capacidade" "Ordenar por capacidade"
#endif
,
#if L==1 // ca
"Ordenar per ubicaci&oacute;"
#elif L==2 // de
"Nach Standort sortieren"
#elif L==3 // en
"Sort by location"
#elif L==4 // es
"Ordenar por ubicaci&oacute;n"
#elif L==5 // fr
"Trier par emplacement"
#elif L==6 // gn
"Ordenar por ubicaci&oacute;n" // Okoteve traducción
#elif L==7 // it
"Ordina per posizione"
#elif L==8 // pl
"Sortuj wedlug lokacja"
#elif L==9 // pt
"Classificar por localiza&ccedil;&atilde;o"
#endif #endif
}; };
@ -3999,28 +3998,27 @@ const char *Txt_CLASSROOMS_ORDER[Cla_NUM_ORDERS] =
#elif L==9 // pt #elif L==9 // pt
"Capacidade" "Capacidade"
#endif #endif
}; ,
const char *Txt_Classroom_unspecified =
#if L==1 // ca #if L==1 // ca
"Aula sense especificar"; "Ubicaci&oacute;"
#elif L==2 // de #elif L==2 // de
"Klassenzimmer nicht spezifiziert"; "Standort"
#elif L==3 // en #elif L==3 // en
"Classroom unspecified"; "Location"
#elif L==4 // es #elif L==4 // es
"Aula sin especificar"; "Ubicaci&oacute;n"
#elif L==5 // fr #elif L==5 // fr
"Salle de classe non sp&eacute;cifi&eacute;e"; "Emplacement"
#elif L==6 // gn #elif L==6 // gn
"Aula sin especificar"; // Okoteve traducción "&Ntilde;emohenda"
#elif L==7 // it #elif L==7 // it
"Aula non specificata"; "Posizione"
#elif L==8 // pl #elif L==8 // pl
"Klasa nieokreslone"; "Lokacja"
#elif L==9 // pt #elif L==9 // pt
"Sala de aula indeterminada"; "Localiza&ccedil;&atilde;o"
#endif #endif
};
const char *Txt_Classrooms = const char *Txt_Classrooms =
#if L==1 // ca #if L==1 // ca
@ -17150,7 +17148,7 @@ const char *Txt_Location =
#elif L==5 // fr #elif L==5 // fr
"Emplacement"; "Emplacement";
#elif L==6 // gn #elif L==6 // gn
"Ubicaci&oacute;n"; // Okoteve traducción "Tenda";
#elif L==7 // it #elif L==7 // it
"Posizione"; "Posizione";
#elif L==8 // pl #elif L==8 // pl
@ -17171,7 +17169,7 @@ const char *Txt_Locations =
#elif L==5 // fr #elif L==5 // fr
"Emplacements"; "Emplacements";
#elif L==6 // gn #elif L==6 // gn
"Ubicaci&oacute;n"; // Okoteve traducción "Tenda";
#elif L==7 // it #elif L==7 // it
"Posizioni"; "Posizioni";
#elif L==8 // pl #elif L==8 // pl