From f3d16e64c313c019c3324c8e122ecabf18586bf3 Mon Sep 17 00:00:00 2001 From: acanas Date: Tue, 19 Mar 2024 18:39:35 +0100 Subject: [PATCH] Version 23.70: Mar 19, 2024 Code refactoring and bug fixing in syllabus. --- swad_MFU.c | 15 +- swad_action.c | 18 +- swad_action_list.h | 3533 ++++++++++++++++++++++---------------------- swad_changelog.h | 3 +- swad_form.c | 8 +- swad_info.c | 287 ++-- swad_info.h | 10 +- swad_mail.c | 9 +- swad_menu.c | 17 +- swad_report.c | 2 +- swad_syllabus.c | 206 ++- swad_syllabus.h | 11 +- swad_tab.c | 6 +- swad_text.c | 117 +- 14 files changed, 2075 insertions(+), 2167 deletions(-) diff --git a/swad_MFU.c b/swad_MFU.c index 29eec0e8..914ef79a 100644 --- a/swad_MFU.c +++ b/swad_MFU.c @@ -110,11 +110,10 @@ void MFU_GetMFUActions (struct MFU_ListMFUActions *ListMFUActions,unsigned MaxAc { /* Get action code */ ActCod = DB_GetNextCode (mysql_res); - if (ActCod >= 0 && ActCod <= ActLst_MAX_ACTION_COD) - if ((Action = Act_GetActionFromActCod (ActCod)) >= 0) - if (Act_GetIndexInMenu (Action) >= 0) // MFU actions must be only actions shown on menu (database could contain wrong action numbers) - if (Act_CheckIfIHavePermissionToExecuteAction (Action)) - ListMFUActions->Actions[ListMFUActions->NumActions++] = Action; + if ((Action = Act_GetActionFromActCod (ActCod)) != ActUnk) + if (Act_GetIndexInMenu (Action) >= 0) // MFU actions must be only actions shown on menu (database could contain wrong action numbers) + if (Act_CheckIfIHavePermissionToExecuteAction (Action)) + ListMFUActions->Actions[ListMFUActions->NumActions++] = Action; } /***** Free structure that stores the query result *****/ @@ -148,7 +147,7 @@ Act_Action_t MFU_GetMyLastActionInCurrentTab (void) ActCod = DB_GetNextCode (mysql_res); if (ActCod >= 0 && ActCod <= ActLst_MAX_ACTION_COD) if ((Action = Act_GetActionFromActCod (ActCod)) >= 0) - if (Act_GetTab (Act_GetSuperAction (Action)) == Gbl.Action.Tab) + if (Act_GetTab (Action) == Gbl.Action.Tab) if (Act_CheckIfIHavePermissionToExecuteAction (Action)) { MoreRecentActionInCurrentTab = Action; @@ -213,7 +212,7 @@ void MFU_WriteBigMFUActions (struct MFU_ListMFUActions *ListMFUActions) if ((Title = Act_GetTitleAction (Action)) != NULL) { /* Action string */ - Str_Copy (TabStr,Tab_GetTxt (Act_GetTab (Act_GetSuperAction (Action))), + Str_Copy (TabStr,Tab_GetTxt (Act_GetTab (Action)), sizeof (TabStr) - 1); Str_Copy (MenuStr,Title,sizeof (MenuStr) - 1); snprintf (TabMenuStr,sizeof (TabMenuStr),"%s > %s",TabStr,MenuStr); @@ -271,7 +270,7 @@ void MFU_WriteSmallMFUActions (struct MFU_ListMFUActions *ListMFUActions) if ((Title = Act_GetTitleAction (Action)) != NULL) { /* Action string */ - Str_Copy (TabStr,Tab_GetTxt (Act_GetTab (Act_GetSuperAction (Action))), + Str_Copy (TabStr,Tab_GetTxt (Act_GetTab (Action)), sizeof (TabStr) - 1); Str_Copy (MenuStr,Title,sizeof (MenuStr) - 1); snprintf (TabMenuStr,sizeof (TabMenuStr),"%s > %s",TabStr,MenuStr); diff --git a/swad_action.c b/swad_action.c index 70a0040f..5b9621d2 100644 --- a/swad_action.c +++ b/swad_action.c @@ -47,10 +47,10 @@ Act_Action_t Act_GetActionFromActCod (long ActCod) { extern Act_Action_t ActLst_FromActCodToAction[1 + ActLst_MAX_ACTION_COD]; - if (ActCod >= 0 && ActCod <= ActLst_MAX_ACTION_COD) - return ActLst_FromActCodToAction[ActCod]; + if (ActCod < 0 || ActCod > ActLst_MAX_ACTION_COD) + return ActUnk; - return ActUnk; + return ActLst_FromActCodToAction[ActCod]; } /*****************************************************************************/ @@ -201,11 +201,21 @@ const char *Act_GetIconFromAction (Act_Action_t Action) const char *Act_GetTitleAction (Act_Action_t Action) { extern const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB]; + Tab_Tab_t Tab; + signed int IndexInMenu; if ((unsigned) Action >= ActLst_NUM_ACTIONS) return NULL; - return Txt_MENU_TITLE[Act_GetTab (Action)][Act_GetIndexInMenu (Action)]; + Tab = Act_GetTab (Action); + if (Tab == TabUnk) + return NULL; + + IndexInMenu = Act_GetIndexInMenu (Action); + if (IndexInMenu < 0) + return NULL; + + return Txt_MENU_TITLE[Tab][IndexInMenu]; } /*****************************************************************************/ diff --git a/swad_action_list.h b/swad_action_list.h index d76fdb15..79f52e42 100644 --- a/swad_action_list.h +++ b/swad_action_list.h @@ -29,1743 +29,1802 @@ typedef enum { - ActAll, - - ActUnk, - ActMnu, - - ActRefCon, - - ActWebSvc, - -/*****************************************************************************/ -/********************************* Start tab *********************************/ -/*****************************************************************************/ - - // Log in - ActFrmLogIn, - ActLogIn, - ActLogInNew, - ActLogInLan, - ActAnnSee, - ActReqSndNewPwd, - ActSndNewPwd, - ActLogOut, - - // Search - ActReqSch, - ActSch, - - // Timeline - ActSeeGblTL, - ActRefNewPubGblTL, - ActRefOldPubGblTL, - ActRcvPstGblTL, - ActRcvComGblTL, - ActShoHidComGblTL, - ActAllShaNotGblTL, - ActAllFavNotGblTL, - ActAllFavComGblTL, - ActShaNotGblTL, - ActUnsNotGblTL, - ActFavNotGblTL, - ActUnfNotGblTL, - ActFavComGblTL, - ActUnfComGblTL, - ActReqRemPubGblTL, - ActRemPubGblTL, - ActReqRemComGblTL, - ActRemComGblTL, - - // Profiles - ActSeeSocPrf, - ActReqOthPubPrf, - ActRefOldPubUsrTL, - ActRcvPstUsrTL, - ActRcvComUsrTL, - ActShoHidComUsrTL, - ActAllShaNotUsrTL, - ActAllFavNotUsrTL, - ActAllFavComUsrTL, - ActShaNotUsrTL, - ActUnsNotUsrTL, - ActFavNotUsrTL, - ActUnfNotUsrTL, - ActFavComUsrTL, - ActUnfComUsrTL, - ActReqRemPubUsrTL, - ActRemPubUsrTL, - ActReqRemComUsrTL, - ActRemComUsrTL, - ActSeeOthPubPrf, - ActCalFig, - ActFolUsr, - ActUnfUsr, - ActSeeFlg, - ActSeeFlr, - ActSeeUsrAgd, - - // Calendar - ActSeeCal, - ActPrnCal, - ActChgCal1stDay, - - // Notifications - ActSeeNtf, - ActSeeNewNtf, - ActMrkNtfSee, - ActSeeMai, - ActEdiMai, - ActNewMai, - ActRemMai, - ActRenMaiSho, - ActRenMaiFul, - -/*****************************************************************************/ -/******************************** System tab *********************************/ -/*****************************************************************************/ - - // System info - ActSeeSysInf, - ActPrnSysInf, - - // Countries - ActSeeCty, - ActEdiCty, - ActNewCty, - ActRemCty, - ActRenCty, - ActChgCtyWWW, - - // Pending - ActSeePen, - - // Links - ActSeeLnk, - ActEdiLnk, - ActNewLnk, - ActRemLnk, - ActRenLnkSho, - ActRenLnkFul, - ActChgLnkWWW, - ActSeeBan, - ActEdiBan, - ActNewBan, - ActRemBan, - ActUnhBan, - ActHidBan, - ActRenBanSho, - ActRenBanFul, - ActChgBanImg, - ActChgBanWWW, - ActClkBan, - - // Plugins - ActSeePlg, - ActEdiPlg, - ActNewPlg, - ActRemPlg, - ActRenPlg, - ActChgPlgDes, - ActChgPlgLog, - ActChgPlgAppKey, - ActChgPlgURL, - ActChgPlgIP, - - // Maintenance - ActMtn, - ActSetUp, - ActReqRemOldCrs, - ActRemOldCrs, - -/*****************************************************************************/ -/******************************** Country tab ********************************/ -/*****************************************************************************/ - - // Country info - ActSeeCtyInf, - ActPrnCtyInf, - ActChgCtyMapAtt, - - // Institutions - ActSeeIns, - ActEdiIns, - ActReqIns, - ActNewIns, - ActRemIns, - ActRenInsSho, - ActRenInsFul, - ActChgInsWWW, - ActChgInsSta, - -/*****************************************************************************/ -/****************************** Institution tab ******************************/ -/*****************************************************************************/ - - // Institution info - ActSeeInsInf, - ActPrnInsInf, - ActChgInsCtyCfg, - ActRenInsShoCfg, - ActRenInsFulCfg, - ActChgInsWWWCfg, - ActReqInsLog, - ActRecInsLog, - ActRemInsLog, - - // Centers - ActSeeCtr, - ActEdiCtr, - ActReqCtr, - ActNewCtr, - ActRemCtr, - ActChgCtrPlc, - ActRenCtrSho, - ActRenCtrFul, - ActChgCtrWWW, - ActChgCtrSta, - - // Places - ActSeePlc, - ActEdiPlc, - ActNewPlc, - ActRemPlc, - ActRenPlcSho, - ActRenPlcFul, - - // Departments - ActSeeDpt, - ActEdiDpt, - ActNewDpt, - ActRemDpt, - ActChgDptIns, - ActRenDptSho, - ActRenDptFul, - ActChgDptWWW, - - // Holidays - ActSeeHld, - ActEdiHld, - ActNewHld, - ActRemHld, - ActChgHldPlc, - ActChgHldTyp, - ActChgHldStrDat, - ActChgHldEndDat, - ActRenHld, - -/*****************************************************************************/ -/********************************* Center tab ********************************/ -/*****************************************************************************/ - - // Center info - ActSeeCtrInf, - ActPrnCtrInf, - ActChgCtrInsCfg, - ActRenCtrShoCfg, - ActRenCtrFulCfg, - ActChgCtrPlcCfg, - ActChgCtrLatCfg, - ActChgCtrLgtCfg, - ActChgCtrAltCfg, - ActChgCtrWWWCfg, - ActReqCtrLog, - ActRecCtrLog, - ActRemCtrLog, - ActReqCtrPho, - ActRecCtrPho, - ActChgCtrPhoAtt, - - // Degrees - ActSeeDeg, - ActEdiDeg, - ActReqDeg, - ActNewDeg, - ActRemDeg, - ActRenDegSho, - ActRenDegFul, - ActChgDegTyp, - ActChgDegWWW, - ActChgDegSta, - ActSeeDegTyp, - ActEdiDegTyp, - ActNewDegTyp, - ActRemDegTyp, - ActRenDegTyp, - - // Buildings - ActSeeBld, - ActEdiBld, - ActNewBld, - ActRemBld, - ActRenBldSho, - ActRenBldFul, - ActRenBldLoc, - - // Rooms - ActSeeRoo, - ActEdiRoo, - ActNewRoo, - ActRemRoo, - ActChgRooBld, - ActChgRooFlo, - ActChgRooTyp, - ActRenRooSho, - ActRenRooFul, - ActChgRooMaxUsr, - ActChgRooMAC, - -/*****************************************************************************/ -/********************************* Degree tab ********************************/ -/*****************************************************************************/ - // Degree info - ActSeeDegInf, - ActPrnDegInf, - ActChgDegCtrCfg, - ActRenDegShoCfg, - ActRenDegFulCfg, - ActChgDegWWWCfg, - ActReqDegLog, - ActRecDegLog, - ActRemDegLog, - - // Courses - ActSeeCrs, - ActEdiCrs, - ActReqCrs, - ActNewCrs, - ActRemCrs, - ActChgInsCrsCod, - ActChgCrsYea, - ActRenCrsSho, - ActRenCrsFul, - ActChgCrsSta, - -/*****************************************************************************/ -/******************************** Course tab *********************************/ -/*****************************************************************************/ - - // Course info - ActSeeCrsInf, - ActPrnCrsInf, - ActChgCrsDegCfg, - ActRenCrsShoCfg, - ActRenCrsFulCfg, - ActChgInsCrsCodCfg, - ActChgCrsYeaCfg, - ActEdiCrsInf, - ActChgFrcReaCrsInf, - ActChgHavReaCrsInf, - ActSelInfSrcCrsInf, - ActRcvURLCrsInf, - ActRcvPagCrsInf, - ActEditorCrsInf, - ActPlaTxtEdiCrsInf, - ActRchTxtEdiCrsInf, - ActRcvPlaTxtCrsInf, - ActRcvRchTxtCrsInf, - - // Program - ActSeePrg, - ActEdiPrg, - ActSeePrgItm, - ActFrmChgPrgItm, - ActFrmNewPrgItm, - ActChgPrgItm, - ActNewPrgItm, - ActReqRemPrgItm, - ActRemPrgItm, - ActHidPrgItm, - ActUnhPrgItm, - ActUp_PrgItm, - ActDwnPrgItm, - ActLftPrgItm, - ActRgtPrgItm, - ActExpSeePrgItm, - ActConSeePrgItm, - ActExpEdiPrgItm, - ActConEdiPrgItm, - ActSeeRscCli_InPrg, - ActRemRscCli_InPrg, - ActFrmSeePrgRsc, - ActFrmEdiPrgRsc, - ActNewPrgRsc, - ActRenPrgRsc, - ActReqRemPrgRsc, - ActRemPrgRsc, - ActHidPrgRsc, - ActUnhPrgRsc, - ActUp_PrgRsc, - ActDwnPrgRsc, - ActFrmChgLnkPrgRsc, - ActChgLnkPrgRsc, - - // Teaching guide - ActSeeTchGui, - ActEdiTchGui, - ActChgFrcReaTchGui, - ActChgHavReaTchGui, - ActSelInfSrcTchGui, - ActRcvURLTchGui, - ActRcvPagTchGui, - ActEditorTchGui, - ActPlaTxtEdiTchGui, - ActRchTxtEdiTchGui, - ActRcvPlaTxtTchGui, - ActRcvRchTxtTchGui, - - // Syllabus - ActSeeSyl, - ActSeeSylLec, - ActSeeSylPra, - ActEdiSylLec, - ActEdiSylPra, - ActDelItmSylLec, - ActDelItmSylPra, - ActUp_IteSylLec, - ActUp_IteSylPra, - ActDwnIteSylLec, - ActDwnIteSylPra, - ActRgtIteSylLec, - ActRgtIteSylPra, - ActLftIteSylLec, - ActLftIteSylPra, - ActInsIteSylLec, - ActInsIteSylPra, - ActModIteSylLec, - ActModIteSylPra, - ActChgFrcReaSylLec, - ActChgFrcReaSylPra, - ActChgHavReaSylLec, - ActChgHavReaSylPra, - ActSelInfSrcSylLec, - ActSelInfSrcSylPra, - ActRcvURLSylLec, - ActRcvURLSylPra, - ActRcvPagSylLec, - ActRcvPagSylPra, - ActEditorSylLec, - ActEditorSylPra, - ActPlaTxtEdiSylLec, - ActPlaTxtEdiSylPra, - ActRchTxtEdiSylLec, - ActRchTxtEdiSylPra, - ActRcvPlaTxtSylLec, - ActRcvPlaTxtSylPra, - ActRcvRchTxtSylLec, - ActRcvRchTxtSylPra, - - // Bibliography - ActSeeBib, - ActEdiBib, - ActChgFrcReaBib, - ActChgHavReaBib, - ActSelInfSrcBib, - ActRcvURLBib, - ActRcvPagBib, - ActEditorBib, - ActPlaTxtEdiBib, - ActRchTxtEdiBib, - ActRcvPlaTxtBib, - ActRcvRchTxtBib, - - // FAQ - ActSeeFAQ, - ActEdiFAQ, - ActChgFrcReaFAQ, - ActChgHavReaFAQ, - ActSelInfSrcFAQ, - ActRcvURLFAQ, - ActRcvPagFAQ, - ActEditorFAQ, - ActPlaTxtEdiFAQ, - ActRchTxtEdiFAQ, - ActRcvPlaTxtFAQ, - ActRcvRchTxtFAQ, - - // Links - ActSeeCrsLnk, - ActEdiCrsLnk, - ActChgFrcReaCrsLnk, - ActChgHavReaCrsLnk, - ActSelInfSrcCrsLnk, - ActRcvURLCrsLnk, - ActRcvPagCrsLnk, - ActEditorCrsLnk, - ActPlaTxtEdiCrsLnk, - ActRchTxtEdiCrsLnk, - ActRcvPlaTxtCrsLnk, - ActRcvRchTxtCrsLnk, - - // Assessment - ActSeeAss, - ActEdiAss, - ActChgFrcReaAss, - ActChgHavReaAss, - ActSelInfSrcAss, - ActRcvURLAss, - ActRcvPagAss, - ActEditorAss, - ActPlaTxtEdiAss, - ActRchTxtEdiAss, - ActRcvPlaTxtAss, - ActRcvRchTxtAss, - - // Timetable - ActSeeCrsTT, - ActPrnCrsTT, - ActEdiCrsTT, - ActChgCrsTT, - ActChgCrsTT1stDay, - -/*****************************************************************************/ -/***************************** Assessment tab ********************************/ -/*****************************************************************************/ - - // Assignments - ActSeeAllAsg, - ActFrmNewAsg, - ActEdiOneAsg, - ActSeeOneAsg, - ActPrnOneAsg, - ActNewAsg, - ActChgAsg, - ActReqRemAsg, - ActRemAsg, - ActHidAsg, - ActUnhAsg, - ActReqLnkAsg, - - // Projects - ActSeeAllPrj, - ActCfgPrj, - ActChgNETCanCrePrj, - ActChgRubPrj, - ActReqUsrPrj, - ActSeeTblAllPrj, - ActReqLckAllPrj, - ActReqUnlAllPrj, - ActLckAllPrj, - ActUnlAllPrj, - ActFrmNewPrj, - ActEdiOnePrj, - ActSeeOnePrj, - ActPrnOnePrj, - ActNewPrj, - ActChgPrj, - ActReqRemPrj, - ActRemPrj, - ActHidPrj, - ActUnhPrj, - ActLckPrj, - ActUnlPrj, - ActChgPrjRev, - ActReqAddStdPrj, - ActReqAddTutPrj, - ActReqAddEvlPrj, - ActAddStdPrj, - ActAddTutPrj, - ActAddEvlPrj, - ActReqRemStdPrj, - ActReqRemTutPrj, - ActReqRemEvlPrj, - ActRemStdPrj, - ActRemTutPrj, - ActRemEvlPrj, - ActChgPrjSco, - ActReqLnkPrj, - ActAdmDocPrj, - ActReqRemFilDocPrj, - ActRemFilDocPrj, - ActRemFolDocPrj, - ActCopDocPrj, - ActPasDocPrj, - ActRemTreDocPrj, - ActFrmCreDocPrj, - ActCreFolDocPrj, - ActCreLnkDocPrj, - ActRenFolDocPrj, - ActRcvFilDocPrjDZ, - ActRcvFilDocPrjCla, - ActExpDocPrj, - ActConDocPrj, - ActZIPDocPrj, - ActReqDatDocPrj, - ActChgDatDocPrj, - ActDowDocPrj, - ActAdmAssPrj, - ActReqRemFilAssPrj, - ActRemFilAssPrj, - ActRemFolAssPrj, - ActCopAssPrj, - ActPasAssPrj, - ActRemTreAssPrj, - ActFrmCreAssPrj, - ActCreFolAssPrj, - ActCreLnkAssPrj, - ActRenFolAssPrj, - ActRcvFilAssPrjDZ, - ActRcvFilAssPrjCla, - ActExpAssPrj, - ActConAssPrj, - ActZIPAssPrj, - ActReqDatAssPrj, - ActChgDatAssPrj, - ActDowAssPrj, - - // Calls for exams - ActSeeAllCfe, - ActSeeOneCfe, - ActSeeDatCfe, - ActEdiCfe, - ActRcvCfe, - ActPrnCfe, - ActReqRemCfe, - ActRemCfe, - ActHidCfe, - ActUnhCfe, - ActReqLnkCfe, - - // Questions - ActEdiTstQst, - ActEdiOneTstQst, - ActReqImpTstQst, - ActImpTstQst, - ActLstTstQst, - ActNewTstQst, - ActChgTstQst, - ActReqRemSevTstQst, - ActRemSevTstQst, - ActReqRemOneTstQst, - ActRemOneTstQst, - ActChgShfTstQst, - ActEdiTag, - ActEnaTag, - ActDisTag, - ActRenTag, - - // Test - ActReqTst, - ActSeeTst, - ActReqAssTst, - ActAssTst, - ActCfgTst, - ActRcvCfgTst, - ActReqSeeMyTstRes, - ActSeeMyTstResCrs, - ActSeeOneTstResMe, - ActReqSeeUsrTstRes, - ActSeeUsrTstResCrs, - ActSeeOneTstResOth, - - // Exams - ActSeeAllExa, - ActSeeOneExa, - ActFrmNewExa, - ActEdiOneExa, - ActNewExa, - ActChgExa, - ActReqRemExa, - ActRemExa, - ActHidExa, - ActUnhExa, - ActReqLnkExa, - ActNewExaSet, - ActReqRemExaSet, - ActRemExaSet, - ActUp_ExaSet, - ActDwnExaSet, - ActChgTitExaSet, - ActChgNumQstExaSet, - ActReqAddQstExaSet, - ActLstTstQstForSet, - ActAddQstToExa, - ActReqRemSetQst, - ActRemExaQst, - ActValSetQst, - ActInvSetQst, - ActReqNewExaSes, - ActReqChgExaSes, - ActNewExaSes, - ActChgExaSes, - ActReqRemExaSes, - ActRemExaSes, - ActHidExaSes, - ActUnhExaSes, - ActSeeExaPrn, - ActAnsExaPrn, - ActEndExaPrn, - ActSeeMyExaResCrs, - ActSeeMyExaResExa, - ActSeeMyExaResSes, - ActSeeOneExaResMe, - ActReqSeeUsrExaRes, - ActSeeUsrExaResCrs, - ActSeeUsrExaResExa, - ActSeeUsrExaResSes, - ActSeeOneExaResOth, - ActChgVisExaRes, - - // Games - ActSeeAllGam, - ActSeeOneGam, - ActReqNewMch, - ActReqChgMch, - ActNewMch, - ActChgMch, - ActReqRemMch, - ActRemMch, - ActResMch, - ActBckMch, - ActPlyPauMch, - ActFwdMch, - ActChgNumColMch, - ActChgVisResMchQst, - ActMchCntDwn, - ActRefMchTch, - ActJoiMch, - ActSeeMchAnsQstStd, - ActRemMchAnsQstStd, - ActAnsMchQstStd, - ActRefMchStd, - ActSeeMyMchResCrs, - ActSeeMyMchResGam, - ActSeeMyMchResMch, - ActSeeOneMchResMe, - ActReqSeeUsrMchRes, - ActSeeUsrMchResCrs, - ActSeeUsrMchResGam, - ActSeeUsrMchResMch, - ActSeeOneMchResOth, - ActChgVisResMchUsr, - ActLstOneGam, - ActFrmNewGam, - ActEdiOneGam, - ActNewGam, - ActChgGam, - ActReqRemGam, - ActRemGam, - ActHidGam, - ActUnhGam, - ActAddOneGamQst, - ActGamLstTstQst, - ActAddTstQstToGam, - ActReqRemGamQst, - ActRemGamQst, - ActUp_GamQst, - ActDwnGamQst, - ActReqLnkGam, - - // Rubrics - ActSeeAllRub, - ActSeeOneRub, - ActFrmNewRub, - ActEdiOneRub, - ActNewRub, - ActChgRub, - ActReqRemRub, - ActRemRub, - ActReqLnkRub, - ActSeeRscCli_InRub, - ActRemRscCli_InRub, - ActNewRubCri, - ActReqRemRubCri, - ActRemRubCri, - ActUp_RubCri, - ActDwnRubCri, - ActChgTitRubCri, - ActChgLnkRubCri, - ActChgMinRubCri, - ActChgMaxRubCri, - ActChgWeiRubCri, - -/*****************************************************************************/ -/******************************** Files tab **********************************/ -/*****************************************************************************/ - - // Documents of institution - ActSeeAdmDocIns, - ActChgToSeeDocIns, - ActSeeDocIns, - ActExpSeeDocIns, - ActConSeeDocIns, - ActZIPSeeDocIns, - ActReqDatSeeDocIns, - ActDowSeeDocIns, - ActChgToAdmDocIns, - ActAdmDocIns, - ActReqRemFilDocIns, - ActRemFilDocIns, - ActRemFolDocIns, - ActCopDocIns, - ActPasDocIns, - ActRemTreDocIns, - ActFrmCreDocIns, - ActCreFolDocIns, - ActCreLnkDocIns, - ActRenFolDocIns, - ActRcvFilDocInsDZ, - ActRcvFilDocInsCla, - ActExpAdmDocIns, - ActConAdmDocIns, - ActZIPAdmDocIns, - ActUnhDocIns, - ActHidDocIns, - ActReqDatAdmDocIns, - ActChgDatAdmDocIns, - ActDowAdmDocIns, - - // Shared files of institution - ActAdmShaIns, - ActReqRemFilShaIns, - ActRemFilShaIns, - ActRemFolShaIns, - ActCopShaIns, - ActPasShaIns, - ActRemTreShaIns, - ActFrmCreShaIns, - ActCreFolShaIns, - ActCreLnkShaIns, - ActRenFolShaIns, - ActRcvFilShaInsDZ, - ActRcvFilShaInsCla, - ActExpShaIns, - ActConShaIns, - ActZIPShaIns, - ActReqDatShaIns, - ActChgDatShaIns, - ActDowShaIns, - - // Documents of center - ActSeeAdmDocCtr, - ActChgToSeeDocCtr, - ActSeeDocCtr, - ActExpSeeDocCtr, - ActConSeeDocCtr, - ActZIPSeeDocCtr, - ActReqDatSeeDocCtr, - ActDowSeeDocCtr, - ActChgToAdmDocCtr, - ActAdmDocCtr, - ActReqRemFilDocCtr, - ActRemFilDocCtr, - ActRemFolDocCtr, - ActCopDocCtr, - ActPasDocCtr, - ActRemTreDocCtr, - ActFrmCreDocCtr, - ActCreFolDocCtr, - ActCreLnkDocCtr, - ActRenFolDocCtr, - ActRcvFilDocCtrDZ, - ActRcvFilDocCtrCla, - ActExpAdmDocCtr, - ActConAdmDocCtr, - ActZIPAdmDocCtr, - ActUnhDocCtr, - ActHidDocCtr, - ActReqDatAdmDocCtr, - ActChgDatAdmDocCtr, - ActDowAdmDocCtr, - - // Shared files of center - ActAdmShaCtr, - ActReqRemFilShaCtr, - ActRemFilShaCtr, - ActRemFolShaCtr, - ActCopShaCtr, - ActPasShaCtr, - ActRemTreShaCtr, - ActFrmCreShaCtr, - ActCreFolShaCtr, - ActCreLnkShaCtr, - ActRenFolShaCtr, - ActRcvFilShaCtrDZ, - ActRcvFilShaCtrCla, - ActExpShaCtr, - ActConShaCtr, - ActZIPShaCtr, - ActReqDatShaCtr, - ActChgDatShaCtr, - ActDowShaCtr, - - // Deocuments of degree - ActSeeAdmDocDeg, - ActChgToSeeDocDeg, - ActSeeDocDeg, - ActExpSeeDocDeg, - ActConSeeDocDeg, - ActZIPSeeDocDeg, - ActReqDatSeeDocDeg, - ActDowSeeDocDeg, - ActChgToAdmDocDeg, - ActAdmDocDeg, - ActReqRemFilDocDeg, - ActRemFilDocDeg, - ActRemFolDocDeg, - ActCopDocDeg, - ActPasDocDeg, - ActRemTreDocDeg, - ActFrmCreDocDeg, - ActCreFolDocDeg, - ActCreLnkDocDeg, - ActRenFolDocDeg, - ActRcvFilDocDegDZ, - ActRcvFilDocDegCla, - ActExpAdmDocDeg, - ActConAdmDocDeg, - ActZIPAdmDocDeg, - ActUnhDocDeg, - ActHidDocDeg, - ActReqDatAdmDocDeg, - ActChgDatAdmDocDeg, - ActDowAdmDocDeg, - - // Shared files of degree - ActAdmShaDeg, - ActReqRemFilShaDeg, - ActRemFilShaDeg, - ActRemFolShaDeg, - ActCopShaDeg, - ActPasShaDeg, - ActRemTreShaDeg, - ActFrmCreShaDeg, - ActCreFolShaDeg, - ActCreLnkShaDeg, - ActRenFolShaDeg, - ActRcvFilShaDegDZ, - ActRcvFilShaDegCla, - ActExpShaDeg, - ActConShaDeg, - ActZIPShaDeg, - ActReqDatShaDeg, - ActChgDatShaDeg, - ActDowShaDeg, - - // Documents of course - ActSeeAdmDocCrsGrp, - ActChgToSeeDocCrs, - ActSeeDocCrs, - ActExpSeeDocCrs, - ActConSeeDocCrs, - ActZIPSeeDocCrs, - ActReqDatSeeDocCrs, - ActReqLnkSeeDocCrs, - ActDowSeeDocCrs, - ActSeeDocGrp, - ActExpSeeDocGrp, - ActConSeeDocGrp, - ActZIPSeeDocGrp, - ActReqDatSeeDocGrp, - ActDowSeeDocGrp, - ActChgToAdmDocCrs, - ActAdmDocCrs, - ActReqRemFilDocCrs, - ActRemFilDocCrs, - ActRemFolDocCrs, - ActCopDocCrs, - ActPasDocCrs, - ActRemTreDocCrs, - ActFrmCreDocCrs, - ActCreFolDocCrs, - ActCreLnkDocCrs, - ActRenFolDocCrs, - ActRcvFilDocCrsDZ, - ActRcvFilDocCrsCla, - ActExpAdmDocCrs, - ActConAdmDocCrs, - ActZIPAdmDocCrs, - ActUnhDocCrs, - ActHidDocCrs, - ActReqDatAdmDocCrs, - ActChgDatAdmDocCrs, - ActReqLnkAdmDocCrs, - ActDowAdmDocCrs, - ActAdmDocGrp, - ActReqRemFilDocGrp, - ActRemFilDocGrp, - ActRemFolDocGrp, - ActCopDocGrp, - ActPasDocGrp, - ActRemTreDocGrp, - ActFrmCreDocGrp, - ActCreFolDocGrp, - ActCreLnkDocGrp, - ActRenFolDocGrp, - ActRcvFilDocGrpDZ, - ActRcvFilDocGrpCla, - ActExpAdmDocGrp, - ActConAdmDocGrp, - ActZIPAdmDocGrp, - ActUnhDocGrp, - ActHidDocGrp, - ActReqDatAdmDocGrp, - ActChgDatAdmDocGrp, - ActDowAdmDocGrp, - - // Private documents for course teachers - ActAdmTchCrsGrp, - ActChgToAdmTch, - ActAdmTchCrs, - ActReqRemFilTchCrs, - ActRemFilTchCrs, - ActRemFolTchCrs, - ActCopTchCrs, - ActPasTchCrs, - ActRemTreTchCrs, - ActFrmCreTchCrs, - ActCreFolTchCrs, - ActCreLnkTchCrs, - ActRenFolTchCrs, - ActRcvFilTchCrsDZ, - ActRcvFilTchCrsCla, - ActExpTchCrs, - ActConTchCrs, - ActZIPTchCrs, - ActReqDatTchCrs, - ActChgDatTchCrs, - ActDowTchCrs, - ActAdmTchGrp, - ActReqRemFilTchGrp, - ActRemFilTchGrp, - ActRemFolTchGrp, - ActCopTchGrp, - ActPasTchGrp, - ActRemTreTchGrp, - ActFrmCreTchGrp, - ActCreFolTchGrp, - ActCreLnkTchGrp, - ActRenFolTchGrp, - ActRcvFilTchGrpDZ, - ActRcvFilTchGrpCla, - ActExpTchGrp, - ActConTchGrp, - ActZIPTchGrp, - ActReqDatTchGrp, - ActChgDatTchGrp, - ActDowTchGrp, - - // Shared files of course - ActAdmShaCrsGrp, - ActChgToAdmSha, - ActAdmShaCrs, - ActReqRemFilShaCrs, - ActRemFilShaCrs, - ActRemFolShaCrs, - ActCopShaCrs, - ActPasShaCrs, - ActRemTreShaCrs, - ActFrmCreShaCrs, - ActCreFolShaCrs, - ActCreLnkShaCrs, - ActRenFolShaCrs, - ActRcvFilShaCrsDZ, - ActRcvFilShaCrsCla, - ActExpShaCrs, - ActConShaCrs, - ActZIPShaCrs, - ActReqDatShaCrs, - ActChgDatShaCrs, - ActDowShaCrs, - ActAdmShaGrp, - ActReqRemFilShaGrp, - ActRemFilShaGrp, - ActRemFolShaGrp, - ActCopShaGrp, - ActPasShaGrp, - ActRemTreShaGrp, - ActFrmCreShaGrp, - ActCreFolShaGrp, - ActCreLnkShaGrp, - ActRenFolShaGrp, - ActRcvFilShaGrpDZ, - ActRcvFilShaGrpCla, - ActExpShaGrp, - ActConShaGrp, - ActZIPShaGrp, - ActReqDatShaGrp, - ActChgDatShaGrp, - ActDowShaGrp, - - // Assignments and works of user - ActAdmAsgWrkUsr, - ActReqRemFilAsgUsr, - ActRemFilAsgUsr, - ActRemFolAsgUsr, - ActCopAsgUsr, - ActPasAsgUsr, - ActRemTreAsgUsr, - ActFrmCreAsgUsr, - ActCreFolAsgUsr, - ActCreLnkAsgUsr, - ActRenFolAsgUsr, - ActRcvFilAsgUsrDZ, - ActRcvFilAsgUsrCla, - ActExpAsgUsr, - ActConAsgUsr, - ActZIPAsgUsr, - ActReqDatAsgUsr, - ActChgDatAsgUsr, - ActDowAsgUsr, - ActReqRemFilWrkUsr, - ActRemFilWrkUsr, - ActRemFolWrkUsr, - ActCopWrkUsr, - ActPasWrkUsr, - ActRemTreWrkUsr, - ActFrmCreWrkUsr, - ActCreFolWrkUsr, - ActCreLnkWrkUsr, - ActRenFolWrkUsr, - ActRcvFilWrkUsrDZ, - ActRcvFilWrkUsrCla, - ActExpWrkUsr, - ActConWrkUsr, - ActZIPWrkUsr, - ActReqDatWrkUsr, - ActChgDatWrkUsr, - ActDowWrkUsr, - - // Assignments and works of course - ActReqAsgWrkCrs, - ActAdmAsgWrkCrs, - ActReqRemFilAsgCrs, - ActRemFilAsgCrs, - ActRemFolAsgCrs, - ActCopAsgCrs, - ActPasAsgCrs, - ActRemTreAsgCrs, - ActFrmCreAsgCrs, - ActCreFolAsgCrs, - ActCreLnkAsgCrs, - ActRenFolAsgCrs, - ActRcvFilAsgCrsDZ, - ActRcvFilAsgCrsCla, - ActExpAsgCrs, - ActConAsgCrs, - ActZIPAsgCrs, - ActReqDatAsgCrs, - ActChgDatAsgCrs, - ActDowAsgCrs, - ActReqRemFilWrkCrs, - ActRemFilWrkCrs, - ActRemFolWrkCrs, - ActCopWrkCrs, - ActPasWrkCrs, - ActRemTreWrkCrs, - ActFrmCreWrkCrs, - ActCreFolWrkCrs, - ActCreLnkWrkCrs, - ActRenFolWrkCrs, - ActRcvFilWrkCrsDZ, - ActRcvFilWrkCrsCla, - ActExpWrkCrs, - ActConWrkCrs, - ActZIPWrkCrs, - ActReqDatWrkCrs, - ActChgDatWrkCrs, - ActDowWrkCrs, - - // Marks - ActSeeAdmMrk, - ActChgToSeeMrk, - ActSeeMrkCrs, - ActExpSeeMrkCrs, - ActConSeeMrkCrs, - ActReqDatSeeMrkCrs, - ActReqLnkSeeMrkCrs, - ActSeeMyMrkCrs, - ActSeeMrkGrp, - ActExpSeeMrkGrp, - ActConSeeMrkGrp, - ActReqDatSeeMrkGrp, - ActSeeMyMrkGrp, - ActChgToAdmMrk, - ActAdmMrkCrs, - ActReqRemFilMrkCrs, - ActRemFilMrkCrs, - ActRemFolMrkCrs, - ActCopMrkCrs, - ActPasMrkCrs, - ActRemTreMrkCrs, - ActFrmCreMrkCrs, - ActCreFolMrkCrs, - ActRenFolMrkCrs, - ActRcvFilMrkCrsDZ, - ActRcvFilMrkCrsCla, - ActExpAdmMrkCrs, - ActConAdmMrkCrs, - ActZIPAdmMrkCrs, - ActUnhMrkCrs, - ActHidMrkCrs, - ActReqDatAdmMrkCrs, - ActChgDatAdmMrkCrs, - ActReqLnkAdmMrkCrs, - ActDowAdmMrkCrs, - ActChgNumRowHeaCrs, - ActChgNumRowFooCrs, - ActAdmMrkGrp, - ActReqRemFilMrkGrp, - ActRemFilMrkGrp, - ActRemFolMrkGrp, - ActCopMrkGrp, - ActPasMrkGrp, - ActRemTreMrkGrp, - ActFrmCreMrkGrp, - ActCreFolMrkGrp, - ActRenFolMrkGrp, - ActRcvFilMrkGrpDZ, - ActRcvFilMrkGrpCla, - ActExpAdmMrkGrp, - ActConAdmMrkGrp, - ActZIPAdmMrkGrp, - ActUnhMrkGrp, - ActHidMrkGrp, - ActReqDatAdmMrkGrp, - ActChgDatAdmMrkGrp, - ActDowAdmMrkGrp, - ActChgNumRowHeaGrp, - ActChgNumRowFooGrp, - - // Briefcase - ActAdmBrf, - ActReqRemFilBrf, - ActRemFilBrf, - ActRemFolBrf, - ActCopBrf, - ActPasBrf, - ActRemTreBrf, - ActFrmCreBrf, - ActCreFolBrf, - ActCreLnkBrf, - ActRenFolBrf, - ActRcvFilBrfDZ, - ActRcvFilBrfCla, - ActExpBrf, - ActConBrf, - ActZIPBrf, - ActReqDatBrf, - ActChgDatBrf, - ActDowBrf, - ActReqRemOldBrf, - ActRemOldBrf, - -/*****************************************************************************/ -/******************************* Users tab ***********************************/ -/*****************************************************************************/ - - // Groups - ActReqSelGrp, - ActChgGrp, - ActReqEdiGrp, - ActNewGrpTyp, - ActReqRemGrpTyp, - ActRemGrpTyp, - ActRenGrpTyp, - ActChgMdtGrpTyp, - ActChgMulGrpTyp, - ActChgTimGrpTyp, - ActNewGrp, - ActReqRemGrp, - ActRemGrp, - ActOpeGrp, - ActCloGrp, - ActEnaFilZonGrp, - ActDisFilZonGrp, - ActChgGrpTyp, - ActRenGrp, - ActChgGrpRoo, - ActChgMaxStdGrp, - - // Students - ActLstStd, - ActLstStdAll, - ActPrnStdPho, - ActDoActOnSevStd, - ActSeeRecSevStd, - ActPrnRecSevStd, - ActReqMdfOneStd, - ActReqMdfStd, - ActReqStdPho, - ActDetStdPho, - ActChgStdPho, - ActReqRemStdPho, - ActRemStdPho, - ActCreStd, - ActUpdStd, - ActCnfID_Std, - ActFrmAccStd, - ActRemNicStd, - ActChgNicStd, - ActRemID_Std, - ActChgID_Std, - ActChgPwdStd, - ActRemMaiStd, - ActChgMaiStd, - ActRemStdCrs, - ActReqRemAllStdCrs, - ActRemAllStdCrs, - ActReqAccEnrStd, - ActAccEnrStd, - ActRemMe_Std, - ActReqFolSevStd, - ActReqUnfSevStd, - ActFolSevStd, - ActUnfSevStd, - ActSeeRecOneStd, - ActReqEnrSevStd, - ActRcvFrmEnrSevStd, - ActRcvRecOthUsr, - ActEdiRecFie, - ActNewFie, - ActReqRemFie, - ActRemFie, - ActRenFie, - ActChgRowFie, - ActChgVisFie, - ActRcvRecCrs, - - // Teachers - ActLstTch, - ActLstTchAll, - ActPrnTchPho, - ActDoActOnSevTch, - ActSeeRecSevTch, - ActPrnRecSevTch, - ActReqMdfOneTch, - ActReqMdfNET, - ActReqMdfTch, - ActReqTchPho, - ActDetTchPho, - ActChgTchPho, - ActReqRemTchPho, - ActRemTchPho, - ActCreNET, - ActCreTch, - ActUpdNET, - ActUpdTch, - ActCnfID_Tch, - ActFrmAccTch, - ActRemNicTch, - ActChgNicTch, - ActRemID_Tch, - ActChgID_Tch, - ActChgPwdTch, - ActRemMaiTch, - ActChgMaiTch, - ActRemNETCrs, - ActRemTchCrs, - ActReqAccEnrNET, - ActReqAccEnrTch, - ActAccEnrNET, - ActAccEnrTch, - ActRemMe_NET, - ActRemMe_Tch, - ActReqFolSevTch, - ActReqUnfSevTch, - ActFolSevTch, - ActUnfSevTch, - ActSeeRecOneTch, - ActReqEnrSevNET, - ActRcvFrmEnrSevNET, - ActReqEnrSevTch, - ActRcvFrmEnrSevTch, - ActFrmLogInUsrAgd, - ActLogInUsrAgd, - ActLogInUsrAgdLan, - - // Others - ActLstOth, - ActNewAdmIns, - ActRemAdmIns, - ActNewAdmCtr, - ActRemAdmCtr, - ActNewAdmDeg, - ActRemAdmDeg, - ActLstGst, - ActLstGstAll, - ActPrnGstPho, - ActDoActOnSevGst, - ActSeeRecSevGst, - ActPrnRecSevGst, - ActReqMdfOneOth, - ActReqMdfOth, - ActReqOthPho, - ActDetOthPho, - ActChgOthPho, - ActReqRemOthPho, - ActRemOthPho, - ActCreOth, - ActUpdOth, - ActCnfID_Oth, - ActFrmAccOth, - ActRemNicOth, - ActChgNicOth, - ActRemID_Oth, - ActChgID_Oth, - ActChgPwdOth, - ActRemMaiOth, - ActChgMaiOth, - ActRemUsrGbl, - ActReqRemOldUsr, - ActRemOldUsr, - ActLstDupUsr, - ActLstSimUsr, - ActRemDupUsr, - - // Attendance - ActSeeAllAtt, - ActReqLstUsrAtt, - ActSeeLstMyAtt, - ActPrnLstMyAtt, - ActSeeLstUsrAtt, - ActPrnLstUsrAtt, - ActFrmNewAtt, - ActEdiOneAtt, - ActNewAtt, - ActChgAtt, - ActReqRemAtt, - ActRemAtt, - ActHidAtt, - ActUnhAtt, - ActSeeOneAtt, - ActReqLnkAtt, - ActRecAttStd, - ActRecAttMe, - - // Sign up - ActReqSignUp, - ActSignUp, - - // Requests - ActSeeSignUpReq, - ActUpdSignUpReq, - ActReqRejSignUp, - ActRejSignUp, - - // Connected - ActLstCon, - -/*****************************************************************************/ -/******************************* Messages tab ********************************/ -/*****************************************************************************/ - // Announcements - ActSeeAnn, - ActWriAnn, - ActNewAnn, - ActHidAnn, - ActUnhAnn, - ActRemAnn, - - // Notices - ActSeeAllNot, - ActSeeOneNot, - ActWriNot, - ActNewNot, - ActHidNot, - ActUnhNot, - ActReqRemNot, - ActRemNot, - - // Forums - ActSeeFor, - ActSeeForCrsUsr, - ActSeeForCrsTch, - ActSeeForDegUsr, - ActSeeForDegTch, - ActSeeForCtrUsr, - ActSeeForCtrTch, - ActSeeForInsUsr, - ActSeeForInsTch, - ActSeeForGenUsr, - ActSeeForGenTch, - ActSeeForSWAUsr, - ActSeeForSWATch, - ActSeePstForCrsUsr, - ActSeePstForCrsTch, - ActSeePstForDegUsr, - ActSeePstForDegTch, - ActSeePstForCtrUsr, - ActSeePstForCtrTch, - ActSeePstForInsUsr, - ActSeePstForInsTch, - ActSeePstForGenUsr, - ActSeePstForGenTch, - ActSeePstForSWAUsr, - ActSeePstForSWATch, - ActRcvThrForCrsUsr, - ActRcvThrForCrsTch, - ActRcvThrForDegUsr, - ActRcvThrForDegTch, - ActRcvThrForCtrUsr, - ActRcvThrForCtrTch, - ActRcvThrForInsUsr, - ActRcvThrForInsTch, - ActRcvThrForGenUsr, - ActRcvThrForGenTch, - ActRcvThrForSWAUsr, - ActRcvThrForSWATch, - ActRcvRepForCrsUsr, - ActRcvRepForCrsTch, - ActRcvRepForDegUsr, - ActRcvRepForDegTch, - ActRcvRepForCtrUsr, - ActRcvRepForCtrTch, - ActRcvRepForInsUsr, - ActRcvRepForInsTch, - ActRcvRepForGenUsr, - ActRcvRepForGenTch, - ActRcvRepForSWAUsr, - ActRcvRepForSWATch, - ActReqDelThrCrsUsr, - ActReqDelThrCrsTch, - ActReqDelThrDegUsr, - ActReqDelThrDegTch, - ActReqDelThrCtrUsr, - ActReqDelThrCtrTch, - ActReqDelThrInsUsr, - ActReqDelThrInsTch, - ActReqDelThrGenUsr, - ActReqDelThrGenTch, - ActReqDelThrSWAUsr, - ActReqDelThrSWATch, - ActDelThrForCrsUsr, - ActDelThrForCrsTch, - ActDelThrForDegUsr, - ActDelThrForDegTch, - ActDelThrForCtrUsr, - ActDelThrForCtrTch, - ActDelThrForInsUsr, - ActDelThrForInsTch, - ActDelThrForGenUsr, - ActDelThrForGenTch, - ActDelThrForSWAUsr, - ActDelThrForSWATch, - ActCutThrForCrsUsr, - ActCutThrForCrsTch, - ActCutThrForDegUsr, - ActCutThrForDegTch, - ActCutThrForCtrUsr, - ActCutThrForCtrTch, - ActCutThrForInsUsr, - ActCutThrForInsTch, - ActCutThrForGenUsr, - ActCutThrForGenTch, - ActCutThrForSWAUsr, - ActCutThrForSWATch, - ActPasThrForCrsUsr, - ActPasThrForCrsTch, - ActPasThrForDegUsr, - ActPasThrForDegTch, - ActPasThrForCtrUsr, - ActPasThrForCtrTch, - ActPasThrForInsUsr, - ActPasThrForInsTch, - ActPasThrForGenUsr, - ActPasThrForGenTch, - ActPasThrForSWAUsr, - ActPasThrForSWATch, - ActDelPstForCrsUsr, - ActDelPstForCrsTch, - ActDelPstForDegUsr, - ActDelPstForDegTch, - ActDelPstForCtrUsr, - ActDelPstForCtrTch, - ActDelPstForInsUsr, - ActDelPstForInsTch, - ActDelPstForGenUsr, - ActDelPstForGenTch, - ActDelPstForSWAUsr, - ActDelPstForSWATch, - ActEnbPstForCrsUsr, - ActEnbPstForCrsTch, - ActEnbPstForDegUsr, - ActEnbPstForDegTch, - ActEnbPstForCtrUsr, - ActEnbPstForCtrTch, - ActEnbPstForInsUsr, - ActEnbPstForInsTch, - ActEnbPstForGenUsr, - ActEnbPstForGenTch, - ActEnbPstForSWAUsr, - ActEnbPstForSWATch, - ActDisPstForCrsUsr, - ActDisPstForCrsTch, - ActDisPstForDegUsr, - ActDisPstForDegTch, - ActDisPstForCtrUsr, - ActDisPstForCtrTch, - ActDisPstForInsUsr, - ActDisPstForInsTch, - ActDisPstForGenUsr, - ActDisPstForGenTch, - ActDisPstForSWAUsr, - ActDisPstForSWATch, - ActReqLnkForCrsUsr, - - // Chat - ActSeeChtRms, - ActCht, - - // Messages - ActSeeRcvMsg, - ActReqMsgUsr, - ActSeeSntMsg, - ActRcvMsgUsr, - ActReqDelAllSntMsg, - ActReqDelAllRcvMsg, - ActDelAllSntMsg, - ActDelAllRcvMsg, - ActDelSntMsg, - ActDelRcvMsg, - ActExpSntMsg, - ActExpRcvMsg, - ActConSntMsg, - ActConRcvMsg, - ActLstBanUsr, - ActBanUsrMsg, - ActUnbUsrMsg, - ActUnbUsrLst, - - // Mail - ActReqMaiUsr, - ActMaiUsr, - -/*****************************************************************************/ -/****************************** Analytics tab ********************************/ -/*****************************************************************************/ - - // Figures - ActReqUseGbl, - ActSeeUseGbl, - - // Degrees - ActSeePhoDeg, - ActPrnPhoDeg, - ActCalPhoDeg, - - // Indicators - ActReqStaCrs, - ActSeeAllStaCrs, - - // Surveys - ActSeeAllSvy, - ActSeeOneSvy, - ActAnsSvy, - ActFrmNewSvy, - ActEdiOneSvy, - ActNewSvy, - ActChgSvy, - ActReqRemSvy, - ActRemSvy, - ActReqRstSvy, - ActRstSvy, - ActHidSvy, - ActUnhSvy, - ActReqLnkSvy, - ActEdiOneSvyQst, - ActNewSvyQst, - ActChgSvyQst, - ActReqRemSvyQst, - ActRemSvyQst, - - // Visits - ActReqAccGbl, - ActSeeAccGbl, - ActReqAccCrs, - ActSeeAccCrs, - ActLstClk, - ActRefLstClk, - - // Report - ActReqMyUsgRep, - ActSeeMyUsgRep, - - // Frequent - ActMFUAct, - -/*****************************************************************************/ -/******************************** Profile tab ********************************/ -/*****************************************************************************/ - - // Session - ActFrmRolSes, - ActChgMyRol, - - // Courses - ActMyCrs, - - // Timetable - ActSeeMyTT, - ActPrnMyTT, - ActEdiTut, - ActChgTut, - ActChgMyTT1stDay, - - // Agenda - ActSeeMyAgd, - ActFrmNewEvtMyAgd, - ActEdiOneEvtMyAgd, - ActNewEvtMyAgd, - ActChgEvtMyAgd, - ActReqRemEvtMyAgd, - ActRemEvtMyAgd, - ActHidEvtMyAgd, - ActUnhEvtMyAgd, - ActPrvEvtMyAgd, - ActPubEvtMyAgd, - ActPrnAgdQR, - - // Account - ActFrmMyAcc, - ActChkUsrAcc, - ActCreMyAcc, - ActCreUsrAcc, - ActRemMyID, - ActChgMyID, - ActRemMyNck, - ActChgMyNck, - ActRemMyMai, - ActChgMyMai, - ActCnfMai, - ActChgMyPwd, - ActReqRemMyAcc, - ActRemMyAcc, - ActPrnUsrQR, - - // Record - ActReqEdiRecSha, - ActChgMyData, - ActReqMyPho, - ActDetMyPho, - ActUpdMyPho, - ActReqRemMyPho, - ActRemMyPho, - ActChgCtyMyIns, - ActChgMyIns, - ActChgMyCtr, - ActChgMyDpt, - ActChgMyOff, - ActChgMyOffPho, - ActReqEdiMyNet, - ActChgMyNet, - - // Settings - ActReqEdiSet, - ActChgThe, - ActReqChgLan, - ActChgLan, - ActChg1stDay, - ActChgDatFmt, - ActChgCol, - ActChgIco, - ActChgMnu, - ActChgUsrPho, - ActChgPriPho, - ActChgBasPriPrf, - ActChgExtPriPrf, - ActChgCooPrf, - ActChgNtfPrf, + /********************************* No tab *********************************/ + + ActAll, + ActUnk, + ActMnu, + ActRefCon, + ActWebSvc, + + /******************************* Start tab ********************************/ + + // Log in ------------------------------------------------------------------ + + ActFrmLogIn, + ActLogIn, + ActLogInNew, + ActLogInLan, + ActAnnSee, + ActReqSndNewPwd, + ActSndNewPwd, + ActLogOut, + + // Search ------------------------------------------------------------------ + + ActReqSch, + ActSch, + + // Timeline ---------------------------------------------------------------- + + ActSeeGblTL, + ActRefNewPubGblTL, + ActRefOldPubGblTL, + ActRcvPstGblTL, + ActRcvComGblTL, + ActShoHidComGblTL, + ActAllShaNotGblTL, + ActAllFavNotGblTL, + ActAllFavComGblTL, + ActShaNotGblTL, + ActUnsNotGblTL, + ActFavNotGblTL, + ActUnfNotGblTL, + ActFavComGblTL, + ActUnfComGblTL, + ActReqRemPubGblTL, + ActRemPubGblTL, + ActReqRemComGblTL, + ActRemComGblTL, + + // Profiles ---------------------------------------------------------------- + + ActSeeSocPrf, + ActReqOthPubPrf, + ActRefOldPubUsrTL, + ActRcvPstUsrTL, + ActRcvComUsrTL, + ActShoHidComUsrTL, + ActAllShaNotUsrTL, + ActAllFavNotUsrTL, + ActAllFavComUsrTL, + ActShaNotUsrTL, + ActUnsNotUsrTL, + ActFavNotUsrTL, + ActUnfNotUsrTL, + ActFavComUsrTL, + ActUnfComUsrTL, + ActReqRemPubUsrTL, + ActRemPubUsrTL, + ActReqRemComUsrTL, + ActRemComUsrTL, + ActSeeOthPubPrf, + ActCalFig, + ActFolUsr, + ActUnfUsr, + ActSeeFlg, + ActSeeFlr, + ActSeeUsrAgd, + + // Calendar ---------------------------------------------------------------- + + ActSeeCal, + ActPrnCal, + ActChgCal1stDay, + + // Notifications ----------------------------------------------------------- + + ActSeeNtf, + ActSeeNewNtf, + ActMrkNtfSee, + ActSeeMai, + ActEdiMai, + ActNewMai, + ActRemMai, + ActRenMaiSho, + ActRenMaiFul, + + /****************************** System tab ********************************/ + + // System info ------------------------------------------------------------- + + ActSeeSysInf, + ActPrnSysInf, + + // Countries --------------------------------------------------------------- + + ActSeeCty, + ActEdiCty, + ActNewCty, + ActRemCty, + ActRenCty, + ActChgCtyWWW, + + // Pending ----------------------------------------------------------------- + + ActSeePen, + + // Links ------------------------------------------------------------------- + + ActSeeLnk, + ActEdiLnk, + ActNewLnk, + ActRemLnk, + ActRenLnkSho, + ActRenLnkFul, + ActChgLnkWWW, + ActSeeBan, + ActEdiBan, + ActNewBan, + ActRemBan, + ActUnhBan, + ActHidBan, + ActRenBanSho, + ActRenBanFul, + ActChgBanImg, + ActChgBanWWW, + ActClkBan, + + // Plugins ----------------------------------------------------------------- + + ActSeePlg, + ActEdiPlg, + ActNewPlg, + ActRemPlg, + ActRenPlg, + ActChgPlgDes, + ActChgPlgLog, + ActChgPlgAppKey, + ActChgPlgURL, + ActChgPlgIP, + + // Maintenance ------------------------------------------------------------- + + ActMtn, + ActSetUp, + ActReqRemOldCrs, + ActRemOldCrs, + + /****************************** Country tab *******************************/ + + // Country info ------------------------------------------------------------ + + ActSeeCtyInf, + ActPrnCtyInf, + ActChgCtyMapAtt, + + // Institutions ------------------------------------------------------------ + + ActSeeIns, + ActEdiIns, + ActReqIns, + ActNewIns, + ActRemIns, + ActRenInsSho, + ActRenInsFul, + ActChgInsWWW, + ActChgInsSta, + + /**************************** Institution tab *****************************/ + + // Institution info -------------------------------------------------------- + + ActSeeInsInf, + ActPrnInsInf, + ActChgInsCtyCfg, + ActRenInsShoCfg, + ActRenInsFulCfg, + ActChgInsWWWCfg, + ActReqInsLog, + ActRecInsLog, + ActRemInsLog, + + // Centers ----------------------------------------------------------------- + + ActSeeCtr, + ActEdiCtr, + ActReqCtr, + ActNewCtr, + ActRemCtr, + ActChgCtrPlc, + ActRenCtrSho, + ActRenCtrFul, + ActChgCtrWWW, + ActChgCtrSta, + + // Places ------------------------------------------------------------------ + + ActSeePlc, + ActEdiPlc, + ActNewPlc, + ActRemPlc, + ActRenPlcSho, + ActRenPlcFul, + + // Departments ------------------------------------------------------------- + + ActSeeDpt, + ActEdiDpt, + ActNewDpt, + ActRemDpt, + ActChgDptIns, + ActRenDptSho, + ActRenDptFul, + ActChgDptWWW, + + // Holidays ---------------------------------------------------------------- + + ActSeeHld, + ActEdiHld, + ActNewHld, + ActRemHld, + ActChgHldPlc, + ActChgHldTyp, + ActChgHldStrDat, + ActChgHldEndDat, + ActRenHld, + + /******************************* Center tab *******************************/ + + // Center info ------------------------------------------------------------- + + ActSeeCtrInf, + ActPrnCtrInf, + ActChgCtrInsCfg, + ActRenCtrShoCfg, + ActRenCtrFulCfg, + ActChgCtrPlcCfg, + ActChgCtrLatCfg, + ActChgCtrLgtCfg, + ActChgCtrAltCfg, + ActChgCtrWWWCfg, + ActReqCtrLog, + ActRecCtrLog, + ActRemCtrLog, + ActReqCtrPho, + ActRecCtrPho, + ActChgCtrPhoAtt, + + // Degrees ----------------------------------------------------------------- + + ActSeeDeg, + ActEdiDeg, + ActReqDeg, + ActNewDeg, + ActRemDeg, + ActRenDegSho, + ActRenDegFul, + ActChgDegTyp, + ActChgDegWWW, + ActChgDegSta, + ActSeeDegTyp, + ActEdiDegTyp, + ActNewDegTyp, + ActRemDegTyp, + ActRenDegTyp, + + // Buildings --------------------------------------------------------------- + + ActSeeBld, + ActEdiBld, + ActNewBld, + ActRemBld, + ActRenBldSho, + ActRenBldFul, + ActRenBldLoc, + + // Rooms ------------------------------------------------------------------- + + ActSeeRoo, + ActEdiRoo, + ActNewRoo, + ActRemRoo, + ActChgRooBld, + ActChgRooFlo, + ActChgRooTyp, + ActRenRooSho, + ActRenRooFul, + ActChgRooMaxUsr, + ActChgRooMAC, + + /******************************* Degree tab *******************************/ + + // Degree info ------------------------------------------------------------- + + ActSeeDegInf, + ActPrnDegInf, + ActChgDegCtrCfg, + ActRenDegShoCfg, + ActRenDegFulCfg, + ActChgDegWWWCfg, + ActReqDegLog, + ActRecDegLog, + ActRemDegLog, + + // Courses ----------------------------------------------------------------- + + ActSeeCrs, + ActEdiCrs, + ActReqCrs, + ActNewCrs, + ActRemCrs, + ActChgInsCrsCod, + ActChgCrsYea, + ActRenCrsSho, + ActRenCrsFul, + ActChgCrsSta, + + /****************************** Course tab ********************************/ + + // Course info ------------------------------------------------------------- + + ActSeeCrsInf, + ActPrnCrsInf, + ActChgCrsDegCfg, + ActRenCrsShoCfg, + ActRenCrsFulCfg, + ActChgInsCrsCodCfg, + ActChgCrsYeaCfg, + ActEdiCrsInf, + ActChgFrcReaCrsInf, + ActChgHavReaCrsInf, + ActSelInfSrcCrsInf, + ActRcvURLCrsInf, + ActRcvPagCrsInf, + ActEditorCrsInf, + ActPlaTxtEdiCrsInf, + ActRchTxtEdiCrsInf, + ActRcvPlaTxtCrsInf, + ActRcvRchTxtCrsInf, + + // Program ----------------------------------------------------------------- + + ActSeePrg, + ActEdiPrg, + ActSeePrgItm, + ActFrmChgPrgItm, + ActFrmNewPrgItm, + ActChgPrgItm, + ActNewPrgItm, + ActReqRemPrgItm, + ActRemPrgItm, + ActHidPrgItm, + ActUnhPrgItm, + ActUp_PrgItm, + ActDwnPrgItm, + ActLftPrgItm, + ActRgtPrgItm, + ActExpSeePrgItm, + ActConSeePrgItm, + ActExpEdiPrgItm, + ActConEdiPrgItm, + ActSeeRscCli_InPrg, + ActRemRscCli_InPrg, + ActFrmSeePrgRsc, + ActFrmEdiPrgRsc, + ActNewPrgRsc, + ActRenPrgRsc, + ActReqRemPrgRsc, + ActRemPrgRsc, + ActHidPrgRsc, + ActUnhPrgRsc, + ActUp_PrgRsc, + ActDwnPrgRsc, + ActFrmChgLnkPrgRsc, + ActChgLnkPrgRsc, + + // Teaching guide ---------------------------------------------------------- + + ActSeeTchGui, + ActEdiTchGui, + ActChgFrcReaTchGui, + ActChgHavReaTchGui, + ActSelInfSrcTchGui, + ActRcvURLTchGui, + ActRcvPagTchGui, + ActEditorTchGui, + ActPlaTxtEdiTchGui, + ActRchTxtEdiTchGui, + ActRcvPlaTxtTchGui, + ActRcvRchTxtTchGui, + + // Syllabus ---------------------------------------------------------------- + + ActSeeSyl, + ActSeeSylLec, + ActSeeSylPra, + ActEdiSylLec, + ActEdiSylPra, + ActDelItmSylLec, + ActDelItmSylPra, + ActUp_IteSylLec, + ActUp_IteSylPra, + ActDwnIteSylLec, + ActDwnIteSylPra, + ActRgtIteSylLec, + ActRgtIteSylPra, + ActLftIteSylLec, + ActLftIteSylPra, + ActInsIteSylLec, + ActInsIteSylPra, + ActModIteSylLec, + ActModIteSylPra, + ActChgFrcReaSylLec, + ActChgFrcReaSylPra, + ActChgHavReaSylLec, + ActChgHavReaSylPra, + ActSelInfSrcSylLec, + ActSelInfSrcSylPra, + ActRcvURLSylLec, + ActRcvURLSylPra, + ActRcvPagSylLec, + ActRcvPagSylPra, + ActEditorSylLec, + ActEditorSylPra, + ActPlaTxtEdiSylLec, + ActPlaTxtEdiSylPra, + ActRchTxtEdiSylLec, + ActRchTxtEdiSylPra, + ActRcvPlaTxtSylLec, + ActRcvPlaTxtSylPra, + ActRcvRchTxtSylLec, + ActRcvRchTxtSylPra, + + // Bibliography ------------------------------------------------------------ + + ActSeeBib, + ActEdiBib, + ActChgFrcReaBib, + ActChgHavReaBib, + ActSelInfSrcBib, + ActRcvURLBib, + ActRcvPagBib, + ActEditorBib, + ActPlaTxtEdiBib, + ActRchTxtEdiBib, + ActRcvPlaTxtBib, + ActRcvRchTxtBib, + + // FAQ --------------------------------------------------------------------- + + ActSeeFAQ, + ActEdiFAQ, + ActChgFrcReaFAQ, + ActChgHavReaFAQ, + ActSelInfSrcFAQ, + ActRcvURLFAQ, + ActRcvPagFAQ, + ActEditorFAQ, + ActPlaTxtEdiFAQ, + ActRchTxtEdiFAQ, + ActRcvPlaTxtFAQ, + ActRcvRchTxtFAQ, + + // Links ------------------------------------------------------------------- + + ActSeeCrsLnk, + ActEdiCrsLnk, + ActChgFrcReaCrsLnk, + ActChgHavReaCrsLnk, + ActSelInfSrcCrsLnk, + ActRcvURLCrsLnk, + ActRcvPagCrsLnk, + ActEditorCrsLnk, + ActPlaTxtEdiCrsLnk, + ActRchTxtEdiCrsLnk, + ActRcvPlaTxtCrsLnk, + ActRcvRchTxtCrsLnk, + + // Assessment -------------------------------------------------------------- + + ActSeeAss, + ActEdiAss, + ActChgFrcReaAss, + ActChgHavReaAss, + ActSelInfSrcAss, + ActRcvURLAss, + ActRcvPagAss, + ActEditorAss, + ActPlaTxtEdiAss, + ActRchTxtEdiAss, + ActRcvPlaTxtAss, + ActRcvRchTxtAss, + + // Timetable --------------------------------------------------------------- + + ActSeeCrsTT, + ActPrnCrsTT, + ActEdiCrsTT, + ActChgCrsTT, + ActChgCrsTT1stDay, + + /*************************** Assessment tab *******************************/ + + // Assignments ------------------------------------------------------------- + + ActSeeAllAsg, + ActFrmNewAsg, + ActEdiOneAsg, + ActSeeOneAsg, + ActPrnOneAsg, + ActNewAsg, + ActChgAsg, + ActReqRemAsg, + ActRemAsg, + ActHidAsg, + ActUnhAsg, + ActReqLnkAsg, + + // Projects ---------------------------------------------------------------- + + ActSeeAllPrj, + ActCfgPrj, + ActChgNETCanCrePrj, + ActChgRubPrj, + ActReqUsrPrj, + ActSeeTblAllPrj, + ActReqLckAllPrj, + ActReqUnlAllPrj, + ActLckAllPrj, + ActUnlAllPrj, + ActFrmNewPrj, + ActEdiOnePrj, + ActSeeOnePrj, + ActPrnOnePrj, + ActNewPrj, + ActChgPrj, + ActReqRemPrj, + ActRemPrj, + ActHidPrj, + ActUnhPrj, + ActLckPrj, + ActUnlPrj, + ActChgPrjRev, + ActReqAddStdPrj, + ActReqAddTutPrj, + ActReqAddEvlPrj, + ActAddStdPrj, + ActAddTutPrj, + ActAddEvlPrj, + ActReqRemStdPrj, + ActReqRemTutPrj, + ActReqRemEvlPrj, + ActRemStdPrj, + ActRemTutPrj, + ActRemEvlPrj, + ActChgPrjSco, + ActReqLnkPrj, + ActAdmDocPrj, + ActReqRemFilDocPrj, + ActRemFilDocPrj, + ActRemFolDocPrj, + ActCopDocPrj, + ActPasDocPrj, + ActRemTreDocPrj, + ActFrmCreDocPrj, + ActCreFolDocPrj, + ActCreLnkDocPrj, + ActRenFolDocPrj, + ActRcvFilDocPrjDZ, + ActRcvFilDocPrjCla, + ActExpDocPrj, + ActConDocPrj, + ActZIPDocPrj, + ActReqDatDocPrj, + ActChgDatDocPrj, + ActDowDocPrj, + ActAdmAssPrj, + ActReqRemFilAssPrj, + ActRemFilAssPrj, + ActRemFolAssPrj, + ActCopAssPrj, + ActPasAssPrj, + ActRemTreAssPrj, + ActFrmCreAssPrj, + ActCreFolAssPrj, + ActCreLnkAssPrj, + ActRenFolAssPrj, + ActRcvFilAssPrjDZ, + ActRcvFilAssPrjCla, + ActExpAssPrj, + ActConAssPrj, + ActZIPAssPrj, + ActReqDatAssPrj, + ActChgDatAssPrj, + ActDowAssPrj, + + // Calls for exams --------------------------------------------------------- + + ActSeeAllCfe, + ActSeeOneCfe, + ActSeeDatCfe, + ActEdiCfe, + ActRcvCfe, + ActPrnCfe, + ActReqRemCfe, + ActRemCfe, + ActHidCfe, + ActUnhCfe, + ActReqLnkCfe, + + // Questions --------------------------------------------------------------- + + ActEdiTstQst, + ActEdiOneTstQst, + ActReqImpTstQst, + ActImpTstQst, + ActLstTstQst, + ActNewTstQst, + ActChgTstQst, + ActReqRemSevTstQst, + ActRemSevTstQst, + ActReqRemOneTstQst, + ActRemOneTstQst, + ActChgShfTstQst, + ActEdiTag, + ActEnaTag, + ActDisTag, + ActRenTag, + + // Test -------------------------------------------------------------------- + + ActReqTst, + ActSeeTst, + ActReqAssTst, + ActAssTst, + ActCfgTst, + ActRcvCfgTst, + ActReqSeeMyTstRes, + ActSeeMyTstResCrs, + ActSeeOneTstResMe, + ActReqSeeUsrTstRes, + ActSeeUsrTstResCrs, + ActSeeOneTstResOth, + + // Exams ------------------------------------------------------------------- + + ActSeeAllExa, + ActSeeOneExa, + ActFrmNewExa, + ActEdiOneExa, + ActNewExa, + ActChgExa, + ActReqRemExa, + ActRemExa, + ActHidExa, + ActUnhExa, + ActReqLnkExa, + ActNewExaSet, + ActReqRemExaSet, + ActRemExaSet, + ActUp_ExaSet, + ActDwnExaSet, + ActChgTitExaSet, + ActChgNumQstExaSet, + ActReqAddQstExaSet, + ActLstTstQstForSet, + ActAddQstToExa, + ActReqRemSetQst, + ActRemExaQst, + ActValSetQst, + ActInvSetQst, + ActReqNewExaSes, + ActReqChgExaSes, + ActNewExaSes, + ActChgExaSes, + ActReqRemExaSes, + ActRemExaSes, + ActHidExaSes, + ActUnhExaSes, + ActSeeExaPrn, + ActAnsExaPrn, + ActEndExaPrn, + ActSeeMyExaResCrs, + ActSeeMyExaResExa, + ActSeeMyExaResSes, + ActSeeOneExaResMe, + ActReqSeeUsrExaRes, + ActSeeUsrExaResCrs, + ActSeeUsrExaResExa, + ActSeeUsrExaResSes, + ActSeeOneExaResOth, + ActChgVisExaRes, + + // Games ------------------------------------------------------------------- + + ActSeeAllGam, + ActSeeOneGam, + ActReqNewMch, + ActReqChgMch, + ActNewMch, + ActChgMch, + ActReqRemMch, + ActRemMch, + ActResMch, + ActBckMch, + ActPlyPauMch, + ActFwdMch, + ActChgNumColMch, + ActChgVisResMchQst, + ActMchCntDwn, + ActRefMchTch, + ActJoiMch, + ActSeeMchAnsQstStd, + ActRemMchAnsQstStd, + ActAnsMchQstStd, + ActRefMchStd, + ActSeeMyMchResCrs, + ActSeeMyMchResGam, + ActSeeMyMchResMch, + ActSeeOneMchResMe, + ActReqSeeUsrMchRes, + ActSeeUsrMchResCrs, + ActSeeUsrMchResGam, + ActSeeUsrMchResMch, + ActSeeOneMchResOth, + ActChgVisResMchUsr, + ActLstOneGam, + ActFrmNewGam, + ActEdiOneGam, + ActNewGam, + ActChgGam, + ActReqRemGam, + ActRemGam, + ActHidGam, + ActUnhGam, + ActAddOneGamQst, + ActGamLstTstQst, + ActAddTstQstToGam, + ActReqRemGamQst, + ActRemGamQst, + ActUp_GamQst, + ActDwnGamQst, + ActReqLnkGam, + + // Rubrics ----------------------------------------------------------------- + + ActSeeAllRub, + ActSeeOneRub, + ActFrmNewRub, + ActEdiOneRub, + ActNewRub, + ActChgRub, + ActReqRemRub, + ActRemRub, + ActReqLnkRub, + ActSeeRscCli_InRub, + ActRemRscCli_InRub, + ActNewRubCri, + ActReqRemRubCri, + ActRemRubCri, + ActUp_RubCri, + ActDwnRubCri, + ActChgTitRubCri, + ActChgLnkRubCri, + ActChgMinRubCri, + ActChgMaxRubCri, + ActChgWeiRubCri, + + /****************************** Files tab *********************************/ + + // Documents of institution ------------------------------------------------ + + ActSeeAdmDocIns, + ActChgToSeeDocIns, + ActSeeDocIns, + ActExpSeeDocIns, + ActConSeeDocIns, + ActZIPSeeDocIns, + ActReqDatSeeDocIns, + ActDowSeeDocIns, + ActChgToAdmDocIns, + ActAdmDocIns, + ActReqRemFilDocIns, + ActRemFilDocIns, + ActRemFolDocIns, + ActCopDocIns, + ActPasDocIns, + ActRemTreDocIns, + ActFrmCreDocIns, + ActCreFolDocIns, + ActCreLnkDocIns, + ActRenFolDocIns, + ActRcvFilDocInsDZ, + ActRcvFilDocInsCla, + ActExpAdmDocIns, + ActConAdmDocIns, + ActZIPAdmDocIns, + ActUnhDocIns, + ActHidDocIns, + ActReqDatAdmDocIns, + ActChgDatAdmDocIns, + ActDowAdmDocIns, + + // Shared files of institution --------------------------------------------- + + ActAdmShaIns, + ActReqRemFilShaIns, + ActRemFilShaIns, + ActRemFolShaIns, + ActCopShaIns, + ActPasShaIns, + ActRemTreShaIns, + ActFrmCreShaIns, + ActCreFolShaIns, + ActCreLnkShaIns, + ActRenFolShaIns, + ActRcvFilShaInsDZ, + ActRcvFilShaInsCla, + ActExpShaIns, + ActConShaIns, + ActZIPShaIns, + ActReqDatShaIns, + ActChgDatShaIns, + ActDowShaIns, + + // Documents of center ----------------------------------------------------- + + ActSeeAdmDocCtr, + ActChgToSeeDocCtr, + ActSeeDocCtr, + ActExpSeeDocCtr, + ActConSeeDocCtr, + ActZIPSeeDocCtr, + ActReqDatSeeDocCtr, + ActDowSeeDocCtr, + ActChgToAdmDocCtr, + ActAdmDocCtr, + ActReqRemFilDocCtr, + ActRemFilDocCtr, + ActRemFolDocCtr, + ActCopDocCtr, + ActPasDocCtr, + ActRemTreDocCtr, + ActFrmCreDocCtr, + ActCreFolDocCtr, + ActCreLnkDocCtr, + ActRenFolDocCtr, + ActRcvFilDocCtrDZ, + ActRcvFilDocCtrCla, + ActExpAdmDocCtr, + ActConAdmDocCtr, + ActZIPAdmDocCtr, + ActUnhDocCtr, + ActHidDocCtr, + ActReqDatAdmDocCtr, + ActChgDatAdmDocCtr, + ActDowAdmDocCtr, + + // Shared files of center -------------------------------------------------- + + ActAdmShaCtr, + ActReqRemFilShaCtr, + ActRemFilShaCtr, + ActRemFolShaCtr, + ActCopShaCtr, + ActPasShaCtr, + ActRemTreShaCtr, + ActFrmCreShaCtr, + ActCreFolShaCtr, + ActCreLnkShaCtr, + ActRenFolShaCtr, + ActRcvFilShaCtrDZ, + ActRcvFilShaCtrCla, + ActExpShaCtr, + ActConShaCtr, + ActZIPShaCtr, + ActReqDatShaCtr, + ActChgDatShaCtr, + ActDowShaCtr, + + // Documents of degree ----------------------------------------------------- + + ActSeeAdmDocDeg, + ActChgToSeeDocDeg, + ActSeeDocDeg, + ActExpSeeDocDeg, + ActConSeeDocDeg, + ActZIPSeeDocDeg, + ActReqDatSeeDocDeg, + ActDowSeeDocDeg, + ActChgToAdmDocDeg, + ActAdmDocDeg, + ActReqRemFilDocDeg, + ActRemFilDocDeg, + ActRemFolDocDeg, + ActCopDocDeg, + ActPasDocDeg, + ActRemTreDocDeg, + ActFrmCreDocDeg, + ActCreFolDocDeg, + ActCreLnkDocDeg, + ActRenFolDocDeg, + ActRcvFilDocDegDZ, + ActRcvFilDocDegCla, + ActExpAdmDocDeg, + ActConAdmDocDeg, + ActZIPAdmDocDeg, + ActUnhDocDeg, + ActHidDocDeg, + ActReqDatAdmDocDeg, + ActChgDatAdmDocDeg, + ActDowAdmDocDeg, + + // Shared files of degree -------------------------------------------------- + + ActAdmShaDeg, + ActReqRemFilShaDeg, + ActRemFilShaDeg, + ActRemFolShaDeg, + ActCopShaDeg, + ActPasShaDeg, + ActRemTreShaDeg, + ActFrmCreShaDeg, + ActCreFolShaDeg, + ActCreLnkShaDeg, + ActRenFolShaDeg, + ActRcvFilShaDegDZ, + ActRcvFilShaDegCla, + ActExpShaDeg, + ActConShaDeg, + ActZIPShaDeg, + ActReqDatShaDeg, + ActChgDatShaDeg, + ActDowShaDeg, + + // Documents of course ----------------------------------------------------- + + ActSeeAdmDocCrsGrp, + ActChgToSeeDocCrs, + ActSeeDocCrs, + ActExpSeeDocCrs, + ActConSeeDocCrs, + ActZIPSeeDocCrs, + ActReqDatSeeDocCrs, + ActReqLnkSeeDocCrs, + ActDowSeeDocCrs, + ActSeeDocGrp, + ActExpSeeDocGrp, + ActConSeeDocGrp, + ActZIPSeeDocGrp, + ActReqDatSeeDocGrp, + ActDowSeeDocGrp, + ActChgToAdmDocCrs, + ActAdmDocCrs, + ActReqRemFilDocCrs, + ActRemFilDocCrs, + ActRemFolDocCrs, + ActCopDocCrs, + ActPasDocCrs, + ActRemTreDocCrs, + ActFrmCreDocCrs, + ActCreFolDocCrs, + ActCreLnkDocCrs, + ActRenFolDocCrs, + ActRcvFilDocCrsDZ, + ActRcvFilDocCrsCla, + ActExpAdmDocCrs, + ActConAdmDocCrs, + ActZIPAdmDocCrs, + ActUnhDocCrs, + ActHidDocCrs, + ActReqDatAdmDocCrs, + ActChgDatAdmDocCrs, + ActReqLnkAdmDocCrs, + ActDowAdmDocCrs, + ActAdmDocGrp, + ActReqRemFilDocGrp, + ActRemFilDocGrp, + ActRemFolDocGrp, + ActCopDocGrp, + ActPasDocGrp, + ActRemTreDocGrp, + ActFrmCreDocGrp, + ActCreFolDocGrp, + ActCreLnkDocGrp, + ActRenFolDocGrp, + ActRcvFilDocGrpDZ, + ActRcvFilDocGrpCla, + ActExpAdmDocGrp, + ActConAdmDocGrp, + ActZIPAdmDocGrp, + ActUnhDocGrp, + ActHidDocGrp, + ActReqDatAdmDocGrp, + ActChgDatAdmDocGrp, + ActDowAdmDocGrp, + + // Private documents for course teachers ----------------------------------- + + ActAdmTchCrsGrp, + ActChgToAdmTch, + ActAdmTchCrs, + ActReqRemFilTchCrs, + ActRemFilTchCrs, + ActRemFolTchCrs, + ActCopTchCrs, + ActPasTchCrs, + ActRemTreTchCrs, + ActFrmCreTchCrs, + ActCreFolTchCrs, + ActCreLnkTchCrs, + ActRenFolTchCrs, + ActRcvFilTchCrsDZ, + ActRcvFilTchCrsCla, + ActExpTchCrs, + ActConTchCrs, + ActZIPTchCrs, + ActReqDatTchCrs, + ActChgDatTchCrs, + ActDowTchCrs, + ActAdmTchGrp, + ActReqRemFilTchGrp, + ActRemFilTchGrp, + ActRemFolTchGrp, + ActCopTchGrp, + ActPasTchGrp, + ActRemTreTchGrp, + ActFrmCreTchGrp, + ActCreFolTchGrp, + ActCreLnkTchGrp, + ActRenFolTchGrp, + ActRcvFilTchGrpDZ, + ActRcvFilTchGrpCla, + ActExpTchGrp, + ActConTchGrp, + ActZIPTchGrp, + ActReqDatTchGrp, + ActChgDatTchGrp, + ActDowTchGrp, + + // Shared files of course -------------------------------------------------- + + ActAdmShaCrsGrp, + ActChgToAdmSha, + ActAdmShaCrs, + ActReqRemFilShaCrs, + ActRemFilShaCrs, + ActRemFolShaCrs, + ActCopShaCrs, + ActPasShaCrs, + ActRemTreShaCrs, + ActFrmCreShaCrs, + ActCreFolShaCrs, + ActCreLnkShaCrs, + ActRenFolShaCrs, + ActRcvFilShaCrsDZ, + ActRcvFilShaCrsCla, + ActExpShaCrs, + ActConShaCrs, + ActZIPShaCrs, + ActReqDatShaCrs, + ActChgDatShaCrs, + ActDowShaCrs, + ActAdmShaGrp, + ActReqRemFilShaGrp, + ActRemFilShaGrp, + ActRemFolShaGrp, + ActCopShaGrp, + ActPasShaGrp, + ActRemTreShaGrp, + ActFrmCreShaGrp, + ActCreFolShaGrp, + ActCreLnkShaGrp, + ActRenFolShaGrp, + ActRcvFilShaGrpDZ, + ActRcvFilShaGrpCla, + ActExpShaGrp, + ActConShaGrp, + ActZIPShaGrp, + ActReqDatShaGrp, + ActChgDatShaGrp, + ActDowShaGrp, + + // Assignments and works of user ------------------------------------------- + + ActAdmAsgWrkUsr, + ActReqRemFilAsgUsr, + ActRemFilAsgUsr, + ActRemFolAsgUsr, + ActCopAsgUsr, + ActPasAsgUsr, + ActRemTreAsgUsr, + ActFrmCreAsgUsr, + ActCreFolAsgUsr, + ActCreLnkAsgUsr, + ActRenFolAsgUsr, + ActRcvFilAsgUsrDZ, + ActRcvFilAsgUsrCla, + ActExpAsgUsr, + ActConAsgUsr, + ActZIPAsgUsr, + ActReqDatAsgUsr, + ActChgDatAsgUsr, + ActDowAsgUsr, + ActReqRemFilWrkUsr, + ActRemFilWrkUsr, + ActRemFolWrkUsr, + ActCopWrkUsr, + ActPasWrkUsr, + ActRemTreWrkUsr, + ActFrmCreWrkUsr, + ActCreFolWrkUsr, + ActCreLnkWrkUsr, + ActRenFolWrkUsr, + ActRcvFilWrkUsrDZ, + ActRcvFilWrkUsrCla, + ActExpWrkUsr, + ActConWrkUsr, + ActZIPWrkUsr, + ActReqDatWrkUsr, + ActChgDatWrkUsr, + ActDowWrkUsr, + + // Assignments and works of course ----------------------------------------- + + ActReqAsgWrkCrs, + ActAdmAsgWrkCrs, + ActReqRemFilAsgCrs, + ActRemFilAsgCrs, + ActRemFolAsgCrs, + ActCopAsgCrs, + ActPasAsgCrs, + ActRemTreAsgCrs, + ActFrmCreAsgCrs, + ActCreFolAsgCrs, + ActCreLnkAsgCrs, + ActRenFolAsgCrs, + ActRcvFilAsgCrsDZ, + ActRcvFilAsgCrsCla, + ActExpAsgCrs, + ActConAsgCrs, + ActZIPAsgCrs, + ActReqDatAsgCrs, + ActChgDatAsgCrs, + ActDowAsgCrs, + ActReqRemFilWrkCrs, + ActRemFilWrkCrs, + ActRemFolWrkCrs, + ActCopWrkCrs, + ActPasWrkCrs, + ActRemTreWrkCrs, + ActFrmCreWrkCrs, + ActCreFolWrkCrs, + ActCreLnkWrkCrs, + ActRenFolWrkCrs, + ActRcvFilWrkCrsDZ, + ActRcvFilWrkCrsCla, + ActExpWrkCrs, + ActConWrkCrs, + ActZIPWrkCrs, + ActReqDatWrkCrs, + ActChgDatWrkCrs, + ActDowWrkCrs, + + // Marks ------------------------------------------------------------------- + + ActSeeAdmMrk, + ActChgToSeeMrk, + ActSeeMrkCrs, + ActExpSeeMrkCrs, + ActConSeeMrkCrs, + ActReqDatSeeMrkCrs, + ActReqLnkSeeMrkCrs, + ActSeeMyMrkCrs, + ActSeeMrkGrp, + ActExpSeeMrkGrp, + ActConSeeMrkGrp, + ActReqDatSeeMrkGrp, + ActSeeMyMrkGrp, + ActChgToAdmMrk, + ActAdmMrkCrs, + ActReqRemFilMrkCrs, + ActRemFilMrkCrs, + ActRemFolMrkCrs, + ActCopMrkCrs, + ActPasMrkCrs, + ActRemTreMrkCrs, + ActFrmCreMrkCrs, + ActCreFolMrkCrs, + ActRenFolMrkCrs, + ActRcvFilMrkCrsDZ, + ActRcvFilMrkCrsCla, + ActExpAdmMrkCrs, + ActConAdmMrkCrs, + ActZIPAdmMrkCrs, + ActUnhMrkCrs, + ActHidMrkCrs, + ActReqDatAdmMrkCrs, + ActChgDatAdmMrkCrs, + ActReqLnkAdmMrkCrs, + ActDowAdmMrkCrs, + ActChgNumRowHeaCrs, + ActChgNumRowFooCrs, + ActAdmMrkGrp, + ActReqRemFilMrkGrp, + ActRemFilMrkGrp, + ActRemFolMrkGrp, + ActCopMrkGrp, + ActPasMrkGrp, + ActRemTreMrkGrp, + ActFrmCreMrkGrp, + ActCreFolMrkGrp, + ActRenFolMrkGrp, + ActRcvFilMrkGrpDZ, + ActRcvFilMrkGrpCla, + ActExpAdmMrkGrp, + ActConAdmMrkGrp, + ActZIPAdmMrkGrp, + ActUnhMrkGrp, + ActHidMrkGrp, + ActReqDatAdmMrkGrp, + ActChgDatAdmMrkGrp, + ActDowAdmMrkGrp, + ActChgNumRowHeaGrp, + ActChgNumRowFooGrp, + + // Briefcase --------------------------------------------------------------- + + ActAdmBrf, + ActReqRemFilBrf, + ActRemFilBrf, + ActRemFolBrf, + ActCopBrf, + ActPasBrf, + ActRemTreBrf, + ActFrmCreBrf, + ActCreFolBrf, + ActCreLnkBrf, + ActRenFolBrf, + ActRcvFilBrfDZ, + ActRcvFilBrfCla, + ActExpBrf, + ActConBrf, + ActZIPBrf, + ActReqDatBrf, + ActChgDatBrf, + ActDowBrf, + ActReqRemOldBrf, + ActRemOldBrf, + + /***************************** Users tab **********************************/ + + // Groups ------------------------------------------------------------------ + + ActReqSelGrp, + ActChgGrp, + ActReqEdiGrp, + ActNewGrpTyp, + ActReqRemGrpTyp, + ActRemGrpTyp, + ActRenGrpTyp, + ActChgMdtGrpTyp, + ActChgMulGrpTyp, + ActChgTimGrpTyp, + ActNewGrp, + ActReqRemGrp, + ActRemGrp, + ActOpeGrp, + ActCloGrp, + ActEnaFilZonGrp, + ActDisFilZonGrp, + ActChgGrpTyp, + ActRenGrp, + ActChgGrpRoo, + ActChgMaxStdGrp, + + // Students ---------------------------------------------------------------- + + ActLstStd, + ActLstStdAll, + ActPrnStdPho, + ActDoActOnSevStd, + ActSeeRecSevStd, + ActPrnRecSevStd, + ActReqMdfOneStd, + ActReqMdfStd, + ActReqStdPho, + ActDetStdPho, + ActChgStdPho, + ActReqRemStdPho, + ActRemStdPho, + ActCreStd, + ActUpdStd, + ActCnfID_Std, + ActFrmAccStd, + ActRemNicStd, + ActChgNicStd, + ActRemID_Std, + ActChgID_Std, + ActChgPwdStd, + ActRemMaiStd, + ActChgMaiStd, + ActRemStdCrs, + ActReqRemAllStdCrs, + ActRemAllStdCrs, + ActReqAccEnrStd, + ActAccEnrStd, + ActRemMe_Std, + ActReqFolSevStd, + ActReqUnfSevStd, + ActFolSevStd, + ActUnfSevStd, + ActSeeRecOneStd, + ActReqEnrSevStd, + ActRcvFrmEnrSevStd, + ActRcvRecOthUsr, + ActEdiRecFie, + ActNewFie, + ActReqRemFie, + ActRemFie, + ActRenFie, + ActChgRowFie, + ActChgVisFie, + ActRcvRecCrs, + + // Teachers ---------------------------------------------------------------- + + ActLstTch, + ActLstTchAll, + ActPrnTchPho, + ActDoActOnSevTch, + ActSeeRecSevTch, + ActPrnRecSevTch, + ActReqMdfOneTch, + ActReqMdfNET, + ActReqMdfTch, + ActReqTchPho, + ActDetTchPho, + ActChgTchPho, + ActReqRemTchPho, + ActRemTchPho, + ActCreNET, + ActCreTch, + ActUpdNET, + ActUpdTch, + ActCnfID_Tch, + ActFrmAccTch, + ActRemNicTch, + ActChgNicTch, + ActRemID_Tch, + ActChgID_Tch, + ActChgPwdTch, + ActRemMaiTch, + ActChgMaiTch, + ActRemNETCrs, + ActRemTchCrs, + ActReqAccEnrNET, + ActReqAccEnrTch, + ActAccEnrNET, + ActAccEnrTch, + ActRemMe_NET, + ActRemMe_Tch, + ActReqFolSevTch, + ActReqUnfSevTch, + ActFolSevTch, + ActUnfSevTch, + ActSeeRecOneTch, + ActReqEnrSevNET, + ActRcvFrmEnrSevNET, + ActReqEnrSevTch, + ActRcvFrmEnrSevTch, + ActFrmLogInUsrAgd, + ActLogInUsrAgd, + ActLogInUsrAgdLan, + + // Others ------------------------------------------------------------------ + + ActLstOth, + ActNewAdmIns, + ActRemAdmIns, + ActNewAdmCtr, + ActRemAdmCtr, + ActNewAdmDeg, + ActRemAdmDeg, + ActLstGst, + ActLstGstAll, + ActPrnGstPho, + ActDoActOnSevGst, + ActSeeRecSevGst, + ActPrnRecSevGst, + ActReqMdfOneOth, + ActReqMdfOth, + ActReqOthPho, + ActDetOthPho, + ActChgOthPho, + ActReqRemOthPho, + ActRemOthPho, + ActCreOth, + ActUpdOth, + ActCnfID_Oth, + ActFrmAccOth, + ActRemNicOth, + ActChgNicOth, + ActRemID_Oth, + ActChgID_Oth, + ActChgPwdOth, + ActRemMaiOth, + ActChgMaiOth, + ActRemUsrGbl, + ActReqRemOldUsr, + ActRemOldUsr, + ActLstDupUsr, + ActLstSimUsr, + ActRemDupUsr, + + // Attendance -------------------------------------------------------------- + + ActSeeAllAtt, + ActReqLstUsrAtt, + ActSeeLstMyAtt, + ActPrnLstMyAtt, + ActSeeLstUsrAtt, + ActPrnLstUsrAtt, + ActFrmNewAtt, + ActEdiOneAtt, + ActNewAtt, + ActChgAtt, + ActReqRemAtt, + ActRemAtt, + ActHidAtt, + ActUnhAtt, + ActSeeOneAtt, + ActReqLnkAtt, + ActRecAttStd, + ActRecAttMe, + + // Sign up ----------------------------------------------------------------- + + ActReqSignUp, + ActSignUp, + + // Requests ---------------------------------------------------------------- + + ActSeeSignUpReq, + ActUpdSignUpReq, + ActReqRejSignUp, + ActRejSignUp, + + // Connected --------------------------------------------------------------- + + ActLstCon, + + /***************************** Messages tab *******************************/ + + // Announcements ----------------------------------------------------------- + + ActSeeAnn, + ActWriAnn, + ActNewAnn, + ActHidAnn, + ActUnhAnn, + ActRemAnn, + + // Notices ----------------------------------------------------------------- + + ActSeeAllNot, + ActSeeOneNot, + ActWriNot, + ActNewNot, + ActHidNot, + ActUnhNot, + ActReqRemNot, + ActRemNot, + + // Forums ------------------------------------------------------------------ + + ActSeeFor, + ActSeeForCrsUsr, + ActSeeForCrsTch, + ActSeeForDegUsr, + ActSeeForDegTch, + ActSeeForCtrUsr, + ActSeeForCtrTch, + ActSeeForInsUsr, + ActSeeForInsTch, + ActSeeForGenUsr, + ActSeeForGenTch, + ActSeeForSWAUsr, + ActSeeForSWATch, + ActSeePstForCrsUsr, + ActSeePstForCrsTch, + ActSeePstForDegUsr, + ActSeePstForDegTch, + ActSeePstForCtrUsr, + ActSeePstForCtrTch, + ActSeePstForInsUsr, + ActSeePstForInsTch, + ActSeePstForGenUsr, + ActSeePstForGenTch, + ActSeePstForSWAUsr, + ActSeePstForSWATch, + ActRcvThrForCrsUsr, + ActRcvThrForCrsTch, + ActRcvThrForDegUsr, + ActRcvThrForDegTch, + ActRcvThrForCtrUsr, + ActRcvThrForCtrTch, + ActRcvThrForInsUsr, + ActRcvThrForInsTch, + ActRcvThrForGenUsr, + ActRcvThrForGenTch, + ActRcvThrForSWAUsr, + ActRcvThrForSWATch, + ActRcvRepForCrsUsr, + ActRcvRepForCrsTch, + ActRcvRepForDegUsr, + ActRcvRepForDegTch, + ActRcvRepForCtrUsr, + ActRcvRepForCtrTch, + ActRcvRepForInsUsr, + ActRcvRepForInsTch, + ActRcvRepForGenUsr, + ActRcvRepForGenTch, + ActRcvRepForSWAUsr, + ActRcvRepForSWATch, + ActReqDelThrCrsUsr, + ActReqDelThrCrsTch, + ActReqDelThrDegUsr, + ActReqDelThrDegTch, + ActReqDelThrCtrUsr, + ActReqDelThrCtrTch, + ActReqDelThrInsUsr, + ActReqDelThrInsTch, + ActReqDelThrGenUsr, + ActReqDelThrGenTch, + ActReqDelThrSWAUsr, + ActReqDelThrSWATch, + ActDelThrForCrsUsr, + ActDelThrForCrsTch, + ActDelThrForDegUsr, + ActDelThrForDegTch, + ActDelThrForCtrUsr, + ActDelThrForCtrTch, + ActDelThrForInsUsr, + ActDelThrForInsTch, + ActDelThrForGenUsr, + ActDelThrForGenTch, + ActDelThrForSWAUsr, + ActDelThrForSWATch, + ActCutThrForCrsUsr, + ActCutThrForCrsTch, + ActCutThrForDegUsr, + ActCutThrForDegTch, + ActCutThrForCtrUsr, + ActCutThrForCtrTch, + ActCutThrForInsUsr, + ActCutThrForInsTch, + ActCutThrForGenUsr, + ActCutThrForGenTch, + ActCutThrForSWAUsr, + ActCutThrForSWATch, + ActPasThrForCrsUsr, + ActPasThrForCrsTch, + ActPasThrForDegUsr, + ActPasThrForDegTch, + ActPasThrForCtrUsr, + ActPasThrForCtrTch, + ActPasThrForInsUsr, + ActPasThrForInsTch, + ActPasThrForGenUsr, + ActPasThrForGenTch, + ActPasThrForSWAUsr, + ActPasThrForSWATch, + ActDelPstForCrsUsr, + ActDelPstForCrsTch, + ActDelPstForDegUsr, + ActDelPstForDegTch, + ActDelPstForCtrUsr, + ActDelPstForCtrTch, + ActDelPstForInsUsr, + ActDelPstForInsTch, + ActDelPstForGenUsr, + ActDelPstForGenTch, + ActDelPstForSWAUsr, + ActDelPstForSWATch, + ActEnbPstForCrsUsr, + ActEnbPstForCrsTch, + ActEnbPstForDegUsr, + ActEnbPstForDegTch, + ActEnbPstForCtrUsr, + ActEnbPstForCtrTch, + ActEnbPstForInsUsr, + ActEnbPstForInsTch, + ActEnbPstForGenUsr, + ActEnbPstForGenTch, + ActEnbPstForSWAUsr, + ActEnbPstForSWATch, + ActDisPstForCrsUsr, + ActDisPstForCrsTch, + ActDisPstForDegUsr, + ActDisPstForDegTch, + ActDisPstForCtrUsr, + ActDisPstForCtrTch, + ActDisPstForInsUsr, + ActDisPstForInsTch, + ActDisPstForGenUsr, + ActDisPstForGenTch, + ActDisPstForSWAUsr, + ActDisPstForSWATch, + ActReqLnkForCrsUsr, + + // Chat -------------------------------------------------------------------- + + ActSeeChtRms, + ActCht, + + // Messages ---------------------------------------------------------------- + + ActSeeRcvMsg, + ActReqMsgUsr, + ActSeeSntMsg, + ActRcvMsgUsr, + ActReqDelAllSntMsg, + ActReqDelAllRcvMsg, + ActDelAllSntMsg, + ActDelAllRcvMsg, + ActDelSntMsg, + ActDelRcvMsg, + ActExpSntMsg, + ActExpRcvMsg, + ActConSntMsg, + ActConRcvMsg, + ActLstBanUsr, + ActBanUsrMsg, + ActUnbUsrMsg, + ActUnbUsrLst, + + // Mail -------------------------------------------------------------------- + + ActReqMaiUsr, + ActMaiUsr, + + /**************************** Analytics tab *******************************/ + + // Figures ----------------------------------------------------------------- + + ActReqUseGbl, + ActSeeUseGbl, + + // Degrees ----------------------------------------------------------------- + + ActSeePhoDeg, + ActPrnPhoDeg, + ActCalPhoDeg, + + // Indicators -------------------------------------------------------------- + + ActReqStaCrs, + ActSeeAllStaCrs, + + // Surveys ----------------------------------------------------------------- + + ActSeeAllSvy, + ActSeeOneSvy, + ActAnsSvy, + ActFrmNewSvy, + ActEdiOneSvy, + ActNewSvy, + ActChgSvy, + ActReqRemSvy, + ActRemSvy, + ActReqRstSvy, + ActRstSvy, + ActHidSvy, + ActUnhSvy, + ActReqLnkSvy, + ActEdiOneSvyQst, + ActNewSvyQst, + ActChgSvyQst, + ActReqRemSvyQst, + ActRemSvyQst, + + // Visits ------------------------------------------------------------------ + + ActReqAccGbl, + ActSeeAccGbl, + ActReqAccCrs, + ActSeeAccCrs, + ActLstClk, + ActRefLstClk, + + // Report ------------------------------------------------------------------ + + ActReqMyUsgRep, + ActSeeMyUsgRep, + + // Frequent ---------------------------------------------------------------- + + ActMFUAct, + + /****************************** Profile tab *******************************/ + + // Session ----------------------------------------------------------------- + + ActFrmRolSes, + ActChgMyRol, + + // Courses ----------------------------------------------------------------- + + ActMyCrs, + + // Timetable --------------------------------------------------------------- + + ActSeeMyTT, + ActPrnMyTT, + ActEdiTut, + ActChgTut, + ActChgMyTT1stDay, + + // Agenda ------------------------------------------------------------------ + + ActSeeMyAgd, + ActFrmNewEvtMyAgd, + ActEdiOneEvtMyAgd, + ActNewEvtMyAgd, + ActChgEvtMyAgd, + ActReqRemEvtMyAgd, + ActRemEvtMyAgd, + ActHidEvtMyAgd, + ActUnhEvtMyAgd, + ActPrvEvtMyAgd, + ActPubEvtMyAgd, + ActPrnAgdQR, + + // Account ----------------------------------------------------------------- + + ActFrmMyAcc, + ActChkUsrAcc, + ActCreMyAcc, + ActCreUsrAcc, + ActRemMyID, + ActChgMyID, + ActRemMyNck, + ActChgMyNck, + ActRemMyMai, + ActChgMyMai, + ActCnfMai, + ActChgMyPwd, + ActReqRemMyAcc, + ActRemMyAcc, + ActPrnUsrQR, + + // Record ------------------------------------------------------------------ + + ActReqEdiRecSha, + ActChgMyData, + ActReqMyPho, + ActDetMyPho, + ActUpdMyPho, + ActReqRemMyPho, + ActRemMyPho, + ActChgCtyMyIns, + ActChgMyIns, + ActChgMyCtr, + ActChgMyDpt, + ActChgMyOff, + ActChgMyOffPho, + ActReqEdiMyNet, + ActChgMyNet, + + // Settings ---------------------------------------------------------------- + + ActReqEdiSet, + ActChgThe, + ActReqChgLan, + ActChgLan, + ActChg1stDay, + ActChgDatFmt, + ActChgCol, + ActChgIco, + ActChgMnu, + ActChgUsrPho, + ActChgPriPho, + ActChgBasPriPrf, + ActChgExtPriPrf, + ActChgCooPrf, + ActChgNtfPrf, + } Act_Action_t; //----------------------------------------------------------------------------- diff --git a/swad_changelog.h b/swad_changelog.h index eeb366c7..801b823c 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -633,10 +633,11 @@ Me sale este error, no s "can npt create received message (duplicated entry '243218-2160773' for key 'UsrCod_MsgCod') */ -#define Log_PLATFORM_VERSION "SWAD 23.69 (2024-03-14)" +#define Log_PLATFORM_VERSION "SWAD 23.70 (2024-03-19)" #define CSS_FILE "swad23.67.2.css" #define JS_FILE "swad23.53.6.js" /* + Version 23.70: Mar 19, 2024 Code refactoring and bug fixing in syllabus. (335413 lines) Version 23.69: Mar 14, 2024 Actions defined as enum type. (335591 lines) Version 23.68.1: Mar 14, 2024 Code refactoring in menu icons. (335591 lines) Version 23.68: Mar 14, 2024 New order in list of actions. (335700 lines) diff --git a/swad_form.c b/swad_form.c index 5db12c80..f1328121 100644 --- a/swad_form.c +++ b/swad_form.c @@ -83,22 +83,22 @@ void Frm_BeginFormGoTo (Act_Action_t NextAction) void Frm_BeginForm (Act_Action_t NextAction) { - Frm_BeginFormAnchorOnSubmit (NextAction,NULL,NULL); + Frm_BeginFormInternal (NextAction,true,NULL,NULL,NULL); // Do put now parameter location (if no open session) } void Frm_BeginFormAnchor (Act_Action_t NextAction,const char *Anchor) { - Frm_BeginFormAnchorOnSubmit (NextAction,Anchor,NULL); + Frm_BeginFormInternal (NextAction,true,NULL,Anchor,NULL); // Do put now parameter location (if no open session) } void Frm_BeginFormOnSubmit (Act_Action_t NextAction,const char *OnSubmit) { - Frm_BeginFormAnchorOnSubmit (NextAction,NULL,OnSubmit); + Frm_BeginFormInternal (NextAction,true,NULL,NULL,OnSubmit); // Do put now parameter location (if no open session) } void Frm_BeginFormAnchorOnSubmit (Act_Action_t NextAction,const char *Anchor,const char *OnSubmit) { - Frm_BeginFormInternal (NextAction,true,NULL,Anchor,OnSubmit); // Do put now parameter location (if no open session) + Frm_BeginFormInternal (NextAction,true,NULL,Anchor,OnSubmit);// Do put now parameter location (if no open session) } void Frm_BeginFormId (Act_Action_t NextAction,const char *Id) diff --git a/swad_info.c b/swad_info.c index e61e11f9..de9ba4f6 100644 --- a/swad_info.c +++ b/swad_info.c @@ -54,22 +54,6 @@ extern struct Globals Gbl; -/*****************************************************************************/ -/****************************** Public constants *****************************/ -/*****************************************************************************/ - -const Act_Action_t Inf_ActionsSeeInfo[Inf_NUM_TYPES] = - { - [Inf_INTRODUCTION ] = ActSeeCrsInf, - [Inf_TEACHING_GUIDE] = ActSeeTchGui, - [Inf_LECTURES ] = ActSeeSylLec, - [Inf_PRACTICALS ] = ActSeeSylPra, - [Inf_BIBLIOGRAPHY ] = ActSeeBib, - [Inf_FAQ ] = ActSeeFAQ, - [Inf_LINKS ] = ActSeeCrsLnk, - [Inf_ASSESSMENT ] = ActSeeAss, - }; - /*****************************************************************************/ /***************************** Private constants *****************************/ /*****************************************************************************/ @@ -237,14 +221,13 @@ void Inf_ShowInfo (void) /***** Contextual menu *****/ Mnu_ContextMenuBegin (); Inf_PutCheckboxConfirmIHaveReadInfo (); // Checkbox to confirm that... - // ...I have read this couse info + // ...I have read this couse info Mnu_ContextMenuEnd (); } break; case Rol_NET: case Rol_TCH: case Rol_SYS_ADM: - /* Put */ if (FromDB.Src != Inf_NONE) { /***** Contextual menu *****/ @@ -259,6 +242,9 @@ void Inf_ShowInfo (void) break; } + /****** Form to select syllabus *****/ + Syl_PutFormWhichSyllabus (Syllabus.WhichSyllabus); + switch (FromDB.Src) { case Inf_NONE: @@ -269,7 +255,7 @@ void Inf_ShowInfo (void) { case Inf_LECTURES: case Inf_PRACTICALS: - ShowWarningNoInfo = !Syl_CheckAndEditSyllabus (&Syllabus); + ShowWarningNoInfo = !Syl_CheckAndShowSyllabus (&Syllabus); break; case Inf_INTRODUCTION: case Inf_TEACHING_GUIDE: @@ -316,28 +302,54 @@ void Inf_ShowInfo (void) static void Inf_PutIconToViewInfo (void *Type) { + extern Syl_WhichSyllabus_t Syl_WhichSyllabus[Syl_NUM_WHICH_SYLLABUS]; + static struct + { + const Act_Action_t NextAction; + void (*FuncPars) (void *Args); + void *Args; + } Inf_Actions[Inf_NUM_TYPES] = + { + [Inf_INTRODUCTION ] = {ActSeeCrsInf,NULL,NULL}, + [Inf_TEACHING_GUIDE] = {ActSeeTchGui,NULL,NULL}, + [Inf_LECTURES ] = {ActSeeSylLec,Syl_PutParWhichSyllabus,&Syl_WhichSyllabus[Syl_LECTURES ]}, + [Inf_PRACTICALS ] = {ActSeeSylPra,Syl_PutParWhichSyllabus,&Syl_WhichSyllabus[Syl_PRACTICALS]}, + [Inf_BIBLIOGRAPHY ] = {ActSeeBib ,NULL,NULL}, + [Inf_FAQ ] = {ActSeeFAQ ,NULL,NULL}, + [Inf_LINKS ] = {ActSeeCrsLnk,NULL,NULL}, + [Inf_ASSESSMENT ] = {ActSeeAss ,NULL,NULL}, + }; + if (Type) - Ico_PutContextualIconToView (Inf_ActionsSeeInfo[*((Inf_Type_t *) Type)],NULL, - NULL,NULL); + Ico_PutContextualIconToView (Inf_Actions[*((Inf_Type_t *) Type)].NextAction,NULL, + Inf_Actions[*((Inf_Type_t *) Type)].FuncPars, + Inf_Actions[*((Inf_Type_t *) Type)].Args); } void Inf_PutIconToEditInfo (void *Type) { - static const Act_Action_t Inf_ActionsEditInfo[Inf_NUM_TYPES] = + extern Syl_WhichSyllabus_t Syl_WhichSyllabus[Syl_NUM_WHICH_SYLLABUS]; + static struct { - [Inf_INTRODUCTION ] = ActEdiCrsInf, - [Inf_TEACHING_GUIDE] = ActEdiTchGui, - [Inf_LECTURES ] = ActEdiSylLec, - [Inf_PRACTICALS ] = ActEdiSylPra, - [Inf_BIBLIOGRAPHY ] = ActEdiBib, - [Inf_FAQ ] = ActEdiFAQ, - [Inf_LINKS ] = ActEdiCrsLnk, - [Inf_ASSESSMENT ] = ActEdiAss, + const Act_Action_t NextAction; + void (*FuncPars) (void *Args); + void *Args; + } Inf_Actions[Inf_NUM_TYPES] = + { + [Inf_INTRODUCTION ] = {ActEdiCrsInf,NULL,NULL}, + [Inf_TEACHING_GUIDE] = {ActEdiTchGui,NULL,NULL}, + [Inf_LECTURES ] = {ActEdiSylLec,Syl_PutParWhichSyllabus,&Syl_WhichSyllabus[Syl_LECTURES ]}, + [Inf_PRACTICALS ] = {ActEdiSylPra,Syl_PutParWhichSyllabus,&Syl_WhichSyllabus[Syl_PRACTICALS]}, + [Inf_BIBLIOGRAPHY ] = {ActEdiBib ,NULL,NULL}, + [Inf_FAQ ] = {ActEdiFAQ ,NULL,NULL}, + [Inf_LINKS ] = {ActEdiCrsLnk,NULL,NULL}, + [Inf_ASSESSMENT ] = {ActEdiAss ,NULL,NULL}, }; if (Type) - Ico_PutContextualIconToEdit (Inf_ActionsEditInfo[*((Inf_Type_t *) Type)],NULL, - NULL,NULL); + Ico_PutContextualIconToEdit (Inf_Actions[*((Inf_Type_t *) Type)].NextAction,NULL, + Inf_Actions[*((Inf_Type_t *) Type)].FuncPars, + Inf_Actions[*((Inf_Type_t *) Type)].Args); } /*****************************************************************************/ @@ -441,9 +453,27 @@ bool Inf_GetIfIMustReadAnyCrsInfoInThisCrs (void) void Inf_WriteMsgYouMustReadInfo (void) { + extern Syl_WhichSyllabus_t Syl_WhichSyllabus[Syl_NUM_WHICH_SYLLABUS]; extern const char *Txt_Required_reading; extern const char *Txt_You_should_read_the_following_information; + static struct + { + const Act_Action_t NextAction; + void (*FuncPars) (void *Args); + void *Args; + } Inf_Actions[Inf_NUM_TYPES] = + { + [Inf_INTRODUCTION ] = {ActSeeCrsInf,NULL,NULL}, + [Inf_TEACHING_GUIDE] = {ActSeeTchGui,NULL,NULL}, + [Inf_LECTURES ] = {ActSeeSylLec,Syl_PutParWhichSyllabus,&Syl_WhichSyllabus[Syl_LECTURES ]}, + [Inf_PRACTICALS ] = {ActSeeSylPra,Syl_PutParWhichSyllabus,&Syl_WhichSyllabus[Syl_PRACTICALS]}, + [Inf_BIBLIOGRAPHY ] = {ActSeeBib ,NULL,NULL}, + [Inf_FAQ ] = {ActSeeFAQ ,NULL,NULL}, + [Inf_LINKS ] = {ActSeeCrsLnk,NULL,NULL}, + [Inf_ASSESSMENT ] = {ActSeeAss ,NULL,NULL}, + }; Inf_Type_t InfoType; + const char *TitleAction; /***** Begin box *****/ Box_BoxBegin (Txt_Required_reading,NULL,NULL,NULL,Box_CLOSABLE); @@ -460,11 +490,14 @@ void Inf_WriteMsgYouMustReadInfo (void) if (Gbl.Crs.Info.MustBeRead[InfoType]) { HTM_LI_Begin (NULL); - Frm_BeginForm (Inf_ActionsSeeInfo[InfoType]); - HTM_BUTTON_Submit_Begin (Act_GetTitleAction (Inf_ActionsSeeInfo[InfoType]), + Frm_BeginForm (Inf_Actions[InfoType].NextAction); + if (Inf_Actions[InfoType].FuncPars) + Inf_Actions[InfoType].FuncPars (Inf_Actions[InfoType].Args); + TitleAction = Act_GetTitleAction (Inf_Actions[InfoType].NextAction); + HTM_BUTTON_Submit_Begin (TitleAction, "class=\"BT_LINK FORM_IN_%s\"", The_GetSuffix ()); - HTM_Txt (Act_GetTitleAction (Inf_ActionsSeeInfo[InfoType])); + HTM_Txt (TitleAction); HTM_BUTTON_End (); Frm_EndForm (); HTM_LI_End (); @@ -828,7 +861,7 @@ void Inf_FormsToSelSendInfo (void) [Inf_ASSESSMENT ] = ActSelInfSrcAss, }; /* Functions to write forms in course edition (FAQ, links, etc.) */ - static void (*Inf_FormsForEditionTypes[Inf_NUM_SOURCES])(Inf_Src_t InfoSrc) = + static void (*Inf_FormsForEditionTypes[Inf_NUM_SOURCES])(struct Syl_Syllabus *Syllabus,Inf_Src_t InfoSrc) = { [Inf_NONE ] = NULL, [Inf_EDITOR ] = Inf_FormToEnterIntegratedEditor, @@ -895,6 +928,7 @@ void Inf_FormsToSelSendInfo (void) InfoSrc == FromDB.Src ? " BG_HIGHLIGHT" : ""); Frm_BeginForm (Inf_ActionsSelecInfoSrc[Gbl.Crs.Info.Type]); + Syl_PutParWhichSyllabus (&Syllabus.WhichSyllabus); HTM_INPUT_RADIO ("InfoSrc",InfoSrc != FromDB.Src && (InfoSrc == Inf_NONE || InfoAvailable[InfoSrc]) ? HTM_SUBMIT_ON_CLICK : @@ -925,7 +959,7 @@ void Inf_FormsToSelSendInfo (void) HTM_SPAN_End (); } if (Inf_FormsForEditionTypes[InfoSrc]) - Inf_FormsForEditionTypes[InfoSrc] (InfoSrc); + Inf_FormsForEditionTypes[InfoSrc] (&Syllabus,InfoSrc); HTM_TD_End (); HTM_TR_End (); @@ -980,9 +1014,10 @@ static bool Inf_CheckIfInfoAvailable (struct Syl_Syllabus *Syllabus, /****************** Form to enter in integrated editor ***********************/ /*****************************************************************************/ -void Inf_FormToEnterIntegratedEditor (Inf_Src_t InfoSrc) +void Inf_FormToEnterIntegratedEditor (struct Syl_Syllabus *Syllabus,Inf_Src_t InfoSrc) { Frm_BeginForm (Inf_ActionsInfo[InfoSrc][Gbl.Crs.Info.Type]); + Syl_PutParWhichSyllabus (&Syllabus->WhichSyllabus); Btn_PutConfirmButton (Act_GetActionText (Inf_ActionsInfo[InfoSrc][Gbl.Crs.Info.Type])); Frm_EndForm (); } @@ -991,11 +1026,12 @@ void Inf_FormToEnterIntegratedEditor (Inf_Src_t InfoSrc) /****************** Form to enter in plain text editor ***********************/ /*****************************************************************************/ -void Inf_FormToEnterPlainTextEditor (Inf_Src_t InfoSrc) +void Inf_FormToEnterPlainTextEditor (struct Syl_Syllabus *Syllabus,Inf_Src_t InfoSrc) { extern const char *Txt_Edit_plain_text; Frm_BeginForm (Inf_ActionsInfo[InfoSrc][Gbl.Crs.Info.Type]); + Syl_PutParWhichSyllabus (&Syllabus->WhichSyllabus); Btn_PutConfirmButton (Txt_Edit_plain_text); Frm_EndForm (); } @@ -1004,11 +1040,12 @@ void Inf_FormToEnterPlainTextEditor (Inf_Src_t InfoSrc) /******************* Form to enter in rich text editor ***********************/ /*****************************************************************************/ -void Inf_FormToEnterRichTextEditor (Inf_Src_t InfoSrc) +void Inf_FormToEnterRichTextEditor (struct Syl_Syllabus *Syllabus,Inf_Src_t InfoSrc) { extern const char *Txt_Edit_rich_text; Frm_BeginForm (Inf_ActionsInfo[InfoSrc][Gbl.Crs.Info.Type]); + Syl_PutParWhichSyllabus (&Syllabus->WhichSyllabus); Btn_PutConfirmButton (Txt_Edit_rich_text); Frm_EndForm (); } @@ -1017,13 +1054,14 @@ void Inf_FormToEnterRichTextEditor (Inf_Src_t InfoSrc) /******************* Form to upload a file with a page ***********************/ /*****************************************************************************/ -void Inf_FormToSendPage (Inf_Src_t InfoSrc) +void Inf_FormToSendPage (struct Syl_Syllabus *Syllabus,Inf_Src_t InfoSrc) { extern const char *Txt_File; extern const char *Txt_Upload_file; /***** Begin form *****/ Frm_BeginForm (Inf_ActionsInfo[InfoSrc][Gbl.Crs.Info.Type]); + Syl_PutParWhichSyllabus (&Syllabus->WhichSyllabus); /***** File *****/ HTM_DIV_Begin ("class=\"CM\""); @@ -1046,7 +1084,7 @@ void Inf_FormToSendPage (Inf_Src_t InfoSrc) /********************* Form to send a link to a web page *********************/ /*****************************************************************************/ -void Inf_FormToSendURL (Inf_Src_t InfoSrc) +void Inf_FormToSendURL (struct Syl_Syllabus *Syllabus,Inf_Src_t InfoSrc) { extern const char *Txt_URL; extern const char *Txt_Send_URL; @@ -1059,6 +1097,7 @@ void Inf_FormToSendURL (Inf_Src_t InfoSrc) /***** Begin form *****/ Frm_BeginForm (Inf_ActionsInfo[InfoSrc][Gbl.Crs.Info.Type]); + Syl_PutParWhichSyllabus (&Syllabus->WhichSyllabus); /***** Link *****/ if ((FileURL = fopen (PathFile,"rb")) != NULL) @@ -1094,34 +1133,13 @@ void Inf_FormToSendURL (Inf_Src_t InfoSrc) static void Inf_AsignInfoType (struct Inf_Info *Info, struct Syl_Syllabus *Syllabus) { - switch (Gbl.Action.Act) + Syllabus->WhichSyllabus = Syl_NONE; + switch (Act_GetSuperAction (Gbl.Action.Act)) { case ActSeeCrsInf: - case ActEdiCrsInf: - case ActChgFrcReaCrsInf: - case ActChgHavReaCrsInf: - case ActSelInfSrcCrsInf: - case ActEditorCrsInf: - case ActRcvURLCrsInf: - case ActRcvPagCrsInf: - case ActPlaTxtEdiCrsInf: - case ActRchTxtEdiCrsInf: - case ActRcvPlaTxtCrsInf: - case ActRcvRchTxtCrsInf: Info->Type = Inf_INTRODUCTION; break; case ActSeeTchGui: - case ActEdiTchGui: - case ActChgFrcReaTchGui: - case ActChgHavReaTchGui: - case ActSelInfSrcTchGui: - case ActEditorTchGui: - case ActRcvURLTchGui: - case ActRcvPagTchGui: - case ActPlaTxtEdiTchGui: - case ActRchTxtEdiTchGui: - case ActRcvPlaTxtTchGui: - case ActRcvRchTxtTchGui: Info->Type = Inf_TEACHING_GUIDE; break; case ActSeeSyl: @@ -1129,92 +1147,21 @@ static void Inf_AsignInfoType (struct Inf_Info *Info, Info->Type = (Syllabus->WhichSyllabus == Syl_LECTURES ? Inf_LECTURES : Inf_PRACTICALS); break; - case ActSeeSylLec: - case ActEdiSylLec: - case ActChgFrcReaSylLec: - case ActChgHavReaSylLec: - case ActSelInfSrcSylLec: - case ActEditorSylLec: - case ActRcvURLSylLec: - case ActRcvPagSylLec: - case ActPlaTxtEdiSylLec: - case ActRchTxtEdiSylLec: - case ActRcvPlaTxtSylLec: - case ActRcvRchTxtSylLec: - Syllabus->WhichSyllabus = Syl_LECTURES; - Info->Type = Inf_LECTURES; - break; - case ActSeeSylPra: - case ActEdiSylPra: - case ActChgFrcReaSylPra: - case ActChgHavReaSylPra: - case ActSelInfSrcSylPra: - case ActEditorSylPra: - case ActRcvURLSylPra: - case ActRcvPagSylPra: - case ActPlaTxtEdiSylPra: - case ActRchTxtEdiSylPra: - case ActRcvPlaTxtSylPra: - case ActRcvRchTxtSylPra: - Syllabus->WhichSyllabus = Syl_PRACTICALS; - Info->Type = Inf_PRACTICALS; - break; case ActSeeBib: - case ActEdiBib: - case ActChgFrcReaBib: - case ActChgHavReaBib: - case ActSelInfSrcBib: - case ActEditorBib: - case ActRcvURLBib: - case ActRcvPagBib: - case ActPlaTxtEdiBib: - case ActRchTxtEdiBib: - case ActRcvPlaTxtBib: - case ActRcvRchTxtBib: Info->Type = Inf_BIBLIOGRAPHY; break; case ActSeeFAQ: - case ActEdiFAQ: - case ActChgFrcReaFAQ: - case ActChgHavReaFAQ: - case ActSelInfSrcFAQ: - case ActEditorFAQ: - case ActRcvURLFAQ: - case ActRcvPagFAQ: - case ActPlaTxtEdiFAQ: - case ActRchTxtEdiFAQ: - case ActRcvPlaTxtFAQ: - case ActRcvRchTxtFAQ: Info->Type = Inf_FAQ; break; case ActSeeCrsLnk: - case ActEdiCrsLnk: - case ActChgFrcReaCrsLnk: - case ActChgHavReaCrsLnk: - case ActSelInfSrcCrsLnk: - case ActEditorCrsLnk: - case ActRcvURLCrsLnk: - case ActRcvPagCrsLnk: - case ActPlaTxtEdiCrsLnk: - case ActRchTxtEdiCrsLnk: - case ActRcvPlaTxtCrsLnk: - case ActRcvRchTxtCrsLnk: Info->Type = Inf_LINKS; break; case ActSeeAss: - case ActEdiAss: - case ActChgFrcReaAss: - case ActChgHavReaAss: - case ActSelInfSrcAss: - case ActEditorAss: - case ActRcvURLAss: - case ActRcvPagAss: - case ActPlaTxtEdiAss: - case ActRchTxtEdiAss: - case ActRcvPlaTxtAss: - case ActRcvRchTxtAss: Info->Type = Inf_ASSESSMENT; break; + default: + Err_WrongActionExit (); + break; } } @@ -1228,9 +1175,9 @@ Inf_Src_t Inf_GetInfoSrcFromForm (void) (introduction, teaching guide, bibliography, FAQ, links or assessment) *****/ return (Inf_Src_t) Par_GetParUnsignedLong ("InfoSrc", - 0, - Inf_NUM_SOURCES - 1, - (unsigned long) Inf_NONE); + 0, + Inf_NUM_SOURCES - 1, + (unsigned long) Inf_NONE); } /*****************************************************************************/ @@ -1615,20 +1562,26 @@ static bool Inf_CheckAndShowRichTxt (void) void Inf_EditPlainTxtInfo (void) { + extern Syl_WhichSyllabus_t Syl_WhichSyllabus[Syl_NUM_WHICH_SYLLABUS]; extern const char *Txt_INFO_TITLE[Inf_NUM_TYPES]; extern const char *Txt_Save_changes; struct Syl_Syllabus Syllabus; char TxtHTML[Cns_MAX_BYTES_LONG_TEXT + 1]; - static const Act_Action_t Inf_ActionsRcvPlaTxtInfo[Inf_NUM_TYPES] = + static struct { - [Inf_INTRODUCTION ] = ActRcvPlaTxtCrsInf, - [Inf_TEACHING_GUIDE] = ActRcvPlaTxtTchGui, - [Inf_LECTURES ] = ActRcvPlaTxtSylLec, - [Inf_PRACTICALS ] = ActRcvPlaTxtSylPra, - [Inf_BIBLIOGRAPHY ] = ActRcvPlaTxtBib, - [Inf_FAQ ] = ActRcvPlaTxtFAQ, - [Inf_LINKS ] = ActRcvPlaTxtCrsLnk, - [Inf_ASSESSMENT ] = ActRcvPlaTxtAss, + const Act_Action_t NextAction; + void (*FuncPars) (void *Args); + void *Args; + } Inf_Actions[Inf_NUM_TYPES] = + { + [Inf_INTRODUCTION ] = {ActRcvPlaTxtCrsInf,NULL,NULL}, + [Inf_TEACHING_GUIDE] = {ActRcvPlaTxtTchGui,NULL,NULL}, + [Inf_LECTURES ] = {ActRcvPlaTxtSylLec,Syl_PutParWhichSyllabus,&Syl_WhichSyllabus[Syl_LECTURES ]}, + [Inf_PRACTICALS ] = {ActRcvPlaTxtSylPra,Syl_PutParWhichSyllabus,&Syl_WhichSyllabus[Syl_PRACTICALS]}, + [Inf_BIBLIOGRAPHY ] = {ActRcvPlaTxtBib ,NULL,NULL}, + [Inf_FAQ ] = {ActRcvPlaTxtFAQ ,NULL,NULL}, + [Inf_LINKS ] = {ActRcvPlaTxtCrsLnk,NULL,NULL}, + [Inf_ASSESSMENT ] = {ActRcvPlaTxtAss ,NULL,NULL}, }; const char *HelpEdit[Inf_NUM_TYPES] = { @@ -1649,7 +1602,9 @@ void Inf_EditPlainTxtInfo (void) Inf_AsignInfoType (&Gbl.Crs.Info,&Syllabus); /***** Begin form and box *****/ - Frm_BeginForm (Inf_ActionsRcvPlaTxtInfo[Gbl.Crs.Info.Type]); + Frm_BeginForm (Inf_Actions[Gbl.Crs.Info.Type].NextAction); + if (Inf_Actions[Gbl.Crs.Info.Type].FuncPars) + Inf_Actions[Gbl.Crs.Info.Type].FuncPars (Inf_Actions[Gbl.Crs.Info.Type].Args); Box_BoxBegin (Txt_INFO_TITLE[Gbl.Crs.Info.Type],NULL,NULL, HelpEdit[Gbl.Crs.Info.Type],Box_NOT_CLOSABLE); @@ -1682,20 +1637,26 @@ void Inf_EditPlainTxtInfo (void) void Inf_EditRichTxtInfo (void) { + extern Syl_WhichSyllabus_t Syl_WhichSyllabus[Syl_NUM_WHICH_SYLLABUS]; extern const char *Txt_INFO_TITLE[Inf_NUM_TYPES]; extern const char *Txt_Save_changes; struct Syl_Syllabus Syllabus; char TxtHTML[Cns_MAX_BYTES_LONG_TEXT + 1]; - static const Act_Action_t Inf_ActionsRcvRchTxtInfo[Inf_NUM_TYPES] = + static struct { - [Inf_INTRODUCTION ] = ActRcvRchTxtCrsInf, - [Inf_TEACHING_GUIDE] = ActRcvRchTxtTchGui, - [Inf_LECTURES ] = ActRcvRchTxtSylLec, - [Inf_PRACTICALS ] = ActRcvRchTxtSylPra, - [Inf_BIBLIOGRAPHY ] = ActRcvRchTxtBib, - [Inf_FAQ ] = ActRcvRchTxtFAQ, - [Inf_LINKS ] = ActRcvRchTxtCrsLnk, - [Inf_ASSESSMENT ] = ActRcvRchTxtAss, + const Act_Action_t NextAction; + void (*FuncPars) (void *Args); + void *Args; + } Inf_Actions[Inf_NUM_TYPES] = + { + [Inf_INTRODUCTION ] = {ActRcvRchTxtCrsInf,NULL,NULL}, + [Inf_TEACHING_GUIDE] = {ActRcvRchTxtTchGui,NULL,NULL}, + [Inf_LECTURES ] = {ActRcvRchTxtSylLec,Syl_PutParWhichSyllabus,&Syl_WhichSyllabus[Syl_LECTURES ]}, + [Inf_PRACTICALS ] = {ActRcvRchTxtSylPra,Syl_PutParWhichSyllabus,&Syl_WhichSyllabus[Syl_PRACTICALS]}, + [Inf_BIBLIOGRAPHY ] = {ActRcvRchTxtBib ,NULL,NULL}, + [Inf_FAQ ] = {ActRcvRchTxtFAQ ,NULL,NULL}, + [Inf_LINKS ] = {ActRcvRchTxtCrsLnk,NULL,NULL}, + [Inf_ASSESSMENT ] = {ActRcvRchTxtAss ,NULL,NULL}, }; const char *HelpEdit[Inf_NUM_TYPES] = { @@ -1716,7 +1677,9 @@ void Inf_EditRichTxtInfo (void) Inf_AsignInfoType (&Gbl.Crs.Info,&Syllabus); /***** Begin form and box *****/ - Frm_BeginForm (Inf_ActionsRcvRchTxtInfo[Gbl.Crs.Info.Type]); + Frm_BeginForm (Inf_Actions[Gbl.Crs.Info.Type].NextAction); + if (Inf_Actions[Gbl.Crs.Info.Type].FuncPars) + Inf_Actions[Gbl.Crs.Info.Type].FuncPars (Inf_Actions[Gbl.Crs.Info.Type].Args); Box_BoxBegin (Txt_INFO_TITLE[Gbl.Crs.Info.Type],NULL,NULL, HelpEdit[Gbl.Crs.Info.Type],Box_NOT_CLOSABLE); diff --git a/swad_info.h b/swad_info.h index 6bb07bd6..69e18e64 100644 --- a/swad_info.h +++ b/swad_info.h @@ -88,11 +88,11 @@ void Inf_BuildPathPage (long CrsCod,Inf_Type_t InfoType,char PathDir[PATH_MAX + void Inf_WriteURLIntoTxtBuffer (char TxtBuffer[Cns_MAX_BYTES_WWW + 1]); void Inf_SetInfoSrc (void); void Inf_FormsToSelSendInfo (void); -void Inf_FormToEnterIntegratedEditor (Inf_Src_t InfoSrc); -void Inf_FormToEnterPlainTextEditor (Inf_Src_t InfoSrc); -void Inf_FormToEnterRichTextEditor (Inf_Src_t InfoSrc); -void Inf_FormToSendPage (Inf_Src_t InfoSrc); -void Inf_FormToSendURL (Inf_Src_t InfoSrc); +void Inf_FormToEnterIntegratedEditor (struct Syl_Syllabus *Syllabus,Inf_Src_t InfoSrc); +void Inf_FormToEnterPlainTextEditor (struct Syl_Syllabus *Syllabus,Inf_Src_t InfoSrc); +void Inf_FormToEnterRichTextEditor (struct Syl_Syllabus *Syllabus,Inf_Src_t InfoSrc); +void Inf_FormToSendPage (struct Syl_Syllabus *Syllabus,Inf_Src_t InfoSrc); +void Inf_FormToSendURL (struct Syl_Syllabus *Syllabus,Inf_Src_t InfoSrc); Inf_Src_t Inf_GetInfoSrcFromForm (void); Inf_Src_t Inf_GetInfoSrcFromDB (long CrsCod,Inf_Type_t InfoType); void Inf_GetAndCheckInfoSrcFromDB (struct Syl_Syllabus *Syllabus, diff --git a/swad_mail.c b/swad_mail.c index 1a944254..b20b6ce3 100644 --- a/swad_mail.c +++ b/swad_mail.c @@ -347,16 +347,11 @@ static void Mai_GetMailDomain (const char *Email, void Mai_WriteWarningEmailNotifications (void) { extern const char *Txt_You_can_only_receive_email_notifications_if_; - extern const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB]; extern const char *Txt_Domains; - Tab_Tab_t TabMyAccount = Act_GetTab (ActFrmMyAcc); - Tab_Tab_t TabMailDomains = Act_GetTab (ActSeeMai); Ale_ShowAlert (Ale_WARNING,Txt_You_can_only_receive_email_notifications_if_, - Tab_GetTxt (TabMyAccount), - Txt_MENU_TITLE[TabMyAccount ][Act_GetIndexInMenu (ActFrmMyAcc)], - Tab_GetTxt (TabMailDomains), - Txt_MENU_TITLE[TabMailDomains][Act_GetIndexInMenu (ActSeeMai )], + Tab_GetTxt (Act_GetTab (ActFrmMyAcc)),Act_GetTitleAction (ActFrmMyAcc), + Tab_GetTxt (Act_GetTab (ActSeeMai )),Act_GetTitleAction (ActSeeMai ), Txt_Domains); } diff --git a/swad_menu.c b/swad_menu.c index ec6eaf25..fffb9ba0 100644 --- a/swad_menu.c +++ b/swad_menu.c @@ -240,14 +240,13 @@ Act_Action_t Mnu_GetFirstActionAvailableInCurrentTab (void) void Mnu_WriteMenuThisTab (void) { extern const char *Ico_IconSetId[Ico_NUM_ICON_SETS]; - extern const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB]; static const char *ClassIcoMenu[Ico_NUM_ICON_SETS] = { [Ico_ICON_SET_AWESOME] = "MENU_ICO", [Ico_ICON_SET_NUVOLA ] = NULL, }; unsigned NumOptInMenu; - Act_Action_t NumAct; + Act_Action_t Action; const char *Title; bool IsTheSelectedAction; @@ -262,14 +261,14 @@ void Mnu_WriteMenuThisTab (void) NumOptInMenu < Act_MAX_OPTIONS_IN_MENU_PER_TAB; NumOptInMenu++) { - NumAct = Mnu_Menu[Gbl.Action.Tab][NumOptInMenu].Action; - if (NumAct == 0) // At the end of each tab, actions are initialized to 0, so 0 marks the end of the menu + Action = Mnu_Menu[Gbl.Action.Tab][NumOptInMenu].Action; + if (Action == 0) // At the end of each tab, actions are initialized to 0, so 0 marks the end of the menu break; - if (Act_CheckIfIHavePermissionToExecuteAction (NumAct)) + if (Act_CheckIfIHavePermissionToExecuteAction (Action)) { - IsTheSelectedAction = (NumAct == Act_GetSuperAction (Gbl.Action.Act)); + IsTheSelectedAction = (Action == Act_GetSuperAction (Gbl.Action.Act)); - Title = Act_GetActionText (NumAct); + Title = Act_GetActionText (Action); /***** Begin option *****/ HTM_LI_Begin ("class=\"MENU_LIST_ITEM %s\"", @@ -277,7 +276,7 @@ void Mnu_WriteMenuThisTab (void) "MENU_OPT_OFF"); /***** Begin form *****/ - Frm_BeginForm (NumAct); + Frm_BeginForm (Action); /***** Begin link *****/ HTM_BUTTON_Submit_Begin (Title,"class=\"BT_LINK\""); @@ -298,7 +297,7 @@ void Mnu_WriteMenuThisTab (void) HTM_DIV_End (); HTM_DIV_Begin ("class=\"MENU_TXT MENU_TXT_%s\"", The_GetSuffix ()); - HTM_Txt (Txt_MENU_TITLE[Gbl.Action.Tab][NumOptInMenu]); + HTM_Txt (Act_GetTitleAction (Action)); HTM_DIV_End (); HTM_DIV_End (); diff --git a/swad_report.c b/swad_report.c index 2dc61865..f211dc66 100644 --- a/swad_report.c +++ b/swad_report.c @@ -759,7 +759,7 @@ static void Rep_WriteSectionHitsPerAction (struct Rep_Report *Report) { if ((Action = Act_GetActionFromActCod (ActCod)) >= 0) { - TabTxt = Tab_GetTxt (Act_GetTab (Act_GetSuperAction (Action))); + TabTxt = Tab_GetTxt (Act_GetTab (Action)); if (TabTxt) fprintf (Rep_File,"%s > ",TabTxt); } diff --git a/swad_syllabus.c b/swad_syllabus.c index 6ca2572d..f48cd898 100644 --- a/swad_syllabus.c +++ b/swad_syllabus.c @@ -50,6 +50,17 @@ #include "swad_string.h" #include "swad_xml.h" +/*****************************************************************************/ +/***************************** Public constants ******************************/ +/*****************************************************************************/ + +Syl_WhichSyllabus_t Syl_WhichSyllabus[Syl_NUM_WHICH_SYLLABUS] = + { + [Syl_NONE ] = Syl_NONE, + [Syl_LECTURES ] = Syl_LECTURES, + [Syl_PRACTICALS] = Syl_PRACTICALS + }; + /*****************************************************************************/ /************** External global variables from others modules ****************/ /*****************************************************************************/ @@ -106,17 +117,14 @@ struct LstItemsSyllabus Syl_LstItemsSyllabus; /***************************** Private prototypes ****************************/ /*****************************************************************************/ -static void Syl_PutFormWhichSyllabus (Syl_WhichSyllabus_t SyllabusSelected); - static unsigned Syl_GetParItemNumber (void); -static void Syl_SetSyllabusTypeFromAction (struct Syl_Syllabus *Syllabus); static void Syl_ShowSyllabus (struct Syl_Syllabus *Syllabus); static void Syl_ShowRowSyllabus (struct Syl_Syllabus *Syllabus,unsigned NumItem, int Level,int *CodItem,const char *Text,bool NewItem); static void Syl_PutFormItemSyllabus (struct Syl_Syllabus *Syllabus, bool NewItem,unsigned NumItem,int Level,int *CodItem,const char *Text); -static void Syl_PutParNumItem (void *ParNumItem); +static void Syl_PutParsSyllabus (void *Syllabus); static void Syl_WriteNumItem (char *StrDst,FILE *FileTgt,int Level,int *CodItem); @@ -154,22 +162,44 @@ Syl_WhichSyllabus_t Syl_GetParWhichSyllabus (void) (unsigned long) Syl_DEFAULT_WHICH_SYLLABUS); } +/*****************************************************************************/ +/****************** Put parameter with type of syllabus **********************/ +/*****************************************************************************/ + +void Syl_PutParWhichSyllabus (void *SyllabusSelected) + { + if (SyllabusSelected) + if (*((Syl_WhichSyllabus_t *) SyllabusSelected) != Syl_NONE) + Par_PutParUnsigned (NULL,"WhichSyllabus", + (unsigned) *((Syl_WhichSyllabus_t *) SyllabusSelected)); + } + /*****************************************************************************/ /************************ Write form to select syllabus **********************/ /*****************************************************************************/ -static void Syl_PutFormWhichSyllabus (Syl_WhichSyllabus_t SyllabusSelected) +void Syl_PutFormWhichSyllabus (Syl_WhichSyllabus_t WhichSyllabus) { extern const char *Txt_SYLLABUS_WHICH_SYLLABUS[Syl_NUM_WHICH_SYLLABUS]; Syl_WhichSyllabus_t WhichSyl; + /***** If no syllabus ==> nothing to do *****/ + switch (Gbl.Crs.Info.Type) + { + case Inf_LECTURES: + case Inf_PRACTICALS: + break; + default: // Nothing to do + return; + } + /***** Form to select which syllabus I want to see (lectures/practicals) *****/ Frm_BeginForm (ActSeeSyl); HTM_DIV_Begin ("class=\"SEL_BELOW_TITLE DAT_%s\"",The_GetSuffix ()); HTM_UL_Begin (NULL); - for (WhichSyl = (Syl_WhichSyllabus_t) 0; - WhichSyl <= (Syl_WhichSyllabus_t) (For_NUM_FORUM_SETS - 1); + for (WhichSyl = (Syl_WhichSyllabus_t) 1; + WhichSyl <= (Syl_WhichSyllabus_t) (Syl_NUM_WHICH_SYLLABUS - 1); WhichSyl++) { HTM_LI_Begin (NULL); @@ -177,8 +207,8 @@ static void Syl_PutFormWhichSyllabus (Syl_WhichSyllabus_t SyllabusSelected) HTM_INPUT_RADIO ("WhichSyllabus",HTM_SUBMIT_ON_CLICK, "value=\"%u\"%s", (unsigned) WhichSyl, - WhichSyl == SyllabusSelected ? " checked=\"checked\"" : - ""); + WhichSyl == WhichSyllabus ? " checked=\"checked\"" : + ""); HTM_Txt (Txt_SYLLABUS_WHICH_SYLLABUS[WhichSyl]); HTM_LABEL_End (); HTM_LI_End (); @@ -226,10 +256,12 @@ bool Syl_CheckSyllabus (struct Syl_Syllabus *Syllabus,long CrsCod) /*****************************************************************************/ // Return true if info available -bool Syl_CheckAndEditSyllabus (struct Syl_Syllabus *Syllabus) +bool Syl_CheckAndShowSyllabus (struct Syl_Syllabus *Syllabus) { - /***** Set syllabus type depending on current action *****/ - Syl_SetSyllabusTypeFromAction (Syllabus); + /***** Get syllabus type *****/ + Syllabus->WhichSyllabus = Syl_GetParWhichSyllabus (); + Gbl.Crs.Info.Type = (Syllabus->WhichSyllabus == Syl_LECTURES ? Inf_LECTURES : + Inf_PRACTICALS); /***** Load syllabus from XML file to memory *****/ Syl_LoadListItemsSyllabusIntoMemory (Syllabus,Gbl.Hierarchy.Node[Hie_CRS].HieCod); @@ -275,72 +307,7 @@ void Syl_EditSyllabus (void) Syl_ResetSyllabus (&Syllabus); /***** Edit syllabus *****/ - Syl_CheckAndEditSyllabus (&Syllabus); - } - -/*****************************************************************************/ -/************* Set syllabus type depending on the current action *************/ -/*****************************************************************************/ - -static void Syl_SetSyllabusTypeFromAction (struct Syl_Syllabus *Syllabus) - { - Gbl.Crs.Info.Type = Inf_LECTURES; - - /***** Set the type of syllabus (lectures or practicals) *****/ - switch (Gbl.Action.Act) - { - case ActSeeSyl: - Gbl.Crs.Info.Type = (Syllabus->WhichSyllabus == Syl_LECTURES ? Inf_LECTURES : - Inf_PRACTICALS); - break; - case ActSeeSylLec: - case ActEdiSylLec: - case ActDelItmSylLec: - case ActUp_IteSylLec: - case ActDwnIteSylLec: - case ActRgtIteSylLec: - case ActLftIteSylLec: - case ActInsIteSylLec: - case ActModIteSylLec: - case ActChgFrcReaSylLec: - case ActChgHavReaSylLec: - case ActSelInfSrcSylLec: - case ActRcvURLSylLec: - case ActRcvPagSylLec: - case ActEditorSylLec: - case ActPlaTxtEdiSylLec: - case ActRchTxtEdiSylLec: - case ActRcvPlaTxtSylLec: - case ActRcvRchTxtSylLec: - Syllabus->WhichSyllabus = Syl_LECTURES; - Gbl.Crs.Info.Type = Inf_LECTURES; - break; - case ActSeeSylPra: - case ActEdiSylPra: - case ActDelItmSylPra: - case ActUp_IteSylPra: - case ActDwnIteSylPra: - case ActRgtIteSylPra: - case ActLftIteSylPra: - case ActInsIteSylPra: - case ActModIteSylPra: - case ActChgFrcReaSylPra: - case ActChgHavReaSylPra: - case ActSelInfSrcSylPra: - case ActRcvURLSylPra: - case ActRcvPagSylPra: - case ActEditorSylPra: - case ActPlaTxtEdiSylPra: - case ActRchTxtEdiSylPra: - case ActRcvPlaTxtSylPra: - case ActRcvRchTxtSylPra: - Syllabus->WhichSyllabus = Syl_PRACTICALS; - Gbl.Crs.Info.Type = Inf_PRACTICALS; - break; - default: - Err_WrongActionExit (); - break; - } + Syl_CheckAndShowSyllabus (&Syllabus); } /*****************************************************************************/ @@ -516,7 +483,6 @@ int Syl_ReadLevelItemSyllabus (FILE *XML) static void Syl_ShowSyllabus (struct Syl_Syllabus *Syllabus) { - extern const Act_Action_t Inf_ActionsSeeInfo[Inf_NUM_TYPES]; extern const char *Txt_INFO_TITLE[Inf_NUM_TYPES]; extern const char *Hlp_COURSE_Syllabus_edit; extern const char *Hlp_COURSE_Syllabus; @@ -533,6 +499,17 @@ static void Syl_ShowSyllabus (struct Syl_Syllabus *Syllabus) [Vie_VIEW] = 0, [Vie_EDIT] = 5, }; + static const Act_Action_t Inf_Actions[Inf_NUM_TYPES] = + { + [Inf_INTRODUCTION ] = ActSeeCrsInf, + [Inf_TEACHING_GUIDE] = ActSeeTchGui, + [Inf_LECTURES ] = ActSeeSylLec, + [Inf_PRACTICALS ] = ActSeeSylPra, + [Inf_BIBLIOGRAPHY ] = ActSeeBib, + [Inf_FAQ ] = ActSeeFAQ, + [Inf_LINKS ] = ActSeeCrsLnk, + [Inf_ASSESSMENT ] = ActSeeAss, + }; bool ShowRowInsertNewItem = (Gbl.Action.Act == ActInsIteSylLec || Gbl.Action.Act == ActInsIteSylPra || Gbl.Action.Act == ActModIteSylLec || Gbl.Action.Act == ActModIteSylPra || Gbl.Action.Act == ActRgtIteSylLec || Gbl.Action.Act == ActRgtIteSylPra || @@ -549,9 +526,6 @@ static void Syl_ShowSyllabus (struct Syl_Syllabus *Syllabus) NULL, *HelpLink[Syllabus->ViewType],Box_NOT_CLOSABLE); - /****** Form to select syllabus *****/ - Syl_PutFormWhichSyllabus (Syllabus->WhichSyllabus); - /***** Begin table *****/ HTM_TABLE_BeginWide (); @@ -596,7 +570,8 @@ static void Syl_ShowSyllabus (struct Syl_Syllabus *Syllabus) /***** Button to view *****/ if (Syllabus->ViewType == Vie_EDIT) { - Frm_BeginForm (Inf_ActionsSeeInfo[Gbl.Crs.Info.Type]); + Frm_BeginForm (Inf_Actions[Gbl.Crs.Info.Type]); + Syl_PutParWhichSyllabus (&Syllabus->WhichSyllabus); Btn_PutConfirmButton (Txt_Done); Frm_EndForm (); } @@ -674,7 +649,7 @@ static void Syl_ShowRowSyllabus (struct Syl_Syllabus *Syllabus,unsigned NumItem, else Ico_PutContextualIconToRemove (Gbl.Crs.Info.Type == Inf_LECTURES ? ActDelItmSylLec : ActDelItmSylPra,NULL, - Syl_PutParNumItem,&Syllabus->ParNumItem); + Syl_PutParsSyllabus,Syllabus); HTM_TD_End (); /***** Icon to get up an item *****/ @@ -684,7 +659,7 @@ static void Syl_ShowRowSyllabus (struct Syl_Syllabus *Syllabus,unsigned NumItem, Lay_PutContextualLinkOnlyIcon (Gbl.Crs.Info.Type == Inf_LECTURES ? ActUp_IteSylLec : ActUp_IteSylPra, NULL, - Syl_PutParNumItem,&Syllabus->ParNumItem, + Syl_PutParsSyllabus,Syllabus, "arrow-up.svg",Ico_BLACK); else Ico_PutIconOff ("arrow-up.svg",Ico_BLACK, @@ -698,7 +673,7 @@ static void Syl_ShowRowSyllabus (struct Syl_Syllabus *Syllabus,unsigned NumItem, Lay_PutContextualLinkOnlyIcon (Gbl.Crs.Info.Type == Inf_LECTURES ? ActDwnIteSylLec : ActDwnIteSylPra, NULL, - Syl_PutParNumItem,&Syllabus->ParNumItem, + Syl_PutParsSyllabus,Syllabus, "arrow-down.svg",Ico_BLACK); else Ico_PutIconOff ("arrow-down.svg",Ico_BLACK, @@ -711,7 +686,7 @@ static void Syl_ShowRowSyllabus (struct Syl_Syllabus *Syllabus,unsigned NumItem, Lay_PutContextualLinkOnlyIcon (Gbl.Crs.Info.Type == Inf_LECTURES ? ActRgtIteSylLec : ActRgtIteSylPra, NULL, - Syl_PutParNumItem,&Syllabus->ParNumItem, + Syl_PutParsSyllabus,Syllabus, "arrow-left.svg",Ico_BLACK); else Ico_PutIconOff ("arrow-left.svg",Ico_BLACK, @@ -725,7 +700,7 @@ static void Syl_ShowRowSyllabus (struct Syl_Syllabus *Syllabus,unsigned NumItem, Lay_PutContextualLinkOnlyIcon (Gbl.Crs.Info.Type == Inf_LECTURES ? ActLftIteSylLec : ActLftIteSylPra, NULL, - Syl_PutParNumItem,&Syllabus->ParNumItem, + Syl_PutParsSyllabus,Syllabus, "arrow-right.svg",Ico_BLACK); else Ico_PutIconOff ("arrow-right.svg",Ico_BLACK, @@ -863,7 +838,7 @@ static void Syl_PutFormItemSyllabus (struct Syl_Syllabus *Syllabus, (Gbl.Crs.Info.Type == Inf_LECTURES ? ActModIteSylLec : ActModIteSylPra)); Syllabus->ParNumItem = NumItem; - Syl_PutParNumItem (&Syllabus->ParNumItem); + Syl_PutParsSyllabus (Syllabus); HTM_INPUT_TEXT ("Txt",Syl_MAX_CHARS_TEXT_ITEM,Text, HTM_SUBMIT_ON_CHANGE, "size=\"60\" class=\"INPUT_%s\" placeholder=\"%s\"%s", @@ -876,13 +851,18 @@ static void Syl_PutFormItemSyllabus (struct Syl_Syllabus *Syllabus, } /*****************************************************************************/ -/***** Write parameter with the number of an item in a syllabus form *********/ +/******************* Write parameters related to syllabus ********************/ /*****************************************************************************/ -static void Syl_PutParNumItem (void *ParNumItem) +static void Syl_PutParsSyllabus (void *Syllabus) { - if (ParNumItem) - Par_PutParUnsigned (NULL,"NumI",*((unsigned *) ParNumItem)); + if (Syllabus) + { + if (((struct Syl_Syllabus *) Syllabus)->WhichSyllabus != Syl_NONE) + Par_PutParUnsigned (NULL,"WhichSyllabus", + (unsigned) ((struct Syl_Syllabus *) Syllabus)->WhichSyllabus); + Par_PutParUnsigned (NULL,"NumI",((struct Syl_Syllabus *) Syllabus)->ParNumItem); + } } /*****************************************************************************/ @@ -932,8 +912,10 @@ void Syl_RemoveItemSyllabus (void) /***** Reset syllabus context *****/ Syl_ResetSyllabus (&Syllabus); - /***** Set syllabus type depending on current action *****/ - Syl_SetSyllabusTypeFromAction (&Syllabus); + /***** Get syllabus type *****/ + Syllabus.WhichSyllabus = Syl_GetParWhichSyllabus (); + Gbl.Crs.Info.Type = (Syllabus.WhichSyllabus == Syl_LECTURES ? Inf_LECTURES : + Inf_PRACTICALS); /***** Load syllabus from XML file to memory *****/ Syl_LoadListItemsSyllabusIntoMemory (&Syllabus,Gbl.Hierarchy.Node[Hie_CRS].HieCod); @@ -966,7 +948,7 @@ void Syl_RemoveItemSyllabus (void) /***** Show the updated syllabus to continue editing it *****/ Syl_FreeListItemsSyllabus (); - (void) Syl_CheckAndEditSyllabus (&Syllabus); + (void) Syl_CheckAndShowSyllabus (&Syllabus); } /*****************************************************************************/ @@ -1009,8 +991,10 @@ static void Syl_ChangePlaceItemSyllabus (Syl_ChangePosItem_t UpOrDownPos) /***** Reset syllabus context *****/ Syl_ResetSyllabus (&Syllabus); - /***** Set syllabus type depending on current action *****/ - Syl_SetSyllabusTypeFromAction (&Syllabus); + /***** Get syllabus type *****/ + Syllabus.WhichSyllabus = Syl_GetParWhichSyllabus (); + Gbl.Crs.Info.Type = (Syllabus.WhichSyllabus == Syl_LECTURES ? Inf_LECTURES : + Inf_PRACTICALS); /***** Load syllabus from XML file to memory *****/ Syl_LoadListItemsSyllabusIntoMemory (&Syllabus,Gbl.Hierarchy.Node[Hie_CRS].HieCod); @@ -1069,7 +1053,7 @@ static void Syl_ChangePlaceItemSyllabus (Syl_ChangePosItem_t UpOrDownPos) /***** Show the updated syllabus to continue editing it *****/ Syl_FreeListItemsSyllabus (); - (void) Syl_CheckAndEditSyllabus (&Syllabus); + (void) Syl_CheckAndShowSyllabus (&Syllabus); } /*****************************************************************************/ @@ -1195,8 +1179,10 @@ static void Syl_ChangeLevelItemSyllabus (Syl_ChangeLevelItem_t IncreaseOrDecreas /***** Reset syllabus context *****/ Syl_ResetSyllabus (&Syllabus); - /***** Set syllabus type depending on current action *****/ - Syl_SetSyllabusTypeFromAction (&Syllabus); + /***** Get syllabus type *****/ + Syllabus.WhichSyllabus = Syl_GetParWhichSyllabus (); + Gbl.Crs.Info.Type = (Syllabus.WhichSyllabus == Syl_LECTURES ? Inf_LECTURES : + Inf_PRACTICALS); /***** Load syllabus from XML file to memory *****/ Syl_LoadListItemsSyllabusIntoMemory (&Syllabus,Gbl.Hierarchy.Node[Hie_CRS].HieCod); @@ -1238,7 +1224,7 @@ static void Syl_ChangeLevelItemSyllabus (Syl_ChangeLevelItem_t IncreaseOrDecreas /***** Show the updated syllabus to continue editing it *****/ Syl_FreeListItemsSyllabus (); - (void) Syl_CheckAndEditSyllabus (&Syllabus); + (void) Syl_CheckAndShowSyllabus (&Syllabus); } /*****************************************************************************/ @@ -1258,8 +1244,10 @@ void Syl_InsertItemSyllabus (void) /***** Reset syllabus context *****/ Syl_ResetSyllabus (&Syllabus); - /***** Set syllabus type depending on current action *****/ - Syl_SetSyllabusTypeFromAction (&Syllabus); + /***** Get syllabus type *****/ + Syllabus.WhichSyllabus = Syl_GetParWhichSyllabus (); + Gbl.Crs.Info.Type = (Syllabus.WhichSyllabus == Syl_LECTURES ? Inf_LECTURES : + Inf_PRACTICALS); /***** Load syllabus from XML file to memory *****/ Syl_LoadListItemsSyllabusIntoMemory (&Syllabus,Gbl.Hierarchy.Node[Hie_CRS].HieCod); @@ -1309,7 +1297,7 @@ void Syl_InsertItemSyllabus (void) /***** Show the updated syllabus to continue editing it *****/ Syl_FreeListItemsSyllabus (); - (void) Syl_CheckAndEditSyllabus (&Syllabus); + (void) Syl_CheckAndShowSyllabus (&Syllabus); } /*****************************************************************************/ @@ -1327,8 +1315,10 @@ void Syl_ModifyItemSyllabus (void) /***** Reset syllabus context *****/ Syl_ResetSyllabus (&Syllabus); - /***** Set syllabus type depending on current action *****/ - Syl_SetSyllabusTypeFromAction (&Syllabus); + /***** Get syllabus type *****/ + Syllabus.WhichSyllabus = Syl_GetParWhichSyllabus (); + Gbl.Crs.Info.Type = (Syllabus.WhichSyllabus == Syl_LECTURES ? Inf_LECTURES : + Inf_PRACTICALS); /***** Load syllabus from XML file to memory *****/ Syl_LoadListItemsSyllabusIntoMemory (&Syllabus,Gbl.Hierarchy.Node[Hie_CRS].HieCod); @@ -1361,7 +1351,7 @@ void Syl_ModifyItemSyllabus (void) /***** Show the updated syllabus to continue editing it *****/ Syl_FreeListItemsSyllabus (); - (void) Syl_CheckAndEditSyllabus (&Syllabus); + (void) Syl_CheckAndShowSyllabus (&Syllabus); } /*****************************************************************************/ diff --git a/swad_syllabus.h b/swad_syllabus.h index e4eb55c9..2a9c2b2d 100644 --- a/swad_syllabus.h +++ b/swad_syllabus.h @@ -33,11 +33,12 @@ /************************ Public constants and types *************************/ /*****************************************************************************/ -#define Syl_NUM_WHICH_SYLLABUS 2 +#define Syl_NUM_WHICH_SYLLABUS 3 typedef enum { - Syl_LECTURES = 0, - Syl_PRACTICALS = 1, + Syl_NONE = 0, + Syl_LECTURES = 1, + Syl_PRACTICALS = 2, } Syl_WhichSyllabus_t; // Which syllabus I want to see #define Syl_DEFAULT_WHICH_SYLLABUS Syl_LECTURES @@ -88,9 +89,11 @@ struct Syl_Syllabus void Syl_ResetSyllabus (struct Syl_Syllabus *Syllabus); Syl_WhichSyllabus_t Syl_GetParWhichSyllabus (void); +void Syl_PutParWhichSyllabus (void *SyllabusSelected); +void Syl_PutFormWhichSyllabus (Syl_WhichSyllabus_t WhichSyllabus); bool Syl_CheckSyllabus (struct Syl_Syllabus *Syllabus,long CrsCod); -bool Syl_CheckAndEditSyllabus (struct Syl_Syllabus *Syllabus); +bool Syl_CheckAndShowSyllabus (struct Syl_Syllabus *Syllabus); void Syl_EditSyllabus (void); void Syl_LoadListItemsSyllabusIntoMemory (struct Syl_Syllabus *Syllabus, diff --git a/swad_tab.c b/swad_tab.c index 7f18b4ff..d7578a88 100644 --- a/swad_tab.c +++ b/swad_tab.c @@ -228,7 +228,7 @@ void Tab_SetCurrentTab (void) { if (Gbl.Hierarchy.Node[Hie_CTY].HieCod > 0) // Country selected, but no institution selected Gbl.Action.Act = ActSeeIns; - else // No country selected + else // No country selected Gbl.Action.Act = ActSeeCty; Gbl.Action.Tab = Act_GetTab (Gbl.Action.Act); } @@ -240,7 +240,7 @@ void Tab_SetCurrentTab (void) Gbl.Action.Act = ActSeeCtr; else if (Gbl.Hierarchy.Node[Hie_CTY].HieCod > 0) // Country selected, but no institution selected Gbl.Action.Act = ActSeeIns; - else // No country selected + else // No country selected Gbl.Action.Act = ActSeeCty; Gbl.Action.Tab = Act_GetTab (Gbl.Action.Act); } @@ -254,7 +254,7 @@ void Tab_SetCurrentTab (void) Gbl.Action.Act = ActSeeCtr; else if (Gbl.Hierarchy.Node[Hie_CTY].HieCod > 0) // Country selected, but no institution selected Gbl.Action.Act = ActSeeIns; - else // No country selected + else // No country selected Gbl.Action.Act = ActSeeCty; Gbl.Action.Tab = Act_GetTab (Gbl.Action.Act); } diff --git a/swad_text.c b/swad_text.c index cd5a6d36..abea9117 100644 --- a/swad_text.c +++ b/swad_text.c @@ -20200,22 +20200,6 @@ const char *Txt_MENU_NAMES[Mnu_NUM_MENUS] = const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = { -[TabUnk] = - { - NULL, // 0 - NULL, // 1 - NULL, // 2 - NULL, // 3 - NULL, // 4 - NULL, // 5 - NULL, // 6 - NULL, // 7 - NULL, // 8 - NULL, // 9 - NULL, // 10 - NULL, // 11 - NULL, // 12 - }, [TabStr] = { // 0: ActFrmLogIn @@ -20355,14 +20339,6 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = #elif L==10 // tr "Bildirimler" #endif - , - NULL, // 6 - NULL, // 7 - NULL, // 8 - NULL, // 9 - NULL, // 10 - NULL, // 11 - NULL, // 12 }, [TabSys] = { @@ -20503,14 +20479,6 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = #elif L==10 // tr "Bakım onarım" #endif - , - NULL, // 6 - NULL, // 7 - NULL, // 8 - NULL, // 9 - NULL, // 10 - NULL, // 11 - NULL, // 12 }, [TabCty] = { @@ -20559,18 +20527,6 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = #elif L==10 // tr "Kurumlar" #endif - , - NULL, // 2 - NULL, // 3 - NULL, // 4 - NULL, // 5 - NULL, // 6 - NULL, // 7 - NULL, // 8 - NULL, // 9 - NULL, // 10 - NULL, // 11 - NULL, // 12 }, [TabIns] = { @@ -20688,15 +20644,6 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = #elif L==10 // tr "Bayram" #endif - , - NULL, // 5 - NULL, // 6 - NULL, // 7 - NULL, // 8 - NULL, // 9 - NULL, // 10 - NULL, // 11 - NULL, // 12 }, [TabCtr] = { @@ -20791,16 +20738,6 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = #elif L==10 // tr "Odalar" #endif - , - NULL, // 4 - NULL, // 5 - NULL, // 6 - NULL, // 7 - NULL, // 8 - NULL, // 9 - NULL, // 10 - NULL, // 11 - NULL, // 12 }, [TabDeg] = { @@ -20849,18 +20786,6 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = #elif L==10 // tr "Dersler" #endif - , - NULL, // 2 - NULL, // 3 - NULL, // 4 - NULL, // 5 - NULL, // 6 - NULL, // 7 - NULL, // 8 - NULL, // 9 - NULL, // 10 - NULL, // 11 - NULL, // 12 }, [TabCrs] = { @@ -21070,11 +20995,6 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = #elif L==10 // tr "Programı" #endif - , - NULL, // 9 - NULL, // 10 - NULL, // 11 - NULL, // 12 }, [TabAss] = { @@ -21261,12 +21181,6 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = #elif L==10 // tr "Değerlendirme" #endif - , - NULL, // 8 - NULL, // 9 - NULL, // 10 - NULL, // 11 - NULL, // 12 }, [TabFil] = { @@ -21754,12 +21668,6 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = #elif L==10 // tr "Bağlı" #endif - , - NULL, // 8 - NULL, // 9 - NULL, // 10 - NULL, // 11 - NULL, // 12 }, [TabMsg] = { @@ -21900,14 +21808,6 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = #elif L==10 // tr "E-posta" #endif - , - NULL, // 6 - NULL, // 7 - NULL, // 8 - NULL, // 9 - NULL, // 10 - NULL, // 11 - NULL, // 12 }, [TabAna] = { @@ -22071,13 +21971,6 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = #elif L==10 // tr "Sık" #endif - , - NULL, // 7 - NULL, // 8 - NULL, // 9 - NULL, // 10 - NULL, // 11 - NULL, // 12 }, [TabPrf] = { @@ -22241,13 +22134,6 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = #elif L==10 // tr "Ayarlar" #endif - , - NULL, // 7 - NULL, // 8 - NULL, // 9 - NULL, // 10 - NULL, // 11 - NULL, // 12 } }; @@ -45641,6 +45527,9 @@ const char *Txt_Syllabus_of_the_course = const char *Txt_SYLLABUS_WHICH_SYLLABUS[Syl_NUM_WHICH_SYLLABUS] = { + [Syl_NONE] = + "" + , [Syl_LECTURES] = #if L==1 // ca "Teoria"