Version 15.223

This commit is contained in:
Antonio Cañas Vargas 2016-06-12 01:18:35 +02:00
parent 47159b00fa
commit 3989031fce
6 changed files with 1276 additions and 1215 deletions

File diff suppressed because it is too large Load Diff

View File

@ -72,9 +72,9 @@ 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+51+15+90+70+67+245+186+150+172+36+28+83) #define Act_NUM_ACTIONS (1+9+51+15+90+70+67+246+186+150+172+36+28+83)
#define Act_MAX_ACTION_COD 1572 #define Act_MAX_ACTION_COD 1573
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 20 #define Act_MAX_OPTIONS_IN_MENU_PER_TAB 20
@ -461,252 +461,253 @@ typedef int Act_Action_t; // Must be a signed type, because -1 is used to indica
// Secondary actions // Secondary actions
#define ActCrsSch (ActDowShaDeg+ 12) #define ActCrsSch (ActDowShaDeg+ 12)
#define ActPrnCrsInf (ActDowShaDeg+ 13) #define ActPrnCrsInf (ActDowShaDeg+ 13)
#define ActChgCrsLog (ActDowShaDeg+ 14) #define ActChgInsCrsCodCfg (ActDowShaDeg+ 14)
#define ActEdiCrsInf (ActDowShaDeg+ 15) #define ActChgCrsYeaCfg (ActDowShaDeg+ 15)
#define ActEdiTchGui (ActDowShaDeg+ 16) #define ActEdiCrsInf (ActDowShaDeg+ 16)
#define ActPrnCrsTT (ActDowShaDeg+ 17) #define ActEdiTchGui (ActDowShaDeg+ 17)
#define ActEdiCrsTT (ActDowShaDeg+ 18) #define ActPrnCrsTT (ActDowShaDeg+ 18)
#define ActChgCrsTT (ActDowShaDeg+ 19) #define ActEdiCrsTT (ActDowShaDeg+ 19)
#define ActChgCrsTT1stDay (ActDowShaDeg+ 20) #define ActChgCrsTT (ActDowShaDeg+ 20)
#define ActSeeSylLec (ActDowShaDeg+ 21) #define ActChgCrsTT1stDay (ActDowShaDeg+ 21)
#define ActSeeSylPra (ActDowShaDeg+ 22) #define ActSeeSylLec (ActDowShaDeg+ 22)
#define ActEdiSylLec (ActDowShaDeg+ 23) #define ActSeeSylPra (ActDowShaDeg+ 23)
#define ActEdiSylPra (ActDowShaDeg+ 24) #define ActEdiSylLec (ActDowShaDeg+ 24)
#define ActDelItmSylLec (ActDowShaDeg+ 25) #define ActEdiSylPra (ActDowShaDeg+ 25)
#define ActDelItmSylPra (ActDowShaDeg+ 26) #define ActDelItmSylLec (ActDowShaDeg+ 26)
#define ActUp_IteSylLec (ActDowShaDeg+ 27) #define ActDelItmSylPra (ActDowShaDeg+ 27)
#define ActUp_IteSylPra (ActDowShaDeg+ 28) #define ActUp_IteSylLec (ActDowShaDeg+ 28)
#define ActDwnIteSylLec (ActDowShaDeg+ 29) #define ActUp_IteSylPra (ActDowShaDeg+ 29)
#define ActDwnIteSylPra (ActDowShaDeg+ 30) #define ActDwnIteSylLec (ActDowShaDeg+ 30)
#define ActRgtIteSylLec (ActDowShaDeg+ 31) #define ActDwnIteSylPra (ActDowShaDeg+ 31)
#define ActRgtIteSylPra (ActDowShaDeg+ 32) #define ActRgtIteSylLec (ActDowShaDeg+ 32)
#define ActLftIteSylLec (ActDowShaDeg+ 33) #define ActRgtIteSylPra (ActDowShaDeg+ 33)
#define ActLftIteSylPra (ActDowShaDeg+ 34) #define ActLftIteSylLec (ActDowShaDeg+ 34)
#define ActInsIteSylLec (ActDowShaDeg+ 35) #define ActLftIteSylPra (ActDowShaDeg+ 35)
#define ActInsIteSylPra (ActDowShaDeg+ 36) #define ActInsIteSylLec (ActDowShaDeg+ 36)
#define ActModIteSylLec (ActDowShaDeg+ 37) #define ActInsIteSylPra (ActDowShaDeg+ 37)
#define ActModIteSylPra (ActDowShaDeg+ 38) #define ActModIteSylLec (ActDowShaDeg+ 38)
#define ActModIteSylPra (ActDowShaDeg+ 39)
#define ActChgToSeeDocCrs (ActDowShaDeg+ 39) #define ActChgToSeeDocCrs (ActDowShaDeg+ 40)
#define ActSeeDocCrs (ActDowShaDeg+ 40) #define ActSeeDocCrs (ActDowShaDeg+ 41)
#define ActExpSeeDocCrs (ActDowShaDeg+ 41) #define ActExpSeeDocCrs (ActDowShaDeg+ 42)
#define ActConSeeDocCrs (ActDowShaDeg+ 42) #define ActConSeeDocCrs (ActDowShaDeg+ 43)
#define ActZIPSeeDocCrs (ActDowShaDeg+ 43) #define ActZIPSeeDocCrs (ActDowShaDeg+ 44)
#define ActReqDatSeeDocCrs (ActDowShaDeg+ 44) #define ActReqDatSeeDocCrs (ActDowShaDeg+ 45)
#define ActDowSeeDocCrs (ActDowShaDeg+ 45) #define ActDowSeeDocCrs (ActDowShaDeg+ 46)
#define ActSeeDocGrp (ActDowShaDeg+ 46) #define ActSeeDocGrp (ActDowShaDeg+ 47)
#define ActExpSeeDocGrp (ActDowShaDeg+ 47) #define ActExpSeeDocGrp (ActDowShaDeg+ 48)
#define ActConSeeDocGrp (ActDowShaDeg+ 48) #define ActConSeeDocGrp (ActDowShaDeg+ 49)
#define ActZIPSeeDocGrp (ActDowShaDeg+ 49) #define ActZIPSeeDocGrp (ActDowShaDeg+ 50)
#define ActReqDatSeeDocGrp (ActDowShaDeg+ 50) #define ActReqDatSeeDocGrp (ActDowShaDeg+ 51)
#define ActDowSeeDocGrp (ActDowShaDeg+ 51) #define ActDowSeeDocGrp (ActDowShaDeg+ 52)
#define ActChgToAdmDocCrs (ActDowShaDeg+ 52) #define ActChgToAdmDocCrs (ActDowShaDeg+ 53)
#define ActAdmDocCrs (ActDowShaDeg+ 53) #define ActAdmDocCrs (ActDowShaDeg+ 54)
#define ActReqRemFilDocCrs (ActDowShaDeg+ 54) #define ActReqRemFilDocCrs (ActDowShaDeg+ 55)
#define ActRemFilDocCrs (ActDowShaDeg+ 55) #define ActRemFilDocCrs (ActDowShaDeg+ 56)
#define ActRemFolDocCrs (ActDowShaDeg+ 56) #define ActRemFolDocCrs (ActDowShaDeg+ 57)
#define ActCopDocCrs (ActDowShaDeg+ 57) #define ActCopDocCrs (ActDowShaDeg+ 58)
#define ActPasDocCrs (ActDowShaDeg+ 58) #define ActPasDocCrs (ActDowShaDeg+ 59)
#define ActRemTreDocCrs (ActDowShaDeg+ 59) #define ActRemTreDocCrs (ActDowShaDeg+ 60)
#define ActFrmCreDocCrs (ActDowShaDeg+ 60) #define ActFrmCreDocCrs (ActDowShaDeg+ 61)
#define ActCreFolDocCrs (ActDowShaDeg+ 61) #define ActCreFolDocCrs (ActDowShaDeg+ 62)
#define ActCreLnkDocCrs (ActDowShaDeg+ 62) #define ActCreLnkDocCrs (ActDowShaDeg+ 63)
#define ActRenFolDocCrs (ActDowShaDeg+ 63) #define ActRenFolDocCrs (ActDowShaDeg+ 64)
#define ActRcvFilDocCrsDZ (ActDowShaDeg+ 64) #define ActRcvFilDocCrsDZ (ActDowShaDeg+ 65)
#define ActRcvFilDocCrsCla (ActDowShaDeg+ 65) #define ActRcvFilDocCrsCla (ActDowShaDeg+ 66)
#define ActExpAdmDocCrs (ActDowShaDeg+ 66) #define ActExpAdmDocCrs (ActDowShaDeg+ 67)
#define ActConAdmDocCrs (ActDowShaDeg+ 67) #define ActConAdmDocCrs (ActDowShaDeg+ 68)
#define ActZIPAdmDocCrs (ActDowShaDeg+ 68) #define ActZIPAdmDocCrs (ActDowShaDeg+ 69)
#define ActShoDocCrs (ActDowShaDeg+ 69) #define ActShoDocCrs (ActDowShaDeg+ 70)
#define ActHidDocCrs (ActDowShaDeg+ 70) #define ActHidDocCrs (ActDowShaDeg+ 71)
#define ActReqDatAdmDocCrs (ActDowShaDeg+ 71) #define ActReqDatAdmDocCrs (ActDowShaDeg+ 72)
#define ActChgDatAdmDocCrs (ActDowShaDeg+ 72) #define ActChgDatAdmDocCrs (ActDowShaDeg+ 73)
#define ActDowAdmDocCrs (ActDowShaDeg+ 73) #define ActDowAdmDocCrs (ActDowShaDeg+ 74)
#define ActAdmDocGrp (ActDowShaDeg+ 74) #define ActAdmDocGrp (ActDowShaDeg+ 75)
#define ActReqRemFilDocGrp (ActDowShaDeg+ 75) #define ActReqRemFilDocGrp (ActDowShaDeg+ 76)
#define ActRemFilDocGrp (ActDowShaDeg+ 76) #define ActRemFilDocGrp (ActDowShaDeg+ 77)
#define ActRemFolDocGrp (ActDowShaDeg+ 77) #define ActRemFolDocGrp (ActDowShaDeg+ 78)
#define ActCopDocGrp (ActDowShaDeg+ 78) #define ActCopDocGrp (ActDowShaDeg+ 79)
#define ActPasDocGrp (ActDowShaDeg+ 79) #define ActPasDocGrp (ActDowShaDeg+ 80)
#define ActRemTreDocGrp (ActDowShaDeg+ 80) #define ActRemTreDocGrp (ActDowShaDeg+ 81)
#define ActFrmCreDocGrp (ActDowShaDeg+ 81) #define ActFrmCreDocGrp (ActDowShaDeg+ 82)
#define ActCreFolDocGrp (ActDowShaDeg+ 82) #define ActCreFolDocGrp (ActDowShaDeg+ 83)
#define ActCreLnkDocGrp (ActDowShaDeg+ 83) #define ActCreLnkDocGrp (ActDowShaDeg+ 84)
#define ActRenFolDocGrp (ActDowShaDeg+ 84) #define ActRenFolDocGrp (ActDowShaDeg+ 85)
#define ActRcvFilDocGrpDZ (ActDowShaDeg+ 85) #define ActRcvFilDocGrpDZ (ActDowShaDeg+ 86)
#define ActRcvFilDocGrpCla (ActDowShaDeg+ 86) #define ActRcvFilDocGrpCla (ActDowShaDeg+ 87)
#define ActExpAdmDocGrp (ActDowShaDeg+ 87) #define ActExpAdmDocGrp (ActDowShaDeg+ 88)
#define ActConAdmDocGrp (ActDowShaDeg+ 88) #define ActConAdmDocGrp (ActDowShaDeg+ 89)
#define ActZIPAdmDocGrp (ActDowShaDeg+ 89) #define ActZIPAdmDocGrp (ActDowShaDeg+ 90)
#define ActShoDocGrp (ActDowShaDeg+ 90) #define ActShoDocGrp (ActDowShaDeg+ 91)
#define ActHidDocGrp (ActDowShaDeg+ 91) #define ActHidDocGrp (ActDowShaDeg+ 92)
#define ActReqDatAdmDocGrp (ActDowShaDeg+ 92) #define ActReqDatAdmDocGrp (ActDowShaDeg+ 93)
#define ActChgDatAdmDocGrp (ActDowShaDeg+ 93) #define ActChgDatAdmDocGrp (ActDowShaDeg+ 94)
#define ActDowAdmDocGrp (ActDowShaDeg+ 94) #define ActDowAdmDocGrp (ActDowShaDeg+ 95)
#define ActChgToAdmTch (ActDowShaDeg+ 95) #define ActChgToAdmTch (ActDowShaDeg+ 96)
#define ActAdmTchCrs (ActDowShaDeg+ 96) #define ActAdmTchCrs (ActDowShaDeg+ 97)
#define ActReqRemFilTchCrs (ActDowShaDeg+ 97) #define ActReqRemFilTchCrs (ActDowShaDeg+ 98)
#define ActRemFilTchCrs (ActDowShaDeg+ 98) #define ActRemFilTchCrs (ActDowShaDeg+ 99)
#define ActRemFolTchCrs (ActDowShaDeg+ 99) #define ActRemFolTchCrs (ActDowShaDeg+100)
#define ActCopTchCrs (ActDowShaDeg+100) #define ActCopTchCrs (ActDowShaDeg+101)
#define ActPasTchCrs (ActDowShaDeg+101) #define ActPasTchCrs (ActDowShaDeg+102)
#define ActRemTreTchCrs (ActDowShaDeg+102) #define ActRemTreTchCrs (ActDowShaDeg+103)
#define ActFrmCreTchCrs (ActDowShaDeg+103) #define ActFrmCreTchCrs (ActDowShaDeg+104)
#define ActCreFolTchCrs (ActDowShaDeg+104) #define ActCreFolTchCrs (ActDowShaDeg+105)
#define ActCreLnkTchCrs (ActDowShaDeg+105) #define ActCreLnkTchCrs (ActDowShaDeg+106)
#define ActRenFolTchCrs (ActDowShaDeg+106) #define ActRenFolTchCrs (ActDowShaDeg+107)
#define ActRcvFilTchCrsDZ (ActDowShaDeg+107) #define ActRcvFilTchCrsDZ (ActDowShaDeg+108)
#define ActRcvFilTchCrsCla (ActDowShaDeg+108) #define ActRcvFilTchCrsCla (ActDowShaDeg+109)
#define ActExpTchCrs (ActDowShaDeg+109) #define ActExpTchCrs (ActDowShaDeg+110)
#define ActConTchCrs (ActDowShaDeg+110) #define ActConTchCrs (ActDowShaDeg+111)
#define ActZIPTchCrs (ActDowShaDeg+111) #define ActZIPTchCrs (ActDowShaDeg+112)
#define ActReqDatTchCrs (ActDowShaDeg+112) #define ActReqDatTchCrs (ActDowShaDeg+113)
#define ActChgDatTchCrs (ActDowShaDeg+113) #define ActChgDatTchCrs (ActDowShaDeg+114)
#define ActDowTchCrs (ActDowShaDeg+114) #define ActDowTchCrs (ActDowShaDeg+115)
#define ActAdmTchGrp (ActDowShaDeg+115) #define ActAdmTchGrp (ActDowShaDeg+116)
#define ActReqRemFilTchGrp (ActDowShaDeg+116) #define ActReqRemFilTchGrp (ActDowShaDeg+117)
#define ActRemFilTchGrp (ActDowShaDeg+117) #define ActRemFilTchGrp (ActDowShaDeg+118)
#define ActRemFolTchGrp (ActDowShaDeg+118) #define ActRemFolTchGrp (ActDowShaDeg+119)
#define ActCopTchGrp (ActDowShaDeg+119) #define ActCopTchGrp (ActDowShaDeg+120)
#define ActPasTchGrp (ActDowShaDeg+120) #define ActPasTchGrp (ActDowShaDeg+121)
#define ActRemTreTchGrp (ActDowShaDeg+121) #define ActRemTreTchGrp (ActDowShaDeg+122)
#define ActFrmCreTchGrp (ActDowShaDeg+122) #define ActFrmCreTchGrp (ActDowShaDeg+123)
#define ActCreFolTchGrp (ActDowShaDeg+123) #define ActCreFolTchGrp (ActDowShaDeg+124)
#define ActCreLnkTchGrp (ActDowShaDeg+124) #define ActCreLnkTchGrp (ActDowShaDeg+125)
#define ActRenFolTchGrp (ActDowShaDeg+125) #define ActRenFolTchGrp (ActDowShaDeg+126)
#define ActRcvFilTchGrpDZ (ActDowShaDeg+126) #define ActRcvFilTchGrpDZ (ActDowShaDeg+127)
#define ActRcvFilTchGrpCla (ActDowShaDeg+127) #define ActRcvFilTchGrpCla (ActDowShaDeg+128)
#define ActExpTchGrp (ActDowShaDeg+128) #define ActExpTchGrp (ActDowShaDeg+129)
#define ActConTchGrp (ActDowShaDeg+129) #define ActConTchGrp (ActDowShaDeg+130)
#define ActZIPTchGrp (ActDowShaDeg+130) #define ActZIPTchGrp (ActDowShaDeg+131)
#define ActReqDatTchGrp (ActDowShaDeg+131) #define ActReqDatTchGrp (ActDowShaDeg+132)
#define ActChgDatTchGrp (ActDowShaDeg+132) #define ActChgDatTchGrp (ActDowShaDeg+133)
#define ActDowTchGrp (ActDowShaDeg+133) #define ActDowTchGrp (ActDowShaDeg+134)
#define ActChgToAdmSha (ActDowShaDeg+134) #define ActChgToAdmSha (ActDowShaDeg+135)
#define ActAdmShaCrs (ActDowShaDeg+135) #define ActAdmShaCrs (ActDowShaDeg+136)
#define ActReqRemFilShaCrs (ActDowShaDeg+136) #define ActReqRemFilShaCrs (ActDowShaDeg+137)
#define ActRemFilShaCrs (ActDowShaDeg+137) #define ActRemFilShaCrs (ActDowShaDeg+138)
#define ActRemFolShaCrs (ActDowShaDeg+138) #define ActRemFolShaCrs (ActDowShaDeg+139)
#define ActCopShaCrs (ActDowShaDeg+139) #define ActCopShaCrs (ActDowShaDeg+140)
#define ActPasShaCrs (ActDowShaDeg+140) #define ActPasShaCrs (ActDowShaDeg+141)
#define ActRemTreShaCrs (ActDowShaDeg+141) #define ActRemTreShaCrs (ActDowShaDeg+142)
#define ActFrmCreShaCrs (ActDowShaDeg+142) #define ActFrmCreShaCrs (ActDowShaDeg+143)
#define ActCreFolShaCrs (ActDowShaDeg+143) #define ActCreFolShaCrs (ActDowShaDeg+144)
#define ActCreLnkShaCrs (ActDowShaDeg+144) #define ActCreLnkShaCrs (ActDowShaDeg+145)
#define ActRenFolShaCrs (ActDowShaDeg+145) #define ActRenFolShaCrs (ActDowShaDeg+146)
#define ActRcvFilShaCrsDZ (ActDowShaDeg+146) #define ActRcvFilShaCrsDZ (ActDowShaDeg+147)
#define ActRcvFilShaCrsCla (ActDowShaDeg+147) #define ActRcvFilShaCrsCla (ActDowShaDeg+148)
#define ActExpShaCrs (ActDowShaDeg+148) #define ActExpShaCrs (ActDowShaDeg+149)
#define ActConShaCrs (ActDowShaDeg+149) #define ActConShaCrs (ActDowShaDeg+150)
#define ActZIPShaCrs (ActDowShaDeg+150) #define ActZIPShaCrs (ActDowShaDeg+151)
#define ActReqDatShaCrs (ActDowShaDeg+151) #define ActReqDatShaCrs (ActDowShaDeg+152)
#define ActChgDatShaCrs (ActDowShaDeg+152) #define ActChgDatShaCrs (ActDowShaDeg+153)
#define ActDowShaCrs (ActDowShaDeg+153) #define ActDowShaCrs (ActDowShaDeg+154)
#define ActAdmShaGrp (ActDowShaDeg+154) #define ActAdmShaGrp (ActDowShaDeg+155)
#define ActReqRemFilShaGrp (ActDowShaDeg+155) #define ActReqRemFilShaGrp (ActDowShaDeg+156)
#define ActRemFilShaGrp (ActDowShaDeg+156) #define ActRemFilShaGrp (ActDowShaDeg+157)
#define ActRemFolShaGrp (ActDowShaDeg+157) #define ActRemFolShaGrp (ActDowShaDeg+158)
#define ActCopShaGrp (ActDowShaDeg+158) #define ActCopShaGrp (ActDowShaDeg+159)
#define ActPasShaGrp (ActDowShaDeg+159) #define ActPasShaGrp (ActDowShaDeg+160)
#define ActRemTreShaGrp (ActDowShaDeg+160) #define ActRemTreShaGrp (ActDowShaDeg+161)
#define ActFrmCreShaGrp (ActDowShaDeg+161) #define ActFrmCreShaGrp (ActDowShaDeg+162)
#define ActCreFolShaGrp (ActDowShaDeg+162) #define ActCreFolShaGrp (ActDowShaDeg+163)
#define ActCreLnkShaGrp (ActDowShaDeg+163) #define ActCreLnkShaGrp (ActDowShaDeg+164)
#define ActRenFolShaGrp (ActDowShaDeg+164) #define ActRenFolShaGrp (ActDowShaDeg+165)
#define ActRcvFilShaGrpDZ (ActDowShaDeg+165) #define ActRcvFilShaGrpDZ (ActDowShaDeg+166)
#define ActRcvFilShaGrpCla (ActDowShaDeg+166) #define ActRcvFilShaGrpCla (ActDowShaDeg+167)
#define ActExpShaGrp (ActDowShaDeg+167) #define ActExpShaGrp (ActDowShaDeg+168)
#define ActConShaGrp (ActDowShaDeg+168) #define ActConShaGrp (ActDowShaDeg+169)
#define ActZIPShaGrp (ActDowShaDeg+169) #define ActZIPShaGrp (ActDowShaDeg+170)
#define ActReqDatShaGrp (ActDowShaDeg+170) #define ActReqDatShaGrp (ActDowShaDeg+171)
#define ActChgDatShaGrp (ActDowShaDeg+171) #define ActChgDatShaGrp (ActDowShaDeg+172)
#define ActDowShaGrp (ActDowShaDeg+172) #define ActDowShaGrp (ActDowShaDeg+173)
#define ActEdiBib (ActDowShaDeg+173) #define ActEdiBib (ActDowShaDeg+174)
#define ActEdiFAQ (ActDowShaDeg+174) #define ActEdiFAQ (ActDowShaDeg+175)
#define ActEdiCrsLnk (ActDowShaDeg+175) #define ActEdiCrsLnk (ActDowShaDeg+176)
#define ActChgFrcReaCrsInf (ActDowShaDeg+176) #define ActChgFrcReaCrsInf (ActDowShaDeg+177)
#define ActChgFrcReaTchGui (ActDowShaDeg+177) #define ActChgFrcReaTchGui (ActDowShaDeg+178)
#define ActChgFrcReaSylLec (ActDowShaDeg+178) #define ActChgFrcReaSylLec (ActDowShaDeg+179)
#define ActChgFrcReaSylPra (ActDowShaDeg+179) #define ActChgFrcReaSylPra (ActDowShaDeg+180)
#define ActChgFrcReaBib (ActDowShaDeg+180) #define ActChgFrcReaBib (ActDowShaDeg+181)
#define ActChgFrcReaFAQ (ActDowShaDeg+181) #define ActChgFrcReaFAQ (ActDowShaDeg+182)
#define ActChgFrcReaCrsLnk (ActDowShaDeg+182) #define ActChgFrcReaCrsLnk (ActDowShaDeg+183)
#define ActChgHavReaCrsInf (ActDowShaDeg+183) #define ActChgHavReaCrsInf (ActDowShaDeg+184)
#define ActChgHavReaTchGui (ActDowShaDeg+184) #define ActChgHavReaTchGui (ActDowShaDeg+185)
#define ActChgHavReaSylLec (ActDowShaDeg+185) #define ActChgHavReaSylLec (ActDowShaDeg+186)
#define ActChgHavReaSylPra (ActDowShaDeg+186) #define ActChgHavReaSylPra (ActDowShaDeg+187)
#define ActChgHavReaBib (ActDowShaDeg+187) #define ActChgHavReaBib (ActDowShaDeg+188)
#define ActChgHavReaFAQ (ActDowShaDeg+188) #define ActChgHavReaFAQ (ActDowShaDeg+189)
#define ActChgHavReaCrsLnk (ActDowShaDeg+189) #define ActChgHavReaCrsLnk (ActDowShaDeg+190)
#define ActSelInfSrcCrsInf (ActDowShaDeg+190) #define ActSelInfSrcCrsInf (ActDowShaDeg+191)
#define ActSelInfSrcTchGui (ActDowShaDeg+191) #define ActSelInfSrcTchGui (ActDowShaDeg+192)
#define ActSelInfSrcSylLec (ActDowShaDeg+192) #define ActSelInfSrcSylLec (ActDowShaDeg+193)
#define ActSelInfSrcSylPra (ActDowShaDeg+193) #define ActSelInfSrcSylPra (ActDowShaDeg+194)
#define ActSelInfSrcBib (ActDowShaDeg+194) #define ActSelInfSrcBib (ActDowShaDeg+195)
#define ActSelInfSrcFAQ (ActDowShaDeg+195) #define ActSelInfSrcFAQ (ActDowShaDeg+196)
#define ActSelInfSrcCrsLnk (ActDowShaDeg+196) #define ActSelInfSrcCrsLnk (ActDowShaDeg+197)
#define ActRcvURLCrsInf (ActDowShaDeg+197) #define ActRcvURLCrsInf (ActDowShaDeg+198)
#define ActRcvURLTchGui (ActDowShaDeg+198) #define ActRcvURLTchGui (ActDowShaDeg+199)
#define ActRcvURLSylLec (ActDowShaDeg+199) #define ActRcvURLSylLec (ActDowShaDeg+200)
#define ActRcvURLSylPra (ActDowShaDeg+200) #define ActRcvURLSylPra (ActDowShaDeg+201)
#define ActRcvURLBib (ActDowShaDeg+201) #define ActRcvURLBib (ActDowShaDeg+202)
#define ActRcvURLFAQ (ActDowShaDeg+202) #define ActRcvURLFAQ (ActDowShaDeg+203)
#define ActRcvURLCrsLnk (ActDowShaDeg+203) #define ActRcvURLCrsLnk (ActDowShaDeg+204)
#define ActRcvPagCrsInf (ActDowShaDeg+204) #define ActRcvPagCrsInf (ActDowShaDeg+205)
#define ActRcvPagTchGui (ActDowShaDeg+205) #define ActRcvPagTchGui (ActDowShaDeg+206)
#define ActRcvPagSylLec (ActDowShaDeg+206) #define ActRcvPagSylLec (ActDowShaDeg+207)
#define ActRcvPagSylPra (ActDowShaDeg+207) #define ActRcvPagSylPra (ActDowShaDeg+208)
#define ActRcvPagBib (ActDowShaDeg+208) #define ActRcvPagBib (ActDowShaDeg+209)
#define ActRcvPagFAQ (ActDowShaDeg+209) #define ActRcvPagFAQ (ActDowShaDeg+210)
#define ActRcvPagCrsLnk (ActDowShaDeg+210) #define ActRcvPagCrsLnk (ActDowShaDeg+211)
#define ActEditorCrsInf (ActDowShaDeg+211) #define ActEditorCrsInf (ActDowShaDeg+212)
#define ActEditorTchGui (ActDowShaDeg+212) #define ActEditorTchGui (ActDowShaDeg+213)
#define ActEditorSylLec (ActDowShaDeg+213) #define ActEditorSylLec (ActDowShaDeg+214)
#define ActEditorSylPra (ActDowShaDeg+214) #define ActEditorSylPra (ActDowShaDeg+215)
#define ActEditorBib (ActDowShaDeg+215) #define ActEditorBib (ActDowShaDeg+216)
#define ActEditorFAQ (ActDowShaDeg+216) #define ActEditorFAQ (ActDowShaDeg+217)
#define ActEditorCrsLnk (ActDowShaDeg+217) #define ActEditorCrsLnk (ActDowShaDeg+218)
#define ActPlaTxtEdiCrsInf (ActDowShaDeg+218) #define ActPlaTxtEdiCrsInf (ActDowShaDeg+219)
#define ActPlaTxtEdiTchGui (ActDowShaDeg+219) #define ActPlaTxtEdiTchGui (ActDowShaDeg+220)
#define ActPlaTxtEdiSylLec (ActDowShaDeg+220) #define ActPlaTxtEdiSylLec (ActDowShaDeg+221)
#define ActPlaTxtEdiSylPra (ActDowShaDeg+221) #define ActPlaTxtEdiSylPra (ActDowShaDeg+222)
#define ActPlaTxtEdiBib (ActDowShaDeg+222) #define ActPlaTxtEdiBib (ActDowShaDeg+223)
#define ActPlaTxtEdiFAQ (ActDowShaDeg+223) #define ActPlaTxtEdiFAQ (ActDowShaDeg+224)
#define ActPlaTxtEdiCrsLnk (ActDowShaDeg+224) #define ActPlaTxtEdiCrsLnk (ActDowShaDeg+225)
#define ActRchTxtEdiCrsInf (ActDowShaDeg+225) #define ActRchTxtEdiCrsInf (ActDowShaDeg+226)
#define ActRchTxtEdiTchGui (ActDowShaDeg+226) #define ActRchTxtEdiTchGui (ActDowShaDeg+227)
#define ActRchTxtEdiSylLec (ActDowShaDeg+227) #define ActRchTxtEdiSylLec (ActDowShaDeg+228)
#define ActRchTxtEdiSylPra (ActDowShaDeg+228) #define ActRchTxtEdiSylPra (ActDowShaDeg+229)
#define ActRchTxtEdiBib (ActDowShaDeg+229) #define ActRchTxtEdiBib (ActDowShaDeg+230)
#define ActRchTxtEdiFAQ (ActDowShaDeg+230) #define ActRchTxtEdiFAQ (ActDowShaDeg+231)
#define ActRchTxtEdiCrsLnk (ActDowShaDeg+231) #define ActRchTxtEdiCrsLnk (ActDowShaDeg+232)
#define ActRcvPlaTxtCrsInf (ActDowShaDeg+232) #define ActRcvPlaTxtCrsInf (ActDowShaDeg+233)
#define ActRcvPlaTxtTchGui (ActDowShaDeg+233) #define ActRcvPlaTxtTchGui (ActDowShaDeg+234)
#define ActRcvPlaTxtSylLec (ActDowShaDeg+234) #define ActRcvPlaTxtSylLec (ActDowShaDeg+235)
#define ActRcvPlaTxtSylPra (ActDowShaDeg+235) #define ActRcvPlaTxtSylPra (ActDowShaDeg+236)
#define ActRcvPlaTxtBib (ActDowShaDeg+236) #define ActRcvPlaTxtBib (ActDowShaDeg+237)
#define ActRcvPlaTxtFAQ (ActDowShaDeg+237) #define ActRcvPlaTxtFAQ (ActDowShaDeg+238)
#define ActRcvPlaTxtCrsLnk (ActDowShaDeg+238) #define ActRcvPlaTxtCrsLnk (ActDowShaDeg+239)
#define ActRcvRchTxtCrsInf (ActDowShaDeg+239) #define ActRcvRchTxtCrsInf (ActDowShaDeg+240)
#define ActRcvRchTxtTchGui (ActDowShaDeg+240) #define ActRcvRchTxtTchGui (ActDowShaDeg+241)
#define ActRcvRchTxtSylLec (ActDowShaDeg+241) #define ActRcvRchTxtSylLec (ActDowShaDeg+242)
#define ActRcvRchTxtSylPra (ActDowShaDeg+242) #define ActRcvRchTxtSylPra (ActDowShaDeg+243)
#define ActRcvRchTxtBib (ActDowShaDeg+243) #define ActRcvRchTxtBib (ActDowShaDeg+244)
#define ActRcvRchTxtFAQ (ActDowShaDeg+244) #define ActRcvRchTxtFAQ (ActDowShaDeg+245)
#define ActRcvRchTxtCrsLnk (ActDowShaDeg+245) #define ActRcvRchTxtCrsLnk (ActDowShaDeg+246)
/*****************************************************************************/ /*****************************************************************************/
/***************************** Assessment tab ********************************/ /***************************** Assessment tab ********************************/

