mirror of
https://github.com/acanas/swad-core.git
synced 2024-05-31 22:05:23 +02:00
Version 23.71.3: Mar 22, 2024 Code refactoring.
This commit is contained in:
parent
3aa0b58c7e
commit
566cbc95a4
|
@ -146,7 +146,7 @@ void QR_ImageQRCode (const char *QRString)
|
||||||
|
|
||||||
void QR_LinkTo (unsigned Size,ParCod_Param_t ParCode,long Cod)
|
void QR_LinkTo (unsigned Size,ParCod_Param_t ParCode,long Cod)
|
||||||
{
|
{
|
||||||
extern const char *Par_CodeStr[];
|
extern const char *Par_CodeStr[Par_NUM_PAR_COD];
|
||||||
extern const char *Txt_Shortcut;
|
extern const char *Txt_Shortcut;
|
||||||
char *URL;
|
char *URL;
|
||||||
|
|
||||||
|
|
|
@ -457,8 +457,8 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] =
|
||||||
[ActLftPrgItm ] = {1834,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Prg_MoveLeftItem },
|
[ActLftPrgItm ] = {1834,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Prg_MoveLeftItem },
|
||||||
[ActRgtPrgItm ] = {1833,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Prg_MoveRightItem },
|
[ActRgtPrgItm ] = {1833,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Prg_MoveRightItem },
|
||||||
[ActExpSeePrgItm ] = {1944,-1,TabUnk,ActSeePrg ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Prg_ExpandItem },
|
[ActExpSeePrgItm ] = {1944,-1,TabUnk,ActSeePrg ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Prg_ExpandItem },
|
||||||
[ActExpEdiPrgItm ] = {1946,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Prg_ExpandItem },
|
|
||||||
[ActConSeePrgItm ] = {1945,-1,TabUnk,ActSeePrg ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Prg_ContractItem },
|
[ActConSeePrgItm ] = {1945,-1,TabUnk,ActSeePrg ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Prg_ContractItem },
|
||||||
|
[ActExpEdiPrgItm ] = {1946,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Prg_ExpandItem },
|
||||||
[ActConEdiPrgItm ] = {1947,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Prg_ContractItem },
|
[ActConEdiPrgItm ] = {1947,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Prg_ContractItem },
|
||||||
[ActSeeRscCli_InPrg ] = {1970,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,PrgRsc_ViewResourceClipboard },
|
[ActSeeRscCli_InPrg ] = {1970,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,PrgRsc_ViewResourceClipboard },
|
||||||
[ActRemRscCli_InPrg ] = {1971,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,PrgRsc_RemoveResourceClipboard },
|
[ActRemRscCli_InPrg ] = {1971,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,PrgRsc_RemoveResourceClipboard },
|
||||||
|
@ -1327,7 +1327,7 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] =
|
||||||
[ActLstStd ] = { 678, 1,TabUsr,ActLstStd ,0x3F8,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Usr_SeeStudents },
|
[ActLstStd ] = { 678, 1,TabUsr,ActLstStd ,0x3F8,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Usr_SeeStudents },
|
||||||
[ActLstStdAll ] = { 42,-1,TabUnk,ActLstStd ,0x3F8,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_NEW_TAB,NULL ,Usr_ListAllDataStds },
|
[ActLstStdAll ] = { 42,-1,TabUnk,ActLstStd ,0x3F8,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_NEW_TAB,NULL ,Usr_ListAllDataStds },
|
||||||
[ActPrnStdPho ] = { 120,-1,TabUnk,ActLstStd ,0x3F8,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_NEW_TAB,NULL ,Usr_SeeStdClassPhotoPrn },
|
[ActPrnStdPho ] = { 120,-1,TabUnk,ActLstStd ,0x3F8,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_NEW_TAB,NULL ,Usr_SeeStdClassPhotoPrn },
|
||||||
[ActDoActOnSevStd ] = {1754,-1,TabUnk,ActLstStd ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,Usr_DoActionOnSeveralUsrs1 ,Usr_DoActionOnSeveralUsrs2 },
|
[Act_DoAct_OnSevStd ] = {1754,-1,TabUnk,ActLstStd ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,Usr_DoActionOnSeveralUsrs1 ,Usr_DoActionOnSeveralUsrs2 },
|
||||||
[ActSeeRecSevStd ] = { 89,-1,TabUnk,ActLstStd ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Rec_ListRecordsStdsShow },
|
[ActSeeRecSevStd ] = { 89,-1,TabUnk,ActLstStd ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Rec_ListRecordsStdsShow },
|
||||||
[ActPrnRecSevStd ] = { 111,-1,TabUnk,ActLstStd ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_NEW_TAB,NULL ,Rec_ListRecordsStdsPrint },
|
[ActPrnRecSevStd ] = { 111,-1,TabUnk,ActLstStd ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_NEW_TAB,NULL ,Rec_ListRecordsStdsPrint },
|
||||||
[ActReqMdfOneStd ] = {1415,-1,TabUnk,ActLstStd ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_1ST_TAB,NULL ,Enr_ReqRegRemStd },
|
[ActReqMdfOneStd ] = {1415,-1,TabUnk,ActLstStd ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_1ST_TAB,NULL ,Enr_ReqRegRemStd },
|
||||||
|
@ -1375,7 +1375,7 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] =
|
||||||
[ActLstTch ] = { 679, 2,TabUsr,ActLstTch ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_1ST_TAB,NULL ,Usr_SeeTeachers },
|
[ActLstTch ] = { 679, 2,TabUsr,ActLstTch ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_1ST_TAB,NULL ,Usr_SeeTeachers },
|
||||||
[ActLstTchAll ] = { 578,-1,TabUnk,ActLstTch ,0x3F8,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_NEW_TAB,NULL ,Usr_ListAllDataTchs },
|
[ActLstTchAll ] = { 578,-1,TabUnk,ActLstTch ,0x3F8,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_NEW_TAB,NULL ,Usr_ListAllDataTchs },
|
||||||
[ActPrnTchPho ] = { 443,-1,TabUnk,ActLstTch ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_NEW_TAB,NULL ,Usr_SeeTchClassPhotoPrn },
|
[ActPrnTchPho ] = { 443,-1,TabUnk,ActLstTch ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_NEW_TAB,NULL ,Usr_SeeTchClassPhotoPrn },
|
||||||
[ActDoActOnSevTch ] = {1755,-1,TabUnk,ActLstTch ,0x3F8,0x3C0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,Usr_DoActionOnSeveralUsrs1 ,Usr_DoActionOnSeveralUsrs2 },
|
[Act_DoAct_OnSevTch ] = {1755,-1,TabUnk,ActLstTch ,0x3F8,0x3C0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,Usr_DoActionOnSeveralUsrs1 ,Usr_DoActionOnSeveralUsrs2 },
|
||||||
[ActSeeRecSevTch ] = { 22,-1,TabUnk,ActLstTch ,0x3F8,0x3C0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Rec_ListRecordsTchsShow },
|
[ActSeeRecSevTch ] = { 22,-1,TabUnk,ActLstTch ,0x3F8,0x3C0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Rec_ListRecordsTchsShow },
|
||||||
[ActPrnRecSevTch ] = { 127,-1,TabUnk,ActLstTch ,0x3F8,0x3C0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_NEW_TAB,NULL ,Rec_ListRecordsTchsPrint },
|
[ActPrnRecSevTch ] = { 127,-1,TabUnk,ActLstTch ,0x3F8,0x3C0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_NEW_TAB,NULL ,Rec_ListRecordsTchsPrint },
|
||||||
[ActReqMdfOneTch ] = {1416,-1,TabUnk,ActLstTch ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_1ST_TAB,NULL ,Enr_ReqRegRemTch },
|
[ActReqMdfOneTch ] = {1416,-1,TabUnk,ActLstTch ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_1ST_TAB,NULL ,Enr_ReqRegRemTch },
|
||||||
|
@ -1411,7 +1411,6 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] =
|
||||||
[ActReqUnfSevTch ] = {1759,-1,TabUnk,ActLstTch ,0x3F8,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Fol_ReqUnfollowTchs },
|
[ActReqUnfSevTch ] = {1759,-1,TabUnk,ActLstTch ,0x3F8,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Fol_ReqUnfollowTchs },
|
||||||
[ActFolSevTch ] = {1761,-1,TabUnk,ActLstTch ,0x3F8,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Fol_FollowUsrs },
|
[ActFolSevTch ] = {1761,-1,TabUnk,ActLstTch ,0x3F8,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Fol_FollowUsrs },
|
||||||
[ActUnfSevTch ] = {1763,-1,TabUnk,ActLstTch ,0x3F8,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Fol_UnfollowUsrs },
|
[ActUnfSevTch ] = {1763,-1,TabUnk,ActLstTch ,0x3F8,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Fol_UnfollowUsrs },
|
||||||
|
|
||||||
[ActSeeRecOneTch ] = {1175,-1,TabUnk,ActLstTch ,0x3F8,0x3C0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Rec_GetUsrAndShowRecOneTchCrs },
|
[ActSeeRecOneTch ] = {1175,-1,TabUnk,ActLstTch ,0x3F8,0x3C0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Rec_GetUsrAndShowRecOneTchCrs },
|
||||||
[ActReqEnrSevNET ] = {1642,-1,TabUnk,ActLstTch ,0x3C0,0x3C0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Enr_ReqAdminNonEditingTchs },
|
[ActReqEnrSevNET ] = {1642,-1,TabUnk,ActLstTch ,0x3C0,0x3C0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Enr_ReqAdminNonEditingTchs },
|
||||||
[ActRcvFrmEnrSevNET ] = {1643,-1,TabUnk,ActLstTch ,0x3C0,0x3C0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Enr_ReceiveAdminNonEditTchs },
|
[ActRcvFrmEnrSevNET ] = {1643,-1,TabUnk,ActLstTch ,0x3C0,0x3C0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_1ST_TAB,NULL ,Enr_ReceiveAdminNonEditTchs },
|
||||||
|
@ -1432,7 +1431,7 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] =
|
||||||
[ActLstGst ] = { 587,-1,TabUnk,ActLstOth ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_1ST_TAB,NULL ,Usr_SeeGuests },
|
[ActLstGst ] = { 587,-1,TabUnk,ActLstOth ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_1ST_TAB,NULL ,Usr_SeeGuests },
|
||||||
[ActLstGstAll ] = {1189,-1,TabUnk,ActLstOth ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_NEW_TAB,NULL ,Usr_ListAllDataGsts },
|
[ActLstGstAll ] = {1189,-1,TabUnk,ActLstOth ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_NEW_TAB,NULL ,Usr_ListAllDataGsts },
|
||||||
[ActPrnGstPho ] = {1190,-1,TabUnk,ActLstOth ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_NEW_TAB,NULL ,Usr_SeeGstClassPhotoPrn },
|
[ActPrnGstPho ] = {1190,-1,TabUnk,ActLstOth ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_NEW_TAB,NULL ,Usr_SeeGstClassPhotoPrn },
|
||||||
[ActDoActOnSevGst ] = {1753,-1,TabUnk,ActLstOth ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_1ST_TAB,Usr_DoActionOnSeveralUsrs1 ,Usr_DoActionOnSeveralUsrs2 },
|
[Act_DoAct_OnSevGst ] = {1753,-1,TabUnk,ActLstOth ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_1ST_TAB,Usr_DoActionOnSeveralUsrs1 ,Usr_DoActionOnSeveralUsrs2 },
|
||||||
[ActSeeRecSevGst ] = {1187,-1,TabUnk,ActLstOth ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_1ST_TAB,NULL ,Rec_ListRecordsGstsShow },
|
[ActSeeRecSevGst ] = {1187,-1,TabUnk,ActLstOth ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_1ST_TAB,NULL ,Rec_ListRecordsGstsShow },
|
||||||
[ActPrnRecSevGst ] = {1188,-1,TabUnk,ActLstOth ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_NEW_TAB,NULL ,Rec_ListRecordsGstsPrint },
|
[ActPrnRecSevGst ] = {1188,-1,TabUnk,ActLstOth ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_NEW_TAB,NULL ,Rec_ListRecordsGstsPrint },
|
||||||
[ActReqMdfOneOth ] = {1414,-1,TabUnk,ActLstOth ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_1ST_TAB,NULL ,Enr_ReqRegRemOth },
|
[ActReqMdfOneOth ] = {1414,-1,TabUnk,ActLstOth ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_1ST_TAB,NULL ,Enr_ReqRegRemOth },
|
||||||
|
@ -3564,9 +3563,9 @@ Act_Action_t ActLst_FromActCodToAction[1 + ActLst_MAX_ACTION_COD] = // Do not re
|
||||||
ActChgRooMaxUsr, // #1750
|
ActChgRooMaxUsr, // #1750
|
||||||
ActUnk, // #1751 (obsolete action)
|
ActUnk, // #1751 (obsolete action)
|
||||||
ActChgGrpRoo, // #1752
|
ActChgGrpRoo, // #1752
|
||||||
ActDoActOnSevGst, // #1753
|
Act_DoAct_OnSevGst, // #1753
|
||||||
ActDoActOnSevStd, // #1754
|
Act_DoAct_OnSevStd, // #1754
|
||||||
ActDoActOnSevTch, // #1755
|
Act_DoAct_OnSevTch, // #1755
|
||||||
ActReqFolSevStd, // #1756
|
ActReqFolSevStd, // #1756
|
||||||
ActReqFolSevTch, // #1757
|
ActReqFolSevTch, // #1757
|
||||||
ActReqUnfSevStd, // #1758
|
ActReqUnfSevStd, // #1758
|
||||||
|
|
|
@ -1298,7 +1298,7 @@ typedef enum
|
||||||
ActLstStd,
|
ActLstStd,
|
||||||
ActLstStdAll,
|
ActLstStdAll,
|
||||||
ActPrnStdPho,
|
ActPrnStdPho,
|
||||||
ActDoActOnSevStd,
|
Act_DoAct_OnSevStd,
|
||||||
ActSeeRecSevStd,
|
ActSeeRecSevStd,
|
||||||
ActPrnRecSevStd,
|
ActPrnRecSevStd,
|
||||||
ActReqMdfOneStd,
|
ActReqMdfOneStd,
|
||||||
|
@ -1347,7 +1347,7 @@ typedef enum
|
||||||
ActLstTch,
|
ActLstTch,
|
||||||
ActLstTchAll,
|
ActLstTchAll,
|
||||||
ActPrnTchPho,
|
ActPrnTchPho,
|
||||||
ActDoActOnSevTch,
|
Act_DoAct_OnSevTch,
|
||||||
ActSeeRecSevTch,
|
ActSeeRecSevTch,
|
||||||
ActPrnRecSevTch,
|
ActPrnRecSevTch,
|
||||||
ActReqMdfOneTch,
|
ActReqMdfOneTch,
|
||||||
|
@ -1404,7 +1404,7 @@ typedef enum
|
||||||
ActLstGst,
|
ActLstGst,
|
||||||
ActLstGstAll,
|
ActLstGstAll,
|
||||||
ActPrnGstPho,
|
ActPrnGstPho,
|
||||||
ActDoActOnSevGst,
|
Act_DoAct_OnSevGst,
|
||||||
ActSeeRecSevGst,
|
ActSeeRecSevGst,
|
||||||
ActPrnRecSevGst,
|
ActPrnRecSevGst,
|
||||||
ActReqMdfOneOth,
|
ActReqMdfOneOth,
|
||||||
|
|
|
@ -128,7 +128,7 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr,
|
||||||
static void Att_PutLinkEvent (struct Att_Event *Event,
|
static void Att_PutLinkEvent (struct Att_Event *Event,
|
||||||
const char *Title,const char *Txt);
|
const char *Title,const char *Txt);
|
||||||
static unsigned Att_GetNumUsrsFromAListWhoAreInEvent (long AttCod,
|
static unsigned Att_GetNumUsrsFromAListWhoAreInEvent (long AttCod,
|
||||||
long LstSelectedUsrCods[],
|
long *LstSelectedUsrCods,
|
||||||
unsigned NumUsrsInList);
|
unsigned NumUsrsInList);
|
||||||
static bool Att_CheckIfUsrIsPresentInEvent (long AttCod,long UsrCod);
|
static bool Att_CheckIfUsrIsPresentInEvent (long AttCod,long UsrCod);
|
||||||
static bool Att_CheckIfUsrIsPresentInEventAndGetComments (long AttCod,long UsrCod,
|
static bool Att_CheckIfUsrIsPresentInEventAndGetComments (long AttCod,long UsrCod,
|
||||||
|
@ -2077,7 +2077,7 @@ void Att_RegisterStudentsInEvent (void)
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static unsigned Att_GetNumUsrsFromAListWhoAreInEvent (long AttCod,
|
static unsigned Att_GetNumUsrsFromAListWhoAreInEvent (long AttCod,
|
||||||
long LstSelectedUsrCods[],
|
long *LstSelectedUsrCods,
|
||||||
unsigned NumUsrsInList)
|
unsigned NumUsrsInList)
|
||||||
{
|
{
|
||||||
char *SubQueryUsrs;
|
char *SubQueryUsrs;
|
||||||
|
|
|
@ -1213,7 +1213,7 @@ static bool Brw_CheckIfUploadIsAllowed (const char *FileType);
|
||||||
static void Brw_PutIconToGetLinkToFile (void *FileMetadata);
|
static void Brw_PutIconToGetLinkToFile (void *FileMetadata);
|
||||||
static void Brw_PutParsToGetLinkToFile (void *FileMetadata);
|
static void Brw_PutParsToGetLinkToFile (void *FileMetadata);
|
||||||
|
|
||||||
static bool Brw_CheckIfICanEditFileMetadata (long IAmTheOwner);
|
static bool Brw_CheckIfICanEditFileMetadata (bool IAmTheOwner);
|
||||||
static bool Brw_CheckIfIAmOwnerOfFile (long PublisherUsrCod);
|
static bool Brw_CheckIfIAmOwnerOfFile (long PublisherUsrCod);
|
||||||
static void Brw_WriteBigLinkToDownloadFile (const char *URL,
|
static void Brw_WriteBigLinkToDownloadFile (const char *URL,
|
||||||
struct Brw_FileMetadata *FileMetadata,
|
struct Brw_FileMetadata *FileMetadata,
|
||||||
|
@ -2876,7 +2876,7 @@ void Brw_PutLegalNotice (void)
|
||||||
|
|
||||||
static void Brw_FormToChangeCrsGrpZone (void)
|
static void Brw_FormToChangeCrsGrpZone (void)
|
||||||
{
|
{
|
||||||
extern const char *Par_CodeStr[];
|
extern const char *Par_CodeStr[Par_NUM_PAR_COD];
|
||||||
struct ListCodGrps LstMyGrps;
|
struct ListCodGrps LstMyGrps;
|
||||||
unsigned NumGrp;
|
unsigned NumGrp;
|
||||||
struct GroupData GrpDat;
|
struct GroupData GrpDat;
|
||||||
|
@ -4632,8 +4632,7 @@ static void Brw_PutIconFileWithLinkToViewMetadata (const struct Brw_FileMetadata
|
||||||
void Brw_PutIconFile (const char *FileName,
|
void Brw_PutIconFile (const char *FileName,
|
||||||
const char *Class,Frm_PutForm_t PutFormToGo)
|
const char *Class,Frm_PutForm_t PutFormToGo)
|
||||||
{
|
{
|
||||||
extern unsigned Ext_NUM_FILE_EXT_ALLOWED;
|
extern const char *Ext_FileExtensionsAllowed[Ext_NUM_FILE_EXT_ALLOWED];
|
||||||
extern const char *Ext_FileExtensionsAllowed[];
|
|
||||||
extern const char *Txt_X_file;
|
extern const char *Txt_X_file;
|
||||||
char *URL;
|
char *URL;
|
||||||
char *Icon;
|
char *Icon;
|
||||||
|
@ -7890,7 +7889,7 @@ void Brw_DownloadFile (void)
|
||||||
/*********** Check if I have permission to change file metadata **************/
|
/*********** Check if I have permission to change file metadata **************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static bool Brw_CheckIfICanEditFileMetadata (long IAmTheOwner)
|
static bool Brw_CheckIfICanEditFileMetadata (bool IAmTheOwner)
|
||||||
{
|
{
|
||||||
switch (Gbl.Action.Act) // Only in actions where edition is allowed
|
switch (Gbl.Action.Act) // Only in actions where edition is allowed
|
||||||
{
|
{
|
||||||
|
|
|
@ -544,7 +544,7 @@ static void CtrCfg_FreePhotoAttr (char **PhotoAttribution)
|
||||||
|
|
||||||
static void CtrCfg_Institution (Vie_ViewType_t ViewType,Frm_PutForm_t PutForm)
|
static void CtrCfg_Institution (Vie_ViewType_t ViewType,Frm_PutForm_t PutForm)
|
||||||
{
|
{
|
||||||
extern const char *Par_CodeStr[];
|
extern const char *Par_CodeStr[Par_NUM_PAR_COD];
|
||||||
extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
|
extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
|
||||||
unsigned NumIns;
|
unsigned NumIns;
|
||||||
const struct Hie_Node *Ins;
|
const struct Hie_Node *Ins;
|
||||||
|
@ -623,7 +623,7 @@ static void CtrCfg_Institution (Vie_ViewType_t ViewType,Frm_PutForm_t PutForm)
|
||||||
|
|
||||||
static void CtrCfg_Place (Frm_PutForm_t PutForm)
|
static void CtrCfg_Place (Frm_PutForm_t PutForm)
|
||||||
{
|
{
|
||||||
extern const char *Par_CodeStr[];
|
extern const char *Par_CodeStr[Par_NUM_PAR_COD];
|
||||||
extern const char *Txt_Place;
|
extern const char *Txt_Place;
|
||||||
extern const char *Txt_Another_place;
|
extern const char *Txt_Another_place;
|
||||||
struct Plc_Places Places;
|
struct Plc_Places Places;
|
||||||
|
|
|
@ -633,10 +633,11 @@ Me sale este error, no s
|
||||||
"can npt create received message (duplicated entry '243218-2160773' for key 'UsrCod_MsgCod')
|
"can npt create received message (duplicated entry '243218-2160773' for key 'UsrCod_MsgCod')
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 23.71.2 (2024-03-20)"
|
#define Log_PLATFORM_VERSION "SWAD 23.71.3 (2024-03-22)"
|
||||||
#define CSS_FILE "swad23.67.2.css"
|
#define CSS_FILE "swad23.67.2.css"
|
||||||
#define JS_FILE "swad23.53.6.js"
|
#define JS_FILE "swad23.53.6.js"
|
||||||
/*
|
/*
|
||||||
|
Version 23.71.3: Mar 22, 2024 Code refactoring. (334827 lines)
|
||||||
Version 23.71.2: Mar 20, 2024 Code refactoring in actions. (334866 lines)
|
Version 23.71.2: Mar 20, 2024 Code refactoring in actions. (334866 lines)
|
||||||
Version 23.71.1: Mar 20, 2024 Some functions renamed. (334869 lines)
|
Version 23.71.1: Mar 20, 2024 Some functions renamed. (334869 lines)
|
||||||
Version 23.71: Mar 20, 2024 Actions for syllabus unified for lectures and practicals. (334868 lines)
|
Version 23.71: Mar 20, 2024 Actions for syllabus unified for lectures and practicals. (334868 lines)
|
||||||
|
|
|
@ -81,8 +81,6 @@
|
||||||
|
|
||||||
#define Cfg_TIME_TO_SEND_PENDING_NOTIF ((time_t) (30UL * 60UL)) // After these seconds after first pending notification, all pending notifications are sent by email
|
#define Cfg_TIME_TO_SEND_PENDING_NOTIF ((time_t) (30UL * 60UL)) // After these seconds after first pending notification, all pending notifications are sent by email
|
||||||
|
|
||||||
#define Cfg_GOOGLE_ANALYTICS ""
|
|
||||||
|
|
||||||
#elif defined OPENSWAD_ORG // openswad.org ************************
|
#elif defined OPENSWAD_ORG // openswad.org ************************
|
||||||
|
|
||||||
#define Cfg_PLATFORM_SHORT_NAME "OpenSWAD"
|
#define Cfg_PLATFORM_SHORT_NAME "OpenSWAD"
|
||||||
|
@ -118,29 +116,6 @@
|
||||||
|
|
||||||
#define Cfg_TIME_TO_SEND_PENDING_NOTIF ((time_t) (30UL * 60UL)) // After these seconds after first pending notification, all pending notifications are sent by email
|
#define Cfg_TIME_TO_SEND_PENDING_NOTIF ((time_t) (30UL * 60UL)) // After these seconds after first pending notification, all pending notifications are sent by email
|
||||||
|
|
||||||
/* Google Analytics without cookies.
|
|
||||||
* This code comes from http://stackoverflow.com/a/19995629
|
|
||||||
*/
|
|
||||||
#define Cfg_GOOGLE_ANALYTICS ""
|
|
||||||
|
|
||||||
/*
|
|
||||||
"<script type=\"text/javascript\">" \
|
|
||||||
" (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){" \
|
|
||||||
" (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o)," \
|
|
||||||
" m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)" \
|
|
||||||
" })(window,document,'script','//www.google-analytics.com/analytics.js','ga');" \
|
|
||||||
" ga('create', 'UA-40768375-1', 'openswad.org', {" \
|
|
||||||
" 'anonymizeIp': true," \
|
|
||||||
" 'storage': 'none'," \
|
|
||||||
" 'clientId': window.localStorage.getItem('ga_clientId')" \
|
|
||||||
" });" \
|
|
||||||
" ga(function(tracker) {" \
|
|
||||||
" window.localStorage.setItem('ga_clientID', tracker.get('clientId'));" \
|
|
||||||
" });" \
|
|
||||||
" ga('send', 'pageview');" \
|
|
||||||
"</script>"
|
|
||||||
*/
|
|
||||||
|
|
||||||
#elif defined SWAD_UGR_ES // swad.ugr.es *************************
|
#elif defined SWAD_UGR_ES // swad.ugr.es *************************
|
||||||
|
|
||||||
#define Cfg_PLATFORM_SHORT_NAME "SWAD"
|
#define Cfg_PLATFORM_SHORT_NAME "SWAD"
|
||||||
|
@ -176,26 +151,6 @@
|
||||||
|
|
||||||
#define Cfg_TIME_TO_SEND_PENDING_NOTIF ((time_t) (30UL * 60UL)) // After these seconds after first pending notification, all pending notifications are sent by email
|
#define Cfg_TIME_TO_SEND_PENDING_NOTIF ((time_t) (30UL * 60UL)) // After these seconds after first pending notification, all pending notifications are sent by email
|
||||||
|
|
||||||
#define Cfg_GOOGLE_ANALYTICS ""
|
|
||||||
|
|
||||||
/*
|
|
||||||
"<script type=\"text/javascript\">" \
|
|
||||||
" (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){" \
|
|
||||||
" (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o)," \
|
|
||||||
" m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)" \
|
|
||||||
" })(window,document,'script','//www.google-analytics.com/analytics.js','ga');" \
|
|
||||||
" ga('create', 'UA-42150741-1', 'ugr.es', {" \
|
|
||||||
" 'anonymizeIp': true," \
|
|
||||||
" 'storage': 'none'," \
|
|
||||||
" 'clientId': window.localStorage.getItem('ga_clientId')" \
|
|
||||||
" });" \
|
|
||||||
" ga(function(tracker) {" \
|
|
||||||
" window.localStorage.setItem('ga_clientID', tracker.get('clientId'));" \
|
|
||||||
" });" \
|
|
||||||
" ga('send', 'pageview');" \
|
|
||||||
"</script>"
|
|
||||||
*/
|
|
||||||
|
|
||||||
#elif defined SWADBERRY_UGR_ES // swadberry.ugr.es ******************
|
#elif defined SWADBERRY_UGR_ES // swadberry.ugr.es ******************
|
||||||
|
|
||||||
#define Cfg_PLATFORM_SHORT_NAME "SWADberry"
|
#define Cfg_PLATFORM_SHORT_NAME "SWADberry"
|
||||||
|
@ -231,8 +186,6 @@
|
||||||
|
|
||||||
#define Cfg_TIME_TO_SEND_PENDING_NOTIF ((time_t) (30UL * 60UL)) // After these seconds after first pending notification, all pending notifications are sent by email
|
#define Cfg_TIME_TO_SEND_PENDING_NOTIF ((time_t) (30UL * 60UL)) // After these seconds after first pending notification, all pending notifications are sent by email
|
||||||
|
|
||||||
#define Cfg_GOOGLE_ANALYTICS ""
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Database */
|
/* Database */
|
||||||
|
|
|
@ -1383,7 +1383,7 @@ static void Cty_PutParGoToCty (void *CtyCod)
|
||||||
static void Cty_PutFormToCreateCountry (void)
|
static void Cty_PutFormToCreateCountry (void)
|
||||||
{
|
{
|
||||||
extern const char *Lan_STR_LANG_ID[1 + Lan_NUM_LANGUAGES];
|
extern const char *Lan_STR_LANG_ID[1 + Lan_NUM_LANGUAGES];
|
||||||
extern const char *Par_CodeStr[];
|
extern const char *Par_CodeStr[Par_NUM_PAR_COD];
|
||||||
extern const char *Txt_STR_LANG_NAME[1 + Lan_NUM_LANGUAGES];
|
extern const char *Txt_STR_LANG_NAME[1 + Lan_NUM_LANGUAGES];
|
||||||
Lan_Language_t Lan;
|
Lan_Language_t Lan;
|
||||||
char StrCtyCod[Cns_MAX_DECIMAL_DIGITS_LONG + 1];
|
char StrCtyCod[Cns_MAX_DECIMAL_DIGITS_LONG + 1];
|
||||||
|
|
|
@ -201,7 +201,7 @@ void CrsCfg_PrintConfiguration (void)
|
||||||
|
|
||||||
static void CrsCfg_Degree (Vie_ViewType_t ViewType,Frm_PutForm_t PutForm)
|
static void CrsCfg_Degree (Vie_ViewType_t ViewType,Frm_PutForm_t PutForm)
|
||||||
{
|
{
|
||||||
extern const char *Par_CodeStr[];
|
extern const char *Par_CodeStr[Par_NUM_PAR_COD];
|
||||||
extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
|
extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
|
||||||
unsigned NumDeg;
|
unsigned NumDeg;
|
||||||
const struct Hie_Node *Deg;
|
const struct Hie_Node *Deg;
|
||||||
|
|
|
@ -194,7 +194,7 @@ static void DegCfg_PutIconsToPrintAndUpload (__attribute__((unused)) void *Args)
|
||||||
|
|
||||||
static void DegCfg_Center (Vie_ViewType_t ViewType,Frm_PutForm_t PutForm)
|
static void DegCfg_Center (Vie_ViewType_t ViewType,Frm_PutForm_t PutForm)
|
||||||
{
|
{
|
||||||
extern const char *Par_CodeStr[];
|
extern const char *Par_CodeStr[Par_NUM_PAR_COD];
|
||||||
extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
|
extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
|
||||||
unsigned NumCtr;
|
unsigned NumCtr;
|
||||||
const struct Hie_Node *Ctr;
|
const struct Hie_Node *Ctr;
|
||||||
|
|
|
@ -173,7 +173,7 @@ void Enr_CheckStdsAndPutButtonToRegisterStdsInCurrentCrs (void)
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Enr_PutButtonInlineToRegisterStds (long CrsCod,
|
void Enr_PutButtonInlineToRegisterStds (long CrsCod,
|
||||||
unsigned Level,Lay_LastItem_t IsLastItemInLevel[],
|
unsigned Level,const Lay_LastItem_t *IsLastItemInLevel,
|
||||||
Lay_Highlight_t Highlight)
|
Lay_Highlight_t Highlight)
|
||||||
{
|
{
|
||||||
extern const char *Lay_HighlightClass[Lay_NUM_HIGHLIGHT];
|
extern const char *Lay_HighlightClass[Lay_NUM_HIGHLIGHT];
|
||||||
|
|
|
@ -75,7 +75,7 @@ typedef enum
|
||||||
|
|
||||||
void Enr_CheckStdsAndPutButtonToRegisterStdsInCurrentCrs (void);
|
void Enr_CheckStdsAndPutButtonToRegisterStdsInCurrentCrs (void);
|
||||||
void Enr_PutButtonInlineToRegisterStds (long CrsCod,
|
void Enr_PutButtonInlineToRegisterStds (long CrsCod,
|
||||||
unsigned Level,Lay_LastItem_t IsLastItemInLevel[],
|
unsigned Level,const Lay_LastItem_t *IsLastItemInLevel,
|
||||||
Lay_Highlight_t Highlight);
|
Lay_Highlight_t Highlight);
|
||||||
|
|
||||||
void Enr_PutLinkToRequestSignUp (void);
|
void Enr_PutLinkToRequestSignUp (void);
|
||||||
|
|
12
swad_exam.c
12
swad_exam.c
|
@ -804,7 +804,7 @@ void Exa_GetListExams (struct Exa_Exams *Exams,Exa_Order_t SelectedOrder)
|
||||||
|
|
||||||
void Exa_GetListSelectedExaCods (struct Exa_Exams *Exams)
|
void Exa_GetListSelectedExaCods (struct Exa_Exams *Exams)
|
||||||
{
|
{
|
||||||
extern const char *Par_CodeStr[];
|
extern const char *Par_CodeStr[Par_NUM_PAR_COD];
|
||||||
unsigned MaxSizeListExaCodsSelected;
|
unsigned MaxSizeListExaCodsSelected;
|
||||||
unsigned NumExam;
|
unsigned NumExam;
|
||||||
const char *Ptr;
|
const char *Ptr;
|
||||||
|
@ -1253,12 +1253,12 @@ void Exa_PutFormsOneExam (struct Exa_Exams *Exams,
|
||||||
extern const char *Hlp_ASSESSMENT_Exams_edit_exam;
|
extern const char *Hlp_ASSESSMENT_Exams_edit_exam;
|
||||||
extern const char *Hlp_ASSESSMENT_Exams_new_exam;
|
extern const char *Hlp_ASSESSMENT_Exams_new_exam;
|
||||||
extern const char *Txt_Exam;
|
extern const char *Txt_Exam;
|
||||||
static void (*FunctionToDrawContextualIcons[]) (void *Args) =
|
static void (*FunctionToDrawContextualIcons[Exa_NUM_EXISTING_NEW_EXAM]) (void *Args) =
|
||||||
{
|
{
|
||||||
[Exa_EXISTING_EXAM] = Exa_PutIconsEditingOneExam,
|
[Exa_EXISTING_EXAM] = Exa_PutIconsEditingOneExam,
|
||||||
[Exa_NEW_EXAM ] = NULL,
|
[Exa_NEW_EXAM ] = NULL,
|
||||||
};
|
};
|
||||||
static const char **HelpLink[] =
|
static const char **HelpLink[Exa_NUM_EXISTING_NEW_EXAM] =
|
||||||
{
|
{
|
||||||
[Exa_EXISTING_EXAM] = &Hlp_ASSESSMENT_Exams_edit_exam,
|
[Exa_EXISTING_EXAM] = &Hlp_ASSESSMENT_Exams_edit_exam,
|
||||||
[Exa_NEW_EXAM ] = &Hlp_ASSESSMENT_Exams_new_exam,
|
[Exa_NEW_EXAM ] = &Hlp_ASSESSMENT_Exams_new_exam,
|
||||||
|
@ -1317,17 +1317,17 @@ static void Exa_PutFormEditionExam (struct Exa_Exams *Exams,
|
||||||
extern const char *Txt_Description;
|
extern const char *Txt_Description;
|
||||||
extern const char *Txt_Save_changes;
|
extern const char *Txt_Save_changes;
|
||||||
extern const char *Txt_Create;
|
extern const char *Txt_Create;
|
||||||
static Act_Action_t NextAction[] =
|
static Act_Action_t NextAction[Exa_NUM_EXISTING_NEW_EXAM] =
|
||||||
{
|
{
|
||||||
[Exa_EXISTING_EXAM] = ActChgExa,
|
[Exa_EXISTING_EXAM] = ActChgExa,
|
||||||
[Exa_NEW_EXAM ] = ActNewExa,
|
[Exa_NEW_EXAM ] = ActNewExa,
|
||||||
};
|
};
|
||||||
static Btn_Button_t Button[] =
|
static Btn_Button_t Button[Exa_NUM_EXISTING_NEW_EXAM] =
|
||||||
{
|
{
|
||||||
[Exa_EXISTING_EXAM] = Btn_CONFIRM_BUTTON,
|
[Exa_EXISTING_EXAM] = Btn_CONFIRM_BUTTON,
|
||||||
[Exa_NEW_EXAM ] = Btn_CREATE_BUTTON,
|
[Exa_NEW_EXAM ] = Btn_CREATE_BUTTON,
|
||||||
};
|
};
|
||||||
const char *TxtButton[] =
|
const char *TxtButton[Exa_NUM_EXISTING_NEW_EXAM] =
|
||||||
{
|
{
|
||||||
[Exa_EXISTING_EXAM] = Txt_Save_changes,
|
[Exa_EXISTING_EXAM] = Txt_Save_changes,
|
||||||
[Exa_NEW_EXAM ] = Txt_Create,
|
[Exa_NEW_EXAM ] = Txt_Create,
|
||||||
|
|
|
@ -554,7 +554,7 @@ static void ExaRes_ShowResultsEnd (void)
|
||||||
|
|
||||||
static void ExaRes_ListExamsToSelect (struct Exa_Exams *Exams)
|
static void ExaRes_ListExamsToSelect (struct Exa_Exams *Exams)
|
||||||
{
|
{
|
||||||
extern const char *Par_CodeStr[];
|
extern const char *Par_CodeStr[Par_NUM_PAR_COD];
|
||||||
extern const char *Txt_Exams;
|
extern const char *Txt_Exams;
|
||||||
extern const char *Txt_Exam;
|
extern const char *Txt_Exam;
|
||||||
extern const char *Txt_Update_results;
|
extern const char *Txt_Update_results;
|
||||||
|
|
|
@ -62,6 +62,7 @@ typedef enum
|
||||||
Exa_CHECK_EXA_COD,
|
Exa_CHECK_EXA_COD,
|
||||||
} Exa_CheckExaCod_t;
|
} Exa_CheckExaCod_t;
|
||||||
|
|
||||||
|
#define Exa_NUM_EXISTING_NEW_EXAM 2
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
Exa_EXISTING_EXAM,
|
Exa_EXISTING_EXAM,
|
||||||
|
|
|
@ -34,7 +34,8 @@
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
/* MIME types allowed for uploades files */
|
/* MIME types allowed for uploades files */
|
||||||
const char *MIM_MIMETypesAllowed[] =
|
#define MIM_NUM_MIME_TYPES_ALLOWED 200
|
||||||
|
const char *MIM_MIMETypesAllowed[MIM_NUM_MIME_TYPES_ALLOWED] =
|
||||||
{
|
{
|
||||||
"application/", //
|
"application/", //
|
||||||
"application/acrobat", // PDF
|
"application/acrobat", // PDF
|
||||||
|
@ -238,11 +239,8 @@ const char *MIM_MIMETypesAllowed[] =
|
||||||
"zz-application/zz-winassoc-mpp" // Microsoft Project mpp
|
"zz-application/zz-winassoc-mpp" // Microsoft Project mpp
|
||||||
};
|
};
|
||||||
|
|
||||||
unsigned MIM_NUM_MIME_TYPES_ALLOWED = sizeof (MIM_MIMETypesAllowed) /
|
|
||||||
sizeof (MIM_MIMETypesAllowed[0]);
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/******** Check if MIME type is allowed **********/
|
/*********************** Check if MIME type is allowed ***********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
bool MIM_CheckIfMIMETypeIsAllowed (const char *MIMEType)
|
bool MIM_CheckIfMIMETypeIsAllowed (const char *MIMEType)
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
/* Extensions allowed for uploaded files */
|
/* Extensions allowed for uploaded files */
|
||||||
const char *Ext_FileExtensionsAllowed[] =
|
const char *Ext_FileExtensionsAllowed[Ext_NUM_FILE_EXT_ALLOWED] =
|
||||||
{
|
{
|
||||||
"3gp" , // Video Android mobile
|
"3gp" , // Video Android mobile
|
||||||
"7z" ,
|
"7z" ,
|
||||||
|
@ -151,9 +151,6 @@ const char *Ext_FileExtensionsAllowed[] =
|
||||||
"zip" ,
|
"zip" ,
|
||||||
};
|
};
|
||||||
|
|
||||||
unsigned Ext_NUM_FILE_EXT_ALLOWED = sizeof (Ext_FileExtensionsAllowed) /
|
|
||||||
sizeof (Ext_FileExtensionsAllowed[0]);
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/******************* Check if file extension is allowed **********************/
|
/******************* Check if file extension is allowed **********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -30,6 +30,13 @@
|
||||||
#include <linux/limits.h> // For NAME_MAX
|
#include <linux/limits.h> // For NAME_MAX
|
||||||
#include <stdbool.h> // For boolean type
|
#include <stdbool.h> // For boolean type
|
||||||
|
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/***************************** Public constants ******************************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
#define Ext_NUM_FILE_EXT_ALLOWED 114
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/***************************** Public prototypes *****************************/
|
/***************************** Public prototypes *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
12
swad_game.c
12
swad_game.c
|
@ -875,7 +875,7 @@ void Gam_GetListGames (struct Gam_Games *Games,Gam_Order_t SelectedOrder)
|
||||||
|
|
||||||
void Gam_GetListSelectedGamCods (struct Gam_Games *Games)
|
void Gam_GetListSelectedGamCods (struct Gam_Games *Games)
|
||||||
{
|
{
|
||||||
extern const char *Par_CodeStr[];
|
extern const char *Par_CodeStr[Par_NUM_PAR_COD];
|
||||||
unsigned MaxSizeListGamCodsSelected;
|
unsigned MaxSizeListGamCodsSelected;
|
||||||
unsigned NumGame;
|
unsigned NumGame;
|
||||||
const char *Ptr;
|
const char *Ptr;
|
||||||
|
@ -1258,12 +1258,12 @@ void Gam_PutFormsOneGame (struct Gam_Games *Games,
|
||||||
extern const char *Hlp_ASSESSMENT_Games_edit_game;
|
extern const char *Hlp_ASSESSMENT_Games_edit_game;
|
||||||
extern const char *Hlp_ASSESSMENT_Games_new_game;
|
extern const char *Hlp_ASSESSMENT_Games_new_game;
|
||||||
extern const char *Txt_Game;
|
extern const char *Txt_Game;
|
||||||
static void (*FunctionToDrawContextualIcons[]) (void *Args) =
|
static void (*FunctionToDrawContextualIcons[Gam_NUM_EXISTING_NEW_GAME]) (void *Args) =
|
||||||
{
|
{
|
||||||
[Gam_EXISTING_GAME] = Gam_PutIconsEditingOneGame,
|
[Gam_EXISTING_GAME] = Gam_PutIconsEditingOneGame,
|
||||||
[Gam_NEW_GAME ] = NULL,
|
[Gam_NEW_GAME ] = NULL,
|
||||||
};
|
};
|
||||||
static const char **HelpLink[] =
|
static const char **HelpLink[Gam_NUM_EXISTING_NEW_GAME] =
|
||||||
{
|
{
|
||||||
[Gam_EXISTING_GAME] = &Hlp_ASSESSMENT_Games_edit_game,
|
[Gam_EXISTING_GAME] = &Hlp_ASSESSMENT_Games_edit_game,
|
||||||
[Gam_NEW_GAME ] = &Hlp_ASSESSMENT_Games_new_game,
|
[Gam_NEW_GAME ] = &Hlp_ASSESSMENT_Games_new_game,
|
||||||
|
@ -1324,17 +1324,17 @@ static void Gam_PutFormEditionGame (struct Gam_Games *Games,
|
||||||
extern const char *Txt_Description;
|
extern const char *Txt_Description;
|
||||||
extern const char *Txt_Save_changes;
|
extern const char *Txt_Save_changes;
|
||||||
extern const char *Txt_Create;
|
extern const char *Txt_Create;
|
||||||
static Act_Action_t NextAction[] =
|
static Act_Action_t NextAction[Gam_NUM_EXISTING_NEW_GAME] =
|
||||||
{
|
{
|
||||||
[Gam_EXISTING_GAME] = ActChgGam,
|
[Gam_EXISTING_GAME] = ActChgGam,
|
||||||
[Gam_NEW_GAME ] = ActNewGam,
|
[Gam_NEW_GAME ] = ActNewGam,
|
||||||
};
|
};
|
||||||
static Btn_Button_t Button[] =
|
static Btn_Button_t Button[Gam_NUM_EXISTING_NEW_GAME] =
|
||||||
{
|
{
|
||||||
[Gam_EXISTING_GAME] = Btn_CONFIRM_BUTTON,
|
[Gam_EXISTING_GAME] = Btn_CONFIRM_BUTTON,
|
||||||
[Gam_NEW_GAME ] = Btn_CREATE_BUTTON,
|
[Gam_NEW_GAME ] = Btn_CREATE_BUTTON,
|
||||||
};
|
};
|
||||||
const char *TxtButton[] =
|
const char *TxtButton[Gam_NUM_EXISTING_NEW_GAME] =
|
||||||
{
|
{
|
||||||
[Gam_EXISTING_GAME] = Txt_Save_changes,
|
[Gam_EXISTING_GAME] = Txt_Save_changes,
|
||||||
[Gam_NEW_GAME ] = Txt_Create,
|
[Gam_NEW_GAME ] = Txt_Create,
|
||||||
|
|
|
@ -56,6 +56,7 @@ typedef enum
|
||||||
} Gam_AnswerType_t;
|
} Gam_AnswerType_t;
|
||||||
#define Gam_ANSWER_TYPE_DEFAULT Gam_ANS_UNIQUE_CHOICE
|
#define Gam_ANSWER_TYPE_DEFAULT Gam_ANS_UNIQUE_CHOICE
|
||||||
|
|
||||||
|
#define Gam_NUM_EXISTING_NEW_GAME 2
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
Gam_EXISTING_GAME,
|
Gam_EXISTING_GAME,
|
||||||
|
|
|
@ -167,7 +167,7 @@ void Hie_SeePending (void)
|
||||||
|
|
||||||
void Hie_WriteMenuHierarchy (void)
|
void Hie_WriteMenuHierarchy (void)
|
||||||
{
|
{
|
||||||
extern const char *Par_CodeStr[];
|
extern const char *Par_CodeStr[Par_NUM_PAR_COD];
|
||||||
extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
|
extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
|
||||||
static void (*FunctionWriteSelector[Hie_NUM_LEVELS]) (void) =
|
static void (*FunctionWriteSelector[Hie_NUM_LEVELS]) (void) =
|
||||||
{
|
{
|
||||||
|
|
|
@ -205,7 +205,7 @@ void HieCfg_WWW (Vie_ViewType_t ViewType,Frm_PutForm_t PutForm,
|
||||||
|
|
||||||
void HieCfg_Shortcut (Vie_ViewType_t ViewType,ParCod_Param_t ParCode,long HieCod)
|
void HieCfg_Shortcut (Vie_ViewType_t ViewType,ParCod_Param_t ParCode,long HieCod)
|
||||||
{
|
{
|
||||||
extern const char *Par_CodeStr[];
|
extern const char *Par_CodeStr[Par_NUM_PAR_COD];
|
||||||
extern const char *Txt_Shortcut;
|
extern const char *Txt_Shortcut;
|
||||||
|
|
||||||
/***** Short cut *****/
|
/***** Short cut *****/
|
||||||
|
|
|
@ -100,7 +100,7 @@ static unsigned Ind_GetAndUpdateNumIndicatorsCrs (long CrsCod);
|
||||||
void Ind_ReqIndicatorsCourses (void)
|
void Ind_ReqIndicatorsCourses (void)
|
||||||
{
|
{
|
||||||
extern const char *Hlp_ANALYTICS_Indicators;
|
extern const char *Hlp_ANALYTICS_Indicators;
|
||||||
extern const char *Par_CodeStr[];
|
extern const char *Par_CodeStr[Par_NUM_PAR_COD];
|
||||||
extern const char *Txt_Scope;
|
extern const char *Txt_Scope;
|
||||||
extern const char *Txt_Types_of_degree;
|
extern const char *Txt_Types_of_degree;
|
||||||
extern const char *Txt_only_if_the_scope_is_X;
|
extern const char *Txt_only_if_the_scope_is_X;
|
||||||
|
|
|
@ -299,7 +299,7 @@ static void InsCfg_Map (void)
|
||||||
|
|
||||||
static void InsCfg_Country (Vie_ViewType_t ViewType,Frm_PutForm_t PutForm)
|
static void InsCfg_Country (Vie_ViewType_t ViewType,Frm_PutForm_t PutForm)
|
||||||
{
|
{
|
||||||
extern const char *Par_CodeStr[];
|
extern const char *Par_CodeStr[Par_NUM_PAR_COD];
|
||||||
extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
|
extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
|
||||||
unsigned NumCty;
|
unsigned NumCty;
|
||||||
const struct Hie_Node *Cty;
|
const struct Hie_Node *Cty;
|
||||||
|
|
|
@ -655,9 +655,6 @@ static void Lay_WriteScripts (void)
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Script for Google Analytics *****/
|
|
||||||
HTM_Txt (Cfg_GOOGLE_ANALYTICS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Change page title
|
// Change page title
|
||||||
|
@ -1619,10 +1616,10 @@ void Lay_AdvertisementMobile (void)
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/****************** Indent forum, chat or course tree title ******************/
|
/****************** Indent forum, chat or course tree title ******************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
// IsLastItemInLevel[] is a vector with at least 1 + Level elements
|
// IsLastItemInLevel is a vector with at least 1 + Level elements
|
||||||
|
|
||||||
void Lay_IndentDependingOnLevel (unsigned Level,
|
void Lay_IndentDependingOnLevel (unsigned Level,
|
||||||
Lay_LastItem_t IsLastItemInLevel[],
|
const Lay_LastItem_t *IsLastItemInLevel,
|
||||||
Lay_HorizontalLineAtRight_t HorizontalLineAtRight)
|
Lay_HorizontalLineAtRight_t HorizontalLineAtRight)
|
||||||
{
|
{
|
||||||
static const char *Icons[Lay_NUM_HORIZONTAL_LINE_AT_RIGHT][Lay_NUM_LAST_ITEM] =
|
static const char *Icons[Lay_NUM_HORIZONTAL_LINE_AT_RIGHT][Lay_NUM_LAST_ITEM] =
|
||||||
|
|
|
@ -94,7 +94,7 @@ void Lay_WriteHeaderClassPhoto (Vie_ViewType_t ViewType);
|
||||||
void Lay_AdvertisementMobile (void);
|
void Lay_AdvertisementMobile (void);
|
||||||
|
|
||||||
void Lay_IndentDependingOnLevel (unsigned Level,
|
void Lay_IndentDependingOnLevel (unsigned Level,
|
||||||
Lay_LastItem_t IsLastItemInLevel[],
|
const Lay_LastItem_t *IsLastItemInLevel,
|
||||||
Lay_HorizontalLineAtRight_t HorizontalLineAtRight);
|
Lay_HorizontalLineAtRight_t HorizontalLineAtRight);
|
||||||
|
|
||||||
void Lay_HelpPlainEditor (void);
|
void Lay_HelpPlainEditor (void);
|
||||||
|
|
|
@ -518,7 +518,7 @@ static void MchRes_ShowResultsEnd (void)
|
||||||
|
|
||||||
static void MchRes_ListGamesToSelect (struct Gam_Games *Games)
|
static void MchRes_ListGamesToSelect (struct Gam_Games *Games)
|
||||||
{
|
{
|
||||||
extern const char *Par_CodeStr[];
|
extern const char *Par_CodeStr[Par_NUM_PAR_COD];
|
||||||
extern const char *Txt_Games;
|
extern const char *Txt_Games;
|
||||||
extern const char *Txt_Game;
|
extern const char *Txt_Game;
|
||||||
extern const char *Txt_Update_results;
|
extern const char *Txt_Update_results;
|
||||||
|
|
|
@ -684,7 +684,8 @@ unsigned Par_GetPar (Par_ParamType_t ParType,const char *ParName,
|
||||||
|
|
||||||
static bool Par_CheckIsParCanBeUsedInGETMethod (const char *ParName)
|
static bool Par_CheckIsParCanBeUsedInGETMethod (const char *ParName)
|
||||||
{
|
{
|
||||||
static const char *ValidParsInGETMethod[] =
|
#define NUM_VALID_PARAMS 10
|
||||||
|
static const char *ValidParsInGETMethod[NUM_VALID_PARAMS] =
|
||||||
{
|
{
|
||||||
"cty", // To enter directly to a country
|
"cty", // To enter directly to a country
|
||||||
"ins", // To enter directly to an institution
|
"ins", // To enter directly to an institution
|
||||||
|
@ -697,7 +698,6 @@ static bool Par_CheckIsParCanBeUsedInGETMethod (const char *ParName)
|
||||||
"ses", // To use an open session when redirecting from one language to another
|
"ses", // To use an open session when redirecting from one language to another
|
||||||
"key", // To verify an email address
|
"key", // To verify an email address
|
||||||
};
|
};
|
||||||
#define NUM_VALID_PARAMS (sizeof (ValidParsInGETMethod) / sizeof (ValidParsInGETMethod[0]))
|
|
||||||
unsigned i;
|
unsigned i;
|
||||||
|
|
||||||
for (i = 0;
|
for (i = 0;
|
||||||
|
@ -714,7 +714,7 @@ static bool Par_CheckIsParCanBeUsedInGETMethod (const char *ParName)
|
||||||
|
|
||||||
void Par_GetMainPars (void)
|
void Par_GetMainPars (void)
|
||||||
{
|
{
|
||||||
extern const char *Par_CodeStr[];
|
extern const char *Par_CodeStr[Par_NUM_PAR_COD];
|
||||||
long ActCod;
|
long ActCod;
|
||||||
char Nick[Nck_MAX_BYTES_NICK_WITH_ARROBA + 1];
|
char Nick[Nck_MAX_BYTES_NICK_WITH_ARROBA + 1];
|
||||||
char LongStr[Cns_MAX_DECIMAL_DIGITS_LONG + 1];
|
char LongStr[Cns_MAX_DECIMAL_DIGITS_LONG + 1];
|
||||||
|
@ -1112,7 +1112,7 @@ void Par_PutParUnsignedDisabled (const char *Id,const char *ParName,unsigned Par
|
||||||
|
|
||||||
void ParCod_PutPar (ParCod_Param_t ParCod,long Cod)
|
void ParCod_PutPar (ParCod_Param_t ParCod,long Cod)
|
||||||
{
|
{
|
||||||
extern const char *Par_CodeStr[];
|
extern const char *Par_CodeStr[Par_NUM_PAR_COD];
|
||||||
|
|
||||||
if (ParCod != ParCod_None && Cod >= 0)
|
if (ParCod != ParCod_None && Cod >= 0)
|
||||||
// <0 => not specified => don't write parameter
|
// <0 => not specified => don't write parameter
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
/***************************** Public constants ******************************/
|
/***************************** Public constants ******************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
const char *Par_CodeStr[] =
|
const char *Par_CodeStr[Par_NUM_PAR_COD] =
|
||||||
{
|
{
|
||||||
[ParCod_None ] = NULL,
|
[ParCod_None ] = NULL,
|
||||||
[ParCod_Agd ] = "AgdCod", // Agenda event code
|
[ParCod_Agd ] = "AgdCod", // Agenda event code
|
||||||
|
|
|
@ -80,6 +80,7 @@ typedef enum
|
||||||
ParCod_Tag, // Tag code in assessment question
|
ParCod_Tag, // Tag code in assessment question
|
||||||
ParCod_Thr, // Thread code in forum
|
ParCod_Thr, // Thread code in forum
|
||||||
} ParCod_Param_t;
|
} ParCod_Param_t;
|
||||||
|
#define Par_NUM_PAR_COD ((unsigned) ParCod_Thr + 1)
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/***************************** Public prototypes *****************************/
|
/***************************** Public prototypes *****************************/
|
||||||
|
|
|
@ -80,14 +80,13 @@ extern struct Globals Gbl;
|
||||||
#define Prj_PAR_FILTER_DPT_COD_NAME "FilDptCod"
|
#define Prj_PAR_FILTER_DPT_COD_NAME "FilDptCod"
|
||||||
|
|
||||||
/***** User roles are shown in this order *****/
|
/***** User roles are shown in this order *****/
|
||||||
static const Prj_RoleInProject_t Prj_RolesToShow[] =
|
#define Prj_NUM_ROLES_TO_SHOW 3
|
||||||
|
static const Prj_RoleInProject_t Prj_RolesToShow[Prj_NUM_ROLES_TO_SHOW] =
|
||||||
{
|
{
|
||||||
Prj_ROLE_TUT, // Tutor
|
Prj_ROLE_TUT, // Tutor
|
||||||
Prj_ROLE_STD, // Student
|
Prj_ROLE_STD, // Student
|
||||||
Prj_ROLE_EVL, // Evaluator
|
Prj_ROLE_EVL, // Evaluator
|
||||||
};
|
};
|
||||||
static unsigned Prj_NUM_ROLES_TO_SHOW = sizeof (Prj_RolesToShow) /
|
|
||||||
sizeof (Prj_RolesToShow[0]);
|
|
||||||
|
|
||||||
/***** Assigned/non-assigned project *****/
|
/***** Assigned/non-assigned project *****/
|
||||||
static const char *AssignedNonassigIcon[Prj_NUM_ASSIGNED_NONASSIG] =
|
static const char *AssignedNonassigIcon[Prj_NUM_ASSIGNED_NONASSIG] =
|
||||||
|
@ -3693,7 +3692,7 @@ static void Prj_PutFormProject (struct Prj_Projects *Projects,
|
||||||
bool ItsANewProject)
|
bool ItsANewProject)
|
||||||
{
|
{
|
||||||
extern const char *Hlp_ASSESSMENT_Projects_edit_project;
|
extern const char *Hlp_ASSESSMENT_Projects_edit_project;
|
||||||
extern const char *Par_CodeStr[];
|
extern const char *Par_CodeStr[Par_NUM_PAR_COD];
|
||||||
extern const char *Txt_Project;
|
extern const char *Txt_Project;
|
||||||
extern const char *Txt_Actions[ActLst_NUM_ACTIONS];
|
extern const char *Txt_Actions[ActLst_NUM_ACTIONS];
|
||||||
extern const char *Txt_Title;
|
extern const char *Txt_Title;
|
||||||
|
|
|
@ -167,7 +167,7 @@ static void PrjCfg_ShowFormsRubrics (void)
|
||||||
static void PrjCfg_ShowFormsRubricsOfType (const struct Rub_Rubrics *Rubrics,
|
static void PrjCfg_ShowFormsRubricsOfType (const struct Rub_Rubrics *Rubrics,
|
||||||
PrjCfg_RubricType_t RubricType)
|
PrjCfg_RubricType_t RubricType)
|
||||||
{
|
{
|
||||||
extern const char *Par_CodeStr[];
|
extern const char *Par_CodeStr[Par_NUM_PAR_COD];
|
||||||
extern const char *Prj_DB_RubricType[PrjCfg_NUM_RUBRIC_TYPES];
|
extern const char *Prj_DB_RubricType[PrjCfg_NUM_RUBRIC_TYPES];
|
||||||
extern const char *Txt_PROJECT_RUBRIC[PrjCfg_NUM_RUBRIC_TYPES];
|
extern const char *Txt_PROJECT_RUBRIC[PrjCfg_NUM_RUBRIC_TYPES];
|
||||||
extern const char *Txt_no_rubric;
|
extern const char *Txt_no_rubric;
|
||||||
|
@ -385,7 +385,7 @@ void PrjCfg_ChangeRubricsOfType (void)
|
||||||
static void PrjCfg_GetListRubCods (const struct Rub_Rubrics *Rubrics,
|
static void PrjCfg_GetListRubCods (const struct Rub_Rubrics *Rubrics,
|
||||||
struct PrgCfg_ListRubCods *ListRubCods)
|
struct PrgCfg_ListRubCods *ListRubCods)
|
||||||
{
|
{
|
||||||
extern const char *Par_CodeStr[];
|
extern const char *Par_CodeStr[Par_NUM_PAR_COD];
|
||||||
char *ParLstRubCods;
|
char *ParLstRubCods;
|
||||||
const char *Ptr;
|
const char *Ptr;
|
||||||
char LongStr[Cns_MAX_DECIMAL_DIGITS_LONG + 1];
|
char LongStr[Cns_MAX_DECIMAL_DIGITS_LONG + 1];
|
||||||
|
|
|
@ -3178,7 +3178,7 @@ static void Rec_ShowFirstName (struct Usr_Data *UsrDat,Vie_ViewType_t ViewType)
|
||||||
|
|
||||||
static void Rec_ShowCountry (struct Usr_Data *UsrDat,Vie_ViewType_t ViewType)
|
static void Rec_ShowCountry (struct Usr_Data *UsrDat,Vie_ViewType_t ViewType)
|
||||||
{
|
{
|
||||||
extern const char *Par_CodeStr[];
|
extern const char *Par_CodeStr[Par_NUM_PAR_COD];
|
||||||
extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
|
extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
|
||||||
extern const char *Txt_Another_country;
|
extern const char *Txt_Another_country;
|
||||||
char *Label;
|
char *Label;
|
||||||
|
@ -3846,7 +3846,7 @@ static void Rec_ShowAlertsIfNotFilled (bool IAmATeacher)
|
||||||
static void Rec_ShowFormMyInsCtrDpt (bool IAmATeacher)
|
static void Rec_ShowFormMyInsCtrDpt (bool IAmATeacher)
|
||||||
{
|
{
|
||||||
extern const char *Hlp_PROFILE_Institution;
|
extern const char *Hlp_PROFILE_Institution;
|
||||||
extern const char *Par_CodeStr[];
|
extern const char *Par_CodeStr[Par_NUM_PAR_COD];
|
||||||
extern const char *Txt_Institution_center_and_department;
|
extern const char *Txt_Institution_center_and_department;
|
||||||
extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
|
extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
|
||||||
extern const char *Txt_Another_institution;
|
extern const char *Txt_Another_institution;
|
||||||
|
|
|
@ -780,12 +780,12 @@ void Rub_PutFormsOneRubric (struct Rub_Rubrics *Rubrics,
|
||||||
extern const char *Hlp_ASSESSMENT_Rubrics_new_rubric;
|
extern const char *Hlp_ASSESSMENT_Rubrics_new_rubric;
|
||||||
extern const char *Hlp_ASSESSMENT_Rubrics_edit_rubric;
|
extern const char *Hlp_ASSESSMENT_Rubrics_edit_rubric;
|
||||||
extern const char *Txt_Rubric;
|
extern const char *Txt_Rubric;
|
||||||
static void (*FunctionToDrawContextualIcons[]) (void *Args) =
|
static void (*FunctionToDrawContextualIcons[Rub_NUM_EXISTING_NEW_RUBRIC]) (void *Args) =
|
||||||
{
|
{
|
||||||
[Rub_EXISTING_RUBRIC] = Rub_PutIconsEditingOneRubric,
|
[Rub_EXISTING_RUBRIC] = Rub_PutIconsEditingOneRubric,
|
||||||
[Rub_NEW_RUBRIC ] = NULL,
|
[Rub_NEW_RUBRIC ] = NULL,
|
||||||
};
|
};
|
||||||
static const char **HelpLink[] =
|
static const char **HelpLink[Rub_NUM_EXISTING_NEW_RUBRIC] =
|
||||||
{
|
{
|
||||||
[Rub_EXISTING_RUBRIC] = &Hlp_ASSESSMENT_Rubrics_edit_rubric,
|
[Rub_EXISTING_RUBRIC] = &Hlp_ASSESSMENT_Rubrics_edit_rubric,
|
||||||
[Rub_NEW_RUBRIC ] = &Hlp_ASSESSMENT_Rubrics_new_rubric,
|
[Rub_NEW_RUBRIC ] = &Hlp_ASSESSMENT_Rubrics_new_rubric,
|
||||||
|
@ -831,17 +831,17 @@ static void Rub_PutFormEditionRubric (struct Rub_Rubrics *Rubrics,
|
||||||
extern const char *Txt_Description;
|
extern const char *Txt_Description;
|
||||||
extern const char *Txt_Create;
|
extern const char *Txt_Create;
|
||||||
extern const char *Txt_Save_changes;
|
extern const char *Txt_Save_changes;
|
||||||
static Act_Action_t NextAction[] =
|
static Act_Action_t NextAction[Rub_NUM_EXISTING_NEW_RUBRIC] =
|
||||||
{
|
{
|
||||||
[Rub_EXISTING_RUBRIC] = ActChgRub,
|
[Rub_EXISTING_RUBRIC] = ActChgRub,
|
||||||
[Rub_NEW_RUBRIC ] = ActNewRub,
|
[Rub_NEW_RUBRIC ] = ActNewRub,
|
||||||
};
|
};
|
||||||
static Btn_Button_t Button[] =
|
static Btn_Button_t Button[Rub_NUM_EXISTING_NEW_RUBRIC] =
|
||||||
{
|
{
|
||||||
[Rub_EXISTING_RUBRIC] = Btn_CONFIRM_BUTTON,
|
[Rub_EXISTING_RUBRIC] = Btn_CONFIRM_BUTTON,
|
||||||
[Rub_NEW_RUBRIC ] = Btn_CREATE_BUTTON,
|
[Rub_NEW_RUBRIC ] = Btn_CREATE_BUTTON,
|
||||||
};
|
};
|
||||||
const char *TxtButton[] =
|
const char *TxtButton[Rub_NUM_EXISTING_NEW_RUBRIC] =
|
||||||
{
|
{
|
||||||
[Rub_EXISTING_RUBRIC] = Txt_Save_changes,
|
[Rub_EXISTING_RUBRIC] = Txt_Save_changes,
|
||||||
[Rub_NEW_RUBRIC ] = Txt_Create,
|
[Rub_NEW_RUBRIC ] = Txt_Create,
|
||||||
|
|
|
@ -82,6 +82,7 @@ struct Rub_Rubrics
|
||||||
struct RubCri_Criterion Criterion; // Selected/current criterion
|
struct RubCri_Criterion Criterion; // Selected/current criterion
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define Rub_NUM_EXISTING_NEW_RUBRIC 2
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
Rub_EXISTING_RUBRIC,
|
Rub_EXISTING_RUBRIC,
|
||||||
|
|
|
@ -220,7 +220,8 @@ static void Sta_PutFormCrsHits (struct Sta_Stats *Stats)
|
||||||
extern const char *Txt_results_per_page;
|
extern const char *Txt_results_per_page;
|
||||||
extern const char *Txt_Show_hits;
|
extern const char *Txt_Show_hits;
|
||||||
extern const char *Txt_No_teachers_or_students_found;
|
extern const char *Txt_No_teachers_or_students_found;
|
||||||
static unsigned RowsPerPage[] =
|
#define NUM_OPTIONS_ROWS_PER_PAGE 12
|
||||||
|
static unsigned RowsPerPage[NUM_OPTIONS_ROWS_PER_PAGE] =
|
||||||
{
|
{
|
||||||
Sta_MIN_ROWS_PER_PAGE * 1,
|
Sta_MIN_ROWS_PER_PAGE * 1,
|
||||||
Sta_MIN_ROWS_PER_PAGE * 2,
|
Sta_MIN_ROWS_PER_PAGE * 2,
|
||||||
|
@ -235,7 +236,6 @@ static void Sta_PutFormCrsHits (struct Sta_Stats *Stats)
|
||||||
Sta_MIN_ROWS_PER_PAGE * 5000,
|
Sta_MIN_ROWS_PER_PAGE * 5000,
|
||||||
Sta_MAX_ROWS_PER_PAGE,
|
Sta_MAX_ROWS_PER_PAGE,
|
||||||
};
|
};
|
||||||
#define NUM_OPTIONS_ROWS_PER_PAGE (sizeof (RowsPerPage) / sizeof (RowsPerPage[0]))
|
|
||||||
unsigned NumTotalUsrs;
|
unsigned NumTotalUsrs;
|
||||||
char *Title;
|
char *Title;
|
||||||
Dat_SetHMS SetHMS[Dat_NUM_START_END_TIME];
|
Dat_SetHMS SetHMS[Dat_NUM_START_END_TIME];
|
||||||
|
|
|
@ -53,7 +53,7 @@ unsigned Sta_DB_GetHits (MYSQL_RES **mysql_res,
|
||||||
const char *LogTable,
|
const char *LogTable,
|
||||||
const char BrowserTimeZone[Dat_MAX_BYTES_TIME_ZONE + 1],
|
const char BrowserTimeZone[Dat_MAX_BYTES_TIME_ZONE + 1],
|
||||||
unsigned NumUsrsInList,
|
unsigned NumUsrsInList,
|
||||||
const long LstSelectedUsrCods[])
|
const long *LstSelectedUsrCods)
|
||||||
{
|
{
|
||||||
char SubQueryCountType[256];
|
char SubQueryCountType[256];
|
||||||
char SubQueryRole[256];
|
char SubQueryRole[256];
|
||||||
|
|
|
@ -40,6 +40,6 @@ unsigned Sta_DB_GetHits (MYSQL_RES **mysql_res,
|
||||||
const char *LogTable,
|
const char *LogTable,
|
||||||
const char BrowserTimeZone[Dat_MAX_BYTES_TIME_ZONE + 1],
|
const char BrowserTimeZone[Dat_MAX_BYTES_TIME_ZONE + 1],
|
||||||
unsigned NumUsrsInList,
|
unsigned NumUsrsInList,
|
||||||
const long LstSelectedUsrCods[]);
|
const long *LstSelectedUsrCods);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -24812,7 +24812,7 @@ const char *Txt_Actions[ActLst_NUM_ACTIONS] =
|
||||||
"Show class photo of students ready to be printed" // Çeviri lazim!
|
"Show class photo of students ready to be printed" // Çeviri lazim!
|
||||||
#endif
|
#endif
|
||||||
,
|
,
|
||||||
[ActDoActOnSevStd] =
|
[Act_DoAct_OnSevStd] =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Do an action on several selected students" // Necessita traducció
|
"Do an action on several selected students" // Necessita traducció
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
|
@ -25870,7 +25870,7 @@ const char *Txt_Actions[ActLst_NUM_ACTIONS] =
|
||||||
"Show class photo of teachers ready to be printed" // Çeviri lazim!
|
"Show class photo of teachers ready to be printed" // Çeviri lazim!
|
||||||
#endif
|
#endif
|
||||||
,
|
,
|
||||||
[ActDoActOnSevTch] =
|
[Act_DoAct_OnSevTch] =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Do an action on several selected teachers" // Necessita traducció
|
"Do an action on several selected teachers" // Necessita traducció
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
|
@ -27112,7 +27112,7 @@ const char *Txt_Actions[ActLst_NUM_ACTIONS] =
|
||||||
"Show class photo of guests ready to be printed" // Çeviri lazim!
|
"Show class photo of guests ready to be printed" // Çeviri lazim!
|
||||||
#endif
|
#endif
|
||||||
,
|
,
|
||||||
[ActDoActOnSevGst] =
|
[Act_DoAct_OnSevGst] =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Do an action on several selected guests" // Necessita traducció
|
"Do an action on several selected guests" // Necessita traducció
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
|
|
|
@ -1489,7 +1489,7 @@ static void Tmt_TimeTableDrawCellEdit (const struct Tmt_Timetable *Timetable,
|
||||||
Tmt_IntervalType_t IntervalType,Tmt_ClassType_t ClassType,
|
Tmt_IntervalType_t IntervalType,Tmt_ClassType_t ClassType,
|
||||||
unsigned DurationNumIntervals,const char *Info)
|
unsigned DurationNumIntervals,const char *Info)
|
||||||
{
|
{
|
||||||
extern const char *Par_CodeStr[];
|
extern const char *Par_CodeStr[Par_NUM_PAR_COD];
|
||||||
extern const char *Tmt_DB_ClassType[Tmt_NUM_CLASS_TYPES];
|
extern const char *Tmt_DB_ClassType[Tmt_NUM_CLASS_TYPES];
|
||||||
extern const char *Txt_TIMETABLE_CLASS_TYPES[Tmt_NUM_CLASS_TYPES];
|
extern const char *Txt_TIMETABLE_CLASS_TYPES[Tmt_NUM_CLASS_TYPES];
|
||||||
extern const char *Txt_Group;
|
extern const char *Txt_Group;
|
||||||
|
|
40
swad_user.c
40
swad_user.c
|
@ -3540,7 +3540,7 @@ void Usr_FreeListSelectedUsrCods (long *LstSelectedUsrCods)
|
||||||
/******** from list of users' codes *******/
|
/******** from list of users' codes *******/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Usr_CreateSubqueryUsrCods (long LstSelectedUsrCods[],
|
void Usr_CreateSubqueryUsrCods (long *LstSelectedUsrCods,
|
||||||
unsigned NumUsrsInList,
|
unsigned NumUsrsInList,
|
||||||
char **UsrsSubQuery)
|
char **UsrsSubQuery)
|
||||||
{
|
{
|
||||||
|
@ -5105,7 +5105,7 @@ void Usr_SeeGuests (void)
|
||||||
|
|
||||||
/* Begin form */
|
/* Begin form */
|
||||||
if (PutForm == Frm_PUT_FORM)
|
if (PutForm == Frm_PUT_FORM)
|
||||||
Frm_BeginForm (ActDoActOnSevGst);
|
Frm_BeginForm (Act_DoAct_OnSevGst);
|
||||||
|
|
||||||
/* Begin table */
|
/* Begin table */
|
||||||
HTM_TABLE_Begin ("TBL_SCROLL");
|
HTM_TABLE_Begin ("TBL_SCROLL");
|
||||||
|
@ -5258,7 +5258,7 @@ void Usr_SeeStudents (void)
|
||||||
/* Begin form */
|
/* Begin form */
|
||||||
if (PutForm == Frm_PUT_FORM)
|
if (PutForm == Frm_PUT_FORM)
|
||||||
{
|
{
|
||||||
Frm_BeginForm (ActDoActOnSevStd);
|
Frm_BeginForm (Act_DoAct_OnSevStd);
|
||||||
Grp_PutParsCodGrps ();
|
Grp_PutParsCodGrps ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5426,7 +5426,7 @@ void Usr_SeeTeachers (void)
|
||||||
/* Begin form */
|
/* Begin form */
|
||||||
if (PutForm == Frm_PUT_FORM)
|
if (PutForm == Frm_PUT_FORM)
|
||||||
{
|
{
|
||||||
Frm_BeginForm (ActDoActOnSevTch);
|
Frm_BeginForm (Act_DoAct_OnSevTch);
|
||||||
Grp_PutParsCodGrps ();
|
Grp_PutParsCodGrps ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5651,13 +5651,13 @@ void Usr_DoActionOnSeveralUsrs1 (void)
|
||||||
case Usr_OPTION_RECORDS:
|
case Usr_OPTION_RECORDS:
|
||||||
switch (Gbl.Action.Act)
|
switch (Gbl.Action.Act)
|
||||||
{
|
{
|
||||||
case ActDoActOnSevGst:
|
case Act_DoAct_OnSevGst:
|
||||||
Gbl.Action.Act = ActSeeRecSevGst;
|
Gbl.Action.Act = ActSeeRecSevGst;
|
||||||
break;
|
break;
|
||||||
case ActDoActOnSevStd:
|
case Act_DoAct_OnSevStd:
|
||||||
Gbl.Action.Act = ActSeeRecSevStd;
|
Gbl.Action.Act = ActSeeRecSevStd;
|
||||||
break;
|
break;
|
||||||
case ActDoActOnSevTch:
|
case Act_DoAct_OnSevTch:
|
||||||
Gbl.Action.Act = ActSeeRecSevTch;
|
Gbl.Action.Act = ActSeeRecSevTch;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -5667,8 +5667,8 @@ void Usr_DoActionOnSeveralUsrs1 (void)
|
||||||
case Usr_OPTION_HOMEWORK:
|
case Usr_OPTION_HOMEWORK:
|
||||||
switch (Gbl.Action.Act)
|
switch (Gbl.Action.Act)
|
||||||
{
|
{
|
||||||
case ActDoActOnSevStd:
|
case Act_DoAct_OnSevStd:
|
||||||
case ActDoActOnSevTch:
|
case Act_DoAct_OnSevTch:
|
||||||
Gbl.Action.Act = ActAdmAsgWrkCrs;
|
Gbl.Action.Act = ActAdmAsgWrkCrs;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -5678,7 +5678,7 @@ void Usr_DoActionOnSeveralUsrs1 (void)
|
||||||
case Usr_OPTION_ATTENDANCE:
|
case Usr_OPTION_ATTENDANCE:
|
||||||
switch (Gbl.Action.Act)
|
switch (Gbl.Action.Act)
|
||||||
{
|
{
|
||||||
case ActDoActOnSevStd:
|
case Act_DoAct_OnSevStd:
|
||||||
Gbl.Action.Act = ActSeeLstUsrAtt;
|
Gbl.Action.Act = ActSeeLstUsrAtt;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -5688,8 +5688,8 @@ void Usr_DoActionOnSeveralUsrs1 (void)
|
||||||
case Usr_OPTION_MESSAGE:
|
case Usr_OPTION_MESSAGE:
|
||||||
switch (Gbl.Action.Act)
|
switch (Gbl.Action.Act)
|
||||||
{
|
{
|
||||||
case ActDoActOnSevStd:
|
case Act_DoAct_OnSevStd:
|
||||||
case ActDoActOnSevTch:
|
case Act_DoAct_OnSevTch:
|
||||||
Gbl.Action.Act = ActReqMsgUsr;
|
Gbl.Action.Act = ActReqMsgUsr;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -5699,7 +5699,7 @@ void Usr_DoActionOnSeveralUsrs1 (void)
|
||||||
case Usr_OPTION_EMAIL:
|
case Usr_OPTION_EMAIL:
|
||||||
switch (Gbl.Action.Act)
|
switch (Gbl.Action.Act)
|
||||||
{
|
{
|
||||||
case ActDoActOnSevStd:
|
case Act_DoAct_OnSevStd:
|
||||||
Gbl.Action.Act = ActMaiUsr;
|
Gbl.Action.Act = ActMaiUsr;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -5709,10 +5709,10 @@ void Usr_DoActionOnSeveralUsrs1 (void)
|
||||||
case Usr_OPTION_FOLLOW:
|
case Usr_OPTION_FOLLOW:
|
||||||
switch (Gbl.Action.Act)
|
switch (Gbl.Action.Act)
|
||||||
{
|
{
|
||||||
case ActDoActOnSevStd:
|
case Act_DoAct_OnSevStd:
|
||||||
Gbl.Action.Act = ActReqFolSevStd;
|
Gbl.Action.Act = ActReqFolSevStd;
|
||||||
break;
|
break;
|
||||||
case ActDoActOnSevTch:
|
case Act_DoAct_OnSevTch:
|
||||||
Gbl.Action.Act = ActReqFolSevTch;
|
Gbl.Action.Act = ActReqFolSevTch;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -5722,10 +5722,10 @@ void Usr_DoActionOnSeveralUsrs1 (void)
|
||||||
case Usr_OPTION_UNFOLLOW:
|
case Usr_OPTION_UNFOLLOW:
|
||||||
switch (Gbl.Action.Act)
|
switch (Gbl.Action.Act)
|
||||||
{
|
{
|
||||||
case ActDoActOnSevStd:
|
case Act_DoAct_OnSevStd:
|
||||||
Gbl.Action.Act = ActReqUnfSevStd;
|
Gbl.Action.Act = ActReqUnfSevStd;
|
||||||
break;
|
break;
|
||||||
case ActDoActOnSevTch:
|
case Act_DoAct_OnSevTch:
|
||||||
Gbl.Action.Act = ActReqUnfSevTch;
|
Gbl.Action.Act = ActReqUnfSevTch;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -5756,13 +5756,13 @@ void Usr_DoActionOnSeveralUsrs2 (void)
|
||||||
so show again the form to selected users *****/
|
so show again the form to selected users *****/
|
||||||
switch (Gbl.Action.Act)
|
switch (Gbl.Action.Act)
|
||||||
{
|
{
|
||||||
case ActDoActOnSevGst:
|
case Act_DoAct_OnSevGst:
|
||||||
Usr_SeeGuests ();
|
Usr_SeeGuests ();
|
||||||
break;
|
break;
|
||||||
case ActDoActOnSevStd:
|
case Act_DoAct_OnSevStd:
|
||||||
Usr_SeeStudents ();
|
Usr_SeeStudents ();
|
||||||
break;
|
break;
|
||||||
case ActDoActOnSevTch:
|
case Act_DoAct_OnSevTch:
|
||||||
Usr_SeeTeachers ();
|
Usr_SeeTeachers ();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -386,7 +386,7 @@ void Usr_GetListSelectedUsrCods (struct Usr_SelectedUsrs *SelectedUsrs,
|
||||||
long **LstSelectedUsrCods);
|
long **LstSelectedUsrCods);
|
||||||
void Usr_FreeListSelectedUsrCods (long *LstSelectedUsrCods);
|
void Usr_FreeListSelectedUsrCods (long *LstSelectedUsrCods);
|
||||||
|
|
||||||
void Usr_CreateSubqueryUsrCods (long LstSelectedUsrCods[],
|
void Usr_CreateSubqueryUsrCods (long *LstSelectedUsrCods,
|
||||||
unsigned NumUsrsInList,
|
unsigned NumUsrsInList,
|
||||||
char **SubQueryUsrs);
|
char **SubQueryUsrs);
|
||||||
void Usr_FreeSubqueryUsrCods (char *SubQueryUsrs);
|
void Usr_FreeSubqueryUsrCods (char *SubQueryUsrs);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user