mirror of https://github.com/acanas/swad-core.git
Version 18.26
This commit is contained in:
parent
bec6bdfc1a
commit
7db7b51de2
|
@ -185,10 +185,9 @@ CREATE TABLE IF NOT EXISTS classrooms (
|
||||||
CtrCod INT NOT NULL,
|
CtrCod INT NOT NULL,
|
||||||
ShortName VARCHAR(511) NOT NULL,
|
ShortName VARCHAR(511) NOT NULL,
|
||||||
FullName VARCHAR(2047) NOT NULL,
|
FullName VARCHAR(2047) NOT NULL,
|
||||||
NumStds INT NOT NULL,
|
MaxStudents INT NOT NULL,
|
||||||
UNIQUE INDEX(ClaCod),
|
UNIQUE INDEX(ClaCod),
|
||||||
INDEX(CtrCod),
|
INDEX(CtrCod));
|
||||||
INDEX(NumStds));
|
|
||||||
--
|
--
|
||||||
-- Table clicks_without_photo: stores the number of clicks that remains to each user before being required to submit his/her photo
|
-- Table clicks_without_photo: stores the number of clicks that remains to each user before being required to submit his/her photo
|
||||||
--
|
--
|
||||||
|
|
|
@ -272,6 +272,7 @@ Centre:
|
||||||
NEW. ActRemCla Remove a classroom
|
NEW. ActRemCla Remove a classroom
|
||||||
NEW. ActRenClaSho Change short name of a classroom
|
NEW. ActRenClaSho Change short name of a classroom
|
||||||
NEW. ActRenClaFul Change full name of a classroom
|
NEW. ActRenClaFul Change full name of a classroom
|
||||||
|
NEW. ActChgClaMaxStd Change number of students in a classroom
|
||||||
|
|
||||||
148. ActPrnCtrCrs Show print view of the academic calendar
|
148. ActPrnCtrCrs Show print view of the academic calendar
|
||||||
149. ActChgCtrCrs1stDay Change first day of week and show academic calendar
|
149. ActChgCtrCrs1stDay Change first day of week and show academic calendar
|
||||||
|
@ -1807,6 +1808,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
||||||
/* ActRemCla */{1747,-1,TabUnk,ActSeeCla , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cla_RemoveClassroom ,NULL},
|
/* ActRemCla */{1747,-1,TabUnk,ActSeeCla , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cla_RemoveClassroom ,NULL},
|
||||||
/* ActRenClaSho */{1748,-1,TabUnk,ActSeeCla , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cla_RenameClassroomShort ,NULL},
|
/* ActRenClaSho */{1748,-1,TabUnk,ActSeeCla , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cla_RenameClassroomShort ,NULL},
|
||||||
/* ActRenClaFul */{1749,-1,TabUnk,ActSeeCla , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cla_RenameClassroomFull ,NULL},
|
/* ActRenClaFul */{1749,-1,TabUnk,ActSeeCla , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cla_RenameClassroomFull ,NULL},
|
||||||
|
/* ActChgClaMaxStd */{1750,-1,TabUnk,ActSeeCla , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cla_ChangeMaxStudents ,NULL},
|
||||||
|
|
||||||
/* ActPrnCalCtr */{1632,-1,TabUnk,ActSeeCalCtr , 0, 0, 0,0x3C7, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Cal_PrintCalendar ,NULL},
|
/* ActPrnCalCtr */{1632,-1,TabUnk,ActSeeCalCtr , 0, 0, 0,0x3C7, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Cal_PrintCalendar ,NULL},
|
||||||
/* ActChgCalCtr1stDay*/{1633,-1,TabUnk,ActSeeCalCtr , 0, 0, 0,0x3C7, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Cal_ChangeFirstDayOfWeek ,Cal_DrawCalendarCtr ,NULL},
|
/* ActChgCalCtr1stDay*/{1633,-1,TabUnk,ActSeeCalCtr , 0, 0, 0,0x3C7, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Cal_ChangeFirstDayOfWeek ,Cal_DrawCalendarCtr ,NULL},
|
||||||
|
@ -4952,6 +4954,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
|
||||||
ActRemCla, // #1747
|
ActRemCla, // #1747
|
||||||
ActRenClaSho, // #1748
|
ActRenClaSho, // #1748
|
||||||
ActRenClaFul, // #1749
|
ActRenClaFul, // #1749
|
||||||
|
ActChgClaMaxStd, // #1750
|
||||||
};
|
};
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -61,9 +61,9 @@ typedef enum
|
||||||
|
|
||||||
typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
|
typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
|
||||||
|
|
||||||
#define Act_NUM_ACTIONS (1 + 9 + 43 + 17 + 47 + 39 + 24 + 115 + 157 + 437 + 165 + 172 + 42 + 14 + 76)
|
#define Act_NUM_ACTIONS (1 + 9 + 43 + 17 + 47 + 40 + 24 + 115 + 157 + 437 + 165 + 172 + 42 + 14 + 76)
|
||||||
|
|
||||||
#define Act_MAX_ACTION_COD 1749
|
#define Act_MAX_ACTION_COD 1750
|
||||||
|
|
||||||
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 13
|
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 13
|
||||||
|
|
||||||
|
@ -271,9 +271,10 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
|
||||||
#define ActRemCla (ActChgCalIns1stDay + 35)
|
#define ActRemCla (ActChgCalIns1stDay + 35)
|
||||||
#define ActRenClaSho (ActChgCalIns1stDay + 36)
|
#define ActRenClaSho (ActChgCalIns1stDay + 36)
|
||||||
#define ActRenClaFul (ActChgCalIns1stDay + 37)
|
#define ActRenClaFul (ActChgCalIns1stDay + 37)
|
||||||
|
#define ActChgClaMaxStd (ActChgCalIns1stDay + 38)
|
||||||
|
|
||||||
#define ActPrnCalCtr (ActChgCalIns1stDay + 38)
|
#define ActPrnCalCtr (ActChgCalIns1stDay + 39)
|
||||||
#define ActChgCalCtr1stDay (ActChgCalIns1stDay + 39)
|
#define ActChgCalCtr1stDay (ActChgCalIns1stDay + 40)
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/********************************* Degree tab ********************************/
|
/********************************* Degree tab ********************************/
|
||||||
|
|
|
@ -668,7 +668,8 @@ static void Ban_RenameBanner (Cns_ShrtOrFullName_t ShrtOrFullName)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/***** Check if old and new names are the same (this happens when user press enter with no changes in the form) *****/
|
/***** Check if old and new names are the same
|
||||||
|
(this happens when return is pressed without changes) *****/
|
||||||
if (strcmp (CurrentBanName,NewBanName)) // Different names
|
if (strcmp (CurrentBanName,NewBanName)) // Different names
|
||||||
{
|
{
|
||||||
/***** If banner was in database... *****/
|
/***** If banner was in database... *****/
|
||||||
|
|
|
@ -2035,7 +2035,8 @@ static void Ctr_RenameCentre (struct Centre *Ctr,Cns_ShrtOrFullName_t ShrtOrFull
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/***** Check if old and new names are the same (this happens when user press enter with no changes in the form) *****/
|
/***** Check if old and new names are the same
|
||||||
|
(this happens when return is pressed without changes) *****/
|
||||||
if (strcmp (CurrentCtrName,NewCtrName)) // Different names
|
if (strcmp (CurrentCtrName,NewCtrName)) // Different names
|
||||||
{
|
{
|
||||||
/***** If degree was in database... *****/
|
/***** If degree was in database... *****/
|
||||||
|
|
|
@ -364,10 +364,17 @@ En OpenSWAD:
|
||||||
ps2pdf source.ps destination.pdf
|
ps2pdf source.ps destination.pdf
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 18.25.3 (2018-12-30)"
|
#define Log_PLATFORM_VERSION "SWAD 18.26 (2019-01-02)"
|
||||||
#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: Jan 02, 2019 New form and action to change maximum number of students in a classroom. (? lines)
|
||||||
|
4 changes necessary in database:
|
||||||
|
DROP INDEX NumStds ON classrooms;
|
||||||
|
ALTER TABLE classrooms CHANGE COLUMN NumStds MaxStudents INT NOT NULL;
|
||||||
|
UPDATE actions SET Txt='Cambiar máx. estudiantes en grupo' WHERE ActCod='106' AND Language='es';
|
||||||
|
UPDATE actions SET Txt='Cambiar máx. estudiantes en aula' WHERE ActCod='1750' AND Language='es';
|
||||||
|
|
||||||
Version 18.25.3: Dec 30, 2018 Fixed bugs in classrooms. (238514 lines)
|
Version 18.25.3: Dec 30, 2018 Fixed bugs in classrooms. (238514 lines)
|
||||||
Version 18.25.2: Dec 30, 2018 New database table for classrooms. (238525 lines)
|
Version 18.25.2: Dec 30, 2018 New database table for classrooms. (238525 lines)
|
||||||
8 changes necessary in database:
|
8 changes necessary in database:
|
||||||
|
@ -378,7 +385,6 @@ INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1746','es','N','Crea
|
||||||
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1747','es','N','Eliminar aula');
|
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1747','es','N','Eliminar aula');
|
||||||
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1748','es','N','Cambiar nombre breve aula');
|
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1748','es','N','Cambiar nombre breve aula');
|
||||||
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1749','es','N','Cambiar nombre completo aula');
|
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1749','es','N','Cambiar nombre completo aula');
|
||||||
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1750','es','N','Cambiar nº estudiantes aula');
|
|
||||||
Copy the following icon to icon public directory:
|
Copy the following icon to icon public directory:
|
||||||
sudo cp classroom.svg /var/www/html/swad/icon/
|
sudo cp classroom.svg /var/www/html/swad/icon/
|
||||||
|
|
||||||
|
|
180
swad_classroom.c
180
swad_classroom.c
|
@ -70,6 +70,8 @@ static void Cla_RenameClassroom (Cns_ShrtOrFullName_t ShrtOrFullName);
|
||||||
static bool Cla_CheckIfClassroomNameExists (const char *FieldName,const char *Name,long ClaCod);
|
static bool Cla_CheckIfClassroomNameExists (const char *FieldName,const char *Name,long ClaCod);
|
||||||
static void Cla_UpdateClaNameDB (long ClaCod,const char *FieldName,const char *NewClaName);
|
static void Cla_UpdateClaNameDB (long ClaCod,const char *FieldName,const char *NewClaName);
|
||||||
|
|
||||||
|
static void Cla_WriteMaxStds (unsigned MaxStudents);
|
||||||
|
|
||||||
static void Cla_PutFormToCreateClassroom (void);
|
static void Cla_PutFormToCreateClassroom (void);
|
||||||
static void Cla_PutHeadClassrooms (void);
|
static void Cla_PutHeadClassrooms (void);
|
||||||
static void Cla_CreateClassroom (struct Classroom *Cla);
|
static void Cla_CreateClassroom (struct Classroom *Cla);
|
||||||
|
@ -102,7 +104,7 @@ void Cla_SeeClassrooms (void)
|
||||||
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_BY_CLASSROOM;
|
||||||
Order <= Cla_ORDER_BY_NUM_STDS;
|
Order <= Cla_ORDER_BY_MAX_STDS;
|
||||||
Order++)
|
Order++)
|
||||||
{
|
{
|
||||||
fprintf (Gbl.F.Out,"<th class=\"LEFT_MIDDLE\">");
|
fprintf (Gbl.F.Out,"<th class=\"LEFT_MIDDLE\">");
|
||||||
|
@ -120,7 +122,7 @@ void Cla_SeeClassrooms (void)
|
||||||
}
|
}
|
||||||
fprintf (Gbl.F.Out,"</tr>");
|
fprintf (Gbl.F.Out,"</tr>");
|
||||||
|
|
||||||
/***** Write all classrooms and their nuber of students *****/
|
/***** Write all classrooms and their maximum of students *****/
|
||||||
for (NumCla = 0;
|
for (NumCla = 0;
|
||||||
NumCla < Gbl.Classrooms.Num;
|
NumCla < Gbl.Classrooms.Num;
|
||||||
NumCla++)
|
NumCla++)
|
||||||
|
@ -130,12 +132,11 @@ void Cla_SeeClassrooms (void)
|
||||||
"<td class=\"DAT LEFT_MIDDLE\">"
|
"<td class=\"DAT LEFT_MIDDLE\">"
|
||||||
"%s"
|
"%s"
|
||||||
"</td>"
|
"</td>"
|
||||||
"<td class=\"DAT RIGHT_MIDDLE\">"
|
"<td class=\"DAT RIGHT_MIDDLE\">",
|
||||||
"%u"
|
Gbl.Classrooms.Lst[NumCla].FullName);
|
||||||
"</td>"
|
Cla_WriteMaxStds (Gbl.Classrooms.Lst[NumCla].MaxStudents);
|
||||||
"</tr>",
|
fprintf (Gbl.F.Out,"</td>"
|
||||||
Gbl.Classrooms.Lst[NumCla].FullName,
|
"</tr>");
|
||||||
Gbl.Classrooms.Lst[NumCla].NumStds);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** End table *****/
|
/***** End table *****/
|
||||||
|
@ -164,10 +165,10 @@ void Cla_SeeClassrooms (void)
|
||||||
static void Cla_GetParamClaOrder (void)
|
static void Cla_GetParamClaOrder (void)
|
||||||
{
|
{
|
||||||
Gbl.Classrooms.SelectedOrder = (Cla_Order_t)
|
Gbl.Classrooms.SelectedOrder = (Cla_Order_t)
|
||||||
Par_GetParToUnsignedLong ("Order",
|
Par_GetParToUnsignedLong ("Order",
|
||||||
0,
|
0,
|
||||||
Cla_NUM_ORDERS - 1,
|
Cla_NUM_ORDERS - 1,
|
||||||
(unsigned long) Cla_ORDER_DEFAULT);
|
(unsigned long) Cla_ORDER_DEFAULT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -273,15 +274,15 @@ void Cla_GetListClassrooms (void)
|
||||||
case Cla_ORDER_BY_CLASSROOM:
|
case Cla_ORDER_BY_CLASSROOM:
|
||||||
sprintf (OrderBySubQuery,"FullName");
|
sprintf (OrderBySubQuery,"FullName");
|
||||||
break;
|
break;
|
||||||
case Cla_ORDER_BY_NUM_STDS:
|
case Cla_ORDER_BY_MAX_STDS:
|
||||||
sprintf (OrderBySubQuery,"NumStds DESC,FullName");
|
sprintf (OrderBySubQuery,"MaxStudents DESC,FullName");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
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,"
|
||||||
"NumStds"
|
"MaxStudents"
|
||||||
" FROM classrooms"
|
" FROM classrooms"
|
||||||
" WHERE CtrCod=%ld"
|
" WHERE CtrCod=%ld"
|
||||||
" ORDER BY %s",
|
" ORDER BY %s",
|
||||||
|
@ -319,9 +320,9 @@ void Cla_GetListClassrooms (void)
|
||||||
Str_Copy (Cla->FullName,row[2],
|
Str_Copy (Cla->FullName,row[2],
|
||||||
Cla_MAX_BYTES_CLASSROOM_FULL_NAME);
|
Cla_MAX_BYTES_CLASSROOM_FULL_NAME);
|
||||||
|
|
||||||
/* Get number of students in this classroom (row[3]) */
|
/* Get maximum number of students in this classroom (row[3]) */
|
||||||
if (sscanf (row[3],"%u",&Cla->NumStds) != 1)
|
if (sscanf (row[3],"%u",&Cla->MaxStudents) != 1)
|
||||||
Cla->NumStds = 0;
|
Cla->MaxStudents = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -346,7 +347,7 @@ void Cla_GetDataOfClassroomByCod (struct Classroom *Cla)
|
||||||
/***** Clear data *****/
|
/***** Clear data *****/
|
||||||
Cla->ShrtName[0] = '\0';
|
Cla->ShrtName[0] = '\0';
|
||||||
Cla->FullName[0] = '\0';
|
Cla->FullName[0] = '\0';
|
||||||
Cla->NumStds = 0;
|
Cla->MaxStudents = 0;
|
||||||
|
|
||||||
/***** Check if classroom code is correct *****/
|
/***** Check if classroom code is correct *****/
|
||||||
if (Cla->ClaCod < 0)
|
if (Cla->ClaCod < 0)
|
||||||
|
@ -369,7 +370,7 @@ void Cla_GetDataOfClassroomByCod (struct Classroom *Cla)
|
||||||
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,"
|
||||||
"NumStds"
|
"MaxStudents"
|
||||||
" FROM classrooms"
|
" FROM classrooms"
|
||||||
" WHERE ClaCod=%ld",
|
" WHERE ClaCod=%ld",
|
||||||
Cla->ClaCod);
|
Cla->ClaCod);
|
||||||
|
@ -388,9 +389,9 @@ void Cla_GetDataOfClassroomByCod (struct Classroom *Cla)
|
||||||
Str_Copy (Cla->FullName,row[1],
|
Str_Copy (Cla->FullName,row[1],
|
||||||
Cla_MAX_BYTES_CLASSROOM_FULL_NAME);
|
Cla_MAX_BYTES_CLASSROOM_FULL_NAME);
|
||||||
|
|
||||||
/* Get number of students in this classroom (row[2]) */
|
/* Get maximum number of students in this classroom (row[2]) */
|
||||||
if (sscanf (row[2],"%u",&Cla->NumStds) != 1)
|
if (sscanf (row[2],"%u",&Cla->MaxStudents) != 1)
|
||||||
Cla->NumStds = 0;
|
Cla->MaxStudents = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Free structure that stores the query result *****/
|
/***** Free structure that stores the query result *****/
|
||||||
|
@ -436,15 +437,10 @@ static void Cla_ListClassroomsForEdition (void)
|
||||||
/* Put icon to remove classroom */
|
/* Put icon to remove classroom */
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
"<td class=\"BM\">");
|
"<td class=\"BM\">");
|
||||||
if (Cla->NumStds) // Classroom has students ==> deletion forbidden
|
Frm_StartForm (ActRemCla);
|
||||||
Ico_PutIconRemovalNotAllowed ();
|
Cla_PutParamClaCod (Cla->ClaCod);
|
||||||
else
|
Ico_PutIconRemove ();
|
||||||
{
|
Frm_EndForm ();
|
||||||
Frm_StartForm (ActRemCla);
|
|
||||||
Cla_PutParamClaCod (Cla->ClaCod);
|
|
||||||
Ico_PutIconRemove ();
|
|
||||||
Frm_EndForm ();
|
|
||||||
}
|
|
||||||
fprintf (Gbl.F.Out,"</td>");
|
fprintf (Gbl.F.Out,"</td>");
|
||||||
|
|
||||||
/* Classroom code */
|
/* Classroom code */
|
||||||
|
@ -477,12 +473,18 @@ static void Cla_ListClassroomsForEdition (void)
|
||||||
Frm_EndForm ();
|
Frm_EndForm ();
|
||||||
fprintf (Gbl.F.Out,"</td>");
|
fprintf (Gbl.F.Out,"</td>");
|
||||||
|
|
||||||
/* Number of students */
|
/* Maximum number of students */
|
||||||
fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">"
|
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">");
|
||||||
"%u"
|
Frm_StartForm (ActChgClaMaxStd);
|
||||||
"</td>"
|
Cla_PutParamClaCod (Cla->ClaCod);
|
||||||
"</tr>",
|
fprintf (Gbl.F.Out,"<input type=\"text\" name=\"MaxStudents\""
|
||||||
Cla->NumStds);
|
" size=\"3\" maxlength=\"10\" value=\"");
|
||||||
|
Cla_WriteMaxStds (Cla->MaxStudents);
|
||||||
|
fprintf (Gbl.F.Out,"\" onchange=\"document.getElementById('%s').submit();\" />",
|
||||||
|
Gbl.Form.Id);
|
||||||
|
Frm_EndForm ();
|
||||||
|
fprintf (Gbl.F.Out,"</td>"
|
||||||
|
"</tr>");
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** End table *****/
|
/***** End table *****/
|
||||||
|
@ -612,7 +614,8 @@ static void Cla_RenameClassroom (Cns_ShrtOrFullName_t ShrtOrFullName)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/***** Check if old and new names are the same (this happens when user press enter with no changes in the form) *****/
|
/***** Check if old and new names are the same
|
||||||
|
(this happens when return is pressed without changes) *****/
|
||||||
if (strcmp (CurrentClaName,NewClaName)) // Different names
|
if (strcmp (CurrentClaName,NewClaName)) // Different names
|
||||||
{
|
{
|
||||||
/***** If classroom was in database... *****/
|
/***** If classroom was in database... *****/
|
||||||
|
@ -678,6 +681,81 @@ static void Cla_UpdateClaNameDB (long ClaCod,const char *FieldName,const char *N
|
||||||
FieldName,NewClaName,ClaCod);
|
FieldName,NewClaName,ClaCod);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/************** Change maximum number of students in a classroom *************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
void Cla_ChangeMaxStudents (void)
|
||||||
|
{
|
||||||
|
extern const char *Txt_The_maximum_number_of_students_has_not_changed;
|
||||||
|
extern const char *Txt_The_classroom_X_does_not_have_a_student_limit_now;
|
||||||
|
extern const char *Txt_The_maximum_number_of_students_is_now_X;
|
||||||
|
struct Classroom *Cla;
|
||||||
|
unsigned NewMaxStds;
|
||||||
|
|
||||||
|
/***** Use current editing classroom *****/
|
||||||
|
Cla = &Gbl.Classrooms.EditingCla;
|
||||||
|
|
||||||
|
/***** Get parameters from form *****/
|
||||||
|
/* Get the code of the classroom */
|
||||||
|
if ((Cla->ClaCod = Cla_GetParamClaCod ()) == -1L)
|
||||||
|
Lay_ShowErrorAndExit ("Code of classroom is missing.");
|
||||||
|
|
||||||
|
/* Get the new maximum number of students of the group */
|
||||||
|
NewMaxStds = (unsigned)
|
||||||
|
Par_GetParToUnsignedLong ("MaxStudents",
|
||||||
|
0,
|
||||||
|
Cla_MAX_STUDENTS_IN_A_CLASSROOM,
|
||||||
|
Cla_NUM_STUDENTS_NOT_LIMITED);
|
||||||
|
|
||||||
|
/***** Get data of the classroom from database *****/
|
||||||
|
Cla_GetDataOfClassroomByCod (Cla);
|
||||||
|
|
||||||
|
/***** Check if the old maximum of students equals the new one
|
||||||
|
(this happens when return is pressed without changes) *****/
|
||||||
|
if (Cla->MaxStudents == NewMaxStds)
|
||||||
|
{
|
||||||
|
/***** Message to show no changes made *****/
|
||||||
|
Gbl.Alert.Type = Ale_INFO;
|
||||||
|
Str_Copy (Gbl.Alert.Txt,Txt_The_maximum_number_of_students_has_not_changed,
|
||||||
|
Ale_MAX_BYTES_ALERT);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/***** Update the table of groups changing the old maximum of students to the new *****/
|
||||||
|
DB_QueryUPDATE ("can not update the maximum number of students"
|
||||||
|
" in a classroom",
|
||||||
|
"UPDATE classrooms SET MaxStudents=%u WHERE ClaCod=%ld",
|
||||||
|
NewMaxStds,Cla->ClaCod);
|
||||||
|
Cla->MaxStudents = NewMaxStds;
|
||||||
|
|
||||||
|
/***** Message to show the change made *****/
|
||||||
|
Gbl.Alert.Type = Ale_SUCCESS;
|
||||||
|
if (NewMaxStds > Grp_MAX_STUDENTS_IN_A_GROUP)
|
||||||
|
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
||||||
|
Txt_The_classroom_X_does_not_have_a_student_limit_now,
|
||||||
|
Cla->FullName);
|
||||||
|
else
|
||||||
|
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
||||||
|
Txt_The_maximum_number_of_students_is_now_X,
|
||||||
|
NewMaxStds);
|
||||||
|
}
|
||||||
|
Ale_ShowAlert (Gbl.Alert.Type,Gbl.Alert.Txt);
|
||||||
|
|
||||||
|
/***** Show the form again *****/
|
||||||
|
Cla_EditClassrooms ();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/*********** Write the maximum number of students in a classroom *************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void Cla_WriteMaxStds (unsigned MaxStudents)
|
||||||
|
{
|
||||||
|
if (MaxStudents <= Cla_MAX_STUDENTS_IN_A_CLASSROOM)
|
||||||
|
fprintf (Gbl.F.Out,"%u",MaxStudents);
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/******************* Put a form to create a new classroom ********************/
|
/******************* Put a form to create a new classroom ********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -727,9 +805,12 @@ static void Cla_PutFormToCreateClassroom (void)
|
||||||
Cla_MAX_CHARS_CLASSROOM_FULL_NAME,Cla->FullName);
|
Cla_MAX_CHARS_CLASSROOM_FULL_NAME,Cla->FullName);
|
||||||
|
|
||||||
/***** Number of students *****/
|
/***** Number of students *****/
|
||||||
fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">"
|
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">"
|
||||||
"0"
|
"<input type=\"text\" name=\"MaxStudents\""
|
||||||
"</td>"
|
" size=\"3\" maxlength=\"10\" value=\"");
|
||||||
|
Cla_WriteMaxStds (Cla->MaxStudents);
|
||||||
|
fprintf (Gbl.F.Out,"\" />"
|
||||||
|
"</td>"
|
||||||
"</tr>");
|
"</tr>");
|
||||||
|
|
||||||
/***** End table, send button and end box *****/
|
/***** End table, send button and end box *****/
|
||||||
|
@ -748,7 +829,7 @@ static void Cla_PutHeadClassrooms (void)
|
||||||
extern const char *Txt_Code;
|
extern const char *Txt_Code;
|
||||||
extern const char *Txt_Short_name;
|
extern const char *Txt_Short_name;
|
||||||
extern const char *Txt_Full_name;
|
extern const char *Txt_Full_name;
|
||||||
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
extern const char *Txt_Max_BR_students;
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
"<th class=\"BM\"></th>"
|
"<th class=\"BM\"></th>"
|
||||||
|
@ -768,7 +849,7 @@ static void Cla_PutHeadClassrooms (void)
|
||||||
Txt_Code,
|
Txt_Code,
|
||||||
Txt_Short_name,
|
Txt_Short_name,
|
||||||
Txt_Full_name,
|
Txt_Full_name,
|
||||||
Txt_ROLES_PLURAL_Abc[Rol_STD][Usr_SEX_UNKNOWN]);
|
Txt_Max_BR_students);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -790,6 +871,13 @@ void Cla_RecFormNewClassroom (void)
|
||||||
/* 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_CLASSROOM_FULL_NAME);
|
||||||
|
|
||||||
|
/* Get maximum number of students */
|
||||||
|
Cla->MaxStudents = (unsigned)
|
||||||
|
Par_GetParToUnsignedLong ("MaxStudents",
|
||||||
|
0,
|
||||||
|
Cla_MAX_STUDENTS_IN_A_CLASSROOM,
|
||||||
|
Cla_NUM_STUDENTS_NOT_LIMITED);
|
||||||
|
|
||||||
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
|
||||||
{
|
{
|
||||||
/***** If name of classroom was in database... *****/
|
/***** If name of classroom was in database... *****/
|
||||||
|
@ -828,11 +916,11 @@ static void Cla_CreateClassroom (struct Classroom *Cla)
|
||||||
/***** Create a new classroom *****/
|
/***** Create a new classroom *****/
|
||||||
DB_QueryINSERT ("can not create classroom",
|
DB_QueryINSERT ("can not create classroom",
|
||||||
"INSERT INTO classrooms"
|
"INSERT INTO classrooms"
|
||||||
" (CtrCod,ShortName,FullName,NumStds)"
|
" (CtrCod,ShortName,FullName,MaxStudents)"
|
||||||
" VALUES"
|
" VALUES"
|
||||||
" (%ld,'%s','%s',%u)",
|
" (%ld,'%s','%s',%u)",
|
||||||
Gbl.CurrentCtr.Ctr.CtrCod,
|
Gbl.CurrentCtr.Ctr.CtrCod,
|
||||||
Cla->ShrtName,Cla->FullName,Cla->NumStds);
|
Cla->ShrtName,Cla->FullName,Cla->MaxStudents);
|
||||||
|
|
||||||
/***** Write success message *****/
|
/***** Write success message *****/
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
||||||
|
|
|
@ -39,20 +39,24 @@
|
||||||
#define Cla_MAX_CHARS_CLASSROOM_FULL_NAME (128 - 1) // 127
|
#define Cla_MAX_CHARS_CLASSROOM_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_CLASSROOM_FULL_NAME ((Cla_MAX_CHARS_CLASSROOM_FULL_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047
|
||||||
|
|
||||||
|
#define Cla_MAX_STUDENTS_IN_A_CLASSROOM 10000 // If max of students in a classroom is greater than this, it is considered infinite
|
||||||
|
#define Cla_NUM_STUDENTS_NOT_LIMITED INT_MAX // This number can be stored in database as an integer...
|
||||||
|
// ...and means that a classroom has no limit of students
|
||||||
|
|
||||||
struct Classroom
|
struct Classroom
|
||||||
{
|
{
|
||||||
long ClaCod;
|
long ClaCod;
|
||||||
long InsCod;
|
long InsCod;
|
||||||
char ShrtName[Cla_MAX_BYTES_CLASSROOM_SHRT_NAME + 1];
|
char ShrtName[Cla_MAX_BYTES_CLASSROOM_SHRT_NAME + 1];
|
||||||
char FullName[Cla_MAX_BYTES_CLASSROOM_FULL_NAME + 1];
|
char FullName[Cla_MAX_BYTES_CLASSROOM_FULL_NAME + 1];
|
||||||
unsigned NumStds;
|
unsigned MaxStudents;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define Cla_NUM_ORDERS 2
|
#define Cla_NUM_ORDERS 2
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
Cla_ORDER_BY_CLASSROOM = 0,
|
Cla_ORDER_BY_CLASSROOM = 0,
|
||||||
Cla_ORDER_BY_NUM_STDS = 1,
|
Cla_ORDER_BY_MAX_STDS = 1,
|
||||||
} Cla_Order_t;
|
} Cla_Order_t;
|
||||||
#define Cla_ORDER_DEFAULT Cla_ORDER_BY_CLASSROOM
|
#define Cla_ORDER_DEFAULT Cla_ORDER_BY_CLASSROOM
|
||||||
|
|
||||||
|
@ -70,6 +74,7 @@ long Cla_GetParamClaCod (void);
|
||||||
void Cla_RemoveClassroom (void);
|
void Cla_RemoveClassroom (void);
|
||||||
void Cla_RenameClassroomShort (void);
|
void Cla_RenameClassroomShort (void);
|
||||||
void Cla_RenameClassroomFull (void);
|
void Cla_RenameClassroomFull (void);
|
||||||
|
void Cla_ChangeMaxStudents (void);
|
||||||
void Cla_RecFormNewClassroom (void);
|
void Cla_RecFormNewClassroom (void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1806,7 +1806,8 @@ void Cty_RenameCountry (void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/***** Check if old and new names are the same (this happens when user press enter with no changes in the form) *****/
|
/***** Check if old and new names are the same
|
||||||
|
(this happens when return is pressed without changes) *****/
|
||||||
if (strcmp (Cty->Name[Language],NewCtyName)) // Different names
|
if (strcmp (Cty->Name[Language],NewCtyName)) // Different names
|
||||||
{
|
{
|
||||||
/***** If country was in database... *****/
|
/***** If country was in database... *****/
|
||||||
|
|
|
@ -2730,7 +2730,8 @@ static void Crs_RenameCourse (struct Course *Crs,Cns_ShrtOrFullName_t ShrtOrFull
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/***** Check if old and new names are the same (this happens when user press enter with no changes in the form) *****/
|
/***** Check if old and new names are the same
|
||||||
|
(this happens when return is pressed without changes) *****/
|
||||||
if (strcmp (CurrentCrsName,NewCrsName)) // Different names
|
if (strcmp (CurrentCrsName,NewCrsName)) // Different names
|
||||||
{
|
{
|
||||||
/***** If course was in database... *****/
|
/***** If course was in database... *****/
|
||||||
|
|
|
@ -467,15 +467,15 @@ mysql> DESCRIBE chat;
|
||||||
/***** Table classrooms *****/
|
/***** Table classrooms *****/
|
||||||
/*
|
/*
|
||||||
mysql> DESCRIBE classrooms;
|
mysql> DESCRIBE classrooms;
|
||||||
+-----------+---------------+------+-----+---------+----------------+
|
+-------------+---------------+------+-----+---------+----------------+
|
||||||
| Field | Type | Null | Key | Default | Extra |
|
| Field | Type | Null | Key | Default | Extra |
|
||||||
+-----------+---------------+------+-----+---------+----------------+
|
+-------------+---------------+------+-----+---------+----------------+
|
||||||
| ClaCod | int(11) | NO | PRI | NULL | auto_increment |
|
| ClaCod | int(11) | NO | PRI | NULL | auto_increment |
|
||||||
| CtrCod | int(11) | NO | MUL | NULL | |
|
| CtrCod | int(11) | NO | MUL | NULL | |
|
||||||
| ShortName | varchar(511) | NO | | NULL | |
|
| ShortName | varchar(511) | NO | | NULL | |
|
||||||
| FullName | varchar(2047) | NO | | NULL | |
|
| FullName | varchar(2047) | NO | | NULL | |
|
||||||
| NumStds | int(11) | NO | MUL | NULL | |
|
| MaxStudents | int(11) | NO | | NULL | |
|
||||||
+-----------+---------------+------+-----+---------+----------------+
|
+-------------+---------------+------+-----+---------+----------------+
|
||||||
5 rows in set (0.00 sec)
|
5 rows in set (0.00 sec)
|
||||||
*/
|
*/
|
||||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS classrooms ("
|
DB_CreateTable ("CREATE TABLE IF NOT EXISTS classrooms ("
|
||||||
|
@ -483,10 +483,9 @@ mysql> DESCRIBE classrooms;
|
||||||
"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_CLASSROOM_SHRT_NAME
|
||||||
"FullName VARCHAR(2047) NOT NULL," // Cla_MAX_BYTES_CLASSROOM_FULL_NAME
|
"FullName VARCHAR(2047) NOT NULL," // Cla_MAX_BYTES_CLASSROOM_FULL_NAME
|
||||||
"NumStds INT NOT NULL,"
|
"MaxStudents INT NOT NULL,"
|
||||||
"UNIQUE INDEX(ClaCod),"
|
"UNIQUE INDEX(ClaCod),"
|
||||||
"INDEX(CtrCod),"
|
"INDEX(CtrCod))");
|
||||||
"INDEX(NumStds))");
|
|
||||||
|
|
||||||
/***** Table clicks_without_photo *****/
|
/***** Table clicks_without_photo *****/
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -1998,7 +1998,8 @@ static void Deg_RenameDegree (struct Degree *Deg,Cns_ShrtOrFullName_t ShrtOrFull
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/***** Check if old and new names are the same (this happens when user press enter with no changes in the form) *****/
|
/***** Check if old and new names are the same
|
||||||
|
(this happens when return is pressed without changes) *****/
|
||||||
if (strcmp (CurrentDegName,NewDegName)) // Different names
|
if (strcmp (CurrentDegName,NewDegName)) // Different names
|
||||||
{
|
{
|
||||||
/***** If degree was in database... *****/
|
/***** If degree was in database... *****/
|
||||||
|
|
|
@ -963,7 +963,8 @@ void DT_RenameDegreeType (void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/***** Check if old and new names are the same (this happens when user press enter with no changes in the form) *****/
|
/***** Check if old and new names are the same
|
||||||
|
(this happens when return is pressed without changes) *****/
|
||||||
if (strcmp (DegTyp->DegTypName,NewNameDegTyp)) // Different names
|
if (strcmp (DegTyp->DegTypName,NewNameDegTyp)) // Different names
|
||||||
{
|
{
|
||||||
/***** If degree type was in database... *****/
|
/***** If degree type was in database... *****/
|
||||||
|
|
|
@ -739,7 +739,8 @@ static void Dpt_RenameDepartment (Cns_ShrtOrFullName_t ShrtOrFullName)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/***** Check if old and new names are the same (this happens when user press enter with no changes in the form) *****/
|
/***** Check if old and new names are the same
|
||||||
|
(this happens when return is pressed without changes) *****/
|
||||||
if (strcmp (CurrentDptName,NewDptName)) // Different names
|
if (strcmp (CurrentDptName,NewDptName)) // Different names
|
||||||
{
|
{
|
||||||
/***** If degree was in database... *****/
|
/***** If degree was in database... *****/
|
||||||
|
|
|
@ -35,6 +35,7 @@
|
||||||
|
|
||||||
#include "swad_action.h"
|
#include "swad_action.h"
|
||||||
#include "swad_calendar.h"
|
#include "swad_calendar.h"
|
||||||
|
#include "swad_classroom.h"
|
||||||
#include "swad_config.h"
|
#include "swad_config.h"
|
||||||
#include "swad_constant.h"
|
#include "swad_constant.h"
|
||||||
#include "swad_exam.h"
|
#include "swad_exam.h"
|
||||||
|
@ -234,6 +235,8 @@ void Gbl_InitializeGlobals (void)
|
||||||
Gbl.CurrentDeg.Deg.DegCod = -1L;
|
Gbl.CurrentDeg.Deg.DegCod = -1L;
|
||||||
Gbl.CurrentDeg.Deg.ShrtName[0] = Gbl.CurrentDeg.Deg.FullName[0] = '\0';
|
Gbl.CurrentDeg.Deg.ShrtName[0] = Gbl.CurrentDeg.Deg.FullName[0] = '\0';
|
||||||
|
|
||||||
|
Gbl.Classrooms.EditingCla.MaxStudents = Cla_NUM_STUDENTS_NOT_LIMITED;
|
||||||
|
|
||||||
Gbl.CurrentCrs.Crs.CrsCod = -1L;
|
Gbl.CurrentCrs.Crs.CrsCod = -1L;
|
||||||
Gbl.CurrentCrs.Crs.ShrtName[0] = Gbl.CurrentCrs.Crs.FullName[0] = '\0';
|
Gbl.CurrentCrs.Crs.ShrtName[0] = Gbl.CurrentCrs.Crs.FullName[0] = '\0';
|
||||||
Gbl.CurrentCrs.Info.ShowMsgMustBeRead = 0;
|
Gbl.CurrentCrs.Info.ShowMsgMustBeRead = 0;
|
||||||
|
|
42
swad_group.c
42
swad_group.c
|
@ -148,7 +148,7 @@ static void Grp_PutParamRemGrp (void);
|
||||||
static void Grp_RemoveGroupTypeCompletely (void);
|
static void Grp_RemoveGroupTypeCompletely (void);
|
||||||
static void Grp_RemoveGroupCompletely (void);
|
static void Grp_RemoveGroupCompletely (void);
|
||||||
|
|
||||||
static void Grp_WriteMaxStdsGrp (unsigned MaxStudents);
|
static void Grp_WriteMaxStds (unsigned MaxStudents);
|
||||||
static long Grp_GetParamGrpTypCod (void);
|
static long Grp_GetParamGrpTypCod (void);
|
||||||
static long Grp_GetParamGrpCod (void);
|
static long Grp_GetParamGrpCod (void);
|
||||||
static void Grp_PutParamGrpTypCod (long GrpTypCod);
|
static void Grp_PutParamGrpTypCod (long GrpTypCod);
|
||||||
|
@ -1615,7 +1615,7 @@ static void Grp_ListGroupsForEdition (void)
|
||||||
Grp_PutParamGrpCod (Grp->GrpCod);
|
Grp_PutParamGrpCod (Grp->GrpCod);
|
||||||
fprintf (Gbl.F.Out,"<input type=\"text\" name=\"MaxStudents\""
|
fprintf (Gbl.F.Out,"<input type=\"text\" name=\"MaxStudents\""
|
||||||
" size=\"3\" maxlength=\"10\" value=\"");
|
" size=\"3\" maxlength=\"10\" value=\"");
|
||||||
Grp_WriteMaxStdsGrp (Grp->MaxStudents);
|
Grp_WriteMaxStds (Grp->MaxStudents);
|
||||||
fprintf (Gbl.F.Out,"\" onchange=\"document.getElementById('%s').submit();\" />",
|
fprintf (Gbl.F.Out,"\" onchange=\"document.getElementById('%s').submit();\" />",
|
||||||
Gbl.Form.Id);
|
Gbl.Form.Id);
|
||||||
Frm_EndForm ();
|
Frm_EndForm ();
|
||||||
|
@ -2439,7 +2439,7 @@ static void Grp_WriteRowGrp (struct Group *Grp,bool Highlight)
|
||||||
if (Highlight)
|
if (Highlight)
|
||||||
fprintf (Gbl.F.Out," LIGHT_BLUE");
|
fprintf (Gbl.F.Out," LIGHT_BLUE");
|
||||||
fprintf (Gbl.F.Out,"\">");
|
fprintf (Gbl.F.Out,"\">");
|
||||||
Grp_WriteMaxStdsGrp (Grp->MaxStudents);
|
Grp_WriteMaxStds (Grp->MaxStudents);
|
||||||
fprintf (Gbl.F.Out," "
|
fprintf (Gbl.F.Out," "
|
||||||
"</td>");
|
"</td>");
|
||||||
|
|
||||||
|
@ -2655,7 +2655,7 @@ static void Grp_PutFormToCreateGroup (void)
|
||||||
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">"
|
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">"
|
||||||
"<input type=\"text\" name=\"MaxStudents\""
|
"<input type=\"text\" name=\"MaxStudents\""
|
||||||
" size=\"3\" maxlength=\"10\" value=\"");
|
" size=\"3\" maxlength=\"10\" value=\"");
|
||||||
Grp_WriteMaxStdsGrp (Gbl.CurrentCrs.Grps.MaxStudents);
|
Grp_WriteMaxStds (Gbl.CurrentCrs.Grps.MaxStudents);
|
||||||
fprintf (Gbl.F.Out,"\" />"
|
fprintf (Gbl.F.Out,"\" />"
|
||||||
"</td>"
|
"</td>"
|
||||||
"</tr>");
|
"</tr>");
|
||||||
|
@ -4345,7 +4345,7 @@ void Grp_ChangeMandatGrpTyp (void)
|
||||||
Grp_GetDataOfGroupTypeByCod (&Gbl.CurrentCrs.Grps.GrpTyp);
|
Grp_GetDataOfGroupTypeByCod (&Gbl.CurrentCrs.Grps.GrpTyp);
|
||||||
|
|
||||||
/***** Check if the old type of enrolment match the new
|
/***** Check if the old type of enrolment match the new
|
||||||
(this happens when return is pressed without changes in the form) *****/
|
(this happens when return is pressed without changes) *****/
|
||||||
if (Gbl.CurrentCrs.Grps.GrpTyp.MandatoryEnrolment == NewMandatoryEnrolment)
|
if (Gbl.CurrentCrs.Grps.GrpTyp.MandatoryEnrolment == NewMandatoryEnrolment)
|
||||||
{
|
{
|
||||||
AlertType = Ale_INFO;
|
AlertType = Ale_INFO;
|
||||||
|
@ -4476,9 +4476,9 @@ void Grp_ChangeOpenTimeGrpTyp (void)
|
||||||
|
|
||||||
void Grp_ChangeMaxStdsGrp (void)
|
void Grp_ChangeMaxStdsGrp (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_The_maximum_number_of_students_in_the_group_X_has_not_changed;
|
extern const char *Txt_The_maximum_number_of_students_has_not_changed;
|
||||||
extern const char *Txt_The_group_X_now_has_no_limit_of_students;
|
extern const char *Txt_The_group_X_does_not_have_a_student_limit_now;
|
||||||
extern const char *Txt_The_maximum_number_of_students_in_the_group_X_is_now_Y;
|
extern const char *Txt_The_maximum_number_of_students_is_now_X;
|
||||||
struct GroupData GrpDat;
|
struct GroupData GrpDat;
|
||||||
unsigned NewMaxStds;
|
unsigned NewMaxStds;
|
||||||
Ale_AlertType_t AlertType;
|
Ale_AlertType_t AlertType;
|
||||||
|
@ -4495,17 +4495,17 @@ void Grp_ChangeMaxStdsGrp (void)
|
||||||
Grp_MAX_STUDENTS_IN_A_GROUP,
|
Grp_MAX_STUDENTS_IN_A_GROUP,
|
||||||
Grp_NUM_STUDENTS_NOT_LIMITED);
|
Grp_NUM_STUDENTS_NOT_LIMITED);
|
||||||
|
|
||||||
/* Get from the database the type, name, and antiguo maximum of students of the group */
|
/* Get from the database the type, name, and old maximum of students of the group */
|
||||||
GrpDat.GrpCod = Gbl.CurrentCrs.Grps.GrpCod;
|
GrpDat.GrpCod = Gbl.CurrentCrs.Grps.GrpCod;
|
||||||
Grp_GetDataOfGroupByCod (&GrpDat);
|
Grp_GetDataOfGroupByCod (&GrpDat);
|
||||||
|
|
||||||
/***** Check if the old maximum of students equals the new one (this happens when user press return without change the form) *****/
|
/***** Check if the old maximum of students equals the new one
|
||||||
|
(this happens when return is pressed without changes) *****/
|
||||||
if (GrpDat.MaxStudents == NewMaxStds)
|
if (GrpDat.MaxStudents == NewMaxStds)
|
||||||
{
|
{
|
||||||
AlertType = Ale_INFO;
|
AlertType = Ale_INFO;
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
Str_Copy (Gbl.Alert.Txt,Txt_The_maximum_number_of_students_has_not_changed,
|
||||||
Txt_The_maximum_number_of_students_in_the_group_X_has_not_changed,
|
Ale_MAX_BYTES_ALERT);
|
||||||
GrpDat.GrpName);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -4519,12 +4519,12 @@ void Grp_ChangeMaxStdsGrp (void)
|
||||||
AlertType = Ale_SUCCESS;
|
AlertType = Ale_SUCCESS;
|
||||||
if (NewMaxStds > Grp_MAX_STUDENTS_IN_A_GROUP)
|
if (NewMaxStds > Grp_MAX_STUDENTS_IN_A_GROUP)
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
||||||
Txt_The_group_X_now_has_no_limit_of_students,
|
Txt_The_group_X_does_not_have_a_student_limit_now,
|
||||||
GrpDat.GrpName);
|
GrpDat.GrpName);
|
||||||
else
|
else
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
||||||
Txt_The_maximum_number_of_students_in_the_group_X_is_now_Y,
|
Txt_The_maximum_number_of_students_is_now_X,
|
||||||
GrpDat.GrpName,NewMaxStds);
|
NewMaxStds);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Show the form again *****/
|
/***** Show the form again *****/
|
||||||
|
@ -4534,10 +4534,10 @@ void Grp_ChangeMaxStdsGrp (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/************ Write the number maximum of students in a group ***************/
|
/************* Write the maximum number of students in a group ***************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Grp_WriteMaxStdsGrp (unsigned MaxStudents)
|
static void Grp_WriteMaxStds (unsigned MaxStudents)
|
||||||
{
|
{
|
||||||
if (MaxStudents <= Grp_MAX_STUDENTS_IN_A_GROUP)
|
if (MaxStudents <= Grp_MAX_STUDENTS_IN_A_GROUP)
|
||||||
fprintf (Gbl.F.Out,"%u",MaxStudents);
|
fprintf (Gbl.F.Out,"%u",MaxStudents);
|
||||||
|
@ -4592,7 +4592,8 @@ void Grp_RenameGroupType (void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/***** Check if old and new names are the same (this happens when user press enter with no changes in the form) *****/
|
/***** Check if old and new names are the same
|
||||||
|
(this happens when return is pressed without changes) *****/
|
||||||
if (strcmp (Gbl.CurrentCrs.Grps.GrpTyp.GrpTypName,NewNameGrpTyp)) // Different names
|
if (strcmp (Gbl.CurrentCrs.Grps.GrpTyp.GrpTypName,NewNameGrpTyp)) // Different names
|
||||||
{
|
{
|
||||||
/***** If group type was in database... *****/
|
/***** If group type was in database... *****/
|
||||||
|
@ -4671,7 +4672,8 @@ void Grp_RenameGroup (void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/***** Check if old and new names are the same (this happens when user press enter with no changes in the form) *****/
|
/***** Check if old and new names are the same
|
||||||
|
(this happens when return is pressed without changes) *****/
|
||||||
if (strcmp (GrpDat.GrpName,NewNameGrp)) // Different names
|
if (strcmp (GrpDat.GrpName,NewNameGrp)) // Different names
|
||||||
{
|
{
|
||||||
/***** If group was in database... *****/
|
/***** If group was in database... *****/
|
||||||
|
|
|
@ -920,7 +920,8 @@ void Hld_RenameHoliday1 (void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/***** Check if old and new names are the same (this happens when user press enter with no changes in the form) *****/
|
/***** Check if old and new names are the same
|
||||||
|
(this happens when return is pressed without changes) *****/
|
||||||
if (strcmp (Hld->Name,NewHldName)) // Different names
|
if (strcmp (Hld->Name,NewHldName)) // Different names
|
||||||
{
|
{
|
||||||
/***** If degree was in database... *****/
|
/***** If degree was in database... *****/
|
||||||
|
|
|
@ -1855,7 +1855,8 @@ static void Ins_RenameInstitution (struct Instit *Ins,Cns_ShrtOrFullName_t ShrtO
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/***** Check if old and new names are the same (this happens when user press enter with no changes in the form) *****/
|
/***** Check if old and new names are the same
|
||||||
|
(this happens when return is pressed without changes) *****/
|
||||||
if (strcmp (CurrentInsName,NewInsName)) // Different names
|
if (strcmp (CurrentInsName,NewInsName)) // Different names
|
||||||
{
|
{
|
||||||
/***** If institution was in database... *****/
|
/***** If institution was in database... *****/
|
||||||
|
|
|
@ -590,7 +590,8 @@ static void Lnk_RenameLink (Cns_ShrtOrFullName_t ShrtOrFullName)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/***** Check if old and new names are the same (this happens when user press enter with no changes in the form) *****/
|
/***** Check if old and new names are the same
|
||||||
|
(this happens when return is pressed without changes) *****/
|
||||||
if (strcmp (CurrentLnkName,NewLnkName)) // Different names
|
if (strcmp (CurrentLnkName,NewLnkName)) // Different names
|
||||||
{
|
{
|
||||||
/***** If link was in database... *****/
|
/***** If link was in database... *****/
|
||||||
|
|
|
@ -649,7 +649,8 @@ static void Mai_RenameMailDomain (Cns_ShrtOrFullName_t ShrtOrFullName)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/***** Check if old and new names are the same (this happens when user press enter with no changes in the form) *****/
|
/***** Check if old and new names are the same
|
||||||
|
(this happens when return is pressed without changes) *****/
|
||||||
if (strcmp (CurrentMaiName,NewMaiName)) // Different names
|
if (strcmp (CurrentMaiName,NewMaiName)) // Different names
|
||||||
{
|
{
|
||||||
/***** If mail was in database... *****/
|
/***** If mail was in database... *****/
|
||||||
|
|
|
@ -699,7 +699,8 @@ static void Plc_RenamePlace (Cns_ShrtOrFullName_t ShrtOrFullName)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/***** Check if old and new names are the same (this happens when user press enter with no changes in the form) *****/
|
/***** Check if old and new names are the same
|
||||||
|
(this happens when return is pressed without changes) *****/
|
||||||
if (strcmp (CurrentPlcName,NewPlcName)) // Different names
|
if (strcmp (CurrentPlcName,NewPlcName)) // Different names
|
||||||
{
|
{
|
||||||
/***** If place was in database... *****/
|
/***** If place was in database... *****/
|
||||||
|
|
|
@ -547,7 +547,8 @@ void Plg_RenamePlugin (void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/***** Check if old and new names are the same (this happens when user press enter with no changes in the form) *****/
|
/***** Check if old and new names are the same
|
||||||
|
(this happens when return is pressed without changes) *****/
|
||||||
if (strcmp (Plg->Name,NewPlgName)) // Different names
|
if (strcmp (Plg->Name,NewPlgName)) // Different names
|
||||||
{
|
{
|
||||||
/***** If plugin was in database... *****/
|
/***** If plugin was in database... *****/
|
||||||
|
|
|
@ -803,7 +803,7 @@ void Rec_RenameField (void)
|
||||||
/* Get the new group name */
|
/* Get the new group name */
|
||||||
Par_GetParToText ("FieldName",NewFieldName,Rec_MAX_BYTES_NAME_FIELD);
|
Par_GetParToText ("FieldName",NewFieldName,Rec_MAX_BYTES_NAME_FIELD);
|
||||||
|
|
||||||
/***** Get from the database the antiguo group name *****/
|
/***** Get from the database the old field name *****/
|
||||||
Rec_GetFieldByCod (Gbl.CurrentCrs.Records.Field.FieldCod,
|
Rec_GetFieldByCod (Gbl.CurrentCrs.Records.Field.FieldCod,
|
||||||
Gbl.CurrentCrs.Records.Field.Name,
|
Gbl.CurrentCrs.Records.Field.Name,
|
||||||
&Gbl.CurrentCrs.Records.Field.NumLines,
|
&Gbl.CurrentCrs.Records.Field.NumLines,
|
||||||
|
@ -886,7 +886,7 @@ void Rec_ChangeLinesField (void)
|
||||||
/* Get from the database the number of lines of the field */
|
/* Get from the database the number of lines of the field */
|
||||||
Rec_GetFieldByCod (Gbl.CurrentCrs.Records.Field.FieldCod,Gbl.CurrentCrs.Records.Field.Name,&Gbl.CurrentCrs.Records.Field.NumLines,&Gbl.CurrentCrs.Records.Field.Visibility);
|
Rec_GetFieldByCod (Gbl.CurrentCrs.Records.Field.FieldCod,Gbl.CurrentCrs.Records.Field.Name,&Gbl.CurrentCrs.Records.Field.NumLines,&Gbl.CurrentCrs.Records.Field.Visibility);
|
||||||
|
|
||||||
/***** Check if the old number of rows antiguo match the new one
|
/***** Check if the old number of rows matches the new one
|
||||||
(this happens when return is pressed without changes) *****/
|
(this happens when return is pressed without changes) *****/
|
||||||
if (Gbl.CurrentCrs.Records.Field.NumLines == NewNumLines)
|
if (Gbl.CurrentCrs.Records.Field.NumLines == NewNumLines)
|
||||||
{
|
{
|
||||||
|
@ -941,7 +941,7 @@ void Rec_ChangeVisibilityField (void)
|
||||||
Rec_GetFieldByCod (Gbl.CurrentCrs.Records.Field.FieldCod,Gbl.CurrentCrs.Records.Field.Name,&Gbl.CurrentCrs.Records.Field.NumLines,&Gbl.CurrentCrs.Records.Field.Visibility);
|
Rec_GetFieldByCod (Gbl.CurrentCrs.Records.Field.FieldCod,Gbl.CurrentCrs.Records.Field.Name,&Gbl.CurrentCrs.Records.Field.NumLines,&Gbl.CurrentCrs.Records.Field.Visibility);
|
||||||
|
|
||||||
/***** Check if the old visibility matches the new one
|
/***** Check if the old visibility matches the new one
|
||||||
(this happens whe return is pressed without changes in the form) *****/
|
(this happens when return is pressed without changes) *****/
|
||||||
if (Gbl.CurrentCrs.Records.Field.Visibility == NewVisibility)
|
if (Gbl.CurrentCrs.Records.Field.Visibility == NewVisibility)
|
||||||
{
|
{
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
||||||
|
|
128
swad_text.c
128
swad_text.c
|
@ -3917,23 +3917,23 @@ const char *Txt_CLASSROOMS_HELP_ORDER[Cla_NUM_ORDERS] =
|
||||||
#endif
|
#endif
|
||||||
,
|
,
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Ordenar per nombre d'estudiants"
|
"Ordenar per nombre màxim d'estudiants"
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
"Nach Anzahl der Studenten sortieren"
|
"Sortieren nach maximaler Schülerzahl"
|
||||||
#elif L==3 // en
|
#elif L==3 // en
|
||||||
"Sort by no. of students"
|
"Sort by maximum number of students"
|
||||||
#elif L==4 // es
|
#elif L==4 // es
|
||||||
"Ordenar por nº de estudiantes"
|
"Ordenar por nº máximo de estudiantes"
|
||||||
#elif L==5 // fr
|
#elif L==5 // fr
|
||||||
"Trier par nombre d'étudiants"
|
"Trier par nombre maximum d'étudiants"
|
||||||
#elif L==6 // gn
|
#elif L==6 // gn
|
||||||
"Ordenar por nº de estudiantes" // Okoteve traducción
|
"Ordenar por nº máximo de estudiantes" // Okoteve traducción
|
||||||
#elif L==7 // it
|
#elif L==7 // it
|
||||||
"Ordina per numero di studenti"
|
"Ordina per numero massimo di studenti"
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Sortuj wedlug studenci"
|
"Sortuj wed&lsgtrok;ug maksymalnej liczby studentów"
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Classificar por número de estudantes"
|
"Ordenar pelo número máximo de estudantes"
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -3960,23 +3960,23 @@ const char *Txt_CLASSROOMS_ORDER[Cla_NUM_ORDERS] =
|
||||||
#endif
|
#endif
|
||||||
,
|
,
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Estudiants"
|
"Màxim<br />d'est."
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
"Studenten"
|
"Max.<br />Stud."
|
||||||
#elif L==3 // en
|
#elif L==3 // en
|
||||||
"Students"
|
"Max.<br />stud."
|
||||||
#elif L==4 // es
|
#elif L==4 // es
|
||||||
"Estudiantes"
|
"Máx.<br />estu."
|
||||||
#elif L==5 // fr
|
#elif L==5 // fr
|
||||||
"Étudiants"
|
"Max.<br />étud."
|
||||||
#elif L==6 // gn
|
#elif L==6 // gn
|
||||||
"Estudiantes" // Okoteve traducción
|
"Máx.<br />estu." // Okoteve traducción
|
||||||
#elif L==7 // it
|
#elif L==7 // it
|
||||||
"Studenti"
|
"Max.<br />stud."
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Studentów"
|
"Max.<br />stud."
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Estudantes"
|
"Máx.<br />estu."
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -43654,6 +43654,27 @@ const char *Txt_The_classroom_X_already_exists = // Warning: it is very importan
|
||||||
"A sala de clase <strong>%s</strong> já existe.";
|
"A sala de clase <strong>%s</strong> já existe.";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_The_classroom_X_does_not_have_a_student_limit_now = // Warning: it is very important to include %s in the following sentences
|
||||||
|
#if L==1 // ca
|
||||||
|
"L'aula <strong>%s</strong> ara no té cap límit d'estudiants.";
|
||||||
|
#elif L==2 // de
|
||||||
|
"Das Klassenzimmer <strong>%s</strong> hat jetzt kein Studentenlimit.";
|
||||||
|
#elif L==3 // en
|
||||||
|
"The classroom <strong>%s</strong> does not have a student limit now.";
|
||||||
|
#elif L==4 // es
|
||||||
|
"El aula <strong>%s</strong> no tiene ahora límite de estudiantes.";
|
||||||
|
#elif L==5 // fr
|
||||||
|
"La salle de classe <strong>%s</strong> n'a plus de limite d'étudiants.";
|
||||||
|
#elif L==6 // gn
|
||||||
|
"El aula <strong>%s</strong> no tiene ahora límite de estudiantes."; // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"L'aula <strong>%s</strong> ora non ha limite di studenti.";
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Klasa <strong>%s</strong> nie ma teraz żadnych limitów uczniów.";
|
||||||
|
#elif L==9 // pt
|
||||||
|
"A sala de clase <strong>%s</strong> não tem limite de estudantes agora.";
|
||||||
|
#endif
|
||||||
|
|
||||||
const char *Txt_The_classroom_X_has_been_renamed_as_Y = // Warning: it is very important to include two %s in the following sentences
|
const char *Txt_The_classroom_X_has_been_renamed_as_Y = // Warning: it is very important to include two %s in the following sentences
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"L'aula <strong>%s</strong> ha passat a denominar-se <strong>%s</strong>.";
|
"L'aula <strong>%s</strong> ha passat a denominar-se <strong>%s</strong>.";
|
||||||
|
@ -44932,25 +44953,25 @@ const char *Txt_The_group_X_is_now_open = // Warning: it is very important to in
|
||||||
"O grupo <strong>%s</strong> está agora aberto.";
|
"O grupo <strong>%s</strong> está agora aberto.";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_The_group_X_now_has_no_limit_of_students = // Warning: it is very important to include %s in the following sentences
|
const char *Txt_The_group_X_does_not_have_a_student_limit_now = // Warning: it is very important to include %s in the following sentences
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"El grupo <strong>%s</strong> no tiene ahora límite de estudiantes."; // Necessita traduccio
|
"El grup <strong>%s</strong> ara no té cap límit d'estudiants.";
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
"The group <strong>%s</strong> now has no limit of students.";
|
"Die Gruppe <strong>%s</strong> hat jetzt kein Studentenlimit.";
|
||||||
#elif L==3 // en
|
#elif L==3 // en
|
||||||
"The group <strong>%s</strong> now has no limit of students.";
|
"The group <strong>%s</strong> does not have a student limit now.";
|
||||||
#elif L==4 // es
|
#elif L==4 // es
|
||||||
"El grupo <strong>%s</strong> no tiene ahora límite de estudiantes.";
|
"El grupo <strong>%s</strong> no tiene ahora límite de estudiantes.";
|
||||||
#elif L==5 // fr
|
#elif L==5 // fr
|
||||||
"The group <strong>%s</strong> now has no limit of students.";
|
"Le groupe <strong>%s</strong> n'a plus de limite d'étudiants.";
|
||||||
#elif L==6 // gn
|
#elif L==6 // gn
|
||||||
"El grupo <strong>%s</strong> no tiene ahora límite de estudiantes."; // Okoteve traducción
|
"El grupo <strong>%s</strong> no tiene ahora límite de estudiantes."; // Okoteve traducción
|
||||||
#elif L==7 // it
|
#elif L==7 // it
|
||||||
"Il gruppo <strong>%s</strong> ora non ha limite di studenti.";
|
"Il gruppo <strong>%s</strong> ora non ha limite di studenti.";
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"The group <strong>%s</strong> now has no limit of students."; // Potrzebujesz tlumaczenie
|
"Grupa <strong>%s</strong> nie ma teraz żadnych limitów uczniów.";
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"The group <strong>%s</strong> now has no limit of students.";
|
"O grupo <strong>%s</strong> não tem limite de estudantes agora.";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_The_groups_will_automatically_open =
|
const char *Txt_The_groups_will_automatically_open =
|
||||||
|
@ -45553,64 +45574,55 @@ const char *Txt_the_marks_of_a_student_chosen_at_random_ =
|
||||||
" se você vir mais de um estudante, isso significa que o número de cabeça ou pé linhas não está correto";
|
" se você vir mais de um estudante, isso significa que o número de cabeça ou pé linhas não está correto";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_The_maximum_number_of_students_in_the_group_X_has_not_changed = // Warning: it is very important to include %s in the following sentences
|
const char *Txt_The_maximum_number_of_students_has_not_changed =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"El nº máximo de estudiantes"
|
"El nombre màxim d'estudiants no ha canviat.";
|
||||||
" del grupo <strong>%s</strong> no ha cambiado."; // Necessita traduccio
|
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
"The maximum number of students"
|
"Die maximale Anzahl von Studenten hat sich nicht geändert.";
|
||||||
" in the group <strong>%s</strong> has not changed."; // Need Übersetzung
|
|
||||||
#elif L==3 // en
|
#elif L==3 // en
|
||||||
"The maximum number of students"
|
"The maximum number of students has not changed.";
|
||||||
" in the group <strong>%s</strong> has not changed.";
|
|
||||||
#elif L==4 // es
|
#elif L==4 // es
|
||||||
"El nº máximo de estudiantes"
|
"El nº máximo de estudiantes no ha cambiado.";
|
||||||
" del grupo <strong>%s</strong> no ha cambiado.";
|
|
||||||
#elif L==5 // fr
|
#elif L==5 // fr
|
||||||
"The maximum number of students"
|
"Le nombre maximum d'étudiants n'a pas changé.";
|
||||||
" in the group <strong>%s</strong> has not changed."; // Besoin de traduction
|
|
||||||
#elif L==6 // gn
|
#elif L==6 // gn
|
||||||
"El nº máximo de estudiantes"
|
"El nº máximo de estudiantes no ha cambiado."; // Okoteve traducción
|
||||||
" del grupo <strong>%s</strong> no ha cambiado."; // Okoteve traducción
|
|
||||||
#elif L==7 // it
|
#elif L==7 // it
|
||||||
"Il numero massimo di studenti"
|
"Il numero massimo di studenti non è cambiato.";
|
||||||
" nel gruppo <strong>%s</strong> non è cambiato.";
|
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"The maximum number of students"
|
"Maksymalna liczba studentów nie uległa zmianie.";
|
||||||
" in the group <strong>%s</strong> has not changed."; // Potrzebujesz tlumaczenie
|
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"O número máximo de estudantes"
|
"O número máximo de estudantes não foi alterado.";
|
||||||
" no grupo <strong>%s</strong> não foi alterado.";
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_The_maximum_number_of_students_in_the_group_X_is_now_Y = // Warning: it is very important to include %s and %u in the following sentences
|
const char *Txt_The_maximum_number_of_students_is_now_X = // Warning: it is very important to include %u in the following sentences
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"El nº máximo de estudiantes"
|
"El nombre màxim d'estudiants"
|
||||||
" del grupo <strong>%s</strong> ahora es <strong>%u</strong>."; // Necessita traduccio
|
" ara és <strong>%u</strong>.";
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
"The maximum number of students"
|
"Die maximale Anzahl von Studenten"
|
||||||
" in the group <strong>%s</strong> is now <strong>%u</strong>."; // Need Übersetzung
|
" beträgt jetzt <strong>%u</strong>.";
|
||||||
#elif L==3 // en
|
#elif L==3 // en
|
||||||
"The maximum number of students"
|
"The maximum number of students"
|
||||||
" in the group <strong>%s</strong> is now <strong>%u</strong>.";
|
" is now <strong>%u</strong>.";
|
||||||
#elif L==4 // es
|
#elif L==4 // es
|
||||||
"El nº máximo de estudiantes"
|
"El nº máximo de estudiantes"
|
||||||
" del grupo <strong>%s</strong> ahora es <strong>%u</strong>.";
|
" ahora es <strong>%u</strong>.";
|
||||||
#elif L==5 // fr
|
#elif L==5 // fr
|
||||||
"The maximum number of students"
|
"Le nombre maximum d'étudiants"
|
||||||
" in the group <strong>%s</strong> is now <strong>%u</strong>."; // Besoin de traduction
|
" est maintenant de <strong>%u</strong>.";
|
||||||
#elif L==6 // gn
|
#elif L==6 // gn
|
||||||
"El nº máximo de estudiantes"
|
"El nº máximo de estudiantes"
|
||||||
" del grupo <strong>%s</strong> ahora es <strong>%u</strong>."; // Okoteve traducción
|
" ahora es <strong>%u</strong>."; // Okoteve traducción
|
||||||
#elif L==7 // it
|
#elif L==7 // it
|
||||||
"Il numero massimo di studenti"
|
"Il numero massimo di studenti"
|
||||||
" nel gruppo <strong>%s</strong> è ora <strong>%u</strong>.";
|
" è ora <strong>%u</strong>.";
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"The maximum number of students"
|
"Maksymalna liczba studentów"
|
||||||
" in the group <strong>%s</strong> is now <strong>%u</strong>."; // Potrzebujesz tlumaczenie
|
" wynosi teraz <strong>%u</strong>.";
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"O número máximo de estudantes"
|
"O número máximo de estudantes"
|
||||||
" no grupo <strong>%s</strong> é agora <strong>%u</strong>.";
|
" é agora <strong>%u</strong>.";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_The_message_has_not_been_sent_to_any_recipient =
|
const char *Txt_The_message_has_not_been_sent_to_any_recipient =
|
||||||
|
|
Loading…
Reference in New Issue