Version 15.59

This commit is contained in:
Antonio Cañas Vargas 2015-12-06 01:37:22 +01:00
parent e9346c37d7
commit 05e930cf29
8 changed files with 174 additions and 93 deletions

View File

@ -294,7 +294,7 @@ 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
187. ActChgDegOptYea Request change of the year of optativas 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 +1698,7 @@ 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}, /* 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 +3351,8 @@ 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 // ActChgDegOptYea, // #552
-1, // #552
ActRecDegLog, // #553 ActRecDegLog, // #553
ActChgDegWWW, // #554 ActChgDegWWW, // #554
ActEdiCrs, // #555 ActEdiCrs, // #555

View File

@ -71,7 +71,8 @@ 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 (7+52+15+90+73+68+205+183+154+171+27+80) // #define Act_NUM_ACTIONS (7+52+15+90+73+68+205+183+154+171+27+80)
#define Act_NUM_ACTIONS (7+52+15+90+73+67+205+183+154+171+27+80) // #define Act_NUM_ACTIONS (7+52+15+90+73+67+205+183+154+171+27+80)
#define Act_NUM_ACTIONS (7+52+15+90+72+67+205+183+154+171+27+80)
#define Act_MAX_ACTION_COD 1487 #define Act_MAX_ACTION_COD 1487
@ -307,58 +308,58 @@ typedef int Act_Action_t; // Must be a signed type, because -1 is used to indica
#define ActChgDegCtr (ActDowComIns+ 21) #define ActChgDegCtr (ActDowComIns+ 21)
#define ActChgDegFstYea (ActDowComIns+ 22) #define ActChgDegFstYea (ActDowComIns+ 22)
#define ActChgDegLstYea (ActDowComIns+ 23) #define ActChgDegLstYea (ActDowComIns+ 23)
#define ActChgDegOptYea (ActDowComIns+ 24) // #define ActChgDegOptYea (ActDowComIns+ 24)
#define ActChgDegWWW (ActDowComIns+ 25) #define ActChgDegWWW (ActDowComIns+ 24)
#define ActChgDegSta (ActDowComIns+ 26) #define ActChgDegSta (ActDowComIns+ 25)
#define ActChgToSeeDocCtr (ActDowComIns+ 27) #define ActChgToSeeDocCtr (ActDowComIns+ 26)
#define ActSeeDocCtr (ActDowComIns+ 28) #define ActSeeDocCtr (ActDowComIns+ 27)
#define ActExpSeeDocCtr (ActDowComIns+ 29) #define ActExpSeeDocCtr (ActDowComIns+ 28)
#define ActConSeeDocCtr (ActDowComIns+ 30) #define ActConSeeDocCtr (ActDowComIns+ 29)
#define ActZIPSeeDocCtr (ActDowComIns+ 31) #define ActZIPSeeDocCtr (ActDowComIns+ 30)
#define ActReqDatSeeDocCtr (ActDowComIns+ 32) #define ActReqDatSeeDocCtr (ActDowComIns+ 31)
#define ActDowSeeDocCtr (ActDowComIns+ 33) #define ActDowSeeDocCtr (ActDowComIns+ 32)
#define ActChgToAdmDocCtr (ActDowComIns+ 34) #define ActChgToAdmDocCtr (ActDowComIns+ 33)
#define ActAdmDocCtr (ActDowComIns+ 35) #define ActAdmDocCtr (ActDowComIns+ 34)
#define ActReqRemFilDocCtr (ActDowComIns+ 36) #define ActReqRemFilDocCtr (ActDowComIns+ 35)
#define ActRemFilDocCtr (ActDowComIns+ 37) #define ActRemFilDocCtr (ActDowComIns+ 36)
#define ActRemFolDocCtr (ActDowComIns+ 38) #define ActRemFolDocCtr (ActDowComIns+ 37)
#define ActCopDocCtr (ActDowComIns+ 39) #define ActCopDocCtr (ActDowComIns+ 38)
#define ActPasDocCtr (ActDowComIns+ 40) #define ActPasDocCtr (ActDowComIns+ 39)
#define ActRemTreDocCtr (ActDowComIns+ 41) #define ActRemTreDocCtr (ActDowComIns+ 40)
#define ActFrmCreDocCtr (ActDowComIns+ 42) #define ActFrmCreDocCtr (ActDowComIns+ 41)
#define ActCreFolDocCtr (ActDowComIns+ 43) #define ActCreFolDocCtr (ActDowComIns+ 42)
#define ActCreLnkDocCtr (ActDowComIns+ 44) #define ActCreLnkDocCtr (ActDowComIns+ 43)
#define ActRenFolDocCtr (ActDowComIns+ 45) #define ActRenFolDocCtr (ActDowComIns+ 44)
#define ActRcvFilDocCtrDZ (ActDowComIns+ 46) #define ActRcvFilDocCtrDZ (ActDowComIns+ 45)
#define ActRcvFilDocCtrCla (ActDowComIns+ 47) #define ActRcvFilDocCtrCla (ActDowComIns+ 46)
#define ActExpAdmDocCtr (ActDowComIns+ 48) #define ActExpAdmDocCtr (ActDowComIns+ 47)
#define ActConAdmDocCtr (ActDowComIns+ 49) #define ActConAdmDocCtr (ActDowComIns+ 48)
#define ActZIPAdmDocCtr (ActDowComIns+ 50) #define ActZIPAdmDocCtr (ActDowComIns+ 49)
#define ActShoDocCtr (ActDowComIns+ 51) #define ActShoDocCtr (ActDowComIns+ 50)
#define ActHidDocCtr (ActDowComIns+ 52) #define ActHidDocCtr (ActDowComIns+ 51)
#define ActReqDatAdmDocCtr (ActDowComIns+ 53) #define ActReqDatAdmDocCtr (ActDowComIns+ 52)
#define ActChgDatAdmDocCtr (ActDowComIns+ 54) #define ActChgDatAdmDocCtr (ActDowComIns+ 53)
#define ActDowAdmDocCtr (ActDowComIns+ 55) #define ActDowAdmDocCtr (ActDowComIns+ 54)
#define ActReqRemFilComCtr (ActDowComIns+ 56) #define ActReqRemFilComCtr (ActDowComIns+ 55)
#define ActRemFilComCtr (ActDowComIns+ 57) #define ActRemFilComCtr (ActDowComIns+ 56)
#define ActRemFolComCtr (ActDowComIns+ 58) #define ActRemFolComCtr (ActDowComIns+ 57)
#define ActCopComCtr (ActDowComIns+ 59) #define ActCopComCtr (ActDowComIns+ 58)
#define ActPasComCtr (ActDowComIns+ 60) #define ActPasComCtr (ActDowComIns+ 59)
#define ActRemTreComCtr (ActDowComIns+ 61) #define ActRemTreComCtr (ActDowComIns+ 60)
#define ActFrmCreComCtr (ActDowComIns+ 62) #define ActFrmCreComCtr (ActDowComIns+ 61)
#define ActCreFolComCtr (ActDowComIns+ 63) #define ActCreFolComCtr (ActDowComIns+ 62)
#define ActCreLnkComCtr (ActDowComIns+ 64) #define ActCreLnkComCtr (ActDowComIns+ 63)
#define ActRenFolComCtr (ActDowComIns+ 65) #define ActRenFolComCtr (ActDowComIns+ 64)
#define ActRcvFilComCtrDZ (ActDowComIns+ 66) #define ActRcvFilComCtrDZ (ActDowComIns+ 65)
#define ActRcvFilComCtrCla (ActDowComIns+ 67) #define ActRcvFilComCtrCla (ActDowComIns+ 66)
#define ActExpComCtr (ActDowComIns+ 68) #define ActExpComCtr (ActDowComIns+ 67)
#define ActConComCtr (ActDowComIns+ 69) #define ActConComCtr (ActDowComIns+ 68)
#define ActZIPComCtr (ActDowComIns+ 70) #define ActZIPComCtr (ActDowComIns+ 69)
#define ActReqDatComCtr (ActDowComIns+ 71) #define ActReqDatComCtr (ActDowComIns+ 70)
#define ActChgDatComCtr (ActDowComIns+ 72) #define ActChgDatComCtr (ActDowComIns+ 71)
#define ActDowComCtr (ActDowComIns+ 73) #define ActDowComCtr (ActDowComIns+ 72)
/*****************************************************************************/ /*****************************************************************************/
/********************************* Degree tab ********************************/ /********************************* Degree tab ********************************/

