mirror of https://github.com/acanas/swad-core.git
Version 20.51: Mar 18, 2021 Call for exam module renamed.
This commit is contained in:
parent
9ea76aeebd
commit
789b3697f5
8
Makefile
8
Makefile
|
@ -29,13 +29,13 @@
|
||||||
OBJS = swad_account.o swad_action.o swad_agenda.o swad_alert.o \
|
OBJS = swad_account.o swad_action.o swad_agenda.o swad_alert.o \
|
||||||
swad_announcement.o swad_API.o swad_assignment.o swad_attendance.o \
|
swad_announcement.o swad_API.o swad_assignment.o swad_attendance.o \
|
||||||
swad_banner.o swad_box.o swad_building.o swad_button.o \
|
swad_banner.o swad_box.o swad_building.o swad_button.o \
|
||||||
swad_calendar.o swad_center.o swad_center_config.o swad_chat.o \
|
swad_calendar.o swad_call_for_exam.o swad_center.o \
|
||||||
swad_config.o swad_connected.o swad_cookie.o swad_country.o \
|
swad_center_config.o swad_chat.o swad_config.o swad_connected.o \
|
||||||
swad_country_config.o swad_course.o \
|
swad_cookie.o swad_country.o swad_country_config.o swad_course.o \
|
||||||
swad_course_config.o swad_cryptography.o \
|
swad_course_config.o swad_cryptography.o \
|
||||||
swad_database.o swad_date.o swad_degree.o swad_degree_config.o \
|
swad_database.o swad_date.o swad_degree.o swad_degree_config.o \
|
||||||
swad_degree_type.o swad_department.o swad_duplicate.o \
|
swad_degree_type.o swad_department.o swad_duplicate.o \
|
||||||
swad_enrolment.o swad_exam.o swad_exam_announcement.o swad_exam_log.o \
|
swad_enrolment.o swad_exam.o swad_exam_log.o \
|
||||||
swad_exam_print.o swad_exam_result.o swad_exam_session.o \
|
swad_exam_print.o swad_exam_result.o swad_exam_session.o \
|
||||||
swad_exam_set.o \
|
swad_exam_set.o \
|
||||||
swad_figure.o swad_figure_cache.o swad_file.o swad_file_browser.o \
|
swad_figure.o swad_figure_cache.o swad_file.o swad_file_browser.o \
|
||||||
|
|
|
@ -3272,13 +3272,13 @@ table.CELLS_PAD_10 > tbody > tr > td {padding:10px;}
|
||||||
|
|
||||||
/***************************** Exam announcement *****************************/
|
/***************************** Exam announcement *****************************/
|
||||||
/* Bottom space is used for signatures */
|
/* Bottom space is used for signatures */
|
||||||
.EXA_ANN_VISIBLE
|
.CALL_FOR_EXAM_VISIBLE
|
||||||
{
|
{
|
||||||
box-sizing:border-box;
|
box-sizing:border-box;
|
||||||
width:100%;
|
width:100%;
|
||||||
padding:25px 25px 125px 25px;
|
padding:25px 25px 125px 25px;
|
||||||
}
|
}
|
||||||
.EXA_ANN_HIDDEN
|
.CALL_FOR_EXAM_HIDDEN
|
||||||
{
|
{
|
||||||
box-sizing:border-box;
|
box-sizing:border-box;
|
||||||
width:100%;
|
width:100%;
|
||||||
|
|
|
@ -10645,7 +10645,7 @@ UPDATE usr_data SET EmailNtfEvents=(((EmailNtfEvents & ~0x7F) << 1) | (EmailNtfE
|
||||||
|
|
||||||
/* Assessment tab */
|
/* Assessment tab */
|
||||||
Ntf_EVENT_ASSIGNMENT = 3, // old 3
|
Ntf_EVENT_ASSIGNMENT = 3, // old 3
|
||||||
Ntf_EVENT_EXAM_ANNOUNCEMENT = 4, // old 4
|
Ntf_EVENT_CALL_FOR_EXAM = 4, // old 4
|
||||||
Ntf_EVENT_MARKS_FILE = 5, // old 5
|
Ntf_EVENT_MARKS_FILE = 5, // old 5
|
||||||
|
|
||||||
/* Enrollment tab */
|
/* Enrollment tab */
|
||||||
|
|
|
@ -160,7 +160,7 @@ void QR_LinkTo (unsigned Size,const char *ParamName,long Cod)
|
||||||
|
|
||||||
void QR_ExamAnnnouncement (void)
|
void QR_ExamAnnnouncement (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Link_to_announcement_of_exam;
|
extern const char *Txt_Link_to_call_for_exam;
|
||||||
char *URL;
|
char *URL;
|
||||||
|
|
||||||
/***** Show QR code with direct link to the exam announcement *****/
|
/***** Show QR code with direct link to the exam announcement *****/
|
||||||
|
@ -171,7 +171,7 @@ void QR_ExamAnnnouncement (void)
|
||||||
Cfg_URL_SWAD_CGI,Gbl.Hierarchy.Crs.CrsCod,
|
Cfg_URL_SWAD_CGI,Gbl.Hierarchy.Crs.CrsCod,
|
||||||
Act_GetActCod (ActSeeAllExaAnn)) < 0)
|
Act_GetActCod (ActSeeAllExaAnn)) < 0)
|
||||||
Lay_NotEnoughMemoryExit ();
|
Lay_NotEnoughMemoryExit ();
|
||||||
HTM_IMG (URL,NULL,Txt_Link_to_announcement_of_exam,
|
HTM_IMG (URL,NULL,Txt_Link_to_call_for_exam,
|
||||||
"style=\"width:250px;height:250px;\"");
|
"style=\"width:250px;height:250px;\"");
|
||||||
free (URL);
|
free (URL);
|
||||||
|
|
||||||
|
|
|
@ -29,9 +29,9 @@
|
||||||
#include <stddef.h> // For NULL
|
#include <stddef.h> // For NULL
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "swad_call_for_exam.h"
|
||||||
#include "swad_changelog.h"
|
#include "swad_changelog.h"
|
||||||
#include "swad_database.h"
|
#include "swad_database.h"
|
||||||
#include "swad_exam_announcement.h"
|
|
||||||
#include "swad_global.h"
|
#include "swad_global.h"
|
||||||
#include "swad_notice.h"
|
#include "swad_notice.h"
|
||||||
#include "swad_RSS.h"
|
#include "swad_RSS.h"
|
||||||
|
@ -260,7 +260,7 @@ static void RSS_WriteExamAnnouncements (FILE *FileRSS,struct Crs_Course *Crs)
|
||||||
" WHERE CrsCod=%ld AND Status=%u AND ExamDate>=NOW()"
|
" WHERE CrsCod=%ld AND Status=%u AND ExamDate>=NOW()"
|
||||||
" ORDER BY T",
|
" ORDER BY T",
|
||||||
Gbl.Hierarchy.Crs.CrsCod,
|
Gbl.Hierarchy.Crs.CrsCod,
|
||||||
(unsigned) ExaAnn_VISIBLE_EXAM_ANNOUNCEMENT);
|
(unsigned) Cfe_VISIBLE_CALL_FOR_EXAM);
|
||||||
|
|
||||||
/***** Write items with notices *****/
|
/***** Write items with notices *****/
|
||||||
if (NumExamAnnouncements)
|
if (NumExamAnnouncements)
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
#include "swad_banner.h"
|
#include "swad_banner.h"
|
||||||
#include "swad_building.h"
|
#include "swad_building.h"
|
||||||
#include "swad_calendar.h"
|
#include "swad_calendar.h"
|
||||||
|
#include "swad_call_for_exam.h"
|
||||||
#include "swad_center_config.h"
|
#include "swad_center_config.h"
|
||||||
#include "swad_config.h"
|
#include "swad_config.h"
|
||||||
#include "swad_cookie.h"
|
#include "swad_cookie.h"
|
||||||
|
@ -47,7 +48,6 @@
|
||||||
#include "swad_department.h"
|
#include "swad_department.h"
|
||||||
#include "swad_duplicate.h"
|
#include "swad_duplicate.h"
|
||||||
#include "swad_exam.h"
|
#include "swad_exam.h"
|
||||||
#include "swad_exam_announcement.h"
|
|
||||||
#include "swad_exam_print.h"
|
#include "swad_exam_print.h"
|
||||||
#include "swad_exam_result.h"
|
#include "swad_exam_result.h"
|
||||||
#include "swad_exam_session.h"
|
#include "swad_exam_session.h"
|
||||||
|
@ -554,7 +554,7 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
||||||
[ActSeeAss ] = { 15, 0,TabAss,ActSeeAss ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Inf_ShowInfo ,"info" },
|
[ActSeeAss ] = { 15, 0,TabAss,ActSeeAss ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Inf_ShowInfo ,"info" },
|
||||||
[ActSeeAsg ] = { 801, 1,TabAss,ActSeeAsg ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Asg_SeeAssignments ,"edit" },
|
[ActSeeAsg ] = { 801, 1,TabAss,ActSeeAsg ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Asg_SeeAssignments ,"edit" },
|
||||||
[ActSeePrj ] = {1674, 2,TabAss,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_SeeProjects ,"file-invoice" },
|
[ActSeePrj ] = {1674, 2,TabAss,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_SeeProjects ,"file-invoice" },
|
||||||
[ActSeeAllExaAnn ] = { 85, 3,TabAss,ActSeeAllExaAnn ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaAnn_ListExamAnnsSee ,"bullhorn" },
|
[ActSeeAllExaAnn ] = { 85, 3,TabAss,ActSeeAllExaAnn ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cfe_ListCallsForExamsSee ,"bullhorn" },
|
||||||
[ActEdiTstQst ] = { 104, 4,TabAss,ActEdiTstQst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Dat_SetIniEndDates ,Tst_RequestEditTests ,"tasks" },
|
[ActEdiTstQst ] = { 104, 4,TabAss,ActEdiTstQst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Dat_SetIniEndDates ,Tst_RequestEditTests ,"tasks" },
|
||||||
[ActReqTst ] = { 103, 5,TabAss,ActReqTst ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_RequestTest ,"check" },
|
[ActReqTst ] = { 103, 5,TabAss,ActReqTst ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_RequestTest ,"check" },
|
||||||
[ActSeeAllExa ] = {1848, 6,TabAss,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_SeeAllExams ,"file-signature" },
|
[ActSeeAllExa ] = {1848, 6,TabAss,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_SeeAllExams ,"file-signature" },
|
||||||
|
@ -656,15 +656,15 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
||||||
[ActChgDatAssPrj ] = {1733,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_ChgFileMetadata ,NULL},
|
[ActChgDatAssPrj ] = {1733,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_ChgFileMetadata ,NULL},
|
||||||
[ActDowAssPrj ] = {1734,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_DOWNLD_FILE,Brw_DownloadFile ,NULL ,NULL},
|
[ActDowAssPrj ] = {1734,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_DOWNLD_FILE,Brw_DownloadFile ,NULL ,NULL},
|
||||||
|
|
||||||
[ActSeeOneExaAnn ] = {1572,-1,TabUnk,ActSeeAllExaAnn ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaAnn_ListExamAnnsCod ,NULL},
|
[ActSeeOneCfe ] = {1572,-1,TabUnk,ActSeeAllExaAnn ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cfe_ListCallsForExamsCod ,NULL},
|
||||||
[ActSeeDatExaAnn ] = {1571,-1,TabUnk,ActSeeAllExaAnn ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaAnn_ListExamAnnsDay ,NULL},
|
[ActSeeDatCfe ] = {1571,-1,TabUnk,ActSeeAllExaAnn ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cfe_ListCallsForExamsDay ,NULL},
|
||||||
[ActEdiExaAnn ] = { 91,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaAnn_PutFrmEditAExamAnn ,NULL},
|
[ActEdiCfe ] = { 91,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cfe_PutFrmEditACallForExam ,NULL},
|
||||||
[ActRcvExaAnn ] = { 110,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,ExaAnn_ReceiveExamAnn1 ,ExaAnn_ReceiveExamAnn2 ,NULL},
|
[ActRcvCfe ] = { 110,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Cfe_ReceiveCallForExam1 ,Cfe_ReceiveCallForExam2 ,NULL},
|
||||||
[ActPrnExaAnn ] = { 179,-1,TabUnk,ActSeeAllExaAnn ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,ExaAnn_PrintExamAnn ,NULL},
|
[ActPrnCfe ] = { 179,-1,TabUnk,ActSeeAllExaAnn ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Cfe_PrintCallForExam ,NULL},
|
||||||
[ActReqRemExaAnn ] = {1619,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaAnn_ReqRemoveExamAnn ,NULL},
|
[ActReqRemCfe ] = {1619,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cfe_ReqRemoveCallForExam ,NULL},
|
||||||
[ActRemExaAnn ] = { 187,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,ExaAnn_RemoveExamAnn1 ,ExaAnn_RemoveExamAnn2 ,NULL},
|
[ActRemCfe ] = { 187,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Cfe_RemoveCallForExam1 ,Cfe_RemoveCallForExam2 ,NULL},
|
||||||
[ActHidExaAnn ] = {1620,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,ExaAnn_HideExamAnn ,ExaAnn_ListExamAnnsEdit ,NULL},
|
[ActHidCfe ] = {1620,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Cfe_HideCallForExam ,Cfe_ListCallsForExamsEdit ,NULL},
|
||||||
[ActUnhExaAnn ] = {1621,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,ExaAnn_UnhideExamAnn ,ExaAnn_ListExamAnnsEdit ,NULL},
|
[ActUnhCfe ] = {1621,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Cfe_UnhideCallForExam ,Cfe_ListCallsForExamsEdit ,NULL},
|
||||||
|
|
||||||
[ActEdiOneTstQst ] = { 105,-1,TabUnk,ActEdiTstQst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_ShowFormEditOneQst ,NULL},
|
[ActEdiOneTstQst ] = { 105,-1,TabUnk,ActEdiTstQst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_ShowFormEditOneQst ,NULL},
|
||||||
[ActReqImpTstQst ] = {1007,-1,TabUnk,ActEdiTstQst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TsI_ShowFormImportQstsFromXML ,NULL},
|
[ActReqImpTstQst ] = {1007,-1,TabUnk,ActEdiTstQst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TsI_ShowFormImportQstsFromXML ,NULL},
|
||||||
|
@ -1913,7 +1913,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
|
||||||
ActReqRemAllStdCrs, // #88
|
ActReqRemAllStdCrs, // #88
|
||||||
ActSeeRecSevStd, // #89
|
ActSeeRecSevStd, // #89
|
||||||
ActDelSntMsg, // #90
|
ActDelSntMsg, // #90
|
||||||
ActEdiExaAnn, // #91
|
ActEdiCfe, // #91
|
||||||
-1, // #92 (obsolete action)
|
-1, // #92 (obsolete action)
|
||||||
-1, // #93 (obsolete action)
|
-1, // #93 (obsolete action)
|
||||||
-1, // #94 (obsolete action)
|
-1, // #94 (obsolete action)
|
||||||
|
@ -1932,7 +1932,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
|
||||||
ActReqRemGrp, // #107
|
ActReqRemGrp, // #107
|
||||||
ActReqEdiGrp, // #108
|
ActReqEdiGrp, // #108
|
||||||
ActEdiFAQ, // #109
|
ActEdiFAQ, // #109
|
||||||
ActRcvExaAnn, // #110
|
ActRcvCfe, // #110
|
||||||
ActPrnRecSevStd, // #111
|
ActPrnRecSevStd, // #111
|
||||||
-1, // #112 (obsolete action)
|
-1, // #112 (obsolete action)
|
||||||
-1, // #113 (obsolete action)
|
-1, // #113 (obsolete action)
|
||||||
|
@ -2001,7 +2001,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
|
||||||
-1, // #176 (obsolete action)
|
-1, // #176 (obsolete action)
|
||||||
-1, // #177 (obsolete action)
|
-1, // #177 (obsolete action)
|
||||||
-1, // #178 (obsolete action)
|
-1, // #178 (obsolete action)
|
||||||
ActPrnExaAnn, // #179
|
ActPrnCfe, // #179
|
||||||
-1, // #180 (obsolete action)
|
-1, // #180 (obsolete action)
|
||||||
ActInsIteSylPra, // #181
|
ActInsIteSylPra, // #181
|
||||||
ActRcvURLCrsLnk, // #182
|
ActRcvURLCrsLnk, // #182
|
||||||
|
@ -2009,7 +2009,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
|
||||||
ActRcvPagAss, // #184
|
ActRcvPagAss, // #184
|
||||||
ActRcvPagBib, // #185
|
ActRcvPagBib, // #185
|
||||||
-1, // #186 (obsolete action)
|
-1, // #186 (obsolete action)
|
||||||
ActRemExaAnn, // #187
|
ActRemCfe, // #187
|
||||||
-1, // #188 (obsolete action)
|
-1, // #188 (obsolete action)
|
||||||
-1, // #189 (obsolete action)
|
-1, // #189 (obsolete action)
|
||||||
-1, // #190 (obsolete action)
|
-1, // #190 (obsolete action)
|
||||||
|
@ -3393,8 +3393,8 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
|
||||||
ActCnfID_Oth, // #1568
|
ActCnfID_Oth, // #1568
|
||||||
ActCnfID_Std, // #1569
|
ActCnfID_Std, // #1569
|
||||||
ActCnfID_Tch, // #1570
|
ActCnfID_Tch, // #1570
|
||||||
ActSeeDatExaAnn, // #1571
|
ActSeeDatCfe, // #1571
|
||||||
ActSeeOneExaAnn, // #1572
|
ActSeeOneCfe, // #1572
|
||||||
ActChgCrsYeaCfg, // #1573
|
ActChgCrsYeaCfg, // #1573
|
||||||
ActReqRemOthPho, // #1574
|
ActReqRemOthPho, // #1574
|
||||||
ActReqRemStdPho, // #1575
|
ActReqRemStdPho, // #1575
|
||||||
|
@ -3441,9 +3441,9 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
|
||||||
ActLogInUsrAgdLan, // #1616
|
ActLogInUsrAgdLan, // #1616
|
||||||
-1, // #1617 (obsolete action)
|
-1, // #1617 (obsolete action)
|
||||||
ActPrnAgdQR, // #1618
|
ActPrnAgdQR, // #1618
|
||||||
ActReqRemExaAnn, // #1619
|
ActReqRemCfe, // #1619
|
||||||
ActHidExaAnn, // #1620
|
ActHidCfe, // #1620
|
||||||
ActUnhExaAnn, // #1621
|
ActUnhCfe, // #1621
|
||||||
ActSeeCal, // #1622
|
ActSeeCal, // #1622
|
||||||
ActPrnCal, // #1623
|
ActPrnCal, // #1623
|
||||||
ActChgCal1stDay, // #1624
|
ActChgCal1stDay, // #1624
|
||||||
|
|
|
@ -618,15 +618,15 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
|
||||||
#define ActChgDatAssPrj (ActChgCrsTT1stDay + 97)
|
#define ActChgDatAssPrj (ActChgCrsTT1stDay + 97)
|
||||||
#define ActDowAssPrj (ActChgCrsTT1stDay + 98)
|
#define ActDowAssPrj (ActChgCrsTT1stDay + 98)
|
||||||
|
|
||||||
#define ActSeeOneExaAnn (ActChgCrsTT1stDay + 99)
|
#define ActSeeOneCfe (ActChgCrsTT1stDay + 99)
|
||||||
#define ActSeeDatExaAnn (ActChgCrsTT1stDay + 100)
|
#define ActSeeDatCfe (ActChgCrsTT1stDay + 100)
|
||||||
#define ActEdiExaAnn (ActChgCrsTT1stDay + 101)
|
#define ActEdiCfe (ActChgCrsTT1stDay + 101)
|
||||||
#define ActRcvExaAnn (ActChgCrsTT1stDay + 102)
|
#define ActRcvCfe (ActChgCrsTT1stDay + 102)
|
||||||
#define ActPrnExaAnn (ActChgCrsTT1stDay + 103)
|
#define ActPrnCfe (ActChgCrsTT1stDay + 103)
|
||||||
#define ActReqRemExaAnn (ActChgCrsTT1stDay + 104)
|
#define ActReqRemCfe (ActChgCrsTT1stDay + 104)
|
||||||
#define ActRemExaAnn (ActChgCrsTT1stDay + 105)
|
#define ActRemCfe (ActChgCrsTT1stDay + 105)
|
||||||
#define ActHidExaAnn (ActChgCrsTT1stDay + 106)
|
#define ActHidCfe (ActChgCrsTT1stDay + 106)
|
||||||
#define ActUnhExaAnn (ActChgCrsTT1stDay + 107)
|
#define ActUnhCfe (ActChgCrsTT1stDay + 107)
|
||||||
|
|
||||||
#define ActEdiOneTstQst (ActChgCrsTT1stDay + 108)
|
#define ActEdiOneTstQst (ActChgCrsTT1stDay + 108)
|
||||||
#define ActReqImpTstQst (ActChgCrsTT1stDay + 109)
|
#define ActReqImpTstQst (ActChgCrsTT1stDay + 109)
|
||||||
|
|
|
@ -29,8 +29,8 @@
|
||||||
|
|
||||||
#include "swad_box.h"
|
#include "swad_box.h"
|
||||||
#include "swad_calendar.h"
|
#include "swad_calendar.h"
|
||||||
|
#include "swad_call_for_exam.h"
|
||||||
#include "swad_database.h"
|
#include "swad_database.h"
|
||||||
#include "swad_exam_announcement.h"
|
|
||||||
#include "swad_figure.h"
|
#include "swad_figure.h"
|
||||||
#include "swad_form.h"
|
#include "swad_form.h"
|
||||||
#include "swad_global.h"
|
#include "swad_global.h"
|
||||||
|
@ -219,7 +219,7 @@ void Cal_DrawCurrentMonth (void)
|
||||||
Lan_STR_LANG_ID[Gbl.Prefs.Language]);
|
Lan_STR_LANG_ID[Gbl.Prefs.Language]);
|
||||||
Frm_SetParamsForm (ParamsStr,ActSeeCal,true);
|
Frm_SetParamsForm (ParamsStr,ActSeeCal,true);
|
||||||
HTM_TxtF ("'%s',",ParamsStr);
|
HTM_TxtF ("'%s',",ParamsStr);
|
||||||
Frm_SetParamsForm (ParamsStr,ActSeeDatExaAnn,true);
|
Frm_SetParamsForm (ParamsStr,ActSeeDatCfe,true);
|
||||||
HTM_TxtF ("'%s');",ParamsStr);
|
HTM_TxtF ("'%s');",ParamsStr);
|
||||||
HTM_SCRIPT_End ();
|
HTM_SCRIPT_End ();
|
||||||
}
|
}
|
||||||
|
@ -288,7 +288,7 @@ static void Cal_DrawCalendar (Act_Action_t ActionSeeCalendar,
|
||||||
Lan_STR_LANG_ID[Gbl.Prefs.Language]);
|
Lan_STR_LANG_ID[Gbl.Prefs.Language]);
|
||||||
Frm_SetParamsForm (ParamsStr,ActionSeeCalendar,true);
|
Frm_SetParamsForm (ParamsStr,ActionSeeCalendar,true);
|
||||||
HTM_TxtF ("'%s',",ParamsStr);
|
HTM_TxtF ("'%s',",ParamsStr);
|
||||||
Frm_SetParamsForm (ParamsStr,ActSeeDatExaAnn,true);
|
Frm_SetParamsForm (ParamsStr,ActSeeDatCfe,true);
|
||||||
HTM_TxtF ("'%s');",ParamsStr);
|
HTM_TxtF ("'%s');",ParamsStr);
|
||||||
HTM_SCRIPT_End ();
|
HTM_SCRIPT_End ();
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,129 @@
|
||||||
|
// swad_call_for_exam.h: calls for exams
|
||||||
|
|
||||||
|
#ifndef _SWAD_CFE
|
||||||
|
#define _SWAD_CFE
|
||||||
|
/*
|
||||||
|
SWAD (Shared Workspace At a Distance),
|
||||||
|
is a web platform developed at the University of Granada (Spain),
|
||||||
|
and used to support university teaching.
|
||||||
|
|
||||||
|
This file is part of SWAD core.
|
||||||
|
Copyright (C) 1999-2021 Antonio Cañas Vargas
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Affero General 3 License as
|
||||||
|
published by the Free Software Foundation, either version 3 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU Affero General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Affero General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
/*****************************************************************************/
|
||||||
|
/********************************* Headers ***********************************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
#include <stdbool.h> // For boolean type
|
||||||
|
|
||||||
|
#include "swad_constant.h"
|
||||||
|
#include "swad_course.h"
|
||||||
|
#include "swad_date.h"
|
||||||
|
#include "swad_notification.h"
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/************************** Public types and constants ***********************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
#define Cfe_NUM_VIEWS 3
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
Cfe_NORMAL_VIEW,
|
||||||
|
Cfe_PRINT_VIEW,
|
||||||
|
Cfe_FORM_VIEW,
|
||||||
|
} Cfe_TypeViewCallForExam_t;
|
||||||
|
|
||||||
|
#define Cfe_NUM_STATUS 3
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
Cfe_VISIBLE_CALL_FOR_EXAM = 0,
|
||||||
|
Cfe_HIDDEN_CALL_FOR_EXAM = 1,
|
||||||
|
Cfe_DELETED_CALL_FOR_EXAM = 2,
|
||||||
|
} Cfe_Status_t; // Don't change these numbers because they are used in database
|
||||||
|
#define Cfe_STATUS_DEFAULT Cfe_VISIBLE_CALL_FOR_EXAM
|
||||||
|
|
||||||
|
#define Cfe_MAX_CHARS_SESSION (128 - 1) // 127
|
||||||
|
#define Cfe_MAX_BYTES_SESSION ((Cfe_MAX_CHARS_SESSION + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047
|
||||||
|
|
||||||
|
struct Cfe_CallForExam
|
||||||
|
{
|
||||||
|
long CrsCod;
|
||||||
|
Cfe_Status_t Status;
|
||||||
|
char CrsFullName[Cns_HIERARCHY_MAX_BYTES_FULL_NAME + 1];
|
||||||
|
unsigned Year; // Number of year (0 (N.A.), 1, 2, 3, 4, 5, 6) in the degree
|
||||||
|
char Session[Cfe_MAX_BYTES_SESSION + 1]; // Exam session is june, september, etc.
|
||||||
|
struct Date CallDate;
|
||||||
|
struct Date ExamDate;
|
||||||
|
struct Hour StartTime;
|
||||||
|
struct Hour Duration;
|
||||||
|
char *Place;
|
||||||
|
char *Mode;
|
||||||
|
char *Structure;
|
||||||
|
char *DocRequired;
|
||||||
|
char *MatRequired;
|
||||||
|
char *MatAllowed;
|
||||||
|
char *OtherInfo;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Cfe_ExamCodeAndDate
|
||||||
|
{
|
||||||
|
long ExaCod;
|
||||||
|
struct Date ExamDate;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Cfe_CallsForExams
|
||||||
|
{
|
||||||
|
unsigned NumCallsForExams; // Number of calls for exams in the list
|
||||||
|
struct Cfe_ExamCodeAndDate *Lst; // List of calls for exams
|
||||||
|
long NewExaCod; // New call for exam just created
|
||||||
|
long HighlightExaCod; // Call for exam to be highlighted
|
||||||
|
char HighlightDate[4 + 2 + 2 + 1]; // Date with calls for exams to be highlighted (in YYYYMMDD format)
|
||||||
|
long ExaCod; // Used to put contextual icons
|
||||||
|
const char *Anchor; // Used to put contextual icons
|
||||||
|
struct Cfe_CallForExam CallForExam;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/***************************** Public prototypes *****************************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
void Cfe_ResetCallsForExams (struct Cfe_CallsForExams *CallsForExams);
|
||||||
|
|
||||||
|
void Cfe_PutFrmEditACallForExam (void);
|
||||||
|
void Cfe_ReceiveCallForExam1 (void);
|
||||||
|
void Cfe_ReceiveCallForExam2 (void);
|
||||||
|
void Cfe_PrintCallForExam (void);
|
||||||
|
void Cfe_ReqRemoveCallForExam (void);
|
||||||
|
void Cfe_RemoveCallForExam1 (void);
|
||||||
|
void Cfe_RemoveCallForExam2 (void);
|
||||||
|
void Cfe_HideCallForExam (void);
|
||||||
|
void Cfe_UnhideCallForExam (void);
|
||||||
|
|
||||||
|
void Cfe_FreeListCallsForExams (struct Cfe_CallsForExams *CallsForExams);
|
||||||
|
void Cfe_ListCallsForExamsSee (void);
|
||||||
|
void Cfe_ListCallsForExamsEdit (void);
|
||||||
|
|
||||||
|
void Cfe_ListCallsForExamsCod (void);
|
||||||
|
void Cfe_ListCallsForExamsDay (void);
|
||||||
|
|
||||||
|
void Cfe_CreateListCallsForExams (struct Cfe_CallsForExams *CallsForExams);
|
||||||
|
void Cfe_PutHiddenParamExaCod (long ExaCod);
|
||||||
|
|
||||||
|
void Cfe_GetSummaryAndContentCallForExam (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
|
||||||
|
char **ContentStr,
|
||||||
|
long ExaCod,bool GetContent);
|
||||||
|
|
||||||
|
#endif
|
|
@ -600,12 +600,14 @@ TODO: Salvador Romero Cort
|
||||||
|
|
||||||
TODO: FIX BUG, URGENT! En las fechas como parámetro Dat_WriteParamsIniEndDates(), por ejemplo al cambiar el color de la gráfica de accesos por día y hora, no se respeta la zona horaria.
|
TODO: FIX BUG, URGENT! En las fechas como parámetro Dat_WriteParamsIniEndDates(), por ejemplo al cambiar el color de la gráfica de accesos por día y hora, no se respeta la zona horaria.
|
||||||
*/
|
*/
|
||||||
#define Log_PLATFORM_VERSION "SWAD 20.50.11 (2021-03-17)"
|
#define Log_PLATFORM_VERSION "SWAD 20.51 (2021-03-18)"
|
||||||
#define CSS_FILE "swad20.45.css"
|
#define CSS_FILE "swad20.45.css"
|
||||||
#define JS_FILE "swad20.6.2.js"
|
#define JS_FILE "swad20.6.2.js"
|
||||||
/*
|
/*
|
||||||
TODO: Rename CENTRE to CENTER in help wiki.
|
TODO: Rename CENTRE to CENTER in help wiki.
|
||||||
|
TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams
|
||||||
|
|
||||||
|
Version 20.51: Mar 18, 2021 Call for exam module renamed. (307459 lines)
|
||||||
Version 20.50.11: Mar 17, 2021 Departments database table renamed. (307450 lines)
|
Version 20.50.11: Mar 17, 2021 Departments database table renamed. (307450 lines)
|
||||||
1 change necessary in database:
|
1 change necessary in database:
|
||||||
RENAME TABLE departments TO dpt_departments;
|
RENAME TABLE departments TO dpt_departments;
|
||||||
|
|
|
@ -32,10 +32,10 @@
|
||||||
#include <string.h> // For string functions
|
#include <string.h> // For string functions
|
||||||
|
|
||||||
#include "swad_attendance.h"
|
#include "swad_attendance.h"
|
||||||
|
#include "swad_call_for_exam.h"
|
||||||
#include "swad_course.h"
|
#include "swad_course.h"
|
||||||
#include "swad_course_config.h"
|
#include "swad_course_config.h"
|
||||||
#include "swad_database.h"
|
#include "swad_database.h"
|
||||||
#include "swad_exam_announcement.h"
|
|
||||||
#include "swad_figure.h"
|
#include "swad_figure.h"
|
||||||
#include "swad_figure_cache.h"
|
#include "swad_figure_cache.h"
|
||||||
#include "swad_form.h"
|
#include "swad_form.h"
|
||||||
|
@ -1948,7 +1948,7 @@ static void Crs_EmptyCourseCompletely (long CrsCod)
|
||||||
DB_QueryUPDATE ("can not remove exam announcements of a course",
|
DB_QueryUPDATE ("can not remove exam announcements of a course",
|
||||||
"UPDATE exam_announcements SET Status=%u"
|
"UPDATE exam_announcements SET Status=%u"
|
||||||
" WHERE CrsCod=%ld",
|
" WHERE CrsCod=%ld",
|
||||||
(unsigned) ExaAnn_DELETED_EXAM_ANNOUNCEMENT,CrsCod);
|
(unsigned) Cfe_DELETED_CALL_FOR_EXAM,CrsCod);
|
||||||
|
|
||||||
/***** Remove course cards of the course *****/
|
/***** Remove course cards of the course *****/
|
||||||
/* Remove content of course cards */
|
/* Remove content of course cards */
|
||||||
|
|
|
@ -1214,7 +1214,7 @@ mysql> DESCRIBE exam_announcements;
|
||||||
"NumNotif INT NOT NULL DEFAULT 0,"
|
"NumNotif INT NOT NULL DEFAULT 0,"
|
||||||
"CrsFullName VARCHAR(2047) NOT NULL," // Cns_HIERARCHY_MAX_BYTES_FULL_NAME
|
"CrsFullName VARCHAR(2047) NOT NULL," // Cns_HIERARCHY_MAX_BYTES_FULL_NAME
|
||||||
"Year TINYINT NOT NULL,"
|
"Year TINYINT NOT NULL,"
|
||||||
"ExamSession VARCHAR(2047) NOT NULL," // ExaAnn_MAX_BYTES_SESSION
|
"ExamSession VARCHAR(2047) NOT NULL," // Cfe_MAX_BYTES_SESSION
|
||||||
"CallDate DATETIME NOT NULL,"
|
"CallDate DATETIME NOT NULL,"
|
||||||
"ExamDate DATETIME NOT NULL,"
|
"ExamDate DATETIME NOT NULL,"
|
||||||
"Duration TIME NOT NULL,"
|
"Duration TIME NOT NULL,"
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,129 +0,0 @@
|
||||||
// swad_exam_announcement.h: exam announcements
|
|
||||||
|
|
||||||
#ifndef _SWAD_EXA_ANN
|
|
||||||
#define _SWAD_EXA_ANN
|
|
||||||
/*
|
|
||||||
SWAD (Shared Workspace At a Distance),
|
|
||||||
is a web platform developed at the University of Granada (Spain),
|
|
||||||
and used to support university teaching.
|
|
||||||
|
|
||||||
This file is part of SWAD core.
|
|
||||||
Copyright (C) 1999-2021 Antonio Cañas Vargas
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU Affero General 3 License as
|
|
||||||
published by the Free Software Foundation, either version 3 of the
|
|
||||||
License, or (at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU Affero General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Affero General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
/*****************************************************************************/
|
|
||||||
/********************************* Headers ***********************************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
#include <stdbool.h> // For boolean type
|
|
||||||
|
|
||||||
#include "swad_constant.h"
|
|
||||||
#include "swad_course.h"
|
|
||||||
#include "swad_date.h"
|
|
||||||
#include "swad_notification.h"
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/************************** Public types and constants ***********************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
#define ExaAnn_NUM_VIEWS 3
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
ExaAnn_NORMAL_VIEW,
|
|
||||||
ExaAnn_PRINT_VIEW,
|
|
||||||
ExaAnn_FORM_VIEW,
|
|
||||||
} ExaAnn_TypeViewExamAnnouncement_t;
|
|
||||||
|
|
||||||
#define ExaAnn_NUM_STATUS 3
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
ExaAnn_VISIBLE_EXAM_ANNOUNCEMENT = 0,
|
|
||||||
ExaAnn_HIDDEN_EXAM_ANNOUNCEMENT = 1,
|
|
||||||
ExaAnn_DELETED_EXAM_ANNOUNCEMENT = 2,
|
|
||||||
} ExaAnn_Status_t; // Don't change these numbers because they are used in database
|
|
||||||
#define ExaAnn_STATUS_DEFAULT ExaAnn_VISIBLE_EXAM_ANNOUNCEMENT
|
|
||||||
|
|
||||||
#define ExaAnn_MAX_CHARS_SESSION (128 - 1) // 127
|
|
||||||
#define ExaAnn_MAX_BYTES_SESSION ((ExaAnn_MAX_CHARS_SESSION + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047
|
|
||||||
|
|
||||||
struct ExaAnn_ExamAnnouncement
|
|
||||||
{
|
|
||||||
long CrsCod;
|
|
||||||
ExaAnn_Status_t Status;
|
|
||||||
char CrsFullName[Cns_HIERARCHY_MAX_BYTES_FULL_NAME + 1];
|
|
||||||
unsigned Year; // Number of year (0 (N.A.), 1, 2, 3, 4, 5, 6) in the degree
|
|
||||||
char Session[ExaAnn_MAX_BYTES_SESSION + 1]; // Exam session is june, september, etc.
|
|
||||||
struct Date CallDate;
|
|
||||||
struct Date ExamDate;
|
|
||||||
struct Hour StartTime;
|
|
||||||
struct Hour Duration;
|
|
||||||
char *Place;
|
|
||||||
char *Mode;
|
|
||||||
char *Structure;
|
|
||||||
char *DocRequired;
|
|
||||||
char *MatRequired;
|
|
||||||
char *MatAllowed;
|
|
||||||
char *OtherInfo;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct ExaAnn_ExamCodeAndDate
|
|
||||||
{
|
|
||||||
long ExaCod;
|
|
||||||
struct Date ExamDate;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct ExaAnn_ExamAnnouncements
|
|
||||||
{
|
|
||||||
unsigned NumExaAnns; // Number of announcements of exam in the list
|
|
||||||
struct ExaAnn_ExamCodeAndDate *Lst; // List of exam announcements
|
|
||||||
long NewExaCod; // New exam announcement just created
|
|
||||||
long HighlightExaCod; // Exam announcement to be highlighted
|
|
||||||
char HighlightDate[4 + 2 + 2 + 1]; // Date with exam announcements to be highlighted (in YYYYMMDD format)
|
|
||||||
long ExaCod; // Used to put contextual icons
|
|
||||||
const char *Anchor; // Used to put contextual icons
|
|
||||||
struct ExaAnn_ExamAnnouncement ExamAnn;
|
|
||||||
};
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/***************************** Public prototypes *****************************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
void ExaAnn_ResetExamAnns (struct ExaAnn_ExamAnnouncements *ExamAnns);
|
|
||||||
|
|
||||||
void ExaAnn_PutFrmEditAExamAnn (void);
|
|
||||||
void ExaAnn_ReceiveExamAnn1 (void);
|
|
||||||
void ExaAnn_ReceiveExamAnn2 (void);
|
|
||||||
void ExaAnn_PrintExamAnn (void);
|
|
||||||
void ExaAnn_ReqRemoveExamAnn (void);
|
|
||||||
void ExaAnn_RemoveExamAnn1 (void);
|
|
||||||
void ExaAnn_RemoveExamAnn2 (void);
|
|
||||||
void ExaAnn_HideExamAnn (void);
|
|
||||||
void ExaAnn_UnhideExamAnn (void);
|
|
||||||
|
|
||||||
void ExaAnn_FreeListExamAnns (struct ExaAnn_ExamAnnouncements *ExamAnns);
|
|
||||||
void ExaAnn_ListExamAnnsSee (void);
|
|
||||||
void ExaAnn_ListExamAnnsEdit (void);
|
|
||||||
|
|
||||||
void ExaAnn_ListExamAnnsCod (void);
|
|
||||||
void ExaAnn_ListExamAnnsDay (void);
|
|
||||||
|
|
||||||
void ExaAnn_CreateListExamAnns (struct ExaAnn_ExamAnnouncements *ExamAnns);
|
|
||||||
void ExaAnn_PutHiddenParamExaCod (long ExaCod);
|
|
||||||
|
|
||||||
void ExaAnn_GetSummaryAndContentExamAnn (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
|
|
||||||
char **ContentStr,
|
|
||||||
long ExaCod,bool GetContent);
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -36,11 +36,10 @@
|
||||||
#include "swad_action.h"
|
#include "swad_action.h"
|
||||||
#include "swad_API.h"
|
#include "swad_API.h"
|
||||||
#include "swad_calendar.h"
|
#include "swad_calendar.h"
|
||||||
#include "swad_room.h"
|
#include "swad_call_for_exam.h"
|
||||||
#include "swad_config.h"
|
#include "swad_config.h"
|
||||||
#include "swad_constant.h"
|
#include "swad_constant.h"
|
||||||
#include "swad_department.h"
|
#include "swad_department.h"
|
||||||
#include "swad_exam_announcement.h"
|
|
||||||
#include "swad_follow.h"
|
#include "swad_follow.h"
|
||||||
#include "swad_global.h"
|
#include "swad_global.h"
|
||||||
#include "swad_hierarchy.h"
|
#include "swad_hierarchy.h"
|
||||||
|
@ -50,6 +49,7 @@
|
||||||
#include "swad_program.h"
|
#include "swad_program.h"
|
||||||
#include "swad_project.h"
|
#include "swad_project.h"
|
||||||
#include "swad_role.h"
|
#include "swad_role.h"
|
||||||
|
#include "swad_room.h"
|
||||||
#include "swad_setting.h"
|
#include "swad_setting.h"
|
||||||
#include "swad_statistic.h"
|
#include "swad_statistic.h"
|
||||||
#include "swad_theme.h"
|
#include "swad_theme.h"
|
||||||
|
|
|
@ -1873,67 +1873,67 @@ const char *Hlp_ASSESSMENT_Surveys_questions =
|
||||||
"ASSESSMENT.Surveys.en#questions";
|
"ASSESSMENT.Surveys.en#questions";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Hlp_ASSESSMENT_Announcements =
|
const char *Hlp_ASSESSMENT_Calls_for_exams =
|
||||||
#if L==1
|
#if L==1
|
||||||
"ASSESSMENT.Announcements.es";
|
"ASSESSMENT.Calls_for_exams.es";
|
||||||
#elif L==2
|
#elif L==2
|
||||||
"ASSESSMENT.Announcements.en";
|
"ASSESSMENT.Calls_for_exams.en";
|
||||||
#elif L==3
|
#elif L==3
|
||||||
"ASSESSMENT.Announcements.en";
|
"ASSESSMENT.Calls_for_exams.en";
|
||||||
#elif L==4
|
#elif L==4
|
||||||
"ASSESSMENT.Announcements.es";
|
"ASSESSMENT.Calls_for_exams.es";
|
||||||
#elif L==5
|
#elif L==5
|
||||||
"ASSESSMENT.Announcements.en";
|
"ASSESSMENT.Calls_for_exams.en";
|
||||||
#elif L==6
|
#elif L==6
|
||||||
"ASSESSMENT.Announcements.es";
|
"ASSESSMENT.Calls_for_exams.es";
|
||||||
#elif L==7
|
#elif L==7
|
||||||
"ASSESSMENT.Announcements.en";
|
"ASSESSMENT.Calls_for_exams.en";
|
||||||
#elif L==8
|
#elif L==8
|
||||||
"ASSESSMENT.Announcements.en";
|
"ASSESSMENT.Calls_for_exams.en";
|
||||||
#elif L==9
|
#elif L==9
|
||||||
"ASSESSMENT.Announcements.en";
|
"ASSESSMENT.Calls_for_exams.en";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Hlp_ASSESSMENT_Announcements_new_announcement =
|
const char *Hlp_ASSESSMENT_Calls_for_exam_new_call =
|
||||||
#if L==1
|
#if L==1
|
||||||
"ASSESSMENT.Announcements.es#nueva-convocatoria";
|
"ASSESSMENT.Calls_for_exams.es#nueva-convocatoria";
|
||||||
#elif L==2
|
#elif L==2
|
||||||
"ASSESSMENT.Announcements.en#new-announcement";
|
"ASSESSMENT.Calls_for_exams.en#new-call";
|
||||||
#elif L==3
|
#elif L==3
|
||||||
"ASSESSMENT.Announcements.en#new-announcement";
|
"ASSESSMENT.Calls_for_exams.en#new-call";
|
||||||
#elif L==4
|
#elif L==4
|
||||||
"ASSESSMENT.Announcements.es#nueva-convocatoria";
|
"ASSESSMENT.Calls_for_exams.es#nueva-convocatoria";
|
||||||
#elif L==5
|
#elif L==5
|
||||||
"ASSESSMENT.Announcements.en#new-announcement";
|
"ASSESSMENT.Calls_for_exams.en#new-call";
|
||||||
#elif L==6
|
#elif L==6
|
||||||
"ASSESSMENT.Announcements.es#nueva-convocatoria";
|
"ASSESSMENT.Calls_for_exams.es#nueva-convocatoria";
|
||||||
#elif L==7
|
#elif L==7
|
||||||
"ASSESSMENT.Announcements.en#new-announcement";
|
"ASSESSMENT.Calls_for_exams.en#new-call";
|
||||||
#elif L==8
|
#elif L==8
|
||||||
"ASSESSMENT.Announcements.en#new-announcement";
|
"ASSESSMENT.Calls_for_exams.en#new-call";
|
||||||
#elif L==9
|
#elif L==9
|
||||||
"ASSESSMENT.Announcements.en#new-announcement";
|
"ASSESSMENT.Calls_for_exams.en#new-call";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Hlp_ASSESSMENT_Announcements_edit_announcement =
|
const char *Hlp_ASSESSMENT_Announcements_edit_announcement =
|
||||||
#if L==1
|
#if L==1
|
||||||
"ASSESSMENT.Announcements.es#editar-convocatoria";
|
"ASSESSMENT.Calls_for_exams.es#editar-convocatoria";
|
||||||
#elif L==2
|
#elif L==2
|
||||||
"ASSESSMENT.Announcements.en#edit-announcement";
|
"ASSESSMENT.Calls_for_exams.en#edit-call";
|
||||||
#elif L==3
|
#elif L==3
|
||||||
"ASSESSMENT.Announcements.en#edit-announcement";
|
"ASSESSMENT.Calls_for_exams.en#edit-call";
|
||||||
#elif L==4
|
#elif L==4
|
||||||
"ASSESSMENT.Announcements.es#editar-convocatoria";
|
"ASSESSMENT.Calls_for_exams.es#editar-convocatoria";
|
||||||
#elif L==5
|
#elif L==5
|
||||||
"ASSESSMENT.Announcements.en#edit-announcement";
|
"ASSESSMENT.Calls_for_exams.en#edit-call";
|
||||||
#elif L==6
|
#elif L==6
|
||||||
"ASSESSMENT.Announcements.es#editar-convocatoria";
|
"ASSESSMENT.Calls_for_exams.es#editar-convocatoria";
|
||||||
#elif L==7
|
#elif L==7
|
||||||
"ASSESSMENT.Announcements.en#edit-announcement";
|
"ASSESSMENT.Calls_for_exams.en#edit-call";
|
||||||
#elif L==8
|
#elif L==8
|
||||||
"ASSESSMENT.Announcements.en#edit-announcement";
|
"ASSESSMENT.Calls_for_exams.en#edit-call";
|
||||||
#elif L==9
|
#elif L==9
|
||||||
"ASSESSMENT.Announcements.en#edit-announcement";
|
"ASSESSMENT.Calls_for_exams.en#edit-call";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/***** FILES tab *****/
|
/***** FILES tab *****/
|
||||||
|
|
|
@ -34,11 +34,11 @@
|
||||||
#include "swad_banner.h"
|
#include "swad_banner.h"
|
||||||
#include "swad_box.h"
|
#include "swad_box.h"
|
||||||
#include "swad_calendar.h"
|
#include "swad_calendar.h"
|
||||||
|
#include "swad_call_for_exam.h"
|
||||||
#include "swad_changelog.h"
|
#include "swad_changelog.h"
|
||||||
#include "swad_config.h"
|
#include "swad_config.h"
|
||||||
#include "swad_connected.h"
|
#include "swad_connected.h"
|
||||||
#include "swad_database.h"
|
#include "swad_database.h"
|
||||||
#include "swad_exam_announcement.h"
|
|
||||||
#include "swad_exam_session.h"
|
#include "swad_exam_session.h"
|
||||||
#include "swad_firewall.h"
|
#include "swad_firewall.h"
|
||||||
#include "swad_follow.h"
|
#include "swad_follow.h"
|
||||||
|
@ -495,7 +495,7 @@ static void Lay_WriteScripts (void)
|
||||||
extern const char *Txt_DAYS_SMALL[7];
|
extern const char *Txt_DAYS_SMALL[7];
|
||||||
extern const char *Txt_Exam_of_X;
|
extern const char *Txt_Exam_of_X;
|
||||||
struct Hld_Holidays Holidays;
|
struct Hld_Holidays Holidays;
|
||||||
struct ExaAnn_ExamAnnouncements ExamAnns;
|
struct Cfe_CallsForExams ExamAnns;
|
||||||
unsigned DayOfWeek; /* 0, 1, 2, 3, 4, 5, 6 */
|
unsigned DayOfWeek; /* 0, 1, 2, 3, 4, 5, 6 */
|
||||||
unsigned NumHld;
|
unsigned NumHld;
|
||||||
unsigned NumExamAnnouncement; // Number of exam announcement
|
unsigned NumExamAnnouncement; // Number of exam announcement
|
||||||
|
@ -542,10 +542,10 @@ static void Lay_WriteScripts (void)
|
||||||
Hld_GetListHolidays (&Holidays);
|
Hld_GetListHolidays (&Holidays);
|
||||||
|
|
||||||
/***** Reset exam announcements context *****/
|
/***** Reset exam announcements context *****/
|
||||||
ExaAnn_ResetExamAnns (&ExamAnns);
|
Cfe_ResetCallsForExams (&ExamAnns);
|
||||||
|
|
||||||
/***** Create list of exam announcements *****/
|
/***** Create list of exam announcements *****/
|
||||||
ExaAnn_CreateListExamAnns (&ExamAnns);
|
Cfe_CreateListCallsForExams (&ExamAnns);
|
||||||
|
|
||||||
/***** Write script to initialize variables used to draw months *****/
|
/***** Write script to initialize variables used to draw months *****/
|
||||||
HTM_SCRIPT_Begin (NULL,NULL);
|
HTM_SCRIPT_Begin (NULL,NULL);
|
||||||
|
@ -579,7 +579,7 @@ static void Lay_WriteScripts (void)
|
||||||
|
|
||||||
HTM_TxtF ("\tvar LstExamAnnouncements = [];\n");
|
HTM_TxtF ("\tvar LstExamAnnouncements = [];\n");
|
||||||
for (NumExamAnnouncement = 0;
|
for (NumExamAnnouncement = 0;
|
||||||
NumExamAnnouncement < ExamAnns.NumExaAnns;
|
NumExamAnnouncement < ExamAnns.NumCallsForExams;
|
||||||
NumExamAnnouncement++)
|
NumExamAnnouncement++)
|
||||||
HTM_TxtF ("LstExamAnnouncements.push({ ExaCod: %ld, Year: %u, Month: %u, Day: %u });\n",
|
HTM_TxtF ("LstExamAnnouncements.push({ ExaCod: %ld, Year: %u, Month: %u, Day: %u });\n",
|
||||||
ExamAnns.Lst[NumExamAnnouncement].ExaCod,
|
ExamAnns.Lst[NumExamAnnouncement].ExaCod,
|
||||||
|
@ -590,7 +590,7 @@ static void Lay_WriteScripts (void)
|
||||||
HTM_SCRIPT_End ();
|
HTM_SCRIPT_End ();
|
||||||
|
|
||||||
/***** Free list of exam announcements *****/
|
/***** Free list of exam announcements *****/
|
||||||
ExaAnn_FreeListExamAnns (&ExamAnns);
|
Cfe_FreeListCallsForExams (&ExamAnns);
|
||||||
|
|
||||||
/***** Free list of holidays *****/
|
/***** Free list of holidays *****/
|
||||||
Hld_FreeListHolidays (&Holidays);
|
Hld_FreeListHolidays (&Holidays);
|
||||||
|
|
|
@ -33,11 +33,11 @@
|
||||||
|
|
||||||
#include "swad_action.h"
|
#include "swad_action.h"
|
||||||
#include "swad_box.h"
|
#include "swad_box.h"
|
||||||
|
#include "swad_call_for_exam.h"
|
||||||
#include "swad_config.h"
|
#include "swad_config.h"
|
||||||
#include "swad_config.h"
|
#include "swad_config.h"
|
||||||
#include "swad_database.h"
|
#include "swad_database.h"
|
||||||
#include "swad_enrolment.h"
|
#include "swad_enrolment.h"
|
||||||
#include "swad_exam_announcement.h"
|
|
||||||
#include "swad_figure.h"
|
#include "swad_figure.h"
|
||||||
#include "swad_follow.h"
|
#include "swad_follow.h"
|
||||||
#include "swad_form.h"
|
#include "swad_form.h"
|
||||||
|
@ -85,7 +85,7 @@ const char *Ntf_WSNotifyEvents[Ntf_NUM_NOTIFY_EVENTS] =
|
||||||
/* Assessment tab */
|
/* Assessment tab */
|
||||||
[Ntf_EVENT_ASSIGNMENT ] = "assignment",
|
[Ntf_EVENT_ASSIGNMENT ] = "assignment",
|
||||||
[Ntf_EVENT_SURVEY ] = "survey",
|
[Ntf_EVENT_SURVEY ] = "survey",
|
||||||
[Ntf_EVENT_EXAM_ANNOUNCEMENT] = "examAnnouncement",
|
[Ntf_EVENT_CALL_FOR_EXAM] = "examAnnouncement",
|
||||||
/* Files tab */
|
/* Files tab */
|
||||||
[Ntf_EVENT_DOCUMENT_FILE ] = "documentFile",
|
[Ntf_EVENT_DOCUMENT_FILE ] = "documentFile",
|
||||||
[Ntf_EVENT_TEACHERS_FILE ] = "teachersFile",
|
[Ntf_EVENT_TEACHERS_FILE ] = "teachersFile",
|
||||||
|
@ -123,7 +123,7 @@ static const Act_Action_t Ntf_DefaultActions[Ntf_NUM_NOTIFY_EVENTS] =
|
||||||
/* Assessment tab */
|
/* Assessment tab */
|
||||||
[Ntf_EVENT_ASSIGNMENT ] = ActSeeAsg,
|
[Ntf_EVENT_ASSIGNMENT ] = ActSeeAsg,
|
||||||
[Ntf_EVENT_SURVEY ] = ActSeeAllSvy,
|
[Ntf_EVENT_SURVEY ] = ActSeeAllSvy,
|
||||||
[Ntf_EVENT_EXAM_ANNOUNCEMENT] = ActSeeAllExaAnn,
|
[Ntf_EVENT_CALL_FOR_EXAM] = ActSeeAllExaAnn,
|
||||||
/* Files tab */
|
/* Files tab */
|
||||||
[Ntf_EVENT_DOCUMENT_FILE ] = ActSeeAdmDocCrsGrp,
|
[Ntf_EVENT_DOCUMENT_FILE ] = ActSeeAdmDocCrsGrp,
|
||||||
[Ntf_EVENT_TEACHERS_FILE ] = ActAdmTchCrsGrp,
|
[Ntf_EVENT_TEACHERS_FILE ] = ActAdmTchCrsGrp,
|
||||||
|
@ -166,7 +166,7 @@ static const char *Ntf_ParamNotifMeAboutNotifyEvents[Ntf_NUM_NOTIFY_EVENTS] =
|
||||||
/* Assessment tab */
|
/* Assessment tab */
|
||||||
[Ntf_EVENT_ASSIGNMENT ] = "NotifyNtfEventAssignment",
|
[Ntf_EVENT_ASSIGNMENT ] = "NotifyNtfEventAssignment",
|
||||||
[Ntf_EVENT_SURVEY ] = "NotifyNtfEventSurvey",
|
[Ntf_EVENT_SURVEY ] = "NotifyNtfEventSurvey",
|
||||||
[Ntf_EVENT_EXAM_ANNOUNCEMENT] = "NotifyNtfEventExamAnnouncement",
|
[Ntf_EVENT_CALL_FOR_EXAM] = "NotifyNtfEventExamAnnouncement",
|
||||||
/* Files tab */
|
/* Files tab */
|
||||||
[Ntf_EVENT_DOCUMENT_FILE ] = "NotifyNtfEventDocumentFile",
|
[Ntf_EVENT_DOCUMENT_FILE ] = "NotifyNtfEventDocumentFile",
|
||||||
[Ntf_EVENT_TEACHERS_FILE ] = "NotifyNtfEventTeachersFile",
|
[Ntf_EVENT_TEACHERS_FILE ] = "NotifyNtfEventTeachersFile",
|
||||||
|
@ -205,7 +205,7 @@ static const char *Ntf_ParamEmailMeAboutNotifyEvents[Ntf_NUM_NOTIFY_EVENTS] =
|
||||||
/* Assessment tab */
|
/* Assessment tab */
|
||||||
[Ntf_EVENT_ASSIGNMENT ] = "EmailNtfEventAssignment",
|
[Ntf_EVENT_ASSIGNMENT ] = "EmailNtfEventAssignment",
|
||||||
[Ntf_EVENT_SURVEY ] = "EmailNtfEventSurvey",
|
[Ntf_EVENT_SURVEY ] = "EmailNtfEventSurvey",
|
||||||
[Ntf_EVENT_EXAM_ANNOUNCEMENT] = "EmailNtfEventExamAnnouncement",
|
[Ntf_EVENT_CALL_FOR_EXAM] = "EmailNtfEventExamAnnouncement",
|
||||||
/* Files tab */
|
/* Files tab */
|
||||||
[Ntf_EVENT_DOCUMENT_FILE ] = "EmailNtfEventDocumentFile",
|
[Ntf_EVENT_DOCUMENT_FILE ] = "EmailNtfEventDocumentFile",
|
||||||
[Ntf_EVENT_TEACHERS_FILE ] = "EmailNtfEventTeachersFile",
|
[Ntf_EVENT_TEACHERS_FILE ] = "EmailNtfEventTeachersFile",
|
||||||
|
@ -244,7 +244,7 @@ static const char *Ntf_Icons[Ntf_NUM_NOTIFY_EVENTS] =
|
||||||
/* Assessment tab */
|
/* Assessment tab */
|
||||||
[Ntf_EVENT_ASSIGNMENT ] = "edit.svg",
|
[Ntf_EVENT_ASSIGNMENT ] = "edit.svg",
|
||||||
[Ntf_EVENT_SURVEY ] = "poll.svg",
|
[Ntf_EVENT_SURVEY ] = "poll.svg",
|
||||||
[Ntf_EVENT_EXAM_ANNOUNCEMENT] = "bullhorn.svg",
|
[Ntf_EVENT_CALL_FOR_EXAM] = "bullhorn.svg",
|
||||||
/* Files tab */
|
/* Files tab */
|
||||||
[Ntf_EVENT_DOCUMENT_FILE ] = "file.svg",
|
[Ntf_EVENT_DOCUMENT_FILE ] = "file.svg",
|
||||||
[Ntf_EVENT_TEACHERS_FILE ] = "file.svg",
|
[Ntf_EVENT_TEACHERS_FILE ] = "file.svg",
|
||||||
|
@ -858,8 +858,8 @@ void Ntf_GetNotifSummaryAndContent (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
|
||||||
case Ntf_EVENT_ASSIGNMENT:
|
case Ntf_EVENT_ASSIGNMENT:
|
||||||
Asg_GetNotifAssignment (SummaryStr,ContentStr,Cod,GetContent);
|
Asg_GetNotifAssignment (SummaryStr,ContentStr,Cod,GetContent);
|
||||||
break;
|
break;
|
||||||
case Ntf_EVENT_EXAM_ANNOUNCEMENT:
|
case Ntf_EVENT_CALL_FOR_EXAM:
|
||||||
ExaAnn_GetSummaryAndContentExamAnn (SummaryStr,ContentStr,Cod,GetContent);
|
Cfe_GetSummaryAndContentCallForExam (SummaryStr,ContentStr,Cod,GetContent);
|
||||||
break;
|
break;
|
||||||
case Ntf_EVENT_MARKS_FILE:
|
case Ntf_EVENT_MARKS_FILE:
|
||||||
Mrk_GetNotifMyMarks (SummaryStr,ContentStr,Cod,UsrCod,GetContent);
|
Mrk_GetNotifMyMarks (SummaryStr,ContentStr,Cod,UsrCod,GetContent);
|
||||||
|
@ -1250,7 +1250,7 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
|
||||||
Cod,Cod,Gbl.Usrs.Me.UsrDat.UsrCod,
|
Cod,Cod,Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||||
Cod,Gbl.Usrs.Me.UsrDat.UsrCod);
|
Cod,Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||||
break;
|
break;
|
||||||
case Ntf_EVENT_EXAM_ANNOUNCEMENT:
|
case Ntf_EVENT_CALL_FOR_EXAM:
|
||||||
case Ntf_EVENT_NOTICE:
|
case Ntf_EVENT_NOTICE:
|
||||||
NumRows = DB_QuerySELECT (&mysql_res,"can not get users"
|
NumRows = DB_QuerySELECT (&mysql_res,"can not get users"
|
||||||
" to be notified",
|
" to be notified",
|
||||||
|
@ -1708,7 +1708,7 @@ static void Ntf_SendPendingNotifByEMailToOneUsr (struct UsrData *ToUsrDat,unsign
|
||||||
case Ntf_EVENT_TEACHERS_FILE:
|
case Ntf_EVENT_TEACHERS_FILE:
|
||||||
case Ntf_EVENT_SHARED_FILE:
|
case Ntf_EVENT_SHARED_FILE:
|
||||||
case Ntf_EVENT_ASSIGNMENT:
|
case Ntf_EVENT_ASSIGNMENT:
|
||||||
case Ntf_EVENT_EXAM_ANNOUNCEMENT:
|
case Ntf_EVENT_CALL_FOR_EXAM:
|
||||||
case Ntf_EVENT_MARKS_FILE:
|
case Ntf_EVENT_MARKS_FILE:
|
||||||
case Ntf_EVENT_ENROLMENT_STD:
|
case Ntf_EVENT_ENROLMENT_STD:
|
||||||
case Ntf_EVENT_ENROLMENT_NET:
|
case Ntf_EVENT_ENROLMENT_NET:
|
||||||
|
|
|
@ -69,7 +69,7 @@ typedef enum // TODO: Change numbers (also in database)!!!!!!!!!!!!!!
|
||||||
/* Assessment tab */
|
/* Assessment tab */
|
||||||
Ntf_EVENT_ASSIGNMENT = 4,
|
Ntf_EVENT_ASSIGNMENT = 4,
|
||||||
Ntf_EVENT_SURVEY = 19,
|
Ntf_EVENT_SURVEY = 19,
|
||||||
Ntf_EVENT_EXAM_ANNOUNCEMENT = 5,
|
Ntf_EVENT_CALL_FOR_EXAM = 5,
|
||||||
/* Files tab */
|
/* Files tab */
|
||||||
Ntf_EVENT_DOCUMENT_FILE = 1,
|
Ntf_EVENT_DOCUMENT_FILE = 1,
|
||||||
Ntf_EVENT_TEACHERS_FILE = 2,
|
Ntf_EVENT_TEACHERS_FILE = 2,
|
||||||
|
|
827
swad_text.c
827
swad_text.c
|
@ -1761,48 +1761,6 @@ const char *Txt_Announcements =
|
||||||
"Anúncios";
|
"Anúncios";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Announcement_of_exam_removed =
|
|
||||||
#if L==1 // ca
|
|
||||||
"Convocatòria d'examen eliminada.";
|
|
||||||
#elif L==2 // de
|
|
||||||
"Aufruf zur Prüfung entfernt.";
|
|
||||||
#elif L==3 // en
|
|
||||||
"Announcement of exam removed.";
|
|
||||||
#elif L==4 // es
|
|
||||||
"Convocatoria de examen eliminada.";
|
|
||||||
#elif L==5 // fr
|
|
||||||
"Convocation pour l'examen supprimé.";
|
|
||||||
#elif L==6 // gn
|
|
||||||
"Convocatoria de examen eliminada."; // Okoteve traducción
|
|
||||||
#elif L==7 // it
|
|
||||||
"Appello d'esame rimosso.";
|
|
||||||
#elif L==8 // pl
|
|
||||||
"Ogloszenie egzamin usuniete.";
|
|
||||||
#elif L==9 // pt
|
|
||||||
"Chamada para exame removida.";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_Announcements_of_exams =
|
|
||||||
#if L==1 // ca
|
|
||||||
"Convocatòries d'exàmens";
|
|
||||||
#elif L==2 // de
|
|
||||||
"Aufrufe für Prüfung";
|
|
||||||
#elif L==3 // en
|
|
||||||
"Announcements of exams";
|
|
||||||
#elif L==4 // es
|
|
||||||
"Convocatorias de exámenes";
|
|
||||||
#elif L==5 // fr
|
|
||||||
"Convocations à examens";
|
|
||||||
#elif L==6 // gn
|
|
||||||
"Convocatorias de exámenes"; // Okoteve traducción
|
|
||||||
#elif L==7 // it
|
|
||||||
"Appelli d'esame";
|
|
||||||
#elif L==8 // pl
|
|
||||||
"Ogloszenia egzaminów";
|
|
||||||
#elif L==9 // pt
|
|
||||||
"Chamadas para exames";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_Another_building =
|
const char *Txt_Another_building =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Un altre edifici";
|
"Un altre edifici";
|
||||||
|
@ -3492,6 +3450,321 @@ const char *Txt_Calendar =
|
||||||
"Calendário";
|
"Calendário";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_CALL_FOR_EXAM =
|
||||||
|
#if L==1 // ca
|
||||||
|
"CONVOCATÒRIA D'EXAMEN";
|
||||||
|
#elif L==2 // de
|
||||||
|
"PRÜFUNGSAUFRUF";
|
||||||
|
#elif L==3 // en
|
||||||
|
"CALL FOR EXAM";
|
||||||
|
#elif L==4 // es
|
||||||
|
"CONVOCATORIA DE EXAMEN";
|
||||||
|
#elif L==5 // fr
|
||||||
|
"CONVOCATION À UN EXAMEN";
|
||||||
|
#elif L==6 // gn
|
||||||
|
"CONVOCATORIA DE EXAMEN"; // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"APPELLO D'ESAME";
|
||||||
|
#elif L==8 // pl
|
||||||
|
"OGLOSZENIE egzaminu";
|
||||||
|
#elif L==9 // pt
|
||||||
|
"CHAMADA DE EXAME";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_CALL_FOR_EXAM_Approximate_duration =
|
||||||
|
#if L==1 // ca
|
||||||
|
"Duración aproximada"; // Necessita traduccio
|
||||||
|
#elif L==2 // de
|
||||||
|
"Voraussichtliche Dauer";
|
||||||
|
#elif L==3 // en
|
||||||
|
"Approximate duration";
|
||||||
|
#elif L==4 // es
|
||||||
|
"Duración aproximada";
|
||||||
|
#elif L==5 // fr
|
||||||
|
"Durée approximative";
|
||||||
|
#elif L==6 // gn
|
||||||
|
"Duración aproximada"; // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"Durata approssimativa";
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Przyblizony czas trwania";
|
||||||
|
#elif L==9 // pt
|
||||||
|
"Duração aproximada";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_CALL_FOR_EXAM_Course =
|
||||||
|
#if L==1 // ca
|
||||||
|
"Assignatura";
|
||||||
|
#elif L==2 // de
|
||||||
|
"Kurs";
|
||||||
|
#elif L==3 // en
|
||||||
|
"Course";
|
||||||
|
#elif L==4 // es
|
||||||
|
"Asignatura";
|
||||||
|
#elif L==5 // fr
|
||||||
|
"Matière";
|
||||||
|
#elif L==6 // gn
|
||||||
|
"Mbo'esyry";
|
||||||
|
#elif L==7 // it
|
||||||
|
"Corso";
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Kurs";
|
||||||
|
#elif L==9 // pt
|
||||||
|
"Disciplina";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_CALL_FOR_EXAM_Documentation_required =
|
||||||
|
#if L==1 // ca
|
||||||
|
"Documentación exigida"; // Necessita traduccio
|
||||||
|
#elif L==2 // de
|
||||||
|
"Ausweis erforderlich";
|
||||||
|
#elif L==3 // en
|
||||||
|
"ID required";
|
||||||
|
#elif L==4 // es
|
||||||
|
"Documentación exigida";
|
||||||
|
#elif L==5 // fr
|
||||||
|
"Pièce d'identité obligatoire";
|
||||||
|
#elif L==6 // gn
|
||||||
|
"Documentación exigida"; // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"Documentazione richiesta";
|
||||||
|
#elif L==8 // pl
|
||||||
|
"ID wymagane";
|
||||||
|
#elif L==9 // pt
|
||||||
|
"Documentação necessária";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_CALL_FOR_EXAM_Exam_date =
|
||||||
|
#if L==1 // ca
|
||||||
|
"Fecha del examen"; // Necessita traduccio
|
||||||
|
#elif L==2 // de
|
||||||
|
"Prüfungsdatum";
|
||||||
|
#elif L==3 // en
|
||||||
|
"Exam date";
|
||||||
|
#elif L==4 // es
|
||||||
|
"Fecha del examen";
|
||||||
|
#elif L==5 // fr
|
||||||
|
"Date de l'examen";
|
||||||
|
#elif L==6 // gn
|
||||||
|
"Fecha del examen"; // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"Data d'esame";
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Termin egzaminu";
|
||||||
|
#elif L==9 // pt
|
||||||
|
"Exame data";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_CALL_FOR_EXAM_Material_allowed =
|
||||||
|
#if L==1 // ca
|
||||||
|
"Material permitido"; // Necessita traduccio
|
||||||
|
#elif L==2 // de
|
||||||
|
"Erlaubte Unterlagen";
|
||||||
|
#elif L==3 // en
|
||||||
|
"Material allowed";
|
||||||
|
#elif L==4 // es
|
||||||
|
"Material permitido";
|
||||||
|
#elif L==5 // fr
|
||||||
|
"Matériel autorisé";
|
||||||
|
#elif L==6 // gn
|
||||||
|
"Material permitido"; // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"Materiale permesso";
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Material dozwolone";
|
||||||
|
#elif L==9 // pt
|
||||||
|
"Material autorizado";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_CALL_FOR_EXAM_Material_required =
|
||||||
|
#if L==1 // ca
|
||||||
|
"Material obligatorio"; // Necessita traduccio
|
||||||
|
#elif L==2 // de
|
||||||
|
"Erforderliche Unterlagen";
|
||||||
|
#elif L==3 // en
|
||||||
|
"Material required";
|
||||||
|
#elif L==4 // es
|
||||||
|
"Material obligatorio";
|
||||||
|
#elif L==5 // fr
|
||||||
|
"Matériel nécessaire";
|
||||||
|
#elif L==6 // gn
|
||||||
|
"Material obligatorio"; // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"Materiale richiesto";
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Materialy niezbedne do";
|
||||||
|
#elif L==9 // pt
|
||||||
|
"Material obrigatório";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_CALL_FOR_EXAM_Mode =
|
||||||
|
#if L==1 // ca
|
||||||
|
"Modalidad<br />(escrito, oral,…)"; // Necessita traduccio
|
||||||
|
#elif L==2 // de
|
||||||
|
"Prüfungsart<br />(schriftlich, mündlich,…)";
|
||||||
|
#elif L==3 // en
|
||||||
|
"Mode<br />(written, oral,…)";
|
||||||
|
#elif L==4 // es
|
||||||
|
"Modalidad<br />(escrito, oral,…)";
|
||||||
|
#elif L==5 // fr
|
||||||
|
"Mode<br />(écrit, oral,…)";
|
||||||
|
#elif L==6 // gn
|
||||||
|
"Modalidad<br />(escrito, oral,…)"; // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"Modalità<br />(scritto, orale,…)";
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Tryb<br />(pisemnej, ustnej,…)";
|
||||||
|
#elif L==9 // pt
|
||||||
|
"Modalidade<br />(escrita, oral,…)";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_CALL_FOR_EXAM_Other_information =
|
||||||
|
#if L==1 // ca
|
||||||
|
"Otras indicaciones"; // Necessita traduccio
|
||||||
|
#elif L==2 // de
|
||||||
|
"Weitere Informationen";
|
||||||
|
#elif L==3 // en
|
||||||
|
"Other information";
|
||||||
|
#elif L==4 // es
|
||||||
|
"Otras indicaciones";
|
||||||
|
#elif L==5 // fr
|
||||||
|
"Autres informations";
|
||||||
|
#elif L==6 // gn
|
||||||
|
"Otras indicaciones"; // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"Altre informazioni";
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Inne informacje";
|
||||||
|
#elif L==9 // pt
|
||||||
|
"Outras informações";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_CALL_FOR_EXAM_Place_of_exam =
|
||||||
|
#if L==1 // ca
|
||||||
|
"Lugar de realización"; // Necessita traduccio
|
||||||
|
#elif L==2 // de
|
||||||
|
"Prüfungsort";
|
||||||
|
#elif L==3 // en
|
||||||
|
"Place of exam";
|
||||||
|
#elif L==4 // es
|
||||||
|
"Lugar de realización";
|
||||||
|
#elif L==5 // fr
|
||||||
|
"Lieu de l'examen";
|
||||||
|
#elif L==6 // gn
|
||||||
|
"Lugar de realización"; // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"Luogo d'esame";
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Miejsce egzaminu";
|
||||||
|
#elif L==9 // pt
|
||||||
|
"Local do exame";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_CALL_FOR_EXAM_Session =
|
||||||
|
#if L==1 // ca
|
||||||
|
"Convocatoria<br />(junio, septiembre,…)"; // Necessita traduccio
|
||||||
|
#elif L==2 // de
|
||||||
|
"Einberufung<br />(Juni, September,…)";
|
||||||
|
#elif L==3 // en
|
||||||
|
"Session<br />(june, september,…)";
|
||||||
|
#elif L==4 // es
|
||||||
|
"Convocatoria<br />(junio, septiembre,…)";
|
||||||
|
#elif L==5 // fr
|
||||||
|
"Période<br />(juin, septembre,…)";
|
||||||
|
#elif L==6 // gn
|
||||||
|
"Convocatoria<br />(junio, septiembre,…)"; // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"Sessione<br />(giugno, settembre,…)";
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Sesja<br />(czerwiec, wrzesien,…)";
|
||||||
|
#elif L==9 // pt
|
||||||
|
"Período<br />(junho, setembro,…)";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_CALL_FOR_EXAM_Start_time =
|
||||||
|
#if L==1 // ca
|
||||||
|
"Hora de inicio"; // Necessita traduccio
|
||||||
|
#elif L==2 // de
|
||||||
|
"Beginn um";
|
||||||
|
#elif L==3 // en
|
||||||
|
"Start time";
|
||||||
|
#elif L==4 // es
|
||||||
|
"Hora de inicio";
|
||||||
|
#elif L==5 // fr
|
||||||
|
"Heure de début";
|
||||||
|
#elif L==6 // gn
|
||||||
|
"Hora de inicio"; // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"Ora d'inizio";
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Czas rozpoczecia";
|
||||||
|
#elif L==9 // pt
|
||||||
|
"Hora de início";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_CALL_FOR_EXAM_Structure_of_the_exam =
|
||||||
|
#if L==1 // ca
|
||||||
|
"Estructura del examen"; // Necessita traduccio
|
||||||
|
#elif L==2 // de
|
||||||
|
"Prüfungsstruktur";
|
||||||
|
#elif L==3 // en
|
||||||
|
"Structure of the exam";
|
||||||
|
#elif L==4 // es
|
||||||
|
"Estructura del examen";
|
||||||
|
#elif L==5 // fr
|
||||||
|
"Structure de l'examen";
|
||||||
|
#elif L==6 // gn
|
||||||
|
"Estructura del examen"; // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"Struttura d'esame";
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Struktura egzaminu";
|
||||||
|
#elif L==9 // pt
|
||||||
|
"Estrutura do exame";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_CALL_FOR_EXAM_Year_or_semester = // 1, 2, 3..., not 1984, 2038...
|
||||||
|
#if L==1 // ca
|
||||||
|
"Any o semestre";
|
||||||
|
#elif L==2 // de
|
||||||
|
"Jahr oder Semester";
|
||||||
|
#elif L==3 // en
|
||||||
|
"Year or semester";
|
||||||
|
#elif L==4 // es
|
||||||
|
"Año o semestre";
|
||||||
|
#elif L==5 // fr
|
||||||
|
"Année ou semestre";
|
||||||
|
#elif L==6 // gn
|
||||||
|
"Año o semestre"; // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"Anno o semestre";
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Rok lub semestr";
|
||||||
|
#elif L==9 // pt
|
||||||
|
"Ano ou semestre";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_Call_for_exam_removed =
|
||||||
|
#if L==1 // ca
|
||||||
|
"Convocatòria d'examen eliminada.";
|
||||||
|
#elif L==2 // de
|
||||||
|
"Aufruf zur Prüfung entfernt.";
|
||||||
|
#elif L==3 // en
|
||||||
|
"Call for exam removed.";
|
||||||
|
#elif L==4 // es
|
||||||
|
"Convocatoria de examen eliminada.";
|
||||||
|
#elif L==5 // fr
|
||||||
|
"Convocation pour l'examen supprimé.";
|
||||||
|
#elif L==6 // gn
|
||||||
|
"Convocatoria de examen eliminada."; // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"Appello d'esame rimosso.";
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Ogloszenie egzamin usuniete.";
|
||||||
|
#elif L==9 // pt
|
||||||
|
"Chamada para exame removida.";
|
||||||
|
#endif
|
||||||
|
|
||||||
const char *Txt_Call_the_roll =
|
const char *Txt_Call_the_roll =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Passar llista";
|
"Passar llista";
|
||||||
|
@ -3513,6 +3786,27 @@ const char *Txt_Call_the_roll =
|
||||||
"Lista de presença";
|
"Lista de presença";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_Calls_for_exams =
|
||||||
|
#if L==1 // ca
|
||||||
|
"Convocatòries d'exàmens";
|
||||||
|
#elif L==2 // de
|
||||||
|
"Aufrufe für Prüfung";
|
||||||
|
#elif L==3 // en
|
||||||
|
"Calls for exams";
|
||||||
|
#elif L==4 // es
|
||||||
|
"Convocatorias de exámenes";
|
||||||
|
#elif L==5 // fr
|
||||||
|
"Convocations à examens";
|
||||||
|
#elif L==6 // gn
|
||||||
|
"Convocatorias de exámenes"; // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"Appelli d'esame";
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Ogloszenia egzaminów";
|
||||||
|
#elif L==9 // pt
|
||||||
|
"Chamadas para exames";
|
||||||
|
#endif
|
||||||
|
|
||||||
const char *Txt_Can_not_create_the_folder_X_because_it_would_exceed_the_disk_quota = // Warning: it is very important to include %s in the following sentences
|
const char *Txt_Can_not_create_the_folder_X_because_it_would_exceed_the_disk_quota = // Warning: it is very important to include %s in the following sentences
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"No s'ha creat la carpeta <strong>%s</strong>"
|
"No s'ha creat la carpeta <strong>%s</strong>"
|
||||||
|
@ -5094,7 +5388,6 @@ const char *Txt_Could_not_detect_any_face_in_front_position_ =
|
||||||
"Não foi possível detectar nenhum rosto na posição frontal.";
|
"Não foi possível detectar nenhum rosto na posição frontal.";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
const char *Txt_Countdown =
|
const char *Txt_Countdown =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Compte enrere";
|
"Compte enrere";
|
||||||
|
@ -6553,27 +6846,6 @@ const char *Txt_Create_ZIP_file =
|
||||||
"Criar arquivo ZIP";
|
"Criar arquivo ZIP";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Created_new_announcement_of_exam =
|
|
||||||
#if L==1 // ca
|
|
||||||
"Creada nueva convocatoria de examen."; // Necessita traduccio
|
|
||||||
#elif L==2 // de
|
|
||||||
"Neuer Aufruf zur Prüfung erstellt.";
|
|
||||||
#elif L==3 // en
|
|
||||||
"Created new announcement of exam.";
|
|
||||||
#elif L==4 // es
|
|
||||||
"Creada nueva convocatoria de examen.";
|
|
||||||
#elif L==5 // fr
|
|
||||||
"Créé nouvelle convocation à un examen.";
|
|
||||||
#elif L==6 // gn
|
|
||||||
"Creada nueva convocatoria de examen."; // Okoteve traducción
|
|
||||||
#elif L==7 // it
|
|
||||||
"Creato nuovo appello d'esame.";
|
|
||||||
#elif L==8 // pl
|
|
||||||
"Utworzono nowe ogloszenie egzamin.";
|
|
||||||
#elif L==9 // pt
|
|
||||||
"Criado nova chamada para exame.";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_Created_new_assignment_X = // Warning: it is very important to include %s in the following sentences
|
const char *Txt_Created_new_assignment_X = // Warning: it is very important to include %s in the following sentences
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Creada nova activitat <strong>%s</strong>.";
|
"Creada nova activitat <strong>%s</strong>.";
|
||||||
|
@ -6637,6 +6909,27 @@ const char *Txt_Created_new_building_X = // Warning: it is very important to inc
|
||||||
"Criado novo edifício <strong>%s</strong>.";
|
"Criado novo edifício <strong>%s</strong>.";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_Created_new_call_for_exam =
|
||||||
|
#if L==1 // ca
|
||||||
|
"Creada nueva convocatoria de examen."; // Necessita traduccio
|
||||||
|
#elif L==2 // de
|
||||||
|
"Neuer Aufruf zur Prüfung erstellt.";
|
||||||
|
#elif L==3 // en
|
||||||
|
"Created new call for exam.";
|
||||||
|
#elif L==4 // es
|
||||||
|
"Creada nueva convocatoria de examen.";
|
||||||
|
#elif L==5 // fr
|
||||||
|
"Créé nouvelle convocation à un examen.";
|
||||||
|
#elif L==6 // gn
|
||||||
|
"Creada nueva convocatoria de examen."; // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"Creato nuovo appello d'esame.";
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Utworzono nowe ogloszenie egzamin.";
|
||||||
|
#elif L==9 // pt
|
||||||
|
"Criado nova chamada para exame.";
|
||||||
|
#endif
|
||||||
|
|
||||||
const char *Txt_Created_new_center_X = // Warning: it is very important to include %s in the following sentences
|
const char *Txt_Created_new_center_X = // Warning: it is very important to include %s in the following sentences
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Creat nou center <strong>%s</strong>."; // Necessita traduccio
|
"Creat nou center <strong>%s</strong>."; // Necessita traduccio
|
||||||
|
@ -9248,13 +9541,13 @@ const char *Txt_Do_you_really_want_to_remove_the_folder_X = // Warning: it is ve
|
||||||
" o diretório <strong>%s</strong> e todo o seu conteúdo?";
|
" o diretório <strong>%s</strong> e todo o seu conteúdo?";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Do_you_really_want_to_remove_the_following_announcement_of_exam =
|
const char *Txt_Do_you_really_want_to_remove_the_following_call_for_exam =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"De veres voleu eliminar la següent convocatòria d'examen?";
|
"De veres voleu eliminar la següent convocatòria d'examen?";
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
"Wollen Sie wirklich, um die folgende Aufruf für Prüfung?";
|
"Wollen Sie wirklich, um die folgende Aufruf für Prüfung?";
|
||||||
#elif L==3 // en
|
#elif L==3 // en
|
||||||
"Do you really want to remove the following announcement of exam?";
|
"Do you really want to remove the following call for exam?";
|
||||||
#elif L==4 // es
|
#elif L==4 // es
|
||||||
"¿Realmente desea eliminar la siguiente convocatoria de examen?";
|
"¿Realmente desea eliminar la siguiente convocatoria de examen?";
|
||||||
#elif L==5 // fr
|
#elif L==5 // fr
|
||||||
|
@ -11731,300 +12024,6 @@ const char *Txt_Exam =
|
||||||
"Exame";
|
"Exame";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_EXAM_ANNOUNCEMENT =
|
|
||||||
#if L==1 // ca
|
|
||||||
"CONVOCATÒRIA D'EXAMEN";
|
|
||||||
#elif L==2 // de
|
|
||||||
"PRÜFUNGSAUFRUF";
|
|
||||||
#elif L==3 // en
|
|
||||||
"ANNOUNCEMENT OF EXAM";
|
|
||||||
#elif L==4 // es
|
|
||||||
"CONVOCATORIA DE EXAMEN";
|
|
||||||
#elif L==5 // fr
|
|
||||||
"CONVOCATION À UN EXAMEN";
|
|
||||||
#elif L==6 // gn
|
|
||||||
"CONVOCATORIA DE EXAMEN"; // Okoteve traducción
|
|
||||||
#elif L==7 // it
|
|
||||||
"APPELLO D'ESAME";
|
|
||||||
#elif L==8 // pl
|
|
||||||
"OGLOSZENIE egzaminu";
|
|
||||||
#elif L==9 // pt
|
|
||||||
"CHAMADA DE EXAME";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_EXAM_ANNOUNCEMENT_Approximate_duration =
|
|
||||||
#if L==1 // ca
|
|
||||||
"Duración aproximada"; // Necessita traduccio
|
|
||||||
#elif L==2 // de
|
|
||||||
"Voraussichtliche Dauer";
|
|
||||||
#elif L==3 // en
|
|
||||||
"Approximate duration";
|
|
||||||
#elif L==4 // es
|
|
||||||
"Duración aproximada";
|
|
||||||
#elif L==5 // fr
|
|
||||||
"Durée approximative";
|
|
||||||
#elif L==6 // gn
|
|
||||||
"Duración aproximada"; // Okoteve traducción
|
|
||||||
#elif L==7 // it
|
|
||||||
"Durata approssimativa";
|
|
||||||
#elif L==8 // pl
|
|
||||||
"Przyblizony czas trwania";
|
|
||||||
#elif L==9 // pt
|
|
||||||
"Duração aproximada";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_EXAM_ANNOUNCEMENT_Course =
|
|
||||||
#if L==1 // ca
|
|
||||||
"Assignatura";
|
|
||||||
#elif L==2 // de
|
|
||||||
"Kurs";
|
|
||||||
#elif L==3 // en
|
|
||||||
"Course";
|
|
||||||
#elif L==4 // es
|
|
||||||
"Asignatura";
|
|
||||||
#elif L==5 // fr
|
|
||||||
"Matière";
|
|
||||||
#elif L==6 // gn
|
|
||||||
"Mbo'esyry";
|
|
||||||
#elif L==7 // it
|
|
||||||
"Corso";
|
|
||||||
#elif L==8 // pl
|
|
||||||
"Kurs";
|
|
||||||
#elif L==9 // pt
|
|
||||||
"Disciplina";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_EXAM_ANNOUNCEMENT_Documentation_required =
|
|
||||||
#if L==1 // ca
|
|
||||||
"Documentación exigida"; // Necessita traduccio
|
|
||||||
#elif L==2 // de
|
|
||||||
"Ausweis erforderlich";
|
|
||||||
#elif L==3 // en
|
|
||||||
"ID required";
|
|
||||||
#elif L==4 // es
|
|
||||||
"Documentación exigida";
|
|
||||||
#elif L==5 // fr
|
|
||||||
"Pièce d'identité obligatoire";
|
|
||||||
#elif L==6 // gn
|
|
||||||
"Documentación exigida"; // Okoteve traducción
|
|
||||||
#elif L==7 // it
|
|
||||||
"Documentazione richiesta";
|
|
||||||
#elif L==8 // pl
|
|
||||||
"ID wymagane";
|
|
||||||
#elif L==9 // pt
|
|
||||||
"Documentação necessária";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_EXAM_ANNOUNCEMENT_Exam_date =
|
|
||||||
#if L==1 // ca
|
|
||||||
"Fecha del examen"; // Necessita traduccio
|
|
||||||
#elif L==2 // de
|
|
||||||
"Prüfungsdatum";
|
|
||||||
#elif L==3 // en
|
|
||||||
"Exam date";
|
|
||||||
#elif L==4 // es
|
|
||||||
"Fecha del examen";
|
|
||||||
#elif L==5 // fr
|
|
||||||
"Date de l'examen";
|
|
||||||
#elif L==6 // gn
|
|
||||||
"Fecha del examen"; // Okoteve traducción
|
|
||||||
#elif L==7 // it
|
|
||||||
"Data d'esame";
|
|
||||||
#elif L==8 // pl
|
|
||||||
"Termin egzaminu";
|
|
||||||
#elif L==9 // pt
|
|
||||||
"Exame data";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_EXAM_ANNOUNCEMENT_Material_allowed =
|
|
||||||
#if L==1 // ca
|
|
||||||
"Material permitido"; // Necessita traduccio
|
|
||||||
#elif L==2 // de
|
|
||||||
"Erlaubte Unterlagen";
|
|
||||||
#elif L==3 // en
|
|
||||||
"Material allowed";
|
|
||||||
#elif L==4 // es
|
|
||||||
"Material permitido";
|
|
||||||
#elif L==5 // fr
|
|
||||||
"Matériel autorisé";
|
|
||||||
#elif L==6 // gn
|
|
||||||
"Material permitido"; // Okoteve traducción
|
|
||||||
#elif L==7 // it
|
|
||||||
"Materiale permesso";
|
|
||||||
#elif L==8 // pl
|
|
||||||
"Material dozwolone";
|
|
||||||
#elif L==9 // pt
|
|
||||||
"Material autorizado";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_EXAM_ANNOUNCEMENT_Material_required =
|
|
||||||
#if L==1 // ca
|
|
||||||
"Material obligatorio"; // Necessita traduccio
|
|
||||||
#elif L==2 // de
|
|
||||||
"Erforderliche Unterlagen";
|
|
||||||
#elif L==3 // en
|
|
||||||
"Material required";
|
|
||||||
#elif L==4 // es
|
|
||||||
"Material obligatorio";
|
|
||||||
#elif L==5 // fr
|
|
||||||
"Matériel nécessaire";
|
|
||||||
#elif L==6 // gn
|
|
||||||
"Material obligatorio"; // Okoteve traducción
|
|
||||||
#elif L==7 // it
|
|
||||||
"Materiale richiesto";
|
|
||||||
#elif L==8 // pl
|
|
||||||
"Materialy niezbedne do";
|
|
||||||
#elif L==9 // pt
|
|
||||||
"Material obrigatório";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_EXAM_ANNOUNCEMENT_Mode =
|
|
||||||
#if L==1 // ca
|
|
||||||
"Modalidad<br />(escrito, oral,…)"; // Necessita traduccio
|
|
||||||
#elif L==2 // de
|
|
||||||
"Prüfungsart<br />(schriftlich, mündlich,…)";
|
|
||||||
#elif L==3 // en
|
|
||||||
"Mode<br />(written, oral,…)";
|
|
||||||
#elif L==4 // es
|
|
||||||
"Modalidad<br />(escrito, oral,…)";
|
|
||||||
#elif L==5 // fr
|
|
||||||
"Mode<br />(écrit, oral,…)";
|
|
||||||
#elif L==6 // gn
|
|
||||||
"Modalidad<br />(escrito, oral,…)"; // Okoteve traducción
|
|
||||||
#elif L==7 // it
|
|
||||||
"Modalità<br />(scritto, orale,…)";
|
|
||||||
#elif L==8 // pl
|
|
||||||
"Tryb<br />(pisemnej, ustnej,…)";
|
|
||||||
#elif L==9 // pt
|
|
||||||
"Modalidade<br />(escrita, oral,…)";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_EXAM_ANNOUNCEMENT_Other_information =
|
|
||||||
#if L==1 // ca
|
|
||||||
"Otras indicaciones"; // Necessita traduccio
|
|
||||||
#elif L==2 // de
|
|
||||||
"Weitere Informationen";
|
|
||||||
#elif L==3 // en
|
|
||||||
"Other information";
|
|
||||||
#elif L==4 // es
|
|
||||||
"Otras indicaciones";
|
|
||||||
#elif L==5 // fr
|
|
||||||
"Autres informations";
|
|
||||||
#elif L==6 // gn
|
|
||||||
"Otras indicaciones"; // Okoteve traducción
|
|
||||||
#elif L==7 // it
|
|
||||||
"Altre informazioni";
|
|
||||||
#elif L==8 // pl
|
|
||||||
"Inne informacje";
|
|
||||||
#elif L==9 // pt
|
|
||||||
"Outras informações";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_EXAM_ANNOUNCEMENT_Place_of_exam =
|
|
||||||
#if L==1 // ca
|
|
||||||
"Lugar de realización"; // Necessita traduccio
|
|
||||||
#elif L==2 // de
|
|
||||||
"Prüfungsort";
|
|
||||||
#elif L==3 // en
|
|
||||||
"Place of exam";
|
|
||||||
#elif L==4 // es
|
|
||||||
"Lugar de realización";
|
|
||||||
#elif L==5 // fr
|
|
||||||
"Lieu de l'examen";
|
|
||||||
#elif L==6 // gn
|
|
||||||
"Lugar de realización"; // Okoteve traducción
|
|
||||||
#elif L==7 // it
|
|
||||||
"Luogo d'esame";
|
|
||||||
#elif L==8 // pl
|
|
||||||
"Miejsce egzaminu";
|
|
||||||
#elif L==9 // pt
|
|
||||||
"Local do exame";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_EXAM_ANNOUNCEMENT_Session =
|
|
||||||
#if L==1 // ca
|
|
||||||
"Convocatoria<br />(junio, septiembre,…)"; // Necessita traduccio
|
|
||||||
#elif L==2 // de
|
|
||||||
"Einberufung<br />(Juni, September,…)";
|
|
||||||
#elif L==3 // en
|
|
||||||
"Session<br />(june, september,…)";
|
|
||||||
#elif L==4 // es
|
|
||||||
"Convocatoria<br />(junio, septiembre,…)";
|
|
||||||
#elif L==5 // fr
|
|
||||||
"Période<br />(juin, septembre,…)";
|
|
||||||
#elif L==6 // gn
|
|
||||||
"Convocatoria<br />(junio, septiembre,…)"; // Okoteve traducción
|
|
||||||
#elif L==7 // it
|
|
||||||
"Sessione<br />(giugno, settembre,…)";
|
|
||||||
#elif L==8 // pl
|
|
||||||
"Sesja<br />(czerwiec, wrzesien,…)";
|
|
||||||
#elif L==9 // pt
|
|
||||||
"Período<br />(junho, setembro,…)";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_EXAM_ANNOUNCEMENT_Start_time =
|
|
||||||
#if L==1 // ca
|
|
||||||
"Hora de inicio"; // Necessita traduccio
|
|
||||||
#elif L==2 // de
|
|
||||||
"Beginn um";
|
|
||||||
#elif L==3 // en
|
|
||||||
"Start time";
|
|
||||||
#elif L==4 // es
|
|
||||||
"Hora de inicio";
|
|
||||||
#elif L==5 // fr
|
|
||||||
"Heure de début";
|
|
||||||
#elif L==6 // gn
|
|
||||||
"Hora de inicio"; // Okoteve traducción
|
|
||||||
#elif L==7 // it
|
|
||||||
"Ora d'inizio";
|
|
||||||
#elif L==8 // pl
|
|
||||||
"Czas rozpoczecia";
|
|
||||||
#elif L==9 // pt
|
|
||||||
"Hora de início";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_EXAM_ANNOUNCEMENT_Structure_of_the_exam =
|
|
||||||
#if L==1 // ca
|
|
||||||
"Estructura del examen"; // Necessita traduccio
|
|
||||||
#elif L==2 // de
|
|
||||||
"Prüfungsstruktur";
|
|
||||||
#elif L==3 // en
|
|
||||||
"Structure of the exam";
|
|
||||||
#elif L==4 // es
|
|
||||||
"Estructura del examen";
|
|
||||||
#elif L==5 // fr
|
|
||||||
"Structure de l'examen";
|
|
||||||
#elif L==6 // gn
|
|
||||||
"Estructura del examen"; // Okoteve traducción
|
|
||||||
#elif L==7 // it
|
|
||||||
"Struttura d'esame";
|
|
||||||
#elif L==8 // pl
|
|
||||||
"Struktura egzaminu";
|
|
||||||
#elif L==9 // pt
|
|
||||||
"Estrutura do exame";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_EXAM_ANNOUNCEMENT_Year_or_semester = // 1, 2, 3..., not 1984, 2038...
|
|
||||||
#if L==1 // ca
|
|
||||||
"Any o semestre";
|
|
||||||
#elif L==2 // de
|
|
||||||
"Jahr oder Semester";
|
|
||||||
#elif L==3 // en
|
|
||||||
"Year or semester";
|
|
||||||
#elif L==4 // es
|
|
||||||
"Año o semestre";
|
|
||||||
#elif L==5 // fr
|
|
||||||
"Année ou semestre";
|
|
||||||
#elif L==6 // gn
|
|
||||||
"Año o semestre"; // Okoteve traducción
|
|
||||||
#elif L==7 // it
|
|
||||||
"Anno o semestre";
|
|
||||||
#elif L==8 // pl
|
|
||||||
"Rok lub semestr";
|
|
||||||
#elif L==9 // pt
|
|
||||||
"Ano ou semestre";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_EXAM_LOG_ACTIONS[ExaLog_NUM_ACTIONS] =
|
const char *Txt_EXAM_LOG_ACTIONS[ExaLog_NUM_ACTIONS] =
|
||||||
{
|
{
|
||||||
[ExaLog_UNKNOWN_ACTION] =
|
[ExaLog_UNKNOWN_ACTION] =
|
||||||
|
@ -18567,13 +18566,13 @@ const char *Txt_Link_X_removed = // Warning: it is very important to include %s
|
||||||
"Ligação <strong>%s</strong> removida.";
|
"Ligação <strong>%s</strong> removida.";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Link_to_announcement_of_exam =
|
const char *Txt_Link_to_call_for_exam =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Enllaç a convocatòria d'examen";
|
"Enllaç a convocatòria d'examen";
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
"Link zu Aufruf für Prüfung";
|
"Link zu Aufruf für Prüfung";
|
||||||
#elif L==3 // en
|
#elif L==3 // en
|
||||||
"Link to announcement of exam";
|
"Link to call for exam";
|
||||||
#elif L==4 // es
|
#elif L==4 // es
|
||||||
"Enlace a convocatoria de examen";
|
"Enlace a convocatoria de examen";
|
||||||
#elif L==5 // fr
|
#elif L==5 // fr
|
||||||
|
@ -22282,7 +22281,7 @@ const char *Txt_MENU_SUBTITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
"Prüfungsaufruf"
|
"Prüfungsaufruf"
|
||||||
#elif L==3 // en
|
#elif L==3 // en
|
||||||
"Announcements of exams"
|
"Calls for exams"
|
||||||
#elif L==4 // es
|
#elif L==4 // es
|
||||||
"Listado de convocatorias de exámenes de esta asignatura"
|
"Listado de convocatorias de exámenes de esta asignatura"
|
||||||
#elif L==5 // fr
|
#elif L==5 // fr
|
||||||
|
@ -25124,7 +25123,7 @@ const char *Txt_New_announcement =
|
||||||
"Novo anúncio";
|
"Novo anúncio";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_New_announcement_OF_EXAM =
|
const char *Txt_New_call_FOR_EXAM =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Nova convocatòria";
|
"Nova convocatòria";
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
|
@ -26153,27 +26152,6 @@ const char *Txt_No_announcements =
|
||||||
"Não há anúncios";
|
"Não há anúncios";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_No_announcements_of_exams_of_X = // Warning: it is very important to include %s in the following sentences
|
|
||||||
#if L==1 // ca
|
|
||||||
"No hay convocatorias de examen de <strong>%s</strong>."; // Necessita traduccio
|
|
||||||
#elif L==2 // de
|
|
||||||
"Keine Aufrufe für Prüfung von <strong>%s</strong>.";
|
|
||||||
#elif L==3 // en
|
|
||||||
"No announcements of exams of <strong>%s</strong>.";
|
|
||||||
#elif L==4 // es
|
|
||||||
"No hay convocatorias de examen de <strong>%s</strong>.";
|
|
||||||
#elif L==5 // fr
|
|
||||||
"Aucune convocation à un examen de <strong>%s</strong>.";
|
|
||||||
#elif L==6 // gn
|
|
||||||
"No hay convocatorias de examen de <strong>%s</strong>."; // Okoteve traducción
|
|
||||||
#elif L==7 // it
|
|
||||||
"Nessun appello d'esame di <strong>%s</strong>.";
|
|
||||||
#elif L==8 // pl
|
|
||||||
"Brak ogloszen egzaminów <strong>%s</strong>.";
|
|
||||||
#elif L==9 // pt
|
|
||||||
"Não chamadas para exame de <strong>%s</strong>.";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_No_assigned_building =
|
const char *Txt_No_assigned_building =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Sense edifici assignat";
|
"Sense edifici assignat";
|
||||||
|
@ -26258,6 +26236,27 @@ const char *Txt_No_banners =
|
||||||
"Não há banners.";
|
"Não há banners.";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_No_calls_for_exams_of_X = // Warning: it is very important to include %s in the following sentences
|
||||||
|
#if L==1 // ca
|
||||||
|
"No hay convocatorias de examen de <strong>%s</strong>."; // Necessita traduccio
|
||||||
|
#elif L==2 // de
|
||||||
|
"Keine Aufrufe für Prüfung von <strong>%s</strong>.";
|
||||||
|
#elif L==3 // en
|
||||||
|
"No calls for exams of <strong>%s</strong>.";
|
||||||
|
#elif L==4 // es
|
||||||
|
"No hay convocatorias de examen de <strong>%s</strong>.";
|
||||||
|
#elif L==5 // fr
|
||||||
|
"Aucune convocation à un examen de <strong>%s</strong>.";
|
||||||
|
#elif L==6 // gn
|
||||||
|
"No hay convocatorias de examen de <strong>%s</strong>."; // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"Nessun appello d'esame di <strong>%s</strong>.";
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Brak ogloszen egzaminów <strong>%s</strong>.";
|
||||||
|
#elif L==9 // pt
|
||||||
|
"Não chamadas para exame de <strong>%s</strong>.";
|
||||||
|
#endif
|
||||||
|
|
||||||
const char *Txt_no_course_of_origin = // Means: "message sent from any course"
|
const char *Txt_no_course_of_origin = // Means: "message sent from any course"
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"sin asignatura de origen"; // Necessita traduccio
|
"sin asignatura de origen"; // Necessita traduccio
|
||||||
|
@ -27793,13 +27792,13 @@ const char *Txt_NOTIFY_EVENTS_PLURAL[Ntf_NUM_NOTIFY_EVENTS] =
|
||||||
"Novas atividades"
|
"Novas atividades"
|
||||||
#endif
|
#endif
|
||||||
,
|
,
|
||||||
[Ntf_EVENT_EXAM_ANNOUNCEMENT] =
|
[Ntf_EVENT_CALL_FOR_EXAM] =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Noves convocatòries d'examen"
|
"Noves convocatòries d'examen"
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
"Neue Aufrufe für Prüfung"
|
"Neue Aufrufe für Prüfung"
|
||||||
#elif L==3 // en
|
#elif L==3 // en
|
||||||
"New announcements of exam"
|
"New calls for exam"
|
||||||
#elif L==4 // es
|
#elif L==4 // es
|
||||||
"Nuevas convocatorias de examen"
|
"Nuevas convocatorias de examen"
|
||||||
#elif L==5 // fr
|
#elif L==5 // fr
|
||||||
|
@ -28237,13 +28236,13 @@ const char *Txt_NOTIFY_EVENTS_SINGULAR[Ntf_NUM_NOTIFY_EVENTS] =
|
||||||
"Atividade"
|
"Atividade"
|
||||||
#endif
|
#endif
|
||||||
,
|
,
|
||||||
[Ntf_EVENT_EXAM_ANNOUNCEMENT] =
|
[Ntf_EVENT_CALL_FOR_EXAM] =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Convocatòria d'examen"
|
"Convocatòria d'examen"
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
"Aufrufe für Prüfung"
|
"Aufrufe für Prüfung"
|
||||||
#elif L==3 // en
|
#elif L==3 // en
|
||||||
"Announcement of exam"
|
"Call for exam"
|
||||||
#elif L==4 // es
|
#elif L==4 // es
|
||||||
"Convocatoria de examen"
|
"Convocatoria de examen"
|
||||||
#elif L==5 // fr
|
#elif L==5 // fr
|
||||||
|
@ -32851,13 +32850,13 @@ const char *Txt_Public_views =
|
||||||
"Acessos públicos";
|
"Acessos públicos";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Publish_announcement_OF_EXAM =
|
const char *Txt_Publish_call_FOR_EXAM =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Publicar convocatòria";
|
"Publicar convocatòria";
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
"Veröffentlichen Aufruf";
|
"Veröffentlichen Aufruf";
|
||||||
#elif L==3 // en
|
#elif L==3 // en
|
||||||
"Publish announcement";
|
"Publish call";
|
||||||
#elif L==4 // es
|
#elif L==4 // es
|
||||||
"Publicar convocatoria";
|
"Publicar convocatoria";
|
||||||
#elif L==5 // fr
|
#elif L==5 // fr
|
||||||
|
@ -46252,27 +46251,6 @@ const char *Txt_The_alphabetical_code_X_is_not_correct = // Warning: it is very
|
||||||
"O código alfabético ISO 3166-1 %s não está correto.";
|
"O código alfabético ISO 3166-1 %s não está correto.";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_The_announcement_of_exam_has_been_successfully_updated =
|
|
||||||
#if L==1 // ca
|
|
||||||
"La convocatòria d'examen s'ha actualitzat correctament.";
|
|
||||||
#elif L==2 // de
|
|
||||||
"Der Aufruf zur Prüfung wurde erfolgreich aktualisiert.";
|
|
||||||
#elif L==3 // en
|
|
||||||
"The announcement of exam has been successfully updated.";
|
|
||||||
#elif L==4 // es
|
|
||||||
"La convocatoria de examen se ha actualizado correctamente.";
|
|
||||||
#elif L==5 // fr
|
|
||||||
"La convocation pour l'examen a été mis à jour avec succès.";
|
|
||||||
#elif L==6 // gn
|
|
||||||
"La convocatoria de examen se ha actualizado correctamente."; // Okoteve traducción
|
|
||||||
#elif L==7 // it
|
|
||||||
"L'apello d'esame è stata aggiornata con successo.";
|
|
||||||
#elif L==8 // pl
|
|
||||||
"Ogloszenie egzamin został pomyślnie zaktualizowany.";
|
|
||||||
#elif L==9 // pt
|
|
||||||
"A chamada para exame foi atualizada com sucesso.";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_The_answers_of_the_question_with_code_X_will_appear_shuffled = // Warning: it is very important to include %ld in the following sentences
|
const char *Txt_The_answers_of_the_question_with_code_X_will_appear_shuffled = // Warning: it is very important to include %ld in the following sentences
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Las respuestas de la pregunta con código <strong>%ld</strong>"
|
"Las respuestas de la pregunta con código <strong>%ld</strong>"
|
||||||
|
@ -46480,6 +46458,27 @@ const char *Txt_The_building_of_room_X_is_now_Y = // Warning: it is very importa
|
||||||
"O edifício da sala <strong>%s</strong> é agora <strong>%s</strong>.";
|
"O edifício da sala <strong>%s</strong> é agora <strong>%s</strong>.";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_The_call_for_exam_has_been_successfully_updated =
|
||||||
|
#if L==1 // ca
|
||||||
|
"La convocatòria d'examen s'ha actualitzat correctament.";
|
||||||
|
#elif L==2 // de
|
||||||
|
"Der Aufruf zur Prüfung wurde erfolgreich aktualisiert.";
|
||||||
|
#elif L==3 // en
|
||||||
|
"The call for exam has been successfully updated.";
|
||||||
|
#elif L==4 // es
|
||||||
|
"La convocatoria de examen se ha actualizado correctamente.";
|
||||||
|
#elif L==5 // fr
|
||||||
|
"La convocation pour l'examen a été mis à jour avec succès.";
|
||||||
|
#elif L==6 // gn
|
||||||
|
"La convocatoria de examen se ha actualizado correctamente."; // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"L'apello d'esame è stata aggiornata con successo.";
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Ogloszenie egzamin został pomyślnie zaktualizowany.";
|
||||||
|
#elif L==9 // pt
|
||||||
|
"A chamada para exame foi atualizada com sucesso.";
|
||||||
|
#endif
|
||||||
|
|
||||||
const char *Txt_The_capacity_of_room_X_has_not_changed = // Warning: it is very important to include %s in the following sentences
|
const char *Txt_The_capacity_of_room_X_has_not_changed = // Warning: it is very important to include %s in the following sentences
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"L'aforament de la sala <strong>%s</strong> no ha canviat.";
|
"L'aforament de la sala <strong>%s</strong> no ha canviat.";
|
||||||
|
@ -52779,13 +52778,13 @@ const char *Txt_TIMELINE_NOTE[TL_NOT_NUM_NOTE_TYPES] =
|
||||||
"Arquivo compartilhado público (disciplina)"
|
"Arquivo compartilhado público (disciplina)"
|
||||||
#endif
|
#endif
|
||||||
,
|
,
|
||||||
[TL_NOTE_EXAM_ANNOUNCEMENT] =
|
[TL_NOTE_CALL_FOR_EXAM] =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Convocatòria d'examen"
|
"Convocatòria d'examen"
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
"Aufrufe für Prüfung"
|
"Aufrufe für Prüfung"
|
||||||
#elif L==3 // en
|
#elif L==3 // en
|
||||||
"Announcement of exam"
|
"Call for exam"
|
||||||
#elif L==4 // es
|
#elif L==4 // es
|
||||||
"Convocatoria de examen"
|
"Convocatoria de examen"
|
||||||
#elif L==5 // fr
|
#elif L==5 // fr
|
||||||
|
|
|
@ -9556,7 +9556,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
|
||||||
"Download file from the assessment zone of a project" // Precisa de tradução
|
"Download file from the assessment zone of a project" // Precisa de tradução
|
||||||
#endif
|
#endif
|
||||||
,
|
,
|
||||||
[ActSeeOneExaAnn] =
|
[ActSeeOneCfe] =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"See one exam announcement" // Necessita traducció
|
"See one exam announcement" // Necessita traducció
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
|
@ -9577,7 +9577,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
|
||||||
"See one exam announcement" // Precisa de tradução
|
"See one exam announcement" // Precisa de tradução
|
||||||
#endif
|
#endif
|
||||||
,
|
,
|
||||||
[ActSeeDatExaAnn] =
|
[ActSeeDatCfe] =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"See exam announcements of a given date" // Necessita traducció
|
"See exam announcements of a given date" // Necessita traducció
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
|
@ -9598,7 +9598,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
|
||||||
"See exam announcements of a given date" // Precisa de tradução
|
"See exam announcements of a given date" // Precisa de tradução
|
||||||
#endif
|
#endif
|
||||||
,
|
,
|
||||||
[ActEdiExaAnn] =
|
[ActEdiCfe] =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Edit an exam announcement" // Necessita traducció
|
"Edit an exam announcement" // Necessita traducció
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
|
@ -9619,7 +9619,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
|
||||||
"Edit an exam announcement" // Precisa de tradução
|
"Edit an exam announcement" // Precisa de tradução
|
||||||
#endif
|
#endif
|
||||||
,
|
,
|
||||||
[ActRcvExaAnn] =
|
[ActRcvCfe] =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Send an exam announcement" // Necessita traducció
|
"Send an exam announcement" // Necessita traducció
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
|
@ -9640,7 +9640,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
|
||||||
"Send an exam announcement" // Precisa de tradução
|
"Send an exam announcement" // Precisa de tradução
|
||||||
#endif
|
#endif
|
||||||
,
|
,
|
||||||
[ActPrnExaAnn] =
|
[ActPrnCfe] =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"See an exam announcement ready to be printed" // Necessita traducció
|
"See an exam announcement ready to be printed" // Necessita traducció
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
|
@ -9661,7 +9661,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
|
||||||
"See an exam announcement ready to be printed" // Precisa de tradução
|
"See an exam announcement ready to be printed" // Precisa de tradução
|
||||||
#endif
|
#endif
|
||||||
,
|
,
|
||||||
[ActReqRemExaAnn] =
|
[ActReqRemCfe] =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Request removal of an exam announcement" // Necessita traducció
|
"Request removal of an exam announcement" // Necessita traducció
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
|
@ -9682,7 +9682,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
|
||||||
"Request removal of an exam announcement" // Precisa de tradução
|
"Request removal of an exam announcement" // Precisa de tradução
|
||||||
#endif
|
#endif
|
||||||
,
|
,
|
||||||
[ActRemExaAnn] =
|
[ActRemCfe] =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Remove exam announcement" // Necessita traducció
|
"Remove exam announcement" // Necessita traducció
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
|
@ -9703,7 +9703,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
|
||||||
"Remove exam announcement" // Precisa de tradução
|
"Remove exam announcement" // Precisa de tradução
|
||||||
#endif
|
#endif
|
||||||
,
|
,
|
||||||
[ActHidExaAnn] =
|
[ActHidCfe] =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Hide exam announcement" // Necessita traducció
|
"Hide exam announcement" // Necessita traducció
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
|
@ -9724,7 +9724,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
|
||||||
"Hide exam announcement" // Precisa de tradução
|
"Hide exam announcement" // Precisa de tradução
|
||||||
#endif
|
#endif
|
||||||
,
|
,
|
||||||
[ActUnhExaAnn] =
|
[ActUnhCfe] =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Unhide exam announcement" // Necessita traducció
|
"Unhide exam announcement" // Necessita traducció
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
|
|
|
@ -469,12 +469,12 @@ const char *Txt_NOTIFY_EVENTS_SINGULAR_NO_HTML[Ntf_NUM_NOTIFY_EVENTS][1 + Lan_NU
|
||||||
[Lan_LANGUAGE_PL ] = "Nowe zadania",
|
[Lan_LANGUAGE_PL ] = "Nowe zadania",
|
||||||
[Lan_LANGUAGE_PT ] = "Nova atividade",
|
[Lan_LANGUAGE_PT ] = "Nova atividade",
|
||||||
},
|
},
|
||||||
[Ntf_EVENT_EXAM_ANNOUNCEMENT] =
|
[Ntf_EVENT_CALL_FOR_EXAM] =
|
||||||
{
|
{
|
||||||
[Lan_LANGUAGE_UNKNOWN] = "",
|
[Lan_LANGUAGE_UNKNOWN] = "",
|
||||||
[Lan_LANGUAGE_CA ] = "Nova convocatòria d'examen",
|
[Lan_LANGUAGE_CA ] = "Nova convocatòria d'examen",
|
||||||
[Lan_LANGUAGE_DE ] = "Neue Aufrufe für Prüfung",
|
[Lan_LANGUAGE_DE ] = "Neue Aufrufe für Prüfung",
|
||||||
[Lan_LANGUAGE_EN ] = "New announcement of exam",
|
[Lan_LANGUAGE_EN ] = "New call for exam",
|
||||||
[Lan_LANGUAGE_ES ] = "Nueva convocatoria de examen",
|
[Lan_LANGUAGE_ES ] = "Nueva convocatoria de examen",
|
||||||
[Lan_LANGUAGE_FR ] = "Nouvelle convocation à un examen",
|
[Lan_LANGUAGE_FR ] = "Nouvelle convocation à un examen",
|
||||||
[Lan_LANGUAGE_GN ] = "Nueva convocatoria de examen", // Okoteve traducción
|
[Lan_LANGUAGE_GN ] = "Nueva convocatoria de examen", // Okoteve traducción
|
||||||
|
|
|
@ -31,8 +31,8 @@
|
||||||
|
|
||||||
#include "swad_alert.h"
|
#include "swad_alert.h"
|
||||||
#include "swad_box.h"
|
#include "swad_box.h"
|
||||||
|
#include "swad_call_for_exam.h"
|
||||||
#include "swad_course.h"
|
#include "swad_course.h"
|
||||||
#include "swad_exam_announcement.h"
|
|
||||||
#include "swad_forum.h"
|
#include "swad_forum.h"
|
||||||
#include "swad_global.h"
|
#include "swad_global.h"
|
||||||
#include "swad_hierarchy.h"
|
#include "swad_hierarchy.h"
|
||||||
|
@ -138,7 +138,7 @@ void Tml_Not_ShowHighlightedNote (struct Tml_Timeline *Timeline,
|
||||||
/* Assessment tab */
|
/* Assessment tab */
|
||||||
[Ntf_EVENT_ASSIGNMENT ] = Tml_TOP_MESSAGE_NONE,
|
[Ntf_EVENT_ASSIGNMENT ] = Tml_TOP_MESSAGE_NONE,
|
||||||
[Ntf_EVENT_SURVEY ] = Tml_TOP_MESSAGE_NONE,
|
[Ntf_EVENT_SURVEY ] = Tml_TOP_MESSAGE_NONE,
|
||||||
[Ntf_EVENT_EXAM_ANNOUNCEMENT] = Tml_TOP_MESSAGE_NONE,
|
[Ntf_EVENT_CALL_FOR_EXAM] = Tml_TOP_MESSAGE_NONE,
|
||||||
/* Files tab */
|
/* Files tab */
|
||||||
[Ntf_EVENT_DOCUMENT_FILE ] = Tml_TOP_MESSAGE_NONE,
|
[Ntf_EVENT_DOCUMENT_FILE ] = Tml_TOP_MESSAGE_NONE,
|
||||||
[Ntf_EVENT_TEACHERS_FILE ] = Tml_TOP_MESSAGE_NONE,
|
[Ntf_EVENT_TEACHERS_FILE ] = Tml_TOP_MESSAGE_NONE,
|
||||||
|
@ -467,7 +467,7 @@ static void Tml_Not_GetLocationInHierarchy (const struct Tml_Not_Note *Not,
|
||||||
break;
|
break;
|
||||||
case TL_NOTE_CRS_DOC_PUB_FILE:
|
case TL_NOTE_CRS_DOC_PUB_FILE:
|
||||||
case TL_NOTE_CRS_SHA_PUB_FILE:
|
case TL_NOTE_CRS_SHA_PUB_FILE:
|
||||||
case TL_NOTE_EXAM_ANNOUNCEMENT:
|
case TL_NOTE_CALL_FOR_EXAM:
|
||||||
case TL_NOTE_NOTICE:
|
case TL_NOTE_NOTICE:
|
||||||
/* Get course data */
|
/* Get course data */
|
||||||
Hie->Crs.CrsCod = Not->HieCod;
|
Hie->Crs.CrsCod = Not->HieCod;
|
||||||
|
@ -524,7 +524,7 @@ static void Tml_Not_WriteLocationInHierarchy (const struct Tml_Not_Note *Not,
|
||||||
break;
|
break;
|
||||||
case TL_NOTE_CRS_DOC_PUB_FILE:
|
case TL_NOTE_CRS_DOC_PUB_FILE:
|
||||||
case TL_NOTE_CRS_SHA_PUB_FILE:
|
case TL_NOTE_CRS_SHA_PUB_FILE:
|
||||||
case TL_NOTE_EXAM_ANNOUNCEMENT:
|
case TL_NOTE_CALL_FOR_EXAM:
|
||||||
case TL_NOTE_NOTICE:
|
case TL_NOTE_NOTICE:
|
||||||
/* Write location (course) in hierarchy */
|
/* Write location (course) in hierarchy */
|
||||||
HTM_DIV_Begin ("class=\"TL_LOC\"");
|
HTM_DIV_Begin ("class=\"TL_LOC\"");
|
||||||
|
@ -572,7 +572,7 @@ static void Tml_Not_PutFormGoToAction (const struct Tml_Not_Note *Not,
|
||||||
[TL_NOTE_CRS_DOC_PUB_FILE ] = ActReqDatSeeDocCrs,
|
[TL_NOTE_CRS_DOC_PUB_FILE ] = ActReqDatSeeDocCrs,
|
||||||
[TL_NOTE_CRS_SHA_PUB_FILE ] = ActReqDatShaCrs,
|
[TL_NOTE_CRS_SHA_PUB_FILE ] = ActReqDatShaCrs,
|
||||||
/* Assessment tab */
|
/* Assessment tab */
|
||||||
[TL_NOTE_EXAM_ANNOUNCEMENT] = ActSeeOneExaAnn,
|
[TL_NOTE_CALL_FOR_EXAM] = ActSeeOneCfe,
|
||||||
/* Users tab */
|
/* Users tab */
|
||||||
/* Messages tab */
|
/* Messages tab */
|
||||||
[TL_NOTE_NOTICE ] = ActSeeOneNot,
|
[TL_NOTE_NOTICE ] = ActSeeOneNot,
|
||||||
|
@ -598,7 +598,7 @@ static void Tml_Not_PutFormGoToAction (const struct Tml_Not_Note *Not,
|
||||||
[TL_NOTE_CRS_DOC_PUB_FILE ] = "file.svg",
|
[TL_NOTE_CRS_DOC_PUB_FILE ] = "file.svg",
|
||||||
[TL_NOTE_CRS_SHA_PUB_FILE ] = "file.svg",
|
[TL_NOTE_CRS_SHA_PUB_FILE ] = "file.svg",
|
||||||
/* Assessment tab */
|
/* Assessment tab */
|
||||||
[TL_NOTE_EXAM_ANNOUNCEMENT] = "bullhorn.svg",
|
[TL_NOTE_CALL_FOR_EXAM] = "bullhorn.svg",
|
||||||
/* Users tab */
|
/* Users tab */
|
||||||
/* Messages tab */
|
/* Messages tab */
|
||||||
[TL_NOTE_NOTICE ] = "sticky-note.svg",
|
[TL_NOTE_NOTICE ] = "sticky-note.svg",
|
||||||
|
@ -658,12 +658,12 @@ static void Tml_Not_PutFormGoToAction (const struct Tml_Not_Note *Not,
|
||||||
if (Not->HieCod != Gbl.Hierarchy.Crs.CrsCod) // Not the current course
|
if (Not->HieCod != Gbl.Hierarchy.Crs.CrsCod) // Not the current course
|
||||||
Crs_PutParamCrsCod (Not->HieCod); // Go to another course
|
Crs_PutParamCrsCod (Not->HieCod); // Go to another course
|
||||||
break;
|
break;
|
||||||
case TL_NOTE_EXAM_ANNOUNCEMENT:
|
case TL_NOTE_CALL_FOR_EXAM:
|
||||||
Frm_SetAnchorStr (Not->Cod,&Anchor);
|
Frm_SetAnchorStr (Not->Cod,&Anchor);
|
||||||
Frm_BeginFormUniqueAnchor (TL_DefaultActions[Not->NoteType],
|
Frm_BeginFormUniqueAnchor (TL_DefaultActions[Not->NoteType],
|
||||||
Anchor); // Locate on this specific exam
|
Anchor); // Locate on this specific exam
|
||||||
Frm_FreeAnchorStr (Anchor);
|
Frm_FreeAnchorStr (Anchor);
|
||||||
ExaAnn_PutHiddenParamExaCod (Not->Cod);
|
Cfe_PutHiddenParamExaCod (Not->Cod);
|
||||||
if (Not->HieCod != Gbl.Hierarchy.Crs.CrsCod) // Not the current course
|
if (Not->HieCod != Gbl.Hierarchy.Crs.CrsCod) // Not the current course
|
||||||
Crs_PutParamCrsCod (Not->HieCod); // Go to another course
|
Crs_PutParamCrsCod (Not->HieCod); // Go to another course
|
||||||
break;
|
break;
|
||||||
|
@ -741,8 +741,8 @@ void Tml_Not_GetNoteSummary (const struct Tml_Not_Note *Not,
|
||||||
case TL_NOTE_CRS_SHA_PUB_FILE:
|
case TL_NOTE_CRS_SHA_PUB_FILE:
|
||||||
Brw_GetSummaryAndContentOfFile (SummaryStr,NULL,Not->Cod,false);
|
Brw_GetSummaryAndContentOfFile (SummaryStr,NULL,Not->Cod,false);
|
||||||
break;
|
break;
|
||||||
case TL_NOTE_EXAM_ANNOUNCEMENT:
|
case TL_NOTE_CALL_FOR_EXAM:
|
||||||
ExaAnn_GetSummaryAndContentExamAnn (SummaryStr,NULL,Not->Cod,false);
|
Cfe_GetSummaryAndContentCallForExam (SummaryStr,NULL,Not->Cod,false);
|
||||||
break;
|
break;
|
||||||
case TL_NOTE_POST:
|
case TL_NOTE_POST:
|
||||||
// Not applicable
|
// Not applicable
|
||||||
|
@ -916,7 +916,7 @@ void Tml_Not_StoreAndPublishNoteInternal (Tml_Not_NoteType_t NoteType,long Cod,
|
||||||
break;
|
break;
|
||||||
case TL_NOTE_CRS_DOC_PUB_FILE:
|
case TL_NOTE_CRS_DOC_PUB_FILE:
|
||||||
case TL_NOTE_CRS_SHA_PUB_FILE:
|
case TL_NOTE_CRS_SHA_PUB_FILE:
|
||||||
case TL_NOTE_EXAM_ANNOUNCEMENT:
|
case TL_NOTE_CALL_FOR_EXAM:
|
||||||
case TL_NOTE_NOTICE:
|
case TL_NOTE_NOTICE:
|
||||||
HieCod = Gbl.Hierarchy.Crs.CrsCod;
|
HieCod = Gbl.Hierarchy.Crs.CrsCod;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -58,7 +58,7 @@ typedef enum
|
||||||
TL_NOTE_CRS_DOC_PUB_FILE = 7, // Public file in documents of course
|
TL_NOTE_CRS_DOC_PUB_FILE = 7, // Public file in documents of course
|
||||||
TL_NOTE_CRS_SHA_PUB_FILE = 8, // Public file in shared files of course
|
TL_NOTE_CRS_SHA_PUB_FILE = 8, // Public file in shared files of course
|
||||||
/* Assessment tab */
|
/* Assessment tab */
|
||||||
TL_NOTE_EXAM_ANNOUNCEMENT = 9, // Exam announcement in a course
|
TL_NOTE_CALL_FOR_EXAM = 9, // Exam announcement in a course
|
||||||
/* Users tab */
|
/* Users tab */
|
||||||
/* Messages tab */
|
/* Messages tab */
|
||||||
TL_NOTE_NOTICE = 12, // A public notice in a course
|
TL_NOTE_NOTICE = 12, // A public notice in a course
|
||||||
|
|
Loading…
Reference in New Issue