mirror of https://github.com/acanas/swad-core.git
Version 15.216
This commit is contained in:
parent
f2a6f49ffa
commit
c756157d8c
|
@ -1001,12 +1001,15 @@ function DrawMonth (id,FirstDayOfWeek,YearToDraw,MonthToDraw,CurrentMonth,Curren
|
|||
];
|
||||
var Hld_HOLIDAY = 0;
|
||||
var Hld_NON_SCHOOL_PERIOD = 1;
|
||||
var Week;
|
||||
var DayOfWeek; /* 0, 1, 2, 3, 4, 5, 6 */
|
||||
var Day;
|
||||
var NumDaysInMonth;
|
||||
var Yea = YearToDraw;
|
||||
var Mon = MonthToDraw;
|
||||
var Day;
|
||||
var StrMon;
|
||||
var StrDay;
|
||||
var StrDate;
|
||||
var Week;
|
||||
var DayOfWeek; /* 0, 1, 2, 3, 4, 5, 6 */
|
||||
var NumDaysInMonth;
|
||||
var YYYYMMDD;
|
||||
var NumHld;
|
||||
var ClassForDay; // Class of day depending on type of day
|
||||
|
@ -1139,11 +1142,12 @@ function DrawMonth (id,FirstDayOfWeek,YearToDraw,MonthToDraw,CurrentMonth,Curren
|
|||
Mon == LstExamAnnouncements[NumExamAnnouncement].Month &&
|
||||
Day == LstExamAnnouncements[NumExamAnnouncement].Day) {
|
||||
ThisDayHasEvent = true;
|
||||
if (!PrintView)
|
||||
TextForDay = STR_EXAM + ': ' +
|
||||
LstExamAnnouncements[NumExamAnnouncement].Year + '-' +
|
||||
LstExamAnnouncements[NumExamAnnouncement].Month + '-' +
|
||||
LstExamAnnouncements[NumExamAnnouncement].Day;
|
||||
if (!PrintView) {
|
||||
StrMon = ((Mon < 10) ? '0' : '') + Mon;
|
||||
StrDay = ((Day < 10) ? '0' : '') + Day;
|
||||
StrDate = Yea + '-' + StrMon + '-' + StrDay;
|
||||
TextForDay = STR_EXAM + ': ' + StrDate;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1161,11 +1165,13 @@ function DrawMonth (id,FirstDayOfWeek,YearToDraw,MonthToDraw,CurrentMonth,Curren
|
|||
FormId = id + '_event_' + FormIdNum;
|
||||
Gbl_HTMLContent += '<form method="post" action="' + CGI + '" id="' + FormId + '">' +
|
||||
FormEventParams +
|
||||
'<div class="' + ClassForDay + '"';
|
||||
'<input type="hidden" name=\"Date\" value="' +
|
||||
StrDate +
|
||||
'" /><div class="' + ClassForDay + '"';
|
||||
if (TextForDay.length)
|
||||
Gbl_HTMLContent += ' title="' + TextForDay + '"';
|
||||
Gbl_HTMLContent += '><a href="" class="' + ClassForDay + '"' +
|
||||
' onclick="document.getElementById(\'' + FormId +
|
||||
Gbl_HTMLContent += '><a href="" class="' + ClassForDay +
|
||||
'" onclick="document.getElementById(\'' + FormId +
|
||||
'\').submit();return false;">';
|
||||
} else {
|
||||
Gbl_HTMLContent += '<div class="' + ClassForDay + '"';
|
|
@ -168,7 +168,7 @@ void QR_ExamAnnnouncement (void)
|
|||
" style=\"width:250px; height:250px;\" />"
|
||||
"</div>",
|
||||
300,300,
|
||||
Cfg_HTTPS_URL_SWAD_CGI,Gbl.CurrentCrs.Crs.CrsCod,Act_Actions[ActSeeExaAnn].ActCod,
|
||||
Cfg_HTTPS_URL_SWAD_CGI,Gbl.CurrentCrs.Crs.CrsCod,Act_Actions[ActSeeAllExaAnn].ActCod,
|
||||
Txt_Link_to_announcement_of_exam,
|
||||
Txt_Link_to_announcement_of_exam);
|
||||
}
|
||||
|
|
|
@ -695,7 +695,7 @@ Assessment:
|
|||
551. ActReqAsgWrkCrs A teacher requests edition of works sent to the course
|
||||
552. ActReqTst Request a test of self-assesment
|
||||
553. ActSeeCal Show the academic calendar of the course with exam announcements
|
||||
554. ActSeeExaAnn Show the exam announcements
|
||||
554. ActSeeAllExaAnn Show the exam announcements
|
||||
555. ActSeeAdmMrk Marks zone (see or admin)
|
||||
|
||||
556. ActEdiAss Edit the assessment system
|
||||
|
@ -816,6 +816,7 @@ 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
|
||||
672. ActEdiExaAnn Edit an exam announcement
|
||||
673. ActRcvExaAnn Receive an exam announcement
|
||||
674. ActPrnExaAnn Show an exam announcement ready to be printed
|
||||
|
@ -1232,7 +1233,7 @@ Social:
|
|||
Messages:
|
||||
1047. ActSeeNtf Show my recent notifications
|
||||
1048. ActSeeAnn Show global announcements
|
||||
1049. ActSeeNot Show notices
|
||||
1049. ActSeeAllNot Show all notices
|
||||
1050. ActReqMsgUsr Write message to several users
|
||||
1051. ActSeeRcvMsg Show the messages received from other users (link in menu)
|
||||
1052. ActSeeSntMsg Show the messages sent to other users
|
||||
|
@ -1242,7 +1243,7 @@ Messages:
|
|||
1056. ActHidAnn Hide a global announcement that was active
|
||||
1057. ActRevAnn Reveal a global announcement that was hidden
|
||||
1058. ActRemAnn Remove global announcement
|
||||
1059. ActShoNot Show (expand) a notice
|
||||
1059. ActSeeOneNot Show (expand) a notice
|
||||
1060. ActWriNot Write a new notice
|
||||
1061. ActRcvNot Receive and create a new notice
|
||||
1062. ActHidNot Hide a notice that was active
|
||||
|
@ -2050,7 +2051,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
|||
/* ActReqAsgWrkCrs */{ 899, 3,TabAss,ActReqAsgWrkCrs ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_AskEditWorksCrs ,"folderusers64x64.gif" },
|
||||
/* ActReqTst */{ 103, 4,TabAss,ActReqTst ,0x118,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Tst_ShowFormAskTst ,"test64x64.gif" },
|
||||
/* ActSeeCal */{ 16, 5,TabAss,ActSeeCal ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Cal_DrawCalendar ,"date64x64.gif" },
|
||||
/* ActSeeExaAnn */{ 85, 6,TabAss,ActSeeExaAnn ,0x1FF,0x1FF,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Exa_ListExamAnnouncementsSee ,"announce64x64.gif" },
|
||||
/* ActSeeAllExaAnn */{ 85, 6,TabAss,ActSeeAllExaAnn ,0x1FF,0x1FF,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Exa_ListExamAnnouncementsSee ,"announce64x64.gif" },
|
||||
/* ActSeeAdmMrk */{ 17, 7,TabAss,ActSeeAdmMrk ,0x118,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_ShowFileBrowserOrWorks ,"grades64x64.gif" },
|
||||
|
||||
// Actions not in menu:
|
||||
|
@ -2182,10 +2183,11 @@ 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},
|
||||
|
||||
/* ActEdiExaAnn */{ 91,-1,TabAss,ActSeeExaAnn ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Exa_PutFrmEditAExamAnnouncement,NULL},
|
||||
/* ActRcvExaAnn */{ 110,-1,TabAss,ActSeeExaAnn ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Exa_ReceiveExamAnnouncement ,NULL},
|
||||
/* ActPrnExaAnn */{ 179,-1,TabAss,ActSeeExaAnn ,0x1FF,0x1FF,0x000,Act_CONTENT_NORM,Act_NEW_WINDOW ,NULL ,Exa_PrintExamAnnouncement ,NULL},
|
||||
/* ActRemExaAnn */{ 187,-1,TabAss,ActSeeExaAnn ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Exa_RemoveExamAnnouncement ,NULL},
|
||||
/* ActSeeOneExaAnn */{1571,-1,TabAss,ActSeeAllExaAnn ,0x1FF,0x1FF,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,Exa_GetExaToShowHighlighted ,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},
|
||||
/* ActRemExaAnn */{ 187,-1,TabAss,ActSeeAllExaAnn ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Exa_RemoveExamAnnouncement ,NULL},
|
||||
|
||||
/* ActChgToSeeMrk */{1198,-1,TabAss,ActSeeAdmMrk ,0x118,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_ShowFileBrowserOrWorks ,NULL},
|
||||
|
||||
|
@ -2633,7 +2635,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
|||
// Actions in menu:
|
||||
/* ActSeeNtf */{ 990, 0,TabMsg,ActSeeNtf ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Ntf_ShowMyNotifications ,"bell64x64.gif" },
|
||||
/* ActSeeAnn */{1235, 1,TabMsg,ActSeeAnn ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Ann_ShowAllAnnouncements ,"note64x64.gif" },
|
||||
/* ActSeeNot */{ 762, 2,TabMsg,ActSeeNot ,0x1FF,0x1FF,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Not_ListFullNotices ,"note64x64.gif" },
|
||||
/* ActSeeAllNot */{ 762, 2,TabMsg,ActSeeAllNot ,0x1FF,0x1FF,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Not_ListFullNotices ,"note64x64.gif" },
|
||||
/* ActReqMsgUsr */{ 26, 3,TabMsg,ActReqMsgUsr ,0x1FC,0x1FC,0x1FC,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Msg_FormMsgUsrs ,"editnewmsg64x64.gif" },
|
||||
/* ActSeeRcvMsg */{ 3, 4,TabMsg,ActSeeRcvMsg ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Msg_ShowRecMsgs ,"recmsg64x64.gif" },
|
||||
/* ActSeeSntMsg */{ 70, 5,TabMsg,ActSeeSntMsg ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Msg_ShowSntMsgs ,"sntmsg64x64.gif" },
|
||||
|
@ -2646,13 +2648,13 @@ 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},
|
||||
|
||||
/* ActShoNot */{1164,-1,TabMsg,ActSeeNot ,0x1FF,0x1FF,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,Not_GetNotToShowHighlighted ,Not_ListFullNotices ,NULL},
|
||||
/* ActWriNot */{ 59,-1,TabMsg,ActSeeNot ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Not_ShowFormNotice ,NULL},
|
||||
/* ActRcvNot */{ 60,-1,TabMsg,ActSeeNot ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,Not_ReceiveNotice ,Not_ListFullNotices ,NULL},
|
||||
/* ActHidNot */{ 763,-1,TabMsg,ActSeeNot ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,Not_HideActiveNotice ,Not_ListFullNotices ,NULL},
|
||||
/* ActRevNot */{ 764,-1,TabMsg,ActSeeNot ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,Not_RevealHiddenNotice ,Not_ListFullNotices ,NULL},
|
||||
/* ActReqRemNot */{1472,-1,TabMsg,ActSeeNot ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Not_RequestRemNotice ,NULL},
|
||||
/* ActRemNot */{ 73,-1,TabMsg,ActSeeNot ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,Not_RemoveNotice ,Not_ListNoticesAfterRemoval ,NULL},
|
||||
/* ActSeeOneNot */{1164,-1,TabMsg,ActSeeAllNot ,0x1FF,0x1FF,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,Not_GetNotToShowHighlighted ,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},
|
||||
/* ActRevNot */{ 764,-1,TabMsg,ActSeeAllNot ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,Not_RevealHiddenNotice ,Not_ListFullNotices ,NULL},
|
||||
/* ActReqRemNot */{1472,-1,TabMsg,ActSeeAllNot ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Not_RequestRemNotice ,NULL},
|
||||
/* ActRemNot */{ 73,-1,TabMsg,ActSeeAllNot ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,Not_RemoveNotice ,Not_ListNoticesAfterRemoval ,NULL},
|
||||
|
||||
/* ActSeeNewNtf */{ 991,-1,TabMsg,ActSeeNtf ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Ntf_ShowMyNotifications ,NULL},
|
||||
/* ActMrkNtfSee */{1146,-1,TabMsg,ActSeeNtf ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Ntf_MarkAllNotifAsSeen ,NULL},
|
||||
|
@ -2902,7 +2904,7 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq
|
|||
-1, // #82 (obsolete action)
|
||||
-1, // #83 (obsolete action)
|
||||
ActSeeUseGbl, // #84
|
||||
ActSeeExaAnn, // #85
|
||||
ActSeeAllExaAnn, // #85
|
||||
-1, // #86 (obsolete action)
|
||||
ActRemAllStdCrs, // #87
|
||||
ActReqRemAllStdCrs, // #88
|
||||
|
@ -3579,7 +3581,7 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq
|
|||
ActRemIns, // #759
|
||||
-1, // #760 (obsolete action)
|
||||
ActReqUseGbl, // #761
|
||||
ActSeeNot, // #762
|
||||
ActSeeAllNot, // #762
|
||||
ActHidNot, // #763
|
||||
ActRevNot, // #764
|
||||
ActRcvThrForGenTch, // #765
|
||||
|
@ -3981,7 +3983,7 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq
|
|||
ActRecCtrPho, // #1161
|
||||
-1, // #1162 (obsolete action)
|
||||
ActCreUsrAcc, // #1163
|
||||
ActShoNot, // #1164
|
||||
ActSeeOneNot, // #1164
|
||||
ActReqEdiMyIns, // #1165
|
||||
ActChgCtyMyIns, // #1166
|
||||
ActChgMyIns, // #1167
|
||||
|
@ -4391,6 +4393,7 @@ 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
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -4540,7 +4543,7 @@ void Act_FormStartId (Act_Action_t NextAction,const char *Id)
|
|||
static void Act_FormStartInternal (Act_Action_t NextAction,bool PutParameterLocationIfNoSesion,const char *Id,const char *Anchor)
|
||||
{
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
char Params[256+256+Ses_LENGTH_SESSION_ID+256];
|
||||
char ParamsStr[256+256+Ses_LENGTH_SESSION_ID+256];
|
||||
|
||||
if (!Gbl.Form.Inside)
|
||||
{
|
||||
|
@ -4566,15 +4569,15 @@ static void Act_FormStartInternal (Act_Action_t NextAction,bool PutParameterLoca
|
|||
fprintf (Gbl.F.Out," accept-charset=\"windows-1252\">");
|
||||
|
||||
/* Put basic form parameters */
|
||||
Act_SetParamsForm (Params,NextAction,PutParameterLocationIfNoSesion);
|
||||
fprintf (Gbl.F.Out,"%s",Params);
|
||||
Act_SetParamsForm (ParamsStr,NextAction,PutParameterLocationIfNoSesion);
|
||||
fprintf (Gbl.F.Out,"%s",ParamsStr);
|
||||
|
||||
Gbl.Form.Inside = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Params should have space for 256+256+Ses_LENGTH_SESSION_ID+256 bytes
|
||||
void Act_SetParamsForm (char *Params,Act_Action_t NextAction,bool PutParameterLocationIfNoSesion)
|
||||
void Act_SetParamsForm (char *ParamsStr,Act_Action_t NextAction,bool PutParameterLocationIfNoSesion)
|
||||
{
|
||||
char ParamAction[256];
|
||||
char ParamSession[256+Ses_LENGTH_SESSION_ID];
|
||||
|
@ -4612,7 +4615,7 @@ void Act_SetParamsForm (char *Params,Act_Action_t NextAction,bool PutParameterLo
|
|||
Gbl.CurrentCty.Cty.CtyCod);
|
||||
}
|
||||
|
||||
sprintf (Params,"%s%s%s",ParamAction,ParamSession,ParamLocation);
|
||||
sprintf (ParamsStr,"%s%s%s",ParamAction,ParamSession,ParamLocation);
|
||||
}
|
||||
|
||||
void Act_FormEnd (void)
|
||||
|
|
133
swad_action.h
133
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
|
||||
|
||||
#define Act_NUM_ACTIONS (1+9+51+15+90+70+67+245+184+150+172+36+28+83)
|
||||
#define Act_NUM_ACTIONS (1+9+51+15+90+70+67+245+185+150+172+36+28+83)
|
||||
|
||||
#define Act_MAX_ACTION_COD 1570
|
||||
#define Act_MAX_ACTION_COD 1571
|
||||
|
||||
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 20
|
||||
|
||||
|
@ -718,7 +718,7 @@ typedef int Act_Action_t; // Must be a signed type, because -1 is used to indica
|
|||
#define ActReqAsgWrkCrs (ActRcvRchTxtCrsLnk+ 4)
|
||||
#define ActReqTst (ActRcvRchTxtCrsLnk+ 5)
|
||||
#define ActSeeCal (ActRcvRchTxtCrsLnk+ 6)
|
||||
#define ActSeeExaAnn (ActRcvRchTxtCrsLnk+ 7)
|
||||
#define ActSeeAllExaAnn (ActRcvRchTxtCrsLnk+ 7)
|
||||
#define ActSeeAdmMrk (ActRcvRchTxtCrsLnk+ 8)
|
||||
// Secondary actions
|
||||
#define ActEdiAss (ActRcvRchTxtCrsLnk+ 9)
|
||||
|
@ -847,72 +847,73 @@ typedef int Act_Action_t; // Must be a signed type, because -1 is used to indica
|
|||
#define ActPrnCal (ActRcvRchTxtCrsLnk+123)
|
||||
#define ActChgCal1stDay (ActRcvRchTxtCrsLnk+124)
|
||||
|
||||
#define ActEdiExaAnn (ActRcvRchTxtCrsLnk+125)
|
||||
#define ActRcvExaAnn (ActRcvRchTxtCrsLnk+126)
|
||||
#define ActPrnExaAnn (ActRcvRchTxtCrsLnk+127)
|
||||
#define ActRemExaAnn (ActRcvRchTxtCrsLnk+128)
|
||||
#define ActSeeOneExaAnn (ActRcvRchTxtCrsLnk+125)
|
||||
#define ActEdiExaAnn (ActRcvRchTxtCrsLnk+126)
|
||||
#define ActRcvExaAnn (ActRcvRchTxtCrsLnk+127)
|
||||
#define ActPrnExaAnn (ActRcvRchTxtCrsLnk+128)
|
||||
#define ActRemExaAnn (ActRcvRchTxtCrsLnk+129)
|
||||
|
||||
#define ActChgToSeeMrk (ActRcvRchTxtCrsLnk+129)
|
||||
#define ActChgToSeeMrk (ActRcvRchTxtCrsLnk+130)
|
||||
|
||||
#define ActSeeMrkCrs (ActRcvRchTxtCrsLnk+130)
|
||||
#define ActExpSeeMrkCrs (ActRcvRchTxtCrsLnk+131)
|
||||
#define ActConSeeMrkCrs (ActRcvRchTxtCrsLnk+132)
|
||||
#define ActReqDatSeeMrkCrs (ActRcvRchTxtCrsLnk+133)
|
||||
#define ActSeeMyMrkCrs (ActRcvRchTxtCrsLnk+134)
|
||||
#define ActSeeMrkCrs (ActRcvRchTxtCrsLnk+131)
|
||||
#define ActExpSeeMrkCrs (ActRcvRchTxtCrsLnk+132)
|
||||
#define ActConSeeMrkCrs (ActRcvRchTxtCrsLnk+133)
|
||||
#define ActReqDatSeeMrkCrs (ActRcvRchTxtCrsLnk+134)
|
||||
#define ActSeeMyMrkCrs (ActRcvRchTxtCrsLnk+135)
|
||||
|
||||
#define ActSeeMrkGrp (ActRcvRchTxtCrsLnk+135)
|
||||
#define ActExpSeeMrkGrp (ActRcvRchTxtCrsLnk+136)
|
||||
#define ActConSeeMrkGrp (ActRcvRchTxtCrsLnk+137)
|
||||
#define ActReqDatSeeMrkGrp (ActRcvRchTxtCrsLnk+138)
|
||||
#define ActSeeMyMrkGrp (ActRcvRchTxtCrsLnk+139)
|
||||
#define ActSeeMrkGrp (ActRcvRchTxtCrsLnk+136)
|
||||
#define ActExpSeeMrkGrp (ActRcvRchTxtCrsLnk+137)
|
||||
#define ActConSeeMrkGrp (ActRcvRchTxtCrsLnk+138)
|
||||
#define ActReqDatSeeMrkGrp (ActRcvRchTxtCrsLnk+139)
|
||||
#define ActSeeMyMrkGrp (ActRcvRchTxtCrsLnk+140)
|
||||
|
||||
#define ActChgToAdmMrk (ActRcvRchTxtCrsLnk+140)
|
||||
#define ActChgToAdmMrk (ActRcvRchTxtCrsLnk+141)
|
||||
|
||||
#define ActAdmMrkCrs (ActRcvRchTxtCrsLnk+141)
|
||||
#define ActReqRemFilMrkCrs (ActRcvRchTxtCrsLnk+142)
|
||||
#define ActRemFilMrkCrs (ActRcvRchTxtCrsLnk+143)
|
||||
#define ActRemFolMrkCrs (ActRcvRchTxtCrsLnk+144)
|
||||
#define ActCopMrkCrs (ActRcvRchTxtCrsLnk+145)
|
||||
#define ActPasMrkCrs (ActRcvRchTxtCrsLnk+146)
|
||||
#define ActRemTreMrkCrs (ActRcvRchTxtCrsLnk+147)
|
||||
#define ActFrmCreMrkCrs (ActRcvRchTxtCrsLnk+148)
|
||||
#define ActCreFolMrkCrs (ActRcvRchTxtCrsLnk+149)
|
||||
#define ActRenFolMrkCrs (ActRcvRchTxtCrsLnk+150)
|
||||
#define ActRcvFilMrkCrsDZ (ActRcvRchTxtCrsLnk+151)
|
||||
#define ActRcvFilMrkCrsCla (ActRcvRchTxtCrsLnk+152)
|
||||
#define ActExpAdmMrkCrs (ActRcvRchTxtCrsLnk+153)
|
||||
#define ActConAdmMrkCrs (ActRcvRchTxtCrsLnk+154)
|
||||
#define ActZIPAdmMrkCrs (ActRcvRchTxtCrsLnk+155)
|
||||
#define ActShoMrkCrs (ActRcvRchTxtCrsLnk+156)
|
||||
#define ActHidMrkCrs (ActRcvRchTxtCrsLnk+157)
|
||||
#define ActReqDatAdmMrkCrs (ActRcvRchTxtCrsLnk+158)
|
||||
#define ActChgDatAdmMrkCrs (ActRcvRchTxtCrsLnk+159)
|
||||
#define ActDowAdmMrkCrs (ActRcvRchTxtCrsLnk+160)
|
||||
#define ActChgNumRowHeaCrs (ActRcvRchTxtCrsLnk+161)
|
||||
#define ActChgNumRowFooCrs (ActRcvRchTxtCrsLnk+162)
|
||||
#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 ActAdmMrkGrp (ActRcvRchTxtCrsLnk+163)
|
||||
#define ActReqRemFilMrkGrp (ActRcvRchTxtCrsLnk+164)
|
||||
#define ActRemFilMrkGrp (ActRcvRchTxtCrsLnk+165)
|
||||
#define ActRemFolMrkGrp (ActRcvRchTxtCrsLnk+166)
|
||||
#define ActCopMrkGrp (ActRcvRchTxtCrsLnk+167)
|
||||
#define ActPasMrkGrp (ActRcvRchTxtCrsLnk+168)
|
||||
#define ActRemTreMrkGrp (ActRcvRchTxtCrsLnk+169)
|
||||
#define ActFrmCreMrkGrp (ActRcvRchTxtCrsLnk+170)
|
||||
#define ActCreFolMrkGrp (ActRcvRchTxtCrsLnk+171)
|
||||
#define ActRenFolMrkGrp (ActRcvRchTxtCrsLnk+172)
|
||||
#define ActRcvFilMrkGrpDZ (ActRcvRchTxtCrsLnk+173)
|
||||
#define ActRcvFilMrkGrpCla (ActRcvRchTxtCrsLnk+174)
|
||||
#define ActExpAdmMrkGrp (ActRcvRchTxtCrsLnk+175)
|
||||
#define ActConAdmMrkGrp (ActRcvRchTxtCrsLnk+176)
|
||||
#define ActZIPAdmMrkGrp (ActRcvRchTxtCrsLnk+177)
|
||||
#define ActShoMrkGrp (ActRcvRchTxtCrsLnk+178)
|
||||
#define ActHidMrkGrp (ActRcvRchTxtCrsLnk+179)
|
||||
#define ActReqDatAdmMrkGrp (ActRcvRchTxtCrsLnk+180)
|
||||
#define ActChgDatAdmMrkGrp (ActRcvRchTxtCrsLnk+181)
|
||||
#define ActDowAdmMrkGrp (ActRcvRchTxtCrsLnk+182)
|
||||
#define ActChgNumRowHeaGrp (ActRcvRchTxtCrsLnk+183)
|
||||
#define ActChgNumRowFooGrp (ActRcvRchTxtCrsLnk+184)
|
||||
#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)
|
||||
|
||||
/*****************************************************************************/
|
||||
/******************************* Users tab ***********************************/
|
||||
|
@ -1280,7 +1281,7 @@ typedef int Act_Action_t; // Must be a signed type, because -1 is used to indica
|
|||
// Actions in menu
|
||||
#define ActSeeNtf (ActCht+ 1)
|
||||
#define ActSeeAnn (ActCht+ 2)
|
||||
#define ActSeeNot (ActCht+ 3)
|
||||
#define ActSeeAllNot (ActCht+ 3)
|
||||
#define ActReqMsgUsr (ActCht+ 4)
|
||||
#define ActSeeRcvMsg (ActCht+ 5)
|
||||
#define ActSeeSntMsg (ActCht+ 6)
|
||||
|
@ -1291,7 +1292,7 @@ typedef int Act_Action_t; // Must be a signed type, because -1 is used to indica
|
|||
#define ActHidAnn (ActCht+ 10)
|
||||
#define ActRevAnn (ActCht+ 11)
|
||||
#define ActRemAnn (ActCht+ 12)
|
||||
#define ActShoNot (ActCht+ 13)
|
||||
#define ActSeeOneNot (ActCht+ 13)
|
||||
#define ActWriNot (ActCht+ 14)
|
||||
#define ActRcvNot (ActCht+ 15)
|
||||
#define ActHidNot (ActCht+ 16)
|
||||
|
@ -1497,7 +1498,7 @@ void Act_FormStartUnique (Act_Action_t NextAction);
|
|||
void Act_FormStartAnchor (Act_Action_t NextAction,const char *Anchor);
|
||||
void Act_FormStartUniqueAnchor (Act_Action_t NextAction,const char *Anchor);
|
||||
void Act_FormStartId (Act_Action_t NextAction,const char *Id);
|
||||
void Act_SetParamsForm (char *Params,Act_Action_t NextAction,bool PutParameterLocationIfNoSesion);
|
||||
void Act_SetParamsForm (char *ParamsStr,Act_Action_t NextAction,bool PutParameterLocationIfNoSesion);
|
||||
void Act_FormEnd (void);
|
||||
void Act_LinkFormSubmit (const char *Title,const char *LinkStyle);
|
||||
void Act_LinkFormSubmitUnique (const char *Title,const char *LinkStyle);
|
||||
|
|
|
@ -174,7 +174,7 @@ static unsigned Cal_GetParamFirstDayOfWeek (void)
|
|||
void Cal_DrawCurrentMonth (void)
|
||||
{
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
char Params[256+256+Ses_LENGTH_SESSION_ID+256];
|
||||
char ParamsStr[256+256+Ses_LENGTH_SESSION_ID+256];
|
||||
|
||||
/***** Get list of holidays *****/
|
||||
if (!Gbl.Hlds.LstIsRead)
|
||||
|
@ -197,11 +197,11 @@ void Cal_DrawCurrentMonth (void)
|
|||
Gbl.CurrentCtr.Ctr.PlcCod,
|
||||
Cfg_HTTPS_URL_SWAD_CGI,
|
||||
Txt_STR_LANG_ID[Gbl.Prefs.Language]);
|
||||
Act_SetParamsForm (Params,ActSeeCal,true);
|
||||
fprintf (Gbl.F.Out,"'%s',",Params);
|
||||
Act_SetParamsForm (Params,ActSeeExaAnn,true);
|
||||
Act_SetParamsForm (ParamsStr,ActSeeCal,true);
|
||||
fprintf (Gbl.F.Out,"'%s',",ParamsStr);
|
||||
Act_SetParamsForm (ParamsStr,ActSeeOneExaAnn,true);
|
||||
fprintf (Gbl.F.Out,"'%s');"
|
||||
"</script>",Params);
|
||||
"</script>",ParamsStr);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -228,7 +228,7 @@ void Cal_DrawCurrentMonth (void)
|
|||
void Cal_DrawCalendar (void)
|
||||
{
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
char Params[256+256+Ses_LENGTH_SESSION_ID+256];
|
||||
char ParamsStr[256+256+Ses_LENGTH_SESSION_ID+256];
|
||||
bool PrintView = (Gbl.Action.Act == ActPrnCal);
|
||||
|
||||
/***** Get list of holidays *****/
|
||||
|
@ -266,13 +266,13 @@ void Cal_DrawCalendar (void)
|
|||
"false",
|
||||
Cfg_HTTPS_URL_SWAD_CGI,
|
||||
Txt_STR_LANG_ID[Gbl.Prefs.Language]);
|
||||
Act_SetParamsForm (Params,ActSeeCal,true);
|
||||
Act_SetParamsForm (ParamsStr,ActSeeCal,true);
|
||||
fprintf (Gbl.F.Out,"'%s',",
|
||||
Params);
|
||||
Act_SetParamsForm (Params,ActSeeExaAnn,true);
|
||||
ParamsStr);
|
||||
Act_SetParamsForm (ParamsStr,ActSeeOneExaAnn,true);
|
||||
fprintf (Gbl.F.Out,"'%s');"
|
||||
"</script>",
|
||||
Params);
|
||||
ParamsStr);
|
||||
|
||||
/***** End frame *****/
|
||||
Lay_EndRoundFrame ();
|
||||
|
|
|
@ -129,7 +129,6 @@
|
|||
// TODO: FIX BUG: A teacher uploads a document in course documents zone, then he/she unregister from course, the he/she search for his/her documents, a document is shown in results but he/she can not view it
|
||||
// TODO: FIX BUG: Txt_Save_file_properties does not have sense in briefcase, because nothing to save (license should be editable in briefcase?)
|
||||
// TODO: In listing of courses, teachers column is before than students column. In edition of courses, students column is before teachers column.
|
||||
// TODO: When clicking on an announcement, it will be shown alone, as now.
|
||||
// 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
|
||||
|
@ -139,13 +138,17 @@
|
|||
/****************************** Public constants *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define Log_PLATFORM_VERSION "SWAD 15.215 (2016-06-01)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 15.216 (2016-06-01)"
|
||||
#define CSS_FILE "swad15.210.css"
|
||||
#define JS_FILE "swad15.213.js"
|
||||
#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)
|
||||
1 change necessary in database:
|
||||
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1571','es','N','Ver convocatoria');
|
||||
|
||||
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.
|
||||
|
|
12
swad_date.h
12
swad_date.h
|
@ -45,16 +45,22 @@
|
|||
|
||||
struct Date
|
||||
{
|
||||
unsigned Day,Month,Year,Week;
|
||||
unsigned Day;
|
||||
unsigned Month;
|
||||
unsigned Year;
|
||||
unsigned Week;
|
||||
char YYYYMMDD[4+2+2+1];
|
||||
};
|
||||
struct Time
|
||||
{
|
||||
unsigned Hour,Minute,Second;
|
||||
unsigned Hour;
|
||||
unsigned Minute;
|
||||
unsigned Second;
|
||||
};
|
||||
struct Hour
|
||||
{
|
||||
unsigned Hour,Minute;
|
||||
unsigned Hour;
|
||||
unsigned Minute;
|
||||
};
|
||||
struct DateTime
|
||||
{
|
||||
|
|
215
swad_exam.c
215
swad_exam.c
|
@ -82,7 +82,9 @@ static void Exa_ModifyExamAnnouncementInDB (long ExaCod);
|
|||
static void Exa_GetDataExamAnnouncementFromDB (long ExaCod);
|
||||
static void Exa_ShowExamAnnouncement (long ExaCod,Exa_TypeViewExamAnnouncement_t TypeViewExamAnnouncement);
|
||||
static void Exa_PutIconsExamAnnouncement (void);
|
||||
static void Exa_PutParamExaCod (void);
|
||||
static void Exa_PutParamExaCodToEdit (void);
|
||||
static void Exa_PutHiddenParamExaCod (long ExaCod);
|
||||
static long Exa_GetParamExaCod (void);
|
||||
|
||||
static void Exa_GetNotifContentExamAnnouncement (char **ContentStr);
|
||||
|
||||
|
@ -118,13 +120,10 @@ void Exa_PutFrmEditAExamAnnouncement (void)
|
|||
static long Exa_GetParamsExamAnnouncement (void)
|
||||
{
|
||||
char UnsignedStr[10+1];
|
||||
char LongStr[1+10+1];
|
||||
long ExaCod;
|
||||
|
||||
/***** Get the code of the exam announcement *****/
|
||||
Par_GetParToText ("ExaCod",LongStr,1+10);
|
||||
if (sscanf (LongStr,"%ld",&ExaCod) != 1)
|
||||
ExaCod = -1;
|
||||
ExaCod = Exa_GetParamExaCod ();
|
||||
|
||||
/***** Get the name of the course (it is allowed to be different from the official name of the course) *****/
|
||||
Par_GetParToText ("CrsName",Gbl.ExamAnnouncements.ExaDat.CrsFullName,Cns_MAX_BYTES_STRING);
|
||||
|
@ -143,7 +142,10 @@ static long Exa_GetParamsExamAnnouncement (void)
|
|||
Par_GetParToText ("ExamSession",Gbl.ExamAnnouncements.ExaDat.Session,Cns_MAX_BYTES_STRING);
|
||||
|
||||
/***** Get the data of the exam *****/
|
||||
Dat_GetDateFromForm ("ExamDay","ExamMonth","ExamYear",&Gbl.ExamAnnouncements.ExaDat.ExamDate.Day,&Gbl.ExamAnnouncements.ExaDat.ExamDate.Month,&Gbl.ExamAnnouncements.ExaDat.ExamDate.Year);
|
||||
Dat_GetDateFromForm ("ExamDay","ExamMonth","ExamYear",
|
||||
&Gbl.ExamAnnouncements.ExaDat.ExamDate.Day,
|
||||
&Gbl.ExamAnnouncements.ExaDat.ExamDate.Month,
|
||||
&Gbl.ExamAnnouncements.ExaDat.ExamDate.Year);
|
||||
if (Gbl.ExamAnnouncements.ExaDat.ExamDate.Day == 0 ||
|
||||
Gbl.ExamAnnouncements.ExaDat.ExamDate.Month == 0 ||
|
||||
Gbl.ExamAnnouncements.ExaDat.ExamDate.Year == 0)
|
||||
|
@ -341,15 +343,13 @@ static void Exa_UpdateNumUsrsNotifiedByEMailAboutExamAnnouncement (long ExaCod,u
|
|||
|
||||
void Exa_PrintExamAnnouncement (void)
|
||||
{
|
||||
char LongStr[1+10+1];
|
||||
long ExaCod;
|
||||
|
||||
/***** Allocate memory for the exam announcement *****/
|
||||
Exa_AllocMemExamAnnouncement ();
|
||||
|
||||
/***** Get the code of the exam announcement *****/
|
||||
Par_GetParToText ("ExaCod",LongStr,1+10);
|
||||
if (sscanf (LongStr,"%ld",&ExaCod) != 1)
|
||||
if ((ExaCod = Exa_GetParamExaCod ()) <= 0)
|
||||
Lay_ShowErrorAndExit ("Code of exam announcement is missing.");
|
||||
|
||||
/***** Read exam announcement from the database *****/
|
||||
|
@ -370,12 +370,10 @@ void Exa_RemoveExamAnnouncement (void)
|
|||
{
|
||||
extern const char *Txt_Announcement_of_exam_removed;
|
||||
char Query[1024];
|
||||
char LongStr[1+10+1];
|
||||
long ExaCod;
|
||||
|
||||
/***** Get the code of the exam announcement *****/
|
||||
Par_GetParToText ("ExaCod",LongStr,1+10);
|
||||
if (sscanf (LongStr,"%ld",&ExaCod) != 1)
|
||||
if ((ExaCod = Exa_GetParamExaCod ()) <= 0)
|
||||
Lay_ShowErrorAndExit ("Code of exam announcement is missing.");
|
||||
|
||||
/***** Mark the exam announcement as deleted in the database *****/
|
||||
|
@ -406,22 +404,6 @@ void Exa_RemoveExamAnnouncement (void)
|
|||
|
||||
void Exa_ListExamAnnouncementsSee (void)
|
||||
{
|
||||
/***** Show highlighted exam announcement *****/
|
||||
if (Gbl.ExamAnnouncements.HighlightExaCod > 0)
|
||||
{
|
||||
/***** Allocate memory for the exam announcement *****/
|
||||
Exa_AllocMemExamAnnouncement ();
|
||||
|
||||
/***** Read exam announcement from the database *****/
|
||||
Exa_GetDataExamAnnouncementFromDB (Gbl.ExamAnnouncements.HighlightExaCod);
|
||||
|
||||
/***** Show exam announcement *****/
|
||||
Exa_ShowExamAnnouncement (Gbl.ExamAnnouncements.HighlightExaCod,Exa_NORMAL_VIEW);
|
||||
|
||||
/***** Free memory of the exam announcement *****/
|
||||
Exa_FreeMemExamAnnouncement ();
|
||||
}
|
||||
|
||||
/***** List all exam announcements *****/
|
||||
Exa_ListExamAnnouncements (Exa_NORMAL_VIEW);
|
||||
|
||||
|
@ -440,6 +422,17 @@ static void Exa_ListExamAnnouncementsEdit (void)
|
|||
Exa_ListExamAnnouncements (Exa_NORMAL_VIEW);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/*************** Get exam announcement to show highlighted *******************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Exa_GetExaToShowHighlighted (void)
|
||||
{
|
||||
/***** Get the date (in YYYY-MM-DD format)
|
||||
of the exam announcements to highlight *****/
|
||||
Par_GetParToText ("Date",Gbl.ExamAnnouncements.HighlightDate,4+1+2+1+2);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/******************** List all the exam announcements ************************/
|
||||
/*****************************************************************************/
|
||||
|
@ -458,6 +451,46 @@ 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 *****/
|
||||
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"
|
||||
" FROM exam_announcements"
|
||||
" WHERE CrsCod='%ld' AND Status<>'%u'"
|
||||
" AND DATE(ExamDate)='%s'"
|
||||
" ORDER BY ExamDate DESC",
|
||||
Gbl.CurrentCrs.Crs.CrsCod,
|
||||
(unsigned) Exa_DELETED_EXAM_ANNOUNCEMENT,
|
||||
Gbl.ExamAnnouncements.HighlightDate);
|
||||
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 ();
|
||||
}
|
||||
}
|
||||
|
||||
/***** Get exam announcements (the most recent first)
|
||||
in current course from database *****/
|
||||
sprintf (Query,"SELECT ExaCod,ExamDate"
|
||||
|
@ -470,8 +503,8 @@ static void Exa_ListExamAnnouncements (Exa_TypeViewExamAnnouncement_t TypeViewEx
|
|||
|
||||
/***** Start frame *****/
|
||||
Lay_StartRoundFrame (NULL,
|
||||
Gbl.ExamAnnouncements.HighlightExaCod > 0 ? Txt_All_announcements_of_exam :
|
||||
Txt_Announcements_of_exam,
|
||||
Gbl.ExamAnnouncements.HighlightDate[0] ? Txt_All_announcements_of_exam :
|
||||
Txt_Announcements_of_exam,
|
||||
ICanEdit ? Exa_PutIconToCreateNewExamAnnouncement :
|
||||
NULL);
|
||||
|
||||
|
@ -555,19 +588,32 @@ static long Exa_AddExamAnnouncementToDB (void)
|
|||
/***** Add exam announcement *****/
|
||||
if ((Query = malloc (512+2*Cns_MAX_BYTES_STRING+7*Cns_MAX_BYTES_TEXT)) == NULL)
|
||||
Lay_ShowErrorAndExit ("Not enough memory to query database.");
|
||||
sprintf (Query,"INSERT INTO exam_announcements (CrsCod,Status,NumNotif,"
|
||||
"CrsFullName,Year,ExamSession,CallDate,ExamDate,Duration,Place,"
|
||||
sprintf (Query,"INSERT INTO exam_announcements "
|
||||
"(CrsCod,Status,NumNotif,CrsFullName,Year,ExamSession,"
|
||||
"CallDate,ExamDate,Duration,Place,"
|
||||
"ExamMode,Structure,DocRequired,MatRequired,MatAllowed,OtherInfo)"
|
||||
" VALUES ('%ld','%u','0','%s','%u','%s',NOW(),'%04u-%02u-%02u %02u:%02u:00','%02u:%02u:00','%s','%s','%s','%s','%s','%s','%s')",
|
||||
Gbl.CurrentCrs.Crs.CrsCod,(unsigned) Exa_ACTIVE_EXAM_ANNOUNCEMENT,
|
||||
Gbl.ExamAnnouncements.ExaDat.CrsFullName,Gbl.ExamAnnouncements.ExaDat.Year,Gbl.ExamAnnouncements.ExaDat.Session,
|
||||
Gbl.ExamAnnouncements.ExaDat.ExamDate.Year,Gbl.ExamAnnouncements.ExaDat.ExamDate.Month,Gbl.ExamAnnouncements.ExaDat.ExamDate.Day,
|
||||
Gbl.ExamAnnouncements.ExaDat.StartTime.Hour,Gbl.ExamAnnouncements.ExaDat.StartTime.Minute,
|
||||
Gbl.ExamAnnouncements.ExaDat.Duration.Hour,Gbl.ExamAnnouncements.ExaDat.Duration.Minute,
|
||||
" VALUES "
|
||||
"('%ld','%u','0','%s','%u','%s',"
|
||||
"NOW(),'%04u-%02u-%02u %02u:%02u:00','%02u:%02u:00','%s',"
|
||||
"'%s','%s','%s','%s','%s','%s')",
|
||||
Gbl.CurrentCrs.Crs.CrsCod,
|
||||
(unsigned) Exa_ACTIVE_EXAM_ANNOUNCEMENT,
|
||||
Gbl.ExamAnnouncements.ExaDat.CrsFullName,
|
||||
Gbl.ExamAnnouncements.ExaDat.Year,
|
||||
Gbl.ExamAnnouncements.ExaDat.Session,
|
||||
Gbl.ExamAnnouncements.ExaDat.ExamDate.Year,
|
||||
Gbl.ExamAnnouncements.ExaDat.ExamDate.Month,
|
||||
Gbl.ExamAnnouncements.ExaDat.ExamDate.Day,
|
||||
Gbl.ExamAnnouncements.ExaDat.StartTime.Hour,
|
||||
Gbl.ExamAnnouncements.ExaDat.StartTime.Minute,
|
||||
Gbl.ExamAnnouncements.ExaDat.Duration.Hour,
|
||||
Gbl.ExamAnnouncements.ExaDat.Duration.Minute,
|
||||
Gbl.ExamAnnouncements.ExaDat.Place,
|
||||
Gbl.ExamAnnouncements.ExaDat.Mode,Gbl.ExamAnnouncements.ExaDat.Structure,
|
||||
Gbl.ExamAnnouncements.ExaDat.Mode,
|
||||
Gbl.ExamAnnouncements.ExaDat.Structure,
|
||||
Gbl.ExamAnnouncements.ExaDat.DocRequired,
|
||||
Gbl.ExamAnnouncements.ExaDat.MatRequired,Gbl.ExamAnnouncements.ExaDat.MatAllowed,
|
||||
Gbl.ExamAnnouncements.ExaDat.MatRequired,
|
||||
Gbl.ExamAnnouncements.ExaDat.MatAllowed,
|
||||
Gbl.ExamAnnouncements.ExaDat.OtherInfo);
|
||||
ExaCod = DB_QueryINSERTandReturnCode (Query,"can not create a new exam announcement");
|
||||
free ((void *) Query);
|
||||
|
@ -588,17 +634,27 @@ static void Exa_ModifyExamAnnouncementInDB (long ExaCod)
|
|||
Lay_ShowErrorAndExit ("Not enough memory to query database.");
|
||||
sprintf (Query,"UPDATE exam_announcements"
|
||||
" SET CrsFullName='%s',Year='%u',ExamSession='%s',"
|
||||
"ExamDate='%04u-%02u-%02u %02u:%02u:00',Duration='%02u:%02u:00',"
|
||||
"Place='%s',ExamMode='%s',Structure='%s',DocRequired='%s',MatRequired='%s',MatAllowed='%s',OtherInfo='%s'" \
|
||||
"ExamDate='%04u-%02u-%02u %02u:%02u:00',"
|
||||
"Duration='%02u:%02u:00',"
|
||||
"Place='%s',ExamMode='%s',Structure='%s',"
|
||||
"DocRequired='%s',MatRequired='%s',MatAllowed='%s',OtherInfo='%s'" \
|
||||
" WHERE ExaCod='%ld'",
|
||||
Gbl.ExamAnnouncements.ExaDat.CrsFullName,Gbl.ExamAnnouncements.ExaDat.Year,Gbl.ExamAnnouncements.ExaDat.Session,
|
||||
Gbl.ExamAnnouncements.ExaDat.ExamDate.Year,Gbl.ExamAnnouncements.ExaDat.ExamDate.Month,Gbl.ExamAnnouncements.ExaDat.ExamDate.Day,
|
||||
Gbl.ExamAnnouncements.ExaDat.StartTime.Hour,Gbl.ExamAnnouncements.ExaDat.StartTime.Minute,
|
||||
Gbl.ExamAnnouncements.ExaDat.Duration.Hour,Gbl.ExamAnnouncements.ExaDat.Duration.Minute,
|
||||
Gbl.ExamAnnouncements.ExaDat.CrsFullName,
|
||||
Gbl.ExamAnnouncements.ExaDat.Year,
|
||||
Gbl.ExamAnnouncements.ExaDat.Session,
|
||||
Gbl.ExamAnnouncements.ExaDat.ExamDate.Year,
|
||||
Gbl.ExamAnnouncements.ExaDat.ExamDate.Month,
|
||||
Gbl.ExamAnnouncements.ExaDat.ExamDate.Day,
|
||||
Gbl.ExamAnnouncements.ExaDat.StartTime.Hour,
|
||||
Gbl.ExamAnnouncements.ExaDat.StartTime.Minute,
|
||||
Gbl.ExamAnnouncements.ExaDat.Duration.Hour,
|
||||
Gbl.ExamAnnouncements.ExaDat.Duration.Minute,
|
||||
Gbl.ExamAnnouncements.ExaDat.Place,
|
||||
Gbl.ExamAnnouncements.ExaDat.Mode,Gbl.ExamAnnouncements.ExaDat.Structure,
|
||||
Gbl.ExamAnnouncements.ExaDat.Mode,
|
||||
Gbl.ExamAnnouncements.ExaDat.Structure,
|
||||
Gbl.ExamAnnouncements.ExaDat.DocRequired,
|
||||
Gbl.ExamAnnouncements.ExaDat.MatRequired,Gbl.ExamAnnouncements.ExaDat.MatAllowed,
|
||||
Gbl.ExamAnnouncements.ExaDat.MatRequired,
|
||||
Gbl.ExamAnnouncements.ExaDat.MatAllowed,
|
||||
Gbl.ExamAnnouncements.ExaDat.OtherInfo,
|
||||
ExaCod);
|
||||
DB_QueryUPDATE (Query,"can not update an exam announcement");
|
||||
|
@ -614,16 +670,14 @@ void Exa_CreateListOfExamAnnouncements (void)
|
|||
char Query[512];
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
unsigned long NumExaAnn,NumExaAnns;
|
||||
long ExaCod;
|
||||
struct Date ExamDate;
|
||||
unsigned Hour,Minute,Second;
|
||||
unsigned long NumExaAnn;
|
||||
unsigned long NumExaAnns;
|
||||
|
||||
if (Gbl.DB.DatabaseIsOpen)
|
||||
{
|
||||
/***** Get exam announcements (no matter in what order)
|
||||
/***** Get exam dates (no matter in what order)
|
||||
in current course from database *****/
|
||||
sprintf (Query,"SELECT ExaCod,ExamDate"
|
||||
sprintf (Query,"SELECT DISTINCT(DATE(ExamDate))"
|
||||
" FROM exam_announcements" \
|
||||
" WHERE CrsCod='%ld' AND Status<>'%u'",
|
||||
Gbl.CurrentCrs.Crs.CrsCod,
|
||||
|
@ -644,22 +698,17 @@ void Exa_CreateListOfExamAnnouncements (void)
|
|||
NumExaAnn < NumExaAnns;
|
||||
NumExaAnn++)
|
||||
{
|
||||
/***** Get the code of the exam announcement (row[0]) *****/
|
||||
/***** Get next exam announcement *****/
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
|
||||
if (sscanf (row[0],"%ld",&ExaCod) != 1)
|
||||
Lay_ShowErrorAndExit ("Wrong code of exam announcement.");
|
||||
|
||||
/***** Read the date of the exam (row[1]) *****/
|
||||
/* Date of exam (row[6]) */
|
||||
if (sscanf (row[1],"%04u-%02u-%02u %02u:%02u:%02u",
|
||||
&ExamDate.Year,&ExamDate.Month,&ExamDate.Day,&Hour,&Minute,&Second) != 6)
|
||||
/* Read the date of the exam (row[0]) */
|
||||
if (sscanf (row[0],"%04u-%02u-%02u",
|
||||
&Gbl.ExamAnnouncements.Lst[Gbl.ExamAnnouncements.NumExaAnns].Year,
|
||||
&Gbl.ExamAnnouncements.Lst[Gbl.ExamAnnouncements.NumExaAnns].Month,
|
||||
&Gbl.ExamAnnouncements.Lst[Gbl.ExamAnnouncements.NumExaAnns].Day) != 3)
|
||||
Lay_ShowErrorAndExit ("Wrong date of exam.");
|
||||
|
||||
/***** Add exam announcement the list *****/
|
||||
Gbl.ExamAnnouncements.Lst[Gbl.ExamAnnouncements.NumExaAnns].Year = ExamDate.Year;
|
||||
Gbl.ExamAnnouncements.Lst[Gbl.ExamAnnouncements.NumExaAnns].Month = ExamDate.Month;
|
||||
Gbl.ExamAnnouncements.Lst[Gbl.ExamAnnouncements.NumExaAnns].Day = ExamDate.Day;
|
||||
/***** Increment number of elements in list *****/
|
||||
Gbl.ExamAnnouncements.NumExaAnns++;
|
||||
}
|
||||
}
|
||||
|
@ -839,7 +888,7 @@ static void Exa_ShowExamAnnouncement (long ExaCod,Exa_TypeViewExamAnnouncement_t
|
|||
/***** Start form *****/
|
||||
Act_FormStart (ActRcvExaAnn);
|
||||
if (ExaCod > 0)
|
||||
Par_PutHiddenParamLong ("ExaCod",ExaCod);
|
||||
Exa_PutHiddenParamExaCod (ExaCod);
|
||||
}
|
||||
|
||||
fprintf (Gbl.F.Out,"<table class=\"CELLS_PAD_2\""
|
||||
|
@ -1264,16 +1313,16 @@ static void Exa_PutIconsExamAnnouncement (void)
|
|||
Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM)
|
||||
{
|
||||
/***** Link to remove this exam announcement *****/
|
||||
Lay_PutContextualLink (ActRemExaAnn,Exa_PutParamExaCod,"remove-on64x64.png",
|
||||
Lay_PutContextualLink (ActRemExaAnn,Exa_PutParamExaCodToEdit,"remove-on64x64.png",
|
||||
Txt_Remove,NULL);
|
||||
|
||||
/***** Link to edit this exam announcement *****/
|
||||
Lay_PutContextualLink (ActEdiExaAnn,Exa_PutParamExaCod,"edit64x64.png",
|
||||
Lay_PutContextualLink (ActEdiExaAnn,Exa_PutParamExaCodToEdit,"edit64x64.png",
|
||||
Txt_Edit,NULL);
|
||||
}
|
||||
|
||||
/***** Link to print view *****/
|
||||
Lay_PutContextualLink (ActPrnExaAnn,Exa_PutParamExaCod,"print64x64.png",
|
||||
Lay_PutContextualLink (ActPrnExaAnn,Exa_PutParamExaCodToEdit,"print64x64.png",
|
||||
Txt_Print,NULL);
|
||||
}
|
||||
|
||||
|
@ -1281,9 +1330,31 @@ static void Exa_PutIconsExamAnnouncement (void)
|
|||
/*************** Param with the code of an exam announcement *****************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Exa_PutParamExaCod (void)
|
||||
static void Exa_PutParamExaCodToEdit (void)
|
||||
{
|
||||
Par_PutHiddenParamLong ("ExaCod",Gbl.ExamAnnouncements.ExaCodToEdit);
|
||||
Exa_PutHiddenParamExaCod (Gbl.ExamAnnouncements.ExaCodToEdit);
|
||||
}
|
||||
|
||||
static void Exa_PutHiddenParamExaCod (long ExaCod)
|
||||
{
|
||||
Par_PutHiddenParamLong ("ExaCod",ExaCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********** Get parameter with the code of an exam announcement **************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static long Exa_GetParamExaCod (void)
|
||||
{
|
||||
char LongStr[1+10+1]; // String that holds the exam announcement code
|
||||
long ExaCod;
|
||||
|
||||
/* Get notice code */
|
||||
Par_GetParToText ("ExaCod",LongStr,1+10);
|
||||
if (sscanf (LongStr,"%ld",&ExaCod) != 1)
|
||||
ExaCod = -1L;
|
||||
|
||||
return ExaCod;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -58,6 +58,9 @@ void Exa_RemoveExamAnnouncement (void);
|
|||
void Exa_FreeMemExamAnnouncement (void);
|
||||
void Exa_FreeListExamAnnouncements (void);
|
||||
void Exa_ListExamAnnouncementsSee (void);
|
||||
|
||||
void Exa_GetExaToShowHighlighted (void);
|
||||
|
||||
void Exa_CreateListOfExamAnnouncements (void);
|
||||
void Exa_GetSummaryAndContentExamAnnouncement (char *SummaryStr,char **ContentStr,
|
||||
long ExaCod,unsigned MaxChars,bool GetContent);
|
||||
|
|
|
@ -196,7 +196,7 @@ void Gbl_InitializeGlobals (void)
|
|||
|
||||
Gbl.ExamAnnouncements.NumExaAnns = 0;
|
||||
Gbl.ExamAnnouncements.Lst = NULL;
|
||||
Gbl.ExamAnnouncements.HighlightExaCod = -1L; // No exam announcement highlighted
|
||||
Gbl.ExamAnnouncements.HighlightDate[0] = '\0'; // No exam announcements highlighted
|
||||
|
||||
Gbl.Usrs.Select.All =
|
||||
Gbl.Usrs.Select.Std =
|
||||
|
|
|
@ -479,10 +479,10 @@ struct Globals
|
|||
} Syllabus;
|
||||
struct
|
||||
{
|
||||
struct Date *Lst; // List of dates of announcements of exams
|
||||
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 code of an 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
|
||||
{
|
||||
long CrsCod;
|
||||
|
|
|
@ -139,7 +139,7 @@ const Act_Action_t Mnu_MenuActions[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB
|
|||
ActReqAsgWrkCrs,
|
||||
ActReqTst,
|
||||
ActSeeCal,
|
||||
ActSeeExaAnn,
|
||||
ActSeeAllExaAnn,
|
||||
ActSeeAdmMrk,
|
||||
},
|
||||
// TabUsr **********
|
||||
|
@ -164,7 +164,7 @@ const Act_Action_t Mnu_MenuActions[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB
|
|||
{
|
||||
ActSeeNtf,
|
||||
ActSeeAnn,
|
||||
ActSeeNot,
|
||||
ActSeeAllNot,
|
||||
ActReqMsgUsr,
|
||||
ActSeeRcvMsg,
|
||||
ActSeeSntMsg,
|
||||
|
|
|
@ -696,7 +696,7 @@ static void Not_DrawANotice (Not_Listing_t TypeNoticesListing,
|
|||
if (TypeNoticesListing == Not_LIST_BRIEF_NOTICES)
|
||||
{
|
||||
/* Form to view full notice */
|
||||
Act_FormStart (ActShoNot);
|
||||
Act_FormStart (ActSeeOneNot);
|
||||
Not_PutHiddenParamNotCod (NotCod);
|
||||
Act_LinkFormSubmit (Txt_See_full_notice,DateClass[Status]);
|
||||
}
|
||||
|
@ -721,7 +721,7 @@ static void Not_DrawANotice (Not_Listing_t TypeNoticesListing,
|
|||
|
||||
/* Form to view full notice */
|
||||
fprintf (Gbl.F.Out,"<div class=\"CENTER_MIDDLE\">");
|
||||
Act_FormStart (ActShoNot);
|
||||
Act_FormStart (ActSeeOneNot);
|
||||
Not_PutHiddenParamNotCod (NotCod);
|
||||
Act_LinkFormSubmit (Txt_See_full_notice,The_ClassForm[Gbl.Prefs.Theme]);
|
||||
fprintf (Gbl.F.Out,"<img src=\"%s/ellipsis32x32.gif\""
|
||||
|
|
|
@ -104,7 +104,7 @@ static const Act_Action_t Ntf_DefaultActions[Ntf_NUM_NOTIFY_EVENTS] =
|
|||
|
||||
/* Assessment tab */
|
||||
ActSeeAsg, // Ntf_EVENT_ASSIGNMENT
|
||||
ActSeeExaAnn, // Ntf_EVENT_EXAM_ANNOUNCEMENT
|
||||
ActSeeAllExaAnn, // Ntf_EVENT_EXAM_ANNOUNCEMENT
|
||||
ActSeeAdmMrk, // Ntf_EVENT_MARKS_FILE
|
||||
|
||||
/* Users tab */
|
||||
|
@ -122,7 +122,7 @@ static const Act_Action_t Ntf_DefaultActions[Ntf_NUM_NOTIFY_EVENTS] =
|
|||
ActSeeFor, // Ntf_EVENT_FORUM_REPLY
|
||||
|
||||
/* Messages tab */
|
||||
ActShoNot, // Ntf_EVENT_NOTICE
|
||||
ActSeeOneNot, // Ntf_EVENT_NOTICE
|
||||
ActExpRcvMsg, // Ntf_EVENT_MESSAGE
|
||||
|
||||
/* Statistics tab */
|
||||
|
@ -759,7 +759,7 @@ static bool Ntf_StartFormGoToAction (Ntf_NotifyEvent_t NotifyEvent,
|
|||
For_PutAllHiddenParamsForum ();
|
||||
break;
|
||||
case Ntf_EVENT_NOTICE:
|
||||
Act_FormStart (ActShoNot);
|
||||
Act_FormStart (ActSeeOneNot);
|
||||
Not_PutHiddenParamNotCod (Cod);
|
||||
break;
|
||||
case Ntf_EVENT_MESSAGE:
|
||||
|
|
|
@ -1528,7 +1528,7 @@ static void Soc_PutFormGoToAction (const struct SocialNote *SocNot)
|
|||
ActReqDatShaCrs, // Soc_NOTE_CRS_SHA_PUB_FILE
|
||||
|
||||
/* Assessment tab */
|
||||
ActSeeExaAnn, // Soc_NOTE_EXAM_ANNOUNCEMENT
|
||||
ActSeeAllExaAnn, // Soc_NOTE_EXAM_ANNOUNCEMENT
|
||||
|
||||
/* Users tab */
|
||||
|
||||
|
@ -1537,7 +1537,7 @@ static void Soc_PutFormGoToAction (const struct SocialNote *SocNot)
|
|||
ActSeeFor, // Soc_NOTE_FORUM_POST
|
||||
|
||||
/* Messages tab */
|
||||
ActShoNot, // Soc_NOTE_NOTICE
|
||||
ActSeeOneNot, // Soc_NOTE_NOTICE
|
||||
|
||||
/* Statistics tab */
|
||||
|
||||
|
|
|
@ -109,7 +109,7 @@ action="https://localhost/swad/es" method="post">
|
|||
void Str_InsertLinks (char *Txt,unsigned long MaxLength,size_t MaxCharsURLOnScreen)
|
||||
{
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
char Params[256+256+Ses_LENGTH_SESSION_ID+256];
|
||||
char ParamsStr[256+256+Ses_LENGTH_SESSION_ID+256];
|
||||
char Anchor1Nick[256+256+256+Ses_LENGTH_SESSION_ID+256+256];
|
||||
char Anchor2Nick[256+Cry_LENGTH_ENCRYPTED_STR_SHA256_BASE64];
|
||||
size_t TxtLength;
|
||||
|
@ -303,7 +303,7 @@ void Str_InsertLinks (char *Txt,unsigned long MaxLength,size_t MaxCharsURLOnScre
|
|||
sprintf (Gbl.Form.Id,"form_%d",Gbl.Form.Num);
|
||||
|
||||
/* Store first part of anchor */
|
||||
Act_SetParamsForm (Params,ActSeePubPrf,true);
|
||||
Act_SetParamsForm (ParamsStr,ActSeePubPrf,true);
|
||||
sprintf (Anchor1Nick,"<form method=\"post\" action=\"%s/%s\" id=\"%s\">"
|
||||
"%s"
|
||||
"<input type=\"hidden\" name=\"usr\" value=\"",
|
||||
|
@ -311,7 +311,7 @@ void Str_InsertLinks (char *Txt,unsigned long MaxLength,size_t MaxCharsURLOnScre
|
|||
Txt_STR_LANG_ID[Gbl.Prefs.Language],
|
||||
Gbl.Usrs.Me.Logged ? Gbl.Form.UniqueId :
|
||||
Gbl.Form.Id,
|
||||
Params);
|
||||
ParamsStr);
|
||||
Anchor1NickLength = strlen (Anchor1Nick);
|
||||
if ((Links[NumLinks].Anchor1Nick = (char *) malloc (Anchor1NickLength+1)) == NULL)
|
||||
Lay_ShowErrorAndExit ("Not enough memory to insert link.");
|
||||
|
|
|
@ -18273,7 +18273,7 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
|
|||
"Calendário"
|
||||
#endif
|
||||
,
|
||||
// ActSeeExaAnn
|
||||
// ActSeeAllExaAnn
|
||||
#if L==1
|
||||
"Convocatòries"
|
||||
#elif L==2
|
||||
|
@ -18658,7 +18658,7 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
|
|||
"Anúncios"
|
||||
#endif
|
||||
,
|
||||
// ActSeeNot
|
||||
// ActSeeAllNot
|
||||
#if L==1
|
||||
"Avisos"
|
||||
#elif L==2
|
||||
|
@ -20256,7 +20256,7 @@ const char *Txt_MENU_SUBTITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
|
|||
"Calendário"
|
||||
#endif
|
||||
,
|
||||
// ActSeeExaAnn
|
||||
// ActSeeAllExaAnn
|
||||
#if L==1
|
||||
"Llistat de convocatòries d'exàmens d'aquesta assignatura"
|
||||
#elif L==2
|
||||
|
@ -20657,7 +20657,7 @@ const char *Txt_MENU_SUBTITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
|
|||
"Anúncios globais visíveis no início da sessão"
|
||||
#endif
|
||||
,
|
||||
// ActSeeNot
|
||||
// ActSeeAllNot
|
||||
#if L==1
|
||||
"Breus avisos relacionats amb aquesta assignatura,"
|
||||
" visibles per qualsevol visitant, encara que no estigui identificat"
|
||||
|
|
Loading…
Reference in New Issue