mirror of https://github.com/acanas/swad-core.git
Version 22.31: Sep 28, 2022 New action to view one project.
This commit is contained in:
parent
0e760d7193
commit
051849f6e6
|
@ -180,7 +180,7 @@ void QR_ExamAnnnouncement (void)
|
|||
if (asprintf (&URL,"https://chart.googleapis.com/chart?cht=qr&chs=%ux%u&chl=%s/?crs=%ld%%26act=%ld",
|
||||
300,300,
|
||||
Cfg_URL_SWAD_CGI,Gbl.Hierarchy.Crs.CrsCod,
|
||||
Act_GetActCod (ActSeeAllExaAnn)) < 0)
|
||||
Act_GetActCod (ActSeeAllCfe)) < 0)
|
||||
Err_NotEnoughMemoryExit ();
|
||||
HTM_IMG (URL,NULL,Txt_Link_to_call_for_exam,
|
||||
"style=\"width:250px;height:250px;\"");
|
||||
|
|
|
@ -585,7 +585,7 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
|||
[ActSeeAss ] = { 15, 0,TabAss,ActSeeAss ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Inf_ShowInfo ,"info" },
|
||||
[ActSeeAsg ] = { 801, 1,TabAss,ActSeeAsg ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Asg_SeeAssignments ,"edit" },
|
||||
[ActSeePrj ] = {1674, 2,TabAss,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_SeeProjects ,"file-invoice" },
|
||||
[ActSeeAllExaAnn ] = { 85, 3,TabAss,ActSeeAllExaAnn ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cfe_ListCallsForExamsSee ,"bullhorn" },
|
||||
[ActSeeAllCfe ] = { 85, 3,TabAss,ActSeeAllCfe ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cfe_ListCallsForExamsSee ,"bullhorn" },
|
||||
[ActEdiTstQst ] = { 104, 4,TabAss,ActEdiTstQst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Dat_SetIniEndDates ,Qst_RequestEditQsts ,"tasks" },
|
||||
[ActReqTst ] = { 103, 5,TabAss,ActReqTst ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_RequestTest ,"check" },
|
||||
[ActSeeAllExa ] = {1848, 6,TabAss,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_SeeAllExams ,"file-signature" },
|
||||
|
@ -627,6 +627,7 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
|||
[ActUnlAllPrj ] = {1778,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_UnloSelectedPrjsEdition ,NULL},
|
||||
[ActFrmNewPrj ] = {1675,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RequestCreatePrj ,NULL},
|
||||
[ActEdiOnePrj ] = {1676,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RequestEditPrj ,NULL},
|
||||
[ActSeeOnePrj ] = {1949,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ShowProjectWithFileBrowser ,NULL},
|
||||
[ActPrnOnePrj ] = {1677,-1,TabUnk,ActSeePrj ,0x3F8,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Prj_PrintOneProject ,NULL},
|
||||
[ActNewPrj ] = {1678,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReceiveFormProject ,NULL},
|
||||
[ActChgPrj ] = {1679,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReceiveFormProject ,NULL},
|
||||
|
@ -690,16 +691,16 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
|||
[ActChgDatAssPrj ] = {1733,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_ChgFileMetadata ,NULL},
|
||||
[ActDowAssPrj ] = {1734,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_DOWNLD_FILE,Brw_DownloadFile ,NULL ,NULL},
|
||||
|
||||
[ActSeeOneCfe ] = {1572,-1,TabUnk,ActSeeAllExaAnn ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cfe_ListCallsForExamsCod ,NULL},
|
||||
[ActSeeDatCfe ] = {1571,-1,TabUnk,ActSeeAllExaAnn ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cfe_ListCallsForExamsDay ,NULL},
|
||||
[ActEdiCfe ] = { 91,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cfe_PutFrmEditACallForExam ,NULL},
|
||||
[ActRcvCfe ] = { 110,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Cfe_ReceiveCallForExam1 ,Cfe_ReceiveCallForExam2 ,NULL},
|
||||
[ActPrnCfe ] = { 179,-1,TabUnk,ActSeeAllExaAnn ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Cfe_PrintCallForExam ,NULL},
|
||||
[ActReqRemCfe ] = {1619,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cfe_ReqRemoveCallForExam ,NULL},
|
||||
[ActRemCfe ] = { 187,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Cfe_RemoveCallForExam1 ,Cfe_RemoveCallForExam2 ,NULL},
|
||||
[ActHidCfe ] = {1620,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Cfe_HideCallForExam ,Cfe_ListCallsForExamsEdit ,NULL},
|
||||
[ActUnhCfe ] = {1621,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Cfe_UnhideCallForExam ,Cfe_ListCallsForExamsEdit ,NULL},
|
||||
[ActReqLnkCfe ] = {1934,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cfe_GetLinkToCallForExam ,NULL},
|
||||
[ActSeeOneCfe ] = {1572,-1,TabUnk,ActSeeAllCfe ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cfe_ListCallsForExamsCod ,NULL},
|
||||
[ActSeeDatCfe ] = {1571,-1,TabUnk,ActSeeAllCfe ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cfe_ListCallsForExamsDay ,NULL},
|
||||
[ActEdiCfe ] = { 91,-1,TabUnk,ActSeeAllCfe ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cfe_PutFrmEditACallForExam ,NULL},
|
||||
[ActRcvCfe ] = { 110,-1,TabUnk,ActSeeAllCfe ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Cfe_ReceiveCallForExam1 ,Cfe_ReceiveCallForExam2 ,NULL},
|
||||
[ActPrnCfe ] = { 179,-1,TabUnk,ActSeeAllCfe ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Cfe_PrintCallForExam ,NULL},
|
||||
[ActReqRemCfe ] = {1619,-1,TabUnk,ActSeeAllCfe ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cfe_ReqRemoveCallForExam ,NULL},
|
||||
[ActRemCfe ] = { 187,-1,TabUnk,ActSeeAllCfe ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Cfe_RemoveCallForExam1 ,Cfe_RemoveCallForExam2 ,NULL},
|
||||
[ActHidCfe ] = {1620,-1,TabUnk,ActSeeAllCfe ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Cfe_HideCallForExam ,Cfe_ListCallsForExamsEdit ,NULL},
|
||||
[ActUnhCfe ] = {1621,-1,TabUnk,ActSeeAllCfe ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Cfe_UnhideCallForExam ,Cfe_ListCallsForExamsEdit ,NULL},
|
||||
[ActReqLnkCfe ] = {1934,-1,TabUnk,ActSeeAllCfe ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cfe_GetLinkToCallForExam ,NULL},
|
||||
|
||||
[ActEdiOneTstQst ] = { 105,-1,TabUnk,ActEdiTstQst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Qst_ShowFormEditOneQst ,NULL},
|
||||
[ActReqImpTstQst ] = {1007,-1,TabUnk,ActEdiTstQst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,QstImp_ShowFormImpQstsFromXML ,NULL},
|
||||
|
@ -1953,7 +1954,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
|
|||
-1, // #82 (obsolete action)
|
||||
-1, // #83 (obsolete action)
|
||||
ActSeeUseGbl, // #84
|
||||
ActSeeAllExaAnn, // #85
|
||||
ActSeeAllCfe, // #85
|
||||
-1, // #86 (obsolete action)
|
||||
ActRemAllStdCrs, // #87
|
||||
ActReqRemAllStdCrs, // #88
|
||||
|
@ -3817,6 +3818,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
|
|||
ActExpEdiPrgItm, // #1946
|
||||
ActConEdiPrgItm, // #1947
|
||||
ActReqLnkPrj, // #1948
|
||||
ActSeeOnePrj, // #1949
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
415
swad_action.h
415
swad_action.h
|
@ -65,7 +65,7 @@ typedef enum
|
|||
|
||||
typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
|
||||
|
||||
#define Act_MAX_ACTION_COD 1948
|
||||
#define Act_MAX_ACTION_COD 1949
|
||||
|
||||
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 13
|
||||
|
||||
|
@ -535,7 +535,7 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
|
|||
#define ActSeeAss (ActChgCrsTT1stDay + 1)
|
||||
#define ActSeeAsg (ActChgCrsTT1stDay + 2)
|
||||
#define ActSeePrj (ActChgCrsTT1stDay + 3)
|
||||
#define ActSeeAllExaAnn (ActChgCrsTT1stDay + 4)
|
||||
#define ActSeeAllCfe (ActChgCrsTT1stDay + 4)
|
||||
#define ActEdiTstQst (ActChgCrsTT1stDay + 5)
|
||||
#define ActReqTst (ActChgCrsTT1stDay + 6)
|
||||
#define ActSeeAllExa (ActChgCrsTT1stDay + 7)
|
||||
|
@ -577,234 +577,235 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
|
|||
#define ActUnlAllPrj (ActChgCrsTT1stDay + 39)
|
||||
#define ActFrmNewPrj (ActChgCrsTT1stDay + 40)
|
||||
#define ActEdiOnePrj (ActChgCrsTT1stDay + 41)
|
||||
#define ActPrnOnePrj (ActChgCrsTT1stDay + 42)
|
||||
#define ActNewPrj (ActChgCrsTT1stDay + 43)
|
||||
#define ActChgPrj (ActChgCrsTT1stDay + 44)
|
||||
#define ActReqRemPrj (ActChgCrsTT1stDay + 45)
|
||||
#define ActRemPrj (ActChgCrsTT1stDay + 46)
|
||||
#define ActHidPrj (ActChgCrsTT1stDay + 47)
|
||||
#define ActUnhPrj (ActChgCrsTT1stDay + 48)
|
||||
#define ActLckPrj (ActChgCrsTT1stDay + 49)
|
||||
#define ActUnlPrj (ActChgCrsTT1stDay + 50)
|
||||
#define ActReqAddStdPrj (ActChgCrsTT1stDay + 51)
|
||||
#define ActReqAddTutPrj (ActChgCrsTT1stDay + 52)
|
||||
#define ActReqAddEvlPrj (ActChgCrsTT1stDay + 53)
|
||||
#define ActAddStdPrj (ActChgCrsTT1stDay + 54)
|
||||
#define ActAddTutPrj (ActChgCrsTT1stDay + 55)
|
||||
#define ActAddEvlPrj (ActChgCrsTT1stDay + 56)
|
||||
#define ActReqRemStdPrj (ActChgCrsTT1stDay + 57)
|
||||
#define ActReqRemTutPrj (ActChgCrsTT1stDay + 58)
|
||||
#define ActReqRemEvlPrj (ActChgCrsTT1stDay + 59)
|
||||
#define ActRemStdPrj (ActChgCrsTT1stDay + 60)
|
||||
#define ActRemTutPrj (ActChgCrsTT1stDay + 61)
|
||||
#define ActRemEvlPrj (ActChgCrsTT1stDay + 62)
|
||||
#define ActReqLnkPrj (ActChgCrsTT1stDay + 63)
|
||||
#define ActSeeOnePrj (ActChgCrsTT1stDay + 42)
|
||||
#define ActPrnOnePrj (ActChgCrsTT1stDay + 43)
|
||||
#define ActNewPrj (ActChgCrsTT1stDay + 44)
|
||||
#define ActChgPrj (ActChgCrsTT1stDay + 45)
|
||||
#define ActReqRemPrj (ActChgCrsTT1stDay + 46)
|
||||
#define ActRemPrj (ActChgCrsTT1stDay + 47)
|
||||
#define ActHidPrj (ActChgCrsTT1stDay + 48)
|
||||
#define ActUnhPrj (ActChgCrsTT1stDay + 49)
|
||||
#define ActLckPrj (ActChgCrsTT1stDay + 50)
|
||||
#define ActUnlPrj (ActChgCrsTT1stDay + 51)
|
||||
#define ActReqAddStdPrj (ActChgCrsTT1stDay + 52)
|
||||
#define ActReqAddTutPrj (ActChgCrsTT1stDay + 53)
|
||||
#define ActReqAddEvlPrj (ActChgCrsTT1stDay + 54)
|
||||
#define ActAddStdPrj (ActChgCrsTT1stDay + 55)
|
||||
#define ActAddTutPrj (ActChgCrsTT1stDay + 56)
|
||||
#define ActAddEvlPrj (ActChgCrsTT1stDay + 57)
|
||||
#define ActReqRemStdPrj (ActChgCrsTT1stDay + 58)
|
||||
#define ActReqRemTutPrj (ActChgCrsTT1stDay + 59)
|
||||
#define ActReqRemEvlPrj (ActChgCrsTT1stDay + 60)
|
||||
#define ActRemStdPrj (ActChgCrsTT1stDay + 61)
|
||||
#define ActRemTutPrj (ActChgCrsTT1stDay + 62)
|
||||
#define ActRemEvlPrj (ActChgCrsTT1stDay + 63)
|
||||
#define ActReqLnkPrj (ActChgCrsTT1stDay + 64)
|
||||
|
||||
#define ActAdmDocPrj (ActChgCrsTT1stDay + 64)
|
||||
#define ActReqRemFilDocPrj (ActChgCrsTT1stDay + 65)
|
||||
#define ActRemFilDocPrj (ActChgCrsTT1stDay + 66)
|
||||
#define ActRemFolDocPrj (ActChgCrsTT1stDay + 67)
|
||||
#define ActCopDocPrj (ActChgCrsTT1stDay + 68)
|
||||
#define ActPasDocPrj (ActChgCrsTT1stDay + 69)
|
||||
#define ActRemTreDocPrj (ActChgCrsTT1stDay + 70)
|
||||
#define ActFrmCreDocPrj (ActChgCrsTT1stDay + 71)
|
||||
#define ActCreFolDocPrj (ActChgCrsTT1stDay + 72)
|
||||
#define ActCreLnkDocPrj (ActChgCrsTT1stDay + 73)
|
||||
#define ActRenFolDocPrj (ActChgCrsTT1stDay + 74)
|
||||
#define ActRcvFilDocPrjDZ (ActChgCrsTT1stDay + 75)
|
||||
#define ActRcvFilDocPrjCla (ActChgCrsTT1stDay + 76)
|
||||
#define ActExpDocPrj (ActChgCrsTT1stDay + 77)
|
||||
#define ActConDocPrj (ActChgCrsTT1stDay + 78)
|
||||
#define ActZIPDocPrj (ActChgCrsTT1stDay + 79)
|
||||
#define ActReqDatDocPrj (ActChgCrsTT1stDay + 80)
|
||||
#define ActChgDatDocPrj (ActChgCrsTT1stDay + 81)
|
||||
#define ActDowDocPrj (ActChgCrsTT1stDay + 82)
|
||||
#define ActAdmDocPrj (ActChgCrsTT1stDay + 65)
|
||||
#define ActReqRemFilDocPrj (ActChgCrsTT1stDay + 66)
|
||||
#define ActRemFilDocPrj (ActChgCrsTT1stDay + 67)
|
||||
#define ActRemFolDocPrj (ActChgCrsTT1stDay + 68)
|
||||
#define ActCopDocPrj (ActChgCrsTT1stDay + 69)
|
||||
#define ActPasDocPrj (ActChgCrsTT1stDay + 70)
|
||||
#define ActRemTreDocPrj (ActChgCrsTT1stDay + 71)
|
||||
#define ActFrmCreDocPrj (ActChgCrsTT1stDay + 72)
|
||||
#define ActCreFolDocPrj (ActChgCrsTT1stDay + 73)
|
||||
#define ActCreLnkDocPrj (ActChgCrsTT1stDay + 74)
|
||||
#define ActRenFolDocPrj (ActChgCrsTT1stDay + 75)
|
||||
#define ActRcvFilDocPrjDZ (ActChgCrsTT1stDay + 76)
|
||||
#define ActRcvFilDocPrjCla (ActChgCrsTT1stDay + 77)
|
||||
#define ActExpDocPrj (ActChgCrsTT1stDay + 78)
|
||||
#define ActConDocPrj (ActChgCrsTT1stDay + 79)
|
||||
#define ActZIPDocPrj (ActChgCrsTT1stDay + 80)
|
||||
#define ActReqDatDocPrj (ActChgCrsTT1stDay + 81)
|
||||
#define ActChgDatDocPrj (ActChgCrsTT1stDay + 82)
|
||||
#define ActDowDocPrj (ActChgCrsTT1stDay + 83)
|
||||
|
||||
#define ActAdmAssPrj (ActChgCrsTT1stDay + 83)
|
||||
#define ActReqRemFilAssPrj (ActChgCrsTT1stDay + 84)
|
||||
#define ActRemFilAssPrj (ActChgCrsTT1stDay + 85)
|
||||
#define ActRemFolAssPrj (ActChgCrsTT1stDay + 86)
|
||||
#define ActCopAssPrj (ActChgCrsTT1stDay + 87)
|
||||
#define ActPasAssPrj (ActChgCrsTT1stDay + 88)
|
||||
#define ActRemTreAssPrj (ActChgCrsTT1stDay + 89)
|
||||
#define ActFrmCreAssPrj (ActChgCrsTT1stDay + 90)
|
||||
#define ActCreFolAssPrj (ActChgCrsTT1stDay + 91)
|
||||
#define ActCreLnkAssPrj (ActChgCrsTT1stDay + 92)
|
||||
#define ActRenFolAssPrj (ActChgCrsTT1stDay + 93)
|
||||
#define ActRcvFilAssPrjDZ (ActChgCrsTT1stDay + 94)
|
||||
#define ActRcvFilAssPrjCla (ActChgCrsTT1stDay + 95)
|
||||
#define ActExpAssPrj (ActChgCrsTT1stDay + 96)
|
||||
#define ActConAssPrj (ActChgCrsTT1stDay + 97)
|
||||
#define ActZIPAssPrj (ActChgCrsTT1stDay + 98)
|
||||
#define ActReqDatAssPrj (ActChgCrsTT1stDay + 99)
|
||||
#define ActChgDatAssPrj (ActChgCrsTT1stDay + 100)
|
||||
#define ActDowAssPrj (ActChgCrsTT1stDay + 101)
|
||||
#define ActAdmAssPrj (ActChgCrsTT1stDay + 84)
|
||||
#define ActReqRemFilAssPrj (ActChgCrsTT1stDay + 85)
|
||||
#define ActRemFilAssPrj (ActChgCrsTT1stDay + 86)
|
||||
#define ActRemFolAssPrj (ActChgCrsTT1stDay + 87)
|
||||
#define ActCopAssPrj (ActChgCrsTT1stDay + 88)
|
||||
#define ActPasAssPrj (ActChgCrsTT1stDay + 89)
|
||||
#define ActRemTreAssPrj (ActChgCrsTT1stDay + 90)
|
||||
#define ActFrmCreAssPrj (ActChgCrsTT1stDay + 91)
|
||||
#define ActCreFolAssPrj (ActChgCrsTT1stDay + 92)
|
||||
#define ActCreLnkAssPrj (ActChgCrsTT1stDay + 93)
|
||||
#define ActRenFolAssPrj (ActChgCrsTT1stDay + 94)
|
||||
#define ActRcvFilAssPrjDZ (ActChgCrsTT1stDay + 95)
|
||||
#define ActRcvFilAssPrjCla (ActChgCrsTT1stDay + 96)
|
||||
#define ActExpAssPrj (ActChgCrsTT1stDay + 97)
|
||||
#define ActConAssPrj (ActChgCrsTT1stDay + 98)
|
||||
#define ActZIPAssPrj (ActChgCrsTT1stDay + 99)
|
||||
#define ActReqDatAssPrj (ActChgCrsTT1stDay + 100)
|
||||
#define ActChgDatAssPrj (ActChgCrsTT1stDay + 101)
|
||||
#define ActDowAssPrj (ActChgCrsTT1stDay + 102)
|
||||
|
||||
#define ActSeeOneCfe (ActChgCrsTT1stDay + 102)
|
||||
#define ActSeeDatCfe (ActChgCrsTT1stDay + 103)
|
||||
#define ActEdiCfe (ActChgCrsTT1stDay + 104)
|
||||
#define ActRcvCfe (ActChgCrsTT1stDay + 105)
|
||||
#define ActPrnCfe (ActChgCrsTT1stDay + 106)
|
||||
#define ActReqRemCfe (ActChgCrsTT1stDay + 107)
|
||||
#define ActRemCfe (ActChgCrsTT1stDay + 108)
|
||||
#define ActHidCfe (ActChgCrsTT1stDay + 109)
|
||||
#define ActUnhCfe (ActChgCrsTT1stDay + 110)
|
||||
#define ActReqLnkCfe (ActChgCrsTT1stDay + 111)
|
||||
#define ActSeeOneCfe (ActChgCrsTT1stDay + 103)
|
||||
#define ActSeeDatCfe (ActChgCrsTT1stDay + 104)
|
||||
#define ActEdiCfe (ActChgCrsTT1stDay + 105)
|
||||
#define ActRcvCfe (ActChgCrsTT1stDay + 106)
|
||||
#define ActPrnCfe (ActChgCrsTT1stDay + 107)
|
||||
#define ActReqRemCfe (ActChgCrsTT1stDay + 108)
|
||||
#define ActRemCfe (ActChgCrsTT1stDay + 109)
|
||||
#define ActHidCfe (ActChgCrsTT1stDay + 110)
|
||||
#define ActUnhCfe (ActChgCrsTT1stDay + 111)
|
||||
#define ActReqLnkCfe (ActChgCrsTT1stDay + 112)
|
||||
|
||||
#define ActEdiOneTstQst (ActChgCrsTT1stDay + 112)
|
||||
#define ActReqImpTstQst (ActChgCrsTT1stDay + 113)
|
||||
#define ActImpTstQst (ActChgCrsTT1stDay + 114)
|
||||
#define ActLstTstQst (ActChgCrsTT1stDay + 115)
|
||||
#define ActRcvTstQst (ActChgCrsTT1stDay + 116)
|
||||
#define ActReqRemSevTstQst (ActChgCrsTT1stDay + 117)
|
||||
#define ActRemSevTstQst (ActChgCrsTT1stDay + 118)
|
||||
#define ActReqRemOneTstQst (ActChgCrsTT1stDay + 119)
|
||||
#define ActRemOneTstQst (ActChgCrsTT1stDay + 120)
|
||||
#define ActChgShfTstQst (ActChgCrsTT1stDay + 121)
|
||||
#define ActEdiOneTstQst (ActChgCrsTT1stDay + 113)
|
||||
#define ActReqImpTstQst (ActChgCrsTT1stDay + 114)
|
||||
#define ActImpTstQst (ActChgCrsTT1stDay + 115)
|
||||
#define ActLstTstQst (ActChgCrsTT1stDay + 116)
|
||||
#define ActRcvTstQst (ActChgCrsTT1stDay + 117)
|
||||
#define ActReqRemSevTstQst (ActChgCrsTT1stDay + 118)
|
||||
#define ActRemSevTstQst (ActChgCrsTT1stDay + 119)
|
||||
#define ActReqRemOneTstQst (ActChgCrsTT1stDay + 120)
|
||||
#define ActRemOneTstQst (ActChgCrsTT1stDay + 121)
|
||||
#define ActChgShfTstQst (ActChgCrsTT1stDay + 122)
|
||||
|
||||
#define ActEdiTag (ActChgCrsTT1stDay + 122)
|
||||
#define ActEnaTag (ActChgCrsTT1stDay + 123)
|
||||
#define ActDisTag (ActChgCrsTT1stDay + 124)
|
||||
#define ActRenTag (ActChgCrsTT1stDay + 125)
|
||||
#define ActEdiTag (ActChgCrsTT1stDay + 123)
|
||||
#define ActEnaTag (ActChgCrsTT1stDay + 124)
|
||||
#define ActDisTag (ActChgCrsTT1stDay + 125)
|
||||
#define ActRenTag (ActChgCrsTT1stDay + 126)
|
||||
|
||||
#define ActSeeTst (ActChgCrsTT1stDay + 126)
|
||||
#define ActReqAssTst (ActChgCrsTT1stDay + 127)
|
||||
#define ActAssTst (ActChgCrsTT1stDay + 128)
|
||||
#define ActCfgTst (ActChgCrsTT1stDay + 129)
|
||||
#define ActRcvCfgTst (ActChgCrsTT1stDay + 130)
|
||||
#define ActSeeTst (ActChgCrsTT1stDay + 127)
|
||||
#define ActReqAssTst (ActChgCrsTT1stDay + 128)
|
||||
#define ActAssTst (ActChgCrsTT1stDay + 129)
|
||||
#define ActCfgTst (ActChgCrsTT1stDay + 130)
|
||||
#define ActRcvCfgTst (ActChgCrsTT1stDay + 131)
|
||||
|
||||
#define ActReqSeeMyTstRes (ActChgCrsTT1stDay + 131)
|
||||
#define ActSeeMyTstResCrs (ActChgCrsTT1stDay + 132)
|
||||
#define ActSeeOneTstResMe (ActChgCrsTT1stDay + 133)
|
||||
#define ActReqSeeUsrTstRes (ActChgCrsTT1stDay + 134)
|
||||
#define ActSeeUsrTstResCrs (ActChgCrsTT1stDay + 135)
|
||||
#define ActSeeOneTstResOth (ActChgCrsTT1stDay + 136)
|
||||
#define ActReqSeeMyTstRes (ActChgCrsTT1stDay + 132)
|
||||
#define ActSeeMyTstResCrs (ActChgCrsTT1stDay + 133)
|
||||
#define ActSeeOneTstResMe (ActChgCrsTT1stDay + 134)
|
||||
#define ActReqSeeUsrTstRes (ActChgCrsTT1stDay + 135)
|
||||
#define ActSeeUsrTstResCrs (ActChgCrsTT1stDay + 136)
|
||||
#define ActSeeOneTstResOth (ActChgCrsTT1stDay + 137)
|
||||
|
||||
#define ActSeeExa (ActChgCrsTT1stDay + 137)
|
||||
#define ActSeeExa (ActChgCrsTT1stDay + 138)
|
||||
|
||||
#define ActFrmNewExa (ActChgCrsTT1stDay + 138)
|
||||
#define ActEdiOneExa (ActChgCrsTT1stDay + 139)
|
||||
#define ActNewExa (ActChgCrsTT1stDay + 140)
|
||||
#define ActChgExa (ActChgCrsTT1stDay + 141)
|
||||
#define ActReqRemExa (ActChgCrsTT1stDay + 142)
|
||||
#define ActRemExa (ActChgCrsTT1stDay + 143)
|
||||
#define ActHidExa (ActChgCrsTT1stDay + 144)
|
||||
#define ActUnhExa (ActChgCrsTT1stDay + 145)
|
||||
#define ActReqLnkExa (ActChgCrsTT1stDay + 146)
|
||||
#define ActFrmNewExa (ActChgCrsTT1stDay + 139)
|
||||
#define ActEdiOneExa (ActChgCrsTT1stDay + 140)
|
||||
#define ActNewExa (ActChgCrsTT1stDay + 141)
|
||||
#define ActChgExa (ActChgCrsTT1stDay + 142)
|
||||
#define ActReqRemExa (ActChgCrsTT1stDay + 143)
|
||||
#define ActRemExa (ActChgCrsTT1stDay + 144)
|
||||
#define ActHidExa (ActChgCrsTT1stDay + 145)
|
||||
#define ActUnhExa (ActChgCrsTT1stDay + 146)
|
||||
#define ActReqLnkExa (ActChgCrsTT1stDay + 147)
|
||||
|
||||
#define ActFrmNewExaSet (ActChgCrsTT1stDay + 147)
|
||||
#define ActNewExaSet (ActChgCrsTT1stDay + 148)
|
||||
#define ActReqRemExaSet (ActChgCrsTT1stDay + 149)
|
||||
#define ActRemExaSet (ActChgCrsTT1stDay + 150)
|
||||
#define ActUp_ExaSet (ActChgCrsTT1stDay + 151)
|
||||
#define ActDwnExaSet (ActChgCrsTT1stDay + 152)
|
||||
#define ActChgTitExaSet (ActChgCrsTT1stDay + 153)
|
||||
#define ActChgNumQstExaSet (ActChgCrsTT1stDay + 154)
|
||||
#define ActFrmNewExaSet (ActChgCrsTT1stDay + 148)
|
||||
#define ActNewExaSet (ActChgCrsTT1stDay + 149)
|
||||
#define ActReqRemExaSet (ActChgCrsTT1stDay + 150)
|
||||
#define ActRemExaSet (ActChgCrsTT1stDay + 151)
|
||||
#define ActUp_ExaSet (ActChgCrsTT1stDay + 152)
|
||||
#define ActDwnExaSet (ActChgCrsTT1stDay + 153)
|
||||
#define ActChgTitExaSet (ActChgCrsTT1stDay + 154)
|
||||
#define ActChgNumQstExaSet (ActChgCrsTT1stDay + 155)
|
||||
|
||||
#define ActReqAddQstExaSet (ActChgCrsTT1stDay + 155)
|
||||
#define ActLstTstQstForSet (ActChgCrsTT1stDay + 156)
|
||||
#define ActAddQstToExa (ActChgCrsTT1stDay + 157)
|
||||
#define ActReqRemSetQst (ActChgCrsTT1stDay + 158)
|
||||
#define ActRemExaQst (ActChgCrsTT1stDay + 159)
|
||||
#define ActValSetQst (ActChgCrsTT1stDay + 160)
|
||||
#define ActInvSetQst (ActChgCrsTT1stDay + 161)
|
||||
#define ActReqAddQstExaSet (ActChgCrsTT1stDay + 156)
|
||||
#define ActLstTstQstForSet (ActChgCrsTT1stDay + 157)
|
||||
#define ActAddQstToExa (ActChgCrsTT1stDay + 158)
|
||||
#define ActReqRemSetQst (ActChgCrsTT1stDay + 159)
|
||||
#define ActRemExaQst (ActChgCrsTT1stDay + 160)
|
||||
#define ActValSetQst (ActChgCrsTT1stDay + 161)
|
||||
#define ActInvSetQst (ActChgCrsTT1stDay + 162)
|
||||
|
||||
#define ActReqNewExaSes (ActChgCrsTT1stDay + 162)
|
||||
#define ActEdiOneExaSes (ActChgCrsTT1stDay + 163)
|
||||
#define ActNewExaSes (ActChgCrsTT1stDay + 164)
|
||||
#define ActChgExaSes (ActChgCrsTT1stDay + 165)
|
||||
#define ActReqRemExaSes (ActChgCrsTT1stDay + 166)
|
||||
#define ActRemExaSes (ActChgCrsTT1stDay + 167)
|
||||
#define ActHidExaSes (ActChgCrsTT1stDay + 168)
|
||||
#define ActUnhExaSes (ActChgCrsTT1stDay + 169)
|
||||
#define ActReqNewExaSes (ActChgCrsTT1stDay + 163)
|
||||
#define ActEdiOneExaSes (ActChgCrsTT1stDay + 164)
|
||||
#define ActNewExaSes (ActChgCrsTT1stDay + 165)
|
||||
#define ActChgExaSes (ActChgCrsTT1stDay + 166)
|
||||
#define ActReqRemExaSes (ActChgCrsTT1stDay + 167)
|
||||
#define ActRemExaSes (ActChgCrsTT1stDay + 168)
|
||||
#define ActHidExaSes (ActChgCrsTT1stDay + 169)
|
||||
#define ActUnhExaSes (ActChgCrsTT1stDay + 170)
|
||||
|
||||
#define ActSeeExaPrn (ActChgCrsTT1stDay + 170)
|
||||
#define ActAnsExaPrn (ActChgCrsTT1stDay + 171)
|
||||
#define ActEndExaPrn (ActChgCrsTT1stDay + 172)
|
||||
#define ActSeeExaPrn (ActChgCrsTT1stDay + 171)
|
||||
#define ActAnsExaPrn (ActChgCrsTT1stDay + 172)
|
||||
#define ActEndExaPrn (ActChgCrsTT1stDay + 173)
|
||||
|
||||
#define ActSeeMyExaResCrs (ActChgCrsTT1stDay + 173)
|
||||
#define ActSeeMyExaResExa (ActChgCrsTT1stDay + 174)
|
||||
#define ActSeeMyExaResSes (ActChgCrsTT1stDay + 175)
|
||||
#define ActSeeOneExaResMe (ActChgCrsTT1stDay + 176)
|
||||
#define ActReqSeeUsrExaRes (ActChgCrsTT1stDay + 177)
|
||||
#define ActSeeUsrExaResCrs (ActChgCrsTT1stDay + 178)
|
||||
#define ActSeeUsrExaResExa (ActChgCrsTT1stDay + 179)
|
||||
#define ActSeeUsrExaResSes (ActChgCrsTT1stDay + 180)
|
||||
#define ActSeeOneExaResOth (ActChgCrsTT1stDay + 181)
|
||||
#define ActChgVisExaRes (ActChgCrsTT1stDay + 182)
|
||||
#define ActSeeMyExaResCrs (ActChgCrsTT1stDay + 174)
|
||||
#define ActSeeMyExaResExa (ActChgCrsTT1stDay + 175)
|
||||
#define ActSeeMyExaResSes (ActChgCrsTT1stDay + 176)
|
||||
#define ActSeeOneExaResMe (ActChgCrsTT1stDay + 177)
|
||||
#define ActReqSeeUsrExaRes (ActChgCrsTT1stDay + 178)
|
||||
#define ActSeeUsrExaResCrs (ActChgCrsTT1stDay + 179)
|
||||
#define ActSeeUsrExaResExa (ActChgCrsTT1stDay + 180)
|
||||
#define ActSeeUsrExaResSes (ActChgCrsTT1stDay + 181)
|
||||
#define ActSeeOneExaResOth (ActChgCrsTT1stDay + 182)
|
||||
#define ActChgVisExaRes (ActChgCrsTT1stDay + 183)
|
||||
|
||||
#define ActSeeGam (ActChgCrsTT1stDay + 183)
|
||||
#define ActReqRemMch (ActChgCrsTT1stDay + 184)
|
||||
#define ActRemMch (ActChgCrsTT1stDay + 185)
|
||||
#define ActEdiMch (ActChgCrsTT1stDay + 186)
|
||||
#define ActChgMch (ActChgCrsTT1stDay + 187)
|
||||
#define ActReqNewMch (ActChgCrsTT1stDay + 188)
|
||||
#define ActNewMch (ActChgCrsTT1stDay + 189)
|
||||
#define ActResMch (ActChgCrsTT1stDay + 190)
|
||||
#define ActBckMch (ActChgCrsTT1stDay + 191)
|
||||
#define ActPlyPauMch (ActChgCrsTT1stDay + 192)
|
||||
#define ActFwdMch (ActChgCrsTT1stDay + 193)
|
||||
#define ActChgNumColMch (ActChgCrsTT1stDay + 194)
|
||||
#define ActChgVisResMchQst (ActChgCrsTT1stDay + 195)
|
||||
#define ActMchCntDwn (ActChgCrsTT1stDay + 196)
|
||||
#define ActRefMchTch (ActChgCrsTT1stDay + 197)
|
||||
#define ActSeeGam (ActChgCrsTT1stDay + 184)
|
||||
#define ActReqRemMch (ActChgCrsTT1stDay + 185)
|
||||
#define ActRemMch (ActChgCrsTT1stDay + 186)
|
||||
#define ActEdiMch (ActChgCrsTT1stDay + 187)
|
||||
#define ActChgMch (ActChgCrsTT1stDay + 188)
|
||||
#define ActReqNewMch (ActChgCrsTT1stDay + 189)
|
||||
#define ActNewMch (ActChgCrsTT1stDay + 190)
|
||||
#define ActResMch (ActChgCrsTT1stDay + 191)
|
||||
#define ActBckMch (ActChgCrsTT1stDay + 192)
|
||||
#define ActPlyPauMch (ActChgCrsTT1stDay + 193)
|
||||
#define ActFwdMch (ActChgCrsTT1stDay + 194)
|
||||
#define ActChgNumColMch (ActChgCrsTT1stDay + 195)
|
||||
#define ActChgVisResMchQst (ActChgCrsTT1stDay + 196)
|
||||
#define ActMchCntDwn (ActChgCrsTT1stDay + 197)
|
||||
#define ActRefMchTch (ActChgCrsTT1stDay + 198)
|
||||
|
||||
#define ActJoiMch (ActChgCrsTT1stDay + 198)
|
||||
#define ActSeeMchAnsQstStd (ActChgCrsTT1stDay + 199)
|
||||
#define ActRemMchAnsQstStd (ActChgCrsTT1stDay + 200)
|
||||
#define ActAnsMchQstStd (ActChgCrsTT1stDay + 201)
|
||||
#define ActRefMchStd (ActChgCrsTT1stDay + 202)
|
||||
#define ActJoiMch (ActChgCrsTT1stDay + 199)
|
||||
#define ActSeeMchAnsQstStd (ActChgCrsTT1stDay + 200)
|
||||
#define ActRemMchAnsQstStd (ActChgCrsTT1stDay + 201)
|
||||
#define ActAnsMchQstStd (ActChgCrsTT1stDay + 202)
|
||||
#define ActRefMchStd (ActChgCrsTT1stDay + 203)
|
||||
|
||||
#define ActSeeMyMchResCrs (ActChgCrsTT1stDay + 203)
|
||||
#define ActSeeMyMchResGam (ActChgCrsTT1stDay + 204)
|
||||
#define ActSeeMyMchResMch (ActChgCrsTT1stDay + 205)
|
||||
#define ActSeeOneMchResMe (ActChgCrsTT1stDay + 206)
|
||||
#define ActSeeMyMchResCrs (ActChgCrsTT1stDay + 204)
|
||||
#define ActSeeMyMchResGam (ActChgCrsTT1stDay + 205)
|
||||
#define ActSeeMyMchResMch (ActChgCrsTT1stDay + 206)
|
||||
#define ActSeeOneMchResMe (ActChgCrsTT1stDay + 207)
|
||||
|
||||
#define ActReqSeeUsrMchRes (ActChgCrsTT1stDay + 207)
|
||||
#define ActSeeUsrMchResCrs (ActChgCrsTT1stDay + 208)
|
||||
#define ActSeeUsrMchResGam (ActChgCrsTT1stDay + 209)
|
||||
#define ActSeeUsrMchResMch (ActChgCrsTT1stDay + 210)
|
||||
#define ActSeeOneMchResOth (ActChgCrsTT1stDay + 211)
|
||||
#define ActReqSeeUsrMchRes (ActChgCrsTT1stDay + 208)
|
||||
#define ActSeeUsrMchResCrs (ActChgCrsTT1stDay + 209)
|
||||
#define ActSeeUsrMchResGam (ActChgCrsTT1stDay + 210)
|
||||
#define ActSeeUsrMchResMch (ActChgCrsTT1stDay + 211)
|
||||
#define ActSeeOneMchResOth (ActChgCrsTT1stDay + 212)
|
||||
|
||||
#define ActChgVisResMchUsr (ActChgCrsTT1stDay + 212)
|
||||
#define ActChgVisResMchUsr (ActChgCrsTT1stDay + 213)
|
||||
|
||||
#define ActLstOneGam (ActChgCrsTT1stDay + 213)
|
||||
#define ActLstOneGam (ActChgCrsTT1stDay + 214)
|
||||
|
||||
#define ActFrmNewGam (ActChgCrsTT1stDay + 214)
|
||||
#define ActEdiOneGam (ActChgCrsTT1stDay + 215)
|
||||
#define ActNewGam (ActChgCrsTT1stDay + 216)
|
||||
#define ActChgGam (ActChgCrsTT1stDay + 217)
|
||||
#define ActReqRemGam (ActChgCrsTT1stDay + 218)
|
||||
#define ActRemGam (ActChgCrsTT1stDay + 219)
|
||||
#define ActHidGam (ActChgCrsTT1stDay + 220)
|
||||
#define ActUnhGam (ActChgCrsTT1stDay + 221)
|
||||
#define ActAddOneGamQst (ActChgCrsTT1stDay + 222)
|
||||
#define ActGamLstTstQst (ActChgCrsTT1stDay + 223)
|
||||
#define ActAddTstQstToGam (ActChgCrsTT1stDay + 224)
|
||||
#define ActReqRemGamQst (ActChgCrsTT1stDay + 225)
|
||||
#define ActRemGamQst (ActChgCrsTT1stDay + 226)
|
||||
#define ActUp_GamQst (ActChgCrsTT1stDay + 227)
|
||||
#define ActDwnGamQst (ActChgCrsTT1stDay + 228)
|
||||
#define ActReqLnkGam (ActChgCrsTT1stDay + 229)
|
||||
#define ActFrmNewGam (ActChgCrsTT1stDay + 215)
|
||||
#define ActEdiOneGam (ActChgCrsTT1stDay + 216)
|
||||
#define ActNewGam (ActChgCrsTT1stDay + 217)
|
||||
#define ActChgGam (ActChgCrsTT1stDay + 218)
|
||||
#define ActReqRemGam (ActChgCrsTT1stDay + 219)
|
||||
#define ActRemGam (ActChgCrsTT1stDay + 220)
|
||||
#define ActHidGam (ActChgCrsTT1stDay + 221)
|
||||
#define ActUnhGam (ActChgCrsTT1stDay + 222)
|
||||
#define ActAddOneGamQst (ActChgCrsTT1stDay + 223)
|
||||
#define ActGamLstTstQst (ActChgCrsTT1stDay + 224)
|
||||
#define ActAddTstQstToGam (ActChgCrsTT1stDay + 225)
|
||||
#define ActReqRemGamQst (ActChgCrsTT1stDay + 226)
|
||||
#define ActRemGamQst (ActChgCrsTT1stDay + 227)
|
||||
#define ActUp_GamQst (ActChgCrsTT1stDay + 228)
|
||||
#define ActDwnGamQst (ActChgCrsTT1stDay + 229)
|
||||
#define ActReqLnkGam (ActChgCrsTT1stDay + 230)
|
||||
|
||||
#define ActSeeSvy (ActChgCrsTT1stDay + 230)
|
||||
#define ActAnsSvy (ActChgCrsTT1stDay + 231)
|
||||
#define ActFrmNewSvy (ActChgCrsTT1stDay + 232)
|
||||
#define ActEdiOneSvy (ActChgCrsTT1stDay + 233)
|
||||
#define ActNewSvy (ActChgCrsTT1stDay + 234)
|
||||
#define ActChgSvy (ActChgCrsTT1stDay + 235)
|
||||
#define ActReqRemSvy (ActChgCrsTT1stDay + 236)
|
||||
#define ActRemSvy (ActChgCrsTT1stDay + 237)
|
||||
#define ActReqRstSvy (ActChgCrsTT1stDay + 238)
|
||||
#define ActRstSvy (ActChgCrsTT1stDay + 239)
|
||||
#define ActHidSvy (ActChgCrsTT1stDay + 240)
|
||||
#define ActUnhSvy (ActChgCrsTT1stDay + 241)
|
||||
#define ActReqLnkSvy (ActChgCrsTT1stDay + 242)
|
||||
#define ActSeeSvy (ActChgCrsTT1stDay + 231)
|
||||
#define ActAnsSvy (ActChgCrsTT1stDay + 232)
|
||||
#define ActFrmNewSvy (ActChgCrsTT1stDay + 233)
|
||||
#define ActEdiOneSvy (ActChgCrsTT1stDay + 234)
|
||||
#define ActNewSvy (ActChgCrsTT1stDay + 235)
|
||||
#define ActChgSvy (ActChgCrsTT1stDay + 236)
|
||||
#define ActReqRemSvy (ActChgCrsTT1stDay + 237)
|
||||
#define ActRemSvy (ActChgCrsTT1stDay + 238)
|
||||
#define ActReqRstSvy (ActChgCrsTT1stDay + 239)
|
||||
#define ActRstSvy (ActChgCrsTT1stDay + 240)
|
||||
#define ActHidSvy (ActChgCrsTT1stDay + 241)
|
||||
#define ActUnhSvy (ActChgCrsTT1stDay + 242)
|
||||
#define ActReqLnkSvy (ActChgCrsTT1stDay + 243)
|
||||
|
||||
#define ActEdiOneSvyQst (ActChgCrsTT1stDay + 243)
|
||||
#define ActRcvSvyQst (ActChgCrsTT1stDay + 244)
|
||||
#define ActReqRemSvyQst (ActChgCrsTT1stDay + 245)
|
||||
#define ActRemSvyQst (ActChgCrsTT1stDay + 246)
|
||||
#define ActEdiOneSvyQst (ActChgCrsTT1stDay + 244)
|
||||
#define ActRcvSvyQst (ActChgCrsTT1stDay + 245)
|
||||
#define ActReqRemSvyQst (ActChgCrsTT1stDay + 246)
|
||||
#define ActRemSvyQst (ActChgCrsTT1stDay + 247)
|
||||
|
||||
/*****************************************************************************/
|
||||
/******************************** Files tab **********************************/
|
||||
|
|
|
@ -981,7 +981,8 @@ void Asg_GetNotifAssignment (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
|
|||
|
||||
void Asg_PutParamAsgCod (long AsgCod)
|
||||
{
|
||||
Par_PutHiddenParamLong (NULL,"AsgCod",AsgCod);
|
||||
if (AsgCod > 0)
|
||||
Par_PutHiddenParamLong (NULL,"AsgCod",AsgCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
#include "swad_alert.h"
|
||||
#include "swad_assignment.h"
|
||||
#include "swad_assignment_database.h"
|
||||
#include "swad_assignment_resource.h"
|
||||
#include "swad_error.h"
|
||||
#include "swad_form.h"
|
||||
#include "swad_pagination.h"
|
||||
|
@ -56,7 +57,7 @@ void AsgRsc_GetLinkToAssignment (void)
|
|||
Err_WrongAssignmentExit ();
|
||||
|
||||
/***** Get assignment title *****/
|
||||
Asg_DB_GetAssignmentTitleByCod (Assignments.AsgCod,Title);
|
||||
AsgRsc_GetTitleFromAsgCod (Assignments.AsgCod,Title,sizeof (Title) - 1);
|
||||
|
||||
/***** Copy link to assignment into resource clipboard *****/
|
||||
Prg_DB_CopyToClipboard (PrgRsc_ASSIGNMENT,Assignments.AsgCod);
|
||||
|
@ -80,26 +81,29 @@ void AsgRsc_WriteAssignmentInCrsProgram (long AsgCod,bool PutFormToGo,
|
|||
const char *Icon,const char *IconTitle)
|
||||
{
|
||||
extern const char *Txt_Actions[Act_NUM_ACTIONS];
|
||||
Act_Action_t NextAction;
|
||||
char Title[Asg_MAX_BYTES_ASSIGNMENT_TITLE + 1];
|
||||
|
||||
/***** Get assignment title *****/
|
||||
Asg_DB_GetAssignmentTitleByCod (AsgCod,Title);
|
||||
AsgRsc_GetTitleFromAsgCod (AsgCod,Title,sizeof (Title) - 1);
|
||||
|
||||
/***** Begin form to go to assignment *****/
|
||||
if (PutFormToGo)
|
||||
{
|
||||
Frm_BeginForm (ActSeeOneAsg);
|
||||
NextAction = (AsgCod > 0) ? ActSeeOneAsg : // Assignment specified
|
||||
ActSeeAsg; // All assignments
|
||||
Frm_BeginForm (NextAction);
|
||||
Asg_PutParamAsgCod (AsgCod);
|
||||
// TODO: In the listing of assignments, the page is always the first.
|
||||
// The page should be that corresponding to the selected assignment.
|
||||
HTM_BUTTON_Submit_Begin (Txt_Actions[ActSeeOneAsg],
|
||||
HTM_BUTTON_Submit_Begin (Txt_Actions[NextAction],
|
||||
"class=\"LM BT_LINK PRG_LNK_%s\"",
|
||||
The_GetSuffix ());
|
||||
}
|
||||
|
||||
/***** Icon depending on type ******/
|
||||
if (PutFormToGo)
|
||||
Ico_PutIconLink (Icon,Ico_BLACK,ActSeeOneAsg);
|
||||
Ico_PutIconLink (Icon,Ico_BLACK,NextAction);
|
||||
else
|
||||
Ico_PutIconOn (Icon,Ico_BLACK,IconTitle);
|
||||
|
||||
|
@ -124,7 +128,12 @@ void AsgRsc_GetTitleFromAsgCod (long AsgCod,char *Title,size_t TitleSize)
|
|||
{
|
||||
char TitleFromDB[Asg_MAX_BYTES_ASSIGNMENT_TITLE + 1];
|
||||
|
||||
/***** Get assignment title *****/
|
||||
Asg_DB_GetAssignmentTitleByCod (AsgCod,TitleFromDB);
|
||||
Str_Copy (Title,TitleFromDB,TitleSize);
|
||||
if (AsgCod > 0)
|
||||
{
|
||||
/***** Get assignment title *****/
|
||||
Asg_DB_GetAssignmentTitleByCod (AsgCod,TitleFromDB);
|
||||
Str_Copy (Title,TitleFromDB,TitleSize);
|
||||
}
|
||||
else
|
||||
Str_Copy (Title,"?",TitleSize);
|
||||
}
|
||||
|
|
|
@ -809,7 +809,8 @@ static void Att_PutParamSelectedAttCod (void *Events)
|
|||
|
||||
void Att_PutParamAttCod (long AttCod)
|
||||
{
|
||||
Par_PutHiddenParamLong (NULL,"AttCod",AttCod);
|
||||
if (AttCod > 0)
|
||||
Par_PutHiddenParamLong (NULL,"AttCod",AttCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#include "swad_alert.h"
|
||||
#include "swad_attendance.h"
|
||||
#include "swad_attendance_database.h"
|
||||
#include "swad_attendance_resource.h"
|
||||
#include "swad_error.h"
|
||||
#include "swad_form.h"
|
||||
#include "swad_program_database.h"
|
||||
|
@ -46,7 +47,7 @@ void AttRsc_GetLinkToEvent (void)
|
|||
Err_WrongEventExit ();
|
||||
|
||||
/***** Get attendance event title *****/
|
||||
Att_DB_GetAttEventTitle (AttCod,Title);
|
||||
AttRsc_GetTitleFromAttCod (AttCod,Title,sizeof (Title) - 1);
|
||||
|
||||
/***** Copy link to attendance event into resource clipboard *****/
|
||||
Prg_DB_CopyToClipboard (PrgRsc_ATTENDANCE_EVENT,AttCod);
|
||||
|
@ -67,25 +68,28 @@ void AttRsc_WriteAttEventInCrsProgram (long AttCod,bool PutFormToGo,
|
|||
const char *Icon,const char *IconTitle)
|
||||
{
|
||||
extern const char *Txt_Actions[Act_NUM_ACTIONS];
|
||||
Act_Action_t NextAction;
|
||||
char Title[Att_MAX_BYTES_ATTENDANCE_EVENT_TITLE + 1];
|
||||
|
||||
/***** Get game title *****/
|
||||
Att_DB_GetAttEventTitle (AttCod,Title);
|
||||
AttRsc_GetTitleFromAttCod (AttCod,Title,sizeof (Title) - 1);
|
||||
|
||||
/***** Begin form to go to game *****/
|
||||
if (PutFormToGo)
|
||||
{
|
||||
Frm_BeginForm (ActSeeOneAtt);
|
||||
NextAction = (AttCod > 0) ? ActSeeOneAtt : // Attendance events specified
|
||||
ActSeeAtt; // All attendance events
|
||||
Frm_BeginForm (NextAction);
|
||||
Att_PutParamAttCod (AttCod);
|
||||
Att_PutParamsCodGrps (AttCod);
|
||||
HTM_BUTTON_Submit_Begin (Txt_Actions[ActSeeOneAtt],
|
||||
HTM_BUTTON_Submit_Begin (Txt_Actions[NextAction],
|
||||
"class=\"LM BT_LINK PRG_LNK_%s\"",
|
||||
The_GetSuffix ());
|
||||
}
|
||||
|
||||
/***** Icon depending on type ******/
|
||||
if (PutFormToGo)
|
||||
Ico_PutIconLink (Icon,Ico_BLACK,ActSeeOneAtt);
|
||||
Ico_PutIconLink (Icon,Ico_BLACK,NextAction);
|
||||
else
|
||||
Ico_PutIconOn (Icon,Ico_BLACK,IconTitle);
|
||||
|
||||
|
@ -110,7 +114,12 @@ void AttRsc_GetTitleFromAttCod (long AttCod,char *Title,size_t TitleSize)
|
|||
{
|
||||
char TitleFromDB[Att_MAX_BYTES_ATTENDANCE_EVENT_TITLE + 1];
|
||||
|
||||
/***** Get attendance event title *****/
|
||||
Att_DB_GetAttEventTitle (AttCod,TitleFromDB);
|
||||
Str_Copy (Title,TitleFromDB,TitleSize);
|
||||
if (AttCod > 0)
|
||||
{
|
||||
/***** Get attendance event title *****/
|
||||
Att_DB_GetAttEventTitle (AttCod,TitleFromDB);
|
||||
Str_Copy (Title,TitleFromDB,TitleSize);
|
||||
}
|
||||
else
|
||||
Str_Copy (Title,"?",TitleSize);
|
||||
}
|
||||
|
|
|
@ -1316,8 +1316,8 @@ static bool Brw_CheckIfICanEditFileOrFolder (unsigned Level);
|
|||
static bool Brw_CheckIfICanCreateIntoFolder (unsigned Level);
|
||||
static bool Brw_CheckIfICanModifySharedFileOrFolder (void);
|
||||
static bool Brw_CheckIfICanModifyPrivateFileOrFolder (void);
|
||||
static bool Brw_CheckIfICanViewProjectDocuments (long PrjCod);
|
||||
static bool Brw_CheckIfICanViewProjectAssessment (long PrjCod);
|
||||
static bool Prj_CheckIfICanViewProjectDocuments (long PrjCod);
|
||||
static bool Prj_CheckIfICanViewProjectAssessment (long PrjCod);
|
||||
static bool Brw_CheckIfICanModifyPrjDocFileOrFolder (void);
|
||||
static bool Brw_CheckIfICanModifyPrjAssFileOrFolder (void);
|
||||
|
||||
|
@ -1986,10 +1986,7 @@ void Brw_GetParAndInitFileBrowser (void)
|
|||
Brw_SetFullPathInTree ();
|
||||
|
||||
/***** Get other parameters *****/
|
||||
if (Brw_GetIfProjectFileBrowser ())
|
||||
/* Get project code */
|
||||
Prj_SetPrjCod (Prj_GetParamPrjCod ());
|
||||
else if (Brw_GetIfCrsAssigWorksFileBrowser ())
|
||||
if (Brw_GetIfCrsAssigWorksFileBrowser ())
|
||||
{
|
||||
/* Get lists of the selected users if not already got */
|
||||
Usr_GetListsSelectedEncryptedUsrsCods (&Gbl.Usrs.Selected);
|
||||
|
@ -2204,7 +2201,8 @@ static void Brw_GetDataCurrentGrp (void)
|
|||
|
||||
void Brw_PutHiddenParamFilCod (long FilCod)
|
||||
{
|
||||
Par_PutHiddenParamLong (NULL,"FilCod",FilCod);
|
||||
if (FilCod > 0)
|
||||
Par_PutHiddenParamLong (NULL,"FilCod",FilCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -2254,8 +2252,7 @@ void Brw_PutParamsFileBrowser (const char *PathInTree,const char *FilFolLnkName,
|
|||
Par_PutHiddenParamString (NULL,"Path",PathInTree);
|
||||
if (FilFolLnkName)
|
||||
Par_PutHiddenParamString (NULL,Brw_FileTypeParamName[FileType],FilFolLnkName);
|
||||
if (FilCod > 0)
|
||||
Brw_PutHiddenParamFilCod (FilCod);
|
||||
Brw_PutHiddenParamFilCod (FilCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -2989,55 +2986,25 @@ static void Brw_ShowFileBrowserNormal (void)
|
|||
/************* Show file browser with the documents of a project *************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Brw_ShowFileBrowserProject (void)
|
||||
void Brw_ShowFileBrowserProject (long PrjCod)
|
||||
{
|
||||
extern const char *Hlp_ASSESSMENT_Projects;
|
||||
struct Prj_Project Prj;
|
||||
Brw_WriteTopBeforeShowingFileBrowser ();
|
||||
|
||||
/***** Allocate memory for the project *****/
|
||||
Prj_AllocMemProject (&Prj);
|
||||
if (Prj_CheckIfICanViewProjectDocuments (PrjCod))
|
||||
{
|
||||
/***** Show the tree with the project documents *****/
|
||||
Gbl.FileBrowser.Type = Brw_ADMI_DOC_PRJ;
|
||||
Brw_InitializeFileBrowser ();
|
||||
Brw_ShowFileBrowser ();
|
||||
}
|
||||
|
||||
/***** Get project data *****/
|
||||
Prj.PrjCod = Prj_GetPrjCod ();
|
||||
Prj_GetDataOfProjectByCod (&Prj);
|
||||
|
||||
/***** Begin box *****/
|
||||
Box_BoxBegin (NULL,Prj.Title,
|
||||
NULL,NULL,
|
||||
Hlp_ASSESSMENT_Projects,Box_NOT_CLOSABLE);
|
||||
|
||||
/***** Show the project *****/
|
||||
Prj_ShowOneUniqueProject (&Prj);
|
||||
|
||||
/***** Show project file browsers *****/
|
||||
if (Brw_CheckIfICanViewProjectFiles (Prj.PrjCod))
|
||||
{
|
||||
Brw_WriteTopBeforeShowingFileBrowser ();
|
||||
|
||||
if (Brw_CheckIfICanViewProjectDocuments (Prj.PrjCod))
|
||||
{
|
||||
/***** Show the tree with the project documents *****/
|
||||
Gbl.FileBrowser.Type = Brw_ADMI_DOC_PRJ;
|
||||
Brw_InitializeFileBrowser ();
|
||||
Brw_ShowFileBrowser ();
|
||||
}
|
||||
|
||||
if (Brw_CheckIfICanViewProjectAssessment (Prj.PrjCod))
|
||||
{
|
||||
/***** Show the tree with the project assessment *****/
|
||||
Gbl.FileBrowser.Type = Brw_ADMI_ASS_PRJ;
|
||||
Brw_InitializeFileBrowser ();
|
||||
Brw_ShowFileBrowser ();
|
||||
}
|
||||
}
|
||||
else
|
||||
Ale_ShowAlert (Ale_WARNING,"You have no access to project files.");
|
||||
|
||||
/***** End box *****/
|
||||
Box_BoxEnd ();
|
||||
|
||||
/***** Free memory of the project *****/
|
||||
Prj_FreeMemProject (&Prj);
|
||||
if (Prj_CheckIfICanViewProjectAssessment (PrjCod))
|
||||
{
|
||||
/***** Show the tree with the project assessment *****/
|
||||
Gbl.FileBrowser.Type = Brw_ADMI_ASS_PRJ;
|
||||
Brw_InitializeFileBrowser ();
|
||||
Brw_ShowFileBrowser ();
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -3353,7 +3320,7 @@ void Brw_ShowAgainFileBrowserOrWorks (void)
|
|||
else if (Brw_GetIfCrsAssigWorksFileBrowser ())
|
||||
Brw_ShowFileBrowsersAsgWrkCrs ();
|
||||
else if (Brw_GetIfProjectFileBrowser ())
|
||||
Brw_ShowFileBrowserProject ();
|
||||
Prj_ShowProjectWithFileBrowser ();
|
||||
else
|
||||
Brw_ShowFileBrowserNormal ();
|
||||
|
||||
|
@ -9605,7 +9572,7 @@ static bool Brw_CheckIfICanModifyPrivateFileOrFolder (void)
|
|||
/******************** Can I view files of a given project? *******************/
|
||||
/*****************************************************************************/
|
||||
|
||||
bool Brw_CheckIfICanViewProjectFiles (long PrjCod)
|
||||
bool Prj_CheckIfICanViewProjectFiles (long PrjCod)
|
||||
{
|
||||
switch (Gbl.Usrs.Me.Role.Logged)
|
||||
{
|
||||
|
@ -9624,7 +9591,7 @@ bool Brw_CheckIfICanViewProjectFiles (long PrjCod)
|
|||
/******** Check if I have permission to view project documents zone **********/
|
||||
/*****************************************************************************/
|
||||
|
||||
static bool Brw_CheckIfICanViewProjectDocuments (long PrjCod)
|
||||
static bool Prj_CheckIfICanViewProjectDocuments (long PrjCod)
|
||||
{
|
||||
switch (Gbl.Usrs.Me.Role.Logged)
|
||||
{
|
||||
|
@ -9644,7 +9611,7 @@ static bool Brw_CheckIfICanViewProjectDocuments (long PrjCod)
|
|||
/******** Check if I have permission to view project assessment zone *********/
|
||||
/*****************************************************************************/
|
||||
|
||||
static bool Brw_CheckIfICanViewProjectAssessment (long PrjCod)
|
||||
static bool Prj_CheckIfICanViewProjectAssessment (long PrjCod)
|
||||
{
|
||||
switch (Gbl.Usrs.Me.Role.Logged)
|
||||
{
|
||||
|
|
|
@ -207,6 +207,9 @@ void Brw_PutHiddenParamFullTreeIfSelected (void *FullTree);
|
|||
void Brw_CreateDirDownloadTmp (void);
|
||||
|
||||
void Brw_AskEditWorksCrs (void);
|
||||
|
||||
void Brw_ShowFileBrowserProject (long PrjCod);
|
||||
|
||||
void Brw_AskRemFileFromTree (void);
|
||||
void Brw_RemFileFromTree (void);
|
||||
void Brw_RemFolderFromTree (void);
|
||||
|
@ -244,7 +247,7 @@ void Brw_GetCrsGrpFromFileMetadata (Brw_FileBrowser_t FileBrowser,long Cod,
|
|||
long *CrsCod,
|
||||
long *GrpCod);
|
||||
|
||||
bool Brw_CheckIfICanViewProjectFiles (long PrjCod);
|
||||
bool Prj_CheckIfICanViewProjectFiles (long PrjCod);
|
||||
|
||||
long Brw_GetCodForFileBrowser (void);
|
||||
long Brw_GetZoneUsrCodForFileBrowser (void);
|
||||
|
|
|
@ -95,6 +95,7 @@ void BrwRsc_WriteDocFileNameInCrsProgram (long FilCod,bool PutFormToGo,
|
|||
const char *Icon,const char *IconTitle)
|
||||
{
|
||||
extern const char *Txt_Actions[Act_NUM_ACTIONS];
|
||||
Act_Action_t NextAction;
|
||||
struct Brw_FileMetadata FileMetadata;
|
||||
|
||||
/***** Get file metadata *****/
|
||||
|
@ -104,12 +105,14 @@ void BrwRsc_WriteDocFileNameInCrsProgram (long FilCod,bool PutFormToGo,
|
|||
/***** Begin form to go to file data *****/
|
||||
if (PutFormToGo)
|
||||
{
|
||||
Frm_BeginForm (ActReqDatSeeDocCrs);
|
||||
NextAction = (FileMetadata.FilCod > 0) ? ActReqDatSeeDocCrs : // Document specified
|
||||
ActSeeAdmDocCrsGrp; // All documents
|
||||
Frm_BeginForm (NextAction);
|
||||
Brw_PutParamsFileBrowser (NULL, // Not used
|
||||
NULL, // Not used
|
||||
Brw_IS_UNKNOWN, // Not used
|
||||
FileMetadata.FilCod);
|
||||
HTM_BUTTON_Submit_Begin (Txt_Actions[ActReqDatSeeDocCrs],
|
||||
HTM_BUTTON_Submit_Begin (Txt_Actions[NextAction],
|
||||
"class=\"LM BT_LINK PRG_LNK_%s\"",
|
||||
The_GetSuffix ());
|
||||
}
|
||||
|
@ -124,7 +127,7 @@ void BrwRsc_WriteDocFileNameInCrsProgram (long FilCod,bool PutFormToGo,
|
|||
break;
|
||||
case Brw_IS_LINK:
|
||||
if (PutFormToGo)
|
||||
Ico_PutIconLink (Icon,Ico_BLACK,ActReqDatSeeDocCrs);
|
||||
Ico_PutIconLink (Icon,Ico_BLACK,NextAction);
|
||||
else
|
||||
Ico_PutIconOn (Icon,Ico_BLACK,IconTitle);
|
||||
break;
|
||||
|
@ -152,6 +155,7 @@ void BrwRsc_WriteMrkFileNameInCrsProgram (long FilCod,bool PutFormToGo,
|
|||
const char *Icon,const char *IconTitle)
|
||||
{
|
||||
extern const char *Txt_Actions[Act_NUM_ACTIONS];
|
||||
Act_Action_t NextAction;
|
||||
struct Brw_FileMetadata FileMetadata;
|
||||
|
||||
/***** Get file metadata *****/
|
||||
|
@ -161,19 +165,21 @@ void BrwRsc_WriteMrkFileNameInCrsProgram (long FilCod,bool PutFormToGo,
|
|||
/***** Begin form to go to file data *****/
|
||||
if (PutFormToGo)
|
||||
{
|
||||
Frm_BeginForm (ActReqDatSeeMrkCrs);
|
||||
NextAction = (FileMetadata.FilCod > 0) ? ActReqDatSeeMrkCrs : // Marks file specified
|
||||
ActSeeAdmMrk; // All marks files
|
||||
Frm_BeginForm (NextAction);
|
||||
Brw_PutParamsFileBrowser (NULL, // Not used
|
||||
NULL, // Not used
|
||||
Brw_IS_UNKNOWN, // Not used
|
||||
FileMetadata.FilCod);
|
||||
HTM_BUTTON_Submit_Begin (Txt_Actions[ActReqDatSeeMrkCrs],
|
||||
HTM_BUTTON_Submit_Begin (Txt_Actions[NextAction],
|
||||
"class=\"LM BT_LINK PRG_LNK_%s\"",
|
||||
The_GetSuffix ());
|
||||
}
|
||||
|
||||
/***** Icon depending on type ******/
|
||||
if (PutFormToGo)
|
||||
Ico_PutIconLink (Icon,Ico_BLACK,ActReqDatSeeMrkCrs);
|
||||
Ico_PutIconLink (Icon,Ico_BLACK,NextAction);
|
||||
else
|
||||
Ico_PutIconOn (Icon,Ico_BLACK,IconTitle);
|
||||
|
||||
|
@ -197,13 +203,18 @@ void BrwRsc_GetFileNameFromFilCod (long FilCod,char *FileName,size_t FileNameSiz
|
|||
{
|
||||
struct Brw_FileMetadata FileMetadata;
|
||||
|
||||
/***** Return nothing on error *****/
|
||||
FileName[0] = '\0'; // Return nothing on error
|
||||
if (FilCod > 0)
|
||||
{
|
||||
/***** Return nothing on error *****/
|
||||
FileName[0] = '\0'; // Return nothing on error
|
||||
|
||||
/***** Get file metadata *****/
|
||||
FileMetadata.FilCod = FilCod;
|
||||
Brw_GetFileMetadataByCod (&FileMetadata);
|
||||
/***** Get file metadata *****/
|
||||
FileMetadata.FilCod = FilCod;
|
||||
Brw_GetFileMetadataByCod (&FileMetadata);
|
||||
|
||||
/***** Copy file name into summary string *****/
|
||||
Str_Copy (FileName,FileMetadata.FilFolLnk.Name,FileNameSize);
|
||||
/***** Copy file name into summary string *****/
|
||||
Str_Copy (FileName,FileMetadata.FilFolLnk.Name,FileNameSize);
|
||||
}
|
||||
else
|
||||
Str_Copy (FileName,"?",FileNameSize);
|
||||
}
|
||||
|
|
|
@ -1541,7 +1541,8 @@ static void Cfe_PutParamExaCodToEdit (void *ExaCod)
|
|||
|
||||
void Cfe_PutHiddenParamExaCod (long ExaCod)
|
||||
{
|
||||
Par_PutHiddenParamLong (NULL,"ExaCod",ExaCod);
|
||||
if (ExaCod > 0)
|
||||
Par_PutHiddenParamLong (NULL,"ExaCod",ExaCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -1676,7 +1677,7 @@ static void Cfe_GetNotifContentCallForExam (const struct Cfe_CallsForExams *Call
|
|||
/*****************************************************************************/
|
||||
|
||||
void Cfe_BuildSessionAndDate (const struct Cfe_CallsForExams *CallsForExams,
|
||||
char SessionAndDate[Cfe_MAX_BYTES_SESSION_AND_DATE])
|
||||
char SessionAndDate[Cfe_MAX_BYTES_SESSION_AND_DATE])
|
||||
{
|
||||
char StrExamDate[Cns_MAX_BYTES_DATE + 1];
|
||||
|
||||
|
|
|
@ -41,33 +41,24 @@ void Cfe_GetLinkToCallForExam (void)
|
|||
extern const char *Txt_Link_to_resource_X_copied_into_clipboard;
|
||||
struct Cfe_CallsForExams *CallsForExams = Cfe_GetGlobalCallsForExams ();
|
||||
long ExaCod;
|
||||
char SessionAndDate[Cfe_MAX_BYTES_SESSION_AND_DATE];
|
||||
|
||||
/***** Reset calls for exams context *****/
|
||||
Cfe_ResetCallsForExams (CallsForExams);
|
||||
char Title[Cfe_MAX_BYTES_SESSION_AND_DATE];
|
||||
|
||||
/***** Get the code of the call for exam *****/
|
||||
if ((ExaCod = Cfe_GetParamExaCod ()) <= 0)
|
||||
Err_WrongCallForExamExit ();
|
||||
|
||||
/***** Get data of call for exam *****/
|
||||
Cfe_AllocMemCallForExam (CallsForExams);
|
||||
Cfe_GetDataCallForExamFromDB (CallsForExams,ExaCod);
|
||||
|
||||
/***** Session and date of the exam *****/
|
||||
Cfe_BuildSessionAndDate (CallsForExams,SessionAndDate);
|
||||
/***** Get session and date of the exam *****/
|
||||
CfeRsc_GetTitleFromExaCod (ExaCod,Title,sizeof (Title) - 1);
|
||||
|
||||
/***** Copy link to call for exam into resource clipboard *****/
|
||||
Prg_DB_CopyToClipboard (PrgRsc_CALL_FOR_EXAM,ExaCod);
|
||||
|
||||
/***** Write sucess message *****/
|
||||
Ale_ShowAlert (Ale_SUCCESS,Txt_Link_to_resource_X_copied_into_clipboard,
|
||||
SessionAndDate);
|
||||
|
||||
/***** Free memory of the call for exam *****/
|
||||
Cfe_FreeMemCallForExam (CallsForExams);
|
||||
Title);
|
||||
|
||||
/***** Set exam to be highlighted *****/
|
||||
Cfe_ResetCallsForExams (CallsForExams);
|
||||
CallsForExams->HighlightExaCod = ExaCod;
|
||||
|
||||
/***** Show again the list of calls for exams *****/
|
||||
|
@ -82,16 +73,12 @@ void CfeRsc_WriteCallForExamInCrsProgram (long ExaCod,bool PutFormToGo,
|
|||
const char *Icon,const char *IconTitle)
|
||||
{
|
||||
extern const char *Txt_Actions[Act_NUM_ACTIONS];
|
||||
struct Cfe_CallsForExams CallsForExams;
|
||||
char SessionAndDate[Cfe_MAX_BYTES_SESSION_AND_DATE];
|
||||
Act_Action_t NextAction;
|
||||
char Title[Cfe_MAX_BYTES_SESSION_AND_DATE];
|
||||
char *Anchor = NULL;
|
||||
|
||||
/***** Get session and date of the exam *****/
|
||||
Cfe_ResetCallsForExams (&CallsForExams);
|
||||
Cfe_AllocMemCallForExam (&CallsForExams);
|
||||
Cfe_GetDataCallForExamFromDB (&CallsForExams,ExaCod);
|
||||
Cfe_BuildSessionAndDate (&CallsForExams,SessionAndDate);
|
||||
Cfe_FreeMemCallForExam (&CallsForExams);
|
||||
CfeRsc_GetTitleFromExaCod (ExaCod,Title,sizeof (Title) - 1);
|
||||
|
||||
/***** Begin form to download file *****/
|
||||
if (PutFormToGo)
|
||||
|
@ -100,9 +87,11 @@ void CfeRsc_WriteCallForExamInCrsProgram (long ExaCod,bool PutFormToGo,
|
|||
Frm_SetAnchorStr (ExaCod,&Anchor);
|
||||
|
||||
/* Begin form */
|
||||
Frm_BeginFormAnchor (ActSeeOneCfe,Anchor);
|
||||
NextAction = (ExaCod > 0) ? ActSeeOneCfe : // Call for exam specified
|
||||
ActSeeAllCfe; // All calls for exams
|
||||
Frm_BeginFormAnchor (NextAction,Anchor);
|
||||
Cfe_PutHiddenParamExaCod (ExaCod);
|
||||
HTM_BUTTON_Submit_Begin (Txt_Actions[ActSeeOneCfe],
|
||||
HTM_BUTTON_Submit_Begin (Txt_Actions[NextAction],
|
||||
"class=\"LM BT_LINK PRG_LNK_%s\"",
|
||||
The_GetSuffix ());
|
||||
|
||||
|
@ -112,12 +101,12 @@ void CfeRsc_WriteCallForExamInCrsProgram (long ExaCod,bool PutFormToGo,
|
|||
|
||||
/***** Icon depending on type ******/
|
||||
if (PutFormToGo)
|
||||
Ico_PutIconLink (Icon,Ico_BLACK,ActSeeOneCfe);
|
||||
Ico_PutIconLink (Icon,Ico_BLACK,NextAction);
|
||||
else
|
||||
Ico_PutIconOn (Icon,Ico_BLACK,IconTitle);
|
||||
|
||||
/***** Write Name of the course and date of exam *****/
|
||||
HTM_Txt (SessionAndDate);
|
||||
HTM_Txt (Title);
|
||||
|
||||
/***** End form to download file *****/
|
||||
if (PutFormToGo)
|
||||
|
@ -139,17 +128,22 @@ void CfeRsc_GetTitleFromExaCod (long ExaCod,char *Title,size_t TitleSize)
|
|||
struct Cfe_CallsForExams CallsForExams;
|
||||
char SessionAndDate[Cfe_MAX_BYTES_SESSION_AND_DATE];
|
||||
|
||||
/***** Reset calls for exams context *****/
|
||||
Cfe_ResetCallsForExams (&CallsForExams);
|
||||
if (ExaCod > 0)
|
||||
{
|
||||
/***** Reset calls for exams context *****/
|
||||
Cfe_ResetCallsForExams (&CallsForExams);
|
||||
|
||||
/***** Get data of call for exam *****/
|
||||
Cfe_AllocMemCallForExam (&CallsForExams);
|
||||
Cfe_GetDataCallForExamFromDB (&CallsForExams,ExaCod);
|
||||
/***** Get data of call for exam *****/
|
||||
Cfe_AllocMemCallForExam (&CallsForExams);
|
||||
Cfe_GetDataCallForExamFromDB (&CallsForExams,ExaCod);
|
||||
|
||||
/***** Session and date of the exam *****/
|
||||
Cfe_BuildSessionAndDate (&CallsForExams,SessionAndDate);
|
||||
snprintf (Title,TitleSize,"%s: %s",Txt_Call_for_exam,SessionAndDate);
|
||||
/***** Session and date of the exam *****/
|
||||
Cfe_BuildSessionAndDate (&CallsForExams,SessionAndDate);
|
||||
snprintf (Title,TitleSize,"%s: %s",Txt_Call_for_exam,SessionAndDate);
|
||||
|
||||
/***** Free memory of the call for exam *****/
|
||||
Cfe_FreeMemCallForExam (&CallsForExams);
|
||||
/***** Free memory of the call for exam *****/
|
||||
Cfe_FreeMemCallForExam (&CallsForExams);
|
||||
}
|
||||
else
|
||||
Str_Copy (Title,"?",TitleSize);
|
||||
}
|
||||
|
|
|
@ -606,11 +606,12 @@ TODO: Fix bug: error al enviar un mensaje a dos recipientes, error on duplicate
|
|||
|
||||
TODO: Attach pdf files in multimedia.
|
||||
*/
|
||||
#define Log_PLATFORM_VERSION "SWAD 22.30 (2022-09-28)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 22.31 (2022-09-28)"
|
||||
#define CSS_FILE "swad22.22.1.css"
|
||||
#define JS_FILE "swad21.100.js"
|
||||
/*
|
||||
Version 22.31: Sep 28, 2022 TODO: New action to view one project (similar to view project files, but accesible to students). (? lines)
|
||||
Version 22.31: Sep 28, 2022 New action to view one project.
|
||||
Code refactoring in program resources. (332570 lines)
|
||||
Version 22.30: Sep 28, 2022 New module swad_project_resource. (332490 lines)
|
||||
2 changes necessary in database:
|
||||
ALTER TABLE prg_clipboards CHANGE COLUMN Type Type ENUM('non','asg','prj','cfe','exa','gam','svy','doc','mrk','att','for') NOT NULL DEFAULT 'non';
|
||||
|
|
|
@ -739,7 +739,8 @@ void Exa_PutParams (void *Exams)
|
|||
|
||||
void Exa_PutParamExamCod (long ExaCod)
|
||||
{
|
||||
Par_PutHiddenParamLong (NULL,"ExaCod",ExaCod);
|
||||
if (ExaCod > 0)
|
||||
Par_PutHiddenParamLong (NULL,"ExaCod",ExaCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
#include "swad_error.h"
|
||||
#include "swad_exam.h"
|
||||
#include "swad_exam_database.h"
|
||||
#include "swad_exam_resource.h"
|
||||
#include "swad_form.h"
|
||||
#include "swad_program_database.h"
|
||||
|
||||
|
@ -53,7 +54,7 @@ void ExaRsc_GetLinkToExam (void)
|
|||
ExaCod = Exams.ExaCod;
|
||||
|
||||
/***** Get exam title *****/
|
||||
Exa_DB_GetExamTitle (ExaCod,Title);
|
||||
ExaRsc_GetTitleFromExaCod (ExaCod,Title,sizeof (Title) - 1);
|
||||
|
||||
/***** Copy link to exam into resource clipboard *****/
|
||||
Prg_DB_CopyToClipboard (PrgRsc_EXAM,ExaCod);
|
||||
|
@ -74,24 +75,27 @@ void ExaRsc_WriteExamInCrsProgram (long ExaCod,bool PutFormToGo,
|
|||
const char *Icon,const char *IconTitle)
|
||||
{
|
||||
extern const char *Txt_Actions[Act_NUM_ACTIONS];
|
||||
Act_Action_t NextAction;
|
||||
char Title[Exa_MAX_BYTES_TITLE + 1];
|
||||
|
||||
/***** Get exam title *****/
|
||||
Exa_DB_GetExamTitle (ExaCod,Title);
|
||||
ExaRsc_GetTitleFromExaCod (ExaCod,Title,sizeof (Title) - 1);
|
||||
|
||||
/***** Begin form to go to exam *****/
|
||||
if (PutFormToGo)
|
||||
{
|
||||
Frm_BeginForm (ActSeeExa);
|
||||
NextAction = (ExaCod > 0) ? ActSeeExa : // Exam specified
|
||||
ActSeeAllExa; // All exams
|
||||
Frm_BeginForm (NextAction);
|
||||
Exa_PutParamExamCod (ExaCod);
|
||||
HTM_BUTTON_Submit_Begin (Txt_Actions[ActSeeExa],
|
||||
HTM_BUTTON_Submit_Begin (Txt_Actions[NextAction],
|
||||
"class=\"LM BT_LINK PRG_LNK_%s\"",
|
||||
The_GetSuffix ());
|
||||
}
|
||||
|
||||
/***** Icon depending on type ******/
|
||||
if (PutFormToGo)
|
||||
Ico_PutIconLink (Icon,Ico_BLACK,ActSeeExa);
|
||||
Ico_PutIconLink (Icon,Ico_BLACK,NextAction);
|
||||
else
|
||||
Ico_PutIconOn (Icon,Ico_BLACK,IconTitle);
|
||||
|
||||
|
@ -116,7 +120,12 @@ void ExaRsc_GetTitleFromExaCod (long ExaCod,char *Title,size_t TitleSize)
|
|||
{
|
||||
char TitleFromDB[Exa_MAX_BYTES_TITLE + 1];
|
||||
|
||||
/***** Get exam title *****/
|
||||
Exa_DB_GetExamTitle (ExaCod,TitleFromDB);
|
||||
Str_Copy (Title,TitleFromDB,TitleSize);
|
||||
if (ExaCod > 0)
|
||||
{
|
||||
/***** Get exam title *****/
|
||||
Exa_DB_GetExamTitle (ExaCod,TitleFromDB);
|
||||
Str_Copy (Title,TitleFromDB,TitleSize);
|
||||
}
|
||||
else
|
||||
Str_Copy (Title,"?",TitleSize);
|
||||
}
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
#include "swad_form.h"
|
||||
#include "swad_forum.h"
|
||||
#include "swad_forum_database.h"
|
||||
#include "swad_forum_resource.h"
|
||||
#include "swad_global.h"
|
||||
#include "swad_program_database.h"
|
||||
|
||||
|
@ -54,7 +55,7 @@ void ForRsc_GetLinkToThread (void)
|
|||
For_GetParamsForums (&Forums);
|
||||
|
||||
/***** Get thread subject *****/
|
||||
For_DB_GetThreadSubject (Forums.Thread.Current,Subject);
|
||||
ForRsc_GetTitleFromThrCod (Forums.Thread.Current,Subject,sizeof (Subject) - 1);
|
||||
|
||||
/***** Copy link to thread into resource clipboard *****/
|
||||
Prg_DB_CopyToClipboard (PrgRsc_FORUM_THREAD,Forums.Thread.Current);
|
||||
|
@ -81,11 +82,12 @@ void ForRsc_WriteThreadInCrsProgram (long ThrCod,bool PutFormToGo,
|
|||
const char *Icon,const char *IconTitle)
|
||||
{
|
||||
extern const char *Txt_Actions[Act_NUM_ACTIONS];
|
||||
Act_Action_t NextAction;
|
||||
struct For_Forums Forums;
|
||||
char Subject[Cns_MAX_BYTES_SUBJECT + 1];
|
||||
|
||||
/***** Get thread subject *****/
|
||||
For_DB_GetThreadSubject (ThrCod,Subject);
|
||||
ForRsc_GetTitleFromThrCod (ThrCod,Subject,sizeof (Subject) - 1);
|
||||
|
||||
/***** Begin form to go to survey *****/
|
||||
if (PutFormToGo)
|
||||
|
@ -98,17 +100,18 @@ void ForRsc_WriteThreadInCrsProgram (long ThrCod,bool PutFormToGo,
|
|||
Forums.Thread.Selected = ThrCod;
|
||||
// TODO: In the listing of threads, the page is always the first.
|
||||
// The page should be that corresponding to the selected thread.
|
||||
|
||||
Frm_BeginFormAnchor (ActSeePstForCrsUsr,For_FORUM_POSTS_SECTION_ID);
|
||||
NextAction = (ThrCod > 0) ? ActSeePstForCrsUsr : // Thread specified
|
||||
ActSeeForCrsUsr; // All threads
|
||||
Frm_BeginFormAnchor (NextAction,For_FORUM_POSTS_SECTION_ID);
|
||||
For_PutAllHiddenParamsNewPost (&Forums);
|
||||
HTM_BUTTON_Submit_Begin (Txt_Actions[ActSeePstForCrsUsr],
|
||||
HTM_BUTTON_Submit_Begin (Txt_Actions[NextAction],
|
||||
"class=\"LM BT_LINK PRG_LNK_%s\"",
|
||||
The_GetSuffix ());
|
||||
}
|
||||
|
||||
/***** Icon depending on type ******/
|
||||
if (PutFormToGo)
|
||||
Ico_PutIconLink (Icon,Ico_BLACK,ActSeePstForCrsUsr);
|
||||
Ico_PutIconLink (Icon,Ico_BLACK,NextAction);
|
||||
else
|
||||
Ico_PutIconOn (Icon,Ico_BLACK,IconTitle);
|
||||
|
||||
|
@ -133,8 +136,12 @@ void ForRsc_GetTitleFromThrCod (long ThrCod,char *Title,size_t TitleSize)
|
|||
{
|
||||
char Subject[Cns_MAX_BYTES_SUBJECT + 1];
|
||||
|
||||
/***** Get thread subject *****/
|
||||
For_DB_GetThreadSubject (ThrCod,Subject);
|
||||
|
||||
Str_Copy (Title,Subject,TitleSize);
|
||||
if (ThrCod > 0)
|
||||
{
|
||||
/***** Get thread subject *****/
|
||||
For_DB_GetThreadSubject (ThrCod,Subject);
|
||||
Str_Copy (Title,Subject,TitleSize);
|
||||
}
|
||||
else
|
||||
Str_Copy (Title,"?",TitleSize);
|
||||
}
|
||||
|
|
|
@ -800,7 +800,8 @@ void Gam_PutParams (void *Games)
|
|||
|
||||
void Gam_PutParamGameCod (long GamCod)
|
||||
{
|
||||
Par_PutHiddenParamLong (NULL,"GamCod",GamCod);
|
||||
if (GamCod > 0)
|
||||
Par_PutHiddenParamLong (NULL,"GamCod",GamCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -51,7 +51,7 @@ void GamRsc_GetLinkToGame (void)
|
|||
Err_WrongGameExit ();
|
||||
|
||||
/***** Get game title *****/
|
||||
Gam_DB_GetGameTitle (GamCod,Title);
|
||||
GamRsc_GetTitleFromGamCod (GamCod,Title,sizeof (Title) - 1);
|
||||
|
||||
/***** Copy link to game into resource clipboard *****/
|
||||
Prg_DB_CopyToClipboard (PrgRsc_GAME,GamCod);
|
||||
|
@ -72,24 +72,27 @@ void GamRsc_WriteGameInCrsProgram (long GamCod,bool PutFormToGo,
|
|||
const char *Icon,const char *IconTitle)
|
||||
{
|
||||
extern const char *Txt_Actions[Act_NUM_ACTIONS];
|
||||
Act_Action_t NextAction;
|
||||
char Title[Gam_MAX_BYTES_TITLE + 1];
|
||||
|
||||
/***** Get game title *****/
|
||||
Gam_DB_GetGameTitle (GamCod,Title);
|
||||
GamRsc_GetTitleFromGamCod (GamCod,Title,sizeof (Title) - 1);
|
||||
|
||||
/***** Begin form to go to game *****/
|
||||
if (PutFormToGo)
|
||||
{
|
||||
Frm_BeginForm (ActSeeGam);
|
||||
NextAction = (GamCod > 0) ? ActSeeGam : // Game specified
|
||||
ActSeeAllGam; // All games
|
||||
Frm_BeginForm (NextAction);
|
||||
Gam_PutParamGameCod (GamCod);
|
||||
HTM_BUTTON_Submit_Begin (Txt_Actions[ActSeeGam],
|
||||
HTM_BUTTON_Submit_Begin (Txt_Actions[NextAction],
|
||||
"class=\"LM BT_LINK PRG_LNK_%s\"",
|
||||
The_GetSuffix ());
|
||||
}
|
||||
|
||||
/***** Icon depending on type ******/
|
||||
if (PutFormToGo)
|
||||
Ico_PutIconLink (Icon,Ico_BLACK,ActSeeGam);
|
||||
Ico_PutIconLink (Icon,Ico_BLACK,NextAction);
|
||||
else
|
||||
Ico_PutIconOn (Icon,Ico_BLACK,IconTitle);
|
||||
|
||||
|
@ -114,7 +117,12 @@ void GamRsc_GetTitleFromGamCod (long GamCod,char *Title,size_t TitleSize)
|
|||
{
|
||||
char TitleFromDB[Gam_MAX_BYTES_TITLE + 1];
|
||||
|
||||
/***** Get game title *****/
|
||||
Gam_DB_GetGameTitle (GamCod,TitleFromDB);
|
||||
Str_Copy (Title,TitleFromDB,TitleSize);
|
||||
if (GamCod > 0)
|
||||
{
|
||||
/***** Get game title *****/
|
||||
Gam_DB_GetGameTitle (GamCod,TitleFromDB);
|
||||
Str_Copy (Title,TitleFromDB,TitleSize);
|
||||
}
|
||||
else
|
||||
Str_Copy (Title,"?",TitleSize);
|
||||
}
|
||||
|
|
|
@ -122,7 +122,7 @@ static const Act_Action_t Mnu_MenuActions[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_
|
|||
[ 0] = ActSeeAss,
|
||||
[ 1] = ActSeeAsg,
|
||||
[ 2] = ActSeePrj,
|
||||
[ 3] = ActSeeAllExaAnn,
|
||||
[ 3] = ActSeeAllCfe,
|
||||
[ 4] = ActEdiTstQst,
|
||||
[ 5] = ActReqTst,
|
||||
[ 6] = ActSeeAllExa,
|
||||
|
|
|
@ -140,7 +140,7 @@ static const Act_Action_t Ntf_DefaultActions[Ntf_NUM_NOTIFY_EVENTS] =
|
|||
/* Assessment tab */
|
||||
[Ntf_EVENT_ASSIGNMENT ] = ActSeeAsg,
|
||||
[Ntf_EVENT_SURVEY ] = ActSeeAllSvy,
|
||||
[Ntf_EVENT_CALL_FOR_EXAM ] = ActSeeAllExaAnn,
|
||||
[Ntf_EVENT_CALL_FOR_EXAM ] = ActSeeAllCfe,
|
||||
/* Files tab */
|
||||
[Ntf_EVENT_DOCUMENT_FILE ] = ActSeeAdmDocCrsGrp,
|
||||
[Ntf_EVENT_TEACHERS_FILE ] = ActAdmTchCrsGrp,
|
||||
|
|
|
@ -126,6 +126,7 @@ static void PrgRsc_WriteLinkName (const struct Prg_Link *Link,bool PutFormToGo,
|
|||
static void PrgRsc_WriteEmptyLinkInCrsProgram (__attribute__((unused)) long Cod,
|
||||
__attribute__((unused)) bool PutFormToGo,
|
||||
const char *Icon,const char *IconTitle);
|
||||
static void PrgRsc_GetResourceTitleFromLink (struct Prg_Item *Item);
|
||||
static void PrgRsc_GetDataOfLinkFromClipboard (struct Prg_Link *Link,
|
||||
MYSQL_RES **mysql_res);
|
||||
|
||||
|
@ -996,11 +997,6 @@ static void PrgRsc_WriteLinkName (const struct Prg_Link *Link,bool PutFormToGo,
|
|||
[PrgRsc_FORUM_THREAD ] = ForRsc_WriteThreadInCrsProgram,
|
||||
};
|
||||
|
||||
/***** Trivial check: code should be > 0 *****/
|
||||
if (Link->Type != PrgRsc_NONE &&
|
||||
Link->Cod <= 0)
|
||||
return;
|
||||
|
||||
/***** Write link name *****/
|
||||
if (WriteLinkName[Link->Type])
|
||||
WriteLinkName[Link->Type] (Link->Cod,PutFormToGo,Icon,IconTitle);
|
||||
|
@ -1049,10 +1045,6 @@ static void PrgRsc_GetResourceTitleFromLink (struct Prg_Item *Item)
|
|||
/***** Reset title *****/
|
||||
Item->Resource.Title[0] = '\0';
|
||||
|
||||
/***** Trivial check: code should be > 0 *****/
|
||||
if (Item->Resource.Link.Cod <= 0)
|
||||
return;
|
||||
|
||||
/***** Get title *****/
|
||||
if (GetTitle[Item->Resource.Link.Type])
|
||||
GetTitle[Item->Resource.Link.Type] (Item->Resource.Link.Cod,
|
||||
|
|
|
@ -150,6 +150,8 @@ static long Prj_PrjCod = -1L;
|
|||
/***************************** Private prototypes ****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Prj_SetPrjCod (long PrjCod);
|
||||
|
||||
static void Prj_ReqUsrsToSelect (void *Projects);
|
||||
static void Prj_GetSelectedUsrsAndShowTheirPrjs (struct Prj_Projects *Projects);
|
||||
static void Prj_ShowPrjsInCurrentPage (void *Projects);
|
||||
|
@ -265,7 +267,7 @@ static void Prj_PutIconOffLockedUnlocked (const struct Prj_Project *Prj);
|
|||
/******* Set/get project code (used to pass parameter to file browser) *******/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Prj_SetPrjCod (long PrjCod)
|
||||
static void Prj_SetPrjCod (long PrjCod)
|
||||
{
|
||||
Prj_PrjCod = PrjCod;
|
||||
}
|
||||
|
@ -1093,6 +1095,12 @@ static void Prj_PutIconsListProjects (void *Projects)
|
|||
Ico_PutContextualIconToConfigure (ActCfgPrj,
|
||||
NULL,NULL);
|
||||
|
||||
/***** Link to get resource link *****/
|
||||
if (Gbl.Usrs.Me.Role.Logged == Rol_TCH || // Only if I am a teacher
|
||||
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) // or a superuser
|
||||
Ico_PutContextualIconToGetLink (ActReqLnkPrj,NULL,
|
||||
Prj_PutCurrentParams,Projects);
|
||||
|
||||
/***** Put icon to show a figure *****/
|
||||
Fig_PutIconToShowFigure (Fig_PROJECTS);
|
||||
}
|
||||
|
@ -1134,6 +1142,41 @@ static void Prj_PutIconToShowAllData (struct Prj_Projects *Projects)
|
|||
"table.svg",Ico_BLACK);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/***** Show a project and (if possible) a file browser with its documents ****/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Prj_ShowProjectWithFileBrowser (void)
|
||||
{
|
||||
extern const char *Hlp_ASSESSMENT_Projects;
|
||||
struct Prj_Project Prj;
|
||||
|
||||
/***** Allocate memory for the project *****/
|
||||
Prj_AllocMemProject (&Prj);
|
||||
|
||||
/***** Get project data *****/
|
||||
Prj_SetPrjCod (Prj.PrjCod = Prj_GetParamPrjCod ());
|
||||
Prj_GetDataOfProjectByCod (&Prj);
|
||||
|
||||
/***** Begin box *****/
|
||||
Box_BoxBegin (NULL,Prj.Title,
|
||||
NULL,NULL,
|
||||
Hlp_ASSESSMENT_Projects,Box_NOT_CLOSABLE);
|
||||
|
||||
/***** Show the project *****/
|
||||
Prj_ShowOneUniqueProject (&Prj);
|
||||
|
||||
/***** Show project file browsers *****/
|
||||
if (Prj_CheckIfICanViewProjectFiles (Prj.PrjCod))
|
||||
Brw_ShowFileBrowserProject (Prj.PrjCod);
|
||||
|
||||
/***** End box *****/
|
||||
Box_BoxEnd ();
|
||||
|
||||
/***** Free memory of the project *****/
|
||||
Prj_FreeMemProject (&Prj);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/***************** View / edit file browser of one project *******************/
|
||||
/*****************************************************************************/
|
||||
|
@ -1208,7 +1251,7 @@ static void Prj_ShowOneProject (struct Prj_Projects *Projects,
|
|||
struct Prj_Project *Prj,
|
||||
Prj_ProjectView_t ProjectView)
|
||||
{
|
||||
extern const char *Txt_Project_files;
|
||||
extern const char *Txt_Actions[Act_NUM_ACTIONS];
|
||||
extern const char *Txt_Assigned_QUESTION;
|
||||
extern const char *Txt_Yes;
|
||||
extern const char *Txt_No;
|
||||
|
@ -1221,8 +1264,9 @@ static void Prj_ShowOneProject (struct Prj_Projects *Projects,
|
|||
extern const char *Txt_Description;
|
||||
extern const char *Txt_Required_knowledge;
|
||||
extern const char *Txt_Required_materials;
|
||||
Act_Action_t NextAction;
|
||||
char *Anchor = NULL;
|
||||
bool ICanViewProjectFiles = Brw_CheckIfICanViewProjectFiles (Prj->PrjCod);
|
||||
bool ICanViewProjectFiles = Prj_CheckIfICanViewProjectFiles (Prj->PrjCod);
|
||||
const char *ClassLabel;
|
||||
const char *ClassDate;
|
||||
const char *ClassData;
|
||||
|
@ -1352,21 +1396,18 @@ static void Prj_ShowOneProject (struct Prj_Projects *Projects,
|
|||
HTM_ARTICLE_Begin (Anchor);
|
||||
if (Prj->Title[0])
|
||||
{
|
||||
if (ICanViewProjectFiles)
|
||||
{
|
||||
Frm_BeginForm (ActAdmDocPrj);
|
||||
Prj_PutCurrentParams (Projects);
|
||||
HTM_BUTTON_Submit_Begin (Txt_Project_files,
|
||||
"class=\"LT BT_LINK %s_%s\"",
|
||||
Prj->Hidden == Prj_HIDDEN ? "ASG_TITLE_LIGHT" :
|
||||
"ASG_TITLE",
|
||||
The_GetSuffix ());
|
||||
HTM_Txt (Prj->Title);
|
||||
HTM_BUTTON_End ();
|
||||
Frm_EndForm ();
|
||||
}
|
||||
else
|
||||
HTM_Txt (Prj->Title);
|
||||
NextAction = ICanViewProjectFiles ? ActAdmDocPrj :
|
||||
ActSeeOnePrj;
|
||||
Frm_BeginForm (NextAction);
|
||||
Prj_PutCurrentParams (Projects);
|
||||
HTM_BUTTON_Submit_Begin (Txt_Actions[NextAction],
|
||||
"class=\"LT BT_LINK %s_%s\"",
|
||||
Prj->Hidden == Prj_HIDDEN ? "ASG_TITLE_LIGHT" :
|
||||
"ASG_TITLE",
|
||||
The_GetSuffix ());
|
||||
HTM_Txt (Prj->Title);
|
||||
HTM_BUTTON_End ();
|
||||
Frm_EndForm ();
|
||||
}
|
||||
if (Faults.WrongTitle)
|
||||
Prj_PutWarningIcon ();
|
||||
|
@ -3004,7 +3045,8 @@ void Prj_FreeListProjects (struct Prj_Projects *Projects)
|
|||
|
||||
void Prj_PutParamPrjCod (long PrjCod)
|
||||
{
|
||||
Par_PutHiddenParamLong (NULL,"PrjCod",PrjCod);
|
||||
if (PrjCod > 0)
|
||||
Par_PutHiddenParamLong (NULL,"PrjCod",PrjCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -172,7 +172,6 @@ struct Prj_Project
|
|||
/***************************** Public prototypes *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Prj_SetPrjCod (long PrjCod);
|
||||
long Prj_GetPrjCod (void);
|
||||
|
||||
void Prj_ResetProjects (struct Prj_Projects *Projects);
|
||||
|
@ -188,6 +187,7 @@ void Prj_PutParams (struct Prj_Filter *Filter,
|
|||
long PrjCod);
|
||||
void Prj_GetParams (struct Prj_Projects *Projects);
|
||||
|
||||
void Prj_ShowProjectWithFileBrowser (void);
|
||||
void Prj_ShowOneUniqueProject (struct Prj_Project *Prj);
|
||||
|
||||
void Prj_PrintOneProject (void);
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
#include "swad_program_database.h"
|
||||
#include "swad_project.h"
|
||||
#include "swad_project_database.h"
|
||||
#include "swad_project_resource.h"
|
||||
|
||||
/*****************************************************************************/
|
||||
/***************************** Get link to game ******************************/
|
||||
|
@ -38,7 +39,6 @@
|
|||
|
||||
void PrjRsc_GetLinkToProject (void)
|
||||
{
|
||||
extern const char *Txt_Projects;
|
||||
extern const char *Txt_Link_to_resource_X_copied_into_clipboard;
|
||||
struct Prj_Projects Projects;
|
||||
char Title[Prj_MAX_BYTES_TITLE + 1];
|
||||
|
@ -51,10 +51,7 @@ void PrjRsc_GetLinkToProject (void)
|
|||
Projects.PrjCod = Prj_GetParamPrjCod ();
|
||||
|
||||
/***** Get project title *****/
|
||||
if (Projects.PrjCod > 0)
|
||||
Prj_DB_GetProjectTitle (Projects.PrjCod,Title);
|
||||
else
|
||||
Str_Copy (Title,Txt_Projects,sizeof (Title) - 1);
|
||||
PrjRsc_GetTitleFromPrjCod (Projects.PrjCod,Title,sizeof (Title) - 1);
|
||||
|
||||
/***** Copy link to PROJECT into resource clipboard *****/
|
||||
Prg_DB_CopyToClipboard (PrgRsc_PROJECT,Projects.PrjCod);
|
||||
|
@ -75,24 +72,27 @@ void PrjRsc_WriteProjectInCrsProgram (long PrjCod,bool PutFormToGo,
|
|||
const char *Icon,const char *IconTitle)
|
||||
{
|
||||
extern const char *Txt_Actions[Act_NUM_ACTIONS];
|
||||
Act_Action_t NextAction;
|
||||
char Title[Prj_MAX_BYTES_TITLE + 1];
|
||||
|
||||
/***** Get project title *****/
|
||||
Prj_DB_GetProjectTitle (PrjCod,Title);
|
||||
PrjRsc_GetTitleFromPrjCod (PrjCod,Title,sizeof (Title) - 1);
|
||||
|
||||
/***** Begin form to go to project *****/
|
||||
if (PutFormToGo)
|
||||
{
|
||||
Frm_BeginForm (ActPrnOnePrj);
|
||||
Prj_PutParamPrjCod (PrjCod);
|
||||
HTM_BUTTON_Submit_Begin (Txt_Actions[ActPrnOnePrj],
|
||||
"class=\"LM BT_LINK PRG_LNK_%s\"",
|
||||
The_GetSuffix ());
|
||||
NextAction = (PrjCod > 0) ? ActSeeOnePrj : // Project specified
|
||||
ActSeePrj; // All projects
|
||||
Frm_BeginForm (NextAction);
|
||||
Prj_PutParamPrjCod (PrjCod);
|
||||
HTM_BUTTON_Submit_Begin (Txt_Actions[NextAction],
|
||||
"class=\"LM BT_LINK PRG_LNK_%s\"",
|
||||
The_GetSuffix ());
|
||||
}
|
||||
|
||||
/***** Icon depending on type ******/
|
||||
if (PutFormToGo)
|
||||
Ico_PutIconLink (Icon,Ico_BLACK,ActSeePrj);
|
||||
Ico_PutIconLink (Icon,Ico_BLACK,NextAction);
|
||||
else
|
||||
Ico_PutIconOn (Icon,Ico_BLACK,IconTitle);
|
||||
|
||||
|
@ -115,9 +115,16 @@ void PrjRsc_WriteProjectInCrsProgram (long PrjCod,bool PutFormToGo,
|
|||
|
||||
void PrjRsc_GetTitleFromPrjCod (long PrjCod,char *Title,size_t TitleSize)
|
||||
{
|
||||
extern const char *Txt_Projects;
|
||||
char TitleFromDB[Prj_MAX_BYTES_TITLE + 1];
|
||||
|
||||
/***** Get project title *****/
|
||||
Prj_DB_GetProjectTitle (PrjCod,TitleFromDB);
|
||||
Str_Copy (Title,TitleFromDB,TitleSize);
|
||||
if (PrjCod > 0)
|
||||
{
|
||||
/***** Get project title *****/
|
||||
Prj_DB_GetProjectTitle (PrjCod,TitleFromDB);
|
||||
Str_Copy (Title,TitleFromDB,TitleSize);
|
||||
}
|
||||
else
|
||||
/***** Generic title for all projects *****/
|
||||
Str_Copy (Title,Txt_Projects,TitleSize);
|
||||
}
|
||||
|
|
|
@ -1396,7 +1396,8 @@ void Svy_GetNotifSurvey (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
|
|||
|
||||
void Svy_PutParamSvyCod (long SvyCod)
|
||||
{
|
||||
Par_PutHiddenParamLong (NULL,"SvyCod",SvyCod);
|
||||
if (SvyCod > 0)
|
||||
Par_PutHiddenParamLong (NULL,"SvyCod",SvyCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
#include "swad_program_database.h"
|
||||
#include "swad_survey.h"
|
||||
#include "swad_survey_database.h"
|
||||
#include "swad_survey_resource.h"
|
||||
|
||||
/*****************************************************************************/
|
||||
/**************************** Get link to survey *****************************/
|
||||
|
@ -51,7 +52,7 @@ void SvyRsc_GetLinkToSurvey (void)
|
|||
Err_WrongSurveyExit ();
|
||||
|
||||
/***** Get survey title *****/
|
||||
Svy_DB_GetSurveyTitle (SvyCod,Title);
|
||||
SvyRsc_GetTitleFromSvyCod (SvyCod,Title,sizeof (Title) - 1);
|
||||
|
||||
/***** Copy link to survey into resource clipboard *****/
|
||||
Prg_DB_CopyToClipboard (PrgRsc_SURVEY,SvyCod);
|
||||
|
@ -72,24 +73,27 @@ void SvyRsc_WriteSurveyInCrsProgram (long SvyCod,bool PutFormToGo,
|
|||
const char *Icon,const char *IconTitle)
|
||||
{
|
||||
extern const char *Txt_Actions[Act_NUM_ACTIONS];
|
||||
Act_Action_t NextAction;
|
||||
char Title[Svy_MAX_BYTES_SURVEY_TITLE + 1];
|
||||
|
||||
/***** Get survey title *****/
|
||||
Svy_DB_GetSurveyTitle (SvyCod,Title);
|
||||
SvyRsc_GetTitleFromSvyCod (SvyCod,Title,sizeof (Title) - 1);
|
||||
|
||||
/***** Begin form to go to survey *****/
|
||||
if (PutFormToGo)
|
||||
{
|
||||
Frm_BeginForm (ActSeeSvy);
|
||||
NextAction = (SvyCod > 0) ? ActSeeSvy : // Survey specified
|
||||
ActSeeAllSvy; // All surveys
|
||||
Frm_BeginForm (NextAction);
|
||||
Svy_PutParamSvyCod (SvyCod);
|
||||
HTM_BUTTON_Submit_Begin (Txt_Actions[ActSeeSvy],
|
||||
HTM_BUTTON_Submit_Begin (Txt_Actions[NextAction],
|
||||
"class=\"LM BT_LINK PRG_LNK_%s\"",
|
||||
The_GetSuffix ());
|
||||
}
|
||||
|
||||
/***** Icon depending on type ******/
|
||||
if (PutFormToGo)
|
||||
Ico_PutIconLink (Icon,Ico_BLACK,ActSeeSvy);
|
||||
Ico_PutIconLink (Icon,Ico_BLACK,NextAction);
|
||||
else
|
||||
Ico_PutIconOn (Icon,Ico_BLACK,IconTitle);
|
||||
|
||||
|
@ -114,7 +118,12 @@ void SvyRsc_GetTitleFromSvyCod (long SvyCod,char *Title,size_t TitleSize)
|
|||
{
|
||||
char TitleFromDB[Svy_MAX_BYTES_SURVEY_TITLE + 1];
|
||||
|
||||
/***** Get survey title *****/
|
||||
Svy_DB_GetSurveyTitle (SvyCod,TitleFromDB);
|
||||
Str_Copy (Title,TitleFromDB,TitleSize);
|
||||
if (SvyCod > 0)
|
||||
{
|
||||
/***** Get survey title *****/
|
||||
Svy_DB_GetSurveyTitle (SvyCod,TitleFromDB);
|
||||
Str_Copy (Title,TitleFromDB,TitleSize);
|
||||
}
|
||||
else
|
||||
Str_Copy (Title,"?",TitleSize);
|
||||
}
|
||||
|
|
23
swad_text.c
23
swad_text.c
|
@ -31981,29 +31981,6 @@ const char *Txt_project_documents =
|
|||
"project documents"; // Çeviri lazim!
|
||||
#endif
|
||||
|
||||
const char *Txt_Project_files =
|
||||
#if L==1 // ca
|
||||
"Fitxers del projecte";
|
||||
#elif L==2 // de
|
||||
"Projektdateien";
|
||||
#elif L==3 // en
|
||||
"Project files";
|
||||
#elif L==4 // es
|
||||
"Archivos del proyecto";
|
||||
#elif L==5 // fr
|
||||
"Fichiers du project";
|
||||
#elif L==6 // gn
|
||||
"Archivos del proyecto"; // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"File di progetto";
|
||||
#elif L==8 // pl
|
||||
"Pliki projektowe";
|
||||
#elif L==9 // pt
|
||||
"Arquivos do projeto";
|
||||
#elif L==10 // tr
|
||||
"Project files"; // Çeviri lazim!
|
||||
#endif
|
||||
|
||||
const char *Txt_PROJECT_ORDER[Prj_NUM_ORDERS] =
|
||||
{
|
||||
[Prj_ORDER_START_TIME] =
|
||||
|
|
|
@ -8687,7 +8687,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
|
|||
"See projects" // Çeviri lazim!
|
||||
#endif
|
||||
,
|
||||
[ActSeeAllExaAnn] =
|
||||
[ActSeeAllCfe] =
|
||||
#if L==1 // ca
|
||||
"See exam announcements" // Necessita traducció
|
||||
#elif L==2 // de
|
||||
|
@ -9559,29 +9559,52 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
|
|||
"Edit a project" // Precisa de tradução
|
||||
#elif L==10 // tr
|
||||
"Edit a project" // Çeviri lazim!
|
||||
#endif
|
||||
,
|
||||
[ActSeeOnePrj] =
|
||||
#if L==1 // ca
|
||||
"Ver projecte"
|
||||
#elif L==2 // de
|
||||
"Projekt anzeigen"
|
||||
#elif L==3 // en
|
||||
"Show project"
|
||||
#elif L==4 // es
|
||||
"Ver proyecto"
|
||||
#elif L==5 // fr
|
||||
"Voir projet"
|
||||
#elif L==6 // gn
|
||||
"Ver proyecto" // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"Ver progetto"
|
||||
#elif L==8 // pl
|
||||
"Pokaż projekt"
|
||||
#elif L==9 // pt
|
||||
"Mostrar projeto"
|
||||
#elif L==10 // tr
|
||||
"Projeyi göster"
|
||||
#endif
|
||||
,
|
||||
[ActPrnOnePrj] =
|
||||
#if L==1 // ca
|
||||
"Show primt view of a project" // Necessita traducció
|
||||
"Show print view of a project" // Necessita traducció
|
||||
#elif L==2 // de
|
||||
"Show primt view of a project" // Need Übersetzung
|
||||
"Show print view of a project" // Need Übersetzung
|
||||
#elif L==3 // en
|
||||
"Show primt view of a project"
|
||||
"Show print view of a project"
|
||||
#elif L==4 // es
|
||||
"Mostrar vista de impresión de un proyecto"
|
||||
#elif L==5 // fr
|
||||
"Show primt view of a project" // Besoin de traduction
|
||||
"Show print view of a project" // Besoin de traduction
|
||||
#elif L==6 // gn
|
||||
"Mostrar vista de impresión de un proyecto" // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"Show primt view of a project" // Bisogno di traduzione
|
||||
"Show print view of a project" // Bisogno di traduzione
|
||||
#elif L==8 // pl
|
||||
"Show primt view of a project" // Potrzebujesz tlumaczenie
|
||||
"Show print view of a project" // Potrzebujesz tlumaczenie
|
||||
#elif L==9 // pt
|
||||
"Show primt view of a project" // Precisa de tradução
|
||||
"Show print view of a project" // Precisa de tradução
|
||||
#elif L==10 // tr
|
||||
"Show primt view of a project" // Çeviri lazim!
|
||||
"Show print view of a project" // Çeviri lazim!
|
||||
#endif
|
||||
,
|
||||
[ActNewPrj] =
|
||||
|
@ -10069,25 +10092,25 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
|
|||
,
|
||||
[ActAdmDocPrj] =
|
||||
#if L==1 // ca
|
||||
"Manage the documents of a project" // Necessita traducció
|
||||
"Administrar zona de documents de projecte"
|
||||
#elif L==2 // de
|
||||
"Manage the documents of a project" // Need Übersetzung
|
||||
"Bereich Projektdokumente verwalten"
|
||||
#elif L==3 // en
|
||||
"Manage the documents of a project"
|
||||
"Manage project documents zone"
|
||||
#elif L==4 // es
|
||||
"Administrar zona de documentos de un proyecto"
|
||||
"Administrar zona de documentos de proyecto"
|
||||
#elif L==5 // fr
|
||||
"Manage the documents of a project" // Besoin de traduction
|
||||
"Gérer la zone des documents du projet"
|
||||
#elif L==6 // gn
|
||||
"Administrar zona de documentos de un proyecto" // Okoteve traducción
|
||||
"Administrar zona de documentos de proyecto" // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"Manage the documents of a project" // Bisogno di traduzione
|
||||
"Gestisci la zona dei documenti di progetto"
|
||||
#elif L==8 // pl
|
||||
"Manage the documents of a project" // Potrzebujesz tlumaczenie
|
||||
"Zarz&oaogon;dzaj strefą dokumentów projektu"
|
||||
#elif L==9 // pt
|
||||
"Manage the documents of a project" // Precisa de tradução
|
||||
"Gerenciar zona de documentos do projeto"
|
||||
#elif L==10 // tr
|
||||
"Manage the documents of a project" // Çeviri lazim!
|
||||
"Proje belgeleri bölgesini yönet"
|
||||
#endif
|
||||
,
|
||||
[ActReqRemFilDocPrj] =
|
||||
|
|
Loading…
Reference in New Issue