View File

@ -135,13 +135,20 @@
/****************************** Public constants *****************************/ /****************************** Public constants *****************************/
/*****************************************************************************/ /*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 15.222.6 (2016-06-11)" #define Log_PLATFORM_VERSION "SWAD 15.223 (2016-06-12)"
#define CSS_FILE "swad15.218.css" #define CSS_FILE "swad15.218.css"
#define JS_FILE "swad15.216.js" #define JS_FILE "swad15.216.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.223: Jun 12, 2016 New forms to change course configuration. (202268 lines)
4 changes necessary in database:
UPDATE actions SET Txt='Cambiar cód. institucional asignatura' WHERE ActCod='1024' AND Language='es';
UPDATE actions SET Txt='Cambiar cód. institucional asignatura' WHERE ActCod='1025' AND Language='es';
UPDATE actions SET Txt='Cambiar año/semestre asignatura' WHERE ActCod='561' AND Language='es';
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1573','es','N','Cambiar año/semestre asignatura');
Version 15.222.6: Jun 11, 2016 Fixed layout in students column in result of search of teachers. (202214 lines) Version 15.222.6: Jun 11, 2016 Fixed layout in students column in result of search of teachers. (202214 lines)
Version 15.222.5: Jun 10, 2016 Indicators of a course are always calculated and stored in course configuration. (202214 lines) Version 15.222.5: Jun 10, 2016 Indicators of a course are always calculated and stored in course configuration. (202214 lines)
Version 15.222.4: Jun 09, 2016 Code refactoring in indicators. (202208 lines) Version 15.222.4: Jun 09, 2016 Code refactoring in indicators. (202208 lines)

View File

@ -95,6 +95,9 @@ static void Crs_GetParamsNewCourse (struct Course *Crs);
static bool Crs_CheckIfCourseNameExistsInCourses (long DegCod,unsigned Year,const char *FieldName,const char *Name,long CrsCod); static bool Crs_CheckIfCourseNameExistsInCourses (long DegCod,unsigned Year,const char *FieldName,const char *Name,long CrsCod);
static void Crs_CreateCourse (struct Course *Crs,unsigned Status); static void Crs_CreateCourse (struct Course *Crs,unsigned Status);
static void Crs_GetDataOfCourseFromRow (struct Course *Crs,MYSQL_ROW row); static void Crs_GetDataOfCourseFromRow (struct Course *Crs,MYSQL_ROW row);
static void Crs_UpdateCrsYear (struct Course *Crs,unsigned NewYear);
static void Crs_EmptyCourseCompletely (long CrsCod); static void Crs_EmptyCourseCompletely (long CrsCod);
static bool Crs_RenameCourse (struct Course *Crs,Cns_ShortOrFullName_t ShortOrFullName); static bool Crs_RenameCourse (struct Course *Crs,Cns_ShortOrFullName_t ShortOrFullName);
static void Crs_PutButtonToGoToCrs (struct Course *Crs); static void Crs_PutButtonToGoToCrs (struct Course *Crs);
@ -141,7 +144,7 @@ void Crs_PrintConfiguration (void)
static void Crs_Configuration (bool PrintView) static void Crs_Configuration (bool PrintView)
{ {
extern struct Act_Actions Act_Actions[Act_NUM_ACTIONS]; // extern struct Act_Actions Act_Actions[Act_NUM_ACTIONS];
extern const char *The_ClassForm[The_NUM_THEMES]; extern const char *The_ClassForm[The_NUM_THEMES];
extern const char *Txt_Course; extern const char *Txt_Course;
extern const char *Txt_Short_name; extern const char *Txt_Short_name;
@ -156,7 +159,6 @@ static void Crs_Configuration (bool PrintView)
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS]; extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_Indicators; extern const char *Txt_Indicators;
extern const char *Txt_of_PART_OF_A_TOTAL; extern const char *Txt_of_PART_OF_A_TOTAL;
extern const char *Txt_Save;
unsigned Year; unsigned Year;
int NumIndicatorsFromDB; int NumIndicatorsFromDB;
struct Ind_IndicatorsCrs Indicators; struct Ind_IndicatorsCrs Indicators;
@ -195,10 +197,6 @@ static void Crs_Configuration (bool PrintView)
"</div>", "</div>",
Gbl.CurrentCrs.Crs.FullName); Gbl.CurrentCrs.Crs.FullName);
/***** Start form *****/
if (IsForm)
Act_FormStart (ActChgCrsLog);
/***** Start table *****/ /***** Start table *****/
fprintf (Gbl.F.Out,"<table class=\"FRAME_TABLE CELLS_PAD_2\">"); fprintf (Gbl.F.Out,"<table class=\"FRAME_TABLE CELLS_PAD_2\">");
@ -238,7 +236,10 @@ static void Crs_Configuration (bool PrintView)
Txt_Year_OF_A_DEGREE); Txt_Year_OF_A_DEGREE);
if (IsForm) if (IsForm)
{ {
fprintf (Gbl.F.Out,"<select name=\"OthCrsYear\">"); Act_FormStart (ActChgCrsYeaCfg);
fprintf (Gbl.F.Out,"<select name=\"OthCrsYear\""
" onchange=\"document.getElementById('%s').submit();\">",
Gbl.Form.Id);
for (Year = 0; for (Year = 0;
Year <= Deg_MAX_YEARS_PER_DEGREE; Year <= Deg_MAX_YEARS_PER_DEGREE;
Year++) Year++)
@ -248,6 +249,7 @@ static void Crs_Configuration (bool PrintView)
"", "",
Txt_YEAR_OF_DEGREE[Year]); Txt_YEAR_OF_DEGREE[Year]);
fprintf (Gbl.F.Out,"</select>"); fprintf (Gbl.F.Out,"</select>");
Act_FormEnd ();
} }
else else
fprintf (Gbl.F.Out,"%s", fprintf (Gbl.F.Out,"%s",
@ -267,11 +269,17 @@ static void Crs_Configuration (bool PrintView)
The_ClassForm[Gbl.Prefs.Theme], The_ClassForm[Gbl.Prefs.Theme],
Txt_Institutional_code); Txt_Institutional_code);
if (IsForm) if (IsForm)
{
Act_FormStart (ActChgInsCrsCodCfg);
fprintf (Gbl.F.Out,"<input type=\"text\" name=\"InsCrsCod\"" fprintf (Gbl.F.Out,"<input type=\"text\" name=\"InsCrsCod\""
" size=\"%u\" maxlength=\"%u\" value=\"%s\" />", " size=\"%u\" maxlength=\"%u\" value=\"%s\""
" onchange=\"document.getElementById('%s').submit();\" />",
Crs_LENGTH_INSTITUTIONAL_CRS_COD, Crs_LENGTH_INSTITUTIONAL_CRS_COD,
Crs_LENGTH_INSTITUTIONAL_CRS_COD, Crs_LENGTH_INSTITUTIONAL_CRS_COD,
Gbl.CurrentCrs.Crs.InstitutionalCrsCod); Gbl.CurrentCrs.Crs.InstitutionalCrsCod,
Gbl.Form.Id);
Act_FormEnd ();
}
else else
fprintf (Gbl.F.Out,"%s",Gbl.CurrentCrs.Crs.InstitutionalCrsCod); fprintf (Gbl.F.Out,"%s",Gbl.CurrentCrs.Crs.InstitutionalCrsCod);
fprintf (Gbl.F.Out,"</td>" fprintf (Gbl.F.Out,"</td>"
@ -358,36 +366,29 @@ static void Crs_Configuration (bool PrintView)
"<td class=\"%s RIGHT_MIDDLE\">" "<td class=\"%s RIGHT_MIDDLE\">"
"%s:" "%s:"
"</td>" "</td>"
"<td class=\"DAT LEFT_MIDDLE\">" "<td class=\"LEFT_MIDDLE\">",
"<a href=\"%s/?crs=%ld&amp;act=%ld\" target=\"_blank\" class=\"DAT\">"
"%u %s %u "
"<img src=\"%s/%s16x16.gif\""
" alt=\"%u %s %u\" title=\"%u %s %u\""
" class=\"ICON20x20\" />"
"</a>"
"</td>"
"</tr>",
The_ClassForm[Gbl.Prefs.Theme], The_ClassForm[Gbl.Prefs.Theme],
Txt_Indicators, Txt_Indicators);
Cfg_HTTPS_URL_SWAD_CGI,Gbl.CurrentCrs.Crs.CrsCod,Act_Actions[ActReqStaCrs].ActCod, Act_FormStart (ActReqStaCrs);
Indicators.NumIndicators,Txt_of_PART_OF_A_TOTAL,Ind_NUM_INDICATORS, sprintf (Gbl.Title,"%u %s %u",
Indicators.NumIndicators,Txt_of_PART_OF_A_TOTAL,Ind_NUM_INDICATORS);
Act_LinkFormSubmit (Gbl.Title,"DAT");
fprintf (Gbl.F.Out,"%s "
"<img src=\"%s/%s16x16.gif\" alt=\"%s\""
" class=\"ICON20x20\" />",
Gbl.Title,
Gbl.Prefs.IconsURL, Gbl.Prefs.IconsURL,
(Indicators.NumIndicators == Ind_NUM_INDICATORS) ? "ok_green" : (Indicators.NumIndicators == Ind_NUM_INDICATORS) ? "ok_green" :
"warning", "warning",
Indicators.NumIndicators,Txt_of_PART_OF_A_TOTAL,Ind_NUM_INDICATORS, Gbl.Title);
Indicators.NumIndicators,Txt_of_PART_OF_A_TOTAL,Ind_NUM_INDICATORS); Act_FormEnd ();
fprintf (Gbl.F.Out,"</td>"
"</tr>");
} }
/***** End table *****/ /***** End table *****/
fprintf (Gbl.F.Out,"</table>"); fprintf (Gbl.F.Out,"</table>");
/***** Send button and end form *****/
if (IsForm)
{
Lay_PutConfirmButton (Txt_Save);
Act_FormEnd ();
}
/***** End frame *****/ /***** End frame *****/
Lay_EndRoundFrame (); Lay_EndRoundFrame ();
} }
@ -403,41 +404,6 @@ static void Crs_PutIconToPrint (void)
Lay_PutContextualLink (ActPrnCrsInf,NULL,"print64x64.png",Txt_Print,NULL); Lay_PutContextualLink (ActPrnCrsInf,NULL,"print64x64.png",Txt_Print,NULL);
} }
/*****************************************************************************/
/******************** Change the configuration of a course *******************/
/*****************************************************************************/
void Crs_ChangeCourseConfig (void)
{
extern const char *Txt_The_configuration_of_the_course_X_has_been_updated;
char Query[512];
char YearStr[2+1];
/***** Get parameters from form *****/
/* Get institutional code */
Par_GetParToText ("InsCrsCod",Gbl.CurrentCrs.Crs.InstitutionalCrsCod,Crs_LENGTH_INSTITUTIONAL_CRS_COD);
/* Get year */
Par_GetParToText ("OthCrsYear",YearStr,2);
Gbl.CurrentCrs.Crs.Year = Deg_ConvStrToYear (YearStr);
/***** Update table of degree types *****/
sprintf (Query,"UPDATE courses SET InsCrsCod='%s',Year='%u'"
" WHERE CrsCod='%ld'",
Gbl.CurrentCrs.Crs.InstitutionalCrsCod,
Gbl.CurrentCrs.Crs.Year,
Gbl.CurrentCrs.Crs.CrsCod);
DB_QueryUPDATE (Query,"can not update the configuration of a course");
/***** Write message to show the change made *****/
sprintf (Gbl.Message,Txt_The_configuration_of_the_course_X_has_been_updated,
Gbl.CurrentCrs.Crs.ShortName);
Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
/***** Show the form again *****/
Crs_ShowIntroduction ();
}
/*****************************************************************************/ /*****************************************************************************/
/************************ Write menu with my courses *************************/ /************************ Write menu with my courses *************************/
/*****************************************************************************/ /*****************************************************************************/
@ -738,6 +704,21 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
Lay_EndRoundFrame (); Lay_EndRoundFrame ();
} }
/*****************************************************************************/
/** Show message of success after changing a course in course configuration **/
/*****************************************************************************/
void Crs_ContEditAfterChgCrsInConfig (void)
{
/***** Write error/success message *****/
Lay_ShowAlert (Gbl.Error ? Lay_WARNING :
Lay_SUCCESS,
Gbl.Message);
/***** Show the form again *****/
Crs_ShowIntroduction ();
}
/*****************************************************************************/ /*****************************************************************************/
/*********************** Get total number of courses *************************/ /*********************** Get total number of courses *************************/
/*****************************************************************************/ /*****************************************************************************/
@ -2291,6 +2272,33 @@ static void Crs_EmptyCourseCompletely (long CrsCod)
Brw_RemoveTree (PathRelCrs); Brw_RemoveTree (PathRelCrs);
} }
/*****************************************************************************/
/***** Change the institutional code of a course in course configuration *****/
/*****************************************************************************/
void Crs_ChangeInsCrsCodInConfig (void)
{
extern const char *Txt_The_institutional_code_of_the_course_X_has_changed_to_Y;
extern const char *Txt_The_institutional_code_of_the_course_X_has_not_changed;
extern const char *Txt_You_dont_have_permission_to_edit_this_course;
char NewInstitutionalCrsCod[Crs_LENGTH_INSTITUTIONAL_CRS_COD+1];
/***** Get institutional code from form *****/
Par_GetParToText ("InsCrsCod",NewInstitutionalCrsCod,Crs_LENGTH_INSTITUTIONAL_CRS_COD);
/***** Change the institutional course code *****/
if (strcmp (NewInstitutionalCrsCod,Gbl.CurrentCrs.Crs.InstitutionalCrsCod))
{
Crs_UpdateInstitutionalCrsCod (&Gbl.CurrentCrs.Crs,NewInstitutionalCrsCod);
sprintf (Gbl.Message,Txt_The_institutional_code_of_the_course_X_has_changed_to_Y,
Gbl.CurrentCrs.Crs.ShortName,NewInstitutionalCrsCod);
}
else // The same institutional code
sprintf (Gbl.Message,Txt_The_institutional_code_of_the_course_X_has_not_changed,
Gbl.CurrentCrs.Crs.ShortName);
}
/*****************************************************************************/ /*****************************************************************************/
/************** Change the institutional code of a course ********************/ /************** Change the institutional code of a course ********************/
/*****************************************************************************/ /*****************************************************************************/
@ -2423,6 +2431,55 @@ void Crs_ChangeCrsDegree (void)
} }
} }
/*****************************************************************************/
/*********** Change the year of a course in course configuration *************/
/*****************************************************************************/
void Crs_ChangeCrsYearInConfig (void)
{
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_The_year_of_the_course_X_has_changed;
extern const char *Txt_The_year_X_is_not_allowed;
char YearStr[2+1];
unsigned NewYear;
/***** Get parameter with year/semester *****/
Par_GetParToText ("OthCrsYear",YearStr,2);
NewYear = Deg_ConvStrToYear (YearStr);
if (NewYear <= Deg_MAX_YEARS_PER_DEGREE) // If year is valid
{
/***** If name of course was in database in the new year... *****/
if (Crs_CheckIfCourseNameExistsInCourses (Gbl.CurrentCrs.Crs.DegCod,NewYear,"ShortName",Gbl.CurrentCrs.Crs.ShortName,-1L))
{
sprintf (Gbl.Message,Txt_The_course_X_already_exists_in_year_Y,
Gbl.CurrentCrs.Crs.ShortName,Txt_YEAR_OF_DEGREE[NewYear]);
Gbl.Error = true;
}
else if (Crs_CheckIfCourseNameExistsInCourses (Gbl.CurrentCrs.Crs.DegCod,NewYear,"FullName",Gbl.CurrentCrs.Crs.FullName,-1L))
{
sprintf (Gbl.Message,Txt_The_course_X_already_exists_in_year_Y,
Gbl.CurrentCrs.Crs.FullName,Txt_YEAR_OF_DEGREE[NewYear]);
Gbl.Error = true;
}
else // Update year in database
{
/***** Update year in table of courses *****/
Crs_UpdateCrsYear (&Gbl.CurrentCrs.Crs,NewYear);
/***** Create message to show the change made *****/
sprintf (Gbl.Message,Txt_The_year_of_the_course_X_has_changed,
Gbl.CurrentCrs.Crs.ShortName);
}
}
else // Year not valid
{
sprintf (Gbl.Message,Txt_The_year_X_is_not_allowed,NewYear);
Gbl.Error = true;
}
}
/*****************************************************************************/ /*****************************************************************************/
/************************ Change the year of a course ************************/ /************************ Change the year of a course ************************/
/*****************************************************************************/ /*****************************************************************************/
@ -2436,7 +2493,6 @@ void Crs_ChangeCrsYear (void)
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;
char Query[512];
char YearStr[2+1]; char YearStr[2+1];
unsigned NewYear; unsigned NewYear;
@ -2476,11 +2532,7 @@ void Crs_ChangeCrsYear (void)
else // Update year in database else // Update year in database
{ {
/***** Update year in table of courses *****/ /***** Update year in table of courses *****/
sprintf (Query,"UPDATE courses SET Year='%u' WHERE CrsCod='%ld'", Crs_UpdateCrsYear (Crs,NewYear);
NewYear,Crs->CrsCod);
DB_QueryUPDATE (Query,"can not update the year of a course");
Crs->Year = NewYear;
/***** Create message to show the change made *****/ /***** Create message to show the change made *****/
sprintf (Gbl.Message,Txt_The_year_of_the_course_X_has_changed, sprintf (Gbl.Message,Txt_The_year_of_the_course_X_has_changed,
@ -2500,6 +2552,23 @@ void Crs_ChangeCrsYear (void)
} }
} }
/*****************************************************************************/
/****************** Change the year/semester of a course *********************/
/*****************************************************************************/
static void Crs_UpdateCrsYear (struct Course *Crs,unsigned NewYear)
{
char Query[128];
/***** Update year/semester in table of courses *****/
sprintf (Query,"UPDATE courses SET Year='%u' WHERE CrsCod='%ld'",
NewYear,Gbl.CurrentCrs.Crs.CrsCod);
DB_QueryUPDATE (Query,"can not update the year of a course");
/***** Copy couese year/semester *****/
Crs->Year = NewYear;
}
/*****************************************************************************/ /*****************************************************************************/
/************* Change the institutional course code of a course **************/ /************* Change the institutional course code of a course **************/
/*****************************************************************************/ /*****************************************************************************/

