mirror of
https://github.com/acanas/swad-core.git
synced 2024-06-10 10:45:23 +02:00
Version 22.15: Sep 21, 2022 Links to assignments in program.
This commit is contained in:
parent
36bf68b87d
commit
a7608da596
|
@ -602,6 +602,7 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
||||||
[ActRemAsg ] = { 806,-1,TabUnk,ActSeeAsg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Asg_RemoveAssignment ,NULL},
|
[ActRemAsg ] = { 806,-1,TabUnk,ActSeeAsg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Asg_RemoveAssignment ,NULL},
|
||||||
[ActHidAsg ] = { 964,-1,TabUnk,ActSeeAsg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Asg_HideAssignment ,NULL},
|
[ActHidAsg ] = { 964,-1,TabUnk,ActSeeAsg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Asg_HideAssignment ,NULL},
|
||||||
[ActUnhAsg ] = { 965,-1,TabUnk,ActSeeAsg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Asg_UnhideAssignment ,NULL},
|
[ActUnhAsg ] = { 965,-1,TabUnk,ActSeeAsg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Asg_UnhideAssignment ,NULL},
|
||||||
|
[ActReqLnkAsg ] = {1943,-1,TabUnk,ActSeeAsg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Asg_GetLinkToAssignment ,NULL},
|
||||||
|
|
||||||
[ActReqUsrPrj ] = {1805,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ListUsrsToSelect ,NULL},
|
[ActReqUsrPrj ] = {1805,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ListUsrsToSelect ,NULL},
|
||||||
[ActSeeTblAllPrj ] = {1696,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Prj_ShowTableSelectedPrjs ,NULL},
|
[ActSeeTblAllPrj ] = {1696,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Prj_ShowTableSelectedPrjs ,NULL},
|
||||||
|
@ -3796,6 +3797,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
|
||||||
ActReqLnkAdmMrkCrs, // #1940
|
ActReqLnkAdmMrkCrs, // #1940
|
||||||
ActReqLnkForCrsUsr, // #1941
|
ActReqLnkForCrsUsr, // #1941
|
||||||
ActSeeOneAsg, // #1942
|
ActSeeOneAsg, // #1942
|
||||||
|
ActReqLnkAsg, // #1943
|
||||||
};
|
};
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
431
swad_action.h
431
swad_action.h
|
@ -65,7 +65,7 @@ typedef enum
|
||||||
|
|
||||||
typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
|
typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
|
||||||
|
|
||||||
#define Act_MAX_ACTION_COD 1942
|
#define Act_MAX_ACTION_COD 1943
|
||||||
|
|
||||||
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 13
|
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 13
|
||||||
|
|
||||||
|
@ -561,244 +561,245 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
|
||||||
#define ActRemAsg (ActChgCrsTT1stDay + 28)
|
#define ActRemAsg (ActChgCrsTT1stDay + 28)
|
||||||
#define ActHidAsg (ActChgCrsTT1stDay + 29)
|
#define ActHidAsg (ActChgCrsTT1stDay + 29)
|
||||||
#define ActUnhAsg (ActChgCrsTT1stDay + 30)
|
#define ActUnhAsg (ActChgCrsTT1stDay + 30)
|
||||||
|
#define ActReqLnkAsg (ActChgCrsTT1stDay + 31)
|
||||||
|
|
||||||
#define ActReqUsrPrj (ActChgCrsTT1stDay + 31)
|
#define ActReqUsrPrj (ActChgCrsTT1stDay + 32)
|
||||||
#define ActSeeTblAllPrj (ActChgCrsTT1stDay + 32)
|
#define ActSeeTblAllPrj (ActChgCrsTT1stDay + 33)
|
||||||
#define ActCfgPrj (ActChgCrsTT1stDay + 33)
|
#define ActCfgPrj (ActChgCrsTT1stDay + 34)
|
||||||
#define ActRcvCfgPrj (ActChgCrsTT1stDay + 34)
|
#define ActRcvCfgPrj (ActChgCrsTT1stDay + 35)
|
||||||
#define ActReqLckAllPrj (ActChgCrsTT1stDay + 35)
|
#define ActReqLckAllPrj (ActChgCrsTT1stDay + 36)
|
||||||
#define ActReqUnlAllPrj (ActChgCrsTT1stDay + 36)
|
#define ActReqUnlAllPrj (ActChgCrsTT1stDay + 37)
|
||||||
#define ActLckAllPrj (ActChgCrsTT1stDay + 37)
|
#define ActLckAllPrj (ActChgCrsTT1stDay + 38)
|
||||||
#define ActUnlAllPrj (ActChgCrsTT1stDay + 38)
|
#define ActUnlAllPrj (ActChgCrsTT1stDay + 39)
|
||||||
#define ActFrmNewPrj (ActChgCrsTT1stDay + 39)
|
#define ActFrmNewPrj (ActChgCrsTT1stDay + 40)
|
||||||
#define ActEdiOnePrj (ActChgCrsTT1stDay + 40)
|
#define ActEdiOnePrj (ActChgCrsTT1stDay + 41)
|
||||||
#define ActPrnOnePrj (ActChgCrsTT1stDay + 41)
|
#define ActPrnOnePrj (ActChgCrsTT1stDay + 42)
|
||||||
#define ActNewPrj (ActChgCrsTT1stDay + 42)
|
#define ActNewPrj (ActChgCrsTT1stDay + 43)
|
||||||
#define ActChgPrj (ActChgCrsTT1stDay + 43)
|
#define ActChgPrj (ActChgCrsTT1stDay + 44)
|
||||||
#define ActReqRemPrj (ActChgCrsTT1stDay + 44)
|
#define ActReqRemPrj (ActChgCrsTT1stDay + 45)
|
||||||
#define ActRemPrj (ActChgCrsTT1stDay + 45)
|
#define ActRemPrj (ActChgCrsTT1stDay + 46)
|
||||||
#define ActHidPrj (ActChgCrsTT1stDay + 46)
|
#define ActHidPrj (ActChgCrsTT1stDay + 47)
|
||||||
#define ActUnhPrj (ActChgCrsTT1stDay + 47)
|
#define ActUnhPrj (ActChgCrsTT1stDay + 48)
|
||||||
#define ActLckPrj (ActChgCrsTT1stDay + 48)
|
#define ActLckPrj (ActChgCrsTT1stDay + 49)
|
||||||
#define ActUnlPrj (ActChgCrsTT1stDay + 49)
|
#define ActUnlPrj (ActChgCrsTT1stDay + 50)
|
||||||
#define ActReqAddStdPrj (ActChgCrsTT1stDay + 50)
|
#define ActReqAddStdPrj (ActChgCrsTT1stDay + 51)
|
||||||
#define ActReqAddTutPrj (ActChgCrsTT1stDay + 51)
|
#define ActReqAddTutPrj (ActChgCrsTT1stDay + 52)
|
||||||
#define ActReqAddEvlPrj (ActChgCrsTT1stDay + 52)
|
#define ActReqAddEvlPrj (ActChgCrsTT1stDay + 53)
|
||||||
#define ActAddStdPrj (ActChgCrsTT1stDay + 53)
|
#define ActAddStdPrj (ActChgCrsTT1stDay + 54)
|
||||||
#define ActAddTutPrj (ActChgCrsTT1stDay + 54)
|
#define ActAddTutPrj (ActChgCrsTT1stDay + 55)
|
||||||
#define ActAddEvlPrj (ActChgCrsTT1stDay + 55)
|
#define ActAddEvlPrj (ActChgCrsTT1stDay + 56)
|
||||||
#define ActReqRemStdPrj (ActChgCrsTT1stDay + 56)
|
#define ActReqRemStdPrj (ActChgCrsTT1stDay + 57)
|
||||||
#define ActReqRemTutPrj (ActChgCrsTT1stDay + 57)
|
#define ActReqRemTutPrj (ActChgCrsTT1stDay + 58)
|
||||||
#define ActReqRemEvlPrj (ActChgCrsTT1stDay + 58)
|
#define ActReqRemEvlPrj (ActChgCrsTT1stDay + 59)
|
||||||
#define ActRemStdPrj (ActChgCrsTT1stDay + 59)
|
#define ActRemStdPrj (ActChgCrsTT1stDay + 60)
|
||||||
#define ActRemTutPrj (ActChgCrsTT1stDay + 60)
|
#define ActRemTutPrj (ActChgCrsTT1stDay + 61)
|
||||||
#define ActRemEvlPrj (ActChgCrsTT1stDay + 61)
|
#define ActRemEvlPrj (ActChgCrsTT1stDay + 62)
|
||||||
|
|
||||||
#define ActAdmDocPrj (ActChgCrsTT1stDay + 62)
|
#define ActAdmDocPrj (ActChgCrsTT1stDay + 63)
|
||||||
#define ActReqRemFilDocPrj (ActChgCrsTT1stDay + 63)
|
#define ActReqRemFilDocPrj (ActChgCrsTT1stDay + 64)
|
||||||
#define ActRemFilDocPrj (ActChgCrsTT1stDay + 64)
|
#define ActRemFilDocPrj (ActChgCrsTT1stDay + 65)
|
||||||
#define ActRemFolDocPrj (ActChgCrsTT1stDay + 65)
|
#define ActRemFolDocPrj (ActChgCrsTT1stDay + 66)
|
||||||
#define ActCopDocPrj (ActChgCrsTT1stDay + 66)
|
#define ActCopDocPrj (ActChgCrsTT1stDay + 67)
|
||||||
#define ActPasDocPrj (ActChgCrsTT1stDay + 67)
|
#define ActPasDocPrj (ActChgCrsTT1stDay + 68)
|
||||||
#define ActRemTreDocPrj (ActChgCrsTT1stDay + 68)
|
#define ActRemTreDocPrj (ActChgCrsTT1stDay + 69)
|
||||||
#define ActFrmCreDocPrj (ActChgCrsTT1stDay + 69)
|
#define ActFrmCreDocPrj (ActChgCrsTT1stDay + 70)
|
||||||
#define ActCreFolDocPrj (ActChgCrsTT1stDay + 70)
|
#define ActCreFolDocPrj (ActChgCrsTT1stDay + 71)
|
||||||
#define ActCreLnkDocPrj (ActChgCrsTT1stDay + 71)
|
#define ActCreLnkDocPrj (ActChgCrsTT1stDay + 72)
|
||||||
#define ActRenFolDocPrj (ActChgCrsTT1stDay + 72)
|
#define ActRenFolDocPrj (ActChgCrsTT1stDay + 73)
|
||||||
#define ActRcvFilDocPrjDZ (ActChgCrsTT1stDay + 73)
|
#define ActRcvFilDocPrjDZ (ActChgCrsTT1stDay + 74)
|
||||||
#define ActRcvFilDocPrjCla (ActChgCrsTT1stDay + 74)
|
#define ActRcvFilDocPrjCla (ActChgCrsTT1stDay + 75)
|
||||||
#define ActExpDocPrj (ActChgCrsTT1stDay + 75)
|
#define ActExpDocPrj (ActChgCrsTT1stDay + 76)
|
||||||
#define ActConDocPrj (ActChgCrsTT1stDay + 76)
|
#define ActConDocPrj (ActChgCrsTT1stDay + 77)
|
||||||
#define ActZIPDocPrj (ActChgCrsTT1stDay + 77)
|
#define ActZIPDocPrj (ActChgCrsTT1stDay + 78)
|
||||||
#define ActReqDatDocPrj (ActChgCrsTT1stDay + 78)
|
#define ActReqDatDocPrj (ActChgCrsTT1stDay + 79)
|
||||||
#define ActChgDatDocPrj (ActChgCrsTT1stDay + 79)
|
#define ActChgDatDocPrj (ActChgCrsTT1stDay + 80)
|
||||||
#define ActDowDocPrj (ActChgCrsTT1stDay + 80)
|
#define ActDowDocPrj (ActChgCrsTT1stDay + 81)
|
||||||
|
|
||||||
#define ActAdmAssPrj (ActChgCrsTT1stDay + 81)
|
#define ActAdmAssPrj (ActChgCrsTT1stDay + 82)
|
||||||
#define ActReqRemFilAssPrj (ActChgCrsTT1stDay + 82)
|
#define ActReqRemFilAssPrj (ActChgCrsTT1stDay + 83)
|
||||||
#define ActRemFilAssPrj (ActChgCrsTT1stDay + 83)
|
#define ActRemFilAssPrj (ActChgCrsTT1stDay + 84)
|
||||||
#define ActRemFolAssPrj (ActChgCrsTT1stDay + 84)
|
#define ActRemFolAssPrj (ActChgCrsTT1stDay + 85)
|
||||||
#define ActCopAssPrj (ActChgCrsTT1stDay + 85)
|
#define ActCopAssPrj (ActChgCrsTT1stDay + 86)
|
||||||
#define ActPasAssPrj (ActChgCrsTT1stDay + 86)
|
#define ActPasAssPrj (ActChgCrsTT1stDay + 87)
|
||||||
#define ActRemTreAssPrj (ActChgCrsTT1stDay + 87)
|
#define ActRemTreAssPrj (ActChgCrsTT1stDay + 88)
|
||||||
#define ActFrmCreAssPrj (ActChgCrsTT1stDay + 88)
|
#define ActFrmCreAssPrj (ActChgCrsTT1stDay + 89)
|
||||||
#define ActCreFolAssPrj (ActChgCrsTT1stDay + 89)
|
#define ActCreFolAssPrj (ActChgCrsTT1stDay + 90)
|
||||||
#define ActCreLnkAssPrj (ActChgCrsTT1stDay + 90)
|
#define ActCreLnkAssPrj (ActChgCrsTT1stDay + 91)
|
||||||
#define ActRenFolAssPrj (ActChgCrsTT1stDay + 91)
|
#define ActRenFolAssPrj (ActChgCrsTT1stDay + 92)
|
||||||
#define ActRcvFilAssPrjDZ (ActChgCrsTT1stDay + 92)
|
#define ActRcvFilAssPrjDZ (ActChgCrsTT1stDay + 93)
|
||||||
#define ActRcvFilAssPrjCla (ActChgCrsTT1stDay + 93)
|
#define ActRcvFilAssPrjCla (ActChgCrsTT1stDay + 94)
|
||||||
#define ActExpAssPrj (ActChgCrsTT1stDay + 94)
|
#define ActExpAssPrj (ActChgCrsTT1stDay + 95)
|
||||||
#define ActConAssPrj (ActChgCrsTT1stDay + 95)
|
#define ActConAssPrj (ActChgCrsTT1stDay + 96)
|
||||||
#define ActZIPAssPrj (ActChgCrsTT1stDay + 96)
|
#define ActZIPAssPrj (ActChgCrsTT1stDay + 97)
|
||||||
#define ActReqDatAssPrj (ActChgCrsTT1stDay + 97)
|
#define ActReqDatAssPrj (ActChgCrsTT1stDay + 98)
|
||||||
#define ActChgDatAssPrj (ActChgCrsTT1stDay + 98)
|
#define ActChgDatAssPrj (ActChgCrsTT1stDay + 99)
|
||||||
#define ActDowAssPrj (ActChgCrsTT1stDay + 99)
|
#define ActDowAssPrj (ActChgCrsTT1stDay + 100)
|
||||||
|
|
||||||
#define ActSeeOneCfe (ActChgCrsTT1stDay + 100)
|
#define ActSeeOneCfe (ActChgCrsTT1stDay + 101)
|
||||||
#define ActSeeDatCfe (ActChgCrsTT1stDay + 101)
|
#define ActSeeDatCfe (ActChgCrsTT1stDay + 102)
|
||||||
#define ActEdiCfe (ActChgCrsTT1stDay + 102)
|
#define ActEdiCfe (ActChgCrsTT1stDay + 103)
|
||||||
#define ActRcvCfe (ActChgCrsTT1stDay + 103)
|
#define ActRcvCfe (ActChgCrsTT1stDay + 104)
|
||||||
#define ActPrnCfe (ActChgCrsTT1stDay + 104)
|
#define ActPrnCfe (ActChgCrsTT1stDay + 105)
|
||||||
#define ActReqRemCfe (ActChgCrsTT1stDay + 105)
|
#define ActReqRemCfe (ActChgCrsTT1stDay + 106)
|
||||||
#define ActRemCfe (ActChgCrsTT1stDay + 106)
|
#define ActRemCfe (ActChgCrsTT1stDay + 107)
|
||||||
#define ActHidCfe (ActChgCrsTT1stDay + 107)
|
#define ActHidCfe (ActChgCrsTT1stDay + 108)
|
||||||
#define ActUnhCfe (ActChgCrsTT1stDay + 108)
|
#define ActUnhCfe (ActChgCrsTT1stDay + 109)
|
||||||
#define ActReqLnkCfe (ActChgCrsTT1stDay + 109)
|
#define ActReqLnkCfe (ActChgCrsTT1stDay + 110)
|
||||||
|
|
||||||
#define ActEdiOneTstQst (ActChgCrsTT1stDay + 110)
|
#define ActEdiOneTstQst (ActChgCrsTT1stDay + 111)
|
||||||
#define ActReqImpTstQst (ActChgCrsTT1stDay + 111)
|
#define ActReqImpTstQst (ActChgCrsTT1stDay + 112)
|
||||||
#define ActImpTstQst (ActChgCrsTT1stDay + 112)
|
#define ActImpTstQst (ActChgCrsTT1stDay + 113)
|
||||||
#define ActLstTstQst (ActChgCrsTT1stDay + 113)
|
#define ActLstTstQst (ActChgCrsTT1stDay + 114)
|
||||||
#define ActRcvTstQst (ActChgCrsTT1stDay + 114)
|
#define ActRcvTstQst (ActChgCrsTT1stDay + 115)
|
||||||
#define ActReqRemSevTstQst (ActChgCrsTT1stDay + 115)
|
#define ActReqRemSevTstQst (ActChgCrsTT1stDay + 116)
|
||||||
#define ActRemSevTstQst (ActChgCrsTT1stDay + 116)
|
#define ActRemSevTstQst (ActChgCrsTT1stDay + 117)
|
||||||
#define ActReqRemOneTstQst (ActChgCrsTT1stDay + 117)
|
#define ActReqRemOneTstQst (ActChgCrsTT1stDay + 118)
|
||||||
#define ActRemOneTstQst (ActChgCrsTT1stDay + 118)
|
#define ActRemOneTstQst (ActChgCrsTT1stDay + 119)
|
||||||
#define ActChgShfTstQst (ActChgCrsTT1stDay + 119)
|
#define ActChgShfTstQst (ActChgCrsTT1stDay + 120)
|
||||||
|
|
||||||
#define ActEdiTag (ActChgCrsTT1stDay + 120)
|
#define ActEdiTag (ActChgCrsTT1stDay + 121)
|
||||||
#define ActEnaTag (ActChgCrsTT1stDay + 121)
|
#define ActEnaTag (ActChgCrsTT1stDay + 122)
|
||||||
#define ActDisTag (ActChgCrsTT1stDay + 122)
|
#define ActDisTag (ActChgCrsTT1stDay + 123)
|
||||||
#define ActRenTag (ActChgCrsTT1stDay + 123)
|
#define ActRenTag (ActChgCrsTT1stDay + 124)
|
||||||
|
|
||||||
#define ActSeeTst (ActChgCrsTT1stDay + 124)
|
#define ActSeeTst (ActChgCrsTT1stDay + 125)
|
||||||
#define ActReqAssTst (ActChgCrsTT1stDay + 125)
|
#define ActReqAssTst (ActChgCrsTT1stDay + 126)
|
||||||
#define ActAssTst (ActChgCrsTT1stDay + 126)
|
#define ActAssTst (ActChgCrsTT1stDay + 127)
|
||||||
#define ActCfgTst (ActChgCrsTT1stDay + 127)
|
#define ActCfgTst (ActChgCrsTT1stDay + 128)
|
||||||
#define ActRcvCfgTst (ActChgCrsTT1stDay + 128)
|
#define ActRcvCfgTst (ActChgCrsTT1stDay + 129)
|
||||||
|
|
||||||
#define ActReqSeeMyTstRes (ActChgCrsTT1stDay + 129)
|
#define ActReqSeeMyTstRes (ActChgCrsTT1stDay + 130)
|
||||||
#define ActSeeMyTstResCrs (ActChgCrsTT1stDay + 130)
|
#define ActSeeMyTstResCrs (ActChgCrsTT1stDay + 131)
|
||||||
#define ActSeeOneTstResMe (ActChgCrsTT1stDay + 131)
|
#define ActSeeOneTstResMe (ActChgCrsTT1stDay + 132)
|
||||||
#define ActReqSeeUsrTstRes (ActChgCrsTT1stDay + 132)
|
#define ActReqSeeUsrTstRes (ActChgCrsTT1stDay + 133)
|
||||||
#define ActSeeUsrTstResCrs (ActChgCrsTT1stDay + 133)
|
#define ActSeeUsrTstResCrs (ActChgCrsTT1stDay + 134)
|
||||||
#define ActSeeOneTstResOth (ActChgCrsTT1stDay + 134)
|
#define ActSeeOneTstResOth (ActChgCrsTT1stDay + 135)
|
||||||
|
|
||||||
#define ActSeeExa (ActChgCrsTT1stDay + 135)
|
#define ActSeeExa (ActChgCrsTT1stDay + 136)
|
||||||
|
|
||||||
#define ActFrmNewExa (ActChgCrsTT1stDay + 136)
|
#define ActFrmNewExa (ActChgCrsTT1stDay + 137)
|
||||||
#define ActEdiOneExa (ActChgCrsTT1stDay + 137)
|
#define ActEdiOneExa (ActChgCrsTT1stDay + 138)
|
||||||
#define ActNewExa (ActChgCrsTT1stDay + 138)
|
#define ActNewExa (ActChgCrsTT1stDay + 139)
|
||||||
#define ActChgExa (ActChgCrsTT1stDay + 139)
|
#define ActChgExa (ActChgCrsTT1stDay + 140)
|
||||||
#define ActReqRemExa (ActChgCrsTT1stDay + 140)
|
#define ActReqRemExa (ActChgCrsTT1stDay + 141)
|
||||||
#define ActRemExa (ActChgCrsTT1stDay + 141)
|
#define ActRemExa (ActChgCrsTT1stDay + 142)
|
||||||
#define ActHidExa (ActChgCrsTT1stDay + 142)
|
#define ActHidExa (ActChgCrsTT1stDay + 143)
|
||||||
#define ActUnhExa (ActChgCrsTT1stDay + 143)
|
#define ActUnhExa (ActChgCrsTT1stDay + 144)
|
||||||
#define ActReqLnkExa (ActChgCrsTT1stDay + 144)
|
#define ActReqLnkExa (ActChgCrsTT1stDay + 145)
|
||||||
|
|
||||||
#define ActFrmNewExaSet (ActChgCrsTT1stDay + 145)
|
#define ActFrmNewExaSet (ActChgCrsTT1stDay + 146)
|
||||||
#define ActNewExaSet (ActChgCrsTT1stDay + 146)
|
#define ActNewExaSet (ActChgCrsTT1stDay + 147)
|
||||||
#define ActReqRemExaSet (ActChgCrsTT1stDay + 147)
|
#define ActReqRemExaSet (ActChgCrsTT1stDay + 148)
|
||||||
#define ActRemExaSet (ActChgCrsTT1stDay + 148)
|
#define ActRemExaSet (ActChgCrsTT1stDay + 149)
|
||||||
#define ActUp_ExaSet (ActChgCrsTT1stDay + 149)
|
#define ActUp_ExaSet (ActChgCrsTT1stDay + 150)
|
||||||
#define ActDwnExaSet (ActChgCrsTT1stDay + 150)
|
#define ActDwnExaSet (ActChgCrsTT1stDay + 151)
|
||||||
#define ActChgTitExaSet (ActChgCrsTT1stDay + 151)
|
#define ActChgTitExaSet (ActChgCrsTT1stDay + 152)
|
||||||
#define ActChgNumQstExaSet (ActChgCrsTT1stDay + 152)
|
#define ActChgNumQstExaSet (ActChgCrsTT1stDay + 153)
|
||||||
|
|
||||||
#define ActReqAddQstExaSet (ActChgCrsTT1stDay + 153)
|
#define ActReqAddQstExaSet (ActChgCrsTT1stDay + 154)
|
||||||
#define ActLstTstQstForSet (ActChgCrsTT1stDay + 154)
|
#define ActLstTstQstForSet (ActChgCrsTT1stDay + 155)
|
||||||
#define ActAddQstToExa (ActChgCrsTT1stDay + 155)
|
#define ActAddQstToExa (ActChgCrsTT1stDay + 156)
|
||||||
#define ActReqRemSetQst (ActChgCrsTT1stDay + 156)
|
#define ActReqRemSetQst (ActChgCrsTT1stDay + 157)
|
||||||
#define ActRemExaQst (ActChgCrsTT1stDay + 157)
|
#define ActRemExaQst (ActChgCrsTT1stDay + 158)
|
||||||
#define ActValSetQst (ActChgCrsTT1stDay + 158)
|
#define ActValSetQst (ActChgCrsTT1stDay + 159)
|
||||||
#define ActInvSetQst (ActChgCrsTT1stDay + 159)
|
#define ActInvSetQst (ActChgCrsTT1stDay + 160)
|
||||||
|
|
||||||
#define ActReqNewExaSes (ActChgCrsTT1stDay + 160)
|
#define ActReqNewExaSes (ActChgCrsTT1stDay + 161)
|
||||||
#define ActEdiOneExaSes (ActChgCrsTT1stDay + 161)
|
#define ActEdiOneExaSes (ActChgCrsTT1stDay + 162)
|
||||||
#define ActNewExaSes (ActChgCrsTT1stDay + 162)
|
#define ActNewExaSes (ActChgCrsTT1stDay + 163)
|
||||||
#define ActChgExaSes (ActChgCrsTT1stDay + 163)
|
#define ActChgExaSes (ActChgCrsTT1stDay + 164)
|
||||||
#define ActReqRemExaSes (ActChgCrsTT1stDay + 164)
|
#define ActReqRemExaSes (ActChgCrsTT1stDay + 165)
|
||||||
#define ActRemExaSes (ActChgCrsTT1stDay + 165)
|
#define ActRemExaSes (ActChgCrsTT1stDay + 166)
|
||||||
#define ActHidExaSes (ActChgCrsTT1stDay + 166)
|
#define ActHidExaSes (ActChgCrsTT1stDay + 167)
|
||||||
#define ActUnhExaSes (ActChgCrsTT1stDay + 167)
|
#define ActUnhExaSes (ActChgCrsTT1stDay + 168)
|
||||||
|
|
||||||
#define ActSeeExaPrn (ActChgCrsTT1stDay + 168)
|
#define ActSeeExaPrn (ActChgCrsTT1stDay + 169)
|
||||||
#define ActAnsExaPrn (ActChgCrsTT1stDay + 169)
|
#define ActAnsExaPrn (ActChgCrsTT1stDay + 170)
|
||||||
#define ActEndExaPrn (ActChgCrsTT1stDay + 170)
|
#define ActEndExaPrn (ActChgCrsTT1stDay + 171)
|
||||||
|
|
||||||
#define ActSeeMyExaResCrs (ActChgCrsTT1stDay + 171)
|
#define ActSeeMyExaResCrs (ActChgCrsTT1stDay + 172)
|
||||||
#define ActSeeMyExaResExa (ActChgCrsTT1stDay + 172)
|
#define ActSeeMyExaResExa (ActChgCrsTT1stDay + 173)
|
||||||
#define ActSeeMyExaResSes (ActChgCrsTT1stDay + 173)
|
#define ActSeeMyExaResSes (ActChgCrsTT1stDay + 174)
|
||||||
#define ActSeeOneExaResMe (ActChgCrsTT1stDay + 174)
|
#define ActSeeOneExaResMe (ActChgCrsTT1stDay + 175)
|
||||||
#define ActReqSeeUsrExaRes (ActChgCrsTT1stDay + 175)
|
#define ActReqSeeUsrExaRes (ActChgCrsTT1stDay + 176)
|
||||||
#define ActSeeUsrExaResCrs (ActChgCrsTT1stDay + 176)
|
#define ActSeeUsrExaResCrs (ActChgCrsTT1stDay + 177)
|
||||||
#define ActSeeUsrExaResExa (ActChgCrsTT1stDay + 177)
|
#define ActSeeUsrExaResExa (ActChgCrsTT1stDay + 178)
|
||||||
#define ActSeeUsrExaResSes (ActChgCrsTT1stDay + 178)
|
#define ActSeeUsrExaResSes (ActChgCrsTT1stDay + 179)
|
||||||
#define ActSeeOneExaResOth (ActChgCrsTT1stDay + 179)
|
#define ActSeeOneExaResOth (ActChgCrsTT1stDay + 180)
|
||||||
#define ActChgVisExaRes (ActChgCrsTT1stDay + 180)
|
#define ActChgVisExaRes (ActChgCrsTT1stDay + 181)
|
||||||
|
|
||||||
#define ActSeeGam (ActChgCrsTT1stDay + 181)
|
#define ActSeeGam (ActChgCrsTT1stDay + 182)
|
||||||
#define ActReqRemMch (ActChgCrsTT1stDay + 182)
|
#define ActReqRemMch (ActChgCrsTT1stDay + 183)
|
||||||
#define ActRemMch (ActChgCrsTT1stDay + 183)
|
#define ActRemMch (ActChgCrsTT1stDay + 184)
|
||||||
#define ActEdiMch (ActChgCrsTT1stDay + 184)
|
#define ActEdiMch (ActChgCrsTT1stDay + 185)
|
||||||
#define ActChgMch (ActChgCrsTT1stDay + 185)
|
#define ActChgMch (ActChgCrsTT1stDay + 186)
|
||||||
#define ActReqNewMch (ActChgCrsTT1stDay + 186)
|
#define ActReqNewMch (ActChgCrsTT1stDay + 187)
|
||||||
#define ActNewMch (ActChgCrsTT1stDay + 187)
|
#define ActNewMch (ActChgCrsTT1stDay + 188)
|
||||||
#define ActResMch (ActChgCrsTT1stDay + 188)
|
#define ActResMch (ActChgCrsTT1stDay + 189)
|
||||||
#define ActBckMch (ActChgCrsTT1stDay + 189)
|
#define ActBckMch (ActChgCrsTT1stDay + 190)
|
||||||
#define ActPlyPauMch (ActChgCrsTT1stDay + 190)
|
#define ActPlyPauMch (ActChgCrsTT1stDay + 191)
|
||||||
#define ActFwdMch (ActChgCrsTT1stDay + 191)
|
#define ActFwdMch (ActChgCrsTT1stDay + 192)
|
||||||
#define ActChgNumColMch (ActChgCrsTT1stDay + 192)
|
#define ActChgNumColMch (ActChgCrsTT1stDay + 193)
|
||||||
#define ActChgVisResMchQst (ActChgCrsTT1stDay + 193)
|
#define ActChgVisResMchQst (ActChgCrsTT1stDay + 194)
|
||||||
#define ActMchCntDwn (ActChgCrsTT1stDay + 194)
|
#define ActMchCntDwn (ActChgCrsTT1stDay + 195)
|
||||||
#define ActRefMchTch (ActChgCrsTT1stDay + 195)
|
#define ActRefMchTch (ActChgCrsTT1stDay + 196)
|
||||||
|
|
||||||
#define ActJoiMch (ActChgCrsTT1stDay + 196)
|
#define ActJoiMch (ActChgCrsTT1stDay + 197)
|
||||||
#define ActSeeMchAnsQstStd (ActChgCrsTT1stDay + 197)
|
#define ActSeeMchAnsQstStd (ActChgCrsTT1stDay + 198)
|
||||||
#define ActRemMchAnsQstStd (ActChgCrsTT1stDay + 198)
|
#define ActRemMchAnsQstStd (ActChgCrsTT1stDay + 199)
|
||||||
#define ActAnsMchQstStd (ActChgCrsTT1stDay + 199)
|
#define ActAnsMchQstStd (ActChgCrsTT1stDay + 200)
|
||||||
#define ActRefMchStd (ActChgCrsTT1stDay + 200)
|
#define ActRefMchStd (ActChgCrsTT1stDay + 201)
|
||||||
|
|
||||||
#define ActSeeMyMchResCrs (ActChgCrsTT1stDay + 201)
|
#define ActSeeMyMchResCrs (ActChgCrsTT1stDay + 202)
|
||||||
#define ActSeeMyMchResGam (ActChgCrsTT1stDay + 202)
|
#define ActSeeMyMchResGam (ActChgCrsTT1stDay + 203)
|
||||||
#define ActSeeMyMchResMch (ActChgCrsTT1stDay + 203)
|
#define ActSeeMyMchResMch (ActChgCrsTT1stDay + 204)
|
||||||
#define ActSeeOneMchResMe (ActChgCrsTT1stDay + 204)
|
#define ActSeeOneMchResMe (ActChgCrsTT1stDay + 205)
|
||||||
|
|
||||||
#define ActReqSeeUsrMchRes (ActChgCrsTT1stDay + 205)
|
#define ActReqSeeUsrMchRes (ActChgCrsTT1stDay + 206)
|
||||||
#define ActSeeUsrMchResCrs (ActChgCrsTT1stDay + 206)
|
#define ActSeeUsrMchResCrs (ActChgCrsTT1stDay + 207)
|
||||||
#define ActSeeUsrMchResGam (ActChgCrsTT1stDay + 207)
|
#define ActSeeUsrMchResGam (ActChgCrsTT1stDay + 208)
|
||||||
#define ActSeeUsrMchResMch (ActChgCrsTT1stDay + 208)
|
#define ActSeeUsrMchResMch (ActChgCrsTT1stDay + 209)
|
||||||
#define ActSeeOneMchResOth (ActChgCrsTT1stDay + 209)
|
#define ActSeeOneMchResOth (ActChgCrsTT1stDay + 210)
|
||||||
|
|
||||||
#define ActChgVisResMchUsr (ActChgCrsTT1stDay + 210)
|
#define ActChgVisResMchUsr (ActChgCrsTT1stDay + 211)
|
||||||
|
|
||||||
#define ActLstOneGam (ActChgCrsTT1stDay + 211)
|
#define ActLstOneGam (ActChgCrsTT1stDay + 212)
|
||||||
|
|
||||||
#define ActFrmNewGam (ActChgCrsTT1stDay + 212)
|
#define ActFrmNewGam (ActChgCrsTT1stDay + 213)
|
||||||
#define ActEdiOneGam (ActChgCrsTT1stDay + 213)
|
#define ActEdiOneGam (ActChgCrsTT1stDay + 214)
|
||||||
#define ActNewGam (ActChgCrsTT1stDay + 214)
|
#define ActNewGam (ActChgCrsTT1stDay + 215)
|
||||||
#define ActChgGam (ActChgCrsTT1stDay + 215)
|
#define ActChgGam (ActChgCrsTT1stDay + 216)
|
||||||
#define ActReqRemGam (ActChgCrsTT1stDay + 216)
|
#define ActReqRemGam (ActChgCrsTT1stDay + 217)
|
||||||
#define ActRemGam (ActChgCrsTT1stDay + 217)
|
#define ActRemGam (ActChgCrsTT1stDay + 218)
|
||||||
#define ActHidGam (ActChgCrsTT1stDay + 218)
|
#define ActHidGam (ActChgCrsTT1stDay + 219)
|
||||||
#define ActUnhGam (ActChgCrsTT1stDay + 219)
|
#define ActUnhGam (ActChgCrsTT1stDay + 220)
|
||||||
#define ActAddOneGamQst (ActChgCrsTT1stDay + 220)
|
#define ActAddOneGamQst (ActChgCrsTT1stDay + 221)
|
||||||
#define ActGamLstTstQst (ActChgCrsTT1stDay + 221)
|
#define ActGamLstTstQst (ActChgCrsTT1stDay + 222)
|
||||||
#define ActAddTstQstToGam (ActChgCrsTT1stDay + 222)
|
#define ActAddTstQstToGam (ActChgCrsTT1stDay + 223)
|
||||||
#define ActReqRemGamQst (ActChgCrsTT1stDay + 223)
|
#define ActReqRemGamQst (ActChgCrsTT1stDay + 224)
|
||||||
#define ActRemGamQst (ActChgCrsTT1stDay + 224)
|
#define ActRemGamQst (ActChgCrsTT1stDay + 225)
|
||||||
#define ActUp_GamQst (ActChgCrsTT1stDay + 225)
|
#define ActUp_GamQst (ActChgCrsTT1stDay + 226)
|
||||||
#define ActDwnGamQst (ActChgCrsTT1stDay + 226)
|
#define ActDwnGamQst (ActChgCrsTT1stDay + 227)
|
||||||
#define ActReqLnkGam (ActChgCrsTT1stDay + 227)
|
#define ActReqLnkGam (ActChgCrsTT1stDay + 228)
|
||||||
|
|
||||||
#define ActSeeSvy (ActChgCrsTT1stDay + 228)
|
#define ActSeeSvy (ActChgCrsTT1stDay + 229)
|
||||||
#define ActAnsSvy (ActChgCrsTT1stDay + 229)
|
#define ActAnsSvy (ActChgCrsTT1stDay + 230)
|
||||||
#define ActFrmNewSvy (ActChgCrsTT1stDay + 230)
|
#define ActFrmNewSvy (ActChgCrsTT1stDay + 231)
|
||||||
#define ActEdiOneSvy (ActChgCrsTT1stDay + 231)
|
#define ActEdiOneSvy (ActChgCrsTT1stDay + 232)
|
||||||
#define ActNewSvy (ActChgCrsTT1stDay + 232)
|
#define ActNewSvy (ActChgCrsTT1stDay + 233)
|
||||||
#define ActChgSvy (ActChgCrsTT1stDay + 233)
|
#define ActChgSvy (ActChgCrsTT1stDay + 234)
|
||||||
#define ActReqRemSvy (ActChgCrsTT1stDay + 234)
|
#define ActReqRemSvy (ActChgCrsTT1stDay + 235)
|
||||||
#define ActRemSvy (ActChgCrsTT1stDay + 235)
|
#define ActRemSvy (ActChgCrsTT1stDay + 236)
|
||||||
#define ActReqRstSvy (ActChgCrsTT1stDay + 236)
|
#define ActReqRstSvy (ActChgCrsTT1stDay + 237)
|
||||||
#define ActRstSvy (ActChgCrsTT1stDay + 237)
|
#define ActRstSvy (ActChgCrsTT1stDay + 238)
|
||||||
#define ActHidSvy (ActChgCrsTT1stDay + 238)
|
#define ActHidSvy (ActChgCrsTT1stDay + 239)
|
||||||
#define ActUnhSvy (ActChgCrsTT1stDay + 239)
|
#define ActUnhSvy (ActChgCrsTT1stDay + 240)
|
||||||
#define ActReqLnkSvy (ActChgCrsTT1stDay + 240)
|
#define ActReqLnkSvy (ActChgCrsTT1stDay + 241)
|
||||||
|
|
||||||
#define ActEdiOneSvyQst (ActChgCrsTT1stDay + 241)
|
#define ActEdiOneSvyQst (ActChgCrsTT1stDay + 242)
|
||||||
#define ActRcvSvyQst (ActChgCrsTT1stDay + 242)
|
#define ActRcvSvyQst (ActChgCrsTT1stDay + 243)
|
||||||
#define ActReqRemSvyQst (ActChgCrsTT1stDay + 243)
|
#define ActReqRemSvyQst (ActChgCrsTT1stDay + 244)
|
||||||
#define ActRemSvyQst (ActChgCrsTT1stDay + 244)
|
#define ActRemSvyQst (ActChgCrsTT1stDay + 245)
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/******************************** Files tab **********************************/
|
/******************************** Files tab **********************************/
|
||||||
|
|
|
@ -49,6 +49,7 @@
|
||||||
#include "swad_pagination.h"
|
#include "swad_pagination.h"
|
||||||
#include "swad_parameter.h"
|
#include "swad_parameter.h"
|
||||||
#include "swad_photo.h"
|
#include "swad_photo.h"
|
||||||
|
#include "swad_program_database.h"
|
||||||
#include "swad_role.h"
|
#include "swad_role.h"
|
||||||
#include "swad_setting.h"
|
#include "swad_setting.h"
|
||||||
#include "swad_string.h"
|
#include "swad_string.h"
|
||||||
|
@ -73,6 +74,8 @@ static void Asg_PutIconsListAssignments (void *Assignments);
|
||||||
static void Asg_PutIconToCreateNewAsg (void *Assignments);
|
static void Asg_PutIconToCreateNewAsg (void *Assignments);
|
||||||
static void Asg_PutButtonToCreateNewAsg (void *Assignments);
|
static void Asg_PutButtonToCreateNewAsg (void *Assignments);
|
||||||
static void Asg_ParamsWhichGroupsToShow (void *Assignments);
|
static void Asg_ParamsWhichGroupsToShow (void *Assignments);
|
||||||
|
static void Asg_ShowOneAssignmentInBox (struct Asg_Assignments *Assignments);
|
||||||
|
static void Asg_PutIconsOneAsg (void *Assignments);
|
||||||
static void Asg_ShowOneAssignment (struct Asg_Assignments *Assignments,
|
static void Asg_ShowOneAssignment (struct Asg_Assignments *Assignments,
|
||||||
long AsgCod,bool PrintView);
|
long AsgCod,bool PrintView);
|
||||||
static void Asg_WriteAsgAuthor (struct Asg_Assignment *Asg);
|
static void Asg_WriteAsgAuthor (struct Asg_Assignment *Asg);
|
||||||
|
@ -107,7 +110,7 @@ static void Asg_ResetAssignments (struct Asg_Assignments *Assignments)
|
||||||
Assignments->Num = 0;
|
Assignments->Num = 0;
|
||||||
Assignments->LstAsgCods = NULL;
|
Assignments->LstAsgCods = NULL;
|
||||||
Assignments->SelectedOrder = Asg_ORDER_DEFAULT;
|
Assignments->SelectedOrder = Asg_ORDER_DEFAULT;
|
||||||
Assignments->AsgCodToEdit = -1L; // Used as parameter in contextual links
|
Assignments->AsgCod = -1L; // Used as parameter in contextual links
|
||||||
Assignments->CurrentPage = 0;
|
Assignments->CurrentPage = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -157,48 +160,48 @@ static void Asg_ShowAllAssignments (struct Asg_Assignments *Assignments)
|
||||||
Asg_PutIconsListAssignments,Assignments,
|
Asg_PutIconsListAssignments,Assignments,
|
||||||
Hlp_ASSESSMENT_Assignments,Box_NOT_CLOSABLE);
|
Hlp_ASSESSMENT_Assignments,Box_NOT_CLOSABLE);
|
||||||
|
|
||||||
/***** Select whether show only my groups or all groups *****/
|
/***** Select whether show only my groups or all groups *****/
|
||||||
if (Gbl.Crs.Grps.NumGrps)
|
if (Gbl.Crs.Grps.NumGrps)
|
||||||
{
|
{
|
||||||
Set_BeginSettingsHead ();
|
Set_BeginSettingsHead ();
|
||||||
Grp_ShowFormToSelWhichGrps (ActSeeAsg,
|
Grp_ShowFormToSelWhichGrps (ActSeeAsg,
|
||||||
Asg_ParamsWhichGroupsToShow,Assignments);
|
Asg_ParamsWhichGroupsToShow,Assignments);
|
||||||
Set_EndSettingsHead ();
|
Set_EndSettingsHead ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Write links to pages *****/
|
/***** Write links to pages *****/
|
||||||
Pag_WriteLinksToPagesCentered (Pag_ASSIGNMENTS,&Pagination,
|
Pag_WriteLinksToPagesCentered (Pag_ASSIGNMENTS,&Pagination,
|
||||||
Assignments,-1L);
|
Assignments,-1L);
|
||||||
|
|
||||||
if (Assignments->Num)
|
if (Assignments->Num)
|
||||||
{
|
{
|
||||||
/***** Begin table *****/
|
/***** Begin table *****/
|
||||||
HTM_TABLE_BeginWideMarginPadding (2);
|
HTM_TABLE_BeginWideMarginPadding (2);
|
||||||
|
|
||||||
/***** Table head *****/
|
/***** Table head *****/
|
||||||
Asg_PutHeadForSeeing (Assignments,false); // Not print view
|
Asg_PutHeadForSeeing (Assignments,false); // Not print view
|
||||||
|
|
||||||
/***** Write all assignments *****/
|
/***** Write all assignments *****/
|
||||||
for (NumAsg = Pagination.FirstItemVisible, The_ResetRowColor ();
|
for (NumAsg = Pagination.FirstItemVisible, The_ResetRowColor ();
|
||||||
NumAsg <= Pagination.LastItemVisible;
|
NumAsg <= Pagination.LastItemVisible;
|
||||||
NumAsg++, The_ChangeRowColor ())
|
NumAsg++, The_ChangeRowColor ())
|
||||||
Asg_ShowOneAssignment (Assignments,
|
Asg_ShowOneAssignment (Assignments,
|
||||||
Assignments->LstAsgCods[NumAsg - 1],
|
Assignments->LstAsgCods[NumAsg - 1],
|
||||||
false); // Not print view
|
false); // Not print view
|
||||||
|
|
||||||
/***** End table *****/
|
/***** End table *****/
|
||||||
HTM_TABLE_End ();
|
HTM_TABLE_End ();
|
||||||
}
|
}
|
||||||
else // No assignments created
|
else // No assignments created
|
||||||
Ale_ShowAlert (Ale_INFO,Txt_No_assignments);
|
Ale_ShowAlert (Ale_INFO,Txt_No_assignments);
|
||||||
|
|
||||||
/***** Write again links to pages *****/
|
/***** Write again links to pages *****/
|
||||||
Pag_WriteLinksToPagesCentered (Pag_ASSIGNMENTS,&Pagination,
|
Pag_WriteLinksToPagesCentered (Pag_ASSIGNMENTS,&Pagination,
|
||||||
Assignments,-1L);
|
Assignments,-1L);
|
||||||
|
|
||||||
/***** Button to create a new assignment *****/
|
/***** Button to create a new assignment *****/
|
||||||
if (Asg_CheckIfICanCreateAssignments ())
|
if (Asg_CheckIfICanCreateAssignments ())
|
||||||
Asg_PutButtonToCreateNewAsg (Assignments);
|
Asg_PutButtonToCreateNewAsg (Assignments);
|
||||||
|
|
||||||
/***** End box *****/
|
/***** End box *****/
|
||||||
Box_BoxEnd ();
|
Box_BoxEnd ();
|
||||||
|
@ -303,7 +306,7 @@ static void Asg_PutIconToCreateNewAsg (void *Assignments)
|
||||||
{
|
{
|
||||||
if (Assignments)
|
if (Assignments)
|
||||||
{
|
{
|
||||||
((struct Asg_Assignments *) Assignments)->AsgCodToEdit = -1L;
|
((struct Asg_Assignments *) Assignments)->AsgCod = -1L;
|
||||||
Ico_PutContextualIconToAdd (ActFrmNewAsg,NULL,Asg_PutParams,Assignments);
|
Ico_PutContextualIconToAdd (ActFrmNewAsg,NULL,Asg_PutParams,Assignments);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -320,7 +323,7 @@ static void Asg_PutButtonToCreateNewAsg (void *Assignments)
|
||||||
{
|
{
|
||||||
/* Begin form */
|
/* Begin form */
|
||||||
Frm_BeginForm (ActFrmNewAsg);
|
Frm_BeginForm (ActFrmNewAsg);
|
||||||
((struct Asg_Assignments *) Assignments)->AsgCodToEdit = -1L;
|
((struct Asg_Assignments *) Assignments)->AsgCod = -1L;
|
||||||
Asg_PutParams (Assignments);
|
Asg_PutParams (Assignments);
|
||||||
|
|
||||||
/* Button to create new assignment */
|
/* Button to create new assignment */
|
||||||
|
@ -352,9 +355,7 @@ static void Asg_ParamsWhichGroupsToShow (void *Assignments)
|
||||||
void Asg_SeeOneAssignment (void)
|
void Asg_SeeOneAssignment (void)
|
||||||
{
|
{
|
||||||
extern const char *Hlp_ASSESSMENT_Assignments;
|
extern const char *Hlp_ASSESSMENT_Assignments;
|
||||||
extern const char *Txt_Assignment;
|
|
||||||
struct Asg_Assignments Assignments;
|
struct Asg_Assignments Assignments;
|
||||||
long AsgCod;
|
|
||||||
|
|
||||||
/***** Reset assignments *****/
|
/***** Reset assignments *****/
|
||||||
Asg_ResetAssignments (&Assignments);
|
Asg_ResetAssignments (&Assignments);
|
||||||
|
@ -365,24 +366,10 @@ void Asg_SeeOneAssignment (void)
|
||||||
Assignments.CurrentPage = Pag_GetParamPagNum (Pag_ASSIGNMENTS);
|
Assignments.CurrentPage = Pag_GetParamPagNum (Pag_ASSIGNMENTS);
|
||||||
|
|
||||||
/***** Get the code of the assignment *****/
|
/***** Get the code of the assignment *****/
|
||||||
AsgCod = Asg_GetParamAsgCod ();
|
Assignments.AsgCod = Asg_GetParamAsgCod ();
|
||||||
|
|
||||||
/***** Begin box and table *****/
|
/***** Show selected assignment in a box *****/
|
||||||
Box_BoxTableBegin (NULL,Txt_Assignment,
|
Asg_ShowOneAssignmentInBox (&Assignments);
|
||||||
NULL,NULL,
|
|
||||||
Hlp_ASSESSMENT_Assignments,Box_NOT_CLOSABLE,2);
|
|
||||||
|
|
||||||
/***** Table head *****/
|
|
||||||
Asg_PutHeadForSeeing (&Assignments,
|
|
||||||
false); // Not print view
|
|
||||||
|
|
||||||
/***** Write assignment *****/
|
|
||||||
Asg_ShowOneAssignment (&Assignments,
|
|
||||||
AsgCod,
|
|
||||||
false); // Not print view
|
|
||||||
|
|
||||||
/***** End table and end box *****/
|
|
||||||
Box_BoxTableEnd ();
|
|
||||||
|
|
||||||
/***** Show current assignments, if any *****/
|
/***** Show current assignments, if any *****/
|
||||||
Asg_ShowAllAssignments (&Assignments);
|
Asg_ShowAllAssignments (&Assignments);
|
||||||
|
@ -425,6 +412,45 @@ void Asg_PrintOneAssignment (void)
|
||||||
HTM_TABLE_End ();
|
HTM_TABLE_End ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/************************* Show an assignment in a box ***********************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void Asg_ShowOneAssignmentInBox (struct Asg_Assignments *Assignments)
|
||||||
|
{
|
||||||
|
extern const char *Hlp_ASSESSMENT_Assignments;
|
||||||
|
extern const char *Txt_Assignment;
|
||||||
|
|
||||||
|
/***** Begin box and table *****/
|
||||||
|
Box_BoxTableBegin (NULL,Txt_Assignment,
|
||||||
|
Asg_PutIconsOneAsg,Assignments,
|
||||||
|
Hlp_ASSESSMENT_Assignments,Box_NOT_CLOSABLE,2);
|
||||||
|
|
||||||
|
/***** Table head *****/
|
||||||
|
Asg_PutHeadForSeeing (Assignments,
|
||||||
|
false); // Not print view
|
||||||
|
|
||||||
|
/***** Write assignment *****/
|
||||||
|
Asg_ShowOneAssignment (Assignments,
|
||||||
|
Assignments->AsgCod,
|
||||||
|
false); // Not print view
|
||||||
|
|
||||||
|
/***** End table and end box *****/
|
||||||
|
Box_BoxTableEnd ();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/****************** Put contextual icons in an assignment ********************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void Asg_PutIconsOneAsg (void *Assignments)
|
||||||
|
{
|
||||||
|
/***** Put icon to get resource link *****/
|
||||||
|
if (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) // Only if I am superuser // TODO: Include teachers
|
||||||
|
Ico_PutContextualIconToGetLink (ActReqLnkAsg,NULL,
|
||||||
|
Asg_PutParams,Assignments);
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*************************** Show one assignment *****************************/
|
/*************************** Show one assignment *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -684,7 +710,7 @@ static void Asg_PutFormsToRemEditOneAsg (struct Asg_Assignments *Assignments,
|
||||||
|
|
||||||
/***** Set assigment to edit
|
/***** Set assigment to edit
|
||||||
(used as parameter in contextual links) *****/
|
(used as parameter in contextual links) *****/
|
||||||
Assignments->AsgCodToEdit = Asg->AsgCod;
|
Assignments->AsgCod = Asg->AsgCod;
|
||||||
|
|
||||||
switch (Gbl.Usrs.Me.Role.Logged)
|
switch (Gbl.Usrs.Me.Role.Logged)
|
||||||
{
|
{
|
||||||
|
@ -725,8 +751,8 @@ static void Asg_PutParams (void *Assignments)
|
||||||
|
|
||||||
if (Assignments)
|
if (Assignments)
|
||||||
{
|
{
|
||||||
if (((struct Asg_Assignments *) Assignments)->AsgCodToEdit > 0)
|
if (((struct Asg_Assignments *) Assignments)->AsgCod > 0)
|
||||||
Asg_PutParamAsgCod (((struct Asg_Assignments *) Assignments)->AsgCodToEdit);
|
Asg_PutParamAsgCod (((struct Asg_Assignments *) Assignments)->AsgCod);
|
||||||
Dat_PutHiddenParamOrder (((struct Asg_Assignments *) Assignments)->SelectedOrder);
|
Dat_PutHiddenParamOrder (((struct Asg_Assignments *) Assignments)->SelectedOrder);
|
||||||
WhichGroups = Grp_GetParamWhichGroups ();
|
WhichGroups = Grp_GetParamWhichGroups ();
|
||||||
Grp_PutParamWhichGroups (&WhichGroups);
|
Grp_PutParamWhichGroups (&WhichGroups);
|
||||||
|
@ -1001,7 +1027,7 @@ void Asg_ReqRemAssignment (void)
|
||||||
Asg_GetDataOfAssignmentByCod (&Asg);
|
Asg_GetDataOfAssignmentByCod (&Asg);
|
||||||
|
|
||||||
/***** Show question and button to remove the assignment *****/
|
/***** Show question and button to remove the assignment *****/
|
||||||
Assignments.AsgCodToEdit = Asg.AsgCod;
|
Assignments.AsgCod = Asg.AsgCod;
|
||||||
Ale_ShowAlertAndButton (ActRemAsg,NULL,NULL,
|
Ale_ShowAlertAndButton (ActRemAsg,NULL,NULL,
|
||||||
Asg_PutParams,&Assignments,
|
Asg_PutParams,&Assignments,
|
||||||
Btn_REMOVE_BUTTON,Txt_Remove_assignment,
|
Btn_REMOVE_BUTTON,Txt_Remove_assignment,
|
||||||
|
@ -1188,12 +1214,12 @@ void Asg_RequestCreatOrEditAsg (void)
|
||||||
if (ItsANewAssignment)
|
if (ItsANewAssignment)
|
||||||
{
|
{
|
||||||
Frm_BeginForm (ActNewAsg);
|
Frm_BeginForm (ActNewAsg);
|
||||||
Assignments.AsgCodToEdit = -1L;
|
Assignments.AsgCod = -1L;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Frm_BeginForm (ActChgAsg);
|
Frm_BeginForm (ActChgAsg);
|
||||||
Assignments.AsgCodToEdit = Asg.AsgCod;
|
Assignments.AsgCod = Asg.AsgCod;
|
||||||
}
|
}
|
||||||
Asg_PutParams (&Assignments);
|
Asg_PutParams (&Assignments);
|
||||||
|
|
||||||
|
@ -1745,3 +1771,99 @@ void Asg_GetAndShowAssignmentsStats (void)
|
||||||
/***** End table and box *****/
|
/***** End table and box *****/
|
||||||
Box_BoxTableEnd ();
|
Box_BoxTableEnd ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/***************************** Get link to assignment ******************************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
void Asg_GetLinkToAssignment (void)
|
||||||
|
{
|
||||||
|
extern const char *Txt_Link_to_resource_X_copied_into_clipboard;
|
||||||
|
struct Asg_Assignments Assignments;
|
||||||
|
char Title[Asg_MAX_BYTES_ASSIGNMENT_TITLE + 1];
|
||||||
|
|
||||||
|
/***** Reset assignments *****/
|
||||||
|
Asg_ResetAssignments (&Assignments);
|
||||||
|
|
||||||
|
/***** Get parameters *****/
|
||||||
|
Assignments.SelectedOrder = Asg_GetParamAsgOrder ();
|
||||||
|
Grp_GetParamWhichGroups ();
|
||||||
|
Assignments.CurrentPage = Pag_GetParamPagNum (Pag_ASSIGNMENTS);
|
||||||
|
|
||||||
|
/***** Get assignment code *****/
|
||||||
|
if ((Assignments.AsgCod = Asg_GetParamAsgCod ()) <= 0)
|
||||||
|
Err_WrongAssignmentExit ();
|
||||||
|
|
||||||
|
/***** Get assignment title *****/
|
||||||
|
Asg_DB_GetAssignmentTitleByCod (Assignments.AsgCod,Title);
|
||||||
|
|
||||||
|
/***** Copy link to assignment into resource clipboard *****/
|
||||||
|
Prg_DB_CopyToClipboard (PrgRsc_ASSIGNMENT,Assignments.AsgCod);
|
||||||
|
|
||||||
|
/***** Write sucess message *****/
|
||||||
|
Ale_ShowAlert (Ale_SUCCESS,Txt_Link_to_resource_X_copied_into_clipboard,
|
||||||
|
Title);
|
||||||
|
|
||||||
|
/***** Show selected assignment in a box *****/
|
||||||
|
Asg_ShowOneAssignmentInBox (&Assignments);
|
||||||
|
|
||||||
|
/***** Show current assignments, if any *****/
|
||||||
|
Asg_ShowAllAssignments (&Assignments);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/*********************** Write assignment in course program ************************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
void Asg_WriteAssignmentInCrsProgram (long AsgCod,bool PutFormToGo,
|
||||||
|
const char *Icon,const char *IconTitle)
|
||||||
|
{
|
||||||
|
extern const char *Txt_Actions[Act_NUM_ACTIONS];
|
||||||
|
char Title[Asg_MAX_BYTES_ASSIGNMENT_TITLE + 1];
|
||||||
|
|
||||||
|
/***** Get assignment title *****/
|
||||||
|
Asg_DB_GetAssignmentTitleByCod (AsgCod,Title);
|
||||||
|
|
||||||
|
/***** Begin form to go to assignment *****/
|
||||||
|
if (PutFormToGo)
|
||||||
|
{
|
||||||
|
Frm_BeginForm (ActSeeOneAsg);
|
||||||
|
Asg_PutParamAsgCod (AsgCod);
|
||||||
|
// TODO: In the listing of assignments, the page is always the first.
|
||||||
|
// The page should be that corresponding to the selected assignment.
|
||||||
|
HTM_BUTTON_Submit_Begin (Txt_Actions[ActSeeOneAsg],
|
||||||
|
"class=\"LM BT_LINK PRG_RSC_%s\"",
|
||||||
|
The_GetSuffix ());
|
||||||
|
}
|
||||||
|
|
||||||
|
/***** Icon depending on type ******/
|
||||||
|
if (PutFormToGo)
|
||||||
|
Ico_PutIconLink (Icon,Ico_BLACK,ActSeeGam);
|
||||||
|
else
|
||||||
|
Ico_PutIconOn (Icon,Ico_BLACK,IconTitle);
|
||||||
|
|
||||||
|
/***** Write assignment title of exam *****/
|
||||||
|
HTM_Txt (Title);
|
||||||
|
|
||||||
|
/***** End form to download file *****/
|
||||||
|
if (PutFormToGo)
|
||||||
|
{
|
||||||
|
/* End form */
|
||||||
|
HTM_BUTTON_End ();
|
||||||
|
|
||||||
|
Frm_EndForm ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**************** Get assignment title from assignment code ******************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
void Asg_GetTitleFromAsgCod (long AsgCod,char *Title,size_t TitleSize)
|
||||||
|
{
|
||||||
|
char TitleFromDB[Asg_MAX_BYTES_ASSIGNMENT_TITLE + 1];
|
||||||
|
|
||||||
|
/***** Get assignment title *****/
|
||||||
|
Asg_DB_GetAssignmentTitleByCod (AsgCod,TitleFromDB);
|
||||||
|
Str_Copy (Title,TitleFromDB,TitleSize);
|
||||||
|
}
|
||||||
|
|
|
@ -53,7 +53,7 @@ struct Asg_Assignments
|
||||||
unsigned Num; // Number of assignments
|
unsigned Num; // Number of assignments
|
||||||
long *LstAsgCods; // List of assigment codes
|
long *LstAsgCods; // List of assigment codes
|
||||||
Dat_StartEndTime_t SelectedOrder;
|
Dat_StartEndTime_t SelectedOrder;
|
||||||
long AsgCodToEdit; // Used as parameter in contextual links
|
long AsgCod; // Used as parameter in contextual links
|
||||||
unsigned CurrentPage;
|
unsigned CurrentPage;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -104,4 +104,10 @@ unsigned Asg_GetNumAssignments (HieLvl_Level_t Scope,unsigned *NumNotif);
|
||||||
//-------------------------------- Figures ------------------------------------
|
//-------------------------------- Figures ------------------------------------
|
||||||
void Asg_GetAndShowAssignmentsStats (void);
|
void Asg_GetAndShowAssignmentsStats (void);
|
||||||
|
|
||||||
|
//--------------------------- Program resources -------------------------------
|
||||||
|
void Asg_GetLinkToAssignment (void);
|
||||||
|
void Asg_WriteAssignmentInCrsProgram (long AsgCod,bool PutFormToGo,
|
||||||
|
const char *Icon,const char *IconTitle);
|
||||||
|
void Asg_GetTitleFromAsgCod (long AsgCod,char *Title,size_t TitleSize);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -194,6 +194,21 @@ unsigned Asg_DB_GetAssignmentTitleAndTxtByCod (MYSQL_RES **mysql_res,long AsgCod
|
||||||
AsgCod);
|
AsgCod);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/******************** Get assignment title from database *********************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
void Asg_DB_GetAssignmentTitleByCod (long AsgCod,char Title[Asg_MAX_BYTES_ASSIGNMENT_TITLE + 1])
|
||||||
|
{
|
||||||
|
DB_QuerySELECTString (Title,Asg_MAX_BYTES_ASSIGNMENT_TITLE,"can not get assignment title",
|
||||||
|
"SELECT Title"
|
||||||
|
" FROM asg_assignments"
|
||||||
|
" WHERE AsgCod=%ld"
|
||||||
|
" AND CrsCod=%ld", // Extra check
|
||||||
|
AsgCod,
|
||||||
|
Gbl.Hierarchy.Crs.CrsCod);
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/******************** Get assignment text from database **********************/
|
/******************** Get assignment text from database **********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -46,6 +46,7 @@ unsigned Asg_DB_GetDataOfAssignmentByCod (MYSQL_RES **mysql_res,long AsgCod);
|
||||||
unsigned Asg_DB_GetDataOfAssignmentByFolder (MYSQL_RES **mysql_res,
|
unsigned Asg_DB_GetDataOfAssignmentByFolder (MYSQL_RES **mysql_res,
|
||||||
const char Folder[Brw_MAX_BYTES_FOLDER + 1]);
|
const char Folder[Brw_MAX_BYTES_FOLDER + 1]);
|
||||||
unsigned Asg_DB_GetAssignmentTitleAndTxtByCod (MYSQL_RES **mysql_res,long AsgCod);
|
unsigned Asg_DB_GetAssignmentTitleAndTxtByCod (MYSQL_RES **mysql_res,long AsgCod);
|
||||||
|
void Asg_DB_GetAssignmentTitleByCod (long AsgCod,char Title[Asg_MAX_BYTES_ASSIGNMENT_TITLE + 1]);
|
||||||
void Asg_DB_GetAssignmentTxtByCod (long AsgCod,char Txt[Cns_MAX_BYTES_TEXT + 1]);
|
void Asg_DB_GetAssignmentTxtByCod (long AsgCod,char Txt[Cns_MAX_BYTES_TEXT + 1]);
|
||||||
|
|
||||||
bool Asg_DB_CheckIfSimilarAssignmentExists (const char *Field,const char *Value,
|
bool Asg_DB_CheckIfSimilarAssignmentExists (const char *Field,const char *Value,
|
||||||
|
|
|
@ -606,10 +606,11 @@ TODO: Fix bug: error al enviar un mensaje a dos recipientes, error on duplicate
|
||||||
|
|
||||||
TODO: Attach pdf files in multimedia.
|
TODO: Attach pdf files in multimedia.
|
||||||
*/
|
*/
|
||||||
#define Log_PLATFORM_VERSION "SWAD 22.14 (2022-09-21)"
|
#define Log_PLATFORM_VERSION "SWAD 22.15 (2022-09-21)"
|
||||||
#define CSS_FILE "swad22.7.css"
|
#define CSS_FILE "swad22.7.css"
|
||||||
#define JS_FILE "swad21.100.js"
|
#define JS_FILE "swad21.100.js"
|
||||||
/*
|
/*
|
||||||
|
Version 22.15: Sep 21, 2022 Links to assignments in program. (331442 lines)
|
||||||
Version 22.14: Sep 21, 2022 An assignment is shown when clicking on its title. (331300 lines)
|
Version 22.14: Sep 21, 2022 An assignment is shown when clicking on its title. (331300 lines)
|
||||||
Version 22.13: Sep 20, 2022 Links to course forum threads in program. (331234 lines)
|
Version 22.13: Sep 20, 2022 Links to course forum threads in program. (331234 lines)
|
||||||
Version 22.12.3: Sep 20, 2022 Fixed bug in JavaScript related to dates. (331098 lines)
|
Version 22.12.3: Sep 20, 2022 Fixed bug in JavaScript related to dates. (331098 lines)
|
||||||
|
|
|
@ -1010,7 +1010,7 @@ static void PrgRsc_WriteLinkName (const struct Prg_Link *Link,bool PutFormToGo,
|
||||||
const char *IconTitle) =
|
const char *IconTitle) =
|
||||||
{
|
{
|
||||||
[PrgRsc_NONE ] = PrgRsc_WriteEmptyLinkInCrsProgram,
|
[PrgRsc_NONE ] = PrgRsc_WriteEmptyLinkInCrsProgram,
|
||||||
[PrgRsc_ASSIGNMENT ] = NULL,
|
[PrgRsc_ASSIGNMENT ] = Asg_WriteAssignmentInCrsProgram,
|
||||||
[PrgRsc_CALL_FOR_EXAM ] = Cfe_WriteCallForExamInCrsProgram,
|
[PrgRsc_CALL_FOR_EXAM ] = Cfe_WriteCallForExamInCrsProgram,
|
||||||
[PrgRsc_EXAM ] = Exa_WriteExamInCrsProgram,
|
[PrgRsc_EXAM ] = Exa_WriteExamInCrsProgram,
|
||||||
[PrgRsc_GAME ] = Gam_WriteGameInCrsProgram,
|
[PrgRsc_GAME ] = Gam_WriteGameInCrsProgram,
|
||||||
|
@ -1056,7 +1056,7 @@ static void PrgRsc_GetResourceTitleFromLink (struct Prg_Item *Item)
|
||||||
static void (*GetTitle[PrgRsc_NUM_TYPES]) (long Cod,char *Title,size_t TitleSize) =
|
static void (*GetTitle[PrgRsc_NUM_TYPES]) (long Cod,char *Title,size_t TitleSize) =
|
||||||
{
|
{
|
||||||
[PrgRsc_NONE ] = NULL,
|
[PrgRsc_NONE ] = NULL,
|
||||||
[PrgRsc_ASSIGNMENT ] = NULL,
|
[PrgRsc_ASSIGNMENT ] = Asg_GetTitleFromAsgCod,
|
||||||
[PrgRsc_CALL_FOR_EXAM ] = Cfe_GetTitleFromExaCod,
|
[PrgRsc_CALL_FOR_EXAM ] = Cfe_GetTitleFromExaCod,
|
||||||
[PrgRsc_EXAM ] = Exa_GetTitleFromExaCod,
|
[PrgRsc_EXAM ] = Exa_GetTitleFromExaCod,
|
||||||
[PrgRsc_GAME ] = Gam_GetTitleFromGamCod,
|
[PrgRsc_GAME ] = Gam_GetTitleFromGamCod,
|
||||||
|
|
|
@ -9214,6 +9214,29 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
|
||||||
"Unhide assignment" // Precisa de tradução
|
"Unhide assignment" // Precisa de tradução
|
||||||
#elif L==10 // tr
|
#elif L==10 // tr
|
||||||
"Unhide assignment" // Çeviri lazim!
|
"Unhide assignment" // Çeviri lazim!
|
||||||
|
#endif
|
||||||
|
,
|
||||||
|
[ActReqLnkAsg] =
|
||||||
|
#if L==1 // ca
|
||||||
|
"Copy link to assignment" // Necessita traducció
|
||||||
|
#elif L==2 // de
|
||||||
|
"Copy link to assignment" // Need Übersetzung
|
||||||
|
#elif L==3 // en
|
||||||
|
"Copy link to assignment"
|
||||||
|
#elif L==4 // es
|
||||||
|
"Copiar enlace a actividad"
|
||||||
|
#elif L==5 // fr
|
||||||
|
"Copy link to assignment" // Besoin de traduction
|
||||||
|
#elif L==6 // gn
|
||||||
|
"Copiar enlace a actividad" // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"Copy link to assignment" // Bisogno di traduzione
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Copy link to assignment" // Potrzebujesz tlumaczenie
|
||||||
|
#elif L==9 // pt
|
||||||
|
"Copy link to assignment" // Precisa de tradução
|
||||||
|
#elif L==10 // tr
|
||||||
|
"Copy link to assignment" // Çeviri lazim!
|
||||||
#endif
|
#endif
|
||||||
,
|
,
|
||||||
[ActReqUsrPrj] =
|
[ActReqUsrPrj] =
|
||||||
|
|
Loading…
Reference in New Issue
Block a user