Version 23.70: Mar 19, 2024 Code refactoring and bug fixing in syllabus.

This commit is contained in:
acanas 2024-03-19 18:39:35 +01:00
parent e84bf1b504
commit f3d16e64c3
14 changed files with 2075 additions and 2167 deletions

View File

@ -110,8 +110,7 @@ void MFU_GetMFUActions (struct MFU_ListMFUActions *ListMFUActions,unsigned MaxAc
{ {
/* Get action code */ /* Get action code */
ActCod = DB_GetNextCode (mysql_res); ActCod = DB_GetNextCode (mysql_res);
if (ActCod >= 0 && ActCod <= ActLst_MAX_ACTION_COD) if ((Action = Act_GetActionFromActCod (ActCod)) != ActUnk)
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_GetIndexInMenu (Action) >= 0) // MFU actions must be only actions shown on menu (database could contain wrong action numbers)
if (Act_CheckIfIHavePermissionToExecuteAction (Action)) if (Act_CheckIfIHavePermissionToExecuteAction (Action))
ListMFUActions->Actions[ListMFUActions->NumActions++] = Action; ListMFUActions->Actions[ListMFUActions->NumActions++] = Action;
@ -148,7 +147,7 @@ Act_Action_t MFU_GetMyLastActionInCurrentTab (void)
ActCod = DB_GetNextCode (mysql_res); ActCod = DB_GetNextCode (mysql_res);
if (ActCod >= 0 && ActCod <= ActLst_MAX_ACTION_COD) if (ActCod >= 0 && ActCod <= ActLst_MAX_ACTION_COD)
if ((Action = Act_GetActionFromActCod (ActCod)) >= 0) 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)) if (Act_CheckIfIHavePermissionToExecuteAction (Action))
{ {
MoreRecentActionInCurrentTab = Action; MoreRecentActionInCurrentTab = Action;
@ -213,7 +212,7 @@ void MFU_WriteBigMFUActions (struct MFU_ListMFUActions *ListMFUActions)
if ((Title = Act_GetTitleAction (Action)) != NULL) if ((Title = Act_GetTitleAction (Action)) != NULL)
{ {
/* Action string */ /* Action string */
Str_Copy (TabStr,Tab_GetTxt (Act_GetTab (Act_GetSuperAction (Action))), Str_Copy (TabStr,Tab_GetTxt (Act_GetTab (Action)),
sizeof (TabStr) - 1); sizeof (TabStr) - 1);
Str_Copy (MenuStr,Title,sizeof (MenuStr) - 1); Str_Copy (MenuStr,Title,sizeof (MenuStr) - 1);
snprintf (TabMenuStr,sizeof (TabMenuStr),"%s &gt; %s",TabStr,MenuStr); snprintf (TabMenuStr,sizeof (TabMenuStr),"%s &gt; %s",TabStr,MenuStr);
@ -271,7 +270,7 @@ void MFU_WriteSmallMFUActions (struct MFU_ListMFUActions *ListMFUActions)
if ((Title = Act_GetTitleAction (Action)) != NULL) if ((Title = Act_GetTitleAction (Action)) != NULL)
{ {
/* Action string */ /* Action string */
Str_Copy (TabStr,Tab_GetTxt (Act_GetTab (Act_GetSuperAction (Action))), Str_Copy (TabStr,Tab_GetTxt (Act_GetTab (Action)),
sizeof (TabStr) - 1); sizeof (TabStr) - 1);
Str_Copy (MenuStr,Title,sizeof (MenuStr) - 1); Str_Copy (MenuStr,Title,sizeof (MenuStr) - 1);
snprintf (TabMenuStr,sizeof (TabMenuStr),"%s &gt; %s",TabStr,MenuStr); snprintf (TabMenuStr,sizeof (TabMenuStr),"%s &gt; %s",TabStr,MenuStr);

View File

@ -47,10 +47,10 @@ Act_Action_t Act_GetActionFromActCod (long ActCod)
{ {
extern Act_Action_t ActLst_FromActCodToAction[1 + ActLst_MAX_ACTION_COD]; extern Act_Action_t ActLst_FromActCodToAction[1 + ActLst_MAX_ACTION_COD];
if (ActCod >= 0 && ActCod <= ActLst_MAX_ACTION_COD) if (ActCod < 0 || ActCod > ActLst_MAX_ACTION_COD)
return ActLst_FromActCodToAction[ActCod];
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) const char *Act_GetTitleAction (Act_Action_t Action)
{ {
extern const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB]; 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) if ((unsigned) Action >= ActLst_NUM_ACTIONS)
return NULL; 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];
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -29,20 +29,18 @@
typedef enum typedef enum
{ {
ActAll, /********************************* No tab *********************************/
ActAll,
ActUnk, ActUnk,
ActMnu, ActMnu,
ActRefCon, ActRefCon,
ActWebSvc, ActWebSvc,
/*****************************************************************************/ /******************************* Start tab ********************************/
/********************************* Start tab *********************************/
/*****************************************************************************/ // Log in ------------------------------------------------------------------
// Log in
ActFrmLogIn, ActFrmLogIn,
ActLogIn, ActLogIn,
ActLogInNew, ActLogInNew,
@ -52,11 +50,13 @@ typedef enum
ActSndNewPwd, ActSndNewPwd,
ActLogOut, ActLogOut,
// Search // Search ------------------------------------------------------------------
ActReqSch, ActReqSch,
ActSch, ActSch,
// Timeline // Timeline ----------------------------------------------------------------
ActSeeGblTL, ActSeeGblTL,
ActRefNewPubGblTL, ActRefNewPubGblTL,
ActRefOldPubGblTL, ActRefOldPubGblTL,
@ -77,7 +77,8 @@ typedef enum
ActReqRemComGblTL, ActReqRemComGblTL,
ActRemComGblTL, ActRemComGblTL,
// Profiles // Profiles ----------------------------------------------------------------
ActSeeSocPrf, ActSeeSocPrf,
ActReqOthPubPrf, ActReqOthPubPrf,
ActRefOldPubUsrTL, ActRefOldPubUsrTL,
@ -105,12 +106,14 @@ typedef enum
ActSeeFlr, ActSeeFlr,
ActSeeUsrAgd, ActSeeUsrAgd,
// Calendar // Calendar ----------------------------------------------------------------
ActSeeCal, ActSeeCal,
ActPrnCal, ActPrnCal,
ActChgCal1stDay, ActChgCal1stDay,
// Notifications // Notifications -----------------------------------------------------------
ActSeeNtf, ActSeeNtf,
ActSeeNewNtf, ActSeeNewNtf,
ActMrkNtfSee, ActMrkNtfSee,
@ -121,15 +124,15 @@ typedef enum
ActRenMaiSho, ActRenMaiSho,
ActRenMaiFul, ActRenMaiFul,
/*****************************************************************************/ /****************************** System tab ********************************/
/******************************** System tab *********************************/
/*****************************************************************************/ // System info -------------------------------------------------------------
// System info
ActSeeSysInf, ActSeeSysInf,
ActPrnSysInf, ActPrnSysInf,
// Countries // Countries ---------------------------------------------------------------
ActSeeCty, ActSeeCty,
ActEdiCty, ActEdiCty,
ActNewCty, ActNewCty,
@ -137,10 +140,12 @@ typedef enum
ActRenCty, ActRenCty,
ActChgCtyWWW, ActChgCtyWWW,
// Pending // Pending -----------------------------------------------------------------
ActSeePen, ActSeePen,
// Links // Links -------------------------------------------------------------------
ActSeeLnk, ActSeeLnk,
ActEdiLnk, ActEdiLnk,
ActNewLnk, ActNewLnk,
@ -160,7 +165,8 @@ typedef enum
ActChgBanWWW, ActChgBanWWW,
ActClkBan, ActClkBan,
// Plugins // Plugins -----------------------------------------------------------------
ActSeePlg, ActSeePlg,
ActEdiPlg, ActEdiPlg,
ActNewPlg, ActNewPlg,
@ -172,22 +178,23 @@ typedef enum
ActChgPlgURL, ActChgPlgURL,
ActChgPlgIP, ActChgPlgIP,
// Maintenance // Maintenance -------------------------------------------------------------
ActMtn, ActMtn,
ActSetUp, ActSetUp,
ActReqRemOldCrs, ActReqRemOldCrs,
ActRemOldCrs, ActRemOldCrs,
/*****************************************************************************/ /****************************** Country tab *******************************/
/******************************** Country tab ********************************/
/*****************************************************************************/ // Country info ------------------------------------------------------------
// Country info
ActSeeCtyInf, ActSeeCtyInf,
ActPrnCtyInf, ActPrnCtyInf,
ActChgCtyMapAtt, ActChgCtyMapAtt,
// Institutions // Institutions ------------------------------------------------------------
ActSeeIns, ActSeeIns,
ActEdiIns, ActEdiIns,
ActReqIns, ActReqIns,
@ -198,11 +205,10 @@ typedef enum
ActChgInsWWW, ActChgInsWWW,
ActChgInsSta, ActChgInsSta,
/*****************************************************************************/ /**************************** Institution tab *****************************/
/****************************** Institution tab ******************************/
/*****************************************************************************/ // Institution info --------------------------------------------------------
// Institution info
ActSeeInsInf, ActSeeInsInf,
ActPrnInsInf, ActPrnInsInf,
ActChgInsCtyCfg, ActChgInsCtyCfg,
@ -213,7 +219,8 @@ typedef enum
ActRecInsLog, ActRecInsLog,
ActRemInsLog, ActRemInsLog,
// Centers // Centers -----------------------------------------------------------------
ActSeeCtr, ActSeeCtr,
ActEdiCtr, ActEdiCtr,
ActReqCtr, ActReqCtr,
@ -225,7 +232,8 @@ typedef enum
ActChgCtrWWW, ActChgCtrWWW,
ActChgCtrSta, ActChgCtrSta,
// Places // Places ------------------------------------------------------------------
ActSeePlc, ActSeePlc,
ActEdiPlc, ActEdiPlc,
ActNewPlc, ActNewPlc,
@ -233,7 +241,8 @@ typedef enum
ActRenPlcSho, ActRenPlcSho,
ActRenPlcFul, ActRenPlcFul,
// Departments // Departments -------------------------------------------------------------
ActSeeDpt, ActSeeDpt,
ActEdiDpt, ActEdiDpt,
ActNewDpt, ActNewDpt,
@ -243,7 +252,8 @@ typedef enum
ActRenDptFul, ActRenDptFul,
ActChgDptWWW, ActChgDptWWW,
// Holidays // Holidays ----------------------------------------------------------------
ActSeeHld, ActSeeHld,
ActEdiHld, ActEdiHld,
ActNewHld, ActNewHld,
@ -254,11 +264,10 @@ typedef enum
ActChgHldEndDat, ActChgHldEndDat,
ActRenHld, ActRenHld,
/*****************************************************************************/ /******************************* Center tab *******************************/
/********************************* Center tab ********************************/
/*****************************************************************************/ // Center info -------------------------------------------------------------
// Center info
ActSeeCtrInf, ActSeeCtrInf,
ActPrnCtrInf, ActPrnCtrInf,
ActChgCtrInsCfg, ActChgCtrInsCfg,
@ -276,7 +285,8 @@ typedef enum
ActRecCtrPho, ActRecCtrPho,
ActChgCtrPhoAtt, ActChgCtrPhoAtt,
// Degrees // Degrees -----------------------------------------------------------------
ActSeeDeg, ActSeeDeg,
ActEdiDeg, ActEdiDeg,
ActReqDeg, ActReqDeg,
@ -293,7 +303,8 @@ typedef enum
ActRemDegTyp, ActRemDegTyp,
ActRenDegTyp, ActRenDegTyp,
// Buildings // Buildings ---------------------------------------------------------------
ActSeeBld, ActSeeBld,
ActEdiBld, ActEdiBld,
ActNewBld, ActNewBld,
@ -302,7 +313,8 @@ typedef enum
ActRenBldFul, ActRenBldFul,
ActRenBldLoc, ActRenBldLoc,
// Rooms // Rooms -------------------------------------------------------------------
ActSeeRoo, ActSeeRoo,
ActEdiRoo, ActEdiRoo,
ActNewRoo, ActNewRoo,
@ -315,10 +327,10 @@ typedef enum
ActChgRooMaxUsr, ActChgRooMaxUsr,
ActChgRooMAC, ActChgRooMAC,
/*****************************************************************************/ /******************************* Degree tab *******************************/
/********************************* Degree tab ********************************/
/*****************************************************************************/ // Degree info -------------------------------------------------------------
// Degree info
ActSeeDegInf, ActSeeDegInf,
ActPrnDegInf, ActPrnDegInf,
ActChgDegCtrCfg, ActChgDegCtrCfg,
@ -329,7 +341,8 @@ typedef enum
ActRecDegLog, ActRecDegLog,
ActRemDegLog, ActRemDegLog,
// Courses // Courses -----------------------------------------------------------------
ActSeeCrs, ActSeeCrs,
ActEdiCrs, ActEdiCrs,
ActReqCrs, ActReqCrs,
@ -341,11 +354,10 @@ typedef enum
ActRenCrsFul, ActRenCrsFul,
ActChgCrsSta, ActChgCrsSta,
/*****************************************************************************/ /****************************** Course tab ********************************/
/******************************** Course tab *********************************/
/*****************************************************************************/ // Course info -------------------------------------------------------------
// Course info
ActSeeCrsInf, ActSeeCrsInf,
ActPrnCrsInf, ActPrnCrsInf,
ActChgCrsDegCfg, ActChgCrsDegCfg,
@ -365,7 +377,8 @@ typedef enum
ActRcvPlaTxtCrsInf, ActRcvPlaTxtCrsInf,
ActRcvRchTxtCrsInf, ActRcvRchTxtCrsInf,
// Program // Program -----------------------------------------------------------------
ActSeePrg, ActSeePrg,
ActEdiPrg, ActEdiPrg,
ActSeePrgItm, ActSeePrgItm,
@ -400,7 +413,8 @@ typedef enum
ActFrmChgLnkPrgRsc, ActFrmChgLnkPrgRsc,
ActChgLnkPrgRsc, ActChgLnkPrgRsc,
// Teaching guide // Teaching guide ----------------------------------------------------------
ActSeeTchGui, ActSeeTchGui,
ActEdiTchGui, ActEdiTchGui,
ActChgFrcReaTchGui, ActChgFrcReaTchGui,
@ -414,7 +428,8 @@ typedef enum
ActRcvPlaTxtTchGui, ActRcvPlaTxtTchGui,
ActRcvRchTxtTchGui, ActRcvRchTxtTchGui,
// Syllabus // Syllabus ----------------------------------------------------------------
ActSeeSyl, ActSeeSyl,
ActSeeSylLec, ActSeeSylLec,
ActSeeSylPra, ActSeeSylPra,
@ -455,7 +470,8 @@ typedef enum
ActRcvRchTxtSylLec, ActRcvRchTxtSylLec,
ActRcvRchTxtSylPra, ActRcvRchTxtSylPra,
// Bibliography // Bibliography ------------------------------------------------------------
ActSeeBib, ActSeeBib,
ActEdiBib, ActEdiBib,
ActChgFrcReaBib, ActChgFrcReaBib,
@ -469,7 +485,8 @@ typedef enum
ActRcvPlaTxtBib, ActRcvPlaTxtBib,
ActRcvRchTxtBib, ActRcvRchTxtBib,
// FAQ // FAQ ---------------------------------------------------------------------
ActSeeFAQ, ActSeeFAQ,
ActEdiFAQ, ActEdiFAQ,
ActChgFrcReaFAQ, ActChgFrcReaFAQ,
@ -483,7 +500,8 @@ typedef enum
ActRcvPlaTxtFAQ, ActRcvPlaTxtFAQ,
ActRcvRchTxtFAQ, ActRcvRchTxtFAQ,
// Links // Links -------------------------------------------------------------------
ActSeeCrsLnk, ActSeeCrsLnk,
ActEdiCrsLnk, ActEdiCrsLnk,
ActChgFrcReaCrsLnk, ActChgFrcReaCrsLnk,
@ -497,7 +515,8 @@ typedef enum
ActRcvPlaTxtCrsLnk, ActRcvPlaTxtCrsLnk,
ActRcvRchTxtCrsLnk, ActRcvRchTxtCrsLnk,
// Assessment // Assessment --------------------------------------------------------------
ActSeeAss, ActSeeAss,
ActEdiAss, ActEdiAss,
ActChgFrcReaAss, ActChgFrcReaAss,
@ -511,18 +530,18 @@ typedef enum
ActRcvPlaTxtAss, ActRcvPlaTxtAss,
ActRcvRchTxtAss, ActRcvRchTxtAss,
// Timetable // Timetable ---------------------------------------------------------------
ActSeeCrsTT, ActSeeCrsTT,
ActPrnCrsTT, ActPrnCrsTT,
ActEdiCrsTT, ActEdiCrsTT,
ActChgCrsTT, ActChgCrsTT,
ActChgCrsTT1stDay, ActChgCrsTT1stDay,
/*****************************************************************************/ /*************************** Assessment tab *******************************/
/***************************** Assessment tab ********************************/
/*****************************************************************************/ // Assignments -------------------------------------------------------------
// Assignments
ActSeeAllAsg, ActSeeAllAsg,
ActFrmNewAsg, ActFrmNewAsg,
ActEdiOneAsg, ActEdiOneAsg,
@ -536,7 +555,8 @@ typedef enum
ActUnhAsg, ActUnhAsg,
ActReqLnkAsg, ActReqLnkAsg,
// Projects // Projects ----------------------------------------------------------------
ActSeeAllPrj, ActSeeAllPrj,
ActCfgPrj, ActCfgPrj,
ActChgNETCanCrePrj, ActChgNETCanCrePrj,
@ -613,7 +633,8 @@ typedef enum
ActChgDatAssPrj, ActChgDatAssPrj,
ActDowAssPrj, ActDowAssPrj,
// Calls for exams // Calls for exams ---------------------------------------------------------
ActSeeAllCfe, ActSeeAllCfe,
ActSeeOneCfe, ActSeeOneCfe,
ActSeeDatCfe, ActSeeDatCfe,
@ -626,7 +647,8 @@ typedef enum
ActUnhCfe, ActUnhCfe,
ActReqLnkCfe, ActReqLnkCfe,
// Questions // Questions ---------------------------------------------------------------
ActEdiTstQst, ActEdiTstQst,
ActEdiOneTstQst, ActEdiOneTstQst,
ActReqImpTstQst, ActReqImpTstQst,
@ -644,7 +666,8 @@ typedef enum
ActDisTag, ActDisTag,
ActRenTag, ActRenTag,
// Test // Test --------------------------------------------------------------------
ActReqTst, ActReqTst,
ActSeeTst, ActSeeTst,
ActReqAssTst, ActReqAssTst,
@ -658,7 +681,8 @@ typedef enum
ActSeeUsrTstResCrs, ActSeeUsrTstResCrs,
ActSeeOneTstResOth, ActSeeOneTstResOth,
// Exams // Exams -------------------------------------------------------------------
ActSeeAllExa, ActSeeAllExa,
ActSeeOneExa, ActSeeOneExa,
ActFrmNewExa, ActFrmNewExa,
@ -706,7 +730,8 @@ typedef enum
ActSeeOneExaResOth, ActSeeOneExaResOth,
ActChgVisExaRes, ActChgVisExaRes,
// Games // Games -------------------------------------------------------------------
ActSeeAllGam, ActSeeAllGam,
ActSeeOneGam, ActSeeOneGam,
ActReqNewMch, ActReqNewMch,
@ -756,7 +781,8 @@ typedef enum
ActDwnGamQst, ActDwnGamQst,
ActReqLnkGam, ActReqLnkGam,
// Rubrics // Rubrics -----------------------------------------------------------------
ActSeeAllRub, ActSeeAllRub,
ActSeeOneRub, ActSeeOneRub,
ActFrmNewRub, ActFrmNewRub,
@ -779,11 +805,10 @@ typedef enum
ActChgMaxRubCri, ActChgMaxRubCri,
ActChgWeiRubCri, ActChgWeiRubCri,
/*****************************************************************************/ /****************************** Files tab *********************************/
/******************************** Files tab **********************************/
/*****************************************************************************/ // Documents of institution ------------------------------------------------
// Documents of institution
ActSeeAdmDocIns, ActSeeAdmDocIns,
ActChgToSeeDocIns, ActChgToSeeDocIns,
ActSeeDocIns, ActSeeDocIns,
@ -815,7 +840,8 @@ typedef enum
ActChgDatAdmDocIns, ActChgDatAdmDocIns,
ActDowAdmDocIns, ActDowAdmDocIns,
// Shared files of institution // Shared files of institution ---------------------------------------------
ActAdmShaIns, ActAdmShaIns,
ActReqRemFilShaIns, ActReqRemFilShaIns,
ActRemFilShaIns, ActRemFilShaIns,
@ -836,7 +862,8 @@ typedef enum
ActChgDatShaIns, ActChgDatShaIns,
ActDowShaIns, ActDowShaIns,
// Documents of center // Documents of center -----------------------------------------------------
ActSeeAdmDocCtr, ActSeeAdmDocCtr,
ActChgToSeeDocCtr, ActChgToSeeDocCtr,
ActSeeDocCtr, ActSeeDocCtr,
@ -868,7 +895,8 @@ typedef enum
ActChgDatAdmDocCtr, ActChgDatAdmDocCtr,
ActDowAdmDocCtr, ActDowAdmDocCtr,
// Shared files of center // Shared files of center --------------------------------------------------
ActAdmShaCtr, ActAdmShaCtr,
ActReqRemFilShaCtr, ActReqRemFilShaCtr,
ActRemFilShaCtr, ActRemFilShaCtr,
@ -889,7 +917,8 @@ typedef enum
ActChgDatShaCtr, ActChgDatShaCtr,
ActDowShaCtr, ActDowShaCtr,
// Deocuments of degree // Documents of degree -----------------------------------------------------
ActSeeAdmDocDeg, ActSeeAdmDocDeg,
ActChgToSeeDocDeg, ActChgToSeeDocDeg,
ActSeeDocDeg, ActSeeDocDeg,
@ -921,7 +950,8 @@ typedef enum
ActChgDatAdmDocDeg, ActChgDatAdmDocDeg,
ActDowAdmDocDeg, ActDowAdmDocDeg,
// Shared files of degree // Shared files of degree --------------------------------------------------
ActAdmShaDeg, ActAdmShaDeg,
ActReqRemFilShaDeg, ActReqRemFilShaDeg,
ActRemFilShaDeg, ActRemFilShaDeg,
@ -942,7 +972,8 @@ typedef enum
ActChgDatShaDeg, ActChgDatShaDeg,
ActDowShaDeg, ActDowShaDeg,
// Documents of course // Documents of course -----------------------------------------------------
ActSeeAdmDocCrsGrp, ActSeeAdmDocCrsGrp,
ActChgToSeeDocCrs, ActChgToSeeDocCrs,
ActSeeDocCrs, ActSeeDocCrs,
@ -1003,7 +1034,8 @@ typedef enum
ActChgDatAdmDocGrp, ActChgDatAdmDocGrp,
ActDowAdmDocGrp, ActDowAdmDocGrp,
// Private documents for course teachers // Private documents for course teachers -----------------------------------
ActAdmTchCrsGrp, ActAdmTchCrsGrp,
ActChgToAdmTch, ActChgToAdmTch,
ActAdmTchCrs, ActAdmTchCrs,
@ -1045,7 +1077,8 @@ typedef enum
ActChgDatTchGrp, ActChgDatTchGrp,
ActDowTchGrp, ActDowTchGrp,
// Shared files of course // Shared files of course --------------------------------------------------
ActAdmShaCrsGrp, ActAdmShaCrsGrp,
ActChgToAdmSha, ActChgToAdmSha,
ActAdmShaCrs, ActAdmShaCrs,
@ -1087,7 +1120,8 @@ typedef enum
ActChgDatShaGrp, ActChgDatShaGrp,
ActDowShaGrp, ActDowShaGrp,
// Assignments and works of user // Assignments and works of user -------------------------------------------
ActAdmAsgWrkUsr, ActAdmAsgWrkUsr,
ActReqRemFilAsgUsr, ActReqRemFilAsgUsr,
ActRemFilAsgUsr, ActRemFilAsgUsr,
@ -1126,7 +1160,8 @@ typedef enum
ActChgDatWrkUsr, ActChgDatWrkUsr,
ActDowWrkUsr, ActDowWrkUsr,
// Assignments and works of course // Assignments and works of course -----------------------------------------
ActReqAsgWrkCrs, ActReqAsgWrkCrs,
ActAdmAsgWrkCrs, ActAdmAsgWrkCrs,
ActReqRemFilAsgCrs, ActReqRemFilAsgCrs,
@ -1166,7 +1201,8 @@ typedef enum
ActChgDatWrkCrs, ActChgDatWrkCrs,
ActDowWrkCrs, ActDowWrkCrs,
// Marks // Marks -------------------------------------------------------------------
ActSeeAdmMrk, ActSeeAdmMrk,
ActChgToSeeMrk, ActChgToSeeMrk,
ActSeeMrkCrs, ActSeeMrkCrs,
@ -1227,7 +1263,8 @@ typedef enum
ActChgNumRowHeaGrp, ActChgNumRowHeaGrp,
ActChgNumRowFooGrp, ActChgNumRowFooGrp,
// Briefcase // Briefcase ---------------------------------------------------------------
ActAdmBrf, ActAdmBrf,
ActReqRemFilBrf, ActReqRemFilBrf,
ActRemFilBrf, ActRemFilBrf,
@ -1250,11 +1287,10 @@ typedef enum
ActReqRemOldBrf, ActReqRemOldBrf,
ActRemOldBrf, ActRemOldBrf,
/*****************************************************************************/ /***************************** Users tab **********************************/
/******************************* Users tab ***********************************/
/*****************************************************************************/ // Groups ------------------------------------------------------------------
// Groups
ActReqSelGrp, ActReqSelGrp,
ActChgGrp, ActChgGrp,
ActReqEdiGrp, ActReqEdiGrp,
@ -1277,7 +1313,8 @@ typedef enum
ActChgGrpRoo, ActChgGrpRoo,
ActChgMaxStdGrp, ActChgMaxStdGrp,
// Students // Students ----------------------------------------------------------------
ActLstStd, ActLstStd,
ActLstStdAll, ActLstStdAll,
ActPrnStdPho, ActPrnStdPho,
@ -1325,7 +1362,8 @@ typedef enum
ActChgVisFie, ActChgVisFie,
ActRcvRecCrs, ActRcvRecCrs,
// Teachers // Teachers ----------------------------------------------------------------
ActLstTch, ActLstTch,
ActLstTchAll, ActLstTchAll,
ActPrnTchPho, ActPrnTchPho,
@ -1374,7 +1412,8 @@ typedef enum
ActLogInUsrAgd, ActLogInUsrAgd,
ActLogInUsrAgdLan, ActLogInUsrAgdLan,
// Others // Others ------------------------------------------------------------------
ActLstOth, ActLstOth,
ActNewAdmIns, ActNewAdmIns,
ActRemAdmIns, ActRemAdmIns,
@ -1413,7 +1452,8 @@ typedef enum
ActLstSimUsr, ActLstSimUsr,
ActRemDupUsr, ActRemDupUsr,
// Attendance // Attendance --------------------------------------------------------------
ActSeeAllAtt, ActSeeAllAtt,
ActReqLstUsrAtt, ActReqLstUsrAtt,
ActSeeLstMyAtt, ActSeeLstMyAtt,
@ -1433,23 +1473,26 @@ typedef enum
ActRecAttStd, ActRecAttStd,
ActRecAttMe, ActRecAttMe,
// Sign up // Sign up -----------------------------------------------------------------
ActReqSignUp, ActReqSignUp,
ActSignUp, ActSignUp,
// Requests // Requests ----------------------------------------------------------------
ActSeeSignUpReq, ActSeeSignUpReq,
ActUpdSignUpReq, ActUpdSignUpReq,
ActReqRejSignUp, ActReqRejSignUp,
ActRejSignUp, ActRejSignUp,
// Connected // Connected ---------------------------------------------------------------
ActLstCon, ActLstCon,
/*****************************************************************************/ /***************************** Messages tab *******************************/
/******************************* Messages tab ********************************/
/*****************************************************************************/ // Announcements -----------------------------------------------------------
// Announcements
ActSeeAnn, ActSeeAnn,
ActWriAnn, ActWriAnn,
ActNewAnn, ActNewAnn,
@ -1457,7 +1500,8 @@ typedef enum
ActUnhAnn, ActUnhAnn,
ActRemAnn, ActRemAnn,
// Notices // Notices -----------------------------------------------------------------
ActSeeAllNot, ActSeeAllNot,
ActSeeOneNot, ActSeeOneNot,
ActWriNot, ActWriNot,
@ -1467,7 +1511,8 @@ typedef enum
ActReqRemNot, ActReqRemNot,
ActRemNot, ActRemNot,
// Forums // Forums ------------------------------------------------------------------
ActSeeFor, ActSeeFor,
ActSeeForCrsUsr, ActSeeForCrsUsr,
ActSeeForCrsTch, ActSeeForCrsTch,
@ -1603,11 +1648,13 @@ typedef enum
ActDisPstForSWATch, ActDisPstForSWATch,
ActReqLnkForCrsUsr, ActReqLnkForCrsUsr,
// Chat // Chat --------------------------------------------------------------------
ActSeeChtRms, ActSeeChtRms,
ActCht, ActCht,
// Messages // Messages ----------------------------------------------------------------
ActSeeRcvMsg, ActSeeRcvMsg,
ActReqMsgUsr, ActReqMsgUsr,
ActSeeSntMsg, ActSeeSntMsg,
@ -1627,28 +1674,31 @@ typedef enum
ActUnbUsrMsg, ActUnbUsrMsg,
ActUnbUsrLst, ActUnbUsrLst,
// Mail // Mail --------------------------------------------------------------------
ActReqMaiUsr, ActReqMaiUsr,
ActMaiUsr, ActMaiUsr,
/*****************************************************************************/ /**************************** Analytics tab *******************************/
/****************************** Analytics tab ********************************/
/*****************************************************************************/ // Figures -----------------------------------------------------------------
// Figures
ActReqUseGbl, ActReqUseGbl,
ActSeeUseGbl, ActSeeUseGbl,
// Degrees // Degrees -----------------------------------------------------------------
ActSeePhoDeg, ActSeePhoDeg,
ActPrnPhoDeg, ActPrnPhoDeg,
ActCalPhoDeg, ActCalPhoDeg,
// Indicators // Indicators --------------------------------------------------------------
ActReqStaCrs, ActReqStaCrs,
ActSeeAllStaCrs, ActSeeAllStaCrs,
// Surveys // Surveys -----------------------------------------------------------------
ActSeeAllSvy, ActSeeAllSvy,
ActSeeOneSvy, ActSeeOneSvy,
ActAnsSvy, ActAnsSvy,
@ -1669,7 +1719,8 @@ typedef enum
ActReqRemSvyQst, ActReqRemSvyQst,
ActRemSvyQst, ActRemSvyQst,
// Visits // Visits ------------------------------------------------------------------
ActReqAccGbl, ActReqAccGbl,
ActSeeAccGbl, ActSeeAccGbl,
ActReqAccCrs, ActReqAccCrs,
@ -1677,32 +1728,36 @@ typedef enum
ActLstClk, ActLstClk,
ActRefLstClk, ActRefLstClk,
// Report // Report ------------------------------------------------------------------
ActReqMyUsgRep, ActReqMyUsgRep,
ActSeeMyUsgRep, ActSeeMyUsgRep,
// Frequent // Frequent ----------------------------------------------------------------
ActMFUAct, ActMFUAct,
/*****************************************************************************/ /****************************** Profile tab *******************************/
/******************************** Profile tab ********************************/
/*****************************************************************************/ // Session -----------------------------------------------------------------
// Session
ActFrmRolSes, ActFrmRolSes,
ActChgMyRol, ActChgMyRol,
// Courses // Courses -----------------------------------------------------------------
ActMyCrs, ActMyCrs,
// Timetable // Timetable ---------------------------------------------------------------
ActSeeMyTT, ActSeeMyTT,
ActPrnMyTT, ActPrnMyTT,
ActEdiTut, ActEdiTut,
ActChgTut, ActChgTut,
ActChgMyTT1stDay, ActChgMyTT1stDay,
// Agenda // Agenda ------------------------------------------------------------------
ActSeeMyAgd, ActSeeMyAgd,
ActFrmNewEvtMyAgd, ActFrmNewEvtMyAgd,
ActEdiOneEvtMyAgd, ActEdiOneEvtMyAgd,
@ -1716,7 +1771,8 @@ typedef enum
ActPubEvtMyAgd, ActPubEvtMyAgd,
ActPrnAgdQR, ActPrnAgdQR,
// Account // Account -----------------------------------------------------------------
ActFrmMyAcc, ActFrmMyAcc,
ActChkUsrAcc, ActChkUsrAcc,
ActCreMyAcc, ActCreMyAcc,
@ -1733,7 +1789,8 @@ typedef enum
ActRemMyAcc, ActRemMyAcc,
ActPrnUsrQR, ActPrnUsrQR,
// Record // Record ------------------------------------------------------------------
ActReqEdiRecSha, ActReqEdiRecSha,
ActChgMyData, ActChgMyData,
ActReqMyPho, ActReqMyPho,
@ -1750,7 +1807,8 @@ typedef enum
ActReqEdiMyNet, ActReqEdiMyNet,
ActChgMyNet, ActChgMyNet,
// Settings // Settings ----------------------------------------------------------------
ActReqEdiSet, ActReqEdiSet,
ActChgThe, ActChgThe,
ActReqChgLan, ActReqChgLan,
@ -1766,6 +1824,7 @@ typedef enum
ActChgExtPriPrf, ActChgExtPriPrf,
ActChgCooPrf, ActChgCooPrf,
ActChgNtfPrf, ActChgNtfPrf,
} Act_Action_t; } Act_Action_t;
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------

View File

@ -633,10 +633,11 @@ Me sale este error, no s
"can npt create received message (duplicated entry '243218-2160773' for key 'UsrCod_MsgCod') "can npt create received message (duplicated entry '243218-2160773' for key 'UsrCod_MsgCod')
*/ */
#define Log_PLATFORM_VERSION "SWAD 23.69 (2024-03-14)" #define Log_PLATFORM_VERSION "SWAD 23.70 (2024-03-19)"
#define CSS_FILE "swad23.67.2.css" #define CSS_FILE "swad23.67.2.css"
#define JS_FILE "swad23.53.6.js" #define JS_FILE "swad23.53.6.js"
/* /*
Version 23.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.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.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) Version 23.68: Mar 14, 2024 New order in list of actions. (335700 lines)

View File

@ -83,17 +83,17 @@ void Frm_BeginFormGoTo (Act_Action_t NextAction)
void Frm_BeginForm (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) 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) 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) void Frm_BeginFormAnchorOnSubmit (Act_Action_t NextAction,const char *Anchor,const char *OnSubmit)

View File

@ -54,22 +54,6 @@
extern struct Globals Gbl; 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 *****************************/ /***************************** Private constants *****************************/
/*****************************************************************************/ /*****************************************************************************/
@ -244,7 +228,6 @@ void Inf_ShowInfo (void)
case Rol_NET: case Rol_NET:
case Rol_TCH: case Rol_TCH:
case Rol_SYS_ADM: case Rol_SYS_ADM:
/* Put */
if (FromDB.Src != Inf_NONE) if (FromDB.Src != Inf_NONE)
{ {
/***** Contextual menu *****/ /***** Contextual menu *****/
@ -259,6 +242,9 @@ void Inf_ShowInfo (void)
break; break;
} }
/****** Form to select syllabus *****/
Syl_PutFormWhichSyllabus (Syllabus.WhichSyllabus);
switch (FromDB.Src) switch (FromDB.Src)
{ {
case Inf_NONE: case Inf_NONE:
@ -269,7 +255,7 @@ void Inf_ShowInfo (void)
{ {
case Inf_LECTURES: case Inf_LECTURES:
case Inf_PRACTICALS: case Inf_PRACTICALS:
ShowWarningNoInfo = !Syl_CheckAndEditSyllabus (&Syllabus); ShowWarningNoInfo = !Syl_CheckAndShowSyllabus (&Syllabus);
break; break;
case Inf_INTRODUCTION: case Inf_INTRODUCTION:
case Inf_TEACHING_GUIDE: case Inf_TEACHING_GUIDE:
@ -316,28 +302,54 @@ void Inf_ShowInfo (void)
static void Inf_PutIconToViewInfo (void *Type) 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) if (Type)
Ico_PutContextualIconToView (Inf_ActionsSeeInfo[*((Inf_Type_t *) Type)],NULL, Ico_PutContextualIconToView (Inf_Actions[*((Inf_Type_t *) Type)].NextAction,NULL,
NULL,NULL); Inf_Actions[*((Inf_Type_t *) Type)].FuncPars,
Inf_Actions[*((Inf_Type_t *) Type)].Args);
} }
void Inf_PutIconToEditInfo (void *Type) 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, const Act_Action_t NextAction;
[Inf_TEACHING_GUIDE] = ActEdiTchGui, void (*FuncPars) (void *Args);
[Inf_LECTURES ] = ActEdiSylLec, void *Args;
[Inf_PRACTICALS ] = ActEdiSylPra, } Inf_Actions[Inf_NUM_TYPES] =
[Inf_BIBLIOGRAPHY ] = ActEdiBib, {
[Inf_FAQ ] = ActEdiFAQ, [Inf_INTRODUCTION ] = {ActEdiCrsInf,NULL,NULL},
[Inf_LINKS ] = ActEdiCrsLnk, [Inf_TEACHING_GUIDE] = {ActEdiTchGui,NULL,NULL},
[Inf_ASSESSMENT ] = ActEdiAss, [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) if (Type)
Ico_PutContextualIconToEdit (Inf_ActionsEditInfo[*((Inf_Type_t *) Type)],NULL, Ico_PutContextualIconToEdit (Inf_Actions[*((Inf_Type_t *) Type)].NextAction,NULL,
NULL,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) void Inf_WriteMsgYouMustReadInfo (void)
{ {
extern Syl_WhichSyllabus_t Syl_WhichSyllabus[Syl_NUM_WHICH_SYLLABUS];
extern const char *Txt_Required_reading; extern const char *Txt_Required_reading;
extern const char *Txt_You_should_read_the_following_information; 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; Inf_Type_t InfoType;
const char *TitleAction;
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (Txt_Required_reading,NULL,NULL,NULL,Box_CLOSABLE); Box_BoxBegin (Txt_Required_reading,NULL,NULL,NULL,Box_CLOSABLE);
@ -460,11 +490,14 @@ void Inf_WriteMsgYouMustReadInfo (void)
if (Gbl.Crs.Info.MustBeRead[InfoType]) if (Gbl.Crs.Info.MustBeRead[InfoType])
{ {
HTM_LI_Begin (NULL); HTM_LI_Begin (NULL);
Frm_BeginForm (Inf_ActionsSeeInfo[InfoType]); Frm_BeginForm (Inf_Actions[InfoType].NextAction);
HTM_BUTTON_Submit_Begin (Act_GetTitleAction (Inf_ActionsSeeInfo[InfoType]), 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\"", "class=\"BT_LINK FORM_IN_%s\"",
The_GetSuffix ()); The_GetSuffix ());
HTM_Txt (Act_GetTitleAction (Inf_ActionsSeeInfo[InfoType])); HTM_Txt (TitleAction);
HTM_BUTTON_End (); HTM_BUTTON_End ();
Frm_EndForm (); Frm_EndForm ();
HTM_LI_End (); HTM_LI_End ();
@ -828,7 +861,7 @@ void Inf_FormsToSelSendInfo (void)
[Inf_ASSESSMENT ] = ActSelInfSrcAss, [Inf_ASSESSMENT ] = ActSelInfSrcAss,
}; };
/* Functions to write forms in course edition (FAQ, links, etc.) */ /* 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_NONE ] = NULL,
[Inf_EDITOR ] = Inf_FormToEnterIntegratedEditor, [Inf_EDITOR ] = Inf_FormToEnterIntegratedEditor,
@ -895,6 +928,7 @@ void Inf_FormsToSelSendInfo (void)
InfoSrc == FromDB.Src ? " BG_HIGHLIGHT" : InfoSrc == FromDB.Src ? " BG_HIGHLIGHT" :
""); "");
Frm_BeginForm (Inf_ActionsSelecInfoSrc[Gbl.Crs.Info.Type]); Frm_BeginForm (Inf_ActionsSelecInfoSrc[Gbl.Crs.Info.Type]);
Syl_PutParWhichSyllabus (&Syllabus.WhichSyllabus);
HTM_INPUT_RADIO ("InfoSrc",InfoSrc != FromDB.Src && HTM_INPUT_RADIO ("InfoSrc",InfoSrc != FromDB.Src &&
(InfoSrc == Inf_NONE || (InfoSrc == Inf_NONE ||
InfoAvailable[InfoSrc]) ? HTM_SUBMIT_ON_CLICK : InfoAvailable[InfoSrc]) ? HTM_SUBMIT_ON_CLICK :
@ -925,7 +959,7 @@ void Inf_FormsToSelSendInfo (void)
HTM_SPAN_End (); HTM_SPAN_End ();
} }
if (Inf_FormsForEditionTypes[InfoSrc]) if (Inf_FormsForEditionTypes[InfoSrc])
Inf_FormsForEditionTypes[InfoSrc] (InfoSrc); Inf_FormsForEditionTypes[InfoSrc] (&Syllabus,InfoSrc);
HTM_TD_End (); HTM_TD_End ();
HTM_TR_End (); HTM_TR_End ();
@ -980,9 +1014,10 @@ static bool Inf_CheckIfInfoAvailable (struct Syl_Syllabus *Syllabus,
/****************** Form to enter in integrated editor ***********************/ /****************** 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]); Frm_BeginForm (Inf_ActionsInfo[InfoSrc][Gbl.Crs.Info.Type]);
Syl_PutParWhichSyllabus (&Syllabus->WhichSyllabus);
Btn_PutConfirmButton (Act_GetActionText (Inf_ActionsInfo[InfoSrc][Gbl.Crs.Info.Type])); Btn_PutConfirmButton (Act_GetActionText (Inf_ActionsInfo[InfoSrc][Gbl.Crs.Info.Type]));
Frm_EndForm (); Frm_EndForm ();
} }
@ -991,11 +1026,12 @@ void Inf_FormToEnterIntegratedEditor (Inf_Src_t InfoSrc)
/****************** Form to enter in plain text editor ***********************/ /****************** 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; extern const char *Txt_Edit_plain_text;
Frm_BeginForm (Inf_ActionsInfo[InfoSrc][Gbl.Crs.Info.Type]); Frm_BeginForm (Inf_ActionsInfo[InfoSrc][Gbl.Crs.Info.Type]);
Syl_PutParWhichSyllabus (&Syllabus->WhichSyllabus);
Btn_PutConfirmButton (Txt_Edit_plain_text); Btn_PutConfirmButton (Txt_Edit_plain_text);
Frm_EndForm (); Frm_EndForm ();
} }
@ -1004,11 +1040,12 @@ void Inf_FormToEnterPlainTextEditor (Inf_Src_t InfoSrc)
/******************* Form to enter in rich text editor ***********************/ /******************* 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; extern const char *Txt_Edit_rich_text;
Frm_BeginForm (Inf_ActionsInfo[InfoSrc][Gbl.Crs.Info.Type]); Frm_BeginForm (Inf_ActionsInfo[InfoSrc][Gbl.Crs.Info.Type]);
Syl_PutParWhichSyllabus (&Syllabus->WhichSyllabus);
Btn_PutConfirmButton (Txt_Edit_rich_text); Btn_PutConfirmButton (Txt_Edit_rich_text);
Frm_EndForm (); Frm_EndForm ();
} }
@ -1017,13 +1054,14 @@ void Inf_FormToEnterRichTextEditor (Inf_Src_t InfoSrc)
/******************* Form to upload a file with a page ***********************/ /******************* 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_File;
extern const char *Txt_Upload_file; extern const char *Txt_Upload_file;
/***** Begin form *****/ /***** Begin form *****/
Frm_BeginForm (Inf_ActionsInfo[InfoSrc][Gbl.Crs.Info.Type]); Frm_BeginForm (Inf_ActionsInfo[InfoSrc][Gbl.Crs.Info.Type]);
Syl_PutParWhichSyllabus (&Syllabus->WhichSyllabus);
/***** File *****/ /***** File *****/
HTM_DIV_Begin ("class=\"CM\""); 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 *********************/ /********************* 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_URL;
extern const char *Txt_Send_URL; extern const char *Txt_Send_URL;
@ -1059,6 +1097,7 @@ void Inf_FormToSendURL (Inf_Src_t InfoSrc)
/***** Begin form *****/ /***** Begin form *****/
Frm_BeginForm (Inf_ActionsInfo[InfoSrc][Gbl.Crs.Info.Type]); Frm_BeginForm (Inf_ActionsInfo[InfoSrc][Gbl.Crs.Info.Type]);
Syl_PutParWhichSyllabus (&Syllabus->WhichSyllabus);
/***** Link *****/ /***** Link *****/
if ((FileURL = fopen (PathFile,"rb")) != NULL) 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, static void Inf_AsignInfoType (struct Inf_Info *Info,
struct Syl_Syllabus *Syllabus) struct Syl_Syllabus *Syllabus)
{ {
switch (Gbl.Action.Act) Syllabus->WhichSyllabus = Syl_NONE;
switch (Act_GetSuperAction (Gbl.Action.Act))
{ {
case ActSeeCrsInf: 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; Info->Type = Inf_INTRODUCTION;
break; break;
case ActSeeTchGui: 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; Info->Type = Inf_TEACHING_GUIDE;
break; break;
case ActSeeSyl: case ActSeeSyl:
@ -1129,92 +1147,21 @@ static void Inf_AsignInfoType (struct Inf_Info *Info,
Info->Type = (Syllabus->WhichSyllabus == Syl_LECTURES ? Inf_LECTURES : Info->Type = (Syllabus->WhichSyllabus == Syl_LECTURES ? Inf_LECTURES :
Inf_PRACTICALS); Inf_PRACTICALS);
break; 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 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; Info->Type = Inf_BIBLIOGRAPHY;
break; break;
case ActSeeFAQ: 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; Info->Type = Inf_FAQ;
break; break;
case ActSeeCrsLnk: 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; Info->Type = Inf_LINKS;
break; break;
case ActSeeAss: 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; Info->Type = Inf_ASSESSMENT;
break; break;
default:
Err_WrongActionExit ();
break;
} }
} }
@ -1615,20 +1562,26 @@ static bool Inf_CheckAndShowRichTxt (void)
void Inf_EditPlainTxtInfo (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_INFO_TITLE[Inf_NUM_TYPES];
extern const char *Txt_Save_changes; extern const char *Txt_Save_changes;
struct Syl_Syllabus Syllabus; struct Syl_Syllabus Syllabus;
char TxtHTML[Cns_MAX_BYTES_LONG_TEXT + 1]; char TxtHTML[Cns_MAX_BYTES_LONG_TEXT + 1];
static const Act_Action_t Inf_ActionsRcvPlaTxtInfo[Inf_NUM_TYPES] = static struct
{ {
[Inf_INTRODUCTION ] = ActRcvPlaTxtCrsInf, const Act_Action_t NextAction;
[Inf_TEACHING_GUIDE] = ActRcvPlaTxtTchGui, void (*FuncPars) (void *Args);
[Inf_LECTURES ] = ActRcvPlaTxtSylLec, void *Args;
[Inf_PRACTICALS ] = ActRcvPlaTxtSylPra, } Inf_Actions[Inf_NUM_TYPES] =
[Inf_BIBLIOGRAPHY ] = ActRcvPlaTxtBib, {
[Inf_FAQ ] = ActRcvPlaTxtFAQ, [Inf_INTRODUCTION ] = {ActRcvPlaTxtCrsInf,NULL,NULL},
[Inf_LINKS ] = ActRcvPlaTxtCrsLnk, [Inf_TEACHING_GUIDE] = {ActRcvPlaTxtTchGui,NULL,NULL},
[Inf_ASSESSMENT ] = ActRcvPlaTxtAss, [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] = const char *HelpEdit[Inf_NUM_TYPES] =
{ {
@ -1649,7 +1602,9 @@ void Inf_EditPlainTxtInfo (void)
Inf_AsignInfoType (&Gbl.Crs.Info,&Syllabus); Inf_AsignInfoType (&Gbl.Crs.Info,&Syllabus);
/***** Begin form and box *****/ /***** 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, Box_BoxBegin (Txt_INFO_TITLE[Gbl.Crs.Info.Type],NULL,NULL,
HelpEdit[Gbl.Crs.Info.Type],Box_NOT_CLOSABLE); HelpEdit[Gbl.Crs.Info.Type],Box_NOT_CLOSABLE);
@ -1682,20 +1637,26 @@ void Inf_EditPlainTxtInfo (void)
void Inf_EditRichTxtInfo (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_INFO_TITLE[Inf_NUM_TYPES];
extern const char *Txt_Save_changes; extern const char *Txt_Save_changes;
struct Syl_Syllabus Syllabus; struct Syl_Syllabus Syllabus;
char TxtHTML[Cns_MAX_BYTES_LONG_TEXT + 1]; char TxtHTML[Cns_MAX_BYTES_LONG_TEXT + 1];
static const Act_Action_t Inf_ActionsRcvRchTxtInfo[Inf_NUM_TYPES] = static struct
{ {
[Inf_INTRODUCTION ] = ActRcvRchTxtCrsInf, const Act_Action_t NextAction;
[Inf_TEACHING_GUIDE] = ActRcvRchTxtTchGui, void (*FuncPars) (void *Args);
[Inf_LECTURES ] = ActRcvRchTxtSylLec, void *Args;
[Inf_PRACTICALS ] = ActRcvRchTxtSylPra, } Inf_Actions[Inf_NUM_TYPES] =
[Inf_BIBLIOGRAPHY ] = ActRcvRchTxtBib, {
[Inf_FAQ ] = ActRcvRchTxtFAQ, [Inf_INTRODUCTION ] = {ActRcvRchTxtCrsInf,NULL,NULL},
[Inf_LINKS ] = ActRcvRchTxtCrsLnk, [Inf_TEACHING_GUIDE] = {ActRcvRchTxtTchGui,NULL,NULL},
[Inf_ASSESSMENT ] = ActRcvRchTxtAss, [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] = const char *HelpEdit[Inf_NUM_TYPES] =
{ {
@ -1716,7 +1677,9 @@ void Inf_EditRichTxtInfo (void)
Inf_AsignInfoType (&Gbl.Crs.Info,&Syllabus); Inf_AsignInfoType (&Gbl.Crs.Info,&Syllabus);
/***** Begin form and box *****/ /***** 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, Box_BoxBegin (Txt_INFO_TITLE[Gbl.Crs.Info.Type],NULL,NULL,
HelpEdit[Gbl.Crs.Info.Type],Box_NOT_CLOSABLE); HelpEdit[Gbl.Crs.Info.Type],Box_NOT_CLOSABLE);

View File

@ -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_WriteURLIntoTxtBuffer (char TxtBuffer[Cns_MAX_BYTES_WWW + 1]);
void Inf_SetInfoSrc (void); void Inf_SetInfoSrc (void);
void Inf_FormsToSelSendInfo (void); void Inf_FormsToSelSendInfo (void);
void Inf_FormToEnterIntegratedEditor (Inf_Src_t InfoSrc); void Inf_FormToEnterIntegratedEditor (struct Syl_Syllabus *Syllabus,Inf_Src_t InfoSrc);
void Inf_FormToEnterPlainTextEditor (Inf_Src_t InfoSrc); void Inf_FormToEnterPlainTextEditor (struct Syl_Syllabus *Syllabus,Inf_Src_t InfoSrc);
void Inf_FormToEnterRichTextEditor (Inf_Src_t InfoSrc); void Inf_FormToEnterRichTextEditor (struct Syl_Syllabus *Syllabus,Inf_Src_t InfoSrc);
void Inf_FormToSendPage (Inf_Src_t InfoSrc); void Inf_FormToSendPage (struct Syl_Syllabus *Syllabus,Inf_Src_t InfoSrc);
void Inf_FormToSendURL (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_GetInfoSrcFromForm (void);
Inf_Src_t Inf_GetInfoSrcFromDB (long CrsCod,Inf_Type_t InfoType); Inf_Src_t Inf_GetInfoSrcFromDB (long CrsCod,Inf_Type_t InfoType);
void Inf_GetAndCheckInfoSrcFromDB (struct Syl_Syllabus *Syllabus, void Inf_GetAndCheckInfoSrcFromDB (struct Syl_Syllabus *Syllabus,

View File

@ -347,16 +347,11 @@ static void Mai_GetMailDomain (const char *Email,
void Mai_WriteWarningEmailNotifications (void) void Mai_WriteWarningEmailNotifications (void)
{ {
extern const char *Txt_You_can_only_receive_email_notifications_if_; 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; 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_, Ale_ShowAlert (Ale_WARNING,Txt_You_can_only_receive_email_notifications_if_,
Tab_GetTxt (TabMyAccount), Tab_GetTxt (Act_GetTab (ActFrmMyAcc)),Act_GetTitleAction (ActFrmMyAcc),
Txt_MENU_TITLE[TabMyAccount ][Act_GetIndexInMenu (ActFrmMyAcc)], Tab_GetTxt (Act_GetTab (ActSeeMai )),Act_GetTitleAction (ActSeeMai ),
Tab_GetTxt (TabMailDomains),
Txt_MENU_TITLE[TabMailDomains][Act_GetIndexInMenu (ActSeeMai )],
Txt_Domains); Txt_Domains);
} }

View File

@ -240,14 +240,13 @@ Act_Action_t Mnu_GetFirstActionAvailableInCurrentTab (void)
void Mnu_WriteMenuThisTab (void) void Mnu_WriteMenuThisTab (void)
{ {
extern const char *Ico_IconSetId[Ico_NUM_ICON_SETS]; 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] = static const char *ClassIcoMenu[Ico_NUM_ICON_SETS] =
{ {
[Ico_ICON_SET_AWESOME] = "MENU_ICO", [Ico_ICON_SET_AWESOME] = "MENU_ICO",
[Ico_ICON_SET_NUVOLA ] = NULL, [Ico_ICON_SET_NUVOLA ] = NULL,
}; };
unsigned NumOptInMenu; unsigned NumOptInMenu;
Act_Action_t NumAct; Act_Action_t Action;
const char *Title; const char *Title;
bool IsTheSelectedAction; bool IsTheSelectedAction;
@ -262,14 +261,14 @@ void Mnu_WriteMenuThisTab (void)
NumOptInMenu < Act_MAX_OPTIONS_IN_MENU_PER_TAB; NumOptInMenu < Act_MAX_OPTIONS_IN_MENU_PER_TAB;
NumOptInMenu++) NumOptInMenu++)
{ {
NumAct = Mnu_Menu[Gbl.Action.Tab][NumOptInMenu].Action; Action = 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 if (Action == 0) // At the end of each tab, actions are initialized to 0, so 0 marks the end of the menu
break; 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 *****/ /***** Begin option *****/
HTM_LI_Begin ("class=\"MENU_LIST_ITEM %s\"", HTM_LI_Begin ("class=\"MENU_LIST_ITEM %s\"",
@ -277,7 +276,7 @@ void Mnu_WriteMenuThisTab (void)
"MENU_OPT_OFF"); "MENU_OPT_OFF");
/***** Begin form *****/ /***** Begin form *****/
Frm_BeginForm (NumAct); Frm_BeginForm (Action);
/***** Begin link *****/ /***** Begin link *****/
HTM_BUTTON_Submit_Begin (Title,"class=\"BT_LINK\""); HTM_BUTTON_Submit_Begin (Title,"class=\"BT_LINK\"");
@ -298,7 +297,7 @@ void Mnu_WriteMenuThisTab (void)
HTM_DIV_End (); HTM_DIV_End ();
HTM_DIV_Begin ("class=\"MENU_TXT MENU_TXT_%s\"", HTM_DIV_Begin ("class=\"MENU_TXT MENU_TXT_%s\"",
The_GetSuffix ()); The_GetSuffix ());
HTM_Txt (Txt_MENU_TITLE[Gbl.Action.Tab][NumOptInMenu]); HTM_Txt (Act_GetTitleAction (Action));
HTM_DIV_End (); HTM_DIV_End ();
HTM_DIV_End (); HTM_DIV_End ();

View File

@ -759,7 +759,7 @@ static void Rep_WriteSectionHitsPerAction (struct Rep_Report *Report)
{ {
if ((Action = Act_GetActionFromActCod (ActCod)) >= 0) if ((Action = Act_GetActionFromActCod (ActCod)) >= 0)
{ {
TabTxt = Tab_GetTxt (Act_GetTab (Act_GetSuperAction (Action))); TabTxt = Tab_GetTxt (Act_GetTab (Action));
if (TabTxt) if (TabTxt)
fprintf (Rep_File,"%s &gt; ",TabTxt); fprintf (Rep_File,"%s &gt; ",TabTxt);
} }

View File

@ -50,6 +50,17 @@
#include "swad_string.h" #include "swad_string.h"
#include "swad_xml.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 ****************/ /************** External global variables from others modules ****************/
/*****************************************************************************/ /*****************************************************************************/
@ -106,17 +117,14 @@ struct LstItemsSyllabus Syl_LstItemsSyllabus;
/***************************** Private prototypes ****************************/ /***************************** Private prototypes ****************************/
/*****************************************************************************/ /*****************************************************************************/
static void Syl_PutFormWhichSyllabus (Syl_WhichSyllabus_t SyllabusSelected);
static unsigned Syl_GetParItemNumber (void); static unsigned Syl_GetParItemNumber (void);
static void Syl_SetSyllabusTypeFromAction (struct Syl_Syllabus *Syllabus);
static void Syl_ShowSyllabus (struct Syl_Syllabus *Syllabus); static void Syl_ShowSyllabus (struct Syl_Syllabus *Syllabus);
static void Syl_ShowRowSyllabus (struct Syl_Syllabus *Syllabus,unsigned NumItem, static void Syl_ShowRowSyllabus (struct Syl_Syllabus *Syllabus,unsigned NumItem,
int Level,int *CodItem,const char *Text,bool NewItem); int Level,int *CodItem,const char *Text,bool NewItem);
static void Syl_PutFormItemSyllabus (struct Syl_Syllabus *Syllabus, static void Syl_PutFormItemSyllabus (struct Syl_Syllabus *Syllabus,
bool NewItem,unsigned NumItem,int Level,int *CodItem,const char *Text); 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); 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); (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 **********************/ /************************ 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]; extern const char *Txt_SYLLABUS_WHICH_SYLLABUS[Syl_NUM_WHICH_SYLLABUS];
Syl_WhichSyllabus_t WhichSyl; 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) *****/ /***** Form to select which syllabus I want to see (lectures/practicals) *****/
Frm_BeginForm (ActSeeSyl); Frm_BeginForm (ActSeeSyl);
HTM_DIV_Begin ("class=\"SEL_BELOW_TITLE DAT_%s\"",The_GetSuffix ()); HTM_DIV_Begin ("class=\"SEL_BELOW_TITLE DAT_%s\"",The_GetSuffix ());
HTM_UL_Begin (NULL); HTM_UL_Begin (NULL);
for (WhichSyl = (Syl_WhichSyllabus_t) 0; for (WhichSyl = (Syl_WhichSyllabus_t) 1;
WhichSyl <= (Syl_WhichSyllabus_t) (For_NUM_FORUM_SETS - 1); WhichSyl <= (Syl_WhichSyllabus_t) (Syl_NUM_WHICH_SYLLABUS - 1);
WhichSyl++) WhichSyl++)
{ {
HTM_LI_Begin (NULL); HTM_LI_Begin (NULL);
@ -177,7 +207,7 @@ static void Syl_PutFormWhichSyllabus (Syl_WhichSyllabus_t SyllabusSelected)
HTM_INPUT_RADIO ("WhichSyllabus",HTM_SUBMIT_ON_CLICK, HTM_INPUT_RADIO ("WhichSyllabus",HTM_SUBMIT_ON_CLICK,
"value=\"%u\"%s", "value=\"%u\"%s",
(unsigned) WhichSyl, (unsigned) WhichSyl,
WhichSyl == SyllabusSelected ? " checked=\"checked\"" : WhichSyl == WhichSyllabus ? " checked=\"checked\"" :
""); "");
HTM_Txt (Txt_SYLLABUS_WHICH_SYLLABUS[WhichSyl]); HTM_Txt (Txt_SYLLABUS_WHICH_SYLLABUS[WhichSyl]);
HTM_LABEL_End (); HTM_LABEL_End ();
@ -226,10 +256,12 @@ bool Syl_CheckSyllabus (struct Syl_Syllabus *Syllabus,long CrsCod)
/*****************************************************************************/ /*****************************************************************************/
// Return true if info available // 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 *****/ /***** Get syllabus type *****/
Syl_SetSyllabusTypeFromAction (Syllabus); Syllabus->WhichSyllabus = Syl_GetParWhichSyllabus ();
Gbl.Crs.Info.Type = (Syllabus->WhichSyllabus == Syl_LECTURES ? Inf_LECTURES :
Inf_PRACTICALS);
/***** Load syllabus from XML file to memory *****/ /***** Load syllabus from XML file to memory *****/
Syl_LoadListItemsSyllabusIntoMemory (Syllabus,Gbl.Hierarchy.Node[Hie_CRS].HieCod); Syl_LoadListItemsSyllabusIntoMemory (Syllabus,Gbl.Hierarchy.Node[Hie_CRS].HieCod);
@ -275,72 +307,7 @@ void Syl_EditSyllabus (void)
Syl_ResetSyllabus (&Syllabus); Syl_ResetSyllabus (&Syllabus);
/***** Edit syllabus *****/ /***** Edit syllabus *****/
Syl_CheckAndEditSyllabus (&Syllabus); Syl_CheckAndShowSyllabus (&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;
}
} }
/*****************************************************************************/ /*****************************************************************************/
@ -516,7 +483,6 @@ int Syl_ReadLevelItemSyllabus (FILE *XML)
static void Syl_ShowSyllabus (struct Syl_Syllabus *Syllabus) 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 *Txt_INFO_TITLE[Inf_NUM_TYPES];
extern const char *Hlp_COURSE_Syllabus_edit; extern const char *Hlp_COURSE_Syllabus_edit;
extern const char *Hlp_COURSE_Syllabus; extern const char *Hlp_COURSE_Syllabus;
@ -533,6 +499,17 @@ static void Syl_ShowSyllabus (struct Syl_Syllabus *Syllabus)
[Vie_VIEW] = 0, [Vie_VIEW] = 0,
[Vie_EDIT] = 5, [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 || bool ShowRowInsertNewItem = (Gbl.Action.Act == ActInsIteSylLec || Gbl.Action.Act == ActInsIteSylPra ||
Gbl.Action.Act == ActModIteSylLec || Gbl.Action.Act == ActModIteSylPra || Gbl.Action.Act == ActModIteSylLec || Gbl.Action.Act == ActModIteSylPra ||
Gbl.Action.Act == ActRgtIteSylLec || Gbl.Action.Act == ActRgtIteSylPra || Gbl.Action.Act == ActRgtIteSylLec || Gbl.Action.Act == ActRgtIteSylPra ||
@ -549,9 +526,6 @@ static void Syl_ShowSyllabus (struct Syl_Syllabus *Syllabus)
NULL, NULL,
*HelpLink[Syllabus->ViewType],Box_NOT_CLOSABLE); *HelpLink[Syllabus->ViewType],Box_NOT_CLOSABLE);
/****** Form to select syllabus *****/
Syl_PutFormWhichSyllabus (Syllabus->WhichSyllabus);
/***** Begin table *****/ /***** Begin table *****/
HTM_TABLE_BeginWide (); HTM_TABLE_BeginWide ();
@ -596,7 +570,8 @@ static void Syl_ShowSyllabus (struct Syl_Syllabus *Syllabus)
/***** Button to view *****/ /***** Button to view *****/
if (Syllabus->ViewType == Vie_EDIT) 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); Btn_PutConfirmButton (Txt_Done);
Frm_EndForm (); Frm_EndForm ();
} }
@ -674,7 +649,7 @@ static void Syl_ShowRowSyllabus (struct Syl_Syllabus *Syllabus,unsigned NumItem,
else else
Ico_PutContextualIconToRemove (Gbl.Crs.Info.Type == Inf_LECTURES ? ActDelItmSylLec : Ico_PutContextualIconToRemove (Gbl.Crs.Info.Type == Inf_LECTURES ? ActDelItmSylLec :
ActDelItmSylPra,NULL, ActDelItmSylPra,NULL,
Syl_PutParNumItem,&Syllabus->ParNumItem); Syl_PutParsSyllabus,Syllabus);
HTM_TD_End (); HTM_TD_End ();
/***** Icon to get up an item *****/ /***** 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 : Lay_PutContextualLinkOnlyIcon (Gbl.Crs.Info.Type == Inf_LECTURES ? ActUp_IteSylLec :
ActUp_IteSylPra, ActUp_IteSylPra,
NULL, NULL,
Syl_PutParNumItem,&Syllabus->ParNumItem, Syl_PutParsSyllabus,Syllabus,
"arrow-up.svg",Ico_BLACK); "arrow-up.svg",Ico_BLACK);
else else
Ico_PutIconOff ("arrow-up.svg",Ico_BLACK, 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 : Lay_PutContextualLinkOnlyIcon (Gbl.Crs.Info.Type == Inf_LECTURES ? ActDwnIteSylLec :
ActDwnIteSylPra, ActDwnIteSylPra,
NULL, NULL,
Syl_PutParNumItem,&Syllabus->ParNumItem, Syl_PutParsSyllabus,Syllabus,
"arrow-down.svg",Ico_BLACK); "arrow-down.svg",Ico_BLACK);
else else
Ico_PutIconOff ("arrow-down.svg",Ico_BLACK, 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 : Lay_PutContextualLinkOnlyIcon (Gbl.Crs.Info.Type == Inf_LECTURES ? ActRgtIteSylLec :
ActRgtIteSylPra, ActRgtIteSylPra,
NULL, NULL,
Syl_PutParNumItem,&Syllabus->ParNumItem, Syl_PutParsSyllabus,Syllabus,
"arrow-left.svg",Ico_BLACK); "arrow-left.svg",Ico_BLACK);
else else
Ico_PutIconOff ("arrow-left.svg",Ico_BLACK, 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 : Lay_PutContextualLinkOnlyIcon (Gbl.Crs.Info.Type == Inf_LECTURES ? ActLftIteSylLec :
ActLftIteSylPra, ActLftIteSylPra,
NULL, NULL,
Syl_PutParNumItem,&Syllabus->ParNumItem, Syl_PutParsSyllabus,Syllabus,
"arrow-right.svg",Ico_BLACK); "arrow-right.svg",Ico_BLACK);
else else
Ico_PutIconOff ("arrow-right.svg",Ico_BLACK, 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 : (Gbl.Crs.Info.Type == Inf_LECTURES ? ActModIteSylLec :
ActModIteSylPra)); ActModIteSylPra));
Syllabus->ParNumItem = NumItem; Syllabus->ParNumItem = NumItem;
Syl_PutParNumItem (&Syllabus->ParNumItem); Syl_PutParsSyllabus (Syllabus);
HTM_INPUT_TEXT ("Txt",Syl_MAX_CHARS_TEXT_ITEM,Text, HTM_INPUT_TEXT ("Txt",Syl_MAX_CHARS_TEXT_ITEM,Text,
HTM_SUBMIT_ON_CHANGE, HTM_SUBMIT_ON_CHANGE,
"size=\"60\" class=\"INPUT_%s\" placeholder=\"%s\"%s", "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) if (Syllabus)
Par_PutParUnsigned (NULL,"NumI",*((unsigned *) ParNumItem)); {
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 *****/ /***** Reset syllabus context *****/
Syl_ResetSyllabus (&Syllabus); Syl_ResetSyllabus (&Syllabus);
/***** Set syllabus type depending on current action *****/ /***** Get syllabus type *****/
Syl_SetSyllabusTypeFromAction (&Syllabus); Syllabus.WhichSyllabus = Syl_GetParWhichSyllabus ();
Gbl.Crs.Info.Type = (Syllabus.WhichSyllabus == Syl_LECTURES ? Inf_LECTURES :
Inf_PRACTICALS);
/***** Load syllabus from XML file to memory *****/ /***** Load syllabus from XML file to memory *****/
Syl_LoadListItemsSyllabusIntoMemory (&Syllabus,Gbl.Hierarchy.Node[Hie_CRS].HieCod); 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 *****/ /***** Show the updated syllabus to continue editing it *****/
Syl_FreeListItemsSyllabus (); 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 *****/ /***** Reset syllabus context *****/
Syl_ResetSyllabus (&Syllabus); Syl_ResetSyllabus (&Syllabus);
/***** Set syllabus type depending on current action *****/ /***** Get syllabus type *****/
Syl_SetSyllabusTypeFromAction (&Syllabus); Syllabus.WhichSyllabus = Syl_GetParWhichSyllabus ();
Gbl.Crs.Info.Type = (Syllabus.WhichSyllabus == Syl_LECTURES ? Inf_LECTURES :
Inf_PRACTICALS);
/***** Load syllabus from XML file to memory *****/ /***** Load syllabus from XML file to memory *****/
Syl_LoadListItemsSyllabusIntoMemory (&Syllabus,Gbl.Hierarchy.Node[Hie_CRS].HieCod); 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 *****/ /***** Show the updated syllabus to continue editing it *****/
Syl_FreeListItemsSyllabus (); 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 *****/ /***** Reset syllabus context *****/
Syl_ResetSyllabus (&Syllabus); Syl_ResetSyllabus (&Syllabus);
/***** Set syllabus type depending on current action *****/ /***** Get syllabus type *****/
Syl_SetSyllabusTypeFromAction (&Syllabus); Syllabus.WhichSyllabus = Syl_GetParWhichSyllabus ();
Gbl.Crs.Info.Type = (Syllabus.WhichSyllabus == Syl_LECTURES ? Inf_LECTURES :
Inf_PRACTICALS);
/***** Load syllabus from XML file to memory *****/ /***** Load syllabus from XML file to memory *****/
Syl_LoadListItemsSyllabusIntoMemory (&Syllabus,Gbl.Hierarchy.Node[Hie_CRS].HieCod); 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 *****/ /***** Show the updated syllabus to continue editing it *****/
Syl_FreeListItemsSyllabus (); Syl_FreeListItemsSyllabus ();
(void) Syl_CheckAndEditSyllabus (&Syllabus); (void) Syl_CheckAndShowSyllabus (&Syllabus);
} }
/*****************************************************************************/ /*****************************************************************************/
@ -1258,8 +1244,10 @@ void Syl_InsertItemSyllabus (void)
/***** Reset syllabus context *****/ /***** Reset syllabus context *****/
Syl_ResetSyllabus (&Syllabus); Syl_ResetSyllabus (&Syllabus);
/***** Set syllabus type depending on current action *****/ /***** Get syllabus type *****/
Syl_SetSyllabusTypeFromAction (&Syllabus); Syllabus.WhichSyllabus = Syl_GetParWhichSyllabus ();
Gbl.Crs.Info.Type = (Syllabus.WhichSyllabus == Syl_LECTURES ? Inf_LECTURES :
Inf_PRACTICALS);
/***** Load syllabus from XML file to memory *****/ /***** Load syllabus from XML file to memory *****/
Syl_LoadListItemsSyllabusIntoMemory (&Syllabus,Gbl.Hierarchy.Node[Hie_CRS].HieCod); 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 *****/ /***** Show the updated syllabus to continue editing it *****/
Syl_FreeListItemsSyllabus (); Syl_FreeListItemsSyllabus ();
(void) Syl_CheckAndEditSyllabus (&Syllabus); (void) Syl_CheckAndShowSyllabus (&Syllabus);
} }
/*****************************************************************************/ /*****************************************************************************/
@ -1327,8 +1315,10 @@ void Syl_ModifyItemSyllabus (void)
/***** Reset syllabus context *****/ /***** Reset syllabus context *****/
Syl_ResetSyllabus (&Syllabus); Syl_ResetSyllabus (&Syllabus);
/***** Set syllabus type depending on current action *****/ /***** Get syllabus type *****/
Syl_SetSyllabusTypeFromAction (&Syllabus); Syllabus.WhichSyllabus = Syl_GetParWhichSyllabus ();
Gbl.Crs.Info.Type = (Syllabus.WhichSyllabus == Syl_LECTURES ? Inf_LECTURES :
Inf_PRACTICALS);
/***** Load syllabus from XML file to memory *****/ /***** Load syllabus from XML file to memory *****/
Syl_LoadListItemsSyllabusIntoMemory (&Syllabus,Gbl.Hierarchy.Node[Hie_CRS].HieCod); 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 *****/ /***** Show the updated syllabus to continue editing it *****/
Syl_FreeListItemsSyllabus (); Syl_FreeListItemsSyllabus ();
(void) Syl_CheckAndEditSyllabus (&Syllabus); (void) Syl_CheckAndShowSyllabus (&Syllabus);
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -33,11 +33,12 @@
/************************ Public constants and types *************************/ /************************ Public constants and types *************************/
/*****************************************************************************/ /*****************************************************************************/
#define Syl_NUM_WHICH_SYLLABUS 2 #define Syl_NUM_WHICH_SYLLABUS 3
typedef enum typedef enum
{ {
Syl_LECTURES = 0, Syl_NONE = 0,
Syl_PRACTICALS = 1, Syl_LECTURES = 1,
Syl_PRACTICALS = 2,
} Syl_WhichSyllabus_t; // Which syllabus I want to see } Syl_WhichSyllabus_t; // Which syllabus I want to see
#define Syl_DEFAULT_WHICH_SYLLABUS Syl_LECTURES #define Syl_DEFAULT_WHICH_SYLLABUS Syl_LECTURES
@ -88,9 +89,11 @@ struct Syl_Syllabus
void Syl_ResetSyllabus (struct Syl_Syllabus *Syllabus); void Syl_ResetSyllabus (struct Syl_Syllabus *Syllabus);
Syl_WhichSyllabus_t Syl_GetParWhichSyllabus (void); 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_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_EditSyllabus (void);
void Syl_LoadListItemsSyllabusIntoMemory (struct Syl_Syllabus *Syllabus, void Syl_LoadListItemsSyllabusIntoMemory (struct Syl_Syllabus *Syllabus,

View File

@ -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] = 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] = [TabStr] =
{ {
// 0: ActFrmLogIn // 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 #elif L==10 // tr
"Bildirimler" "Bildirimler"
#endif #endif
,
NULL, // 6
NULL, // 7
NULL, // 8
NULL, // 9
NULL, // 10
NULL, // 11
NULL, // 12
}, },
[TabSys] = [TabSys] =
{ {
@ -20503,14 +20479,6 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
#elif L==10 // tr #elif L==10 // tr
"Bak&inodot;m onar&inodot;m" "Bak&inodot;m onar&inodot;m"
#endif #endif
,
NULL, // 6
NULL, // 7
NULL, // 8
NULL, // 9
NULL, // 10
NULL, // 11
NULL, // 12
}, },
[TabCty] = [TabCty] =
{ {
@ -20559,18 +20527,6 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
#elif L==10 // tr #elif L==10 // tr
"Kurumlar" "Kurumlar"
#endif #endif
,
NULL, // 2
NULL, // 3
NULL, // 4
NULL, // 5
NULL, // 6
NULL, // 7
NULL, // 8
NULL, // 9
NULL, // 10
NULL, // 11
NULL, // 12
}, },
[TabIns] = [TabIns] =
{ {
@ -20688,15 +20644,6 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
#elif L==10 // tr #elif L==10 // tr
"Bayram" "Bayram"
#endif #endif
,
NULL, // 5
NULL, // 6
NULL, // 7
NULL, // 8
NULL, // 9
NULL, // 10
NULL, // 11
NULL, // 12
}, },
[TabCtr] = [TabCtr] =
{ {
@ -20791,16 +20738,6 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
#elif L==10 // tr #elif L==10 // tr
"Odalar" "Odalar"
#endif #endif
,
NULL, // 4
NULL, // 5
NULL, // 6
NULL, // 7
NULL, // 8
NULL, // 9
NULL, // 10
NULL, // 11
NULL, // 12
}, },
[TabDeg] = [TabDeg] =
{ {
@ -20849,18 +20786,6 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
#elif L==10 // tr #elif L==10 // tr
"Dersler" "Dersler"
#endif #endif
,
NULL, // 2
NULL, // 3
NULL, // 4
NULL, // 5
NULL, // 6
NULL, // 7
NULL, // 8
NULL, // 9
NULL, // 10
NULL, // 11
NULL, // 12
}, },
[TabCrs] = [TabCrs] =
{ {
@ -21070,11 +20995,6 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
#elif L==10 // tr #elif L==10 // tr
"Program&inodot;" "Program&inodot;"
#endif #endif
,
NULL, // 9
NULL, // 10
NULL, // 11
NULL, // 12
}, },
[TabAss] = [TabAss] =
{ {
@ -21261,12 +21181,6 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
#elif L==10 // tr #elif L==10 // tr
"De&gbreve;erlendirme" "De&gbreve;erlendirme"
#endif #endif
,
NULL, // 8
NULL, // 9
NULL, // 10
NULL, // 11
NULL, // 12
}, },
[TabFil] = [TabFil] =
{ {
@ -21754,12 +21668,6 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
#elif L==10 // tr #elif L==10 // tr
"Ba&gbreve;l&inodot;" "Ba&gbreve;l&inodot;"
#endif #endif
,
NULL, // 8
NULL, // 9
NULL, // 10
NULL, // 11
NULL, // 12
}, },
[TabMsg] = [TabMsg] =
{ {
@ -21900,14 +21808,6 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
#elif L==10 // tr #elif L==10 // tr
"E-posta" "E-posta"
#endif #endif
,
NULL, // 6
NULL, // 7
NULL, // 8
NULL, // 9
NULL, // 10
NULL, // 11
NULL, // 12
}, },
[TabAna] = [TabAna] =
{ {
@ -22071,13 +21971,6 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
#elif L==10 // tr #elif L==10 // tr
"S&inodot;k" "S&inodot;k"
#endif #endif
,
NULL, // 7
NULL, // 8
NULL, // 9
NULL, // 10
NULL, // 11
NULL, // 12
}, },
[TabPrf] = [TabPrf] =
{ {
@ -22241,13 +22134,6 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
#elif L==10 // tr #elif L==10 // tr
"Ayarlar" "Ayarlar"
#endif #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] = const char *Txt_SYLLABUS_WHICH_SYLLABUS[Syl_NUM_WHICH_SYLLABUS] =
{ {
[Syl_NONE] =
""
,
[Syl_LECTURES] = [Syl_LECTURES] =
#if L==1 // ca #if L==1 // ca
"Teoria" "Teoria"