Version 15.217.1

This commit is contained in:
Antonio Cañas Vargas 2016-06-03 10:37:00 +02:00
parent c756157d8c
commit c47cfe523d
13 changed files with 168 additions and 98 deletions

View File

@ -816,7 +816,8 @@ Assessment:
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
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
673. ActRcvExaAnn Receive an exam announcement
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},
/* 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},
/* 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},
@ -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},
/* 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},
/* 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},
@ -4393,7 +4395,8 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq
ActCnfID_Oth, // #1568
ActCnfID_Std, // #1569
ActCnfID_Tch, // #1570
ActSeeOneExaAnn, // #1571
ActSeeDatExaAnn, // #1571
ActSeeOneExaAnn, // #1572
};
/*****************************************************************************/

View File

@ -72,9 +72,9 @@ typedef enum
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
@ -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 ActSeeOneExaAnn (ActRcvRchTxtCrsLnk+125)
#define ActEdiExaAnn (ActRcvRchTxtCrsLnk+126)
#define ActRcvExaAnn (ActRcvRchTxtCrsLnk+127)
#define ActPrnExaAnn (ActRcvRchTxtCrsLnk+128)
#define ActRemExaAnn (ActRcvRchTxtCrsLnk+129)
#define ActSeeDatExaAnn (ActRcvRchTxtCrsLnk+126)
#define ActEdiExaAnn (ActRcvRchTxtCrsLnk+127)
#define ActRcvExaAnn (ActRcvRchTxtCrsLnk+128)
#define ActPrnExaAnn (ActRcvRchTxtCrsLnk+129)
#define ActRemExaAnn (ActRcvRchTxtCrsLnk+130)
#define ActChgToSeeMrk (ActRcvRchTxtCrsLnk+130)
#define ActChgToSeeMrk (ActRcvRchTxtCrsLnk+131)
#define ActSeeMrkCrs (ActRcvRchTxtCrsLnk+131)
#define ActExpSeeMrkCrs (ActRcvRchTxtCrsLnk+132)
#define ActConSeeMrkCrs (ActRcvRchTxtCrsLnk+133)
#define ActReqDatSeeMrkCrs (ActRcvRchTxtCrsLnk+134)
#define ActSeeMyMrkCrs (ActRcvRchTxtCrsLnk+135)
#define ActSeeMrkCrs (ActRcvRchTxtCrsLnk+132)
#define ActExpSeeMrkCrs (ActRcvRchTxtCrsLnk+133)
#define ActConSeeMrkCrs (ActRcvRchTxtCrsLnk+134)
#define ActReqDatSeeMrkCrs (ActRcvRchTxtCrsLnk+135)
#define ActSeeMyMrkCrs (ActRcvRchTxtCrsLnk+136)
#define ActSeeMrkGrp (ActRcvRchTxtCrsLnk+136)
#define ActExpSeeMrkGrp (ActRcvRchTxtCrsLnk+137)
#define ActConSeeMrkGrp (ActRcvRchTxtCrsLnk+138)
#define ActReqDatSeeMrkGrp (ActRcvRchTxtCrsLnk+139)
#define ActSeeMyMrkGrp (ActRcvRchTxtCrsLnk+140)
#define ActSeeMrkGrp (ActRcvRchTxtCrsLnk+137)
#define ActExpSeeMrkGrp (ActRcvRchTxtCrsLnk+138)
#define ActConSeeMrkGrp (ActRcvRchTxtCrsLnk+139)
#define ActReqDatSeeMrkGrp (ActRcvRchTxtCrsLnk+140)
#define ActSeeMyMrkGrp (ActRcvRchTxtCrsLnk+141)
#define ActChgToAdmMrk (ActRcvRchTxtCrsLnk+141)
#define ActChgToAdmMrk (ActRcvRchTxtCrsLnk+142)
#define ActAdmMrkCrs (ActRcvRchTxtCrsLnk+142)
#define ActReqRemFilMrkCrs (ActRcvRchTxtCrsLnk+143)
#define ActRemFilMrkCrs (ActRcvRchTxtCrsLnk+144)
#define ActRemFolMrkCrs (ActRcvRchTxtCrsLnk+145)
#define ActCopMrkCrs (ActRcvRchTxtCrsLnk+146)
#define ActPasMrkCrs (ActRcvRchTxtCrsLnk+147)
#define ActRemTreMrkCrs (ActRcvRchTxtCrsLnk+148)
#define ActFrmCreMrkCrs (ActRcvRchTxtCrsLnk+149)
#define ActCreFolMrkCrs (ActRcvRchTxtCrsLnk+150)
#define ActRenFolMrkCrs (ActRcvRchTxtCrsLnk+151)
#define ActRcvFilMrkCrsDZ (ActRcvRchTxtCrsLnk+152)
#define ActRcvFilMrkCrsCla (ActRcvRchTxtCrsLnk+153)
#define ActExpAdmMrkCrs (ActRcvRchTxtCrsLnk+154)
#define ActConAdmMrkCrs (ActRcvRchTxtCrsLnk+155)
#define ActZIPAdmMrkCrs (ActRcvRchTxtCrsLnk+156)
#define ActShoMrkCrs (ActRcvRchTxtCrsLnk+157)
#define ActHidMrkCrs (ActRcvRchTxtCrsLnk+158)
#define ActReqDatAdmMrkCrs (ActRcvRchTxtCrsLnk+159)
#define ActChgDatAdmMrkCrs (ActRcvRchTxtCrsLnk+160)
#define ActDowAdmMrkCrs (ActRcvRchTxtCrsLnk+161)
#define ActChgNumRowHeaCrs (ActRcvRchTxtCrsLnk+162)
#define ActChgNumRowFooCrs (ActRcvRchTxtCrsLnk+163)
#define ActAdmMrkCrs (ActRcvRchTxtCrsLnk+143)
#define ActReqRemFilMrkCrs (ActRcvRchTxtCrsLnk+144)
#define ActRemFilMrkCrs (ActRcvRchTxtCrsLnk+145)
#define ActRemFolMrkCrs (ActRcvRchTxtCrsLnk+146)
#define ActCopMrkCrs (ActRcvRchTxtCrsLnk+147)
#define ActPasMrkCrs (ActRcvRchTxtCrsLnk+148)
#define ActRemTreMrkCrs (ActRcvRchTxtCrsLnk+149)
#define ActFrmCreMrkCrs (ActRcvRchTxtCrsLnk+150)
#define ActCreFolMrkCrs (ActRcvRchTxtCrsLnk+151)
#define ActRenFolMrkCrs (ActRcvRchTxtCrsLnk+152)
#define ActRcvFilMrkCrsDZ (ActRcvRchTxtCrsLnk+153)
#define ActRcvFilMrkCrsCla (ActRcvRchTxtCrsLnk+154)
#define ActExpAdmMrkCrs (ActRcvRchTxtCrsLnk+155)
#define ActConAdmMrkCrs (ActRcvRchTxtCrsLnk+156)
#define ActZIPAdmMrkCrs (ActRcvRchTxtCrsLnk+157)
#define ActShoMrkCrs (ActRcvRchTxtCrsLnk+158)
#define ActHidMrkCrs (ActRcvRchTxtCrsLnk+159)
#define ActReqDatAdmMrkCrs (ActRcvRchTxtCrsLnk+160)
#define ActChgDatAdmMrkCrs (ActRcvRchTxtCrsLnk+161)
#define ActDowAdmMrkCrs (ActRcvRchTxtCrsLnk+162)
#define ActChgNumRowHeaCrs (ActRcvRchTxtCrsLnk+163)
#define ActChgNumRowFooCrs (ActRcvRchTxtCrsLnk+164)
#define ActAdmMrkGrp (ActRcvRchTxtCrsLnk+164)
#define ActReqRemFilMrkGrp (ActRcvRchTxtCrsLnk+165)
#define ActRemFilMrkGrp (ActRcvRchTxtCrsLnk+166)
#define ActRemFolMrkGrp (ActRcvRchTxtCrsLnk+167)
#define ActCopMrkGrp (ActRcvRchTxtCrsLnk+168)
#define ActPasMrkGrp (ActRcvRchTxtCrsLnk+169)
#define ActRemTreMrkGrp (ActRcvRchTxtCrsLnk+170)
#define ActFrmCreMrkGrp (ActRcvRchTxtCrsLnk+171)
#define ActCreFolMrkGrp (ActRcvRchTxtCrsLnk+172)
#define ActRenFolMrkGrp (ActRcvRchTxtCrsLnk+173)
#define ActRcvFilMrkGrpDZ (ActRcvRchTxtCrsLnk+174)
#define ActRcvFilMrkGrpCla (ActRcvRchTxtCrsLnk+175)
#define ActExpAdmMrkGrp (ActRcvRchTxtCrsLnk+176)
#define ActConAdmMrkGrp (ActRcvRchTxtCrsLnk+177)
#define ActZIPAdmMrkGrp (ActRcvRchTxtCrsLnk+178)
#define ActShoMrkGrp (ActRcvRchTxtCrsLnk+179)
#define ActHidMrkGrp (ActRcvRchTxtCrsLnk+180)
#define ActReqDatAdmMrkGrp (ActRcvRchTxtCrsLnk+181)
#define ActChgDatAdmMrkGrp (ActRcvRchTxtCrsLnk+182)
#define ActDowAdmMrkGrp (ActRcvRchTxtCrsLnk+183)
#define ActChgNumRowHeaGrp (ActRcvRchTxtCrsLnk+184)
#define ActChgNumRowFooGrp (ActRcvRchTxtCrsLnk+185)
#define ActAdmMrkGrp (ActRcvRchTxtCrsLnk+165)
#define ActReqRemFilMrkGrp (ActRcvRchTxtCrsLnk+166)
#define ActRemFilMrkGrp (ActRcvRchTxtCrsLnk+167)
#define ActRemFolMrkGrp (ActRcvRchTxtCrsLnk+168)
#define ActCopMrkGrp (ActRcvRchTxtCrsLnk+169)
#define ActPasMrkGrp (ActRcvRchTxtCrsLnk+170)
#define ActRemTreMrkGrp (ActRcvRchTxtCrsLnk+171)
#define ActFrmCreMrkGrp (ActRcvRchTxtCrsLnk+172)
#define ActCreFolMrkGrp (ActRcvRchTxtCrsLnk+173)
#define ActRenFolMrkGrp (ActRcvRchTxtCrsLnk+174)
#define ActRcvFilMrkGrpDZ (ActRcvRchTxtCrsLnk+175)
#define ActRcvFilMrkGrpCla (ActRcvRchTxtCrsLnk+176)
#define ActExpAdmMrkGrp (ActRcvRchTxtCrsLnk+177)
#define ActConAdmMrkGrp (ActRcvRchTxtCrsLnk+178)
#define ActZIPAdmMrkGrp (ActRcvRchTxtCrsLnk+179)
#define ActShoMrkGrp (ActRcvRchTxtCrsLnk+180)
#define ActHidMrkGrp (ActRcvRchTxtCrsLnk+181)
#define ActReqDatAdmMrkGrp (ActRcvRchTxtCrsLnk+182)
#define ActChgDatAdmMrkGrp (ActRcvRchTxtCrsLnk+183)
#define ActDowAdmMrkGrp (ActRcvRchTxtCrsLnk+184)
#define ActChgNumRowHeaGrp (ActRcvRchTxtCrsLnk+185)
#define ActChgNumRowFooGrp (ActRcvRchTxtCrsLnk+186)
/*****************************************************************************/
/******************************* Users tab ***********************************/

