mirror of https://github.com/acanas/swad-core.git
Version 16.82
This commit is contained in:
parent
d8d90370fd
commit
98db84fe19
|
@ -956,6 +956,8 @@ Users:
|
|||
795. ActChgVisFie Request change in visibility of a record field
|
||||
796. ActRcvRecCrs Receive and update fields of my record in this course
|
||||
|
||||
NEW. ActSeeUsrAgd Show user's agenda
|
||||
|
||||
797. ActReqEnrSevStd Request the enrollment/removing of several users to / from current course
|
||||
798. ActReqEnrSevTch Request the enrollment/removing of several users to / from current course
|
||||
|
||||
|
@ -1454,7 +1456,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
|||
/* ActSeeMai */{ 855, 5,TabSys,ActSeeMai ,0x1FF,0x1FF,0x1FF,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Mai_SeeMailDomains ,"email64x64.gif" },
|
||||
/* ActSeeBan */{1137, 6,TabSys,ActSeeBan ,0x100,0x100,0x100,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Ban_SeeBanners ,"picture64x64.gif" },
|
||||
/* ActSeeLnk */{ 748, 7,TabSys,ActSeeLnk ,0x1FF,0x1FF,0x1FF,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Lnk_SeeLinks ,"link64x64.gif" },
|
||||
/* ActLstPlg */{ 777, 8,TabSys,ActLstPlg ,0x110,0x110,0x110,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Plg_ListPlugins ,"blocks64x64.gif" },
|
||||
/* ActLstPlg */{ 777, 8,TabSys,ActLstPlg ,0x100,0x100,0x100,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Plg_ListPlugins ,"blocks64x64.gif" },
|
||||
/* ActSetUp */{ 840, 9,TabSys,ActSetUp ,0x100,0x100,0x100,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Set_Setup ,"lightning64x64.gif" },
|
||||
|
||||
// Actions not in menu:
|
||||
|
@ -2362,6 +2364,8 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
|||
/* ActChgVisFie */{ 297,-1,TabUnk,ActLstStd ,0x110,0x100,0x000,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rec_ChangeVisibilityField ,NULL},
|
||||
/* ActRcvRecCrs */{ 301,-1,TabUnk,ActLstStd ,0x108,0x100,0x000,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rec_UpdateAndShowMyCrsRecord ,NULL},
|
||||
|
||||
/* ActSeeUsrAgd */{1611,-1,TabUnk,ActLstTch ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Agd_ShowUsrAgenda ,NULL},
|
||||
|
||||
/* ActReqEnrSevStd */{1426,-1,TabUnk,ActLstStd ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Enr_ReqAdminStds ,NULL},
|
||||
/* ActReqEnrSevTch */{1427,-1,TabUnk,ActLstTch ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Enr_ReqAdminTchs ,NULL},
|
||||
|
||||
|
@ -2774,7 +2778,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
|||
/* ActFrmRolSes */{ 843, 1,TabPrf,ActFrmRolSes ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Usr_WriteFormLogout ,"keyuser64x64.gif" },
|
||||
/* ActMyCrs */{ 987, 2,TabPrf,ActMyCrs ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Crs_ReqSelectOneOfMyCourses ,"mygroups64x64.gif" },
|
||||
/* ActSeeMyTT */{ 408, 3,TabPrf,ActSeeMyTT ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,TT_ShowClassTimeTable ,"clock64x64.gif" },
|
||||
/* ActSeeMyAgd */{1602, 5,TabPrf,ActSeeMyAgd ,0x100,0x100,0x100,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Agd_SeeEvents ,"date64x64.gif" },
|
||||
/* ActSeeMyAgd */{1602, 5,TabPrf,ActSeeMyAgd ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Agd_ShowMyAgenda ,"date64x64.gif" },
|
||||
/* ActFrmMyAcc */{ 36, 6,TabPrf,ActFrmMyAcc ,0x1FF,0x1FF,0x1FF,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Acc_ShowFormMyAccount ,"arroba64x64.gif" },
|
||||
/* ActReqEdiRecCom */{ 285, 7,TabPrf,ActReqEdiRecCom ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rec_ShowFormMySharedRecord ,"card64x64.gif" },
|
||||
/* ActEdiPrf */{ 673, 8,TabPrf,ActEdiPrf ,0x1FF,0x1FF,0x1FF,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Pre_EditPrefs ,"heart64x64.gif" },
|
||||
|
@ -4500,6 +4504,7 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq
|
|||
ActRemEvtMyAgd, // #1608
|
||||
ActHidEvtMyAgd, // #1609
|
||||
ActShoEvtMyAgd, // #1610
|
||||
ActSeeUsrAgd, // #1611
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
214
swad_action.h
214
swad_action.h
|
@ -55,9 +55,9 @@ typedef enum
|
|||
|
||||
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+14+93+73+70+249+186+155+172+36+31+93)
|
||||
#define Act_NUM_ACTIONS (1+9+51+14+93+73+70+249+186+156+172+36+31+93)
|
||||
|
||||
#define Act_MAX_ACTION_COD 1610
|
||||
#define Act_MAX_ACTION_COD 1611
|
||||
|
||||
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 11
|
||||
|
||||
|
@ -972,125 +972,127 @@ typedef int Act_Action_t; // Must be a signed type, because -1 is used to indica
|
|||
#define ActChgVisFie (ActChgNumRowFooGrp+ 50)
|
||||
#define ActRcvRecCrs (ActChgNumRowFooGrp+ 51)
|
||||
|
||||
#define ActReqEnrSevStd (ActChgNumRowFooGrp+ 52)
|
||||
#define ActReqEnrSevTch (ActChgNumRowFooGrp+ 53)
|
||||
#define ActSeeUsrAgd (ActChgNumRowFooGrp+ 52)
|
||||
|
||||
#define ActReqLstStdAtt (ActChgNumRowFooGrp+ 54)
|
||||
#define ActSeeLstMyAtt (ActChgNumRowFooGrp+ 55)
|
||||
#define ActPrnLstMyAtt (ActChgNumRowFooGrp+ 56)
|
||||
#define ActSeeLstStdAtt (ActChgNumRowFooGrp+ 57)
|
||||
#define ActPrnLstStdAtt (ActChgNumRowFooGrp+ 58)
|
||||
#define ActFrmNewAtt (ActChgNumRowFooGrp+ 59)
|
||||
#define ActEdiOneAtt (ActChgNumRowFooGrp+ 60)
|
||||
#define ActNewAtt (ActChgNumRowFooGrp+ 61)
|
||||
#define ActChgAtt (ActChgNumRowFooGrp+ 62)
|
||||
#define ActReqRemAtt (ActChgNumRowFooGrp+ 63)
|
||||
#define ActRemAtt (ActChgNumRowFooGrp+ 64)
|
||||
#define ActHidAtt (ActChgNumRowFooGrp+ 65)
|
||||
#define ActShoAtt (ActChgNumRowFooGrp+ 66)
|
||||
#define ActSeeOneAtt (ActChgNumRowFooGrp+ 67)
|
||||
#define ActRecAttStd (ActChgNumRowFooGrp+ 68)
|
||||
#define ActRecAttMe (ActChgNumRowFooGrp+ 69)
|
||||
#define ActReqEnrSevStd (ActChgNumRowFooGrp+ 53)
|
||||
#define ActReqEnrSevTch (ActChgNumRowFooGrp+ 54)
|
||||
|
||||
#define ActSignUp (ActChgNumRowFooGrp+ 70)
|
||||
#define ActUpdSignUpReq (ActChgNumRowFooGrp+ 71)
|
||||
#define ActReqRejSignUp (ActChgNumRowFooGrp+ 72)
|
||||
#define ActRejSignUp (ActChgNumRowFooGrp+ 73)
|
||||
#define ActReqLstStdAtt (ActChgNumRowFooGrp+ 55)
|
||||
#define ActSeeLstMyAtt (ActChgNumRowFooGrp+ 56)
|
||||
#define ActPrnLstMyAtt (ActChgNumRowFooGrp+ 57)
|
||||
#define ActSeeLstStdAtt (ActChgNumRowFooGrp+ 58)
|
||||
#define ActPrnLstStdAtt (ActChgNumRowFooGrp+ 59)
|
||||
#define ActFrmNewAtt (ActChgNumRowFooGrp+ 60)
|
||||
#define ActEdiOneAtt (ActChgNumRowFooGrp+ 61)
|
||||
#define ActNewAtt (ActChgNumRowFooGrp+ 62)
|
||||
#define ActChgAtt (ActChgNumRowFooGrp+ 63)
|
||||
#define ActReqRemAtt (ActChgNumRowFooGrp+ 64)
|
||||
#define ActRemAtt (ActChgNumRowFooGrp+ 65)
|
||||
#define ActHidAtt (ActChgNumRowFooGrp+ 66)
|
||||
#define ActShoAtt (ActChgNumRowFooGrp+ 67)
|
||||
#define ActSeeOneAtt (ActChgNumRowFooGrp+ 68)
|
||||
#define ActRecAttStd (ActChgNumRowFooGrp+ 69)
|
||||
#define ActRecAttMe (ActChgNumRowFooGrp+ 70)
|
||||
|
||||
#define ActReqMdfOneOth (ActChgNumRowFooGrp+ 74)
|
||||
#define ActReqMdfOneStd (ActChgNumRowFooGrp+ 75)
|
||||
#define ActReqMdfOneTch (ActChgNumRowFooGrp+ 76)
|
||||
#define ActSignUp (ActChgNumRowFooGrp+ 71)
|
||||
#define ActUpdSignUpReq (ActChgNumRowFooGrp+ 72)
|
||||
#define ActReqRejSignUp (ActChgNumRowFooGrp+ 73)
|
||||
#define ActRejSignUp (ActChgNumRowFooGrp+ 74)
|
||||
|
||||
#define ActReqMdfOth (ActChgNumRowFooGrp+ 77)
|
||||
#define ActReqMdfStd (ActChgNumRowFooGrp+ 78)
|
||||
#define ActReqMdfTch (ActChgNumRowFooGrp+ 79)
|
||||
#define ActReqMdfOneOth (ActChgNumRowFooGrp+ 75)
|
||||
#define ActReqMdfOneStd (ActChgNumRowFooGrp+ 76)
|
||||
#define ActReqMdfOneTch (ActChgNumRowFooGrp+ 77)
|
||||
|
||||
#define ActReqOthPho (ActChgNumRowFooGrp+ 80)
|
||||
#define ActReqStdPho (ActChgNumRowFooGrp+ 81)
|
||||
#define ActReqTchPho (ActChgNumRowFooGrp+ 82)
|
||||
#define ActDetOthPho (ActChgNumRowFooGrp+ 83)
|
||||
#define ActDetStdPho (ActChgNumRowFooGrp+ 84)
|
||||
#define ActDetTchPho (ActChgNumRowFooGrp+ 85)
|
||||
#define ActUpdOthPho (ActChgNumRowFooGrp+ 86)
|
||||
#define ActUpdStdPho (ActChgNumRowFooGrp+ 87)
|
||||
#define ActUpdTchPho (ActChgNumRowFooGrp+ 88)
|
||||
#define ActReqRemOthPho (ActChgNumRowFooGrp+ 89)
|
||||
#define ActReqRemStdPho (ActChgNumRowFooGrp+ 90)
|
||||
#define ActReqRemTchPho (ActChgNumRowFooGrp+ 91)
|
||||
#define ActRemOthPho (ActChgNumRowFooGrp+ 92)
|
||||
#define ActRemStdPho (ActChgNumRowFooGrp+ 93)
|
||||
#define ActRemTchPho (ActChgNumRowFooGrp+ 94)
|
||||
#define ActCreOth (ActChgNumRowFooGrp+ 95)
|
||||
#define ActCreStd (ActChgNumRowFooGrp+ 96)
|
||||
#define ActCreTch (ActChgNumRowFooGrp+ 97)
|
||||
#define ActUpdOth (ActChgNumRowFooGrp+ 98)
|
||||
#define ActUpdStd (ActChgNumRowFooGrp+ 99)
|
||||
#define ActUpdTch (ActChgNumRowFooGrp+100)
|
||||
#define ActReqMdfOth (ActChgNumRowFooGrp+ 78)
|
||||
#define ActReqMdfStd (ActChgNumRowFooGrp+ 79)
|
||||
#define ActReqMdfTch (ActChgNumRowFooGrp+ 80)
|
||||
|
||||
#define ActReqAccEnrStd (ActChgNumRowFooGrp+101)
|
||||
#define ActReqAccEnrTch (ActChgNumRowFooGrp+102)
|
||||
#define ActAccEnrStd (ActChgNumRowFooGrp+103)
|
||||
#define ActAccEnrTch (ActChgNumRowFooGrp+104)
|
||||
#define ActRemMe_Std (ActChgNumRowFooGrp+105)
|
||||
#define ActRemMe_Tch (ActChgNumRowFooGrp+106)
|
||||
#define ActReqOthPho (ActChgNumRowFooGrp+ 81)
|
||||
#define ActReqStdPho (ActChgNumRowFooGrp+ 82)
|
||||
#define ActReqTchPho (ActChgNumRowFooGrp+ 83)
|
||||
#define ActDetOthPho (ActChgNumRowFooGrp+ 84)
|
||||
#define ActDetStdPho (ActChgNumRowFooGrp+ 85)
|
||||
#define ActDetTchPho (ActChgNumRowFooGrp+ 86)
|
||||
#define ActUpdOthPho (ActChgNumRowFooGrp+ 87)
|
||||
#define ActUpdStdPho (ActChgNumRowFooGrp+ 88)
|
||||
#define ActUpdTchPho (ActChgNumRowFooGrp+ 89)
|
||||
#define ActReqRemOthPho (ActChgNumRowFooGrp+ 90)
|
||||
#define ActReqRemStdPho (ActChgNumRowFooGrp+ 91)
|
||||
#define ActReqRemTchPho (ActChgNumRowFooGrp+ 92)
|
||||
#define ActRemOthPho (ActChgNumRowFooGrp+ 93)
|
||||
#define ActRemStdPho (ActChgNumRowFooGrp+ 94)
|
||||
#define ActRemTchPho (ActChgNumRowFooGrp+ 95)
|
||||
#define ActCreOth (ActChgNumRowFooGrp+ 96)
|
||||
#define ActCreStd (ActChgNumRowFooGrp+ 97)
|
||||
#define ActCreTch (ActChgNumRowFooGrp+ 98)
|
||||
#define ActUpdOth (ActChgNumRowFooGrp+ 99)
|
||||
#define ActUpdStd (ActChgNumRowFooGrp+100)
|
||||
#define ActUpdTch (ActChgNumRowFooGrp+101)
|
||||
|
||||
#define ActNewAdmIns (ActChgNumRowFooGrp+107)
|
||||
#define ActRemAdmIns (ActChgNumRowFooGrp+108)
|
||||
#define ActNewAdmCtr (ActChgNumRowFooGrp+109)
|
||||
#define ActRemAdmCtr (ActChgNumRowFooGrp+110)
|
||||
#define ActNewAdmDeg (ActChgNumRowFooGrp+111)
|
||||
#define ActRemAdmDeg (ActChgNumRowFooGrp+112)
|
||||
#define ActReqAccEnrStd (ActChgNumRowFooGrp+102)
|
||||
#define ActReqAccEnrTch (ActChgNumRowFooGrp+103)
|
||||
#define ActAccEnrStd (ActChgNumRowFooGrp+104)
|
||||
#define ActAccEnrTch (ActChgNumRowFooGrp+105)
|
||||
#define ActRemMe_Std (ActChgNumRowFooGrp+106)
|
||||
#define ActRemMe_Tch (ActChgNumRowFooGrp+107)
|
||||
|
||||
#define ActRcvFrmEnrSevStd (ActChgNumRowFooGrp+113)
|
||||
#define ActRcvFrmEnrSevTch (ActChgNumRowFooGrp+114)
|
||||
#define ActNewAdmIns (ActChgNumRowFooGrp+108)
|
||||
#define ActRemAdmIns (ActChgNumRowFooGrp+109)
|
||||
#define ActNewAdmCtr (ActChgNumRowFooGrp+110)
|
||||
#define ActRemAdmCtr (ActChgNumRowFooGrp+111)
|
||||
#define ActNewAdmDeg (ActChgNumRowFooGrp+112)
|
||||
#define ActRemAdmDeg (ActChgNumRowFooGrp+113)
|
||||
|
||||
#define ActReqCnfID_Oth (ActChgNumRowFooGrp+115)
|
||||
#define ActReqCnfID_Std (ActChgNumRowFooGrp+116)
|
||||
#define ActReqCnfID_Tch (ActChgNumRowFooGrp+117)
|
||||
#define ActCnfID_Oth (ActChgNumRowFooGrp+118)
|
||||
#define ActCnfID_Std (ActChgNumRowFooGrp+119)
|
||||
#define ActCnfID_Tch (ActChgNumRowFooGrp+120)
|
||||
#define ActRcvFrmEnrSevStd (ActChgNumRowFooGrp+114)
|
||||
#define ActRcvFrmEnrSevTch (ActChgNumRowFooGrp+115)
|
||||
|
||||
#define ActFrmIDsOth (ActChgNumRowFooGrp+121)
|
||||
#define ActFrmIDsStd (ActChgNumRowFooGrp+122)
|
||||
#define ActFrmIDsTch (ActChgNumRowFooGrp+123)
|
||||
#define ActRemID_Oth (ActChgNumRowFooGrp+124)
|
||||
#define ActRemID_Std (ActChgNumRowFooGrp+125)
|
||||
#define ActRemID_Tch (ActChgNumRowFooGrp+126)
|
||||
#define ActNewID_Oth (ActChgNumRowFooGrp+127)
|
||||
#define ActNewID_Std (ActChgNumRowFooGrp+128)
|
||||
#define ActNewID_Tch (ActChgNumRowFooGrp+129)
|
||||
#define ActFrmPwdOth (ActChgNumRowFooGrp+130)
|
||||
#define ActFrmPwdStd (ActChgNumRowFooGrp+131)
|
||||
#define ActFrmPwdTch (ActChgNumRowFooGrp+132)
|
||||
#define ActChgPwdOth (ActChgNumRowFooGrp+133)
|
||||
#define ActChgPwdStd (ActChgNumRowFooGrp+134)
|
||||
#define ActChgPwdTch (ActChgNumRowFooGrp+135)
|
||||
#define ActFrmMaiOth (ActChgNumRowFooGrp+136)
|
||||
#define ActFrmMaiStd (ActChgNumRowFooGrp+137)
|
||||
#define ActFrmMaiTch (ActChgNumRowFooGrp+138)
|
||||
#define ActRemMaiOth (ActChgNumRowFooGrp+139)
|
||||
#define ActRemMaiStd (ActChgNumRowFooGrp+140)
|
||||
#define ActRemMaiTch (ActChgNumRowFooGrp+141)
|
||||
#define ActNewMaiOth (ActChgNumRowFooGrp+142)
|
||||
#define ActNewMaiStd (ActChgNumRowFooGrp+143)
|
||||
#define ActNewMaiTch (ActChgNumRowFooGrp+144)
|
||||
#define ActReqCnfID_Oth (ActChgNumRowFooGrp+116)
|
||||
#define ActReqCnfID_Std (ActChgNumRowFooGrp+117)
|
||||
#define ActReqCnfID_Tch (ActChgNumRowFooGrp+118)
|
||||
#define ActCnfID_Oth (ActChgNumRowFooGrp+119)
|
||||
#define ActCnfID_Std (ActChgNumRowFooGrp+120)
|
||||
#define ActCnfID_Tch (ActChgNumRowFooGrp+121)
|
||||
|
||||
#define ActRemStdCrs (ActChgNumRowFooGrp+145)
|
||||
#define ActRemTchCrs (ActChgNumRowFooGrp+146)
|
||||
#define ActRemUsrGbl (ActChgNumRowFooGrp+147)
|
||||
#define ActFrmIDsOth (ActChgNumRowFooGrp+122)
|
||||
#define ActFrmIDsStd (ActChgNumRowFooGrp+123)
|
||||
#define ActFrmIDsTch (ActChgNumRowFooGrp+124)
|
||||
#define ActRemID_Oth (ActChgNumRowFooGrp+125)
|
||||
#define ActRemID_Std (ActChgNumRowFooGrp+126)
|
||||
#define ActRemID_Tch (ActChgNumRowFooGrp+127)
|
||||
#define ActNewID_Oth (ActChgNumRowFooGrp+128)
|
||||
#define ActNewID_Std (ActChgNumRowFooGrp+129)
|
||||
#define ActNewID_Tch (ActChgNumRowFooGrp+130)
|
||||
#define ActFrmPwdOth (ActChgNumRowFooGrp+131)
|
||||
#define ActFrmPwdStd (ActChgNumRowFooGrp+132)
|
||||
#define ActFrmPwdTch (ActChgNumRowFooGrp+133)
|
||||
#define ActChgPwdOth (ActChgNumRowFooGrp+134)
|
||||
#define ActChgPwdStd (ActChgNumRowFooGrp+135)
|
||||
#define ActChgPwdTch (ActChgNumRowFooGrp+136)
|
||||
#define ActFrmMaiOth (ActChgNumRowFooGrp+137)
|
||||
#define ActFrmMaiStd (ActChgNumRowFooGrp+138)
|
||||
#define ActFrmMaiTch (ActChgNumRowFooGrp+139)
|
||||
#define ActRemMaiOth (ActChgNumRowFooGrp+140)
|
||||
#define ActRemMaiStd (ActChgNumRowFooGrp+141)
|
||||
#define ActRemMaiTch (ActChgNumRowFooGrp+142)
|
||||
#define ActNewMaiOth (ActChgNumRowFooGrp+143)
|
||||
#define ActNewMaiStd (ActChgNumRowFooGrp+144)
|
||||
#define ActNewMaiTch (ActChgNumRowFooGrp+145)
|
||||
|
||||
#define ActReqRemAllStdCrs (ActChgNumRowFooGrp+148)
|
||||
#define ActRemAllStdCrs (ActChgNumRowFooGrp+149)
|
||||
#define ActRemStdCrs (ActChgNumRowFooGrp+146)
|
||||
#define ActRemTchCrs (ActChgNumRowFooGrp+147)
|
||||
#define ActRemUsrGbl (ActChgNumRowFooGrp+148)
|
||||
|
||||
#define ActReqRemOldUsr (ActChgNumRowFooGrp+150)
|
||||
#define ActRemOldUsr (ActChgNumRowFooGrp+151)
|
||||
#define ActReqRemAllStdCrs (ActChgNumRowFooGrp+149)
|
||||
#define ActRemAllStdCrs (ActChgNumRowFooGrp+150)
|
||||
|
||||
#define ActLstDupUsr (ActChgNumRowFooGrp+152)
|
||||
#define ActLstSimUsr (ActChgNumRowFooGrp+153)
|
||||
#define ActRemDupUsr (ActChgNumRowFooGrp+154)
|
||||
#define ActReqRemOldUsr (ActChgNumRowFooGrp+151)
|
||||
#define ActRemOldUsr (ActChgNumRowFooGrp+152)
|
||||
|
||||
#define ActLstClk (ActChgNumRowFooGrp+155)
|
||||
#define ActLstDupUsr (ActChgNumRowFooGrp+153)
|
||||
#define ActLstSimUsr (ActChgNumRowFooGrp+154)
|
||||
#define ActRemDupUsr (ActChgNumRowFooGrp+155)
|
||||
|
||||
#define ActLstClk (ActChgNumRowFooGrp+156)
|
||||
|
||||
/*****************************************************************************/
|
||||
/******************************** Social tab *********************************/
|
||||
|
|
326
swad_agenda.c
326
swad_agenda.c
|
@ -54,6 +54,13 @@ extern struct Globals Gbl;
|
|||
/******************************* Private types *******************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define Agd_NUM_AGENDA_TYPES 2
|
||||
typedef enum
|
||||
{
|
||||
Agd_USR_AGENDA,
|
||||
Agd_MY_AGENDA,
|
||||
} Agd_AgendaType_t;
|
||||
|
||||
/*****************************************************************************/
|
||||
/***************************** Private variables *****************************/
|
||||
/*****************************************************************************/
|
||||
|
@ -62,48 +69,60 @@ extern struct Globals Gbl;
|
|||
/***************************** Private prototypes ****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Agd_ShowAllEvents (void);
|
||||
static bool Agd_CheckIfICanCreateEvents (void);
|
||||
static void Agd_PutIconsListEvents (void);
|
||||
static void Agd_ShowEvents (Agd_AgendaType_t AgendaType);
|
||||
|
||||
static void Agd_PutIconToCreateNewEvent (void);
|
||||
static void Agd_PutButtonToCreateNewEvent (void);
|
||||
static void Agd_PutParamsToCreateNewEvent (void);
|
||||
static void Agd_ShowOneEvent (long AgdCod);
|
||||
static void Agd_ShowOneEvent (Agd_AgendaType_t AgendaType,long AgdCod);
|
||||
static void Agd_WriteEventAuthor (struct AgendaEvent *AgdEvent);
|
||||
static void Agd_GetParamEventOrderType (void);
|
||||
|
||||
static void Agd_PutFormsToRemEditOneEvent (long AgdCod,bool Hidden);
|
||||
static void Agd_PutParams (void);
|
||||
static void Agd_GetListEvents (Agd_AgendaType_t AgendaType);
|
||||
static void Agd_GetDataOfEventByCod (struct AgendaEvent *AgdEvent);
|
||||
static void Agd_GetDataOfEvent (struct AgendaEvent *AgdEvent,const char *Query);
|
||||
static void Agd_GetEventTxtFromDB (long AgdCod,char *Txt);
|
||||
static void Agd_GetEventTxtFromDB (struct AgendaEvent *AgdEvent,char *Txt);
|
||||
static void Agd_PutParamAgdCod (long AgdCod);
|
||||
static bool Agd_CheckIfSimilarEventExists (const char *Field,const char *Value,long AgdCod);
|
||||
static void Agd_CreateEvent (struct AgendaEvent *AgdEvent,const char *Txt);
|
||||
static void Agd_UpdateEvent (struct AgendaEvent *AgdEvent,const char *Txt);
|
||||
|
||||
/*****************************************************************************/
|
||||
/**************************** List all the events ****************************/
|
||||
/************************ Show another user's agenda *************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Agd_SeeEvents (void)
|
||||
void Agd_ShowUsrAgenda (void)
|
||||
{
|
||||
/***** Get parameters *****/
|
||||
Agd_GetParamEventOrderType ();
|
||||
Grp_GetParamWhichGrps ();
|
||||
Pag_GetParamPagNum (Pag_ASSIGNMENTS);
|
||||
extern const char *Txt_User_not_found_or_you_do_not_have_permission_;
|
||||
|
||||
/***** Show all the events *****/
|
||||
Agd_ShowAllEvents ();
|
||||
/***** Get user *****/
|
||||
if (Usr_GetParamOtherUsrCodEncryptedAndGetUsrData ())
|
||||
/***** Show all the visible events in the user's agenda *****/
|
||||
Agd_ShowEvents (Agd_USR_AGENDA);
|
||||
else
|
||||
Lay_ShowAlert (Lay_WARNING,Txt_User_not_found_or_you_do_not_have_permission_);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************************** Show all the events ******************************/
|
||||
/******************************* Show my agenda ******************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Agd_ShowAllEvents (void)
|
||||
void Agd_ShowMyAgenda (void)
|
||||
{
|
||||
/***** Show all my events *****/
|
||||
Agd_ShowEvents (Agd_MY_AGENDA);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/*************************** Show events in agenda ***************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Agd_ShowEvents (Agd_AgendaType_t AgendaType)
|
||||
{
|
||||
extern const char *Hlp_PROFILE_Agenda;
|
||||
extern const char *Txt_Agenda;
|
||||
extern const char *Txt_My_agenda;
|
||||
extern const char *Txt_ASG_ATT_OR_SVY_HELP_ORDER[2];
|
||||
extern const char *Txt_ASG_ATT_OR_SVY_ORDER[2];
|
||||
extern const char *Txt_Event;
|
||||
|
@ -111,26 +130,46 @@ static void Agd_ShowAllEvents (void)
|
|||
extern const char *Txt_No_events;
|
||||
Loc_Order_t Order;
|
||||
struct Pagination Pagination;
|
||||
unsigned NumLoc;
|
||||
unsigned NumEvent;
|
||||
Pag_WhatPaginate_t WhatPaginate[Agd_NUM_AGENDA_TYPES] =
|
||||
{
|
||||
Pag_USR_AGENDA,
|
||||
Pag_MY_AGENDA,
|
||||
};
|
||||
void (*FunctionToDrawContextualIcons[Agd_NUM_AGENDA_TYPES]) (void) =
|
||||
{
|
||||
NULL,
|
||||
Agd_PutIconToCreateNewEvent,
|
||||
};
|
||||
const char *Title[Agd_NUM_AGENDA_TYPES] =
|
||||
{
|
||||
"Agenda de otro usuario",
|
||||
Txt_My_agenda,
|
||||
};
|
||||
|
||||
/***** Get parameters *****/
|
||||
Agd_GetParamEventOrderType ();
|
||||
Pag_GetParamPagNum (WhatPaginate[AgendaType]);
|
||||
|
||||
/***** Get list of events *****/
|
||||
Agd_GetListEvents ();
|
||||
Agd_GetListEvents (AgendaType);
|
||||
|
||||
/***** Compute variables related to pagination *****/
|
||||
Pagination.NumItems = Gbl.Usrs.Me.Locs.Num;
|
||||
Pagination.NumItems = Gbl.Agenda.Num;
|
||||
Pagination.CurrentPage = (int) Gbl.Pag.CurrentPage;
|
||||
Pag_CalculatePagination (&Pagination);
|
||||
Gbl.Pag.CurrentPage = (unsigned) Pagination.CurrentPage;
|
||||
|
||||
/***** Write links to pages *****/
|
||||
if (Pagination.MoreThanOnePage)
|
||||
Pag_WriteLinksToPagesCentered (Pag_ASSIGNMENTS,0,&Pagination);
|
||||
Pag_WriteLinksToPagesCentered (WhatPaginate[AgendaType],0,&Pagination);
|
||||
|
||||
/***** Start frame *****/
|
||||
Lay_StartRoundFrame ("100%",Txt_Agenda,
|
||||
Agd_PutIconsListEvents,Hlp_PROFILE_Agenda);
|
||||
Lay_StartRoundFrame ("100%",Title[AgendaType],
|
||||
FunctionToDrawContextualIcons[AgendaType],
|
||||
Hlp_PROFILE_Agenda);
|
||||
|
||||
if (Gbl.Usrs.Me.Locs.Num)
|
||||
if (Gbl.Agenda.Num)
|
||||
{
|
||||
/***** Table head *****/
|
||||
fprintf (Gbl.F.Out,"<table class=\"FRAME_TBL_MARGIN CELLS_PAD_2\">"
|
||||
|
@ -140,15 +179,23 @@ static void Agd_ShowAllEvents (void)
|
|||
Order++)
|
||||
{
|
||||
fprintf (Gbl.F.Out,"<th class=\"LEFT_MIDDLE\">");
|
||||
Act_FormStart (ActSeeMyAgd);
|
||||
Grp_PutParamWhichGrps ();
|
||||
switch (AgendaType)
|
||||
{
|
||||
case Agd_USR_AGENDA:
|
||||
Act_FormStart (ActSeeUsrAgd);
|
||||
Usr_PutParamOtherUsrCodEncrypted ();
|
||||
break;
|
||||
case Agd_MY_AGENDA:
|
||||
Act_FormStart (ActSeeMyAgd);
|
||||
break;
|
||||
}
|
||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
||||
Act_LinkFormSubmit (Txt_ASG_ATT_OR_SVY_HELP_ORDER[Order],"TIT_TBL",NULL);
|
||||
if (Order == Gbl.Usrs.Me.Locs.SelectedOrderType)
|
||||
if (Order == Gbl.Agenda.SelectedOrderType)
|
||||
fprintf (Gbl.F.Out,"<u>");
|
||||
fprintf (Gbl.F.Out,"%s",Txt_ASG_ATT_OR_SVY_ORDER[Order]);
|
||||
if (Order == Gbl.Usrs.Me.Locs.SelectedOrderType)
|
||||
if (Order == Gbl.Agenda.SelectedOrderType)
|
||||
fprintf (Gbl.F.Out,"</u>");
|
||||
fprintf (Gbl.F.Out,"</a>");
|
||||
Act_FormEnd ();
|
||||
|
@ -165,10 +212,10 @@ static void Agd_ShowAllEvents (void)
|
|||
Txt_Location);
|
||||
|
||||
/***** Write all the events *****/
|
||||
for (NumLoc = Pagination.FirstItemVisible;
|
||||
NumLoc <= Pagination.LastItemVisible;
|
||||
NumLoc++)
|
||||
Agd_ShowOneEvent (Gbl.Usrs.Me.Locs.LstLocCods[NumLoc - 1]);
|
||||
for (NumEvent = Pagination.FirstItemVisible;
|
||||
NumEvent <= Pagination.LastItemVisible;
|
||||
NumEvent++)
|
||||
Agd_ShowOneEvent (AgendaType,Gbl.Agenda.LstAgdCods[NumEvent - 1]);
|
||||
|
||||
/***** End table *****/
|
||||
fprintf (Gbl.F.Out,"</table>");
|
||||
|
@ -177,7 +224,7 @@ static void Agd_ShowAllEvents (void)
|
|||
Lay_ShowAlert (Lay_INFO,Txt_No_events);
|
||||
|
||||
/***** Button to create a new event *****/
|
||||
if (Agd_CheckIfICanCreateEvents ())
|
||||
if (AgendaType == Agd_MY_AGENDA)
|
||||
Agd_PutButtonToCreateNewEvent ();
|
||||
|
||||
/***** End frame *****/
|
||||
|
@ -185,33 +232,12 @@ static void Agd_ShowAllEvents (void)
|
|||
|
||||
/***** Write again links to pages *****/
|
||||
if (Pagination.MoreThanOnePage)
|
||||
Pag_WriteLinksToPagesCentered (Pag_ASSIGNMENTS,0,&Pagination);
|
||||
Pag_WriteLinksToPagesCentered (WhatPaginate[AgendaType],0,&Pagination);
|
||||
|
||||
/***** Free list of events *****/
|
||||
Agd_FreeListEvents ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********************** Check if I can create events *************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static bool Agd_CheckIfICanCreateEvents (void)
|
||||
{
|
||||
return (bool) (Gbl.Usrs.Me.LoggedRole == Rol_TEACHER ||
|
||||
Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/****************** Put contextual icons in list of events *******************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Agd_PutIconsListEvents (void)
|
||||
{
|
||||
/***** Put icon to create a new event *****/
|
||||
if (Agd_CheckIfICanCreateEvents ())
|
||||
Agd_PutIconToCreateNewEvent ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********************** Put icon to create a new event ***********************/
|
||||
/*****************************************************************************/
|
||||
|
@ -248,7 +274,6 @@ static void Agd_PutButtonToCreateNewEvent (void)
|
|||
static void Agd_PutParamsToCreateNewEvent (void)
|
||||
{
|
||||
Agd_PutHiddenParamEventsOrderType ();
|
||||
Grp_PutParamWhichGrps ();
|
||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||
}
|
||||
|
||||
|
@ -256,7 +281,7 @@ static void Agd_PutParamsToCreateNewEvent (void)
|
|||
/******************************* Show one event ******************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Agd_ShowOneEvent (long AgdCod)
|
||||
static void Agd_ShowOneEvent (Agd_AgendaType_t AgendaType,long AgdCod)
|
||||
{
|
||||
extern const char *Txt_Today;
|
||||
static unsigned UniqueId = 0;
|
||||
|
@ -265,15 +290,24 @@ static void Agd_ShowOneEvent (long AgdCod)
|
|||
|
||||
/***** Get data of this event *****/
|
||||
AgdEvent.AgdCod = AgdCod;
|
||||
switch (AgendaType)
|
||||
{
|
||||
case Agd_USR_AGENDA:
|
||||
AgdEvent.UsrCod = Gbl.Usrs.Other.UsrDat.UsrCod;
|
||||
break;
|
||||
case Agd_MY_AGENDA:
|
||||
AgdEvent.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod;
|
||||
break;
|
||||
}
|
||||
Agd_GetDataOfEventByCod (&AgdEvent);
|
||||
|
||||
/***** Write first row of data of this event *****/
|
||||
/* Start date/time */
|
||||
UniqueId++;
|
||||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<td id=\"asg_date_start_%u\" class=\"%s LEFT_TOP COLOR%u\">"
|
||||
"<td id=\"agd_date_start_%u\" class=\"%s LEFT_TOP COLOR%u\">"
|
||||
"<script type=\"text/javascript\">"
|
||||
"writeLocalDateHMSFromUTC('asg_date_start_%u',%ld,'<br />','%s');"
|
||||
"writeLocalDateHMSFromUTC('agd_date_start_%u',%ld,'<br />','%s');"
|
||||
"</script>"
|
||||
"</td>",
|
||||
UniqueId,
|
||||
|
@ -286,9 +320,9 @@ static void Agd_ShowOneEvent (long AgdCod)
|
|||
|
||||
/* End date/time */
|
||||
UniqueId++;
|
||||
fprintf (Gbl.F.Out,"<td id=\"asg_date_end_%u\" class=\"%s LEFT_TOP COLOR%u\">"
|
||||
fprintf (Gbl.F.Out,"<td id=\"agd_date_end_%u\" class=\"%s LEFT_TOP COLOR%u\">"
|
||||
"<script type=\"text/javascript\">"
|
||||
"writeLocalDateHMSFromUTC('asg_date_end_%u',%ld,'<br />','%s');"
|
||||
"writeLocalDateHMSFromUTC('agd_date_end_%u',%ld,'<br />','%s');"
|
||||
"</script>"
|
||||
"</td>",
|
||||
UniqueId,
|
||||
|
@ -327,19 +361,13 @@ static void Agd_ShowOneEvent (long AgdCod)
|
|||
Agd_WriteEventAuthor (&AgdEvent);
|
||||
|
||||
/* Forms to remove/edit this event */
|
||||
switch (Gbl.Usrs.Me.LoggedRole)
|
||||
{
|
||||
case Rol_TEACHER:
|
||||
case Rol_SYS_ADM:
|
||||
Agd_PutFormsToRemEditOneEvent (AgdEvent.AgdCod,AgdEvent.Hidden);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (AgendaType == Agd_MY_AGENDA)
|
||||
Agd_PutFormsToRemEditOneEvent (AgdEvent.AgdCod,AgdEvent.Hidden);
|
||||
|
||||
fprintf (Gbl.F.Out,"</td>");
|
||||
|
||||
/* Text of the event */
|
||||
Agd_GetEventTxtFromDB (AgdEvent.AgdCod,Txt);
|
||||
Agd_GetEventTxtFromDB (&AgdEvent,Txt);
|
||||
Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML,
|
||||
Txt,Cns_MAX_BYTES_TEXT,false); // Convert from HTML to recpectful HTML
|
||||
Str_InsertLinks (Txt,Cns_MAX_BYTES_TEXT,60); // Insert links
|
||||
|
@ -413,9 +441,9 @@ static void Agd_GetParamEventOrderType (void)
|
|||
|
||||
Par_GetParToText ("Order",UnsignedStr,10);
|
||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
||||
Gbl.Usrs.Me.Locs.SelectedOrderType = (Loc_Order_t) UnsignedNum;
|
||||
Gbl.Agenda.SelectedOrderType = (Loc_Order_t) UnsignedNum;
|
||||
else
|
||||
Gbl.Usrs.Me.Locs.SelectedOrderType = Loc_DEFAULT_ORDER_TYPE;
|
||||
Gbl.Agenda.SelectedOrderType = Loc_DEFAULT_ORDER_TYPE;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -424,7 +452,7 @@ static void Agd_GetParamEventOrderType (void)
|
|||
|
||||
void Agd_PutHiddenParamEventsOrderType (void)
|
||||
{
|
||||
Par_PutHiddenParamUnsigned ("Order",(unsigned) Gbl.Usrs.Me.Locs.SelectedOrderType);
|
||||
Par_PutHiddenParamUnsigned ("Order",(unsigned) Gbl.Agenda.SelectedOrderType);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -440,7 +468,7 @@ static void Agd_PutFormsToRemEditOneEvent (long AgdCod,bool Hidden)
|
|||
|
||||
fprintf (Gbl.F.Out,"<div>");
|
||||
|
||||
Gbl.Usrs.Me.Locs.LocCodToEdit = AgdCod; // Used as parameter in contextual links
|
||||
Gbl.Agenda.AgdCodToEdit = AgdCod; // Used as parameter in contextual links
|
||||
|
||||
/***** Put form to remove event *****/
|
||||
Lay_PutContextualLink (ActReqRemEvtMyAgd,Agd_PutParams,
|
||||
|
@ -475,41 +503,29 @@ static void Agd_PutFormsToRemEditOneEvent (long AgdCod,bool Hidden)
|
|||
|
||||
static void Agd_PutParams (void)
|
||||
{
|
||||
Agd_PutParamAgdCod (Gbl.Usrs.Me.Locs.LocCodToEdit);
|
||||
Agd_PutParamAgdCod (Gbl.Agenda.AgdCodToEdit);
|
||||
Agd_PutHiddenParamEventsOrderType ();
|
||||
Grp_PutParamWhichGrps ();
|
||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/*************************** List all the events *****************************/
|
||||
/************************* Get list of agenda events *************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Agd_GetListEvents (void)
|
||||
static void Agd_GetListEvents (Agd_AgendaType_t AgendaType)
|
||||
{
|
||||
char HiddenSubQuery[256];
|
||||
char OrderBySubQuery[256];
|
||||
char Query[2048];
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
unsigned long NumRows;
|
||||
unsigned NumLoc;
|
||||
unsigned NumEvent;
|
||||
|
||||
if (Gbl.Usrs.Me.Locs.LstIsRead)
|
||||
if (Gbl.Agenda.LstIsRead)
|
||||
Agd_FreeListEvents ();
|
||||
|
||||
/***** Get list of events from database *****/
|
||||
switch (Gbl.Usrs.Me.LoggedRole)
|
||||
{
|
||||
case Rol_TEACHER:
|
||||
case Rol_SYS_ADM:
|
||||
HiddenSubQuery[0] = '\0';
|
||||
break;
|
||||
default:
|
||||
sprintf (HiddenSubQuery,"AND Hidden='N'");
|
||||
break;
|
||||
}
|
||||
switch (Gbl.Usrs.Me.Locs.SelectedOrderType)
|
||||
switch (Gbl.Agenda.SelectedOrderType)
|
||||
{
|
||||
case Loc_ORDER_BY_START_DATE:
|
||||
sprintf (OrderBySubQuery,"StartTime DESC,EndTime DESC,Location DESC,Event DESC");
|
||||
|
@ -518,46 +534,59 @@ void Agd_GetListEvents (void)
|
|||
sprintf (OrderBySubQuery,"EndTime DESC,StartTime DESC,Location DESC,Event DESC");
|
||||
break;
|
||||
}
|
||||
sprintf (Query,"SELECT AgdCod"
|
||||
" FROM agendas"
|
||||
" WHERE UsrCod='%ld'%s"
|
||||
" ORDER BY %s",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,HiddenSubQuery,OrderBySubQuery);
|
||||
switch (AgendaType)
|
||||
{
|
||||
case Agd_USR_AGENDA:
|
||||
sprintf (Query,"SELECT AgdCod"
|
||||
" FROM agendas"
|
||||
" WHERE UsrCod='%ld' AND Hidden='N'"
|
||||
" AND EndTime>NOW()" // Only not obsolete events
|
||||
" ORDER BY %s",
|
||||
Gbl.Usrs.Other.UsrDat.UsrCod,OrderBySubQuery);
|
||||
break;
|
||||
case Agd_MY_AGENDA:
|
||||
sprintf (Query,"SELECT AgdCod"
|
||||
" FROM agendas"
|
||||
" WHERE UsrCod='%ld'"
|
||||
" ORDER BY %s",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,OrderBySubQuery);
|
||||
break;
|
||||
}
|
||||
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get agenda events");
|
||||
|
||||
if (NumRows) // Events found...
|
||||
{
|
||||
Gbl.Usrs.Me.Locs.Num = (unsigned) NumRows;
|
||||
Gbl.Agenda.Num = (unsigned) NumRows;
|
||||
|
||||
/***** Create list of events *****/
|
||||
if ((Gbl.Usrs.Me.Locs.LstLocCods = (long *) calloc (NumRows,sizeof (long))) == NULL)
|
||||
if ((Gbl.Agenda.LstAgdCods = (long *) calloc (NumRows,sizeof (long))) == NULL)
|
||||
Lay_ShowErrorAndExit ("Not enough memory to store list of agenda events.");
|
||||
|
||||
/***** Get the events codes *****/
|
||||
for (NumLoc = 0;
|
||||
NumLoc < Gbl.Usrs.Me.Locs.Num;
|
||||
NumLoc++)
|
||||
for (NumEvent = 0;
|
||||
NumEvent < Gbl.Agenda.Num;
|
||||
NumEvent++)
|
||||
{
|
||||
/* Get next event code */
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
if ((Gbl.Usrs.Me.Locs.LstLocCods[NumLoc] = Str_ConvertStrCodToLongCod (row[0])) < 0)
|
||||
if ((Gbl.Agenda.LstAgdCods[NumEvent] = Str_ConvertStrCodToLongCod (row[0])) < 0)
|
||||
Lay_ShowErrorAndExit ("Error: wrong event code.");
|
||||
}
|
||||
}
|
||||
else
|
||||
Gbl.Usrs.Me.Locs.Num = 0;
|
||||
Gbl.Agenda.Num = 0;
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
|
||||
Gbl.Usrs.Me.Locs.LstIsRead = true;
|
||||
Gbl.Agenda.LstIsRead = true;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/*********************** Get event data using its code ***********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Agd_GetDataOfEventByCod (struct AgendaEvent *AgdEvent)
|
||||
static void Agd_GetDataOfEventByCod (struct AgendaEvent *AgdEvent)
|
||||
{
|
||||
char Query[1024];
|
||||
|
||||
|
@ -569,7 +598,7 @@ void Agd_GetDataOfEventByCod (struct AgendaEvent *AgdEvent)
|
|||
"Event,Location"
|
||||
" FROM agendas"
|
||||
" WHERE AgdCod='%ld' AND UsrCod='%ld'",
|
||||
AgdEvent->AgdCod,Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
AgdEvent->AgdCod,AgdEvent->UsrCod);
|
||||
|
||||
/***** Get data of event *****/
|
||||
Agd_GetDataOfEvent (AgdEvent,Query);
|
||||
|
@ -638,13 +667,13 @@ static void Agd_GetDataOfEvent (struct AgendaEvent *AgdEvent,const char *Query)
|
|||
|
||||
void Agd_FreeListEvents (void)
|
||||
{
|
||||
if (Gbl.Usrs.Me.Locs.LstIsRead && Gbl.Usrs.Me.Locs.LstLocCods)
|
||||
if (Gbl.Agenda.LstIsRead && Gbl.Agenda.LstAgdCods)
|
||||
{
|
||||
/***** Free memory used by the list of events *****/
|
||||
free ((void *) Gbl.Usrs.Me.Locs.LstLocCods);
|
||||
Gbl.Usrs.Me.Locs.LstLocCods = NULL;
|
||||
Gbl.Usrs.Me.Locs.Num = 0;
|
||||
Gbl.Usrs.Me.Locs.LstIsRead = false;
|
||||
free ((void *) Gbl.Agenda.LstAgdCods);
|
||||
Gbl.Agenda.LstAgdCods = NULL;
|
||||
Gbl.Agenda.Num = 0;
|
||||
Gbl.Agenda.LstIsRead = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -652,7 +681,7 @@ void Agd_FreeListEvents (void)
|
|||
/*********************** Get event text from database ************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Agd_GetEventTxtFromDB (long AgdCod,char *Txt)
|
||||
static void Agd_GetEventTxtFromDB (struct AgendaEvent *AgdEvent,char *Txt)
|
||||
{
|
||||
char Query[512];
|
||||
MYSQL_RES *mysql_res;
|
||||
|
@ -662,7 +691,7 @@ static void Agd_GetEventTxtFromDB (long AgdCod,char *Txt)
|
|||
/***** Get text of event from database *****/
|
||||
sprintf (Query,"SELECT Txt FROM agendas"
|
||||
" WHERE AgdCod='%ld' AND UsrCod='%ld'",
|
||||
AgdCod,Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
AgdEvent->AgdCod,AgdEvent->UsrCod);
|
||||
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get event text");
|
||||
|
||||
/***** The result of the query must have one row or none *****/
|
||||
|
@ -716,21 +745,20 @@ void Agd_AskRemEvent (void)
|
|||
|
||||
/***** Get parameters *****/
|
||||
Agd_GetParamEventOrderType ();
|
||||
Grp_GetParamWhichGrps ();
|
||||
Pag_GetParamPagNum (Pag_ASSIGNMENTS);
|
||||
Pag_GetParamPagNum (Pag_MY_AGENDA);
|
||||
|
||||
/***** Get event code *****/
|
||||
if ((AgdEvent.AgdCod = Agd_GetParamAgdCod ()) == -1L)
|
||||
Lay_ShowErrorAndExit ("Code of event is missing.");
|
||||
|
||||
/***** Get data of the event from database *****/
|
||||
AgdEvent.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod;
|
||||
Agd_GetDataOfEventByCod (&AgdEvent);
|
||||
|
||||
/***** Button of confirmation of removing *****/
|
||||
Act_FormStart (ActRemEvtMyAgd);
|
||||
Agd_PutParamAgdCod (AgdEvent.AgdCod);
|
||||
Agd_PutHiddenParamEventsOrderType ();
|
||||
Grp_PutParamWhichGrps ();
|
||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||
|
||||
/***** Ask for confirmation of removing *****/
|
||||
|
@ -741,7 +769,7 @@ void Agd_AskRemEvent (void)
|
|||
Act_FormEnd ();
|
||||
|
||||
/***** Show events again *****/
|
||||
Agd_SeeEvents ();
|
||||
Agd_ShowMyAgenda ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -759,6 +787,7 @@ void Agd_RemoveEvent (void)
|
|||
Lay_ShowErrorAndExit ("Code of event is missing.");
|
||||
|
||||
/***** Get data of the event from database *****/
|
||||
AgdEvent.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod;
|
||||
Agd_GetDataOfEventByCod (&AgdEvent); // Inside this function, the course is checked to be the current one
|
||||
|
||||
/***** Remove event *****/
|
||||
|
@ -772,7 +801,7 @@ void Agd_RemoveEvent (void)
|
|||
Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
|
||||
|
||||
/***** Show events again *****/
|
||||
Agd_SeeEvents ();
|
||||
Agd_ShowMyAgenda ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -790,6 +819,7 @@ void Agd_HideEvent (void)
|
|||
Lay_ShowErrorAndExit ("Code of event is missing.");
|
||||
|
||||
/***** Get data of the event from database *****/
|
||||
AgdEvent.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod;
|
||||
Agd_GetDataOfEventByCod (&AgdEvent);
|
||||
|
||||
/***** Hide event *****/
|
||||
|
@ -803,7 +833,7 @@ void Agd_HideEvent (void)
|
|||
Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
|
||||
|
||||
/***** Show events again *****/
|
||||
Agd_SeeEvents ();
|
||||
Agd_ShowMyAgenda ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -821,6 +851,7 @@ void Agd_ShowEvent (void)
|
|||
Lay_ShowErrorAndExit ("Code of event is missing.");
|
||||
|
||||
/***** Get data of the event from database *****/
|
||||
AgdEvent.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod;
|
||||
Agd_GetDataOfEventByCod (&AgdEvent);
|
||||
|
||||
/***** Hide event *****/
|
||||
|
@ -835,7 +866,7 @@ void Agd_ShowEvent (void)
|
|||
Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
|
||||
|
||||
/***** Show events again *****/
|
||||
Agd_SeeEvents ();
|
||||
Agd_ShowMyAgenda ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -875,8 +906,7 @@ void Agd_RequestCreatOrEditEvent (void)
|
|||
|
||||
/***** Get parameters *****/
|
||||
Agd_GetParamEventOrderType ();
|
||||
Grp_GetParamWhichGrps ();
|
||||
Pag_GetParamPagNum (Pag_ASSIGNMENTS);
|
||||
Pag_GetParamPagNum (Pag_MY_AGENDA);
|
||||
|
||||
/***** Get the code of the event *****/
|
||||
ItsANewEvent = ((AgdEvent.AgdCod = Agd_GetParamAgdCod ()) == -1L);
|
||||
|
@ -895,11 +925,13 @@ void Agd_RequestCreatOrEditEvent (void)
|
|||
}
|
||||
else
|
||||
{
|
||||
AgdEvent.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod;
|
||||
|
||||
/* Get data of the event from database */
|
||||
Agd_GetDataOfEventByCod (&AgdEvent);
|
||||
|
||||
/* Get text of the event from database */
|
||||
Agd_GetEventTxtFromDB (AgdEvent.AgdCod,Txt);
|
||||
Agd_GetEventTxtFromDB (&AgdEvent,Txt);
|
||||
}
|
||||
|
||||
/***** Start form *****/
|
||||
|
@ -911,7 +943,6 @@ void Agd_RequestCreatOrEditEvent (void)
|
|||
Agd_PutParamAgdCod (AgdEvent.AgdCod);
|
||||
}
|
||||
Agd_PutHiddenParamEventsOrderType ();
|
||||
Grp_PutParamWhichGrps ();
|
||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||
|
||||
/***** Table start *****/
|
||||
|
@ -979,7 +1010,7 @@ void Agd_RequestCreatOrEditEvent (void)
|
|||
Act_FormEnd ();
|
||||
|
||||
/***** Show current events, if any *****/
|
||||
Agd_ShowAllEvents ();
|
||||
Agd_ShowEvents (Agd_MY_AGENDA);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -992,57 +1023,58 @@ void Agd_RecFormEvent (void)
|
|||
extern const char *Txt_You_must_specify_the_title_of_the_event;
|
||||
extern const char *Txt_Created_new_event_X;
|
||||
extern const char *Txt_The_event_has_been_modified;
|
||||
struct AgendaEvent OldLoc;
|
||||
struct AgendaEvent NewLoc;
|
||||
struct AgendaEvent OldAgdEvent;
|
||||
struct AgendaEvent NewAgdEvent;
|
||||
bool ItsANewEvent;
|
||||
bool NewEventIsCorrect = true;
|
||||
char Txt[Cns_MAX_BYTES_TEXT+1];
|
||||
|
||||
/***** Get the code of the event *****/
|
||||
ItsANewEvent = ((NewLoc.AgdCod = Agd_GetParamAgdCod ()) == -1L);
|
||||
ItsANewEvent = ((NewAgdEvent.AgdCod = Agd_GetParamAgdCod ()) == -1L);
|
||||
|
||||
if (!ItsANewEvent)
|
||||
{
|
||||
/* Get data of the old (current) event from database */
|
||||
OldLoc.AgdCod = NewLoc.AgdCod;
|
||||
Agd_GetDataOfEventByCod (&OldLoc);
|
||||
OldAgdEvent.AgdCod = NewAgdEvent.AgdCod;
|
||||
OldAgdEvent.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod;
|
||||
Agd_GetDataOfEventByCod (&OldAgdEvent);
|
||||
}
|
||||
|
||||
/***** Get start/end date-times *****/
|
||||
NewLoc.TimeUTC[Loc_START_TIME] = Dat_GetTimeUTCFromForm ("StartTimeUTC");
|
||||
NewLoc.TimeUTC[Loc_END_TIME ] = Dat_GetTimeUTCFromForm ("EndTimeUTC" );
|
||||
NewAgdEvent.TimeUTC[Loc_START_TIME] = Dat_GetTimeUTCFromForm ("StartTimeUTC");
|
||||
NewAgdEvent.TimeUTC[Loc_END_TIME ] = Dat_GetTimeUTCFromForm ("EndTimeUTC" );
|
||||
|
||||
/***** Get event *****/
|
||||
Par_GetParToText ("Location",NewLoc.Location,Loc_MAX_LENGTH_LOCATION);
|
||||
Par_GetParToText ("Location",NewAgdEvent.Location,Loc_MAX_LENGTH_LOCATION);
|
||||
|
||||
/***** Get event *****/
|
||||
Par_GetParToText ("Event",NewLoc.Event,Loc_MAX_LENGTH_EVENT);
|
||||
Par_GetParToText ("Event",NewAgdEvent.Event,Loc_MAX_LENGTH_EVENT);
|
||||
|
||||
/***** Get text *****/
|
||||
Par_GetParToHTML ("Txt",Txt,Cns_MAX_BYTES_TEXT); // Store in HTML format (not rigorous)
|
||||
|
||||
/***** Adjust dates *****/
|
||||
if (NewLoc.TimeUTC[Loc_START_TIME] == 0)
|
||||
NewLoc.TimeUTC[Loc_START_TIME] = Gbl.StartExecutionTimeUTC;
|
||||
if (NewLoc.TimeUTC[Loc_END_TIME] == 0)
|
||||
NewLoc.TimeUTC[Loc_END_TIME] = NewLoc.TimeUTC[Loc_START_TIME] + 2*60*60; // +2 hours
|
||||
if (NewAgdEvent.TimeUTC[Loc_START_TIME] == 0)
|
||||
NewAgdEvent.TimeUTC[Loc_START_TIME] = Gbl.StartExecutionTimeUTC;
|
||||
if (NewAgdEvent.TimeUTC[Loc_END_TIME] == 0)
|
||||
NewAgdEvent.TimeUTC[Loc_END_TIME] = NewAgdEvent.TimeUTC[Loc_START_TIME] + 2*60*60; // +2 hours
|
||||
|
||||
/***** Check if event is correct *****/
|
||||
if (!NewLoc.Location[0]) // If there is no event
|
||||
if (!NewAgdEvent.Location[0]) // If there is no event
|
||||
{
|
||||
NewEventIsCorrect = false;
|
||||
Lay_ShowAlert (Lay_WARNING,Txt_You_must_specify_the_title_of_the_event);
|
||||
}
|
||||
|
||||
/***** Check if event is correct *****/
|
||||
if (NewLoc.Event[0]) // If there's event
|
||||
if (NewAgdEvent.Event[0]) // If there's event
|
||||
{
|
||||
/* If title of event was in database... */
|
||||
if (Agd_CheckIfSimilarEventExists ("Event",NewLoc.Event,NewLoc.AgdCod))
|
||||
if (Agd_CheckIfSimilarEventExists ("Event",NewAgdEvent.Event,NewAgdEvent.AgdCod))
|
||||
{
|
||||
NewEventIsCorrect = false;
|
||||
sprintf (Gbl.Message,Txt_Already_existed_an_event_with_the_title_X,
|
||||
NewLoc.Event);
|
||||
NewAgdEvent.Event);
|
||||
Lay_ShowAlert (Lay_WARNING,Gbl.Message);
|
||||
}
|
||||
}
|
||||
|
@ -1057,15 +1089,15 @@ void Agd_RecFormEvent (void)
|
|||
{
|
||||
if (ItsANewEvent)
|
||||
{
|
||||
Agd_CreateEvent (&NewLoc,Txt); // Add new event to database
|
||||
Agd_CreateEvent (&NewAgdEvent,Txt); // Add new event to database
|
||||
|
||||
/***** Write success message *****/
|
||||
sprintf (Gbl.Message,Txt_Created_new_event_X,NewLoc.Event);
|
||||
sprintf (Gbl.Message,Txt_Created_new_event_X,NewAgdEvent.Event);
|
||||
Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
|
||||
}
|
||||
else
|
||||
{
|
||||
Agd_UpdateEvent (&NewLoc,Txt);
|
||||
Agd_UpdateEvent (&NewAgdEvent,Txt);
|
||||
|
||||
/***** Write success message *****/
|
||||
Lay_ShowAlert (Lay_SUCCESS,Txt_The_event_has_been_modified);
|
||||
|
@ -1075,7 +1107,7 @@ void Agd_RecFormEvent (void)
|
|||
Grp_FreeListCodSelectedGrps ();
|
||||
|
||||
/***** Show events again *****/
|
||||
Agd_SeeEvents ();
|
||||
Agd_ShowMyAgenda ();
|
||||
}
|
||||
else
|
||||
// TODO: The form should be filled with partial data, now is always empty
|
||||
|
|
|
@ -76,11 +76,11 @@ typedef enum
|
|||
/***************************** Public prototypes *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Agd_SeeEvents (void);
|
||||
void Agd_ShowUsrAgenda (void);
|
||||
void Agd_ShowMyAgenda (void);
|
||||
|
||||
void Agd_PutHiddenParamEventsOrderType (void);
|
||||
void Agd_RequestCreatOrEditEvent (void);
|
||||
void Agd_GetListEvents (void);
|
||||
void Agd_GetDataOfEventByCod (struct AgendaEvent *AgdEvent);
|
||||
void Agd_FreeListEvents (void);
|
||||
|
||||
long Agd_GetParamAgdCod (void);
|
||||
|
|
|
@ -185,13 +185,26 @@
|
|||
/****************************** Public constants *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define Log_PLATFORM_VERSION "SWAD 16.81.5 (2016-12-01)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 16.82 (2016-12-02)"
|
||||
#define CSS_FILE "swad16.69.css"
|
||||
#define JS_FILE "swad16.46.1.js"
|
||||
|
||||
// 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
|
||||
/*
|
||||
Version 16.82: Dec 02, 2016 New action to show agenda another user's agenda. (209425 lines)
|
||||
10 changes necessary in database:
|
||||
UPDATE actions SET Txt='Ver mi agenda' WHERE ActCod='1602' AND Language='es';
|
||||
UPDATE actions SET Txt='Solicitar creación evento mi agenda' WHERE ActCod='1603' AND Language='es';
|
||||
UPDATE actions SET Txt='Solicitar edición evento mi agenda' WHERE ActCod='1604' AND Language='es';
|
||||
UPDATE actions SET Txt='Crear evento mi agenda' WHERE ActCod='1605' AND Language='es';
|
||||
UPDATE actions SET Txt='Cambiar evento mi agenda' WHERE ActCod='1606' AND Language='es';
|
||||
UPDATE actions SET Txt='Solicitar eliminación evento mi agenda' WHERE ActCod='1607' AND Language='es';
|
||||
UPDATE actions SET Txt='Eliminar evento mi agenda' WHERE ActCod='1608' AND Language='es';
|
||||
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1609','es','N','Hacer privado evento mi agenda');
|
||||
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1610','es','N','Hacer público evento mi agenda');
|
||||
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1611','es','N','Ver agenda otro usuario');
|
||||
|
||||
Version 16.81.5: Dec 01, 2016 Link in teacher's record card to show agenda. (209313 lines)
|
||||
Copy the following icon to icon public directory:
|
||||
sudo cp icon/date64x64.gif /var/www/html/swad/icon/
|
||||
|
|
|
@ -355,14 +355,6 @@ struct Globals
|
|||
long DegCod;
|
||||
} Crss[Crs_MAX_COURSES_PER_USR];
|
||||
} MyCrss;
|
||||
struct
|
||||
{
|
||||
bool LstIsRead; // Is the list already read from database, or it needs to be read?
|
||||
unsigned Num; // Number of locations
|
||||
long *LstLocCods; // List of location codes
|
||||
Loc_Order_t SelectedOrderType;
|
||||
long LocCodToEdit; // Used as parameter in contextual links
|
||||
} Locs;
|
||||
Usr_ShowUsrsType_t ListType; // My preference about user's list type
|
||||
unsigned NumFollowers; // Number of users who follow me
|
||||
unsigned NumFollowing; // Number of users I follow
|
||||
|
@ -413,6 +405,14 @@ struct Globals
|
|||
struct UsrData *UsrDat;
|
||||
Rec_SharedRecordViewType_t TypeOfView;
|
||||
} Record;
|
||||
struct
|
||||
{
|
||||
bool LstIsRead; // Is the list already read from database, or it needs to be read?
|
||||
unsigned Num; // Number of events
|
||||
long *LstAgdCods; // List of agenda codes
|
||||
Loc_Order_t SelectedOrderType;
|
||||
long AgdCodToEdit; // Used as parameter in contextual links
|
||||
} Agenda;
|
||||
struct
|
||||
{
|
||||
Sco_Scope_t Current;
|
||||
|
|
|
@ -131,6 +131,12 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
|
|||
Asg_PutHiddenParamAsgOrderType ();
|
||||
Grp_PutParamWhichGrps ();
|
||||
break;
|
||||
case Pag_USR_AGENDA:
|
||||
Act_FormStart (ActSeeUsrAgd);
|
||||
Pag_PutHiddenParamPagNum (1);
|
||||
Agd_PutHiddenParamEventsOrderType ();
|
||||
Usr_PutParamOtherUsrCodEncrypted ();
|
||||
break;
|
||||
case Pag_ATT_EVENTS:
|
||||
Act_FormStart (ActSeeAtt);
|
||||
Pag_PutHiddenParamPagNum (1);
|
||||
|
@ -164,6 +170,11 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
|
|||
Asg_PutHiddenParamAsgOrderType ();
|
||||
Grp_PutParamWhichGrps ();
|
||||
break;
|
||||
case Pag_MY_AGENDA:
|
||||
Act_FormStart (ActSeeMyAgd);
|
||||
Pag_PutHiddenParamPagNum (1);
|
||||
Agd_PutHiddenParamEventsOrderType ();
|
||||
break;
|
||||
}
|
||||
sprintf (Gbl.Title,Txt_See_page_X_of_Y,
|
||||
1,(unsigned) Pagination->NumPags);
|
||||
|
@ -208,6 +219,12 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
|
|||
Asg_PutHiddenParamAsgOrderType ();
|
||||
Grp_PutParamWhichGrps ();
|
||||
break;
|
||||
case Pag_USR_AGENDA:
|
||||
Act_FormStart (ActSeeUsrAgd);
|
||||
Pag_PutHiddenParamPagNum (1);
|
||||
Agd_PutHiddenParamEventsOrderType ();
|
||||
Usr_PutParamOtherUsrCodEncrypted ();
|
||||
break;
|
||||
case Pag_ATT_EVENTS:
|
||||
Act_FormStart (ActSeeAtt);
|
||||
Pag_PutHiddenParamPagNum (1);
|
||||
|
@ -241,6 +258,11 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
|
|||
Asg_PutHiddenParamAsgOrderType ();
|
||||
Grp_PutParamWhichGrps ();
|
||||
break;
|
||||
case Pag_MY_AGENDA:
|
||||
Act_FormStart (ActSeeMyAgd);
|
||||
Pag_PutHiddenParamPagNum (1);
|
||||
Agd_PutHiddenParamEventsOrderType ();
|
||||
break;
|
||||
}
|
||||
sprintf (Gbl.Title,Txt_See_page_X_of_Y,
|
||||
1,(unsigned) Pagination->NumPags);
|
||||
|
@ -268,6 +290,12 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
|
|||
Asg_PutHiddenParamAsgOrderType ();
|
||||
Grp_PutParamWhichGrps ();
|
||||
break;
|
||||
case Pag_USR_AGENDA:
|
||||
Act_FormStart (ActSeeUsrAgd);
|
||||
Pag_PutHiddenParamPagNum (Pagination->LeftPage);
|
||||
Agd_PutHiddenParamEventsOrderType ();
|
||||
Usr_PutParamOtherUsrCodEncrypted ();
|
||||
break;
|
||||
case Pag_ATT_EVENTS:
|
||||
Act_FormStart (ActSeeAtt);
|
||||
Pag_PutHiddenParamPagNum (Pagination->LeftPage);
|
||||
|
@ -301,6 +329,11 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
|
|||
Asg_PutHiddenParamAsgOrderType ();
|
||||
Grp_PutParamWhichGrps ();
|
||||
break;
|
||||
case Pag_MY_AGENDA:
|
||||
Act_FormStart (ActSeeMyAgd);
|
||||
Pag_PutHiddenParamPagNum (Pagination->LeftPage);
|
||||
Agd_PutHiddenParamEventsOrderType ();
|
||||
break;
|
||||
}
|
||||
sprintf (Gbl.Title,Txt_See_page_X_of_Y,
|
||||
(unsigned) Pagination->LeftPage,(unsigned) Pagination->NumPags);
|
||||
|
@ -335,6 +368,12 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
|
|||
Asg_PutHiddenParamAsgOrderType ();
|
||||
Grp_PutParamWhichGrps ();
|
||||
break;
|
||||
case Pag_USR_AGENDA:
|
||||
Act_FormStart (ActSeeUsrAgd);
|
||||
Pag_PutHiddenParamPagNum (NumPage);
|
||||
Agd_PutHiddenParamEventsOrderType ();
|
||||
Usr_PutParamOtherUsrCodEncrypted ();
|
||||
break;
|
||||
case Pag_ATT_EVENTS:
|
||||
Act_FormStart (ActSeeAtt);
|
||||
Pag_PutHiddenParamPagNum (NumPage);
|
||||
|
@ -368,6 +407,11 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
|
|||
Asg_PutHiddenParamAsgOrderType ();
|
||||
Grp_PutParamWhichGrps ();
|
||||
break;
|
||||
case Pag_MY_AGENDA:
|
||||
Act_FormStart (ActSeeMyAgd);
|
||||
Pag_PutHiddenParamPagNum (NumPage);
|
||||
Agd_PutHiddenParamEventsOrderType ();
|
||||
break;
|
||||
}
|
||||
sprintf (Gbl.Title,Txt_See_page_X_of_Y,
|
||||
(unsigned) NumPage,(unsigned) Pagination->NumPags);
|
||||
|
@ -398,6 +442,12 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
|
|||
Asg_PutHiddenParamAsgOrderType ();
|
||||
Grp_PutParamWhichGrps ();
|
||||
break;
|
||||
case Pag_USR_AGENDA:
|
||||
Act_FormStart (ActSeeUsrAgd);
|
||||
Pag_PutHiddenParamPagNum (Pagination->RightPage);
|
||||
Agd_PutHiddenParamEventsOrderType ();
|
||||
Usr_PutParamOtherUsrCodEncrypted ();
|
||||
break;
|
||||
case Pag_ATT_EVENTS:
|
||||
Act_FormStart (ActSeeAtt);
|
||||
Pag_PutHiddenParamPagNum (Pagination->RightPage);
|
||||
|
@ -431,6 +481,11 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
|
|||
Asg_PutHiddenParamAsgOrderType ();
|
||||
Grp_PutParamWhichGrps ();
|
||||
break;
|
||||
case Pag_MY_AGENDA:
|
||||
Act_FormStart (ActSeeMyAgd);
|
||||
Pag_PutHiddenParamPagNum (Pagination->RightPage);
|
||||
Agd_PutHiddenParamEventsOrderType ();
|
||||
break;
|
||||
}
|
||||
sprintf (Gbl.Title,Txt_See_page_X_of_Y,
|
||||
(unsigned) Pagination->RightPage,(unsigned) Pagination->NumPags);
|
||||
|
@ -458,6 +513,12 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
|
|||
Asg_PutHiddenParamAsgOrderType ();
|
||||
Grp_PutParamWhichGrps ();
|
||||
break;
|
||||
case Pag_USR_AGENDA:
|
||||
Act_FormStart (ActSeeUsrAgd);
|
||||
Pag_PutHiddenParamPagNum (Pagination->NumPags);
|
||||
Agd_PutHiddenParamEventsOrderType ();
|
||||
Usr_PutParamOtherUsrCodEncrypted ();
|
||||
break;
|
||||
case Pag_ATT_EVENTS:
|
||||
Act_FormStart (ActSeeAtt);
|
||||
Pag_PutHiddenParamPagNum (Pagination->NumPags);
|
||||
|
@ -491,6 +552,11 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,long ThrCod,struct P
|
|||
Asg_PutHiddenParamAsgOrderType ();
|
||||
Grp_PutParamWhichGrps ();
|
||||
break;
|
||||
case Pag_MY_AGENDA:
|
||||
Act_FormStart (ActSeeMyAgd);
|
||||
Pag_PutHiddenParamPagNum (Pagination->NumPags);
|
||||
Agd_PutHiddenParamEventsOrderType ();
|
||||
break;
|
||||
}
|
||||
sprintf (Gbl.Title,Txt_See_page_X_of_Y,
|
||||
(unsigned) Pagination->NumPags,(unsigned) Pagination->NumPags);
|
||||
|
|
|
@ -40,12 +40,14 @@
|
|||
typedef enum
|
||||
{
|
||||
Pag_ASSIGNMENTS,
|
||||
Pag_USR_AGENDA,
|
||||
Pag_ATT_EVENTS,
|
||||
Pag_MESSAGES_RECEIVED,
|
||||
Pag_MESSAGES_SENT,
|
||||
Pag_THREADS_FORUM,
|
||||
Pag_POSTS_FORUM,
|
||||
Pag_SURVEYS,
|
||||
Pag_MY_AGENDA,
|
||||
} Pag_WhatPaginate_t;
|
||||
|
||||
struct Pagination // Used for threads and messages pagination
|
||||
|
|
|
@ -2367,7 +2367,7 @@ static void Rec_PutIconsCommands (void)
|
|||
// The following slow check is made only if the previous fails
|
||||
ICanViewAgenda = Usr_CheckIfUsrSharesAnyOfMyCrs (Gbl.Record.UsrDat->UsrCod);
|
||||
if (ICanViewAgenda)
|
||||
Lay_PutContextualLink (ActSeeMyAgd,
|
||||
Lay_PutContextualLink (ActSeeUsrAgd,
|
||||
Rec_PutParamUsrCodEncrypted,
|
||||
"date64x64.gif",
|
||||
Txt_View_agenda,NULL,
|
||||
|
|
42
swad_text.c
42
swad_text.c
|
@ -2090,27 +2090,6 @@ const char *Txt_Admin_several_teachers =
|
|||
"Gerenciar vários professores";
|
||||
#endif
|
||||
|
||||
const char *Txt_Agenda =
|
||||
#if L==1
|
||||
"Agenda";
|
||||
#elif L==2
|
||||
"Organizer";
|
||||
#elif L==3
|
||||
"Agenda";
|
||||
#elif L==4
|
||||
"Agenda";
|
||||
#elif L==5
|
||||
"Agenda";
|
||||
#elif L==6
|
||||
"Aporyrã";
|
||||
#elif L==7
|
||||
"Agenda";
|
||||
#elif L==8
|
||||
"Pamiętnik";
|
||||
#elif L==9
|
||||
"Agenda";
|
||||
#endif
|
||||
|
||||
const char *Txt_all =
|
||||
#if L==1
|
||||
"tot";
|
||||
|
@ -23198,6 +23177,27 @@ const char *Txt_Multiple_enrollment = // (to a type of group)
|
|||
"Inscrição múltiplas?";
|
||||
#endif
|
||||
|
||||
const char *Txt_My_agenda =
|
||||
#if L==1
|
||||
"La meva agenda";
|
||||
#elif L==2
|
||||
"Mein Organizer";
|
||||
#elif L==3
|
||||
"My agenda";
|
||||
#elif L==4
|
||||
"Mi agenda";
|
||||
#elif L==5
|
||||
"Mon agenda";
|
||||
#elif L==6
|
||||
"Che aporyrã";
|
||||
#elif L==7
|
||||
"La mia agenda";
|
||||
#elif L==8
|
||||
"Moja pamiętnik";
|
||||
#elif L==9
|
||||
"Minha agenda";
|
||||
#endif
|
||||
|
||||
const char *Txt_My_courses =
|
||||
#if L==1
|
||||
"Les meves assignatures";
|
||||
|
|
Loading…
Reference in New Issue