View File

@ -93,7 +93,7 @@ struct Course
void Crs_ShowIntroduction (void); void Crs_ShowIntroduction (void);
void Crs_PrintConfiguration (void); void Crs_PrintConfiguration (void);
void Crs_ChangeCourseConfig (void); void Crs_ContEditAfterChgCrsInConfig (void);
unsigned Crs_GetNumCrssTotal (void); unsigned Crs_GetNumCrssTotal (void);
unsigned Crs_GetNumCrssInCty (long CtyCod); unsigned Crs_GetNumCrssInCty (long CtyCod);
@ -116,8 +116,10 @@ void Crs_RemoveCourse (void);
bool Crs_GetDataOfCourseByCod (struct Course *Crs); bool Crs_GetDataOfCourseByCod (struct Course *Crs);
void Crs_GetShortNamesByCod (long CrsCod,char *CrsShortName,char *DegShortName); void Crs_GetShortNamesByCod (long CrsCod,char *CrsShortName,char *DegShortName);
void Crs_RemoveCourseCompletely (long CrsCod); void Crs_RemoveCourseCompletely (long CrsCod);
void Crs_ChangeInsCrsCodInConfig (void);
void Crs_ChangeInsCrsCod (void); void Crs_ChangeInsCrsCod (void);
void Crs_ChangeCrsDegree (void); void Crs_ChangeCrsDegree (void);
void Crs_ChangeCrsYearInConfig (void);
void Crs_ChangeCrsYear (void); void Crs_ChangeCrsYear (void);
void Crs_UpdateInstitutionalCrsCod (struct Course *Crs,const char *NewInstitutionalCrsCod); void Crs_UpdateInstitutionalCrsCod (struct Course *Crs,const char *NewInstitutionalCrsCod);
void Crs_RenameCourseShort (void); void Crs_RenameCourseShort (void);

