diff --git a/css/swad22.5.css b/css/swad22.7.css similarity index 99% rename from css/swad22.5.css rename to css/swad22.7.css index 17b8f67a..38864af9 100644 --- a/css/swad22.5.css +++ b/css/swad22.7.css @@ -3988,7 +3988,7 @@ table.CELLS_PAD_10 > tbody > tr > td {padding:10px;} .LOG_R_PINK {color:#660000; font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; font-size:11pt;} .LOG_R_DARK {color:#ff8080; font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; font-size:11pt;} -/***************************** Exam announcement *****************************/ +/****************************** Calls for exams ******************************/ /* Bottom space is used for signatures */ .CALL_FOR_EXAM_VISIBLE { @@ -4003,6 +4003,11 @@ table.CELLS_PAD_10 > tbody > tr > td {padding:10px;} padding:25px 25px 125px 25px; opacity:0.3; } +.CALL_FOR_EXAM_TIT + { + font-weight:bold; + text-transform:uppercase; + } /*********************** Media (image/video) uploading ***********************/ .MED_UPLOADER diff --git a/swad_action.c b/swad_action.c index c737f515..cfd9cfa0 100644 --- a/swad_action.c +++ b/swad_action.c @@ -683,6 +683,7 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = [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_GetLinkToFile ,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}, @@ -3777,6 +3778,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un ActReqLnkAdmDocCrs, // #1931 ActSeeCliPrgRsc, // #1932 ActChgLnkPrgRsc, // #1933 + ActReqLnkCfe, // #1934 }; /*****************************************************************************/ diff --git a/swad_action.h b/swad_action.h index 57e89d3a..3e1a4978 100644 --- a/swad_action.h +++ b/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 1933 +#define Act_MAX_ACTION_COD 1934 #define Act_MAX_OPTIONS_IN_MENU_PER_TAB 13 @@ -642,156 +642,157 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to #define ActRemCfe (ActChgCrsTT1stDay + 105) #define ActHidCfe (ActChgCrsTT1stDay + 106) #define ActUnhCfe (ActChgCrsTT1stDay + 107) +#define ActReqLnkCfe (ActChgCrsTT1stDay + 108) -#define ActEdiOneTstQst (ActChgCrsTT1stDay + 108) -#define ActReqImpTstQst (ActChgCrsTT1stDay + 109) -#define ActImpTstQst (ActChgCrsTT1stDay + 110) -#define ActLstTstQst (ActChgCrsTT1stDay + 111) -#define ActRcvTstQst (ActChgCrsTT1stDay + 112) -#define ActReqRemSevTstQst (ActChgCrsTT1stDay + 113) -#define ActRemSevTstQst (ActChgCrsTT1stDay + 114) -#define ActReqRemOneTstQst (ActChgCrsTT1stDay + 115) -#define ActRemOneTstQst (ActChgCrsTT1stDay + 116) -#define ActChgShfTstQst (ActChgCrsTT1stDay + 117) +#define ActEdiOneTstQst (ActChgCrsTT1stDay + 109) +#define ActReqImpTstQst (ActChgCrsTT1stDay + 110) +#define ActImpTstQst (ActChgCrsTT1stDay + 111) +#define ActLstTstQst (ActChgCrsTT1stDay + 112) +#define ActRcvTstQst (ActChgCrsTT1stDay + 113) +#define ActReqRemSevTstQst (ActChgCrsTT1stDay + 114) +#define ActRemSevTstQst (ActChgCrsTT1stDay + 115) +#define ActReqRemOneTstQst (ActChgCrsTT1stDay + 116) +#define ActRemOneTstQst (ActChgCrsTT1stDay + 117) +#define ActChgShfTstQst (ActChgCrsTT1stDay + 118) -#define ActEdiTag (ActChgCrsTT1stDay + 118) -#define ActEnaTag (ActChgCrsTT1stDay + 119) -#define ActDisTag (ActChgCrsTT1stDay + 120) -#define ActRenTag (ActChgCrsTT1stDay + 121) +#define ActEdiTag (ActChgCrsTT1stDay + 119) +#define ActEnaTag (ActChgCrsTT1stDay + 120) +#define ActDisTag (ActChgCrsTT1stDay + 121) +#define ActRenTag (ActChgCrsTT1stDay + 122) -#define ActSeeTst (ActChgCrsTT1stDay + 122) -#define ActReqAssTst (ActChgCrsTT1stDay + 123) -#define ActAssTst (ActChgCrsTT1stDay + 124) -#define ActCfgTst (ActChgCrsTT1stDay + 125) -#define ActRcvCfgTst (ActChgCrsTT1stDay + 126) +#define ActSeeTst (ActChgCrsTT1stDay + 123) +#define ActReqAssTst (ActChgCrsTT1stDay + 124) +#define ActAssTst (ActChgCrsTT1stDay + 125) +#define ActCfgTst (ActChgCrsTT1stDay + 126) +#define ActRcvCfgTst (ActChgCrsTT1stDay + 127) -#define ActReqSeeMyTstRes (ActChgCrsTT1stDay + 127) -#define ActSeeMyTstResCrs (ActChgCrsTT1stDay + 128) -#define ActSeeOneTstResMe (ActChgCrsTT1stDay + 129) -#define ActReqSeeUsrTstRes (ActChgCrsTT1stDay + 130) -#define ActSeeUsrTstResCrs (ActChgCrsTT1stDay + 131) -#define ActSeeOneTstResOth (ActChgCrsTT1stDay + 132) +#define ActReqSeeMyTstRes (ActChgCrsTT1stDay + 128) +#define ActSeeMyTstResCrs (ActChgCrsTT1stDay + 129) +#define ActSeeOneTstResMe (ActChgCrsTT1stDay + 130) +#define ActReqSeeUsrTstRes (ActChgCrsTT1stDay + 131) +#define ActSeeUsrTstResCrs (ActChgCrsTT1stDay + 132) +#define ActSeeOneTstResOth (ActChgCrsTT1stDay + 133) -#define ActSeeExa (ActChgCrsTT1stDay + 133) +#define ActSeeExa (ActChgCrsTT1stDay + 134) -#define ActFrmNewExa (ActChgCrsTT1stDay + 134) -#define ActEdiOneExa (ActChgCrsTT1stDay + 135) -#define ActNewExa (ActChgCrsTT1stDay + 136) -#define ActChgExa (ActChgCrsTT1stDay + 137) -#define ActReqRemExa (ActChgCrsTT1stDay + 138) -#define ActRemExa (ActChgCrsTT1stDay + 139) -#define ActHidExa (ActChgCrsTT1stDay + 140) -#define ActUnhExa (ActChgCrsTT1stDay + 141) -#define ActFrmNewExaSet (ActChgCrsTT1stDay + 142) -#define ActNewExaSet (ActChgCrsTT1stDay + 143) -#define ActReqRemExaSet (ActChgCrsTT1stDay + 144) -#define ActRemExaSet (ActChgCrsTT1stDay + 145) -#define ActUp_ExaSet (ActChgCrsTT1stDay + 146) -#define ActDwnExaSet (ActChgCrsTT1stDay + 147) -#define ActChgTitExaSet (ActChgCrsTT1stDay + 148) -#define ActChgNumQstExaSet (ActChgCrsTT1stDay + 149) +#define ActFrmNewExa (ActChgCrsTT1stDay + 135) +#define ActEdiOneExa (ActChgCrsTT1stDay + 136) +#define ActNewExa (ActChgCrsTT1stDay + 137) +#define ActChgExa (ActChgCrsTT1stDay + 138) +#define ActReqRemExa (ActChgCrsTT1stDay + 139) +#define ActRemExa (ActChgCrsTT1stDay + 140) +#define ActHidExa (ActChgCrsTT1stDay + 141) +#define ActUnhExa (ActChgCrsTT1stDay + 142) +#define ActFrmNewExaSet (ActChgCrsTT1stDay + 143) +#define ActNewExaSet (ActChgCrsTT1stDay + 144) +#define ActReqRemExaSet (ActChgCrsTT1stDay + 145) +#define ActRemExaSet (ActChgCrsTT1stDay + 146) +#define ActUp_ExaSet (ActChgCrsTT1stDay + 147) +#define ActDwnExaSet (ActChgCrsTT1stDay + 148) +#define ActChgTitExaSet (ActChgCrsTT1stDay + 149) +#define ActChgNumQstExaSet (ActChgCrsTT1stDay + 150) -#define ActReqAddQstExaSet (ActChgCrsTT1stDay + 150) -#define ActLstTstQstForSet (ActChgCrsTT1stDay + 151) -#define ActAddQstToExa (ActChgCrsTT1stDay + 152) -#define ActReqRemSetQst (ActChgCrsTT1stDay + 153) -#define ActRemExaQst (ActChgCrsTT1stDay + 154) -#define ActValSetQst (ActChgCrsTT1stDay + 155) -#define ActInvSetQst (ActChgCrsTT1stDay + 156) +#define ActReqAddQstExaSet (ActChgCrsTT1stDay + 151) +#define ActLstTstQstForSet (ActChgCrsTT1stDay + 152) +#define ActAddQstToExa (ActChgCrsTT1stDay + 153) +#define ActReqRemSetQst (ActChgCrsTT1stDay + 154) +#define ActRemExaQst (ActChgCrsTT1stDay + 155) +#define ActValSetQst (ActChgCrsTT1stDay + 156) +#define ActInvSetQst (ActChgCrsTT1stDay + 157) -#define ActReqNewExaSes (ActChgCrsTT1stDay + 157) -#define ActEdiOneExaSes (ActChgCrsTT1stDay + 158) -#define ActNewExaSes (ActChgCrsTT1stDay + 159) -#define ActChgExaSes (ActChgCrsTT1stDay + 160) -#define ActReqRemExaSes (ActChgCrsTT1stDay + 161) -#define ActRemExaSes (ActChgCrsTT1stDay + 162) -#define ActHidExaSes (ActChgCrsTT1stDay + 163) -#define ActUnhExaSes (ActChgCrsTT1stDay + 164) +#define ActReqNewExaSes (ActChgCrsTT1stDay + 158) +#define ActEdiOneExaSes (ActChgCrsTT1stDay + 159) +#define ActNewExaSes (ActChgCrsTT1stDay + 160) +#define ActChgExaSes (ActChgCrsTT1stDay + 161) +#define ActReqRemExaSes (ActChgCrsTT1stDay + 162) +#define ActRemExaSes (ActChgCrsTT1stDay + 163) +#define ActHidExaSes (ActChgCrsTT1stDay + 164) +#define ActUnhExaSes (ActChgCrsTT1stDay + 165) -#define ActSeeExaPrn (ActChgCrsTT1stDay + 165) -#define ActAnsExaPrn (ActChgCrsTT1stDay + 166) -#define ActEndExaPrn (ActChgCrsTT1stDay + 167) +#define ActSeeExaPrn (ActChgCrsTT1stDay + 166) +#define ActAnsExaPrn (ActChgCrsTT1stDay + 167) +#define ActEndExaPrn (ActChgCrsTT1stDay + 168) -#define ActSeeMyExaResCrs (ActChgCrsTT1stDay + 168) -#define ActSeeMyExaResExa (ActChgCrsTT1stDay + 169) -#define ActSeeMyExaResSes (ActChgCrsTT1stDay + 170) -#define ActSeeOneExaResMe (ActChgCrsTT1stDay + 171) -#define ActReqSeeUsrExaRes (ActChgCrsTT1stDay + 172) -#define ActSeeUsrExaResCrs (ActChgCrsTT1stDay + 173) -#define ActSeeUsrExaResExa (ActChgCrsTT1stDay + 174) -#define ActSeeUsrExaResSes (ActChgCrsTT1stDay + 175) -#define ActSeeOneExaResOth (ActChgCrsTT1stDay + 176) -#define ActChgVisExaRes (ActChgCrsTT1stDay + 177) +#define ActSeeMyExaResCrs (ActChgCrsTT1stDay + 169) +#define ActSeeMyExaResExa (ActChgCrsTT1stDay + 170) +#define ActSeeMyExaResSes (ActChgCrsTT1stDay + 171) +#define ActSeeOneExaResMe (ActChgCrsTT1stDay + 172) +#define ActReqSeeUsrExaRes (ActChgCrsTT1stDay + 173) +#define ActSeeUsrExaResCrs (ActChgCrsTT1stDay + 174) +#define ActSeeUsrExaResExa (ActChgCrsTT1stDay + 175) +#define ActSeeUsrExaResSes (ActChgCrsTT1stDay + 176) +#define ActSeeOneExaResOth (ActChgCrsTT1stDay + 177) +#define ActChgVisExaRes (ActChgCrsTT1stDay + 178) -#define ActSeeGam (ActChgCrsTT1stDay + 178) -#define ActReqRemMch (ActChgCrsTT1stDay + 179) -#define ActRemMch (ActChgCrsTT1stDay + 180) -#define ActEdiMch (ActChgCrsTT1stDay + 181) -#define ActChgMch (ActChgCrsTT1stDay + 182) -#define ActReqNewMch (ActChgCrsTT1stDay + 183) -#define ActNewMch (ActChgCrsTT1stDay + 184) -#define ActResMch (ActChgCrsTT1stDay + 185) -#define ActBckMch (ActChgCrsTT1stDay + 186) -#define ActPlyPauMch (ActChgCrsTT1stDay + 187) -#define ActFwdMch (ActChgCrsTT1stDay + 188) -#define ActChgNumColMch (ActChgCrsTT1stDay + 189) -#define ActChgVisResMchQst (ActChgCrsTT1stDay + 190) -#define ActMchCntDwn (ActChgCrsTT1stDay + 191) -#define ActRefMchTch (ActChgCrsTT1stDay + 192) +#define ActSeeGam (ActChgCrsTT1stDay + 179) +#define ActReqRemMch (ActChgCrsTT1stDay + 180) +#define ActRemMch (ActChgCrsTT1stDay + 181) +#define ActEdiMch (ActChgCrsTT1stDay + 182) +#define ActChgMch (ActChgCrsTT1stDay + 183) +#define ActReqNewMch (ActChgCrsTT1stDay + 184) +#define ActNewMch (ActChgCrsTT1stDay + 185) +#define ActResMch (ActChgCrsTT1stDay + 186) +#define ActBckMch (ActChgCrsTT1stDay + 187) +#define ActPlyPauMch (ActChgCrsTT1stDay + 188) +#define ActFwdMch (ActChgCrsTT1stDay + 189) +#define ActChgNumColMch (ActChgCrsTT1stDay + 190) +#define ActChgVisResMchQst (ActChgCrsTT1stDay + 191) +#define ActMchCntDwn (ActChgCrsTT1stDay + 192) +#define ActRefMchTch (ActChgCrsTT1stDay + 193) -#define ActJoiMch (ActChgCrsTT1stDay + 193) -#define ActSeeMchAnsQstStd (ActChgCrsTT1stDay + 194) -#define ActRemMchAnsQstStd (ActChgCrsTT1stDay + 195) -#define ActAnsMchQstStd (ActChgCrsTT1stDay + 196) -#define ActRefMchStd (ActChgCrsTT1stDay + 197) +#define ActJoiMch (ActChgCrsTT1stDay + 194) +#define ActSeeMchAnsQstStd (ActChgCrsTT1stDay + 195) +#define ActRemMchAnsQstStd (ActChgCrsTT1stDay + 196) +#define ActAnsMchQstStd (ActChgCrsTT1stDay + 197) +#define ActRefMchStd (ActChgCrsTT1stDay + 198) -#define ActSeeMyMchResCrs (ActChgCrsTT1stDay + 198) -#define ActSeeMyMchResGam (ActChgCrsTT1stDay + 199) -#define ActSeeMyMchResMch (ActChgCrsTT1stDay + 200) -#define ActSeeOneMchResMe (ActChgCrsTT1stDay + 201) +#define ActSeeMyMchResCrs (ActChgCrsTT1stDay + 199) +#define ActSeeMyMchResGam (ActChgCrsTT1stDay + 200) +#define ActSeeMyMchResMch (ActChgCrsTT1stDay + 201) +#define ActSeeOneMchResMe (ActChgCrsTT1stDay + 202) -#define ActReqSeeUsrMchRes (ActChgCrsTT1stDay + 202) -#define ActSeeUsrMchResCrs (ActChgCrsTT1stDay + 203) -#define ActSeeUsrMchResGam (ActChgCrsTT1stDay + 204) -#define ActSeeUsrMchResMch (ActChgCrsTT1stDay + 205) -#define ActSeeOneMchResOth (ActChgCrsTT1stDay + 206) +#define ActReqSeeUsrMchRes (ActChgCrsTT1stDay + 203) +#define ActSeeUsrMchResCrs (ActChgCrsTT1stDay + 204) +#define ActSeeUsrMchResGam (ActChgCrsTT1stDay + 205) +#define ActSeeUsrMchResMch (ActChgCrsTT1stDay + 206) +#define ActSeeOneMchResOth (ActChgCrsTT1stDay + 207) -#define ActChgVisResMchUsr (ActChgCrsTT1stDay + 207) +#define ActChgVisResMchUsr (ActChgCrsTT1stDay + 208) -#define ActLstOneGam (ActChgCrsTT1stDay + 208) +#define ActLstOneGam (ActChgCrsTT1stDay + 209) -#define ActFrmNewGam (ActChgCrsTT1stDay + 209) -#define ActEdiOneGam (ActChgCrsTT1stDay + 210) -#define ActNewGam (ActChgCrsTT1stDay + 211) -#define ActChgGam (ActChgCrsTT1stDay + 212) -#define ActReqRemGam (ActChgCrsTT1stDay + 213) -#define ActRemGam (ActChgCrsTT1stDay + 214) -#define ActHidGam (ActChgCrsTT1stDay + 215) -#define ActUnhGam (ActChgCrsTT1stDay + 216) -#define ActAddOneGamQst (ActChgCrsTT1stDay + 217) -#define ActGamLstTstQst (ActChgCrsTT1stDay + 218) -#define ActAddTstQstToGam (ActChgCrsTT1stDay + 219) -#define ActReqRemGamQst (ActChgCrsTT1stDay + 220) -#define ActRemGamQst (ActChgCrsTT1stDay + 221) -#define ActUp_GamQst (ActChgCrsTT1stDay + 222) -#define ActDwnGamQst (ActChgCrsTT1stDay + 223) +#define ActFrmNewGam (ActChgCrsTT1stDay + 210) +#define ActEdiOneGam (ActChgCrsTT1stDay + 211) +#define ActNewGam (ActChgCrsTT1stDay + 212) +#define ActChgGam (ActChgCrsTT1stDay + 213) +#define ActReqRemGam (ActChgCrsTT1stDay + 214) +#define ActRemGam (ActChgCrsTT1stDay + 215) +#define ActHidGam (ActChgCrsTT1stDay + 216) +#define ActUnhGam (ActChgCrsTT1stDay + 217) +#define ActAddOneGamQst (ActChgCrsTT1stDay + 218) +#define ActGamLstTstQst (ActChgCrsTT1stDay + 219) +#define ActAddTstQstToGam (ActChgCrsTT1stDay + 220) +#define ActReqRemGamQst (ActChgCrsTT1stDay + 221) +#define ActRemGamQst (ActChgCrsTT1stDay + 222) +#define ActUp_GamQst (ActChgCrsTT1stDay + 223) +#define ActDwnGamQst (ActChgCrsTT1stDay + 224) -#define ActSeeSvy (ActChgCrsTT1stDay + 224) -#define ActAnsSvy (ActChgCrsTT1stDay + 225) -#define ActFrmNewSvy (ActChgCrsTT1stDay + 226) -#define ActEdiOneSvy (ActChgCrsTT1stDay + 227) -#define ActNewSvy (ActChgCrsTT1stDay + 228) -#define ActChgSvy (ActChgCrsTT1stDay + 229) -#define ActReqRemSvy (ActChgCrsTT1stDay + 230) -#define ActRemSvy (ActChgCrsTT1stDay + 231) -#define ActReqRstSvy (ActChgCrsTT1stDay + 232) -#define ActRstSvy (ActChgCrsTT1stDay + 233) -#define ActHidSvy (ActChgCrsTT1stDay + 234) -#define ActUnhSvy (ActChgCrsTT1stDay + 235) -#define ActEdiOneSvyQst (ActChgCrsTT1stDay + 236) -#define ActRcvSvyQst (ActChgCrsTT1stDay + 237) -#define ActReqRemSvyQst (ActChgCrsTT1stDay + 238) -#define ActRemSvyQst (ActChgCrsTT1stDay + 239) +#define ActSeeSvy (ActChgCrsTT1stDay + 225) +#define ActAnsSvy (ActChgCrsTT1stDay + 226) +#define ActFrmNewSvy (ActChgCrsTT1stDay + 227) +#define ActEdiOneSvy (ActChgCrsTT1stDay + 228) +#define ActNewSvy (ActChgCrsTT1stDay + 229) +#define ActChgSvy (ActChgCrsTT1stDay + 230) +#define ActReqRemSvy (ActChgCrsTT1stDay + 231) +#define ActRemSvy (ActChgCrsTT1stDay + 232) +#define ActReqRstSvy (ActChgCrsTT1stDay + 233) +#define ActRstSvy (ActChgCrsTT1stDay + 234) +#define ActHidSvy (ActChgCrsTT1stDay + 235) +#define ActUnhSvy (ActChgCrsTT1stDay + 236) +#define ActEdiOneSvyQst (ActChgCrsTT1stDay + 237) +#define ActRcvSvyQst (ActChgCrsTT1stDay + 238) +#define ActReqRemSvyQst (ActChgCrsTT1stDay + 239) +#define ActRemSvyQst (ActChgCrsTT1stDay + 240) /*****************************************************************************/ /******************************** Files tab **********************************/ diff --git a/swad_browser.c b/swad_browser.c index 711542d5..52f07d40 100644 --- a/swad_browser.c +++ b/swad_browser.c @@ -5319,7 +5319,7 @@ static void Brw_WriteFileName (unsigned Level,bool IsPublic) } /*****************************************************************************/ -/******************** Get summary and content of a file **********************/ +/******************** Write file name in course program **********************/ /*****************************************************************************/ void Brw_WriteFileNameInCrsProgram (long FilCod,bool PutFormToDownload) @@ -8348,7 +8348,7 @@ static void Brw_PutParamsToGetLinkToFile (void *FileMetadata) } /*****************************************************************************/ -/*********************** Put icon to get link to file ************************/ +/****************************** Get link to file *****************************/ /*****************************************************************************/ void Brw_GetLinkToFile (void) diff --git a/swad_call_for_exam.c b/swad_call_for_exam.c index adecbe8e..86c0b5f4 100644 --- a/swad_call_for_exam.c +++ b/swad_call_for_exam.c @@ -882,7 +882,7 @@ static void Cfe_ShowCallForExam (struct Cfe_CallsForExams *CallsForExams, extern const char *Hlp_ASSESSMENT_Calls_for_exam_new_call; extern const char *Hlp_ASSESSMENT_Announcements_edit_announcement; extern const char *Txt_YEAR_OF_DEGREE[1 + Deg_MAX_YEARS_PER_DEGREE]; - extern const char *Txt_CALL_FOR_EXAM; + extern const char *Txt_Call_for_exam; extern const char *Txt_CALL_FOR_EXAM_Course; extern const char *Txt_CALL_FOR_EXAM_Year_or_semester; extern const char *Txt_CALL_FOR_EXAM_Session; @@ -1005,13 +1005,11 @@ static void Cfe_ShowCallForExam (struct Cfe_CallsForExams *CallsForExams, /***** Title *****/ HTM_TR_Begin (NULL); - HTM_TD_Begin ("colspan=\"2\" class=\"CM DAT_STRONG_%s\"", + HTM_TD_Begin ("colspan=\"2\" class=\"CM CALL_FOR_EXAM_TIT DAT_STRONG_%s\"", The_GetSuffix ()); HTM_NBSP (); HTM_BR (); - HTM_STRONG_Begin (); - HTM_Txt (Txt_CALL_FOR_EXAM); - HTM_STRONG_End (); + HTM_TxtF (Txt_Call_for_exam); HTM_BR (); HTM_NBSP (); HTM_TD_End (); @@ -1528,6 +1526,12 @@ static void Cfe_PutIconsCallForExam (void *CallsForExams) Ico_PutContextualIconToPrint (ActPrnCfe, Cfe_PutParamExaCodToEdit, &((struct Cfe_CallsForExams *) CallsForExams)->ExaCod); + + /***** Link to get resource link *****/ + if (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) // Only if I am superuser // TODO: Include teachers + Ico_PutContextualIconToGetLink (ActReqLnkCfe,NULL, + Cfe_PutParamExaCodToEdit, + &((struct Cfe_CallsForExams *) CallsForExams)->ExaCod); } } @@ -1678,3 +1682,65 @@ static void Cfe_GetNotifContentCallForExam (const struct Cfe_CallsForExams *Call Txt_CALL_FOR_EXAM_Other_information,CallsForExams->CallForExam.OtherInfo) < 0) Err_NotEnoughMemoryExit (); } + +/*****************************************************************************/ +/******************** Write file name in course program **********************/ +/*****************************************************************************/ + +void Cfe_WriteCallForExamInCrsProgram (long ExaCod,bool PutFormToGo) + { + extern const char *Txt_Call_for_exam; + + /***** Begin form to download file *****/ + if (PutFormToGo) + { + Frm_BeginForm (ActSeeOneCfe); + Cfe_PutHiddenParamExaCod (ExaCod); + HTM_BUTTON_Submit_Begin (Txt_Call_for_exam, + "class=\"LM BT_LINK PRG_RSC_%s\"", + The_GetSuffix ()); + } + + /***** Write filename *****/ + HTM_Txt ("Convocatoria de examen"); + + /***** End form to download file *****/ + if (PutFormToGo) + { + HTM_BUTTON_End (); + + Frm_EndForm (); + } + } + +/*****************************************************************************/ +/*********************** Get link to call for exam ************************/ +/*****************************************************************************/ + +void Cfe_GetLinkToFile (void) + { + extern const char *Txt_Link_to_resource_X_copied_into_clipboard; + // struct FileMetadata FileMetadata; + // bool Found; + + /***** Get parameters related to file browser *****/ + // Brw_GetParAndInitFileBrowser (); + + /***** Get file metadata *****/ + // FileMetadata.FilCod = Brw_GetParamFilCod (); + // Brw_GetFileMetadataByCod (&FileMetadata); + // Found = Brw_GetFileTypeSizeAndDate (&FileMetadata); + + // if (Found) + // { + /***** Copy link to file into resource clipboard *****/ + // Prg_DB_CopyToClipboard (PrgRsc_DOCUMENT,FileMetadata.FilCod); + + /***** Write sucess message *****/ + Ale_ShowAlert (Ale_SUCCESS,Txt_Link_to_resource_X_copied_into_clipboard, + "Convocatoria"); + // } + + /***** Show again the file browser *****/ + // Brw_ShowAgainFileBrowserOrWorks (); + } diff --git a/swad_call_for_exam.h b/swad_call_for_exam.h index 347d804f..d82928ff 100644 --- a/swad_call_for_exam.h +++ b/swad_call_for_exam.h @@ -126,4 +126,8 @@ void Cfe_GetSummaryAndContentCallForExam (char SummaryStr[Ntf_MAX_BYTES_SUMMARY char **ContentStr, long ExaCod,bool GetContent); +void Cfe_WriteCallForExamInCrsProgram (long ExaCod,bool PutFormToGo); + +void Cfe_GetLinkToFile (void); + #endif diff --git a/swad_changelog.h b/swad_changelog.h index 05b0b5f2..f347692c 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -606,10 +606,11 @@ 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.6 (2022-09-17)" -#define CSS_FILE "swad22.5.css" +#define Log_PLATFORM_VERSION "SWAD 22.7 (2022-09-17)" +#define CSS_FILE "swad22.7.css" #define JS_FILE "swad21.100.js" /* + Version 22.7: Sep 17, 2022 Link to calls for exams in program. (? lines) Version 22.6: Sep 17, 2022 Changes in edition of program items. (330065 lines) Version 22.5: Sep 16, 2022 Link to download document in program. (330018 lines) Version 22.4.2: Sep 16, 2022 Changes in edition of program items. (329982 lines) diff --git a/swad_program.c b/swad_program.c index ea492e33..0efd2394 100644 --- a/swad_program.c +++ b/swad_program.c @@ -226,7 +226,7 @@ void Prg_ShowAllItems (Prg_ListingType_t ListingType, [Prg_END_EDIT_ITEM ] = Prg_PutIconsEditItems, [Prg_RECEIVE_ITEM ] = Prg_PutIconsEditItems, [Prg_EDIT_RESOURCES ] = Prg_PutIconsEditItems, - [Prg_SHOW_CLIPBOARD ] = Prg_PutIconsEditItems, + [Prg_EDIT_RESOURCE_LINK ] = Prg_PutIconsEditItems, [Prg_CHANGE_RESOURCE_LINK] = Prg_PutIconsEditItems, [Prg_END_EDIT_RES ] = Prg_PutIconsEditItems, }; @@ -247,7 +247,7 @@ void Prg_ShowAllItems (Prg_ListingType_t ListingType, break; case Prg_RECEIVE_ITEM: // case Prg_EDIT_RESOURCES: // Uncomment to higlight item - // case Prg_SHOW_CLIPBOARD: // Uncomment to higlight item + // case Prg_EDIT_RESOURCE_LINK: // Uncomment to higlight item // case Prg_CHANGE_RESOURCE_LINK: // Uncomment to higlight item // case Prg_END_EDIT_RES: // Uncomment to higlight item if (SelectedItmCod > 0) @@ -305,7 +305,7 @@ void Prg_ShowAllItems (Prg_ListingType_t ListingType, { case Prg_FORM_EDIT_ITEM: case Prg_EDIT_RESOURCES: - case Prg_SHOW_CLIPBOARD: + case Prg_EDIT_RESOURCE_LINK: case Prg_CHANGE_RESOURCE_LINK: case Prg_END_EDIT_RES: if (Item.Hierarchy.ItmCod != SelectedItmCod) @@ -460,7 +460,7 @@ static void Prg_WriteRowItem (Prg_ListingType_t ListingType, [Prg_END_EDIT_ITEM ] = true, [Prg_RECEIVE_ITEM ] = true, [Prg_EDIT_RESOURCES ] = true, - [Prg_SHOW_CLIPBOARD ] = true, + [Prg_EDIT_RESOURCE_LINK ] = true, [Prg_CHANGE_RESOURCE_LINK] = true, [Prg_END_EDIT_RES ] = true, }; @@ -1223,8 +1223,8 @@ void Prg_ResetItem (struct Prg_Item *Item) Item->Resource.Hierarchy.RscCod = -1L; Item->Resource.Hierarchy.RscInd = 0; Item->Resource.Hierarchy.Hidden = false; - Item->Resource.Type = PrgRsc_NONE; - Item->Resource.Cod = -1L; + Item->Resource.Link.Type = PrgRsc_NONE; + Item->Resource.Link.Cod = -1L; Item->Resource.Title[0] = '\0'; Item->Resource.Title[0] = '\0'; } diff --git a/swad_program_resource.c b/swad_program_resource.c index 2eb2c60b..7584e13b 100644 --- a/swad_program_resource.c +++ b/swad_program_resource.c @@ -27,6 +27,8 @@ #include // For string functions +#include "swad_browser.h" +#include "swad_call_for_exam.h" #include "swad_error.h" #include "swad_form.h" #include "swad_global.h" @@ -1012,7 +1014,11 @@ static void PrgRsc_WriteLinkName (const struct Prg_Link *Link,bool PutForm) HTM_Txt ("sin enlace"); // TODO: Need translation!!!!! break; case PrgRsc_ASSIGNMENT: + Ale_ShowAlert (Ale_ERROR,"Not implemented!"); + break; case PrgRsc_CALL_FOR_EXAM: + Cfe_WriteCallForExamInCrsProgram (Link->Cod,PutForm); + break; case PrgRsc_EXAM: case PrgRsc_GAME: case PrgRsc_SURVEY: diff --git a/swad_text.c b/swad_text.c index f7c1c7c5..0a9173a7 100644 --- a/swad_text.c +++ b/swad_text.c @@ -3746,29 +3746,6 @@ const char *Txt_Calendar = "Takvim"; #endif -const char *Txt_CALL_FOR_EXAM = -#if L==1 // ca - "CONVOCATÒRIA D'EXAMEN"; -#elif L==2 // de - "PRÜFUNGSAUFRUF"; -#elif L==3 // en - "CALL FOR EXAM"; -#elif L==4 // es - "CONVOCATORIA DE EXAMEN"; -#elif L==5 // fr - "CONVOCATION À UN EXAMEN"; -#elif L==6 // gn - "CONVOCATORIA DE EXAMEN"; // Okoteve traducción -#elif L==7 // it - "APPELLO D'ESAME"; -#elif L==8 // pl - "OGLOSZENIE egzaminu"; -#elif L==9 // pt - "CHAMADA DE EXAME"; -#elif L==10 // tr - "CALL FOR EXAM"; // Çeviri lazim! -#endif - const char *Txt_CALL_FOR_EXAM_Approximate_duration = #if L==1 // ca "Durada aproximada"; @@ -4068,6 +4045,29 @@ const char *Txt_CALL_FOR_EXAM_Year_or_semester = // 1, 2, 3..., not 1984, 2038.. "Year or semester"; // Çeviri lazim! #endif +const char *Txt_Call_for_exam = +#if L==1 // ca + "Convocatòria d'examen"; +#elif L==2 // de + "Aufrufe für Prüfung"; +#elif L==3 // en + "Call for exam"; +#elif L==4 // es + "Convocatoria de examen"; +#elif L==5 // fr + "Convocation à un examen"; +#elif L==6 // gn + "Convocatoria de examen"; // Okoteve traducción +#elif L==7 // it + "Appello d'esame"; +#elif L==8 // pl + "Ogloszenie egzamin"; +#elif L==9 // pt + "Chamada para exame"; +#elif L==10 // tr + "Call for exam"; // Çeviri lazim! +#endif + const char *Txt_Call_for_exam_removed = #if L==1 // ca "Convocatòria d'examen eliminada."; diff --git a/swad_text_action.c b/swad_text_action.c index 3730ab4e..f65ddfb5 100644 --- a/swad_text_action.c +++ b/swad_text_action.c @@ -10985,6 +10985,29 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = "Unhide exam announcement" // Precisa de tradução #elif L==10 // tr "Unhide exam announcement" // Çeviri lazim! +#endif + , + [ActReqLnkCfe] = +#if L==1 // ca + "Copy link to exam announcement" // Necessita traducció +#elif L==2 // de + "Copy link to exam announcement" // Need Übersetzung +#elif L==3 // en + "Copy link to exam announcement" +#elif L==4 // es + "Copiar enlace a convocatoria de examen" +#elif L==5 // fr + "Copy link to exam announcement" // Besoin de traduction +#elif L==6 // gn + "Copiar enlace a convocatoria de examen" // Okoteve traducción +#elif L==7 // it + "Copy link to exam announcement" // Bisogno di traduzione +#elif L==8 // pl + "Copy link to exam announcement" // Potrzebujesz tlumaczenie +#elif L==9 // pt + "Copy link to exam announcement" // Precisa de tradução +#elif L==10 // tr + "Copy link to exam announcement" // Çeviri lazim! #endif , [ActEdiOneTstQst] =