View File

@ -199,7 +199,7 @@ void Cal_DrawCurrentMonth (void)
Txt_STR_LANG_ID[Gbl.Prefs.Language]);
Act_SetParamsForm (ParamsStr,ActSeeCal,true);
fprintf (Gbl.F.Out,"'%s',",ParamsStr);
Act_SetParamsForm (ParamsStr,ActSeeOneExaAnn,true);
Act_SetParamsForm (ParamsStr,ActSeeDatExaAnn,true);
fprintf (Gbl.F.Out,"'%s');"
"</script>",ParamsStr);
}
@ -269,7 +269,7 @@ void Cal_DrawCalendar (void)
Act_SetParamsForm (ParamsStr,ActSeeCal,true);
fprintf (Gbl.F.Out,"'%s',",
ParamsStr);
Act_SetParamsForm (ParamsStr,ActSeeOneExaAnn,true);
Act_SetParamsForm (ParamsStr,ActSeeDatExaAnn,true);
fprintf (Gbl.F.Out,"'%s');"
"</script>",
ParamsStr);

View File

@ -132,27 +132,31 @@
// TODO: Check value returned by setlocale in all calls
// 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: Asignatura: Arquitectura de Computadores, Crear ZIP de todos los trabajos del grupo C3
/*****************************************************************************/
/****************************** 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 JS_FILE "swad15.216.js"
// 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
/*
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:
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.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.
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.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)

View File

@ -83,7 +83,6 @@ static void Exa_GetDataExamAnnouncementFromDB (long ExaCod);
static void Exa_ShowExamAnnouncement (long ExaCod,Exa_TypeViewExamAnnouncement_t TypeViewExamAnnouncement);
static void Exa_PutIconsExamAnnouncement (void);
static void Exa_PutParamExaCodToEdit (void);
static void Exa_PutHiddenParamExaCod (long ExaCod);
static long Exa_GetParamExaCod (void);
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)
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 ||
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])
{
/***** Get exam announcements (the most recent first)
in current course for a date from database *****/
sprintf (Query,"SELECT ExaCod,ExamDate"
sprintf (Query,"SELECT ExaCod"
" FROM exam_announcements"
" WHERE CrsCod='%ld' AND Status<>'%u'"
" AND DATE(ExamDate)='%s'"
@ -493,7 +540,7 @@ static void Exa_ListExamAnnouncements (Exa_TypeViewExamAnnouncement_t TypeViewEx
/***** Get exam announcements (the most recent first)
in current course from database *****/
sprintf (Query,"SELECT ExaCod,ExamDate"
sprintf (Query,"SELECT ExaCod"
" FROM exam_announcements"
" WHERE CrsCod='%ld' AND Status<>'%u'"
" ORDER BY ExamDate DESC",
@ -503,8 +550,9 @@ static void Exa_ListExamAnnouncements (Exa_TypeViewExamAnnouncement_t TypeViewEx
/***** Start frame *****/
Lay_StartRoundFrame (NULL,
Gbl.ExamAnnouncements.HighlightDate[0] ? Txt_All_announcements_of_exam :
Txt_Announcements_of_exam,
(Gbl.ExamAnnouncements.HighlightExaCod > 0 ||
Gbl.ExamAnnouncements.HighlightDate[0]) ? Txt_All_announcements_of_exam :
Txt_Announcements_of_exam,
ICanEdit ? Exa_PutIconToCreateNewExamAnnouncement :
NULL);
@ -1335,7 +1383,7 @@ static void Exa_PutParamExaCodToEdit (void)
Exa_PutHiddenParamExaCod (Gbl.ExamAnnouncements.ExaCodToEdit);
}
static void Exa_PutHiddenParamExaCod (long ExaCod)
void Exa_PutHiddenParamExaCod (long ExaCod)
{
Par_PutHiddenParamLong ("ExaCod",ExaCod);
}

View File

@ -59,9 +59,11 @@ void Exa_FreeMemExamAnnouncement (void);
void Exa_FreeListExamAnnouncements (void);
void Exa_ListExamAnnouncementsSee (void);
void Exa_GetExaToShowHighlighted (void);
void Exa_GetExaCodToHighlight (void);
void Exa_GetDateToHighlight (void);
void Exa_CreateListOfExamAnnouncements (void);
void Exa_PutHiddenParamExaCod (long ExaCod);
void Exa_GetSummaryAndContentExamAnnouncement (char *SummaryStr,char **ContentStr,
long ExaCod,unsigned MaxChars,bool GetContent);

View File

@ -3223,6 +3223,8 @@ static void Brw_ShowFileBrowsersAsgWrkCrs (void)
Par_GetNextStrUntilSeparParamMult (&Ptr,UsrDat.EncryptedUsrCod,
Cry_LENGTH_ENCRYPTED_STR_SHA256_BASE64);
Usr_GetUsrCodFromEncryptedUsrCod (&UsrDat);
if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&UsrDat)) // Get user's data from database
if (Usr_CheckIfUsrBelongsToCrs (UsrDat.UsrCod,
Gbl.CurrentCrs.Crs.CrsCod,

View File

@ -196,6 +196,7 @@ void Gbl_InitializeGlobals (void)
Gbl.ExamAnnouncements.NumExaAnns = 0;
Gbl.ExamAnnouncements.Lst = NULL;
Gbl.ExamAnnouncements.HighlightExaCod = -1L;
Gbl.ExamAnnouncements.HighlightDate[0] = '\0'; // No exam announcements highlighted
Gbl.Usrs.Select.All =

View File

@ -482,6 +482,7 @@ struct Globals
struct Date *Lst; // List of dates of exam announcements
unsigned NumExaAnns; // Number of announcements of exam in the list
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)
struct
{

View File

@ -337,7 +337,7 @@ void Not_RemoveNotice (void)
/********************* Get notice to show highlighted ************************/
/*****************************************************************************/
void Not_GetNotToShowHighlighted (void)
void Not_GetNotCodToHighlight (void)
{
/***** Get the code of the notice to highlight *****/
Gbl.CurrentCrs.Notices.HighlightNotCod = Not_GetParamNotCod ();

View File

@ -66,7 +66,7 @@ void Not_RevealHiddenNotice (void);
void Not_RequestRemNotice (void);
void Not_RemoveNotice (void);
void Not_GetNotToShowHighlighted (void);
void Not_GetNotCodToHighlight (void);
void Not_ShowNotices (Not_Listing_t TypeNoticesListing,bool ICanEdit);
void Not_GetSummaryAndContentNotice (char *SummaryStr,char **ContentStr,
long NotCod,unsigned MaxChars,bool GetContent);

View File

@ -1528,7 +1528,7 @@ static void Soc_PutFormGoToAction (const struct SocialNote *SocNot)
ActReqDatShaCrs, // Soc_NOTE_CRS_SHA_PUB_FILE
/* Assessment tab */
ActSeeAllExaAnn, // Soc_NOTE_EXAM_ANNOUNCEMENT
ActSeeOneExaAnn, // Soc_NOTE_EXAM_ANNOUNCEMENT
/* Users tab */
@ -1629,7 +1629,7 @@ static void Soc_PutFormGoToAction (const struct SocialNote *SocNot)
break;
case Soc_NOTE_EXAM_ANNOUNCEMENT:
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
Crs_PutParamCrsCod (SocNot->HieCod); // Go to another course
break;

View File

@ -260,20 +260,28 @@ void ZIP_CreateDirCompressionUsr (struct UsrData *UsrDat)
/***** Create a link in the tree of compression
with a name that identifies the owner
of the assignments and works *****/
sprintf (FullNameAndUsrID,"%s%s%s%s%s%s",
UsrDat->Surname1 ,
UsrDat->Surname1[0] ? "_" :
"",
UsrDat->Surname2 ,
UsrDat->Surname2[0] ? "_" :
"",
UsrDat->FirstName,
UsrDat->FirstName[0] ? "-" :
"");
/* Create link name for this user */
strcpy (FullNameAndUsrID,UsrDat->Surname1);
if (UsrDat->Surname1[0] &&
UsrDat->Surname2[0])
strcat (FullNameAndUsrID,"_"); // Separation between surname 1 and surname 2
strcat (FullNameAndUsrID,UsrDat->Surname2);
if ((UsrDat->Surname1[0] ||
UsrDat->Surname2[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);
strcat (FullNameAndUsrID,UsrDat->IDs.List[0].ID); // First user's ID
if (UsrDat->IDs.Num) // If this user has at least one ID
strcat (FullNameAndUsrID,UsrDat->IDs.List[0].ID); // First user's ID
Str_ConvertToValidFileName (FullNameAndUsrID);
/* Create path to folder and link */
sprintf (PathFolderUsrInsideCrs,"%s/usr/%02u/%ld",
Gbl.CurrentCrs.PathPriv,
(unsigned) (UsrDat->UsrCod % 100),