View File

@ -113,13 +113,17 @@
/****************************** Public constants *****************************/ /****************************** Public constants *****************************/
/*****************************************************************************/ /*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 15.58.1 (2015/12/06)" #define Log_PLATFORM_VERSION "SWAD 15.59 (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.58.1: Dec 06, 2015 Removed unused code related to semester. (186960 lines) Version 15.59: Dec 06, 2015 Year for optional courses is now always present. (186692 lines)
1 change necessary in database:
UPDATE actions SET Obsolete='Y' WHERE ActCod='552';
Version 15.58.1: Dec 06, 2015 Removed unused code related to semester. (186604 lines)
1 change necessary in database: 1 change necessary in database:
ALTER TABLE courses DROP COLUMN Semester; ALTER TABLE courses DROP COLUMN Semester;

View File

@ -847,6 +847,7 @@ mysql> DESCRIBE degrees;
+-----------------+---------------+------+-----+---------+----------------+ +-----------------+---------------+------+-----+---------+----------------+
11 rows in set (0.00 sec) 11 rows in set (0.00 sec)
*/ */
/*
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,"
"CtrCod INT NOT NULL," "CtrCod INT NOT NULL,"
@ -860,6 +861,19 @@ mysql> DESCRIBE degrees;
"OptYear ENUM('N','Y') NOT NULL DEFAULT 'N'," "OptYear ENUM('N','Y') NOT NULL DEFAULT 'N',"
"WWW VARCHAR(255) NOT NULL," "WWW VARCHAR(255) NOT NULL,"
"UNIQUE INDEX(DegCod),INDEX(CtrCod),INDEX(DegTypCod),INDEX(Status))"); "UNIQUE INDEX(DegCod),INDEX(CtrCod),INDEX(DegTypCod),INDEX(Status))");
*/
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,"
"WWW VARCHAR(255) NOT NULL,"
"UNIQUE INDEX(DegCod),INDEX(CtrCod),INDEX(DegTypCod),INDEX(Status))");
/***** Table departments *****/ /***** Table departments *****/
/* /*

View File

@ -1277,8 +1277,8 @@ 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_With_year_for_optional_courses;
extern const char *Txt_DEGREE_Without_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;
@ -1352,6 +1352,7 @@ static void Deg_ListOneDegreeForSeeing (struct Degree *Deg,unsigned NumDeg)
TxtClassNormal,BgColor,Deg->LastYear); TxtClassNormal,BgColor,Deg->LastYear);
/***** Degree optional year *****/ /***** Degree optional year *****/
/*
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE %s\">" fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE %s\">"
"<img src=\"%s/%s16x16.gif\"" "<img src=\"%s/%s16x16.gif\""
" alt=\"%s\" title=\"%s\"" " alt=\"%s\" title=\"%s\""
@ -1365,6 +1366,7 @@ static void Deg_ListOneDegreeForSeeing (struct Degree *Deg,unsigned NumDeg)
Txt_DEGREE_Without_year_for_optional_courses, Txt_DEGREE_Without_year_for_optional_courses,
Deg->OptYear ? Txt_DEGREE_With_year_for_optional_courses : Deg->OptYear ? Txt_DEGREE_With_year_for_optional_courses :
Txt_DEGREE_Without_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\">"
@ -1392,8 +1394,8 @@ 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_With_year_for_optional_courses;
extern const char *Txt_DEGREE_Without_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;
@ -1590,6 +1592,7 @@ static void Deg_ListDegreesForEdition (void)
fprintf (Gbl.F.Out,"</td>"); fprintf (Gbl.F.Out,"</td>");
/* Degree optional year */ /* Degree optional year */
/*
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">"); fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">");
if (ICanEdit) if (ICanEdit)
{ {
@ -1604,7 +1607,7 @@ static void Deg_ListDegreesForEdition (void)
fprintf (Gbl.F.Out,"</td>"); fprintf (Gbl.F.Out,"</td>");
} }
else else
/* Degree optional year */ * Degree optional year *
fprintf (Gbl.F.Out,"<img src=\"%s/%s16x16.gif\"" fprintf (Gbl.F.Out,"<img src=\"%s/%s16x16.gif\""
" alt=\"%s\" title=\"%s\"" " alt=\"%s\" title=\"%s\""
" class=\"ICON16x16\" />", " class=\"ICON16x16\" />",
@ -1616,6 +1619,7 @@ static void Deg_ListDegreesForEdition (void)
Deg->OptYear ? Txt_DEGREE_With_year_for_optional_courses : Deg->OptYear ? Txt_DEGREE_With_year_for_optional_courses :
Txt_DEGREE_Without_year_for_optional_courses); Txt_DEGREE_Without_year_for_optional_courses);
fprintf (Gbl.F.Out,"</td>"); 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\">");
@ -1920,10 +1924,12 @@ static void Deg_PutFormToCreateDegree (void)
"</td>"); "</td>");
/***** Degree optional year *****/ /***** Degree optional year *****/
/*
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">"
"<input type=\"checkbox\" name=\"OptYear\" value=\"Y\"%s /></td>", "<input type=\"checkbox\" name=\"OptYear\" value=\"Y\"%s /></td>",
Deg->OptYear ? " checked=\"checked\"" : Deg->OptYear ? " checked=\"checked\"" :
""); "");
*/
/***** Degree WWW *****/ /***** Degree WWW *****/
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
@ -2030,7 +2036,7 @@ static void Deg_PutHeadDegreesForSeeing (void)
extern const char *Txt_Type; extern const char *Txt_Type;
extern const char *Txt_First_BR_year; extern const char *Txt_First_BR_year;
extern const char *Txt_Last_BR_year; extern const char *Txt_Last_BR_year;
extern const char *Txt_Opt_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;
@ -2049,9 +2055,9 @@ static void Deg_PutHeadDegreesForSeeing (void)
"<th class=\"CENTER_MIDDLE\">" "<th class=\"CENTER_MIDDLE\">"
"%s" "%s"
"</th>" "</th>"
"<th class=\"CENTER_MIDDLE\">" // "<th class=\"CENTER_MIDDLE\">"
"%s" // "%s"
"</th>" // "</th>"
"<th class=\"RIGHT_MIDDLE\">" "<th class=\"RIGHT_MIDDLE\">"
"%s" "%s"
"</th>" "</th>"
@ -2063,7 +2069,7 @@ static void Deg_PutHeadDegreesForSeeing (void)
Txt_Type, Txt_Type,
Txt_First_BR_year, Txt_First_BR_year,
Txt_Last_BR_year, Txt_Last_BR_year,
Txt_Opt_BR_year, // Txt_Opt_BR_year,
Txt_Courses_ABBREVIATION, Txt_Courses_ABBREVIATION,
Txt_Status); Txt_Status);
} }
@ -2081,7 +2087,7 @@ static void Deg_PutHeadDegreesForEdition (void)
extern const char *Txt_Type; extern const char *Txt_Type;
extern const char *Txt_First_BR_year; extern const char *Txt_First_BR_year;
extern const char *Txt_Last_BR_year; extern const char *Txt_Last_BR_year;
extern const char *Txt_Opt_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;
@ -2111,9 +2117,9 @@ static void Deg_PutHeadDegreesForEdition (void)
"<th class=\"CENTER_MIDDLE\">" "<th class=\"CENTER_MIDDLE\">"
"%s" "%s"
"</th>" "</th>"
"<th class=\"CENTER_MIDDLE\">" // "<th class=\"CENTER_MIDDLE\">"
"%s" // "%s"
"</th>" // "</th>"
"<th class=\"LEFT_MIDDLE\">" "<th class=\"LEFT_MIDDLE\">"
"%s" "%s"
"</th>" "</th>"
@ -2134,7 +2140,7 @@ static void Deg_PutHeadDegreesForEdition (void)
Txt_Type, Txt_Type,
Txt_First_BR_year, Txt_First_BR_year,
Txt_Last_BR_year, Txt_Last_BR_year,
Txt_Opt_BR_year, // Txt_Opt_BR_year,
Txt_WWW, Txt_WWW,
Txt_Courses_ABBREVIATION, Txt_Courses_ABBREVIATION,
Txt_Status, Txt_Status,
@ -2191,6 +2197,7 @@ 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," sprintf (Query,"INSERT INTO degrees (CtrCod,DegTypCod,Status,RequesterUsrCod,"
"ShortName,FullName,FirstYear,LastYear,OptYear,WWW)" "ShortName,FullName,FirstYear,LastYear,OptYear,WWW)"
" VALUES ('%ld','%ld','%u','%ld'," " VALUES ('%ld','%ld','%u','%ld',"
@ -2203,6 +2210,17 @@ static void Deg_CreateDegree (struct Degree *Deg,unsigned Status)
Deg->OptYear ? 'Y' : Deg->OptYear ? 'Y' :
'N', 'N',
Deg->WWW); Deg->WWW);
*/
sprintf (Query,"INSERT INTO degrees (CtrCod,DegTypCod,Status,RequesterUsrCod,"
"ShortName,FullName,FirstYear,LastYear,WWW)"
" VALUES ('%ld','%ld','%u','%ld',"
"'%s','%s','%u','%u','%s')",
Deg->CtrCod,Deg->DegTypCod,
Status,
Gbl.Usrs.Me.UsrDat.UsrCod,
Deg->ShortName,Deg->FullName,
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 *****/
@ -2370,9 +2388,14 @@ 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," sprintf (Query,"SELECT DegCod,CtrCod,DegTypCod,Status,RequesterUsrCod,"
"ShortName,FullName,FirstYear,LastYear,OptYear,WWW" "ShortName,FullName,FirstYear,LastYear,OptYear,WWW"
" FROM degrees ORDER BY FullName"); " FROM degrees ORDER BY FullName");
*/
sprintf (Query,"SELECT DegCod,CtrCod,DegTypCod,Status,RequesterUsrCod,"
"ShortName,FullName,FirstYear,LastYear,WWW"
" 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");
if (Gbl.Degs.AllDegs.Num) // Degrees found... if (Gbl.Degs.AllDegs.Num) // Degrees found...
@ -2425,10 +2448,16 @@ 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," sprintf (Query,"SELECT DegCod,CtrCod,DegTypCod,Status,RequesterUsrCod,"
"ShortName,FullName,FirstYear,LastYear,OptYear,WWW" "ShortName,FullName,FirstYear,LastYear,OptYear,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);
*/
sprintf (Query,"SELECT DegCod,CtrCod,DegTypCod,Status,RequesterUsrCod,"
"ShortName,FullName,FirstYear,LastYear,WWW"
" FROM degrees WHERE CtrCod='%ld' ORDER BY FullName",
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");
/***** Count number of rows in result *****/ /***** Count number of rows in result *****/
@ -2498,6 +2527,7 @@ 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) 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,OptYear,WWW" "ShortName,FullName,FirstYear,LastYear,OptYear,WWW"
@ -2514,6 +2544,23 @@ void Deg_GetListDegsAdminByMe (void)
" AND admin.Cod=degrees.DegCod" " AND admin.Cod=degrees.DegCod"
" ORDER BY degrees.ShortName", " ORDER BY degrees.ShortName",
Gbl.Usrs.Me.UsrDat.UsrCod); Gbl.Usrs.Me.UsrDat.UsrCod);
*/
if (Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM)
sprintf (Query,"SELECT DegCod,CtrCod,DegTypCod,Status,RequesterUsrCod,"
"ShortName,FullName,FirstYear,LastYear,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.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);
Gbl.Usrs.Me.MyAdminDegs.Num = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get degrees admin by you"); Gbl.Usrs.Me.MyAdminDegs.Num = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get degrees admin by you");
/***** Count number of rows in result *****/ /***** Count number of rows in result *****/
@ -2626,7 +2673,7 @@ static void Deg_RecFormRequestOrCreateDeg (unsigned Status)
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 YearStr[2+1];
char YN[1+1]; // char YN[1+1];
Deg = &Gbl.Degs.EditingDeg; Deg = &Gbl.Degs.EditingDeg;
@ -2653,8 +2700,10 @@ static void Deg_RecFormRequestOrCreateDeg (unsigned Status)
Deg->LastYear = Deg_ConvStrToYear (YearStr); Deg->LastYear = Deg_ConvStrToYear (YearStr);
/* Get optional year */ /* Get optional year */
/*
Par_GetParToText ("OptYear",YN,1); Par_GetParToText ("OptYear",YN,1);
Deg->OptYear = (Str_ConvertToUpperLetter (YN[0]) == 'Y'); 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);
@ -2932,7 +2981,7 @@ 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->OptYear = false;
Deg->WWW[0] = '\0'; Deg->WWW[0] = '\0';
Deg->NumCourses = 0; Deg->NumCourses = 0;
Deg->LstCrss = NULL; Deg->LstCrss = NULL;
@ -2940,10 +2989,16 @@ 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,OptYear,WWW" "ShortName,FullName,FirstYear,LastYear,OptYear,WWW"
" FROM degrees WHERE DegCod ='%ld'", " FROM degrees WHERE DegCod ='%ld'",
Deg->DegCod); Deg->DegCod);
*/
sprintf (Query,"SELECT DegCod,CtrCod,DegTypCod,Status,RequesterUsrCod,"
"ShortName,FullName,FirstYear,LastYear,WWW"
" FROM degrees WHERE DegCod ='%ld'",
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");
if (NumRows == 1) if (NumRows == 1)
@ -2965,7 +3020,7 @@ 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->OptYear = false;
Deg->WWW[0] = '\0'; Deg->WWW[0] = '\0';
Deg->NumCourses = 0; Deg->NumCourses = 0;
Deg->LstCrss = NULL; Deg->LstCrss = NULL;
@ -3016,10 +3071,12 @@ static void Deg_GetDataOfDegreeFromRow (struct Degree *Deg,MYSQL_ROW row)
Deg->LastYear = Deg_ConvStrToYear (row[8]); Deg->LastYear = Deg_ConvStrToYear (row[8]);
/***** Get optional year (row[9]) *****/ /***** Get optional year (row[9]) *****/
/*
Deg->OptYear = (Str_ConvertToUpperLetter (row[9][0]) == 'Y'); Deg->OptYear = (Str_ConvertToUpperLetter (row[9][0]) == 'Y');
*/
/***** Get WWW (row[10]) *****/ /***** Get WWW (row[9]) *****/
strcpy (Deg->WWW,row[10]); strcpy (Deg->WWW,row[9]);
/***** Get number of courses *****/ /***** Get number of courses *****/
Deg->NumCourses = Crs_GetNumCrssInDeg (Deg->DegCod); Deg->NumCourses = Crs_GetNumCrssInDeg (Deg->DegCod);
@ -3649,7 +3706,7 @@ static void Deg_ChangeDegYear (struct Degree *Deg,Deg_FirstOrLastYear_t FirstOrL
/*****************************************************************************/ /*****************************************************************************/
/******************** Change the optional year of a degree *******************/ /******************** Change the optional year of a degree *******************/
/*****************************************************************************/ /*****************************************************************************/
/*
void Deg_ChangeDegOptYear (void) void Deg_ChangeDegOptYear (void)
{ {
extern const char *Txt_The_degree_now_has_a_year_for_optional_courses; extern const char *Txt_The_degree_now_has_a_year_for_optional_courses;
@ -3660,32 +3717,32 @@ void Deg_ChangeDegOptYear (void)
Deg = &Gbl.Degs.EditingDeg; Deg = &Gbl.Degs.EditingDeg;
/***** Get parameters from form *****/ ***** Get parameters from form *****
/* Get degree code */ * Get degree code *
if ((Deg->DegCod = Deg_GetParamOtherDegCod ()) == -1L) if ((Deg->DegCod = Deg_GetParamOtherDegCod ()) == -1L)
Lay_ShowErrorAndExit ("Code of degree is missing."); Lay_ShowErrorAndExit ("Code of degree is missing.");
/* Get parameter with optional year */ * Get parameter with optional year *
Par_GetParToText ("OptYear",YN,1); Par_GetParToText ("OptYear",YN,1);
Deg->OptYear = (Str_ConvertToUpperLetter (YN[0]) == 'Y'); Deg->OptYear = (Str_ConvertToUpperLetter (YN[0]) == 'Y');
/***** Update optional year in table of degrees *****/ ***** Update optional year in table of degrees *****
sprintf (Query,"UPDATE degrees SET OptYear='%c' WHERE DegCod='%ld'", sprintf (Query,"UPDATE degrees SET OptYear='%c' WHERE DegCod='%ld'",
Deg->OptYear ? 'Y' : Deg->OptYear ? 'Y' :
'N', 'N',
Deg->DegCod); Deg->DegCod);
DB_QueryUPDATE (Query,"can not update the optional year of a degree"); DB_QueryUPDATE (Query,"can not update the optional year of a degree");
/***** Write message to show the change made *****/ ***** Write message to show the change made *****
sprintf (Gbl.Message,"%s", sprintf (Gbl.Message,"%s",
Deg->OptYear ? Txt_The_degree_now_has_a_year_for_optional_courses : Deg->OptYear ? Txt_The_degree_now_has_a_year_for_optional_courses :
Txt_The_degree_has_no_longer_a_year_for_optional_courses); Txt_The_degree_has_no_longer_a_year_for_optional_courses);
Lay_ShowAlert (Lay_SUCCESS,Gbl.Message); Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
/***** Show the form again *****/ ***** Show the form again *****
Deg_EditDegrees (); Deg_EditDegrees ();
} }
*/
/*****************************************************************************/ /*****************************************************************************/
/************************* Change the WWW of a degree ************************/ /************************* Change the WWW of a degree ************************/
/*****************************************************************************/ /*****************************************************************************/
@ -3910,8 +3967,12 @@ 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) || return (Year == 0 && Deg->OptYear) ||
(Year != 0 && Year >= Deg->FirstYear && Year <= Deg->LastYear); (Year != 0 && Year >= Deg->FirstYear && Year <= Deg->LastYear);
*/
return (Year == 0) ||
(Year != 0 && Year >= Deg->FirstYear && Year <= Deg->LastYear);
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -78,7 +78,7 @@ 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; // 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 +148,7 @@ 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_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);

