mirror of
https://github.com/acanas/swad-core.git
synced 2024-06-19 15:05:45 +02:00
Version 15.139
This commit is contained in:
parent
0a74c8a7a1
commit
ebd0b0c342
|
@ -294,8 +294,6 @@ Centre:
|
||||||
185. ActRenDegFul Request change of the full name of a degree
|
185. ActRenDegFul Request change of the full name of a degree
|
||||||
186. ActChgDegTyp Request change of the type of a degree
|
186. ActChgDegTyp Request change of the type of a degree
|
||||||
187. ActChgDegCtr Request change of the centre of a degree
|
187. ActChgDegCtr Request change of the centre of a degree
|
||||||
188. ActChgDegFstYea Request change of the first year of a degree
|
|
||||||
189. ActChgDegLstYea Request change of the last year of a degree
|
|
||||||
190. ActChgDegWWW Request change of the web of a degree
|
190. ActChgDegWWW Request change of the web of a degree
|
||||||
191. ActChgDegSta Request change of status of a degree
|
191. ActChgDegSta Request change of status of a degree
|
||||||
|
|
||||||
|
@ -1578,8 +1576,6 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
||||||
/* ActRenDegFul */{ 547,-1,TabCtr,ActSeeDeg ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Deg_RenameDegreeFull ,NULL},
|
/* ActRenDegFul */{ 547,-1,TabCtr,ActSeeDeg ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Deg_RenameDegreeFull ,NULL},
|
||||||
/* ActChgDegTyp */{ 544,-1,TabCtr,ActSeeDeg ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Deg_ChangeDegreeType ,NULL},
|
/* ActChgDegTyp */{ 544,-1,TabCtr,ActSeeDeg ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Deg_ChangeDegreeType ,NULL},
|
||||||
/* 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},
|
|
||||||
/* ActChgDegLstYea */{ 551,-1,TabCtr,ActSeeDeg ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Deg_ChangeDegLastYear ,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},
|
||||||
|
|
||||||
|
@ -3263,8 +3259,8 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq
|
||||||
ActRenDegFul, // #547
|
ActRenDegFul, // #547
|
||||||
-1, // #548 (obsolete action)
|
-1, // #548 (obsolete action)
|
||||||
-1, // #549 (obsolete action)
|
-1, // #549 (obsolete action)
|
||||||
ActChgDegFstYea, // #550
|
-1, // #550 (obsolete action)
|
||||||
ActChgDegLstYea, // #551
|
-1, // #551 (obsolete action)
|
||||||
-1, // #552
|
-1, // #552
|
||||||
ActRecDegLog, // #553
|
ActRecDegLog, // #553
|
||||||
ActChgDegWWW, // #554
|
ActChgDegWWW, // #554
|
||||||
|
|
102
swad_action.h
102
swad_action.h
|
@ -71,7 +71,7 @@ typedef enum
|
||||||
|
|
||||||
typedef int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
|
typedef int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
|
||||||
|
|
||||||
#define Act_NUM_ACTIONS (1+9+52+15+90+72+67+205+183+143+172+36+27+82)
|
#define Act_NUM_ACTIONS (1+9+52+15+90+70+67+205+183+143+172+36+27+82)
|
||||||
|
|
||||||
#define Act_MAX_ACTION_COD 1520
|
#define Act_MAX_ACTION_COD 1520
|
||||||
|
|
||||||
|
@ -312,59 +312,57 @@ typedef int Act_Action_t; // Must be a signed type, because -1 is used to indica
|
||||||
#define ActRenDegFul (ActDowShaIns+ 19)
|
#define ActRenDegFul (ActDowShaIns+ 19)
|
||||||
#define ActChgDegTyp (ActDowShaIns+ 20)
|
#define ActChgDegTyp (ActDowShaIns+ 20)
|
||||||
#define ActChgDegCtr (ActDowShaIns+ 21)
|
#define ActChgDegCtr (ActDowShaIns+ 21)
|
||||||
#define ActChgDegFstYea (ActDowShaIns+ 22)
|
#define ActChgDegWWW (ActDowShaIns+ 22)
|
||||||
#define ActChgDegLstYea (ActDowShaIns+ 23)
|
#define ActChgDegSta (ActDowShaIns+ 23)
|
||||||
#define ActChgDegWWW (ActDowShaIns+ 24)
|
|
||||||
#define ActChgDegSta (ActDowShaIns+ 25)
|
|
||||||
|
|
||||||
#define ActChgToSeeDocCtr (ActDowShaIns+ 26)
|
#define ActChgToSeeDocCtr (ActDowShaIns+ 24)
|
||||||
#define ActSeeDocCtr (ActDowShaIns+ 27)
|
#define ActSeeDocCtr (ActDowShaIns+ 25)
|
||||||
#define ActExpSeeDocCtr (ActDowShaIns+ 28)
|
#define ActExpSeeDocCtr (ActDowShaIns+ 26)
|
||||||
#define ActConSeeDocCtr (ActDowShaIns+ 29)
|
#define ActConSeeDocCtr (ActDowShaIns+ 27)
|
||||||
#define ActZIPSeeDocCtr (ActDowShaIns+ 30)
|
#define ActZIPSeeDocCtr (ActDowShaIns+ 28)
|
||||||
#define ActReqDatSeeDocCtr (ActDowShaIns+ 31)
|
#define ActReqDatSeeDocCtr (ActDowShaIns+ 29)
|
||||||
#define ActDowSeeDocCtr (ActDowShaIns+ 32)
|
#define ActDowSeeDocCtr (ActDowShaIns+ 30)
|
||||||
#define ActChgToAdmDocCtr (ActDowShaIns+ 33)
|
#define ActChgToAdmDocCtr (ActDowShaIns+ 31)
|
||||||
#define ActAdmDocCtr (ActDowShaIns+ 34)
|
#define ActAdmDocCtr (ActDowShaIns+ 32)
|
||||||
#define ActReqRemFilDocCtr (ActDowShaIns+ 35)
|
#define ActReqRemFilDocCtr (ActDowShaIns+ 33)
|
||||||
#define ActRemFilDocCtr (ActDowShaIns+ 36)
|
#define ActRemFilDocCtr (ActDowShaIns+ 34)
|
||||||
#define ActRemFolDocCtr (ActDowShaIns+ 37)
|
#define ActRemFolDocCtr (ActDowShaIns+ 35)
|
||||||
#define ActCopDocCtr (ActDowShaIns+ 38)
|
#define ActCopDocCtr (ActDowShaIns+ 36)
|
||||||
#define ActPasDocCtr (ActDowShaIns+ 39)
|
#define ActPasDocCtr (ActDowShaIns+ 37)
|
||||||
#define ActRemTreDocCtr (ActDowShaIns+ 40)
|
#define ActRemTreDocCtr (ActDowShaIns+ 38)
|
||||||
#define ActFrmCreDocCtr (ActDowShaIns+ 41)
|
#define ActFrmCreDocCtr (ActDowShaIns+ 39)
|
||||||
#define ActCreFolDocCtr (ActDowShaIns+ 42)
|
#define ActCreFolDocCtr (ActDowShaIns+ 40)
|
||||||
#define ActCreLnkDocCtr (ActDowShaIns+ 43)
|
#define ActCreLnkDocCtr (ActDowShaIns+ 41)
|
||||||
#define ActRenFolDocCtr (ActDowShaIns+ 44)
|
#define ActRenFolDocCtr (ActDowShaIns+ 42)
|
||||||
#define ActRcvFilDocCtrDZ (ActDowShaIns+ 45)
|
#define ActRcvFilDocCtrDZ (ActDowShaIns+ 43)
|
||||||
#define ActRcvFilDocCtrCla (ActDowShaIns+ 46)
|
#define ActRcvFilDocCtrCla (ActDowShaIns+ 44)
|
||||||
#define ActExpAdmDocCtr (ActDowShaIns+ 47)
|
#define ActExpAdmDocCtr (ActDowShaIns+ 45)
|
||||||
#define ActConAdmDocCtr (ActDowShaIns+ 48)
|
#define ActConAdmDocCtr (ActDowShaIns+ 46)
|
||||||
#define ActZIPAdmDocCtr (ActDowShaIns+ 49)
|
#define ActZIPAdmDocCtr (ActDowShaIns+ 47)
|
||||||
#define ActShoDocCtr (ActDowShaIns+ 50)
|
#define ActShoDocCtr (ActDowShaIns+ 48)
|
||||||
#define ActHidDocCtr (ActDowShaIns+ 51)
|
#define ActHidDocCtr (ActDowShaIns+ 49)
|
||||||
#define ActReqDatAdmDocCtr (ActDowShaIns+ 52)
|
#define ActReqDatAdmDocCtr (ActDowShaIns+ 50)
|
||||||
#define ActChgDatAdmDocCtr (ActDowShaIns+ 53)
|
#define ActChgDatAdmDocCtr (ActDowShaIns+ 51)
|
||||||
#define ActDowAdmDocCtr (ActDowShaIns+ 54)
|
#define ActDowAdmDocCtr (ActDowShaIns+ 52)
|
||||||
|
|
||||||
#define ActReqRemFilShaCtr (ActDowShaIns+ 55)
|
#define ActReqRemFilShaCtr (ActDowShaIns+ 53)
|
||||||
#define ActRemFilShaCtr (ActDowShaIns+ 56)
|
#define ActRemFilShaCtr (ActDowShaIns+ 54)
|
||||||
#define ActRemFolShaCtr (ActDowShaIns+ 57)
|
#define ActRemFolShaCtr (ActDowShaIns+ 55)
|
||||||
#define ActCopShaCtr (ActDowShaIns+ 58)
|
#define ActCopShaCtr (ActDowShaIns+ 56)
|
||||||
#define ActPasShaCtr (ActDowShaIns+ 59)
|
#define ActPasShaCtr (ActDowShaIns+ 57)
|
||||||
#define ActRemTreShaCtr (ActDowShaIns+ 60)
|
#define ActRemTreShaCtr (ActDowShaIns+ 58)
|
||||||
#define ActFrmCreShaCtr (ActDowShaIns+ 61)
|
#define ActFrmCreShaCtr (ActDowShaIns+ 59)
|
||||||
#define ActCreFolShaCtr (ActDowShaIns+ 62)
|
#define ActCreFolShaCtr (ActDowShaIns+ 60)
|
||||||
#define ActCreLnkShaCtr (ActDowShaIns+ 63)
|
#define ActCreLnkShaCtr (ActDowShaIns+ 61)
|
||||||
#define ActRenFolShaCtr (ActDowShaIns+ 64)
|
#define ActRenFolShaCtr (ActDowShaIns+ 62)
|
||||||
#define ActRcvFilShaCtrDZ (ActDowShaIns+ 65)
|
#define ActRcvFilShaCtrDZ (ActDowShaIns+ 63)
|
||||||
#define ActRcvFilShaCtrCla (ActDowShaIns+ 66)
|
#define ActRcvFilShaCtrCla (ActDowShaIns+ 64)
|
||||||
#define ActExpShaCtr (ActDowShaIns+ 67)
|
#define ActExpShaCtr (ActDowShaIns+ 65)
|
||||||
#define ActConShaCtr (ActDowShaIns+ 68)
|
#define ActConShaCtr (ActDowShaIns+ 66)
|
||||||
#define ActZIPShaCtr (ActDowShaIns+ 69)
|
#define ActZIPShaCtr (ActDowShaIns+ 67)
|
||||||
#define ActReqDatShaCtr (ActDowShaIns+ 70)
|
#define ActReqDatShaCtr (ActDowShaIns+ 68)
|
||||||
#define ActChgDatShaCtr (ActDowShaIns+ 71)
|
#define ActChgDatShaCtr (ActDowShaIns+ 69)
|
||||||
#define ActDowShaCtr (ActDowShaIns+ 72)
|
#define ActDowShaCtr (ActDowShaIns+ 70)
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/********************************* Degree tab ********************************/
|
/********************************* Degree tab ********************************/
|
||||||
|
|
|
@ -119,19 +119,25 @@
|
||||||
// TODO: If a follower follows a user whose profile is no longer visible ==> put icon to unfollow in list of followed
|
// TODO: If a follower follows a user whose profile is no longer visible ==> put icon to unfollow in list of followed
|
||||||
// TODO: FIX BUG: In results of search of students, no mark of confirmation is shown even if the student really has confirmed his/her registration in the course
|
// TODO: FIX BUG: In results of search of students, no mark of confirmation is shown even if the student really has confirmed his/her registration in the course
|
||||||
|
|
||||||
// TODO: Remove edition of years in edition of degrees. Every degree will have years from 1 to 12 (and N.A.)
|
// TODO: Remove fields 'FirstYear' and 'LastYear' from database table 'degrees'
|
||||||
|
// TODO: Change "Año o semestre" to "Curso o semestre"
|
||||||
|
// TODO: Change "El curso de la asignatura..." to "El curso/semestre de la asignatura..."
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 15.138 (2016-02-29)"
|
#define Log_PLATFORM_VERSION "SWAD 15.139 (2016-02-29)"
|
||||||
#define CSS_FILE "swad15.137.2.css"
|
#define CSS_FILE "swad15.137.2.css"
|
||||||
#define JS_FILE "swad15.131.3.js"
|
#define JS_FILE "swad15.131.3.js"
|
||||||
|
|
||||||
// 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.139: Feb 29, 2016 Remove edition of years in edition of degrees. Every degree now have years from 1 to 12 (and N.A.) (195734 lines)
|
||||||
|
1 change necessary in database:
|
||||||
|
UPDATE actions SET Obsolete='Y' WHERE ActCod IN ('550','551');
|
||||||
|
|
||||||
Version 15.138: Feb 29, 2016 Form to sign up is shown below login form. (196012 lines)
|
Version 15.138: Feb 29, 2016 Form to sign up is shown below login form. (196012 lines)
|
||||||
Version 15.137.3: Feb 29, 2016 Change in button when file uploading is done. (195986 lines)
|
Version 15.137.3: Feb 29, 2016 Change in button when file uploading is done. (195986 lines)
|
||||||
Version 15.137.2: Feb 13, 2016 Fixed bug in search of my documents. (195985 lines)
|
Version 15.137.2: Feb 13, 2016 Fixed bug in search of my documents. (195985 lines)
|
||||||
|
|
|
@ -241,14 +241,13 @@ static void Crs_Configuration (bool PrintView)
|
||||||
{
|
{
|
||||||
fprintf (Gbl.F.Out,"<select name=\"OthCrsYear\">");
|
fprintf (Gbl.F.Out,"<select name=\"OthCrsYear\">");
|
||||||
for (Year = 0;
|
for (Year = 0;
|
||||||
Year <= Gbl.CurrentDeg.Deg.LastYear;
|
Year <= Deg_MAX_YEARS_PER_DEGREE;
|
||||||
Year++)
|
Year++)
|
||||||
if (Deg_CheckIfYearIsValidInDeg (Year,&Gbl.CurrentDeg.Deg))
|
fprintf (Gbl.F.Out,"<option value=\"%u\"%s>%s</option>",
|
||||||
fprintf (Gbl.F.Out,"<option value=\"%u\"%s>%s</option>",
|
Year,
|
||||||
Year,
|
Year == Gbl.CurrentCrs.Crs.Year ? " selected=\"selected\"" :
|
||||||
Year == Gbl.CurrentCrs.Crs.Year ? " selected=\"selected\"" :
|
"",
|
||||||
"",
|
Txt_YEAR_OF_DEGREE[Year]);
|
||||||
Txt_YEAR_OF_DEGREE[Year]);
|
|
||||||
fprintf (Gbl.F.Out,"</select>");
|
fprintf (Gbl.F.Out,"</select>");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1676,14 +1675,13 @@ static void Crs_PutFormToCreateCourse (void)
|
||||||
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">"
|
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">"
|
||||||
"<select name=\"OthCrsYear\" style=\"width:50px;\">");
|
"<select name=\"OthCrsYear\" style=\"width:50px;\">");
|
||||||
for (Year = 0;
|
for (Year = 0;
|
||||||
Year <= Gbl.CurrentDeg.Deg.LastYear;
|
Year <= Deg_MAX_YEARS_PER_DEGREE;
|
||||||
Year++)
|
Year++)
|
||||||
if (Deg_CheckIfYearIsValidInDeg (Year,&Gbl.CurrentDeg.Deg))
|
fprintf (Gbl.F.Out,"<option value=\"%u\"%s>%s</option>",
|
||||||
fprintf (Gbl.F.Out,"<option value=\"%u\"%s>%s</option>",
|
Year,
|
||||||
Year,
|
Year == Crs->Year ? " selected=\"selected\"" :
|
||||||
Year == Crs->Year ? " selected=\"selected\"" :
|
"",
|
||||||
"",
|
Txt_YEAR_OF_DEGREE[Year]);
|
||||||
Txt_YEAR_OF_DEGREE[Year]);
|
|
||||||
fprintf (Gbl.F.Out,"</select>"
|
fprintf (Gbl.F.Out,"</select>"
|
||||||
"</td>");
|
"</td>");
|
||||||
|
|
||||||
|
@ -1867,7 +1865,7 @@ static void Crs_RecFormRequestOrCreateCrs (unsigned Status)
|
||||||
{
|
{
|
||||||
extern const char *Txt_The_course_X_already_exists;
|
extern const char *Txt_The_course_X_already_exists;
|
||||||
extern const char *Txt_You_must_specify_the_short_name_and_the_full_name_of_the_new_course;
|
extern const char *Txt_You_must_specify_the_short_name_and_the_full_name_of_the_new_course;
|
||||||
extern const char *Txt_The_year_X_is_not_enabled_on_the_degree_Y;
|
extern const char *Txt_The_year_X_is_not_allowed;
|
||||||
extern const char *Txt_YEAR_OF_DEGREE[1+Deg_MAX_YEARS_PER_DEGREE];
|
extern const char *Txt_YEAR_OF_DEGREE[1+Deg_MAX_YEARS_PER_DEGREE];
|
||||||
struct Course *Crs;
|
struct Course *Crs;
|
||||||
struct Degree Deg;
|
struct Degree Deg;
|
||||||
|
@ -1883,7 +1881,7 @@ static void Crs_RecFormRequestOrCreateCrs (unsigned Status)
|
||||||
|
|
||||||
/***** Check if year is correct *****/
|
/***** Check if year is correct *****/
|
||||||
Deg_GetDataOfDegreeByCod (&Deg);
|
Deg_GetDataOfDegreeByCod (&Deg);
|
||||||
if (Deg_CheckIfYearIsValidInDeg (Crs->Year,&Deg)) // If year is valid
|
if (Crs->Year <= Deg_MAX_YEARS_PER_DEGREE) // If year is valid
|
||||||
{
|
{
|
||||||
if (Crs->ShortName[0] &&
|
if (Crs->ShortName[0] &&
|
||||||
Crs->FullName[0]) // If there's a course name
|
Crs->FullName[0]) // If there's a course name
|
||||||
|
@ -1912,8 +1910,7 @@ static void Crs_RecFormRequestOrCreateCrs (unsigned Status)
|
||||||
}
|
}
|
||||||
else // Year not valid
|
else // Year not valid
|
||||||
{
|
{
|
||||||
sprintf (Gbl.Message,Txt_The_year_X_is_not_enabled_on_the_degree_Y,
|
sprintf (Gbl.Message,Txt_The_year_X_is_not_allowed,Crs->Year);
|
||||||
Txt_YEAR_OF_DEGREE[Crs->Year],Deg.FullName);
|
|
||||||
Lay_ShowAlert (Lay_WARNING,Gbl.Message);
|
Lay_ShowAlert (Lay_WARNING,Gbl.Message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2435,7 +2432,7 @@ void Crs_ChangeCrsDegree (void)
|
||||||
extern const char *Txt_In_the_year_X_of_the_degree_Y_already_existed_a_course_with_the_name_Z;
|
extern const char *Txt_In_the_year_X_of_the_degree_Y_already_existed_a_course_with_the_name_Z;
|
||||||
extern const char *Txt_YEAR_OF_DEGREE[1+Deg_MAX_YEARS_PER_DEGREE];
|
extern const char *Txt_YEAR_OF_DEGREE[1+Deg_MAX_YEARS_PER_DEGREE];
|
||||||
extern const char *Txt_The_course_X_has_been_moved_to_the_degree_Y;
|
extern const char *Txt_The_course_X_has_been_moved_to_the_degree_Y;
|
||||||
extern const char *Txt_The_year_X_is_not_enabled_on_the_degree_Y;
|
extern const char *Txt_The_year_X_is_not_allowed;
|
||||||
extern const char *Txt_You_dont_have_permission_to_move_courses_to_the_degree_X;
|
extern const char *Txt_You_dont_have_permission_to_move_courses_to_the_degree_X;
|
||||||
struct Course *Crs;
|
struct Course *Crs;
|
||||||
bool ICanChangeCrsToNewDeg;
|
bool ICanChangeCrsToNewDeg;
|
||||||
|
@ -2471,7 +2468,7 @@ void Crs_ChangeCrsDegree (void)
|
||||||
if (ICanChangeCrsToNewDeg)
|
if (ICanChangeCrsToNewDeg)
|
||||||
{
|
{
|
||||||
/***** If new degree has current course year... *****/
|
/***** If new degree has current course year... *****/
|
||||||
if (Deg_CheckIfYearIsValidInDeg (Crs->Year,&NewDeg))
|
if (Crs->Year <= Deg_MAX_YEARS_PER_DEGREE)
|
||||||
{
|
{
|
||||||
/***** If name of course was in database in the new degree... *****/
|
/***** If name of course was in database in the new degree... *****/
|
||||||
if (Crs_CheckIfCourseNameExistsInCourses (NewDeg.DegCod,Crs->Year,"ShortName",Crs->ShortName,-1L))
|
if (Crs_CheckIfCourseNameExistsInCourses (NewDeg.DegCod,Crs->Year,"ShortName",Crs->ShortName,-1L))
|
||||||
|
@ -2505,8 +2502,7 @@ void Crs_ChangeCrsDegree (void)
|
||||||
}
|
}
|
||||||
else // New degree has no current course year
|
else // New degree has no current course year
|
||||||
{
|
{
|
||||||
sprintf (Gbl.Message,Txt_The_year_X_is_not_enabled_on_the_degree_Y,
|
sprintf (Gbl.Message,Txt_The_year_X_is_not_allowed,Crs->Year);
|
||||||
Txt_YEAR_OF_DEGREE[Crs->Year],NewDeg.FullName);
|
|
||||||
Lay_ShowAlert (Lay_WARNING,Gbl.Message);
|
Lay_ShowAlert (Lay_WARNING,Gbl.Message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2530,7 +2526,7 @@ void Crs_ChangeCrsYear (void)
|
||||||
extern const char *Txt_The_course_X_already_exists_in_year_Y;
|
extern const char *Txt_The_course_X_already_exists_in_year_Y;
|
||||||
extern const char *Txt_YEAR_OF_DEGREE[1+Deg_MAX_YEARS_PER_DEGREE];
|
extern const char *Txt_YEAR_OF_DEGREE[1+Deg_MAX_YEARS_PER_DEGREE];
|
||||||
extern const char *Txt_The_year_of_the_course_X_has_changed;
|
extern const char *Txt_The_year_of_the_course_X_has_changed;
|
||||||
extern const char *Txt_The_year_X_is_not_enabled_on_the_degree_Y;
|
extern const char *Txt_The_year_X_is_not_allowed;
|
||||||
extern const char *Txt_You_dont_have_permission_to_edit_this_course;
|
extern const char *Txt_You_dont_have_permission_to_edit_this_course;
|
||||||
struct Course *Crs;
|
struct Course *Crs;
|
||||||
struct Degree Deg;
|
struct Degree Deg;
|
||||||
|
@ -2556,7 +2552,7 @@ void Crs_ChangeCrsYear (void)
|
||||||
Deg.DegCod = Crs->DegCod;
|
Deg.DegCod = Crs->DegCod;
|
||||||
Deg_GetDataOfDegreeByCod (&Deg);
|
Deg_GetDataOfDegreeByCod (&Deg);
|
||||||
|
|
||||||
if (Deg_CheckIfYearIsValidInDeg (NewYear,&Deg)) // If year is valid
|
if (NewYear <= Deg_MAX_YEARS_PER_DEGREE) // If year is valid
|
||||||
{
|
{
|
||||||
/***** If name of course was in database in the new year... *****/
|
/***** If name of course was in database in the new year... *****/
|
||||||
if (Crs_CheckIfCourseNameExistsInCourses (Crs->DegCod,NewYear,"ShortName",Crs->ShortName,-1L))
|
if (Crs_CheckIfCourseNameExistsInCourses (Crs->DegCod,NewYear,"ShortName",Crs->ShortName,-1L))
|
||||||
|
@ -2592,8 +2588,7 @@ void Crs_ChangeCrsYear (void)
|
||||||
}
|
}
|
||||||
else // Year not valid
|
else // Year not valid
|
||||||
{
|
{
|
||||||
sprintf (Gbl.Message,Txt_The_year_X_is_not_enabled_on_the_degree_Y,
|
sprintf (Gbl.Message,Txt_The_year_X_is_not_allowed,NewYear);
|
||||||
Txt_YEAR_OF_DEGREE[NewYear],Deg.FullName);
|
|
||||||
Lay_ShowAlert (Lay_WARNING,Gbl.Message);
|
Lay_ShowAlert (Lay_WARNING,Gbl.Message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
239
swad_degree.c
239
swad_degree.c
|
@ -120,7 +120,6 @@ static void Deg_RemoveDegreeCompletely (long DegCod);
|
||||||
static void Deg_RenameDegree (struct Degree *Deg,Cns_ShortOrFullName_t ShortOrFullName);
|
static void Deg_RenameDegree (struct Degree *Deg,Cns_ShortOrFullName_t ShortOrFullName);
|
||||||
static bool Deg_CheckIfDegreeTypeNameExists (const char *DegTypName,long DegTypCod);
|
static bool Deg_CheckIfDegreeTypeNameExists (const char *DegTypName,long DegTypCod);
|
||||||
static bool Deg_CheckIfDegreeNameExists (long CtrCod,const char *FieldName,const char *Name,long DegCod);
|
static bool Deg_CheckIfDegreeNameExists (long CtrCod,const char *FieldName,const char *Name,long DegCod);
|
||||||
static void Deg_ChangeDegYear (struct Degree *Deg,Deg_FirstOrLastYear_t FirstOrLastYear);
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/********** List pending institutions, centres, degrees and courses **********/
|
/********** List pending institutions, centres, degrees and courses **********/
|
||||||
|
@ -1384,18 +1383,6 @@ static void Deg_ListOneDegreeForSeeing (struct Degree *Deg,unsigned NumDeg)
|
||||||
"</td>",
|
"</td>",
|
||||||
TxtClassNormal,BgColor,DegTyp.DegTypName);
|
TxtClassNormal,BgColor,DegTyp.DegTypName);
|
||||||
|
|
||||||
/***** Degree first year *****/
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"%s CENTER_MIDDLE %s\">"
|
|
||||||
"%u"
|
|
||||||
"</td>",
|
|
||||||
TxtClassNormal,BgColor,Deg->FirstYear);
|
|
||||||
|
|
||||||
/***** Degree last year *****/
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"%s CENTER_MIDDLE %s\">"
|
|
||||||
"%u"
|
|
||||||
"</td>",
|
|
||||||
TxtClassNormal,BgColor,Deg->LastYear);
|
|
||||||
|
|
||||||
/***** 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"
|
||||||
|
@ -1428,7 +1415,6 @@ static void Deg_ListDegreesForEdition (void)
|
||||||
struct Degree *Deg;
|
struct Degree *Deg;
|
||||||
unsigned NumCtr;
|
unsigned NumCtr;
|
||||||
unsigned NumDegTyp;
|
unsigned NumDegTyp;
|
||||||
unsigned Year;
|
|
||||||
char WWW[Deg_MAX_LENGTH_WWW_ON_SCREEN+1];
|
char WWW[Deg_MAX_LENGTH_WWW_ON_SCREEN+1];
|
||||||
struct UsrData UsrDat;
|
struct UsrData UsrDat;
|
||||||
bool ICanEdit;
|
bool ICanEdit;
|
||||||
|
@ -1569,54 +1555,6 @@ static void Deg_ListDegreesForEdition (void)
|
||||||
fprintf (Gbl.F.Out,"%s",Gbl.Degs.DegTypes.Lst[NumDegTyp].DegTypName);
|
fprintf (Gbl.F.Out,"%s",Gbl.Degs.DegTypes.Lst[NumDegTyp].DegTypName);
|
||||||
fprintf (Gbl.F.Out,"</td>");
|
fprintf (Gbl.F.Out,"</td>");
|
||||||
|
|
||||||
/* Degree first year */
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"DAT CENTER_MIDDLE\">");
|
|
||||||
if (ICanEdit)
|
|
||||||
{
|
|
||||||
Act_FormStart (ActChgDegFstYea);
|
|
||||||
Deg_PutParamOtherDegCod (Deg->DegCod);
|
|
||||||
fprintf (Gbl.F.Out,"<select name=\"FirstYear\""
|
|
||||||
" onchange=\"document.getElementById('%s').submit();\">",
|
|
||||||
Gbl.Form.Id);
|
|
||||||
for (Year = 0;
|
|
||||||
Year <= Deg_MAX_YEARS_PER_DEGREE;
|
|
||||||
Year++)
|
|
||||||
fprintf (Gbl.F.Out,"<option value=\"%u\"%s>%u</option>",
|
|
||||||
Year,
|
|
||||||
(Year == Deg->FirstYear) ? " selected=\"selected\"" :
|
|
||||||
"",
|
|
||||||
Year);
|
|
||||||
fprintf (Gbl.F.Out,"</select>");
|
|
||||||
Act_FormEnd ();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
fprintf (Gbl.F.Out,"%u",Deg->FirstYear);
|
|
||||||
fprintf (Gbl.F.Out,"</td>");
|
|
||||||
|
|
||||||
/* Degree last year */
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"DAT CENTER_MIDDLE\">");
|
|
||||||
if (ICanEdit)
|
|
||||||
{
|
|
||||||
Act_FormStart (ActChgDegLstYea);
|
|
||||||
Deg_PutParamOtherDegCod (Deg->DegCod);
|
|
||||||
fprintf (Gbl.F.Out,"<select name=\"LastYear\""
|
|
||||||
" onchange=\"document.getElementById('%s').submit();\">",
|
|
||||||
Gbl.Form.Id);
|
|
||||||
for (Year = 0;
|
|
||||||
Year <= Deg_MAX_YEARS_PER_DEGREE;
|
|
||||||
Year++)
|
|
||||||
fprintf (Gbl.F.Out,"<option value=\"%u\"%s>%u</option>",
|
|
||||||
Year,
|
|
||||||
(Year == Deg->LastYear) ? " selected=\"selected\"" :
|
|
||||||
"",
|
|
||||||
Year);
|
|
||||||
fprintf (Gbl.F.Out,"</select>");
|
|
||||||
Act_FormEnd ();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
fprintf (Gbl.F.Out,"%u",Deg->LastYear);
|
|
||||||
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)
|
||||||
|
@ -1812,7 +1750,6 @@ static void Deg_PutFormToCreateDegree (void)
|
||||||
struct Degree *Deg;
|
struct Degree *Deg;
|
||||||
struct DegreeType *DegTyp;
|
struct DegreeType *DegTyp;
|
||||||
unsigned NumDegTyp;
|
unsigned NumDegTyp;
|
||||||
unsigned Year;
|
|
||||||
|
|
||||||
/***** Start form *****/
|
/***** Start form *****/
|
||||||
if (Gbl.Usrs.Me.LoggedRole >= Rol_CTR_ADM)
|
if (Gbl.Usrs.Me.LoggedRole >= Rol_CTR_ADM)
|
||||||
|
@ -1892,34 +1829,6 @@ static void Deg_PutFormToCreateDegree (void)
|
||||||
fprintf (Gbl.F.Out,"</select>"
|
fprintf (Gbl.F.Out,"</select>"
|
||||||
"</td>");
|
"</td>");
|
||||||
|
|
||||||
/***** First year *****/
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">"
|
|
||||||
"<select name=\"FirstYear\">");
|
|
||||||
for (Year = 0;
|
|
||||||
Year <= Deg_MAX_YEARS_PER_DEGREE;
|
|
||||||
Year++)
|
|
||||||
fprintf (Gbl.F.Out,"<option value=\"%u\"%s>%u</option>",
|
|
||||||
Year,
|
|
||||||
Year == Deg->FirstYear ? " selected=\"selected\"" :
|
|
||||||
"",
|
|
||||||
Year);
|
|
||||||
fprintf (Gbl.F.Out,"</select>"
|
|
||||||
"</td>");
|
|
||||||
|
|
||||||
/***** Last year *****/
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">"
|
|
||||||
"<select name=\"LastYear\">");
|
|
||||||
for (Year = 0;
|
|
||||||
Year <= Deg_MAX_YEARS_PER_DEGREE;
|
|
||||||
Year++)
|
|
||||||
fprintf (Gbl.F.Out,"<option value=\"%u\"%s>%u</option>",
|
|
||||||
Year,
|
|
||||||
Year == Deg->LastYear ? " selected=\"selected\"" :
|
|
||||||
"",
|
|
||||||
Year);
|
|
||||||
fprintf (Gbl.F.Out,"</select>"
|
|
||||||
"</td>");
|
|
||||||
|
|
||||||
/***** 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\""
|
||||||
|
@ -2023,9 +1932,6 @@ static void Deg_PutHeadDegreesForSeeing (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Degree;
|
extern const char *Txt_Degree;
|
||||||
extern const char *Txt_Type;
|
extern const char *Txt_Type;
|
||||||
extern const char *Txt_First_BR_year;
|
|
||||||
extern const char *Txt_Last_BR_year;
|
|
||||||
// extern const char *Txt_Opt_BR_year;
|
|
||||||
extern const char *Txt_Courses_ABBREVIATION;
|
extern const char *Txt_Courses_ABBREVIATION;
|
||||||
extern const char *Txt_Status;
|
extern const char *Txt_Status;
|
||||||
|
|
||||||
|
@ -2038,15 +1944,6 @@ static void Deg_PutHeadDegreesForSeeing (void)
|
||||||
"<th class=\"LEFT_MIDDLE\">"
|
"<th class=\"LEFT_MIDDLE\">"
|
||||||
"%s"
|
"%s"
|
||||||
"</th>"
|
"</th>"
|
||||||
"<th class=\"CENTER_MIDDLE\">"
|
|
||||||
"%s"
|
|
||||||
"</th>"
|
|
||||||
"<th class=\"CENTER_MIDDLE\">"
|
|
||||||
"%s"
|
|
||||||
"</th>"
|
|
||||||
// "<th class=\"CENTER_MIDDLE\">"
|
|
||||||
// "%s"
|
|
||||||
// "</th>"
|
|
||||||
"<th class=\"RIGHT_MIDDLE\">"
|
"<th class=\"RIGHT_MIDDLE\">"
|
||||||
"%s"
|
"%s"
|
||||||
"</th>"
|
"</th>"
|
||||||
|
@ -2056,9 +1953,6 @@ static void Deg_PutHeadDegreesForSeeing (void)
|
||||||
"</tr>",
|
"</tr>",
|
||||||
Txt_Degree,
|
Txt_Degree,
|
||||||
Txt_Type,
|
Txt_Type,
|
||||||
Txt_First_BR_year,
|
|
||||||
Txt_Last_BR_year,
|
|
||||||
// Txt_Opt_BR_year,
|
|
||||||
Txt_Courses_ABBREVIATION,
|
Txt_Courses_ABBREVIATION,
|
||||||
Txt_Status);
|
Txt_Status);
|
||||||
}
|
}
|
||||||
|
@ -2074,9 +1968,6 @@ static void Deg_PutHeadDegreesForEdition (void)
|
||||||
extern const char *Txt_Short_BR_Name;
|
extern const char *Txt_Short_BR_Name;
|
||||||
extern const char *Txt_Full_BR_Name;
|
extern const char *Txt_Full_BR_Name;
|
||||||
extern const char *Txt_Type;
|
extern const char *Txt_Type;
|
||||||
extern const char *Txt_First_BR_year;
|
|
||||||
extern const char *Txt_Last_BR_year;
|
|
||||||
// extern const char *Txt_Opt_BR_year;
|
|
||||||
extern const char *Txt_WWW;
|
extern const char *Txt_WWW;
|
||||||
extern const char *Txt_Courses_ABBREVIATION;
|
extern const char *Txt_Courses_ABBREVIATION;
|
||||||
extern const char *Txt_Status;
|
extern const char *Txt_Status;
|
||||||
|
@ -2100,15 +1991,6 @@ static void Deg_PutHeadDegreesForEdition (void)
|
||||||
"<th class=\"LEFT_MIDDLE\">"
|
"<th class=\"LEFT_MIDDLE\">"
|
||||||
"%s"
|
"%s"
|
||||||
"</th>"
|
"</th>"
|
||||||
"<th class=\"CENTER_MIDDLE\">"
|
|
||||||
"%s"
|
|
||||||
"</th>"
|
|
||||||
"<th class=\"CENTER_MIDDLE\">"
|
|
||||||
"%s"
|
|
||||||
"</th>"
|
|
||||||
// "<th class=\"CENTER_MIDDLE\">"
|
|
||||||
// "%s"
|
|
||||||
// "</th>"
|
|
||||||
"<th class=\"LEFT_MIDDLE\">"
|
"<th class=\"LEFT_MIDDLE\">"
|
||||||
"%s"
|
"%s"
|
||||||
"</th>"
|
"</th>"
|
||||||
|
@ -2127,9 +2009,6 @@ static void Deg_PutHeadDegreesForEdition (void)
|
||||||
Txt_Short_BR_Name,
|
Txt_Short_BR_Name,
|
||||||
Txt_Full_BR_Name,
|
Txt_Full_BR_Name,
|
||||||
Txt_Type,
|
Txt_Type,
|
||||||
Txt_First_BR_year,
|
|
||||||
Txt_Last_BR_year,
|
|
||||||
// Txt_Opt_BR_year,
|
|
||||||
Txt_WWW,
|
Txt_WWW,
|
||||||
Txt_Courses_ABBREVIATION,
|
Txt_Courses_ABBREVIATION,
|
||||||
Txt_Status,
|
Txt_Status,
|
||||||
|
@ -2187,15 +2066,13 @@ static void Deg_CreateDegree (struct Degree *Deg,unsigned Status)
|
||||||
|
|
||||||
/***** Create a new degree *****/
|
/***** Create a new degree *****/
|
||||||
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,WWW)"
|
||||||
" VALUES ('%ld','%ld','%u','%ld',"
|
" VALUES ('%ld','%ld','%u','%ld',"
|
||||||
"'%s','%s','%u','%u','%s')",
|
"'%s','%s','%s')",
|
||||||
Deg->CtrCod,Deg->DegTypCod,
|
Deg->CtrCod,Deg->DegTypCod,
|
||||||
Status,
|
Status,
|
||||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||||
Deg->ShortName,Deg->FullName,
|
Deg->ShortName,Deg->FullName,Deg->WWW);
|
||||||
Deg->FirstYear,Deg->LastYear,
|
|
||||||
Deg->WWW);
|
|
||||||
DB_QueryINSERT (Query,"can not create a new degree");
|
DB_QueryINSERT (Query,"can not create a new degree");
|
||||||
|
|
||||||
/***** Write success message *****/
|
/***** Write success message *****/
|
||||||
|
@ -2364,7 +2241,7 @@ void Deg_GetListAllDegs (void)
|
||||||
|
|
||||||
/***** Get degrees admin by me from database *****/
|
/***** Get degrees admin by me from database *****/
|
||||||
sprintf (Query,"SELECT DegCod,CtrCod,DegTypCod,Status,RequesterUsrCod,"
|
sprintf (Query,"SELECT DegCod,CtrCod,DegTypCod,Status,RequesterUsrCod,"
|
||||||
"ShortName,FullName,FirstYear,LastYear,WWW"
|
"ShortName,FullName,WWW"
|
||||||
" FROM degrees ORDER BY FullName");
|
" FROM degrees ORDER BY FullName");
|
||||||
Gbl.Degs.AllDegs.Num = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get degrees admin by you");
|
Gbl.Degs.AllDegs.Num = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get degrees admin by you");
|
||||||
|
|
||||||
|
@ -2419,7 +2296,7 @@ static void Deg_GetListDegsOfCurrentCtr (void)
|
||||||
|
|
||||||
/***** Get degrees of the current centre from database *****/
|
/***** Get degrees of the current centre from database *****/
|
||||||
sprintf (Query,"SELECT DegCod,CtrCod,DegTypCod,Status,RequesterUsrCod,"
|
sprintf (Query,"SELECT DegCod,CtrCod,DegTypCod,Status,RequesterUsrCod,"
|
||||||
"ShortName,FullName,FirstYear,LastYear,WWW"
|
"ShortName,FullName,WWW"
|
||||||
" FROM degrees WHERE CtrCod='%ld' ORDER BY FullName",
|
" FROM degrees WHERE CtrCod='%ld' ORDER BY FullName",
|
||||||
Gbl.CurrentCtr.Ctr.CtrCod);
|
Gbl.CurrentCtr.Ctr.CtrCod);
|
||||||
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get degrees of a centre");
|
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get degrees of a centre");
|
||||||
|
@ -2493,7 +2370,7 @@ void Deg_GetListDegsAdminByMe (void)
|
||||||
/***** Get degrees admin by me from database *****/
|
/***** Get degrees admin by me from database *****/
|
||||||
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,WWW"
|
||||||
" FROM degrees"
|
" FROM degrees"
|
||||||
" WHERE CtrCod='%ld'"
|
" WHERE CtrCod='%ld'"
|
||||||
" ORDER BY ShortName",
|
" ORDER BY ShortName",
|
||||||
|
@ -2501,7 +2378,7 @@ void Deg_GetListDegsAdminByMe (void)
|
||||||
// TODO: put an if to select all degrees for admins of all degrees !!!!!!!!!!!!!
|
// TODO: put an if to select all degrees for admins of all degrees !!!!!!!!!!!!!
|
||||||
else // Gbl.Usrs.Me.LoggedRole == Rol_ROLE_DEG_ADM
|
else // Gbl.Usrs.Me.LoggedRole == Rol_ROLE_DEG_ADM
|
||||||
sprintf (Query,"SELECT degrees.DegCod,degrees.CtrCod,degrees.DegTypCod,degrees.Status,degrees.RequesterUsrCod,"
|
sprintf (Query,"SELECT degrees.DegCod,degrees.CtrCod,degrees.DegTypCod,degrees.Status,degrees.RequesterUsrCod,"
|
||||||
"degrees.ShortName,degrees.FullName,degrees.FirstYear,degrees.LastYear,degrees.WWW"
|
"degrees.ShortName,degrees.FullName,degrees.WWW"
|
||||||
" FROM admin,degrees"
|
" FROM admin,degrees"
|
||||||
" WHERE admin.UsrCod='%ld' AND admin.Scope='Deg'"
|
" WHERE admin.UsrCod='%ld' AND admin.Scope='Deg'"
|
||||||
" AND admin.Cod=degrees.DegCod"
|
" AND admin.Cod=degrees.DegCod"
|
||||||
|
@ -2618,8 +2495,6 @@ static void Deg_RecFormRequestOrCreateDeg (unsigned Status)
|
||||||
extern const char *Txt_You_must_specify_the_web_address_of_the_new_degree;
|
extern const char *Txt_You_must_specify_the_web_address_of_the_new_degree;
|
||||||
extern const char *Txt_You_must_specify_the_short_name_and_the_full_name_of_the_new_degree;
|
extern const char *Txt_You_must_specify_the_short_name_and_the_full_name_of_the_new_degree;
|
||||||
struct Degree *Deg;
|
struct Degree *Deg;
|
||||||
char YearStr[2+1];
|
|
||||||
// char YN[1+1];
|
|
||||||
|
|
||||||
Deg = &Gbl.Degs.EditingDeg;
|
Deg = &Gbl.Degs.EditingDeg;
|
||||||
|
|
||||||
|
@ -2637,14 +2512,6 @@ static void Deg_RecFormRequestOrCreateDeg (unsigned Status)
|
||||||
if ((Deg->DegTypCod = Deg_GetParamOtherDegTypCod ()) <= 0)
|
if ((Deg->DegTypCod = Deg_GetParamOtherDegTypCod ()) <= 0)
|
||||||
Lay_ShowAlert (Lay_ERROR,"Wrong type of degree.");
|
Lay_ShowAlert (Lay_ERROR,"Wrong type of degree.");
|
||||||
|
|
||||||
/* Get first year */
|
|
||||||
Par_GetParToText ("FirstYear",YearStr,2);
|
|
||||||
Deg->FirstYear = Deg_ConvStrToYear (YearStr);
|
|
||||||
|
|
||||||
/* Get last year */
|
|
||||||
Par_GetParToText ("LastYear",YearStr,2);
|
|
||||||
Deg->LastYear = Deg_ConvStrToYear (YearStr);
|
|
||||||
|
|
||||||
/* Get degree WWW */
|
/* Get degree WWW */
|
||||||
Par_GetParToText ("WWW",Deg->WWW,Cns_MAX_LENGTH_WWW);
|
Par_GetParToText ("WWW",Deg->WWW,Cns_MAX_LENGTH_WWW);
|
||||||
|
|
||||||
|
@ -2905,8 +2772,6 @@ bool Deg_GetDataOfDegreeByCod (struct Degree *Deg)
|
||||||
Deg->RequesterUsrCod = -1L;
|
Deg->RequesterUsrCod = -1L;
|
||||||
Deg->ShortName[0] = '\0';
|
Deg->ShortName[0] = '\0';
|
||||||
Deg->FullName[0] = '\0';
|
Deg->FullName[0] = '\0';
|
||||||
Deg->FirstYear = 0;
|
|
||||||
Deg->LastYear = 0;
|
|
||||||
Deg->WWW[0] = '\0';
|
Deg->WWW[0] = '\0';
|
||||||
Deg->NumCrss = 0;
|
Deg->NumCrss = 0;
|
||||||
Deg->LstCrss = NULL;
|
Deg->LstCrss = NULL;
|
||||||
|
@ -2915,7 +2780,7 @@ 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,"
|
sprintf (Query,"SELECT DegCod,CtrCod,DegTypCod,Status,RequesterUsrCod,"
|
||||||
"ShortName,FullName,FirstYear,LastYear,WWW"
|
"ShortName,FullName,WWW"
|
||||||
" FROM degrees WHERE DegCod ='%ld'",
|
" FROM degrees WHERE DegCod ='%ld'",
|
||||||
Deg->DegCod);
|
Deg->DegCod);
|
||||||
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get data of a degree");
|
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get data of a degree");
|
||||||
|
@ -2937,8 +2802,6 @@ bool Deg_GetDataOfDegreeByCod (struct Degree *Deg)
|
||||||
Deg->RequesterUsrCod = -1L;
|
Deg->RequesterUsrCod = -1L;
|
||||||
Deg->ShortName[0] = '\0';
|
Deg->ShortName[0] = '\0';
|
||||||
Deg->FullName[0] = '\0';
|
Deg->FullName[0] = '\0';
|
||||||
Deg->FirstYear = 0;
|
|
||||||
Deg->LastYear = 0;
|
|
||||||
Deg->WWW[0] = '\0';
|
Deg->WWW[0] = '\0';
|
||||||
Deg->NumCrss = 0;
|
Deg->NumCrss = 0;
|
||||||
Deg->LstCrss = NULL;
|
Deg->LstCrss = NULL;
|
||||||
|
@ -2982,14 +2845,8 @@ static void Deg_GetDataOfDegreeFromRow (struct Degree *Deg,MYSQL_ROW row)
|
||||||
/***** Get degree full name (row[6]) *****/
|
/***** Get degree full name (row[6]) *****/
|
||||||
strcpy (Deg->FullName,row[6]);
|
strcpy (Deg->FullName,row[6]);
|
||||||
|
|
||||||
/***** Get first year (row[7]) *****/
|
/***** Get WWW (row[7]) *****/
|
||||||
Deg->FirstYear = Deg_ConvStrToYear (row[7]);
|
strcpy (Deg->WWW,row[7]);
|
||||||
|
|
||||||
/***** Get last year (row[8]) *****/
|
|
||||||
Deg->LastYear = Deg_ConvStrToYear (row[8]);
|
|
||||||
|
|
||||||
/***** Get WWW (row[9]) *****/
|
|
||||||
strcpy (Deg->WWW,row[9]);
|
|
||||||
|
|
||||||
/***** Get number of courses *****/
|
/***** Get number of courses *****/
|
||||||
Deg->NumCrss = Crs_GetNumCrssInDeg (Deg->DegCod);
|
Deg->NumCrss = Crs_GetNumCrssInDeg (Deg->DegCod);
|
||||||
|
@ -3550,72 +3407,6 @@ void Deg_ChangeDegreeCtr (void)
|
||||||
Deg_EditDegrees ();
|
Deg_EditDegrees ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/********************** Change the first year of a degree ********************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
void Deg_ChangeDegFirstYear (void)
|
|
||||||
{
|
|
||||||
Deg_ChangeDegYear (&Gbl.Degs.EditingDeg,Deg_FIRST_YEAR);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/*********************** Change the last year of a degree ********************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
void Deg_ChangeDegLastYear (void)
|
|
||||||
{
|
|
||||||
Deg_ChangeDegYear (&Gbl.Degs.EditingDeg,Deg_LAST_YEAR);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/******************* Change the first/last year of a degree ******************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
static void Deg_ChangeDegYear (struct Degree *Deg,Deg_FirstOrLastYear_t FirstOrLastYear)
|
|
||||||
{
|
|
||||||
extern const char *Txt_The_years_of_the_degree_have_changed;
|
|
||||||
char Query[512];
|
|
||||||
char YearStr[2+1];
|
|
||||||
const char *ParamName = NULL; // Initialized to avoid warning
|
|
||||||
const char *FieldName = NULL; // Initialized to avoid warning
|
|
||||||
unsigned *PtrYear = NULL; // Initialized to avoid warning
|
|
||||||
|
|
||||||
switch (FirstOrLastYear)
|
|
||||||
{
|
|
||||||
case Deg_FIRST_YEAR:
|
|
||||||
ParamName = "FirstYear";
|
|
||||||
FieldName = "FirstYear";
|
|
||||||
PtrYear = &(Deg->FirstYear);
|
|
||||||
break;
|
|
||||||
case Deg_LAST_YEAR:
|
|
||||||
ParamName = "LastYear";
|
|
||||||
FieldName = "LastYear";
|
|
||||||
PtrYear = &(Deg->LastYear);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/***** Get parameters from form *****/
|
|
||||||
/* Get degree code */
|
|
||||||
if ((Deg->DegCod = Deg_GetParamOtherDegCod ()) == -1L)
|
|
||||||
Lay_ShowErrorAndExit ("Code of degree is missing.");
|
|
||||||
|
|
||||||
/* Get parameter with first/last year */
|
|
||||||
Par_GetParToText (ParamName,YearStr,2);
|
|
||||||
*PtrYear = Deg_ConvStrToYear (YearStr);
|
|
||||||
|
|
||||||
/***** Update first/last year in table of degrees *****/
|
|
||||||
sprintf (Query,"UPDATE degrees SET %s='%u' WHERE DegCod='%ld'",
|
|
||||||
FieldName,*PtrYear,Deg->DegCod);
|
|
||||||
DB_QueryUPDATE (Query,"can not update the number of years of a degree");
|
|
||||||
|
|
||||||
/***** Write message to show the change made *****/
|
|
||||||
Lay_ShowAlert (Lay_SUCCESS,Txt_The_years_of_the_degree_have_changed);
|
|
||||||
|
|
||||||
/***** Show the form again *****/
|
|
||||||
Deg_EditDegrees ();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/************************* Change the WWW of a degree ************************/
|
/************************* Change the WWW of a degree ************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -3834,16 +3625,6 @@ unsigned Deg_GetNumDegsWithUsrs (Rol_Role_t Role,const char *SubQuery)
|
||||||
return (unsigned) DB_QueryCOUNT (Query,"can not get number of degrees with users");
|
return (unsigned) DB_QueryCOUNT (Query,"can not get number of degrees with users");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/******************* Check if a year is valid in a degree ********************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
bool Deg_CheckIfYearIsValidInDeg (unsigned Year,struct Degree *Deg)
|
|
||||||
{
|
|
||||||
return (Year == 0) ||
|
|
||||||
(Year != 0 && Year >= Deg->FirstYear && Year <= Deg->LastYear);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/***** Write institutions, centres and degrees administrated by an admin *****/
|
/***** Write institutions, centres and degrees administrated by an admin *****/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -76,8 +76,6 @@ struct Degree
|
||||||
long RequesterUsrCod; // User code of the person who requested the creation of this degree
|
long RequesterUsrCod; // User code of the person who requested the creation of this degree
|
||||||
char ShortName[Deg_MAX_LENGTH_DEGREE_SHORT_NAME+1]; // Short name of degree
|
char ShortName[Deg_MAX_LENGTH_DEGREE_SHORT_NAME+1]; // Short name of 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 LastYear;
|
|
||||||
char WWW[Cns_MAX_LENGTH_WWW+1];
|
char WWW[Cns_MAX_LENGTH_WWW+1];
|
||||||
unsigned NumCrss; // Number of courses in the degree
|
unsigned NumCrss; // Number of courses in the degree
|
||||||
struct Course *LstCrss; // List of courses in this degree
|
struct Course *LstCrss; // List of courses in this degree
|
||||||
|
@ -144,8 +142,6 @@ void Deg_RenameDegreeFull (void);
|
||||||
void Deg_ChangeDegTypeLogIn (void);
|
void Deg_ChangeDegTypeLogIn (void);
|
||||||
void Deg_ChangeDegreeType (void);
|
void Deg_ChangeDegreeType (void);
|
||||||
void Deg_ChangeDegreeCtr (void);
|
void Deg_ChangeDegreeCtr (void);
|
||||||
void Deg_ChangeDegFirstYear (void);
|
|
||||||
void Deg_ChangeDegLastYear (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);
|
||||||
|
@ -159,8 +155,6 @@ unsigned Deg_GetNumDegsInCtr (long CtrCod);
|
||||||
unsigned Deg_GetNumDegsWithCrss (const char *SubQuery);
|
unsigned Deg_GetNumDegsWithCrss (const char *SubQuery);
|
||||||
unsigned Deg_GetNumDegsWithUsrs (Rol_Role_t Role,const char *SubQuery);
|
unsigned Deg_GetNumDegsWithUsrs (Rol_Role_t Role,const char *SubQuery);
|
||||||
|
|
||||||
bool Deg_CheckIfYearIsValidInDeg (unsigned Year,struct Degree *Deg);
|
|
||||||
|
|
||||||
void Deg_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan);
|
void Deg_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan);
|
||||||
|
|
||||||
unsigned Deg_ListDegsFound (const char *Query);
|
unsigned Deg_ListDegsFound (const char *Query);
|
||||||
|
|
|
@ -305,8 +305,6 @@ void Gbl_InitializeGlobals (void)
|
||||||
Gbl.Degs.EditingDeg.DegCod = -1L;
|
Gbl.Degs.EditingDeg.DegCod = -1L;
|
||||||
Gbl.Degs.EditingDeg.ShortName[0] = '\0';
|
Gbl.Degs.EditingDeg.ShortName[0] = '\0';
|
||||||
Gbl.Degs.EditingDeg.FullName[0] = '\0';
|
Gbl.Degs.EditingDeg.FullName[0] = '\0';
|
||||||
Gbl.Degs.EditingDeg.FirstYear =
|
|
||||||
Gbl.Degs.EditingDeg.LastYear = 0;
|
|
||||||
Gbl.Degs.EditingDeg.WWW[0] = '\0';
|
Gbl.Degs.EditingDeg.WWW[0] = '\0';
|
||||||
Gbl.Degs.EditingDeg.NumCrss = 0;
|
Gbl.Degs.EditingDeg.NumCrss = 0;
|
||||||
Gbl.Degs.EditingDeg.LstCrss = NULL;
|
Gbl.Degs.EditingDeg.LstCrss = NULL;
|
||||||
|
|
|
@ -236,8 +236,6 @@ void Pre_RemoveOldPrefsFromIP (void)
|
||||||
|
|
||||||
void Pre_PutLinkToChangeLanguage (void)
|
void Pre_PutLinkToChangeLanguage (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Log_in;
|
|
||||||
|
|
||||||
Lay_PutContextualLink (ActEdiPrf,NULL,
|
Lay_PutContextualLink (ActEdiPrf,NULL,
|
||||||
"cty64x64.gif",
|
"cty64x64.gif",
|
||||||
"Change language","Change language");
|
"Change language","Change language");
|
||||||
|
|
92
swad_text.c
92
swad_text.c
|
@ -11887,27 +11887,6 @@ const char *Txt_First_name =
|
||||||
"Nome";
|
"Nome";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_First_BR_year = // "First academic year", the opposite to "Last academic year"
|
|
||||||
#if L==1
|
|
||||||
"Primer<br />año/sem."; // Necessita traduccio
|
|
||||||
#elif L==2
|
|
||||||
"First<br />year/sem."; // Need Übersetzung
|
|
||||||
#elif L==3
|
|
||||||
"First<br />year/sem.";
|
|
||||||
#elif L==4
|
|
||||||
"Primer<br />año/sem.";
|
|
||||||
#elif L==5
|
|
||||||
"First<br />year/sem."; // Besoin de traduction
|
|
||||||
#elif L==6
|
|
||||||
"Primer<br />año/sem."; // Okoteve traducción
|
|
||||||
#elif L==7
|
|
||||||
"Primo<br />anno/sem.";
|
|
||||||
#elif L==8
|
|
||||||
"Pierwszy<br />rok/sem.";
|
|
||||||
#elif L==9
|
|
||||||
"First<br />year/sem."; // Necessita de tradução
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_Folder =
|
const char *Txt_Folder =
|
||||||
#if L==1
|
#if L==1
|
||||||
"Carpeta";
|
"Carpeta";
|
||||||
|
@ -15560,27 +15539,6 @@ const char *Txt_Last_clicks_in_real_time =
|
||||||
"Últimos cliques em tempo real";
|
"Últimos cliques em tempo real";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Last_BR_year = // "Last academic year", the opposite to "First academic year"
|
|
||||||
#if L==1
|
|
||||||
"Último<br />año/sem."; // Necessita traduccio
|
|
||||||
#elif L==2
|
|
||||||
"Last<br />year/sem."; // Need Übersetzung
|
|
||||||
#elif L==3
|
|
||||||
"Last<br />year/sem.";
|
|
||||||
#elif L==4
|
|
||||||
"Último<br />año/sem.";
|
|
||||||
#elif L==5
|
|
||||||
"Last<br />year/sem."; // Besoin de traduction
|
|
||||||
#elif L==6
|
|
||||||
"Último<br />año/sem."; // Okoteve traducción
|
|
||||||
#elif L==7
|
|
||||||
"Last<br />anno/sem.";
|
|
||||||
#elif L==8
|
|
||||||
"Ostatni<br />rok/sem.";
|
|
||||||
#elif L==9
|
|
||||||
"Last<br />year/sem."; // Necessita de tradução
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_LAYOUT_SIDE_COLUMNS[4] =
|
const char *Txt_LAYOUT_SIDE_COLUMNS[4] =
|
||||||
{
|
{
|
||||||
#if L==1
|
#if L==1
|
||||||
|
@ -44603,34 +44561,25 @@ const char *Txt_The_works_of_X_have_been_removed_in_a_total_of_Y_of_his_her_Z_co
|
||||||
" have been removed in a total of %u of her/his %u courses."; // Necessita de tradução
|
" have been removed in a total of %u of her/his %u courses."; // Necessita de tradução
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_The_year_X_is_not_enabled_on_the_degree_Y = // Warning: it is very important to include two %s in the following sentences
|
const char *Txt_The_year_X_is_not_allowed = // Warning: it is very important to include %u in the following sentences
|
||||||
#if L==1
|
#if L==1
|
||||||
"El curso <strong>%s</strong> no está habilitado"
|
"El curso <strong>%u</strong> no está permitido."; // Necessita traduccio
|
||||||
" en la titulación <strong>%s</strong>."; // Necessita traduccio
|
|
||||||
#elif L==2
|
#elif L==2
|
||||||
"The year <strong>%s</strong> is not enabled"
|
"The year <strong>%u</strong> is not enabled."; // Need Übersetzung
|
||||||
" on the degree <strong>%s</strong>."; // Need Übersetzung
|
|
||||||
#elif L==3
|
#elif L==3
|
||||||
"The year <strong>%s</strong> is not enabled"
|
"The year <strong>%u</strong> is not enabled.";
|
||||||
" on the degree <strong>%s</strong>.";
|
|
||||||
#elif L==4
|
#elif L==4
|
||||||
"El curso <strong>%s</strong> no está habilitado"
|
"El curso <strong>%u</strong> no está permitido.";
|
||||||
" en la titulación <strong>%s</strong>.";
|
|
||||||
#elif L==5
|
#elif L==5
|
||||||
"The year <strong>%s</strong> is not enabled"
|
"The year <strong>%u</strong> is not enabled."; // Besoin de traduction
|
||||||
" on the degree <strong>%s</strong>."; // Besoin de traduction
|
|
||||||
#elif L==6
|
#elif L==6
|
||||||
"El curso <strong>%s</strong> no está habilitado"
|
"El curso <strong>%u</strong> no está permitido."; // Okoteve traducción
|
||||||
" en la titulación <strong>%s</strong>."; // Okoteve traducción
|
|
||||||
#elif L==7
|
#elif L==7
|
||||||
"L'anno <strong>%s</strong> non è abilitato"
|
"L'anno <strong>%u</strong> non è consentito.";
|
||||||
" nella laurea <strong>%s</strong>.";
|
|
||||||
#elif L==8
|
#elif L==8
|
||||||
"The year <strong>%s</strong> is not enabled"
|
"The year <strong>%u</strong> is not allowed."; // Potrzebujesz tlumaczenie
|
||||||
" on the degree <strong>%s</strong>."; // Potrzebujesz tlumaczenie
|
|
||||||
#elif L==9
|
#elif L==9
|
||||||
"The year <strong>%s</strong> is not enabled"
|
"The year <strong>%u</strong> is not allowed."; // Necessita de tradução
|
||||||
" on the degree <strong>%s</strong>."; // Necessita de tradução
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_The_year_of_the_course_X_has_changed = // Warning: it is very important to include %s in the following sentences
|
const char *Txt_The_year_of_the_course_X_has_changed = // Warning: it is very important to include %s in the following sentences
|
||||||
|
@ -44654,27 +44603,6 @@ const char *Txt_The_year_of_the_course_X_has_changed = // Warning: it is very im
|
||||||
"The year of the couse <strong>%s</strong> has changed."; // Necessita de tradução
|
"The year of the couse <strong>%s</strong> has changed."; // Necessita de tradução
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_The_years_of_the_degree_have_changed =
|
|
||||||
#if L==1
|
|
||||||
"Los años de la titulación han cambiado."; // Necessita traduccio
|
|
||||||
#elif L==2
|
|
||||||
"The years of the degree have changed."; // Need Übersetzung
|
|
||||||
#elif L==3
|
|
||||||
"The years of the degree have changed.";
|
|
||||||
#elif L==4
|
|
||||||
"Los años de la titulación han cambiado.";
|
|
||||||
#elif L==5
|
|
||||||
"The years of the degree have changed."; // Besoin de traduction
|
|
||||||
#elif L==6
|
|
||||||
"Los años de la titulación han cambiado."; // Okoteve traducción
|
|
||||||
#elif L==7
|
|
||||||
"Gli anni della laurea sono cambiati.";
|
|
||||||
#elif L==8
|
|
||||||
"The years of the degree have changed."; // Potrzebujesz tlumaczenie
|
|
||||||
#elif L==9
|
|
||||||
"The years of the degree have changed."; // Necessita de tradução
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_The_ZIP_file_has_been_received_successfully =
|
const char *Txt_The_ZIP_file_has_been_received_successfully =
|
||||||
#if L==1
|
#if L==1
|
||||||
"El archivo <em>ZIP</em> se ha recibido correctamente."; // Necessita traduccio
|
"El archivo <em>ZIP</em> se ha recibido correctamente."; // Necessita traduccio
|
||||||
|
|
Loading…
Reference in New Issue
Block a user