View File

@ -41199,27 +41199,6 @@ const char *Txt_The_centre_X_has_been_renamed_as_Y = // Warning: it is very impo
"The centre <strong>%s</strong> has been renamed as <strong>%s</strong>."; // Necessita de tradução "The centre <strong>%s</strong> has been renamed as <strong>%s</strong>."; // Necessita de tradução
#endif #endif
const char *Txt_The_configuration_of_the_course_X_has_been_updated = // Warning: it is very important to include %s in the following sentences
#if L==1
"La configuraci&oacute;n de la asignatura <strong>%s</strong> se ha actualizado."; // Necessita traduccio
#elif L==2
"The configuration of the course <strong>%s</strong> has been updated."; // Need Übersetzung
#elif L==3
"The configuration of the course <strong>%s</strong> has been updated.";
#elif L==4
"La configuraci&oacute;n de la asignatura <strong>%s</strong> se ha actualizado.";
#elif L==5
"The configuration of the course <strong>%s</strong> has been updated."; // Besoin de traduction
#elif L==6
"La configuraci&oacute;n de la asignatura <strong>%s</strong> se ha actualizado."; // Okoteve traducción
#elif L==7
"La configurazione del corso <strong>%s</strong> &egrave; stata aggiornata.";
#elif L==8
"The configuration of the course <strong>%s</strong> has been updated."; // Potrzebujesz tlumaczenie
#elif L==9
"The configuration of the course <strong>%s</strong> has been updated."; // Necessita de tradução
#endif
const char *Txt_The_contents_of_the_folder_are_too_big = const char *Txt_The_contents_of_the_folder_are_too_big =
#if L==1 #if L==1
"El contingut de la carpeta &eacute;s massa gran."; "El contingut de la carpeta &eacute;s massa gran.";