View File

@ -307,7 +307,7 @@ 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.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;

View File

@ -7302,7 +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 = const char *Txt_DEGREE_With_year_for_optional_courses =
#if L==0 #if L==0
"Con curso de optativas."; // Necessita traduccio "Con curso de optativas."; // Necessita traduccio
@ -7323,7 +7323,7 @@ const char *Txt_DEGREE_With_year_for_optional_courses =
#elif L==8 #elif L==8
"With year for optional courses."; // Necessita de tradução "With year for optional courses."; // Necessita de tradução
#endif #endif
*/
const char *Txt_DEGREE_Without_courses = const char *Txt_DEGREE_Without_courses =
#if L==0 #if L==0
"Sense assignatures"; "Sense assignatures";
@ -7344,7 +7344,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 = const char *Txt_DEGREE_Without_year_for_optional_courses =
#if L==0 #if L==0
"Sin curso de optativas."; // Necessita traduccio "Sin curso de optativas."; // Necessita traduccio
@ -7365,7 +7365,7 @@ const char *Txt_DEGREE_Without_year_for_optional_courses =
#elif L==8 #elif L==8
"Without year for optional courses."; // Necessita de tradução "Without year for optional courses."; // Necessita de tradução
#endif #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&oacute;n <strong>%s</strong> eliminada."; // Necessita traduccio "Titulaci&oacute;n <strong>%s</strong> eliminada."; // Necessita traduccio
@ -25808,7 +25808,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 const char *Txt_Opt_BR_year = // Year for optional courses
#if L==0 #if L==0
"&iquest;Cur.<br />opt.?"; // Necessita traduccio "&iquest;Cur.<br />opt.?"; // Necessita traduccio
@ -25829,7 +25829,7 @@ const char *Txt_Opt_BR_year = // Year for optional courses
#elif L==8 #elif L==8
"Opt.<br />year?"; // Necessita de tradução "Opt.<br />year?"; // Necessita de tradução
#endif #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&oacute;n a): Obtenga estudiantes de las listas oficiales"; // Necessita traduccio "Opci&oacute;n a): Obtenga estudiantes de las listas oficiales"; // Necessita traduccio