mirror of
https://github.com/acanas/swad-core.git
synced 2024-06-18 06:25:42 +02:00
Version 15.59.1
This commit is contained in:
parent
05e930cf29
commit
022d56e66d
|
@ -373,13 +373,6 @@ CREATE TABLE IF NOT EXISTS debug (
|
||||||
Txt TEXT NOT NULL,
|
Txt TEXT NOT NULL,
|
||||||
INDEX(DebugTime));
|
INDEX(DebugTime));
|
||||||
--
|
--
|
||||||
-- Table deg_admin: stores administrators of degrees
|
|
||||||
--
|
|
||||||
CREATE TABLE IF NOT EXISTS deg_admin (
|
|
||||||
UsrCod INT NOT NULL,
|
|
||||||
DegCod INT NOT NULL,
|
|
||||||
UNIQUE INDEX(UsrCod,DegCod));
|
|
||||||
--
|
|
||||||
-- Table deg_types: stores the types of degree
|
-- Table deg_types: stores the types of degree
|
||||||
--
|
--
|
||||||
CREATE TABLE IF NOT EXISTS deg_types (
|
CREATE TABLE IF NOT EXISTS deg_types (
|
||||||
|
@ -400,7 +393,6 @@ CREATE TABLE IF NOT EXISTS degrees (
|
||||||
FullName VARCHAR(127) NOT NULL,
|
FullName VARCHAR(127) NOT NULL,
|
||||||
FirstYear TINYINT NOT NULL DEFAULT 0,
|
FirstYear TINYINT NOT NULL DEFAULT 0,
|
||||||
LastYear TINYINT NOT NULL DEFAULT 0,
|
LastYear TINYINT NOT NULL DEFAULT 0,
|
||||||
OptYear ENUM('N','Y') NOT NULL DEFAULT 'N',
|
|
||||||
WWW VARCHAR(255) NOT NULL,
|
WWW VARCHAR(255) NOT NULL,
|
||||||
UNIQUE INDEX(DegCod),
|
UNIQUE INDEX(DegCod),
|
||||||
INDEX(CtrCod),
|
INDEX(CtrCod),
|
||||||
|
|
|
@ -75,7 +75,7 @@ extern struct Globals Gbl;
|
||||||
/************************ Internal global variables **************************/
|
/************************ Internal global variables **************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*
|
/*
|
||||||
1123 actions in one CGI:
|
1122 actions in one CGI:
|
||||||
0. ActAll Any action (used for statistics)
|
0. ActAll Any action (used for statistics)
|
||||||
1. ActUnk Unknown action
|
1. ActUnk Unknown action
|
||||||
2. ActHom Show home menu
|
2. ActHom Show home menu
|
||||||
|
@ -294,7 +294,6 @@ Centre:
|
||||||
184. ActChgDegCtr Request change of the centre of a degree
|
184. ActChgDegCtr Request change of the centre of a degree
|
||||||
185. ActChgDegFstYea Request change of the first year of a degree
|
185. ActChgDegFstYea Request change of the first year of a degree
|
||||||
186. ActChgDegLstYea Request change of the last year of a degree
|
186. ActChgDegLstYea Request change of the last year of a degree
|
||||||
REMOVE ---> 187. ActChgDegOptYea Request change of the year of optativas of a degree
|
|
||||||
188. ActChgDegWWW Request change of the web of a degree
|
188. ActChgDegWWW Request change of the web of a degree
|
||||||
189. ActChgDegSta Request change of status of a degree
|
189. ActChgDegSta Request change of status of a degree
|
||||||
|
|
||||||
|
@ -1698,7 +1697,6 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
||||||
/* ActChgDegCtr */{1049,-1,TabCtr,ActSeeDeg ,0x1C0,0x1C0,0x1C0,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Deg_ChangeDegreeCtr ,NULL},
|
/* ActChgDegCtr */{1049,-1,TabCtr,ActSeeDeg ,0x1C0,0x1C0,0x1C0,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Deg_ChangeDegreeCtr ,NULL},
|
||||||
/* ActChgDegFstYea */{ 550,-1,TabCtr,ActSeeDeg ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Deg_ChangeDegFirstYear ,NULL},
|
/* ActChgDegFstYea */{ 550,-1,TabCtr,ActSeeDeg ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Deg_ChangeDegFirstYear ,NULL},
|
||||||
/* ActChgDegLstYea */{ 551,-1,TabCtr,ActSeeDeg ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Deg_ChangeDegLastYear ,NULL},
|
/* ActChgDegLstYea */{ 551,-1,TabCtr,ActSeeDeg ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Deg_ChangeDegLastYear ,NULL},
|
||||||
/* ActChgDegOptYea *//*{ 552,-1,TabCtr,ActSeeDeg ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Deg_ChangeDegOptYear ,NULL},*/
|
|
||||||
/* ActChgDegWWW */{ 554,-1,TabCtr,ActSeeDeg ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Deg_ChangeDegWWW ,NULL},
|
/* ActChgDegWWW */{ 554,-1,TabCtr,ActSeeDeg ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Deg_ChangeDegWWW ,NULL},
|
||||||
/* ActChgDegSta */{1207,-1,TabCtr,ActSeeDeg ,0x1C0,0x1C0,0x1C0,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Deg_ChangeDegStatus ,NULL},
|
/* ActChgDegSta */{1207,-1,TabCtr,ActSeeDeg ,0x1C0,0x1C0,0x1C0,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Deg_ChangeDegStatus ,NULL},
|
||||||
|
|
||||||
|
@ -3351,7 +3349,6 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq
|
||||||
-1, // #549 (obsolete action)
|
-1, // #549 (obsolete action)
|
||||||
ActChgDegFstYea, // #550
|
ActChgDegFstYea, // #550
|
||||||
ActChgDegLstYea, // #551
|
ActChgDegLstYea, // #551
|
||||||
// ActChgDegOptYea, // #552
|
|
||||||
-1, // #552
|
-1, // #552
|
||||||
ActRecDegLog, // #553
|
ActRecDegLog, // #553
|
||||||
ActChgDegWWW, // #554
|
ActChgDegWWW, // #554
|
||||||
|
|
|
@ -101,7 +101,6 @@
|
||||||
// TODO: A teacher should may confirm a student ID? In what conditions? (Necessary in order to a student can view his/her marks)
|
// TODO: A teacher should may confirm a student ID? In what conditions? (Necessary in order to a student can view his/her marks)
|
||||||
// TODO: Put headers Content-type and Content-disposition when redirecting with Location:
|
// TODO: Put headers Content-type and Content-disposition when redirecting with Location:
|
||||||
// TODO: When a new assignment/attendance/survey is incorrect, the second time the form is shown, it should be filled with partial data, now is always empty
|
// TODO: When a new assignment/attendance/survey is incorrect, the second time the form is shown, it should be filled with partial data, now is always empty
|
||||||
// TODO: Remove columns "first year, last year, optional, status" when listing degrees?
|
|
||||||
// TODO: Show message indicating that mail could be in SPAM folder?
|
// TODO: Show message indicating that mail could be in SPAM folder?
|
||||||
// TODO: Do not show e-mails of administrators and teachers in lists openly
|
// TODO: Do not show e-mails of administrators and teachers in lists openly
|
||||||
// TODO: Show nicknames of users in lists?
|
// TODO: Show nicknames of users in lists?
|
||||||
|
@ -113,12 +112,16 @@
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 15.59 (2015/12/06)"
|
#define Log_PLATFORM_VERSION "SWAD 15.59.1 (2015/12/06)"
|
||||||
#define CSS_FILE "swad15.57.css"
|
#define CSS_FILE "swad15.57.css"
|
||||||
|
|
||||||
// Number of lines (includes comments but not blank lines) has been got with the following command:
|
// Number of lines (includes comments but not blank lines) has been got with the following command:
|
||||||
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1
|
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1
|
||||||
/*
|
/*
|
||||||
|
Version 15.59.1: Dec 06, 2015 Removed unused code related to year for optional courses. (186405 lines)
|
||||||
|
1 change necessary in database:
|
||||||
|
ALTER TABLE degrees DROP COLUMN OptYear;
|
||||||
|
|
||||||
Version 15.59: Dec 06, 2015 Year for optional courses is now always present. (186692 lines)
|
Version 15.59: Dec 06, 2015 Year for optional courses is now always present. (186692 lines)
|
||||||
1 change necessary in database:
|
1 change necessary in database:
|
||||||
UPDATE actions SET Obsolete='Y' WHERE ActCod='552';
|
UPDATE actions SET Obsolete='Y' WHERE ActCod='552';
|
||||||
|
|
|
@ -830,37 +830,21 @@ mysql> DESCRIBE deg_types;
|
||||||
/***** Table degrees *****/
|
/***** Table degrees *****/
|
||||||
/*
|
/*
|
||||||
mysql> DESCRIBE degrees;
|
mysql> DESCRIBE degrees;
|
||||||
+-----------------+---------------+------+-----+---------+----------------+
|
+-----------------+--------------+------+-----+---------+----------------+
|
||||||
| Field | Type | Null | Key | Default | Extra |
|
| Field | Type | Null | Key | Default | Extra |
|
||||||
+-----------------+---------------+------+-----+---------+----------------+
|
+-----------------+--------------+------+-----+---------+----------------+
|
||||||
| DegCod | int(11) | NO | PRI | NULL | auto_increment |
|
| DegCod | int(11) | NO | PRI | NULL | auto_increment |
|
||||||
| CtrCod | int(11) | NO | MUL | NULL | |
|
| CtrCod | int(11) | NO | MUL | NULL | |
|
||||||
| DegTypCod | int(11) | NO | MUL | NULL | |
|
| DegTypCod | int(11) | NO | MUL | NULL | |
|
||||||
| Status | tinyint(4) | NO | MUL | 0 | |
|
| Status | tinyint(4) | NO | MUL | 0 | |
|
||||||
| RequesterUsrCod | int(11) | NO | | -1 | |
|
| RequesterUsrCod | int(11) | NO | | -1 | |
|
||||||
| ShortName | varchar(32) | NO | | NULL | |
|
| ShortName | varchar(32) | NO | | NULL | |
|
||||||
| FullName | varchar(127) | NO | | NULL | |
|
| FullName | varchar(127) | NO | | NULL | |
|
||||||
| FirstYear | tinyint(4) | NO | | 0 | |
|
| FirstYear | tinyint(4) | NO | | 0 | |
|
||||||
| LastYear | tinyint(4) | NO | | 0 | |
|
| LastYear | tinyint(4) | NO | | 0 | |
|
||||||
| OptYear | enum('N','Y') | NO | | N | |
|
| WWW | varchar(255) | NO | | NULL | |
|
||||||
| WWW | varchar(255) | NO | | NULL | |
|
+-----------------+--------------+------+-----+---------+----------------+
|
||||||
+-----------------+---------------+------+-----+---------+----------------+
|
10 rows in set (0.00 sec)
|
||||||
11 rows in set (0.00 sec)
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS degrees ("
|
|
||||||
"DegCod INT NOT NULL AUTO_INCREMENT,"
|
|
||||||
"CtrCod INT NOT NULL,"
|
|
||||||
"DegTypCod INT NOT NULL,"
|
|
||||||
"Status TINYINT NOT NULL DEFAULT 0,"
|
|
||||||
"RequesterUsrCod INT NOT NULL DEFAULT -1,"
|
|
||||||
"ShortName VARCHAR(32) NOT NULL,"
|
|
||||||
"FullName VARCHAR(127) NOT NULL,"
|
|
||||||
"FirstYear TINYINT NOT NULL DEFAULT 0,"
|
|
||||||
"LastYear TINYINT NOT NULL DEFAULT 0,"
|
|
||||||
"OptYear ENUM('N','Y') NOT NULL DEFAULT 'N',"
|
|
||||||
"WWW VARCHAR(255) NOT NULL,"
|
|
||||||
"UNIQUE INDEX(DegCod),INDEX(CtrCod),INDEX(DegTypCod),INDEX(Status))");
|
|
||||||
*/
|
*/
|
||||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS degrees ("
|
DB_CreateTable ("CREATE TABLE IF NOT EXISTS degrees ("
|
||||||
"DegCod INT NOT NULL AUTO_INCREMENT,"
|
"DegCod INT NOT NULL AUTO_INCREMENT,"
|
||||||
|
|
168
swad_degree.c
168
swad_degree.c
|
@ -1277,8 +1277,6 @@ static void Deg_ListOneDegreeForSeeing (struct Degree *Deg,unsigned NumDeg)
|
||||||
{
|
{
|
||||||
extern const char *Txt_DEGREE_With_courses;
|
extern const char *Txt_DEGREE_With_courses;
|
||||||
extern const char *Txt_DEGREE_Without_courses;
|
extern const char *Txt_DEGREE_Without_courses;
|
||||||
// extern const char *Txt_DEGREE_With_year_for_optional_courses;
|
|
||||||
// extern const char *Txt_DEGREE_Without_year_for_optional_courses;
|
|
||||||
extern const char *Txt_DEGREE_STATUS[Deg_NUM_STATUS_TXT];
|
extern const char *Txt_DEGREE_STATUS[Deg_NUM_STATUS_TXT];
|
||||||
struct DegreeType DegTyp;
|
struct DegreeType DegTyp;
|
||||||
const char *TxtClassNormal;
|
const char *TxtClassNormal;
|
||||||
|
@ -1351,23 +1349,6 @@ static void Deg_ListOneDegreeForSeeing (struct Degree *Deg,unsigned NumDeg)
|
||||||
"</td>",
|
"</td>",
|
||||||
TxtClassNormal,BgColor,Deg->LastYear);
|
TxtClassNormal,BgColor,Deg->LastYear);
|
||||||
|
|
||||||
/***** Degree optional year *****/
|
|
||||||
/*
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE %s\">"
|
|
||||||
"<img src=\"%s/%s16x16.gif\""
|
|
||||||
" alt=\"%s\" title=\"%s\""
|
|
||||||
" class=\"ICON16x16\" />"
|
|
||||||
"</td>",
|
|
||||||
BgColor,
|
|
||||||
Gbl.Prefs.IconsURL,
|
|
||||||
Deg->OptYear ? "ok_on" :
|
|
||||||
"tr",
|
|
||||||
Deg->OptYear ? Txt_DEGREE_With_year_for_optional_courses :
|
|
||||||
Txt_DEGREE_Without_year_for_optional_courses,
|
|
||||||
Deg->OptYear ? Txt_DEGREE_With_year_for_optional_courses :
|
|
||||||
Txt_DEGREE_Without_year_for_optional_courses);
|
|
||||||
*/
|
|
||||||
|
|
||||||
/***** Current number of courses in this degree *****/
|
/***** Current number of courses in this degree *****/
|
||||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE %s\">"
|
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE %s\">"
|
||||||
"%u"
|
"%u"
|
||||||
|
@ -1394,8 +1375,6 @@ static void Deg_ListOneDegreeForSeeing (struct Degree *Deg,unsigned NumDeg)
|
||||||
static void Deg_ListDegreesForEdition (void)
|
static void Deg_ListDegreesForEdition (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Degrees_of_CENTRE_X;
|
extern const char *Txt_Degrees_of_CENTRE_X;
|
||||||
// extern const char *Txt_DEGREE_With_year_for_optional_courses;
|
|
||||||
// extern const char *Txt_DEGREE_Without_year_for_optional_courses;
|
|
||||||
extern const char *Txt_DEGREE_STATUS[Deg_NUM_STATUS_TXT];
|
extern const char *Txt_DEGREE_STATUS[Deg_NUM_STATUS_TXT];
|
||||||
unsigned NumDeg;
|
unsigned NumDeg;
|
||||||
struct DegreeType *DegTyp;
|
struct DegreeType *DegTyp;
|
||||||
|
@ -1591,36 +1570,6 @@ static void Deg_ListDegreesForEdition (void)
|
||||||
fprintf (Gbl.F.Out,"%u",Deg->LastYear);
|
fprintf (Gbl.F.Out,"%u",Deg->LastYear);
|
||||||
fprintf (Gbl.F.Out,"</td>");
|
fprintf (Gbl.F.Out,"</td>");
|
||||||
|
|
||||||
/* Degree optional year */
|
|
||||||
/*
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">");
|
|
||||||
if (ICanEdit)
|
|
||||||
{
|
|
||||||
Act_FormStart (ActChgDegOptYea);
|
|
||||||
Deg_PutParamOtherDegCod (Deg->DegCod);
|
|
||||||
fprintf (Gbl.F.Out,"<input type=\"checkbox\" name=\"OptYear\" value=\"Y\"%s"
|
|
||||||
" onchange=\"document.getElementById('%s').submit();\" />",
|
|
||||||
Deg->OptYear ? " checked=\"checked\"" :
|
|
||||||
"",
|
|
||||||
Gbl.FormId);
|
|
||||||
Act_FormEnd ();
|
|
||||||
fprintf (Gbl.F.Out,"</td>");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
* Degree optional year *
|
|
||||||
fprintf (Gbl.F.Out,"<img src=\"%s/%s16x16.gif\""
|
|
||||||
" alt=\"%s\" title=\"%s\""
|
|
||||||
" class=\"ICON16x16\" />",
|
|
||||||
Gbl.Prefs.IconsURL,
|
|
||||||
Deg->OptYear ? "ok_on" :
|
|
||||||
"tr",
|
|
||||||
Deg->OptYear ? Txt_DEGREE_With_year_for_optional_courses :
|
|
||||||
Txt_DEGREE_Without_year_for_optional_courses,
|
|
||||||
Deg->OptYear ? Txt_DEGREE_With_year_for_optional_courses :
|
|
||||||
Txt_DEGREE_Without_year_for_optional_courses);
|
|
||||||
fprintf (Gbl.F.Out,"</td>");
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Degree WWW */
|
/* Degree WWW */
|
||||||
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">");
|
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">");
|
||||||
if (ICanEdit)
|
if (ICanEdit)
|
||||||
|
@ -1638,7 +1587,8 @@ static void Deg_ListDegreesForEdition (void)
|
||||||
{
|
{
|
||||||
strncpy (WWW,Deg->WWW,Deg_MAX_LENGTH_WWW_ON_SCREEN);
|
strncpy (WWW,Deg->WWW,Deg_MAX_LENGTH_WWW_ON_SCREEN);
|
||||||
WWW[Deg_MAX_LENGTH_WWW_ON_SCREEN] = '\0';
|
WWW[Deg_MAX_LENGTH_WWW_ON_SCREEN] = '\0';
|
||||||
fprintf (Gbl.F.Out,"<a href=\"%s\" target=\"_blank\" class=\"DAT\" title=\"%s\">%s",
|
fprintf (Gbl.F.Out,"<a href=\"%s\" target=\"_blank\""
|
||||||
|
" class=\"DAT\" title=\"%s\">%s",
|
||||||
Deg->WWW,Deg->WWW,WWW);
|
Deg->WWW,Deg->WWW,WWW);
|
||||||
if (strlen (Deg->WWW) > Deg_MAX_LENGTH_WWW_ON_SCREEN)
|
if (strlen (Deg->WWW) > Deg_MAX_LENGTH_WWW_ON_SCREEN)
|
||||||
fprintf (Gbl.F.Out,"...");
|
fprintf (Gbl.F.Out,"...");
|
||||||
|
@ -1923,14 +1873,6 @@ static void Deg_PutFormToCreateDegree (void)
|
||||||
fprintf (Gbl.F.Out,"</select>"
|
fprintf (Gbl.F.Out,"</select>"
|
||||||
"</td>");
|
"</td>");
|
||||||
|
|
||||||
/***** Degree optional year *****/
|
|
||||||
/*
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">"
|
|
||||||
"<input type=\"checkbox\" name=\"OptYear\" value=\"Y\"%s /></td>",
|
|
||||||
Deg->OptYear ? " checked=\"checked\"" :
|
|
||||||
"");
|
|
||||||
*/
|
|
||||||
|
|
||||||
/***** Degree WWW *****/
|
/***** Degree WWW *****/
|
||||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
|
||||||
"<input type=\"text\" name=\"WWW\""
|
"<input type=\"text\" name=\"WWW\""
|
||||||
|
@ -2197,20 +2139,6 @@ static void Deg_CreateDegree (struct Degree *Deg,unsigned Status)
|
||||||
char Query[1024];
|
char Query[1024];
|
||||||
|
|
||||||
/***** Create a new degree *****/
|
/***** Create a new degree *****/
|
||||||
/*
|
|
||||||
sprintf (Query,"INSERT INTO degrees (CtrCod,DegTypCod,Status,RequesterUsrCod,"
|
|
||||||
"ShortName,FullName,FirstYear,LastYear,OptYear,WWW)"
|
|
||||||
" VALUES ('%ld','%ld','%u','%ld',"
|
|
||||||
"'%s','%s','%u','%u','%c','%s')",
|
|
||||||
Deg->CtrCod,Deg->DegTypCod,
|
|
||||||
Status,
|
|
||||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
|
||||||
Deg->ShortName,Deg->FullName,
|
|
||||||
Deg->FirstYear,Deg->LastYear,
|
|
||||||
Deg->OptYear ? 'Y' :
|
|
||||||
'N',
|
|
||||||
Deg->WWW);
|
|
||||||
*/
|
|
||||||
sprintf (Query,"INSERT INTO degrees (CtrCod,DegTypCod,Status,RequesterUsrCod,"
|
sprintf (Query,"INSERT INTO degrees (CtrCod,DegTypCod,Status,RequesterUsrCod,"
|
||||||
"ShortName,FullName,FirstYear,LastYear,WWW)"
|
"ShortName,FullName,FirstYear,LastYear,WWW)"
|
||||||
" VALUES ('%ld','%ld','%u','%ld',"
|
" VALUES ('%ld','%ld','%u','%ld',"
|
||||||
|
@ -2388,11 +2316,6 @@ void Deg_GetListAllDegs (void)
|
||||||
unsigned NumDeg;
|
unsigned NumDeg;
|
||||||
|
|
||||||
/***** Get degrees admin by me from database *****/
|
/***** Get degrees admin by me from database *****/
|
||||||
/*
|
|
||||||
sprintf (Query,"SELECT DegCod,CtrCod,DegTypCod,Status,RequesterUsrCod,"
|
|
||||||
"ShortName,FullName,FirstYear,LastYear,OptYear,WWW"
|
|
||||||
" FROM degrees ORDER BY FullName");
|
|
||||||
*/
|
|
||||||
sprintf (Query,"SELECT DegCod,CtrCod,DegTypCod,Status,RequesterUsrCod,"
|
sprintf (Query,"SELECT DegCod,CtrCod,DegTypCod,Status,RequesterUsrCod,"
|
||||||
"ShortName,FullName,FirstYear,LastYear,WWW"
|
"ShortName,FullName,FirstYear,LastYear,WWW"
|
||||||
" FROM degrees ORDER BY FullName");
|
" FROM degrees ORDER BY FullName");
|
||||||
|
@ -2448,12 +2371,6 @@ static void Deg_GetListDegsOfCurrentCtr (void)
|
||||||
unsigned NumDeg;
|
unsigned NumDeg;
|
||||||
|
|
||||||
/***** Get degrees of the current centre from database *****/
|
/***** Get degrees of the current centre from database *****/
|
||||||
/*
|
|
||||||
sprintf (Query,"SELECT DegCod,CtrCod,DegTypCod,Status,RequesterUsrCod,"
|
|
||||||
"ShortName,FullName,FirstYear,LastYear,OptYear,WWW"
|
|
||||||
" FROM degrees WHERE CtrCod='%ld' ORDER BY FullName",
|
|
||||||
Gbl.CurrentCtr.Ctr.CtrCod);
|
|
||||||
*/
|
|
||||||
sprintf (Query,"SELECT DegCod,CtrCod,DegTypCod,Status,RequesterUsrCod,"
|
sprintf (Query,"SELECT DegCod,CtrCod,DegTypCod,Status,RequesterUsrCod,"
|
||||||
"ShortName,FullName,FirstYear,LastYear,WWW"
|
"ShortName,FullName,FirstYear,LastYear,WWW"
|
||||||
" FROM degrees WHERE CtrCod='%ld' ORDER BY FullName",
|
" FROM degrees WHERE CtrCod='%ld' ORDER BY FullName",
|
||||||
|
@ -2527,24 +2444,6 @@ void Deg_GetListDegsAdminByMe (void)
|
||||||
unsigned NumDeg;
|
unsigned NumDeg;
|
||||||
|
|
||||||
/***** Get degrees admin by me from database *****/
|
/***** Get degrees admin by me from database *****/
|
||||||
/*
|
|
||||||
if (Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM)
|
|
||||||
sprintf (Query,"SELECT DegCod,CtrCod,DegTypCod,Status,RequesterUsrCod,"
|
|
||||||
"ShortName,FullName,FirstYear,LastYear,OptYear,WWW"
|
|
||||||
" FROM degrees"
|
|
||||||
" WHERE CtrCod='%ld'"
|
|
||||||
" ORDER BY ShortName",
|
|
||||||
Gbl.CurrentCtr.Ctr.CtrCod);
|
|
||||||
// TODO: put an if to select all degrees for admins of all degrees !!!!!!!!!!!!!
|
|
||||||
else // Gbl.Usrs.Me.LoggedRole == Rol_ROLE_DEG_ADM
|
|
||||||
sprintf (Query,"SELECT degrees.DegCod,degrees.CtrCod,degrees.DegTypCod,degrees.Status,degrees.RequesterUsrCod,"
|
|
||||||
"degrees.ShortName,degrees.FullName,degrees.FirstYear,degrees.LastYear,degrees.OptYear,degrees.WWW"
|
|
||||||
" FROM admin,degrees"
|
|
||||||
" WHERE admin.UsrCod='%ld' AND admin.Scope='Deg'"
|
|
||||||
" AND admin.Cod=degrees.DegCod"
|
|
||||||
" ORDER BY degrees.ShortName",
|
|
||||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
|
||||||
*/
|
|
||||||
if (Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM)
|
if (Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM)
|
||||||
sprintf (Query,"SELECT DegCod,CtrCod,DegTypCod,Status,RequesterUsrCod,"
|
sprintf (Query,"SELECT DegCod,CtrCod,DegTypCod,Status,RequesterUsrCod,"
|
||||||
"ShortName,FullName,FirstYear,LastYear,WWW"
|
"ShortName,FullName,FirstYear,LastYear,WWW"
|
||||||
|
@ -2699,12 +2598,6 @@ static void Deg_RecFormRequestOrCreateDeg (unsigned Status)
|
||||||
Par_GetParToText ("LastYear",YearStr,2);
|
Par_GetParToText ("LastYear",YearStr,2);
|
||||||
Deg->LastYear = Deg_ConvStrToYear (YearStr);
|
Deg->LastYear = Deg_ConvStrToYear (YearStr);
|
||||||
|
|
||||||
/* Get optional year */
|
|
||||||
/*
|
|
||||||
Par_GetParToText ("OptYear",YN,1);
|
|
||||||
Deg->OptYear = (Str_ConvertToUpperLetter (YN[0]) == 'Y');
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Get degree WWW */
|
/* Get degree WWW */
|
||||||
Par_GetParToText ("WWW",Deg->WWW,Cns_MAX_LENGTH_WWW);
|
Par_GetParToText ("WWW",Deg->WWW,Cns_MAX_LENGTH_WWW);
|
||||||
|
|
||||||
|
@ -2981,7 +2874,6 @@ bool Deg_GetDataOfDegreeByCod (struct Degree *Deg)
|
||||||
Deg->FullName[0] = '\0';
|
Deg->FullName[0] = '\0';
|
||||||
Deg->FirstYear = 0;
|
Deg->FirstYear = 0;
|
||||||
Deg->LastYear = 0;
|
Deg->LastYear = 0;
|
||||||
// Deg->OptYear = false;
|
|
||||||
Deg->WWW[0] = '\0';
|
Deg->WWW[0] = '\0';
|
||||||
Deg->NumCourses = 0;
|
Deg->NumCourses = 0;
|
||||||
Deg->LstCrss = NULL;
|
Deg->LstCrss = NULL;
|
||||||
|
@ -2989,12 +2881,6 @@ bool Deg_GetDataOfDegreeByCod (struct Degree *Deg)
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Get data of a degree from database *****/
|
/***** Get data of a degree from database *****/
|
||||||
/*
|
|
||||||
sprintf (Query,"SELECT DegCod,CtrCod,DegTypCod,Status,RequesterUsrCod,"
|
|
||||||
"ShortName,FullName,FirstYear,LastYear,OptYear,WWW"
|
|
||||||
" FROM degrees WHERE DegCod ='%ld'",
|
|
||||||
Deg->DegCod);
|
|
||||||
*/
|
|
||||||
sprintf (Query,"SELECT DegCod,CtrCod,DegTypCod,Status,RequesterUsrCod,"
|
sprintf (Query,"SELECT DegCod,CtrCod,DegTypCod,Status,RequesterUsrCod,"
|
||||||
"ShortName,FullName,FirstYear,LastYear,WWW"
|
"ShortName,FullName,FirstYear,LastYear,WWW"
|
||||||
" FROM degrees WHERE DegCod ='%ld'",
|
" FROM degrees WHERE DegCod ='%ld'",
|
||||||
|
@ -3020,7 +2906,6 @@ bool Deg_GetDataOfDegreeByCod (struct Degree *Deg)
|
||||||
Deg->FullName[0] = '\0';
|
Deg->FullName[0] = '\0';
|
||||||
Deg->FirstYear = 0;
|
Deg->FirstYear = 0;
|
||||||
Deg->LastYear = 0;
|
Deg->LastYear = 0;
|
||||||
// Deg->OptYear = false;
|
|
||||||
Deg->WWW[0] = '\0';
|
Deg->WWW[0] = '\0';
|
||||||
Deg->NumCourses = 0;
|
Deg->NumCourses = 0;
|
||||||
Deg->LstCrss = NULL;
|
Deg->LstCrss = NULL;
|
||||||
|
@ -3070,11 +2955,6 @@ static void Deg_GetDataOfDegreeFromRow (struct Degree *Deg,MYSQL_ROW row)
|
||||||
/***** Get last year (row[8]) *****/
|
/***** Get last year (row[8]) *****/
|
||||||
Deg->LastYear = Deg_ConvStrToYear (row[8]);
|
Deg->LastYear = Deg_ConvStrToYear (row[8]);
|
||||||
|
|
||||||
/***** Get optional year (row[9]) *****/
|
|
||||||
/*
|
|
||||||
Deg->OptYear = (Str_ConvertToUpperLetter (row[9][0]) == 'Y');
|
|
||||||
*/
|
|
||||||
|
|
||||||
/***** Get WWW (row[9]) *****/
|
/***** Get WWW (row[9]) *****/
|
||||||
strcpy (Deg->WWW,row[9]);
|
strcpy (Deg->WWW,row[9]);
|
||||||
|
|
||||||
|
@ -3703,46 +3583,6 @@ static void Deg_ChangeDegYear (struct Degree *Deg,Deg_FirstOrLastYear_t FirstOrL
|
||||||
Deg_EditDegrees ();
|
Deg_EditDegrees ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/******************** Change the optional year of a degree *******************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
/*
|
|
||||||
void Deg_ChangeDegOptYear (void)
|
|
||||||
{
|
|
||||||
extern const char *Txt_The_degree_now_has_a_year_for_optional_courses;
|
|
||||||
extern const char *Txt_The_degree_has_no_longer_a_year_for_optional_courses;
|
|
||||||
struct Degree *Deg;
|
|
||||||
char Query[512];
|
|
||||||
char YN[1+1];
|
|
||||||
|
|
||||||
Deg = &Gbl.Degs.EditingDeg;
|
|
||||||
|
|
||||||
***** Get parameters from form *****
|
|
||||||
* Get degree code *
|
|
||||||
if ((Deg->DegCod = Deg_GetParamOtherDegCod ()) == -1L)
|
|
||||||
Lay_ShowErrorAndExit ("Code of degree is missing.");
|
|
||||||
|
|
||||||
* Get parameter with optional year *
|
|
||||||
Par_GetParToText ("OptYear",YN,1);
|
|
||||||
Deg->OptYear = (Str_ConvertToUpperLetter (YN[0]) == 'Y');
|
|
||||||
|
|
||||||
***** Update optional year in table of degrees *****
|
|
||||||
sprintf (Query,"UPDATE degrees SET OptYear='%c' WHERE DegCod='%ld'",
|
|
||||||
Deg->OptYear ? 'Y' :
|
|
||||||
'N',
|
|
||||||
Deg->DegCod);
|
|
||||||
DB_QueryUPDATE (Query,"can not update the optional year of a degree");
|
|
||||||
|
|
||||||
***** Write message to show the change made *****
|
|
||||||
sprintf (Gbl.Message,"%s",
|
|
||||||
Deg->OptYear ? Txt_The_degree_now_has_a_year_for_optional_courses :
|
|
||||||
Txt_The_degree_has_no_longer_a_year_for_optional_courses);
|
|
||||||
Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
|
|
||||||
|
|
||||||
***** Show the form again *****
|
|
||||||
Deg_EditDegrees ();
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/************************* Change the WWW of a degree ************************/
|
/************************* Change the WWW of a degree ************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -3967,10 +3807,6 @@ unsigned Deg_GetNumDegsWithUsrs (Rol_Role_t Role,const char *SubQuery)
|
||||||
|
|
||||||
bool Deg_CheckIfYearIsValidInDeg (unsigned Year,struct Degree *Deg)
|
bool Deg_CheckIfYearIsValidInDeg (unsigned Year,struct Degree *Deg)
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
return (Year == 0 && Deg->OptYear) ||
|
|
||||||
(Year != 0 && Year >= Deg->FirstYear && Year <= Deg->LastYear);
|
|
||||||
*/
|
|
||||||
return (Year == 0) ||
|
return (Year == 0) ||
|
||||||
(Year != 0 && Year >= Deg->FirstYear && Year <= Deg->LastYear);
|
(Year != 0 && Year >= Deg->FirstYear && Year <= Deg->LastYear);
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,7 +78,6 @@ struct Degree
|
||||||
char FullName[Deg_MAX_LENGTH_DEGREE_FULL_NAME+1]; // Full name of degree
|
char FullName[Deg_MAX_LENGTH_DEGREE_FULL_NAME+1]; // Full name of degree
|
||||||
unsigned FirstYear;
|
unsigned FirstYear;
|
||||||
unsigned LastYear;
|
unsigned LastYear;
|
||||||
// bool OptYear;
|
|
||||||
char WWW[Cns_MAX_LENGTH_WWW+1];
|
char WWW[Cns_MAX_LENGTH_WWW+1];
|
||||||
unsigned NumCourses; // Number of courses in the degree
|
unsigned NumCourses; // Number of courses in the degree
|
||||||
struct Course *LstCrss; // List of courses in this degree
|
struct Course *LstCrss; // List of courses in this degree
|
||||||
|
@ -148,7 +147,6 @@ void Deg_ChangeDegreeType (void);
|
||||||
void Deg_ChangeDegreeCtr (void);
|
void Deg_ChangeDegreeCtr (void);
|
||||||
void Deg_ChangeDegFirstYear (void);
|
void Deg_ChangeDegFirstYear (void);
|
||||||
void Deg_ChangeDegLastYear (void);
|
void Deg_ChangeDegLastYear (void);
|
||||||
// void Deg_ChangeDegOptYear (void);
|
|
||||||
void Deg_ChangeDegWWW (void);
|
void Deg_ChangeDegWWW (void);
|
||||||
void Deg_ChangeDegStatus (void);
|
void Deg_ChangeDegStatus (void);
|
||||||
void Deg_RequestLogo (void);
|
void Deg_RequestLogo (void);
|
||||||
|
|
|
@ -871,7 +871,7 @@ static void Exa_ShowExamAnnouncement (long ExaCod,Exa_TypeViewExamAnnouncement_t
|
||||||
fprintf (Gbl.F.Out,"</td>" \
|
fprintf (Gbl.F.Out,"</td>" \
|
||||||
"</tr>");
|
"</tr>");
|
||||||
|
|
||||||
/***** Year (optional, 1º, 2º, 3º, 4º, 5º...) *****/
|
/***** Year (N.A., 1º, 2º, 3º, 4º, 5º...) *****/
|
||||||
fprintf (Gbl.F.Out,"<tr>" \
|
fprintf (Gbl.F.Out,"<tr>" \
|
||||||
"<td class=\"%s RIGHT_TOP\">"
|
"<td class=\"%s RIGHT_TOP\">"
|
||||||
"%s:"
|
"%s:"
|
||||||
|
|
|
@ -307,7 +307,6 @@ void Gbl_InitializeGlobals (void)
|
||||||
Gbl.Degs.EditingDeg.FullName[0] = '\0';
|
Gbl.Degs.EditingDeg.FullName[0] = '\0';
|
||||||
Gbl.Degs.EditingDeg.FirstYear =
|
Gbl.Degs.EditingDeg.FirstYear =
|
||||||
Gbl.Degs.EditingDeg.LastYear = 0;
|
Gbl.Degs.EditingDeg.LastYear = 0;
|
||||||
// Gbl.Degs.EditingDeg.OptYear = false;
|
|
||||||
Gbl.Degs.EditingDeg.WWW[0] = '\0';
|
Gbl.Degs.EditingDeg.WWW[0] = '\0';
|
||||||
Gbl.Degs.EditingDeg.NumCourses = 0;
|
Gbl.Degs.EditingDeg.NumCourses = 0;
|
||||||
Gbl.Degs.EditingDeg.LstCrss = NULL;
|
Gbl.Degs.EditingDeg.LstCrss = NULL;
|
||||||
|
|
|
@ -463,7 +463,7 @@ struct Globals
|
||||||
{
|
{
|
||||||
long CrsCod;
|
long CrsCod;
|
||||||
char CrsFullName[Cns_MAX_BYTES_STRING+1];
|
char CrsFullName[Cns_MAX_BYTES_STRING+1];
|
||||||
unsigned Year; // Number of year (0 (Optional), 1, 2, 3, 4, 5, 6) in the degree
|
unsigned Year; // Number of year (0 (N.A.), 1, 2, 3, 4, 5, 6) in the degree
|
||||||
char Session[Cns_MAX_BYTES_STRING+1]; // Exam session is june, september, etc.
|
char Session[Cns_MAX_BYTES_STRING+1]; // Exam session is june, september, etc.
|
||||||
struct Date CallDate;
|
struct Date CallDate;
|
||||||
struct Date ExamDate;
|
struct Date ExamDate;
|
||||||
|
|
111
swad_text.c
111
swad_text.c
|
@ -7302,28 +7302,7 @@ const char *Txt_DEGREE_With_courses =
|
||||||
#elif L==8
|
#elif L==8
|
||||||
"Com disciplinas";
|
"Com disciplinas";
|
||||||
#endif
|
#endif
|
||||||
/*
|
|
||||||
const char *Txt_DEGREE_With_year_for_optional_courses =
|
|
||||||
#if L==0
|
|
||||||
"Con curso de optativas."; // Necessita traduccio
|
|
||||||
#elif L==1
|
|
||||||
"With year for optional courses."; // Need Übersetzung
|
|
||||||
#elif L==2
|
|
||||||
"With year for optional courses.";
|
|
||||||
#elif L==3
|
|
||||||
"La titulación ya no tiene un curso de optativas.";
|
|
||||||
#elif L==4
|
|
||||||
"With year for optional courses."; // Besoin de traduction
|
|
||||||
#elif L==5
|
|
||||||
"La titulación ya no tiene un curso de optativas."; // Okoteve traducción
|
|
||||||
#elif L==6
|
|
||||||
"Con anno per corsi opzionali.";
|
|
||||||
#elif L==7
|
|
||||||
"With year for optional courses."; // Potrzebujesz tlumaczenie
|
|
||||||
#elif L==8
|
|
||||||
"With year for optional courses."; // Necessita de tradução
|
|
||||||
#endif
|
|
||||||
*/
|
|
||||||
const char *Txt_DEGREE_Without_courses =
|
const char *Txt_DEGREE_Without_courses =
|
||||||
#if L==0
|
#if L==0
|
||||||
"Sense assignatures";
|
"Sense assignatures";
|
||||||
|
@ -7344,28 +7323,7 @@ const char *Txt_DEGREE_Without_courses =
|
||||||
#elif L==8
|
#elif L==8
|
||||||
"Sem disciplinas";
|
"Sem disciplinas";
|
||||||
#endif
|
#endif
|
||||||
/*
|
|
||||||
const char *Txt_DEGREE_Without_year_for_optional_courses =
|
|
||||||
#if L==0
|
|
||||||
"Sin curso de optativas."; // Necessita traduccio
|
|
||||||
#elif L==1
|
|
||||||
"Without year for optional courses."; // Need Übersetzung
|
|
||||||
#elif L==2
|
|
||||||
"Without year for optional courses.";
|
|
||||||
#elif L==3
|
|
||||||
"La titulación ya no tiene un curso de optativas.";
|
|
||||||
#elif L==4
|
|
||||||
"Without year for optional courses."; // Besoin de traduction
|
|
||||||
#elif L==5
|
|
||||||
"La titulación ya no tiene un curso de optativas."; // Okoteve traducción
|
|
||||||
#elif L==6
|
|
||||||
"Senza anno per corsi opzionali.";
|
|
||||||
#elif L==7
|
|
||||||
"Without year for optional courses."; // Potrzebujesz tlumaczenie
|
|
||||||
#elif L==8
|
|
||||||
"Without year for optional courses."; // Necessita de tradução
|
|
||||||
#endif
|
|
||||||
*/
|
|
||||||
const char *Txt_Degree_X_removed = // Warning: it is very important to include %s in the following sentences
|
const char *Txt_Degree_X_removed = // Warning: it is very important to include %s in the following sentences
|
||||||
#if L==0
|
#if L==0
|
||||||
"Titulación <strong>%s</strong> eliminada."; // Necessita traduccio
|
"Titulación <strong>%s</strong> eliminada."; // Necessita traduccio
|
||||||
|
@ -25808,28 +25766,7 @@ const char *Txt_Opening_of_groups =
|
||||||
#elif L==8
|
#elif L==8
|
||||||
"Opening of groups"; // Necessita de tradução
|
"Opening of groups"; // Necessita de tradução
|
||||||
#endif
|
#endif
|
||||||
/*
|
|
||||||
const char *Txt_Opt_BR_year = // Year for optional courses
|
|
||||||
#if L==0
|
|
||||||
"¿Cur.<br />opt.?"; // Necessita traduccio
|
|
||||||
#elif L==1
|
|
||||||
"Opt.<br />year?"; // Need Übersetzung
|
|
||||||
#elif L==2
|
|
||||||
"Opt.<br />year?";
|
|
||||||
#elif L==3
|
|
||||||
"¿Cur.<br />opt.?";
|
|
||||||
#elif L==4
|
|
||||||
"Opt.<br />year?"; // Besoin de traduction
|
|
||||||
#elif L==5
|
|
||||||
"¿Cur.<br />opt.?"; // Okoteve traducción
|
|
||||||
#elif L==6
|
|
||||||
"Opz.<br />anno?";
|
|
||||||
#elif L==7
|
|
||||||
"Opt.<br />rok?";
|
|
||||||
#elif L==8
|
|
||||||
"Opt.<br />year?"; // Necessita de tradução
|
|
||||||
#endif
|
|
||||||
*/
|
|
||||||
const char *Txt_Option_a_Import_students_from_the_official_lists =
|
const char *Txt_Option_a_Import_students_from_the_official_lists =
|
||||||
#if L==0
|
#if L==0
|
||||||
"Opción a): Obtenga estudiantes de las listas oficiales"; // Necessita traduccio
|
"Opción a): Obtenga estudiantes de las listas oficiales"; // Necessita traduccio
|
||||||
|
@ -39296,48 +39233,6 @@ const char *Txt_The_degree_X_already_exists = // Warning: it is very important t
|
||||||
"The degree <strong>%s</strong> already exists."; // Necessita de tradução
|
"The degree <strong>%s</strong> already exists."; // Necessita de tradução
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_The_degree_has_no_longer_a_year_for_optional_courses =
|
|
||||||
#if L==0
|
|
||||||
"La titulación ya no tiene un curso de optativas."; // Necessita traduccio
|
|
||||||
#elif L==1
|
|
||||||
"The degree has no longer a year for optional courses."; // Need Übersetzung
|
|
||||||
#elif L==2
|
|
||||||
"The degree has no longer a year for optional courses.";
|
|
||||||
#elif L==3
|
|
||||||
"La titulación ya no tiene un curso de optativas.";
|
|
||||||
#elif L==4
|
|
||||||
"The degree has no longer a year for optional courses."; // Besoin de traduction
|
|
||||||
#elif L==5
|
|
||||||
"La titulación ya no tiene un curso de optativas."; // Okoteve traducción
|
|
||||||
#elif L==6
|
|
||||||
"La laurea non ha un anno più lungo per corsi opzionali.";
|
|
||||||
#elif L==7
|
|
||||||
"The degree has no longer a year for optional courses."; // Potrzebujesz tlumaczenie
|
|
||||||
#elif L==8
|
|
||||||
"The degree has no longer a year for optional courses."; // Necessita de tradução
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_The_degree_now_has_a_year_for_optional_courses =
|
|
||||||
#if L==0
|
|
||||||
"La titulación ahora tiene un curso de optativas."; // Necessita traduccio
|
|
||||||
#elif L==1
|
|
||||||
"The degree now has a year for optional courses."; // Need Übersetzung
|
|
||||||
#elif L==2
|
|
||||||
"The degree now has a year for optional courses.";
|
|
||||||
#elif L==3
|
|
||||||
"La titulación ahora tiene un curso de optativas.";
|
|
||||||
#elif L==4
|
|
||||||
"The degree now has a year for optional courses."; // Besoin de traduction
|
|
||||||
#elif L==5
|
|
||||||
"La titulación ahora tiene un curso de optativas."; // Okoteve traducción
|
|
||||||
#elif L==6
|
|
||||||
"La laurea ora ha un anno per corsi opzionali.";
|
|
||||||
#elif L==7
|
|
||||||
"The degree now has a year for optional courses."; // Potrzebujesz tlumaczenie
|
|
||||||
#elif L==8
|
|
||||||
"The degree now has a year for optional courses."; // Necessita de tradução
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_The_department_X_already_exists = // Warning: it is very important to include %s in the following sentences
|
const char *Txt_The_department_X_already_exists = // Warning: it is very important to include %s in the following sentences
|
||||||
#if L==0
|
#if L==0
|
||||||
"El departamento <strong>%s</strong> ya existe."; // Necessita traduccio
|
"El departamento <strong>%s</strong> ya existe."; // Necessita traduccio
|
||||||
|
|
Loading…
Reference in New Issue
Block a user