From 94a1f63fb4c1c2b81a76a5a0a342375d6b252620 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Fri, 16 Dec 2016 00:52:27 +0100 Subject: [PATCH] Version 16.103 --- Makefile | 2 +- swad_changelog.h | 4 +- swad_help.c | 22 ++++++++- swad_info.c | 120 +++++++++++++++++++++++++++++++++++++++++++---- swad_info.h | 3 +- swad_syllabus.c | 6 ++- 6 files changed, 142 insertions(+), 15 deletions(-) diff --git a/Makefile b/Makefile index 7924813c3..27ff17615 100644 --- a/Makefile +++ b/Makefile @@ -65,7 +65,7 @@ CC = gcc # LIBS when using MariaDB (also valid with MySQL): LIBS = -lssl -lcrypto -lpthread -lrt -lmysqlclient -lz -L/usr/lib64/mysql -lm -lgsoap -CFLAGS = -Wall -Wextra -pedantic -mtune=native -O2 -s +CFLAGS = -Wall -Wextra -mtune=native -O2 -s all: swad_ca swad_de swad_en swad_es swad_fr swad_gn swad_it swad_pl swad_pt diff --git a/swad_changelog.h b/swad_changelog.h index 6205e9df0..0cda591a1 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -182,18 +182,20 @@ // TODO: Fix bug in notification content about files sent to plugins like SWADroid: do not write internal name (for example "comun"). Call instead Brw_GetFileNameToShow or similar. // TODO: Draw future dates in attendance, surveys, assignments in blue? +// TODO: change checkbox "Obligar a los estudiantes a leer esta información" /*****************************************************************************/ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 16.102 (2016-12-15)" +#define Log_PLATFORM_VERSION "SWAD 16.103 (2016-12-16)" #define CSS_FILE "swad16.97.css" #define JS_FILE "swad16.101.js" // Number of lines (includes comments but not blank lines) has been got with the following command: // nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1 /* + Version 16.103: Dec 16, 2016 Contextual help on course info. (211130 lines) Version 16.102: Dec 15, 2016 Fixed bug in mail to students, reported by GitHub user raistmaj. Fixed bug in file of marks, reported by GitHub user raistmaj. Fixed bug in course indicators, reported by GitHub user raistmaj. diff --git a/swad_help.c b/swad_help.c index 195c5b9db..2b9623721 100644 --- a/swad_help.c +++ b/swad_help.c @@ -102,7 +102,15 @@ const char *Hlp_DEGREE_Shared = WIKI "DEGREE.Shared"; /***** COURSE tab *****/ -const char *Hlp_COURSE_Information = WIKI "COURSE.Information"; +const char *Hlp_COURSE_Information = WIKI "COURSE.Information"; +const char *Hlp_COURSE_Information_textual_information = WIKI "COURSE.Information#textual-information"; +const char *Hlp_COURSE_Information_edit = WIKI "COURSE.Information#edit"; + +const char *Hlp_COURSE_Guide = WIKI "COURSE.Guide"; +const char *Hlp_COURSE_Guide_edit = WIKI "COURSE.Guide#edit"; + +const char *Hlp_COURSE_Syllabus = WIKI "COURSE.Syllabus"; +const char *Hlp_COURSE_Syllabus_edit = WIKI "COURSE.Syllabus#edit"; const char *Hlp_COURSE_Documents = WIKI "COURSE.Documents"; const char *Hlp_COURSE_Private = WIKI "COURSE.Private"; @@ -110,8 +118,20 @@ const char *Hlp_COURSE_Shared = WIKI "COURSE.Shared"; const char *Hlp_COURSE_Timetable = WIKI "COURSE.Timetable"; +const char *Hlp_COURSE_Bibliography = WIKI "COURSE.Bibliography"; +const char *Hlp_COURSE_Bibliography_edit = WIKI "COURSE.Bibliography#edit"; + +const char *Hlp_COURSE_FAQ = WIKI "COURSE.FAQ"; +const char *Hlp_COURSE_FAQ_edit = WIKI "COURSE.FAQ#edit"; + +const char *Hlp_COURSE_Links = WIKI "COURSE.Links"; +const char *Hlp_COURSE_Links_edit = WIKI "COURSE.Links#edit"; + /***** ASSESSMENT tab *****/ +const char *Hlp_ASSESSMENT_System = WIKI "ASSESSMENT.System"; +const char *Hlp_ASSESSMENT_System_edit = WIKI "ASSESSMENT.System#edit"; + const char *Hlp_ASSESSMENT_Assignments = WIKI "ASSESSMENT.Assignments"; const char *Hlp_ASSESSMENT_Assignments_new_assignment = WIKI "ASSESSMENT.Assignments#new-assignment"; const char *Hlp_ASSESSMENT_Assignments_edit_assignment = WIKI "ASSESSMENT.Assignments#edit-assignment"; diff --git a/swad_info.c b/swad_info.c index 463938951..4f04433fc 100644 --- a/swad_info.c +++ b/swad_info.c @@ -276,6 +276,23 @@ const char *Inf_NamesInDBForInfoType[Inf_NUM_INFO_TYPES] = "assessment", }; +/***** Help *****/ +extern const char *Hlp_COURSE_Information_textual_information; +extern const char *Hlp_COURSE_Guide; +extern const char *Hlp_COURSE_Syllabus; +extern const char *Hlp_COURSE_Bibliography; +extern const char *Hlp_COURSE_FAQ; +extern const char *Hlp_COURSE_Links; +extern const char *Hlp_ASSESSMENT_System; + +extern const char *Hlp_COURSE_Information_edit; +extern const char *Hlp_COURSE_Guide_edit; +extern const char *Hlp_COURSE_Syllabus_edit; +extern const char *Hlp_COURSE_Bibliography_edit; +extern const char *Hlp_COURSE_FAQ_edit; +extern const char *Hlp_COURSE_Links_edit; +extern const char *Hlp_ASSESSMENT_System_edit; + /*****************************************************************************/ /**************************** Private prototypes *****************************/ /*****************************************************************************/ @@ -325,12 +342,25 @@ void Inf_ShowInfo (void) bool ICanEdit = (Gbl.Usrs.Me.LoggedRole == Rol_TEACHER || Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM); bool ShowWarningNoInfo = false; + const char *Help[Inf_NUM_INFO_TYPES] = + { + Hlp_COURSE_Information_textual_information, // Inf_INTRODUCTION + Hlp_COURSE_Guide, // Inf_TEACHING_GUIDE + Hlp_COURSE_Syllabus, // Inf_LECTURES + Hlp_COURSE_Syllabus, // Inf_PRACTICALS + Hlp_COURSE_Bibliography, // Inf_BIBLIOGRAPHY + Hlp_COURSE_FAQ, // Inf_FAQ + Hlp_COURSE_Links, // Inf_LINKS + Hlp_ASSESSMENT_System, // Inf_ASSESSMENT + }; /***** Set info type *****/ Gbl.CurrentCrs.Info.Type = Inf_AsignInfoType (); /***** Get info source from database *****/ - Inf_GetAndCheckInfoSrcFromDB (Gbl.CurrentCrs.Crs.CrsCod,Gbl.CurrentCrs.Info.Type,&InfoSrc,&MustBeRead); + Inf_GetAndCheckInfoSrcFromDB (Gbl.CurrentCrs.Crs.CrsCod, + Gbl.CurrentCrs.Info.Type, + &InfoSrc,&MustBeRead); switch (Gbl.CurrentCrs.Info.Type) { @@ -402,7 +432,7 @@ void Inf_ShowInfo (void) Lay_StartRoundFrame ("100%",Txt_INFO_TITLE[Gbl.CurrentCrs.Info.Type], ICanEdit ? Inf_PutIconToEditInfo : NULL, - NULL); + Help[Gbl.CurrentCrs.Info.Type]); Lay_ShowAlert (Lay_INFO,Txt_No_information); if (ICanEdit) Inf_PutButtonToEditInfo (); @@ -993,12 +1023,23 @@ static void Inf_ShowPage (const char *URL) extern const char *Txt_INFO_TITLE[Inf_NUM_INFO_TYPES]; bool ICanEdit = (Gbl.Usrs.Me.LoggedRole == Rol_TEACHER || Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM); + const char *Help[Inf_NUM_INFO_TYPES] = + { + Hlp_COURSE_Information_textual_information, // Inf_INTRODUCTION + Hlp_COURSE_Guide, // Inf_TEACHING_GUIDE + Hlp_COURSE_Syllabus, // Inf_LECTURES + Hlp_COURSE_Syllabus, // Inf_PRACTICALS + Hlp_COURSE_Bibliography, // Inf_BIBLIOGRAPHY + Hlp_COURSE_FAQ, // Inf_FAQ + Hlp_COURSE_Links, // Inf_LINKS + Hlp_ASSESSMENT_System, // Inf_ASSESSMENT + }; /***** Start of frame *****/ Lay_StartRoundFrame (NULL,Txt_INFO_TITLE[Gbl.CurrentCrs.Info.Type], ICanEdit ? Inf_PutIconToEditInfo : NULL, - NULL); + Help[Gbl.CurrentCrs.Info.Type]); /***** Link to view in a new window *****/ fprintf (Gbl.F.Out,"", @@ -1043,12 +1084,25 @@ void Inf_FormsToSelSendInfo (void) Inf_InfoSrc_t InfoSrcSelected; bool InfoAvailable[Inf_NUM_INFO_SOURCES]; bool MustBeRead; + const char *HelpEdit[Inf_NUM_INFO_TYPES] = + { + Hlp_COURSE_Information_edit, // Inf_INTRODUCTION + Hlp_COURSE_Guide_edit, // Inf_TEACHING_GUIDE + Hlp_COURSE_Syllabus_edit, // Inf_LECTURES + Hlp_COURSE_Syllabus_edit, // Inf_PRACTICALS + Hlp_COURSE_Bibliography_edit, // Inf_BIBLIOGRAPHY + Hlp_COURSE_FAQ_edit, // Inf_FAQ + Hlp_COURSE_Links_edit, // Inf_LINKS + Hlp_ASSESSMENT_System_edit, // Inf_ASSESSMENT + }; /***** Set info type *****/ Gbl.CurrentCrs.Info.Type = Inf_AsignInfoType (); /***** Get current info source from database *****/ - Inf_GetAndCheckInfoSrcFromDB (Gbl.CurrentCrs.Crs.CrsCod,Gbl.CurrentCrs.Info.Type,&InfoSrcSelected,&MustBeRead); + Inf_GetAndCheckInfoSrcFromDB (Gbl.CurrentCrs.Crs.CrsCod, + Gbl.CurrentCrs.Info.Type, + &InfoSrcSelected,&MustBeRead); /***** Check if info available *****/ for (InfoSrc = (Inf_InfoSrc_t) 0; @@ -1067,7 +1121,8 @@ void Inf_FormsToSelSendInfo (void) /***** Form to choice between alternatives *****/ /* Start of table */ - Lay_StartRoundFrameTable (NULL,Txt_Source_of_information,NULL,NULL,4); + Lay_StartRoundFrameTable (NULL,Txt_Source_of_information, + NULL,HelpEdit[Gbl.CurrentCrs.Info.Type],4); /* Options */ for (InfoSrc = (Inf_InfoSrc_t) 0; @@ -1496,7 +1551,8 @@ Inf_InfoSrc_t Inf_GetInfoSrcFromDB (long CrsCod,Inf_InfoType_t InfoType) /***** Get and check info source for a type of course info from database *****/ /*****************************************************************************/ -void Inf_GetAndCheckInfoSrcFromDB (long CrsCod,Inf_InfoType_t InfoType, +void Inf_GetAndCheckInfoSrcFromDB (long CrsCod, + Inf_InfoType_t InfoType, Inf_InfoSrc_t *InfoSrc,bool *MustBeRead) { char Query[512]; @@ -1725,6 +1781,17 @@ static bool Inf_CheckAndShowPlainTxt (void) char TxtHTML[Cns_MAX_BYTES_LONG_TEXT+1]; bool ICanEdit = (Gbl.Usrs.Me.LoggedRole == Rol_TEACHER || Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM); + const char *Help[Inf_NUM_INFO_TYPES] = + { + Hlp_COURSE_Information_textual_information, // Inf_INTRODUCTION + Hlp_COURSE_Guide, // Inf_TEACHING_GUIDE + Hlp_COURSE_Syllabus, // Inf_LECTURES + Hlp_COURSE_Syllabus, // Inf_PRACTICALS + Hlp_COURSE_Bibliography, // Inf_BIBLIOGRAPHY + Hlp_COURSE_FAQ, // Inf_FAQ + Hlp_COURSE_Links, // Inf_LINKS + Hlp_ASSESSMENT_System, // Inf_ASSESSMENT + }; /***** Get info text from database *****/ Inf_GetInfoTxtFromDB (Gbl.CurrentCrs.Crs.CrsCod,Gbl.CurrentCrs.Info.Type, @@ -1736,7 +1803,7 @@ static bool Inf_CheckAndShowPlainTxt (void) Lay_StartRoundFrame (NULL,Txt_INFO_TITLE[Gbl.CurrentCrs.Info.Type], ICanEdit ? Inf_PutIconToEditInfo : NULL, - NULL); + Help[Gbl.CurrentCrs.Info.Type]); if (Gbl.CurrentCrs.Info.Type == Inf_INTRODUCTION || Gbl.CurrentCrs.Info.Type == Inf_TEACHING_GUIDE) @@ -1798,6 +1865,17 @@ static bool Inf_CheckAndShowRichTxt (void) int ReturnCode; bool ICanEdit = (Gbl.Usrs.Me.LoggedRole == Rol_TEACHER || Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM); + const char *Help[Inf_NUM_INFO_TYPES] = + { + Hlp_COURSE_Information_textual_information, // Inf_INTRODUCTION + Hlp_COURSE_Guide, // Inf_TEACHING_GUIDE + Hlp_COURSE_Syllabus, // Inf_LECTURES + Hlp_COURSE_Syllabus, // Inf_PRACTICALS + Hlp_COURSE_Bibliography, // Inf_BIBLIOGRAPHY + Hlp_COURSE_FAQ, // Inf_FAQ + Hlp_COURSE_Links, // Inf_LINKS + Hlp_ASSESSMENT_System, // Inf_ASSESSMENT + }; /***** Get info text from database *****/ Inf_GetInfoTxtFromDB (Gbl.CurrentCrs.Crs.CrsCod,Gbl.CurrentCrs.Info.Type, @@ -1809,7 +1887,7 @@ static bool Inf_CheckAndShowRichTxt (void) Lay_StartRoundFrame (NULL,Txt_INFO_TITLE[Gbl.CurrentCrs.Info.Type], ICanEdit ? Inf_PutIconToEditInfo : NULL, - NULL); + Help[Gbl.CurrentCrs.Info.Type]); if (Gbl.CurrentCrs.Info.Type == Inf_INTRODUCTION || Gbl.CurrentCrs.Info.Type == Inf_TEACHING_GUIDE) @@ -1977,6 +2055,17 @@ void Inf_EditPlainTxtInfo (void) extern const char *Txt_INFO_TITLE[Inf_NUM_INFO_TYPES]; extern const char *Txt_Save; char TxtHTML[Cns_MAX_BYTES_LONG_TEXT+1]; + const char *HelpEdit[Inf_NUM_INFO_TYPES] = + { + Hlp_COURSE_Information_edit, // Inf_INTRODUCTION + Hlp_COURSE_Guide_edit, // Inf_TEACHING_GUIDE + Hlp_COURSE_Syllabus_edit, // Inf_LECTURES + Hlp_COURSE_Syllabus_edit, // Inf_PRACTICALS + Hlp_COURSE_Bibliography_edit, // Inf_BIBLIOGRAPHY + Hlp_COURSE_FAQ_edit, // Inf_FAQ + Hlp_COURSE_Links_edit, // Inf_LINKS + Hlp_ASSESSMENT_System_edit, // Inf_ASSESSMENT + }; /***** Set info type *****/ Gbl.CurrentCrs.Info.Type = Inf_AsignInfoType (); @@ -1984,7 +2073,7 @@ void Inf_EditPlainTxtInfo (void) /***** Start form and frame *****/ Act_FormStart (Inf_ActionsRcvPlaTxtInfo[Gbl.CurrentCrs.Info.Type]); Lay_StartRoundFrame (NULL,Txt_INFO_TITLE[Gbl.CurrentCrs.Info.Type], - NULL,NULL); + NULL,HelpEdit[Gbl.CurrentCrs.Info.Type]); if (Gbl.CurrentCrs.Info.Type == Inf_INTRODUCTION || Gbl.CurrentCrs.Info.Type == Inf_TEACHING_GUIDE) @@ -2017,6 +2106,17 @@ void Inf_EditRichTxtInfo (void) extern const char *Txt_INFO_TITLE[Inf_NUM_INFO_TYPES]; extern const char *Txt_Save; char TxtHTML[Cns_MAX_BYTES_LONG_TEXT+1]; + const char *HelpEdit[Inf_NUM_INFO_TYPES] = + { + Hlp_COURSE_Information_edit, // Inf_INTRODUCTION + Hlp_COURSE_Guide_edit, // Inf_TEACHING_GUIDE + Hlp_COURSE_Syllabus_edit, // Inf_LECTURES + Hlp_COURSE_Syllabus_edit, // Inf_PRACTICALS + Hlp_COURSE_Bibliography_edit, // Inf_BIBLIOGRAPHY + Hlp_COURSE_FAQ_edit, // Inf_FAQ + Hlp_COURSE_Links_edit, // Inf_LINKS + Hlp_ASSESSMENT_System_edit, // Inf_ASSESSMENT + }; /***** Set info type *****/ Gbl.CurrentCrs.Info.Type = Inf_AsignInfoType (); @@ -2024,7 +2124,7 @@ void Inf_EditRichTxtInfo (void) /***** Start form and frame *****/ Act_FormStart (Inf_ActionsRcvRchTxtInfo[Gbl.CurrentCrs.Info.Type]); Lay_StartRoundFrame (NULL,Txt_INFO_TITLE[Gbl.CurrentCrs.Info.Type], - NULL,NULL); + NULL,HelpEdit[Gbl.CurrentCrs.Info.Type]); if (Gbl.CurrentCrs.Info.Type == Inf_INTRODUCTION || Gbl.CurrentCrs.Info.Type == Inf_TEACHING_GUIDE) diff --git a/swad_info.h b/swad_info.h index 5605ef609..b1602e0f3 100644 --- a/swad_info.h +++ b/swad_info.h @@ -86,7 +86,8 @@ void Inf_FormToSendURL (Inf_InfoSrc_t InfoSrc); Inf_InfoSrc_t Inf_GetInfoSrcFromForm (void); void Inf_SetInfoSrcIntoDB (Inf_InfoSrc_t InfoSrc); Inf_InfoSrc_t Inf_GetInfoSrcFromDB (long CrsCod,Inf_InfoType_t InfoType); -void Inf_GetAndCheckInfoSrcFromDB (long CrsCod,Inf_InfoType_t InfoType, +void Inf_GetAndCheckInfoSrcFromDB (long CrsCod, + Inf_InfoType_t InfoType, Inf_InfoSrc_t *InfoSrc,bool *MustBeRead); Inf_InfoType_t Inf_ConvertFromStrDBToInfoType (const char *StrInfoTypeDB); Inf_InfoSrc_t Inf_ConvertFromStrDBToInfoSrc (const char *StrInfoSrcDB); diff --git a/swad_syllabus.c b/swad_syllabus.c index 2c13f141a..f929fc229 100644 --- a/swad_syllabus.c +++ b/swad_syllabus.c @@ -213,6 +213,8 @@ bool Syl_CheckSyllabus (long CrsCod,Inf_InfoType_t InfoType) bool Syl_CheckAndEditSyllabus (void) { + extern const char *Hlp_COURSE_Syllabus_edit; + extern const char *Hlp_COURSE_Syllabus; extern const Act_Action_t Inf_ActionsSeeInfo[Inf_NUM_INFO_TYPES]; extern const char *Txt_INFO_TITLE[Inf_NUM_INFO_TYPES]; extern const char *Txt_Done; @@ -238,7 +240,9 @@ bool Syl_CheckAndEditSyllabus (void) Lay_StartRoundFrameTable (NULL,Txt_INFO_TITLE[Gbl.CurrentCrs.Info.Type], PutIconToEdit ? Inf_PutIconToEditInfo : NULL, - NULL,1); + Gbl.Syllabus.EditionIsActive ? Hlp_COURSE_Syllabus_edit : + Hlp_COURSE_Syllabus, + 1); /***** Write the current syllabus *****/ Syl_ShowSyllabus ();