mirror of
https://github.com/acanas/swad-core.git
synced 2024-06-13 04:04:35 +02:00
Version 15.217.1
This commit is contained in:
parent
c756157d8c
commit
c47cfe523d
|
@ -816,7 +816,8 @@ Assessment:
|
||||||
670. ActPrnCal Show print view of the academic calendar of the course
|
670. ActPrnCal Show print view of the academic calendar of the course
|
||||||
671. ActChgCal1stDay Change first day of week and show academic calendar of the course
|
671. ActChgCal1stDay Change first day of week and show academic calendar of the course
|
||||||
|
|
||||||
NEW. ActSeeOneExaAnn Show one exam announcement highlighted
|
NEW. ActSeeOneExaAnn Show one exam announcement
|
||||||
|
NEW. ActSeeDatExaAnn Show exam announcements of a given date
|
||||||
672. ActEdiExaAnn Edit an exam announcement
|
672. ActEdiExaAnn Edit an exam announcement
|
||||||
673. ActRcvExaAnn Receive an exam announcement
|
673. ActRcvExaAnn Receive an exam announcement
|
||||||
674. ActPrnExaAnn Show an exam announcement ready to be printed
|
674. ActPrnExaAnn Show an exam announcement ready to be printed
|
||||||
|
@ -2183,7 +2184,8 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
||||||
/* ActPrnCal */{ 71,-1,TabAss,ActSeeCal ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_NEW_WINDOW ,NULL ,Cal_DrawCalendar ,NULL},
|
/* ActPrnCal */{ 71,-1,TabAss,ActSeeCal ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_NEW_WINDOW ,NULL ,Cal_DrawCalendar ,NULL},
|
||||||
/* ActChgCal1stDay */{1485,-1,TabAss,ActSeeCal ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,Cal_ChangeFirstDayOfWeek ,Cal_DrawCalendar ,NULL},
|
/* ActChgCal1stDay */{1485,-1,TabAss,ActSeeCal ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,Cal_ChangeFirstDayOfWeek ,Cal_DrawCalendar ,NULL},
|
||||||
|
|
||||||
/* ActSeeOneExaAnn */{1571,-1,TabAss,ActSeeAllExaAnn ,0x1FF,0x1FF,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,Exa_GetExaToShowHighlighted ,Exa_ListExamAnnouncementsSee ,NULL},
|
/* ActSeeOneExaAnn */{1572,-1,TabAss,ActSeeAllExaAnn ,0x1FF,0x1FF,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,Exa_GetExaCodToHighlight ,Exa_ListExamAnnouncementsSee ,NULL},
|
||||||
|
/* ActSeeDatExaAnn */{1571,-1,TabAss,ActSeeAllExaAnn ,0x1FF,0x1FF,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,Exa_GetDateToHighlight ,Exa_ListExamAnnouncementsSee ,NULL},
|
||||||
/* ActEdiExaAnn */{ 91,-1,TabAss,ActSeeAllExaAnn ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Exa_PutFrmEditAExamAnnouncement,NULL},
|
/* ActEdiExaAnn */{ 91,-1,TabAss,ActSeeAllExaAnn ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Exa_PutFrmEditAExamAnnouncement,NULL},
|
||||||
/* ActRcvExaAnn */{ 110,-1,TabAss,ActSeeAllExaAnn ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Exa_ReceiveExamAnnouncement ,NULL},
|
/* ActRcvExaAnn */{ 110,-1,TabAss,ActSeeAllExaAnn ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Exa_ReceiveExamAnnouncement ,NULL},
|
||||||
/* ActPrnExaAnn */{ 179,-1,TabAss,ActSeeAllExaAnn ,0x1FF,0x1FF,0x000,Act_CONTENT_NORM,Act_NEW_WINDOW ,NULL ,Exa_PrintExamAnnouncement ,NULL},
|
/* ActPrnExaAnn */{ 179,-1,TabAss,ActSeeAllExaAnn ,0x1FF,0x1FF,0x000,Act_CONTENT_NORM,Act_NEW_WINDOW ,NULL ,Exa_PrintExamAnnouncement ,NULL},
|
||||||
|
@ -2648,7 +2650,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
||||||
/* ActRevAnn */{1471,-1,TabMsg,ActSeeAnn ,0x100,0x100,0x100,Act_CONTENT_NORM,Act_MAIN_WINDOW,Ann_RevealHiddenAnnouncement,Ann_ShowAllAnnouncements ,NULL},
|
/* ActRevAnn */{1471,-1,TabMsg,ActSeeAnn ,0x100,0x100,0x100,Act_CONTENT_NORM,Act_MAIN_WINDOW,Ann_RevealHiddenAnnouncement,Ann_ShowAllAnnouncements ,NULL},
|
||||||
/* ActRemAnn */{1236,-1,TabMsg,ActSeeAnn ,0x100,0x100,0x100,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Ann_RemoveAnnouncement ,NULL},
|
/* ActRemAnn */{1236,-1,TabMsg,ActSeeAnn ,0x100,0x100,0x100,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Ann_RemoveAnnouncement ,NULL},
|
||||||
|
|
||||||
/* ActSeeOneNot */{1164,-1,TabMsg,ActSeeAllNot ,0x1FF,0x1FF,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,Not_GetNotToShowHighlighted ,Not_ListFullNotices ,NULL},
|
/* ActSeeOneNot */{1164,-1,TabMsg,ActSeeAllNot ,0x1FF,0x1FF,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,Not_GetNotCodToHighlight ,Not_ListFullNotices ,NULL},
|
||||||
/* ActWriNot */{ 59,-1,TabMsg,ActSeeAllNot ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Not_ShowFormNotice ,NULL},
|
/* ActWriNot */{ 59,-1,TabMsg,ActSeeAllNot ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Not_ShowFormNotice ,NULL},
|
||||||
/* ActRcvNot */{ 60,-1,TabMsg,ActSeeAllNot ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,Not_ReceiveNotice ,Not_ListFullNotices ,NULL},
|
/* ActRcvNot */{ 60,-1,TabMsg,ActSeeAllNot ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,Not_ReceiveNotice ,Not_ListFullNotices ,NULL},
|
||||||
/* ActHidNot */{ 763,-1,TabMsg,ActSeeAllNot ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,Not_HideActiveNotice ,Not_ListFullNotices ,NULL},
|
/* ActHidNot */{ 763,-1,TabMsg,ActSeeAllNot ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,Not_HideActiveNotice ,Not_ListFullNotices ,NULL},
|
||||||
|
@ -4393,7 +4395,8 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq
|
||||||
ActCnfID_Oth, // #1568
|
ActCnfID_Oth, // #1568
|
||||||
ActCnfID_Std, // #1569
|
ActCnfID_Std, // #1569
|
||||||
ActCnfID_Tch, // #1570
|
ActCnfID_Tch, // #1570
|
||||||
ActSeeOneExaAnn, // #1571
|
ActSeeDatExaAnn, // #1571
|
||||||
|
ActSeeOneExaAnn, // #1572
|
||||||
};
|
};
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
125
swad_action.h
125
swad_action.h
|
@ -72,9 +72,9 @@ typedef enum
|
||||||
|
|
||||||
typedef int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
|
typedef int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
|
||||||
|
|
||||||
#define Act_NUM_ACTIONS (1+9+51+15+90+70+67+245+185+150+172+36+28+83)
|
#define Act_NUM_ACTIONS (1+9+51+15+90+70+67+245+186+150+172+36+28+83)
|
||||||
|
|
||||||
#define Act_MAX_ACTION_COD 1571
|
#define Act_MAX_ACTION_COD 1572
|
||||||
|
|
||||||
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 20
|
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 20
|
||||||
|
|
||||||
|
@ -848,72 +848,73 @@ typedef int Act_Action_t; // Must be a signed type, because -1 is used to indica
|
||||||
#define ActChgCal1stDay (ActRcvRchTxtCrsLnk+124)
|
#define ActChgCal1stDay (ActRcvRchTxtCrsLnk+124)
|
||||||
|
|
||||||
#define ActSeeOneExaAnn (ActRcvRchTxtCrsLnk+125)
|
#define ActSeeOneExaAnn (ActRcvRchTxtCrsLnk+125)
|
||||||
#define ActEdiExaAnn (ActRcvRchTxtCrsLnk+126)
|
#define ActSeeDatExaAnn (ActRcvRchTxtCrsLnk+126)
|
||||||
#define ActRcvExaAnn (ActRcvRchTxtCrsLnk+127)
|
#define ActEdiExaAnn (ActRcvRchTxtCrsLnk+127)
|
||||||
#define ActPrnExaAnn (ActRcvRchTxtCrsLnk+128)
|
#define ActRcvExaAnn (ActRcvRchTxtCrsLnk+128)
|
||||||
#define ActRemExaAnn (ActRcvRchTxtCrsLnk+129)
|
#define ActPrnExaAnn (ActRcvRchTxtCrsLnk+129)
|
||||||
|
#define ActRemExaAnn (ActRcvRchTxtCrsLnk+130)
|
||||||
|
|
||||||
#define ActChgToSeeMrk (ActRcvRchTxtCrsLnk+130)
|
#define ActChgToSeeMrk (ActRcvRchTxtCrsLnk+131)
|
||||||
|
|
||||||
#define ActSeeMrkCrs (ActRcvRchTxtCrsLnk+131)
|
#define ActSeeMrkCrs (ActRcvRchTxtCrsLnk+132)
|
||||||
#define ActExpSeeMrkCrs (ActRcvRchTxtCrsLnk+132)
|
#define ActExpSeeMrkCrs (ActRcvRchTxtCrsLnk+133)
|
||||||
#define ActConSeeMrkCrs (ActRcvRchTxtCrsLnk+133)
|
#define ActConSeeMrkCrs (ActRcvRchTxtCrsLnk+134)
|
||||||
#define ActReqDatSeeMrkCrs (ActRcvRchTxtCrsLnk+134)
|
#define ActReqDatSeeMrkCrs (ActRcvRchTxtCrsLnk+135)
|
||||||
#define ActSeeMyMrkCrs (ActRcvRchTxtCrsLnk+135)
|
#define ActSeeMyMrkCrs (ActRcvRchTxtCrsLnk+136)
|
||||||
|
|
||||||
#define ActSeeMrkGrp (ActRcvRchTxtCrsLnk+136)
|
#define ActSeeMrkGrp (ActRcvRchTxtCrsLnk+137)
|
||||||
#define ActExpSeeMrkGrp (ActRcvRchTxtCrsLnk+137)
|
#define ActExpSeeMrkGrp (ActRcvRchTxtCrsLnk+138)
|
||||||
#define ActConSeeMrkGrp (ActRcvRchTxtCrsLnk+138)
|
#define ActConSeeMrkGrp (ActRcvRchTxtCrsLnk+139)
|
||||||
#define ActReqDatSeeMrkGrp (ActRcvRchTxtCrsLnk+139)
|
#define ActReqDatSeeMrkGrp (ActRcvRchTxtCrsLnk+140)
|
||||||
#define ActSeeMyMrkGrp (ActRcvRchTxtCrsLnk+140)
|
#define ActSeeMyMrkGrp (ActRcvRchTxtCrsLnk+141)
|
||||||
|
|
||||||
#define ActChgToAdmMrk (ActRcvRchTxtCrsLnk+141)
|
#define ActChgToAdmMrk (ActRcvRchTxtCrsLnk+142)
|
||||||
|
|
||||||
#define ActAdmMrkCrs (ActRcvRchTxtCrsLnk+142)
|
#define ActAdmMrkCrs (ActRcvRchTxtCrsLnk+143)
|
||||||
#define ActReqRemFilMrkCrs (ActRcvRchTxtCrsLnk+143)
|
#define ActReqRemFilMrkCrs (ActRcvRchTxtCrsLnk+144)
|
||||||
#define ActRemFilMrkCrs (ActRcvRchTxtCrsLnk+144)
|
#define ActRemFilMrkCrs (ActRcvRchTxtCrsLnk+145)
|
||||||
#define ActRemFolMrkCrs (ActRcvRchTxtCrsLnk+145)
|
#define ActRemFolMrkCrs (ActRcvRchTxtCrsLnk+146)
|
||||||
#define ActCopMrkCrs (ActRcvRchTxtCrsLnk+146)
|
#define ActCopMrkCrs (ActRcvRchTxtCrsLnk+147)
|
||||||
#define ActPasMrkCrs (ActRcvRchTxtCrsLnk+147)
|
#define ActPasMrkCrs (ActRcvRchTxtCrsLnk+148)
|
||||||
#define ActRemTreMrkCrs (ActRcvRchTxtCrsLnk+148)
|
#define ActRemTreMrkCrs (ActRcvRchTxtCrsLnk+149)
|
||||||
#define ActFrmCreMrkCrs (ActRcvRchTxtCrsLnk+149)
|
#define ActFrmCreMrkCrs (ActRcvRchTxtCrsLnk+150)
|
||||||
#define ActCreFolMrkCrs (ActRcvRchTxtCrsLnk+150)
|
#define ActCreFolMrkCrs (ActRcvRchTxtCrsLnk+151)
|
||||||
#define ActRenFolMrkCrs (ActRcvRchTxtCrsLnk+151)
|
#define ActRenFolMrkCrs (ActRcvRchTxtCrsLnk+152)
|
||||||
#define ActRcvFilMrkCrsDZ (ActRcvRchTxtCrsLnk+152)
|
#define ActRcvFilMrkCrsDZ (ActRcvRchTxtCrsLnk+153)
|
||||||
#define ActRcvFilMrkCrsCla (ActRcvRchTxtCrsLnk+153)
|
#define ActRcvFilMrkCrsCla (ActRcvRchTxtCrsLnk+154)
|
||||||
#define ActExpAdmMrkCrs (ActRcvRchTxtCrsLnk+154)
|
#define ActExpAdmMrkCrs (ActRcvRchTxtCrsLnk+155)
|
||||||
#define ActConAdmMrkCrs (ActRcvRchTxtCrsLnk+155)
|
#define ActConAdmMrkCrs (ActRcvRchTxtCrsLnk+156)
|
||||||
#define ActZIPAdmMrkCrs (ActRcvRchTxtCrsLnk+156)
|
#define ActZIPAdmMrkCrs (ActRcvRchTxtCrsLnk+157)
|
||||||
#define ActShoMrkCrs (ActRcvRchTxtCrsLnk+157)
|
#define ActShoMrkCrs (ActRcvRchTxtCrsLnk+158)
|
||||||
#define ActHidMrkCrs (ActRcvRchTxtCrsLnk+158)
|
#define ActHidMrkCrs (ActRcvRchTxtCrsLnk+159)
|
||||||
#define ActReqDatAdmMrkCrs (ActRcvRchTxtCrsLnk+159)
|
#define ActReqDatAdmMrkCrs (ActRcvRchTxtCrsLnk+160)
|
||||||
#define ActChgDatAdmMrkCrs (ActRcvRchTxtCrsLnk+160)
|
#define ActChgDatAdmMrkCrs (ActRcvRchTxtCrsLnk+161)
|
||||||
#define ActDowAdmMrkCrs (ActRcvRchTxtCrsLnk+161)
|
#define ActDowAdmMrkCrs (ActRcvRchTxtCrsLnk+162)
|
||||||
#define ActChgNumRowHeaCrs (ActRcvRchTxtCrsLnk+162)
|
#define ActChgNumRowHeaCrs (ActRcvRchTxtCrsLnk+163)
|
||||||
#define ActChgNumRowFooCrs (ActRcvRchTxtCrsLnk+163)
|
#define ActChgNumRowFooCrs (ActRcvRchTxtCrsLnk+164)
|
||||||
|
|
||||||
#define ActAdmMrkGrp (ActRcvRchTxtCrsLnk+164)
|
#define ActAdmMrkGrp (ActRcvRchTxtCrsLnk+165)
|
||||||
#define ActReqRemFilMrkGrp (ActRcvRchTxtCrsLnk+165)
|
#define ActReqRemFilMrkGrp (ActRcvRchTxtCrsLnk+166)
|
||||||
#define ActRemFilMrkGrp (ActRcvRchTxtCrsLnk+166)
|
#define ActRemFilMrkGrp (ActRcvRchTxtCrsLnk+167)
|
||||||
#define ActRemFolMrkGrp (ActRcvRchTxtCrsLnk+167)
|
#define ActRemFolMrkGrp (ActRcvRchTxtCrsLnk+168)
|
||||||
#define ActCopMrkGrp (ActRcvRchTxtCrsLnk+168)
|
#define ActCopMrkGrp (ActRcvRchTxtCrsLnk+169)
|
||||||
#define ActPasMrkGrp (ActRcvRchTxtCrsLnk+169)
|
#define ActPasMrkGrp (ActRcvRchTxtCrsLnk+170)
|
||||||
#define ActRemTreMrkGrp (ActRcvRchTxtCrsLnk+170)
|
#define ActRemTreMrkGrp (ActRcvRchTxtCrsLnk+171)
|
||||||
#define ActFrmCreMrkGrp (ActRcvRchTxtCrsLnk+171)
|
#define ActFrmCreMrkGrp (ActRcvRchTxtCrsLnk+172)
|
||||||
#define ActCreFolMrkGrp (ActRcvRchTxtCrsLnk+172)
|
#define ActCreFolMrkGrp (ActRcvRchTxtCrsLnk+173)
|
||||||
#define ActRenFolMrkGrp (ActRcvRchTxtCrsLnk+173)
|
#define ActRenFolMrkGrp (ActRcvRchTxtCrsLnk+174)
|
||||||
#define ActRcvFilMrkGrpDZ (ActRcvRchTxtCrsLnk+174)
|
#define ActRcvFilMrkGrpDZ (ActRcvRchTxtCrsLnk+175)
|
||||||
#define ActRcvFilMrkGrpCla (ActRcvRchTxtCrsLnk+175)
|
#define ActRcvFilMrkGrpCla (ActRcvRchTxtCrsLnk+176)
|
||||||
#define ActExpAdmMrkGrp (ActRcvRchTxtCrsLnk+176)
|
#define ActExpAdmMrkGrp (ActRcvRchTxtCrsLnk+177)
|
||||||
#define ActConAdmMrkGrp (ActRcvRchTxtCrsLnk+177)
|
#define ActConAdmMrkGrp (ActRcvRchTxtCrsLnk+178)
|
||||||
#define ActZIPAdmMrkGrp (ActRcvRchTxtCrsLnk+178)
|
#define ActZIPAdmMrkGrp (ActRcvRchTxtCrsLnk+179)
|
||||||
#define ActShoMrkGrp (ActRcvRchTxtCrsLnk+179)
|
#define ActShoMrkGrp (ActRcvRchTxtCrsLnk+180)
|
||||||
#define ActHidMrkGrp (ActRcvRchTxtCrsLnk+180)
|
#define ActHidMrkGrp (ActRcvRchTxtCrsLnk+181)
|
||||||
#define ActReqDatAdmMrkGrp (ActRcvRchTxtCrsLnk+181)
|
#define ActReqDatAdmMrkGrp (ActRcvRchTxtCrsLnk+182)
|
||||||
#define ActChgDatAdmMrkGrp (ActRcvRchTxtCrsLnk+182)
|
#define ActChgDatAdmMrkGrp (ActRcvRchTxtCrsLnk+183)
|
||||||
#define ActDowAdmMrkGrp (ActRcvRchTxtCrsLnk+183)
|
#define ActDowAdmMrkGrp (ActRcvRchTxtCrsLnk+184)
|
||||||
#define ActChgNumRowHeaGrp (ActRcvRchTxtCrsLnk+184)
|
#define ActChgNumRowHeaGrp (ActRcvRchTxtCrsLnk+185)
|
||||||
#define ActChgNumRowFooGrp (ActRcvRchTxtCrsLnk+185)
|
#define ActChgNumRowFooGrp (ActRcvRchTxtCrsLnk+186)
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/******************************* Users tab ***********************************/
|
/******************************* Users tab ***********************************/
|
||||||
|
|
|
@ -199,7 +199,7 @@ void Cal_DrawCurrentMonth (void)
|
||||||
Txt_STR_LANG_ID[Gbl.Prefs.Language]);
|
Txt_STR_LANG_ID[Gbl.Prefs.Language]);
|
||||||
Act_SetParamsForm (ParamsStr,ActSeeCal,true);
|
Act_SetParamsForm (ParamsStr,ActSeeCal,true);
|
||||||
fprintf (Gbl.F.Out,"'%s',",ParamsStr);
|
fprintf (Gbl.F.Out,"'%s',",ParamsStr);
|
||||||
Act_SetParamsForm (ParamsStr,ActSeeOneExaAnn,true);
|
Act_SetParamsForm (ParamsStr,ActSeeDatExaAnn,true);
|
||||||
fprintf (Gbl.F.Out,"'%s');"
|
fprintf (Gbl.F.Out,"'%s');"
|
||||||
"</script>",ParamsStr);
|
"</script>",ParamsStr);
|
||||||
}
|
}
|
||||||
|
@ -269,7 +269,7 @@ void Cal_DrawCalendar (void)
|
||||||
Act_SetParamsForm (ParamsStr,ActSeeCal,true);
|
Act_SetParamsForm (ParamsStr,ActSeeCal,true);
|
||||||
fprintf (Gbl.F.Out,"'%s',",
|
fprintf (Gbl.F.Out,"'%s',",
|
||||||
ParamsStr);
|
ParamsStr);
|
||||||
Act_SetParamsForm (ParamsStr,ActSeeOneExaAnn,true);
|
Act_SetParamsForm (ParamsStr,ActSeeDatExaAnn,true);
|
||||||
fprintf (Gbl.F.Out,"'%s');"
|
fprintf (Gbl.F.Out,"'%s');"
|
||||||
"</script>",
|
"</script>",
|
||||||
ParamsStr);
|
ParamsStr);
|
||||||
|
|
|
@ -132,27 +132,31 @@
|
||||||
// TODO: Check value returned by setlocale in all calls
|
// TODO: Check value returned by setlocale in all calls
|
||||||
// TODO: Write "Tab > Action" in title of text in most frequent actions
|
// TODO: Write "Tab > Action" in title of text in most frequent actions
|
||||||
// TODO: Fix bug in copy-paste from Briefcase to another file browser
|
// TODO: Fix bug in copy-paste from Briefcase to another file browser
|
||||||
// TODO: Fix bug: Asignatura: Arquitectura de Computadores, Crear ZIP de todos los trabajos del grupo C3
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 15.216 (2016-06-01)"
|
#define Log_PLATFORM_VERSION "SWAD 15.217.1 (2016-06-01)"
|
||||||
#define CSS_FILE "swad15.210.css"
|
#define CSS_FILE "swad15.210.css"
|
||||||
#define JS_FILE "swad15.216.js"
|
#define JS_FILE "swad15.216.js"
|
||||||
|
|
||||||
// Number of lines (includes comments but not blank lines) has been got with the following command:
|
// Number of lines (includes comments but not blank lines) has been got with the following command:
|
||||||
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1
|
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1
|
||||||
/*
|
/*
|
||||||
Version 15.216: Jun 01, 2016 When clicking on an exam announcement, it will be shown alone. (201751 lines)
|
Version 15.217.1: Jun 03, 2016 Fixed bug when creating zip file for students works, reported by Francisco Barranco Expósito. (201809 lines)
|
||||||
|
Version 15.217: Jun 01, 2016 When clicking on a social note associated to an exam announcement, show that exam announcement highlighted. (201801 lines)
|
||||||
1 change necessary in database:
|
1 change necessary in database:
|
||||||
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1571','es','N','Ver convocatoria');
|
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1572','es','N','Ver convocatoria');
|
||||||
|
|
||||||
|
Version 15.216: Jun 01, 2016 When clicking on a day on calendar, all exam announcements in that day are shown highlighted. (201751 lines)
|
||||||
|
1 change necessary in database:
|
||||||
|
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1571','es','N','Ver convocatorias de una fecha');
|
||||||
|
|
||||||
Version 15.215: Jun 01, 2016 List exam announcements as a list, like notices. (201670 lines)
|
Version 15.215: Jun 01, 2016 List exam announcements as a list, like notices. (201670 lines)
|
||||||
Version 15.214: May 31, 2016 Fixed bug in renaming test tags. (201589 lines)
|
Version 15.214: May 31, 2016 Fixed bug in renaming test tags. (201589 lines)
|
||||||
Version 15.213: May 31, 2016 Code refactoring related to renaming test tags.
|
Version 15.213: May 31, 2016 Code refactoring related to renaming test tags.
|
||||||
Fixed bug in dates reported by Christian A. Morillas Gutiérrez. (201581 lines)
|
Fixed bug in dates, reported by Christian A. Morillas Gutiérrez. (201581 lines)
|
||||||
Version 15.212.9: May 30, 2016 Link to list institutions of country in country configuration. (201567 lines)
|
Version 15.212.9: May 30, 2016 Link to list institutions of country in country configuration. (201567 lines)
|
||||||
Version 15.212.8: May 30, 2016 Link to list centres of institution in institution configuration. (201555 lines)
|
Version 15.212.8: May 30, 2016 Link to list centres of institution in institution configuration. (201555 lines)
|
||||||
Version 15.212.7: May 30, 2016 Link to list degrees of centre in centre configuration. (201547 lines)
|
Version 15.212.7: May 30, 2016 Link to list degrees of centre in centre configuration. (201547 lines)
|
||||||
|
|
64
swad_exam.c
64
swad_exam.c
|
@ -83,7 +83,6 @@ static void Exa_GetDataExamAnnouncementFromDB (long ExaCod);
|
||||||
static void Exa_ShowExamAnnouncement (long ExaCod,Exa_TypeViewExamAnnouncement_t TypeViewExamAnnouncement);
|
static void Exa_ShowExamAnnouncement (long ExaCod,Exa_TypeViewExamAnnouncement_t TypeViewExamAnnouncement);
|
||||||
static void Exa_PutIconsExamAnnouncement (void);
|
static void Exa_PutIconsExamAnnouncement (void);
|
||||||
static void Exa_PutParamExaCodToEdit (void);
|
static void Exa_PutParamExaCodToEdit (void);
|
||||||
static void Exa_PutHiddenParamExaCod (long ExaCod);
|
|
||||||
static long Exa_GetParamExaCod (void);
|
static long Exa_GetParamExaCod (void);
|
||||||
|
|
||||||
static void Exa_GetNotifContentExamAnnouncement (char **ContentStr);
|
static void Exa_GetNotifContentExamAnnouncement (char **ContentStr);
|
||||||
|
@ -423,10 +422,21 @@ static void Exa_ListExamAnnouncementsEdit (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*************** Get exam announcement to show highlighted *******************/
|
/*********** Get date of exam announcements to show highlighted **************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Exa_GetExaToShowHighlighted (void)
|
void Exa_GetExaCodToHighlight (void)
|
||||||
|
{
|
||||||
|
/***** Get the exam announcement code
|
||||||
|
of the exam announcement to highlight *****/
|
||||||
|
Gbl.ExamAnnouncements.HighlightExaCod = Exa_GetParamExaCod ();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/*********** Get date of exam announcements to show highlighted **************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
void Exa_GetDateToHighlight (void)
|
||||||
{
|
{
|
||||||
/***** Get the date (in YYYY-MM-DD format)
|
/***** Get the date (in YYYY-MM-DD format)
|
||||||
of the exam announcements to highlight *****/
|
of the exam announcements to highlight *****/
|
||||||
|
@ -451,12 +461,49 @@ static void Exa_ListExamAnnouncements (Exa_TypeViewExamAnnouncement_t TypeViewEx
|
||||||
bool ICanEdit = (Gbl.Usrs.Me.LoggedRole == Rol_TEACHER ||
|
bool ICanEdit = (Gbl.Usrs.Me.LoggedRole == Rol_TEACHER ||
|
||||||
Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM);
|
Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM);
|
||||||
|
|
||||||
/***** Show highlighted exam announcement *****/
|
/***** Show one highlighted exam announcement *****/
|
||||||
|
if (Gbl.ExamAnnouncements.HighlightExaCod > 0)
|
||||||
|
{
|
||||||
|
/***** Get one exam announcement from database *****/
|
||||||
|
sprintf (Query,"SELECT ExaCod"
|
||||||
|
" FROM exam_announcements"
|
||||||
|
" WHERE ExaCod='%ld' AND CrsCod='%ld' AND Status<>'%u'",
|
||||||
|
Gbl.ExamAnnouncements.HighlightExaCod,
|
||||||
|
Gbl.CurrentCrs.Crs.CrsCod,
|
||||||
|
(unsigned) Exa_DELETED_EXAM_ANNOUNCEMENT);
|
||||||
|
NumExaAnns = DB_QuerySELECT (Query,&mysql_res,"can not get exam announcements in this course for listing");
|
||||||
|
|
||||||
|
/***** List the existing exam announcements *****/
|
||||||
|
for (NumExaAnn = 0;
|
||||||
|
NumExaAnn < NumExaAnns;
|
||||||
|
NumExaAnn++)
|
||||||
|
{
|
||||||
|
/***** Get the code of the exam announcement (row[0]) *****/
|
||||||
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
|
||||||
|
if (sscanf (row[0],"%ld",&ExaCod) != 1)
|
||||||
|
Lay_ShowErrorAndExit ("Wrong code of exam announcement.");
|
||||||
|
|
||||||
|
/***** Allocate memory for the exam announcement *****/
|
||||||
|
Exa_AllocMemExamAnnouncement ();
|
||||||
|
|
||||||
|
/***** Read the data of the exam announcement *****/
|
||||||
|
Exa_GetDataExamAnnouncementFromDB (ExaCod);
|
||||||
|
|
||||||
|
/***** Show exam announcement *****/
|
||||||
|
Exa_ShowExamAnnouncement (ExaCod,TypeViewExamAnnouncement);
|
||||||
|
|
||||||
|
/***** Free memory of the exam announcement *****/
|
||||||
|
Exa_FreeMemExamAnnouncement ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/***** Show highlighted exam announcements of a date *****/
|
||||||
if (Gbl.ExamAnnouncements.HighlightDate[0])
|
if (Gbl.ExamAnnouncements.HighlightDate[0])
|
||||||
{
|
{
|
||||||
/***** Get exam announcements (the most recent first)
|
/***** Get exam announcements (the most recent first)
|
||||||
in current course for a date from database *****/
|
in current course for a date from database *****/
|
||||||
sprintf (Query,"SELECT ExaCod,ExamDate"
|
sprintf (Query,"SELECT ExaCod"
|
||||||
" FROM exam_announcements"
|
" FROM exam_announcements"
|
||||||
" WHERE CrsCod='%ld' AND Status<>'%u'"
|
" WHERE CrsCod='%ld' AND Status<>'%u'"
|
||||||
" AND DATE(ExamDate)='%s'"
|
" AND DATE(ExamDate)='%s'"
|
||||||
|
@ -493,7 +540,7 @@ static void Exa_ListExamAnnouncements (Exa_TypeViewExamAnnouncement_t TypeViewEx
|
||||||
|
|
||||||
/***** Get exam announcements (the most recent first)
|
/***** Get exam announcements (the most recent first)
|
||||||
in current course from database *****/
|
in current course from database *****/
|
||||||
sprintf (Query,"SELECT ExaCod,ExamDate"
|
sprintf (Query,"SELECT ExaCod"
|
||||||
" FROM exam_announcements"
|
" FROM exam_announcements"
|
||||||
" WHERE CrsCod='%ld' AND Status<>'%u'"
|
" WHERE CrsCod='%ld' AND Status<>'%u'"
|
||||||
" ORDER BY ExamDate DESC",
|
" ORDER BY ExamDate DESC",
|
||||||
|
@ -503,7 +550,8 @@ static void Exa_ListExamAnnouncements (Exa_TypeViewExamAnnouncement_t TypeViewEx
|
||||||
|
|
||||||
/***** Start frame *****/
|
/***** Start frame *****/
|
||||||
Lay_StartRoundFrame (NULL,
|
Lay_StartRoundFrame (NULL,
|
||||||
Gbl.ExamAnnouncements.HighlightDate[0] ? Txt_All_announcements_of_exam :
|
(Gbl.ExamAnnouncements.HighlightExaCod > 0 ||
|
||||||
|
Gbl.ExamAnnouncements.HighlightDate[0]) ? Txt_All_announcements_of_exam :
|
||||||
Txt_Announcements_of_exam,
|
Txt_Announcements_of_exam,
|
||||||
ICanEdit ? Exa_PutIconToCreateNewExamAnnouncement :
|
ICanEdit ? Exa_PutIconToCreateNewExamAnnouncement :
|
||||||
NULL);
|
NULL);
|
||||||
|
@ -1335,7 +1383,7 @@ static void Exa_PutParamExaCodToEdit (void)
|
||||||
Exa_PutHiddenParamExaCod (Gbl.ExamAnnouncements.ExaCodToEdit);
|
Exa_PutHiddenParamExaCod (Gbl.ExamAnnouncements.ExaCodToEdit);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Exa_PutHiddenParamExaCod (long ExaCod)
|
void Exa_PutHiddenParamExaCod (long ExaCod)
|
||||||
{
|
{
|
||||||
Par_PutHiddenParamLong ("ExaCod",ExaCod);
|
Par_PutHiddenParamLong ("ExaCod",ExaCod);
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,9 +59,11 @@ void Exa_FreeMemExamAnnouncement (void);
|
||||||
void Exa_FreeListExamAnnouncements (void);
|
void Exa_FreeListExamAnnouncements (void);
|
||||||
void Exa_ListExamAnnouncementsSee (void);
|
void Exa_ListExamAnnouncementsSee (void);
|
||||||
|
|
||||||
void Exa_GetExaToShowHighlighted (void);
|
void Exa_GetExaCodToHighlight (void);
|
||||||
|
void Exa_GetDateToHighlight (void);
|
||||||
|
|
||||||
void Exa_CreateListOfExamAnnouncements (void);
|
void Exa_CreateListOfExamAnnouncements (void);
|
||||||
|
void Exa_PutHiddenParamExaCod (long ExaCod);
|
||||||
void Exa_GetSummaryAndContentExamAnnouncement (char *SummaryStr,char **ContentStr,
|
void Exa_GetSummaryAndContentExamAnnouncement (char *SummaryStr,char **ContentStr,
|
||||||
long ExaCod,unsigned MaxChars,bool GetContent);
|
long ExaCod,unsigned MaxChars,bool GetContent);
|
||||||
|
|
||||||
|
|
|
@ -3223,6 +3223,8 @@ static void Brw_ShowFileBrowsersAsgWrkCrs (void)
|
||||||
Par_GetNextStrUntilSeparParamMult (&Ptr,UsrDat.EncryptedUsrCod,
|
Par_GetNextStrUntilSeparParamMult (&Ptr,UsrDat.EncryptedUsrCod,
|
||||||
Cry_LENGTH_ENCRYPTED_STR_SHA256_BASE64);
|
Cry_LENGTH_ENCRYPTED_STR_SHA256_BASE64);
|
||||||
Usr_GetUsrCodFromEncryptedUsrCod (&UsrDat);
|
Usr_GetUsrCodFromEncryptedUsrCod (&UsrDat);
|
||||||
|
|
||||||
|
|
||||||
if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&UsrDat)) // Get user's data from database
|
if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&UsrDat)) // Get user's data from database
|
||||||
if (Usr_CheckIfUsrBelongsToCrs (UsrDat.UsrCod,
|
if (Usr_CheckIfUsrBelongsToCrs (UsrDat.UsrCod,
|
||||||
Gbl.CurrentCrs.Crs.CrsCod,
|
Gbl.CurrentCrs.Crs.CrsCod,
|
||||||
|
|
|
@ -196,6 +196,7 @@ void Gbl_InitializeGlobals (void)
|
||||||
|
|
||||||
Gbl.ExamAnnouncements.NumExaAnns = 0;
|
Gbl.ExamAnnouncements.NumExaAnns = 0;
|
||||||
Gbl.ExamAnnouncements.Lst = NULL;
|
Gbl.ExamAnnouncements.Lst = NULL;
|
||||||
|
Gbl.ExamAnnouncements.HighlightExaCod = -1L;
|
||||||
Gbl.ExamAnnouncements.HighlightDate[0] = '\0'; // No exam announcements highlighted
|
Gbl.ExamAnnouncements.HighlightDate[0] = '\0'; // No exam announcements highlighted
|
||||||
|
|
||||||
Gbl.Usrs.Select.All =
|
Gbl.Usrs.Select.All =
|
||||||
|
|
|
@ -482,6 +482,7 @@ struct Globals
|
||||||
struct Date *Lst; // List of dates of exam announcements
|
struct Date *Lst; // List of dates of exam announcements
|
||||||
unsigned NumExaAnns; // Number of announcements of exam in the list
|
unsigned NumExaAnns; // Number of announcements of exam in the list
|
||||||
long ExaCodToEdit; // Used as parameter in contextual links
|
long ExaCodToEdit; // Used as parameter in contextual links
|
||||||
|
long HighlightExaCod; // Exam announcement to be highlighted
|
||||||
char HighlightDate[4+1+2+1+2+1]; // Date with exam announcements to be highlighted (in YYYY-MM-DD format)
|
char HighlightDate[4+1+2+1+2+1]; // Date with exam announcements to be highlighted (in YYYY-MM-DD format)
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
|
|
|
@ -337,7 +337,7 @@ void Not_RemoveNotice (void)
|
||||||
/********************* Get notice to show highlighted ************************/
|
/********************* Get notice to show highlighted ************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Not_GetNotToShowHighlighted (void)
|
void Not_GetNotCodToHighlight (void)
|
||||||
{
|
{
|
||||||
/***** Get the code of the notice to highlight *****/
|
/***** Get the code of the notice to highlight *****/
|
||||||
Gbl.CurrentCrs.Notices.HighlightNotCod = Not_GetParamNotCod ();
|
Gbl.CurrentCrs.Notices.HighlightNotCod = Not_GetParamNotCod ();
|
||||||
|
|
|
@ -66,7 +66,7 @@ void Not_RevealHiddenNotice (void);
|
||||||
void Not_RequestRemNotice (void);
|
void Not_RequestRemNotice (void);
|
||||||
void Not_RemoveNotice (void);
|
void Not_RemoveNotice (void);
|
||||||
|
|
||||||
void Not_GetNotToShowHighlighted (void);
|
void Not_GetNotCodToHighlight (void);
|
||||||
void Not_ShowNotices (Not_Listing_t TypeNoticesListing,bool ICanEdit);
|
void Not_ShowNotices (Not_Listing_t TypeNoticesListing,bool ICanEdit);
|
||||||
void Not_GetSummaryAndContentNotice (char *SummaryStr,char **ContentStr,
|
void Not_GetSummaryAndContentNotice (char *SummaryStr,char **ContentStr,
|
||||||
long NotCod,unsigned MaxChars,bool GetContent);
|
long NotCod,unsigned MaxChars,bool GetContent);
|
||||||
|
|
|
@ -1528,7 +1528,7 @@ static void Soc_PutFormGoToAction (const struct SocialNote *SocNot)
|
||||||
ActReqDatShaCrs, // Soc_NOTE_CRS_SHA_PUB_FILE
|
ActReqDatShaCrs, // Soc_NOTE_CRS_SHA_PUB_FILE
|
||||||
|
|
||||||
/* Assessment tab */
|
/* Assessment tab */
|
||||||
ActSeeAllExaAnn, // Soc_NOTE_EXAM_ANNOUNCEMENT
|
ActSeeOneExaAnn, // Soc_NOTE_EXAM_ANNOUNCEMENT
|
||||||
|
|
||||||
/* Users tab */
|
/* Users tab */
|
||||||
|
|
||||||
|
@ -1629,7 +1629,7 @@ static void Soc_PutFormGoToAction (const struct SocialNote *SocNot)
|
||||||
break;
|
break;
|
||||||
case Soc_NOTE_EXAM_ANNOUNCEMENT:
|
case Soc_NOTE_EXAM_ANNOUNCEMENT:
|
||||||
Act_FormStartUnique (Soc_DefaultActions[SocNot->NoteType]);
|
Act_FormStartUnique (Soc_DefaultActions[SocNot->NoteType]);
|
||||||
Not_PutHiddenParamNotCod (SocNot->Cod);
|
Exa_PutHiddenParamExaCod (SocNot->Cod);
|
||||||
if (SocNot->HieCod != Gbl.CurrentCrs.Crs.CrsCod) // Not the current course
|
if (SocNot->HieCod != Gbl.CurrentCrs.Crs.CrsCod) // Not the current course
|
||||||
Crs_PutParamCrsCod (SocNot->HieCod); // Go to another course
|
Crs_PutParamCrsCod (SocNot->HieCod); // Go to another course
|
||||||
break;
|
break;
|
||||||
|
|
28
swad_zip.c
28
swad_zip.c
|
@ -260,20 +260,28 @@ void ZIP_CreateDirCompressionUsr (struct UsrData *UsrDat)
|
||||||
/***** Create a link in the tree of compression
|
/***** Create a link in the tree of compression
|
||||||
with a name that identifies the owner
|
with a name that identifies the owner
|
||||||
of the assignments and works *****/
|
of the assignments and works *****/
|
||||||
sprintf (FullNameAndUsrID,"%s%s%s%s%s%s",
|
/* Create link name for this user */
|
||||||
UsrDat->Surname1 ,
|
strcpy (FullNameAndUsrID,UsrDat->Surname1);
|
||||||
UsrDat->Surname1[0] ? "_" :
|
if (UsrDat->Surname1[0] &&
|
||||||
"",
|
UsrDat->Surname2[0])
|
||||||
UsrDat->Surname2 ,
|
strcat (FullNameAndUsrID,"_"); // Separation between surname 1 and surname 2
|
||||||
UsrDat->Surname2[0] ? "_" :
|
strcat (FullNameAndUsrID,UsrDat->Surname2);
|
||||||
"",
|
if ((UsrDat->Surname1[0] ||
|
||||||
UsrDat->FirstName,
|
UsrDat->Surname2[0]) &&
|
||||||
UsrDat->FirstName[0] ? "-" :
|
UsrDat->FirstName[0])
|
||||||
"");
|
strcat (FullNameAndUsrID,"_"); // Separation between surnames and first name
|
||||||
|
strcat (FullNameAndUsrID,UsrDat->FirstName);
|
||||||
|
if ((UsrDat->Surname1[0] ||
|
||||||
|
UsrDat->Surname2[0] ||
|
||||||
|
UsrDat->FirstName[0]) &&
|
||||||
|
UsrDat->IDs.Num)
|
||||||
|
strcat (FullNameAndUsrID,"-"); // Separation between name and ID
|
||||||
Str_LimitLengthHTMLStr (FullNameAndUsrID,50);
|
Str_LimitLengthHTMLStr (FullNameAndUsrID,50);
|
||||||
|
if (UsrDat->IDs.Num) // If this user has at least one ID
|
||||||
strcat (FullNameAndUsrID,UsrDat->IDs.List[0].ID); // First user's ID
|
strcat (FullNameAndUsrID,UsrDat->IDs.List[0].ID); // First user's ID
|
||||||
Str_ConvertToValidFileName (FullNameAndUsrID);
|
Str_ConvertToValidFileName (FullNameAndUsrID);
|
||||||
|
|
||||||
|
/* Create path to folder and link */
|
||||||
sprintf (PathFolderUsrInsideCrs,"%s/usr/%02u/%ld",
|
sprintf (PathFolderUsrInsideCrs,"%s/usr/%02u/%ld",
|
||||||
Gbl.CurrentCrs.PathPriv,
|
Gbl.CurrentCrs.PathPriv,
|
||||||
(unsigned) (UsrDat->UsrCod % 100),
|
(unsigned) (UsrDat->UsrCod % 100),
|
||||||
|
|
Loading…
Reference in New Issue
Block a user