From 58875fd85571043d53ea4789998ade8fe9a96771 Mon Sep 17 00:00:00 2001 From: acanas Date: Fri, 26 Apr 2024 19:17:28 +0200 Subject: [PATCH] Version 23.79.5: Apr 26, 2024 Code refactoring in HTML related to checked field in forms. --- swad_announcement.c | 2 +- swad_assignment.c | 11 +++-- swad_attendance.c | 94 ++++++++++++++++++++++++++----------------- swad_attendance.h | 2 +- swad_browser.c | 15 ++++--- swad_changelog.h | 3 +- swad_cookie.c | 7 +++- swad_date.c | 7 +++- swad_enrolment.c | 8 ++-- swad_exam.c | 6 +-- swad_exam_print.c | 6 +-- swad_exam_result.c | 6 +-- swad_exam_session.c | 11 +++-- swad_exam_type.h | 2 +- swad_forum.c | 7 +++- swad_game.c | 6 +-- swad_game.h | 2 +- swad_group.c | 46 ++++++++++++--------- swad_indicator.c | 20 ++++----- swad_indicator.h | 2 +- swad_info.c | 14 ++++--- swad_match.c | 13 +++--- swad_match_result.c | 6 +-- swad_message.c | 7 +++- swad_notification.c | 22 ++++++---- swad_privacy.c | 15 ++++--- swad_project_config.c | 7 +++- swad_question.c | 70 +++++++++++++++++++------------- swad_survey.c | 4 +- swad_test_print.c | 33 +++++++-------- swad_test_print.h | 2 +- 31 files changed, 270 insertions(+), 186 deletions(-) diff --git a/swad_announcement.c b/swad_announcement.c index 170e66cf6..81ff76720 100644 --- a/swad_announcement.c +++ b/swad_announcement.c @@ -356,7 +356,7 @@ void Ann_ShowFormAnnouncement (void) 1 << Rol_STD | 1 << Rol_NET | 1 << Rol_TCH, - false, + Cns_DISABLED, HTM_DONT_SUBMIT_ON_CHANGE); HTM_TD_End (); HTM_TR_End (); diff --git a/swad_assignment.c b/swad_assignment.c index 6d000e08b..cbb979b89 100644 --- a/swad_assignment.c +++ b/swad_assignment.c @@ -1303,8 +1303,10 @@ void Asg_ReqCreatOrEditAsg (void) static void Asg_ShowLstGrpsToEditAssignment (long AsgCod) { + extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED]; extern const char *Txt_Groups; unsigned NumGrpTyp; + Cns_UncheckedOrChecked_t UncheckedOrChecked; /***** Get list of groups types and groups in this course *****/ Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS); @@ -1326,13 +1328,14 @@ static void Asg_ShowLstGrpsToEditAssignment (long AsgCod) HTM_TD_Begin ("colspan=\"7\" class=\"LM DAT_%s\"", The_GetSuffix ()); HTM_LABEL_Begin (NULL); + UncheckedOrChecked = Grp_DB_CheckIfAssociatedToGrps ("asg_groups", + "AsgCod", + AsgCod) ? Cns_UNCHECKED : + Cns_CHECKED; HTM_INPUT_CHECKBOX ("WholeCrs",HTM_DONT_SUBMIT_ON_CHANGE, "id=\"WholeCrs\" value=\"Y\"%s" " onclick=\"uncheckChildren(this,'GrpCods')\"", - Grp_DB_CheckIfAssociatedToGrps ("asg_groups", - "AsgCod", - AsgCod) ? "" : - " checked=\"checked\""); + HTM_CheckedTxt[UncheckedOrChecked]); Grp_WriteTheWholeCourse (); HTM_LABEL_End (); HTM_TD_End (); diff --git a/swad_attendance.c b/swad_attendance.c index f954bf5d8..90e01c248 100644 --- a/swad_attendance.c +++ b/swad_attendance.c @@ -159,7 +159,7 @@ static void Att_ListUsrsAttendanceTable (struct Att_Events *Events, static void Att_WriteTableHeadSeveralAttEvents (struct Att_Events *Events); static void Att_WriteRowUsrSeveralAttEvents (const struct Att_Events *Events, unsigned NumUsr,struct Usr_Data *UsrDat); -static void Att_PutCheckOrCross (bool Present); +static void Att_PutCheckOrCross (Cns_UncheckedOrChecked_t UncheckedOrChecked); static void Att_ListStdsWithAttEventsDetails (struct Att_Events *Events, unsigned NumUsrsInList, long *LstSelectedUsrCods); @@ -1073,8 +1073,10 @@ void Att_ReqCreatOrEditEvent (void) static void Att_ShowLstGrpsToEditEvent (long AttCod) { + extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED]; extern const char *Txt_Groups; unsigned NumGrpTyp; + Cns_UncheckedOrChecked_t UncheckedOrChecked; /***** Get list of groups types and groups in this course *****/ Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS); @@ -1097,13 +1099,14 @@ static void Att_ShowLstGrpsToEditEvent (long AttCod) HTM_TD_Begin ("colspan=\"7\" class=\"LM DAT_%s\"", The_GetSuffix ()); HTM_LABEL_Begin (NULL); + UncheckedOrChecked = Grp_DB_CheckIfAssociatedToGrps ("att_groups", + "AttCod", + AttCod) ? Cns_UNCHECKED : + Cns_CHECKED; HTM_INPUT_CHECKBOX ("WholeCrs",HTM_DONT_SUBMIT_ON_CHANGE, "id=\"WholeCrs\" value=\"Y\"%s" " onclick=\"uncheckChildren(this,'GrpCods')\"", - Grp_DB_CheckIfAssociatedToGrps ("att_groups", - "AttCod", - AttCod) ? "" : - " checked=\"checked\""); + HTM_CheckedTxt[UncheckedOrChecked]); Grp_WriteTheWholeCourse (); HTM_LABEL_End (); HTM_TD_End (); @@ -1647,6 +1650,7 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr, struct Usr_Data *UsrDat, struct Att_Event *Event) { + extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED]; static const char *ClassPhoto[PhoSha_NUM_SHAPES] = { [PhoSha_SHAPE_CIRCLE ] = "PHOTOC45x60", @@ -1655,6 +1659,7 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr, [PhoSha_SHAPE_RECTANGLE] = "PHOTOR45x60", }; bool Present; + Cns_UncheckedOrChecked_t UncheckedOrChecked; char CommentStd[Cns_MAX_BYTES_TEXT + 1]; char CommentTch[Cns_MAX_BYTES_TEXT + 1]; Usr_Can_t ICanChangeStdAttendance; @@ -1692,6 +1697,8 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr, /***** Check if this student is already present in the current event *****/ Present = Att_CheckIfUsrIsPresentInEventAndGetComments (Event->AttCod,UsrDat->UsrCod,CommentStd,CommentTch); + UncheckedOrChecked = Present ? Cns_CHECKED : + Cns_UNCHECKED; /***** Begin table row *****/ HTM_TR_Begin (NULL); @@ -1699,7 +1706,7 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr, /***** Icon to show if the user is already present *****/ HTM_TD_Begin ("class=\"BT %s\"",The_GetColorRows ()); HTM_LABEL_Begin ("for=\"Std%u\"",NumUsr); - Att_PutCheckOrCross (Present); + Att_PutCheckOrCross (UncheckedOrChecked); HTM_LABEL_End (); HTM_TD_End (); @@ -1708,7 +1715,7 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr, HTM_INPUT_CHECKBOX ("UsrCodStd",HTM_DONT_SUBMIT_ON_CHANGE, "id=\"Std%u\" value=\"%s\"%s%s", NumUsr,UsrDat->EnUsrCod, - Present ? " checked=\"checked\"" : "", + HTM_CheckedTxt[UncheckedOrChecked], (ICanChangeStdAttendance == Usr_CAN) ? "" : " disabled=\"disabled\""); HTM_TD_End (); @@ -2440,7 +2447,7 @@ static void Att_GetListSelectedAttCods (struct Att_Events *Events) for (NumAttEvent = 0; NumAttEvent < Events->Num; NumAttEvent++) - Events->Lst[NumAttEvent].Selected = false; + Events->Lst[NumAttEvent].UncheckedOrChecked = Cns_UNCHECKED; /* Set some events as selected */ for (Ptr = Events->StrAttCodsSelected; @@ -2457,7 +2464,7 @@ static void Att_GetListSelectedAttCods (struct Att_Events *Events) NumAttEvent++) if (Events->Lst[NumAttEvent].AttCod == AttCod) { - Events->Lst[NumAttEvent].Selected = true; + Events->Lst[NumAttEvent].UncheckedOrChecked = Cns_CHECKED; break; } } @@ -2471,18 +2478,18 @@ static void Att_GetListSelectedAttCods (struct Att_Events *Events) for (NumAttEvent = 0; NumAttEvent < Events->Num; NumAttEvent++) - Events->Lst[NumAttEvent].Selected = true; + Events->Lst[NumAttEvent].UncheckedOrChecked = Cns_CHECKED; else // Course has groups and not all of them are selected for (NumAttEvent = 0; NumAttEvent < Events->Num; NumAttEvent++) { /* Reset selection */ - Events->Lst[NumAttEvent].Selected = false; + Events->Lst[NumAttEvent].UncheckedOrChecked = Cns_UNCHECKED; /* Set this event as selected? */ if (Events->Lst[NumAttEvent].NumStdsFromList) // Some students attended to this event - Events->Lst[NumAttEvent].Selected = true; + Events->Lst[NumAttEvent].UncheckedOrChecked = Cns_CHECKED; else // No students attended to this event { /***** Get groups associated to an attendance event from database *****/ @@ -2491,7 +2498,7 @@ static void Att_GetListSelectedAttCods (struct Att_Events *Events) /* Get groups associated to this event */ for (NumGrpInThisEvent = 0; NumGrpInThisEvent < NumGrpsInThisEvent && - !Events->Lst[NumAttEvent].Selected; + Events->Lst[NumAttEvent].UncheckedOrChecked == Cns_UNCHECKED; NumGrpInThisEvent++) { /* Get next group associated to this event */ @@ -2499,13 +2506,13 @@ static void Att_GetListSelectedAttCods (struct Att_Events *Events) /* Check if this group is selected */ for (NumGrpSel = 0; NumGrpSel < Gbl.Crs.Grps.LstGrpsSel.NumGrps && - !Events->Lst[NumAttEvent].Selected; + Events->Lst[NumAttEvent].UncheckedOrChecked == Cns_UNCHECKED; NumGrpSel++) if (Gbl.Crs.Grps.LstGrpsSel.GrpCods[NumGrpSel] == GrpCodInThisEvent) - Events->Lst[NumAttEvent].Selected = true; + Events->Lst[NumAttEvent].UncheckedOrChecked = Cns_CHECKED; } else // This event is not associated to groups - Events->Lst[NumAttEvent].Selected = true; + Events->Lst[NumAttEvent].UncheckedOrChecked = Cns_CHECKED; /***** Free structure that stores the query result *****/ DB_FreeMySQLResult (&mysql_res); @@ -2608,6 +2615,7 @@ static void Att_PutButtonToShowDetails (const struct Att_Events *Events) static void Att_ListEventsToSelect (struct Att_Events *Events, Att_TypeOfView_t TypeOfView) { + extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED]; extern const char *Txt_Events; extern const char *Txt_Event; extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS]; @@ -2666,8 +2674,7 @@ static void Att_ListEventsToSelect (struct Att_Events *Events, HTM_INPUT_CHECKBOX ("AttCods",HTM_DONT_SUBMIT_ON_CHANGE, "id=\"Event%u\" value=\"%ld\"%s", NumAttEvent,Events->Event.AttCod, - Events->Lst[NumAttEvent].Selected ? " checked=\"checked\"" : - ""); + HTM_CheckedTxt[Events->Lst[NumAttEvent].UncheckedOrChecked]); HTM_TD_End (); HTM_TD_Begin ("class=\"RT DAT_%s %s\"", @@ -2807,7 +2814,7 @@ static void Att_ListUsrsAttendanceTable (struct Att_Events *Events, for (NumAttEvent = 0, Total = 0; NumAttEvent < Events->Num; NumAttEvent++) - if (Events->Lst[NumAttEvent].Selected) + if (Events->Lst[NumAttEvent].UncheckedOrChecked == Cns_CHECKED) { HTM_TD_LINE_TOP_Unsigned (Events->Lst[NumAttEvent].NumStdsFromList); Total += Events->Lst[NumAttEvent].NumStdsFromList; @@ -2852,7 +2859,7 @@ static void Att_WriteTableHeadSeveralAttEvents (struct Att_Events *Events) for (NumAttEvent = 0; NumAttEvent < Events->Num; NumAttEvent++) - if (Events->Lst[NumAttEvent].Selected) + if (Events->Lst[NumAttEvent].UncheckedOrChecked == Cns_CHECKED) { /***** Get data of this attendance event *****/ Events->Event.AttCod = Events->Lst[NumAttEvent].AttCod; @@ -2888,6 +2895,7 @@ static void Att_WriteRowUsrSeveralAttEvents (const struct Att_Events *Events, }; unsigned NumAttEvent; bool Present; + Cns_UncheckedOrChecked_t UncheckedOrChecked; unsigned NumTimesPresent; /***** Write number of user in the list *****/ @@ -2935,16 +2943,18 @@ static void Att_WriteRowUsrSeveralAttEvents (const struct Att_Events *Events, for (NumAttEvent = 0, NumTimesPresent = 0; NumAttEvent < Events->Num; NumAttEvent++) - if (Events->Lst[NumAttEvent].Selected) + if (Events->Lst[NumAttEvent].UncheckedOrChecked == Cns_CHECKED) { /* Check if this student is already registered in the current event */ // Here it is not necessary to get comments Present = Att_CheckIfUsrIsPresentInEvent (Events->Lst[NumAttEvent].AttCod, - UsrDat->UsrCod); + UsrDat->UsrCod); + UncheckedOrChecked = Present ? Cns_CHECKED : + Cns_UNCHECKED; /* Write check or cross */ HTM_TD_Begin ("class=\"BM %s\"",The_GetColorRows ()); - Att_PutCheckOrCross (Present); + Att_PutCheckOrCross (UncheckedOrChecked); HTM_TD_End (); if (Present) @@ -2966,24 +2976,31 @@ static void Att_WriteRowUsrSeveralAttEvents (const struct Att_Events *Events, /*********************** Put check or cross character ************************/ /*****************************************************************************/ -static void Att_PutCheckOrCross (bool Present) +static void Att_PutCheckOrCross (Cns_UncheckedOrChecked_t UncheckedOrChecked) { extern const char *Txt_Present; extern const char *Txt_Absent; - - if (Present) + static const char *Class[Cns_NUM_UNCHECKED_CHECKED] = { - HTM_DIV_Begin ("class=\"ATT_CHECK ATT_CHECK_%s\" title=\"%s\"", - The_GetSuffix (),Txt_Present); - HTM_Txt ("✓"); - } - else + [Cns_UNCHECKED] = "ATT_CROSS", + [Cns_CHECKED ] = "ATT_CHECK", + }; + static const char **Title[Cns_NUM_UNCHECKED_CHECKED] = { - HTM_DIV_Begin ("class=\"ATT_CROSS ATT_CROSS_%s\" title=\"%s\"", - The_GetSuffix (),Txt_Absent); - HTM_Txt ("✗"); - } + [Cns_UNCHECKED] = &Txt_Absent, + [Cns_CHECKED ] = &Txt_Present, + }; + static const char *Txt[Cns_NUM_UNCHECKED_CHECKED] = + { + [Cns_UNCHECKED] = "✗", + [Cns_CHECKED ] = "✓", + }; + HTM_DIV_Begin ("class=\"%s %s_%s\" title=\"%s\"", + Class[UncheckedOrChecked], + Class[UncheckedOrChecked],The_GetSuffix (), + *Title[UncheckedOrChecked]); + HTM_Txt (Txt[UncheckedOrChecked]); HTM_DIV_End (); } @@ -3060,6 +3077,7 @@ static void Att_ListAttEventsForAStd (struct Att_Events *Events, unsigned UniqueId; char *Id; bool Present; + Cns_UncheckedOrChecked_t UncheckedOrChecked; bool ShowCommentStd; bool ShowCommentTch; char CommentStd[Cns_MAX_BYTES_TEXT + 1]; @@ -3119,7 +3137,7 @@ static void Att_ListAttEventsForAStd (struct Att_Events *Events, for (NumAttEvent = 0, UniqueId = 1; NumAttEvent < Events->Num; NumAttEvent++, UniqueId++) - if (Events->Lst[NumAttEvent].Selected) + if (Events->Lst[NumAttEvent].UncheckedOrChecked == Cns_CHECKED) { /***** Get data of the attendance event from database *****/ Events->Event.AttCod = Events->Lst[NumAttEvent].AttCod; @@ -3128,6 +3146,8 @@ static void Att_ListAttEventsForAStd (struct Att_Events *Events, /***** Get comments for this student *****/ Present = Att_CheckIfUsrIsPresentInEventAndGetComments (Events->Event.AttCod,UsrDat->UsrCod,CommentStd,CommentTch); + UncheckedOrChecked = Present ? Cns_CHECKED : + Cns_UNCHECKED; ShowCommentStd = CommentStd[0]; ShowCommentTch = CommentTch[0] && (Gbl.Usrs.Me.Role.Logged == Rol_TCH || @@ -3147,7 +3167,7 @@ static void Att_ListAttEventsForAStd (struct Att_Events *Events, HTM_TD_End (); HTM_TD_Begin ("class=\"BT %s\"",The_GetColorRows ()); - Att_PutCheckOrCross (Present); + Att_PutCheckOrCross (UncheckedOrChecked); HTM_TD_End (); HTM_TD_Begin ("class=\"LT DAT_%s %s\"", diff --git a/swad_attendance.h b/swad_attendance.h index 358636e90..3ae6cea5c 100644 --- a/swad_attendance.h +++ b/swad_attendance.h @@ -70,7 +70,7 @@ struct Att_Events { long AttCod; // Attendance event code unsigned NumStdsFromList; // Number of students (taken from a list) who has assisted to the event - bool Selected; // I have selected this attendance event + Cns_UncheckedOrChecked_t UncheckedOrChecked; // Do I have selected this attendance event? } *Lst; // List of attendance events Dat_StartEndTime_t SelectedOrder; struct Att_Event Event; // Selected/current event diff --git a/swad_browser.c b/swad_browser.c index a36b34536..9bcb1aa60 100644 --- a/swad_browser.c +++ b/swad_browser.c @@ -2883,10 +2883,12 @@ void Brw_PutLegalNotice (void) static void Brw_FormToChangeCrsGrpZone (void) { + extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED]; extern const char *Par_CodeStr[Par_NUM_PAR_COD]; struct ListCodGrps LstMyGrps; unsigned NumGrp; struct GroupData GrpDat; + Cns_UncheckedOrChecked_t UncheckedOrChecked; /***** Get list of groups to show *****/ if (Gbl.Crs.Grps.NumGrps) // This course has groups? @@ -2905,10 +2907,11 @@ static void Brw_FormToChangeCrsGrpZone (void) Brw_TypeIsCrsBrw[Gbl.FileBrowser.Type] ? "BROWSER_TITLE" : "BROWSER_TITLE_LIGHT"); HTM_LABEL_Begin (NULL); + UncheckedOrChecked = Brw_TypeIsCrsBrw[Gbl.FileBrowser.Type] ? Cns_CHECKED : + Cns_UNCHECKED; HTM_INPUT_RADIO (Par_CodeStr[ParCod_Grp],HTM_SUBMIT_ON_CLICK, "value=\"-1\"%s", - Brw_TypeIsCrsBrw[Gbl.FileBrowser.Type] ? " checked=\"checked\"" : - ""); + HTM_CheckedTxt[UncheckedOrChecked]); HTM_Txt (Gbl.Hierarchy.Node[Hie_CRS].FullName); HTM_LABEL_End (); HTM_LI_End (); @@ -2935,12 +2938,12 @@ static void Brw_FormToChangeCrsGrpZone (void) NULL, "class=\"ICO25x25\" style=\"margin-left:6px;\""); HTM_LABEL_Begin (NULL); + UncheckedOrChecked = (Brw_TypeIsGrpBrw[Gbl.FileBrowser.Type] && + GrpDat.GrpCod == Gbl.Crs.Grps.GrpCod) ? Cns_CHECKED : + Cns_UNCHECKED; HTM_INPUT_RADIO (Par_CodeStr[ParCod_Grp],HTM_SUBMIT_ON_CLICK, "value=\"%ld\"%s", - GrpDat.GrpCod, - (Brw_TypeIsGrpBrw[Gbl.FileBrowser.Type] && - GrpDat.GrpCod == Gbl.Crs.Grps.GrpCod) ? " checked=\"checked\"" : - ""); + GrpDat.GrpCod,HTM_CheckedTxt[UncheckedOrChecked]); HTM_TxtF ("%s %s",GrpDat.GrpTypName,GrpDat.GrpName); HTM_LABEL_End (); HTM_LI_End (); diff --git a/swad_changelog.h b/swad_changelog.h index 025b4a992..b3c2604bd 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -633,10 +633,11 @@ Me sale este error, no s "can npt create received message (duplicated entry '243218-2160773' for key 'UsrCod_MsgCod') */ -#define Log_PLATFORM_VERSION "SWAD 23.79.4 (2024-04-25)" +#define Log_PLATFORM_VERSION "SWAD 23.79.5 (2024-04-26)" #define CSS_FILE "swad23.67.2.css" #define JS_FILE "swad23.79.js" /* + Version 23.79.5: Apr 26, 2024 Code refactoring in HTML related to checked field in forms. (335739 lines) Version 23.79.4: Apr 25, 2024 Code refactoring in HTML related to checked field in forms. (335739 lines) Version 23.79.3: Apr 24, 2024 Code refactoring in HTML related to disabled field in forms. (335766 lines) Version 23.79.2: Apr 24, 2024 Code refactoring in HTML related to disabled field in forms. (335766 lines) diff --git a/swad_cookie.c b/swad_cookie.c index 3900acf5c..fb5e76f40 100644 --- a/swad_cookie.c +++ b/swad_cookie.c @@ -63,8 +63,10 @@ static void Coo_PutIconsCookies (__attribute__((unused)) void *Args); void Coo_EditMyPrefsOnCookies (void) { extern const char *Hlp_PROFILE_Settings_cookies; + extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED]; extern const char *Txt_Cookies; extern const char *Txt_Accept_third_party_cookies_to_view_multimedia_content_from_other_websites; + Cns_UncheckedOrChecked_t UncheckedOrChecked; /***** Begin section with preferences about cookies *****/ HTM_SECTION_Begin (Coo_COOKIES_ID); @@ -92,10 +94,11 @@ void Coo_EditMyPrefsOnCookies (void) /* Check box */ HTM_LABEL_Begin (NULL); + UncheckedOrChecked = (Gbl.Usrs.Me.UsrDat.Prefs.RefuseAcceptCookies == Coo_ACCEPT) ? Cns_CHECKED : + Cns_UNCHECKED; HTM_INPUT_CHECKBOX ("cookies",HTM_SUBMIT_ON_CHANGE, "value=\"Y\"%s", - (Gbl.Usrs.Me.UsrDat.Prefs.RefuseAcceptCookies == Coo_ACCEPT) ? " checked=\"checked\"" : - ""); + HTM_CheckedTxt[UncheckedOrChecked]); HTM_Txt (Txt_Accept_third_party_cookies_to_view_multimedia_content_from_other_websites); HTM_LABEL_End (); diff --git a/swad_date.c b/swad_date.c index 70702c1b4..cd0084edc 100644 --- a/swad_date.c +++ b/swad_date.c @@ -287,8 +287,10 @@ void Dat_ResetHour (struct Dat_Hour *Hour) void Dat_PutBoxToSelectDateFormat (void) { extern const char *Hlp_PROFILE_Settings_dates; + extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED]; extern const char *Txt_Dates; Dat_Format_t Format; + Cns_UncheckedOrChecked_t UncheckedOrChecked; /***** Begin box *****/ Box_BoxBegin (Txt_Dates,Dat_PutIconsDateFormat,NULL, @@ -311,11 +313,12 @@ void Dat_PutBoxToSelectDateFormat (void) HTM_LI_Begin ("class=\"DAT_%s\"", The_GetSuffix ()); HTM_LABEL_Begin (NULL); + UncheckedOrChecked = (Format == Gbl.Prefs.DateFormat) ? Cns_CHECKED : + Cns_UNCHECKED; HTM_INPUT_RADIO ("DateFormat",HTM_SUBMIT_ON_CLICK, " value=\"%u\"%s", (unsigned) Format, - (Format == Gbl.Prefs.DateFormat) ? " checked=\"checked\"" : - ""); + HTM_CheckedTxt[UncheckedOrChecked]); Dat_PutSpanDateFormat (Format); Dat_PutScriptDateFormat (Format); HTM_LABEL_End (); diff --git a/swad_enrolment.c b/swad_enrolment.c index 2382e176f..05d52739f 100644 --- a/swad_enrolment.c +++ b/swad_enrolment.c @@ -803,6 +803,7 @@ static void Enr_PutAreaToEnterUsrsIDs (void) static void Enr_PutActionsRegRemSeveralUsrs (void) { + extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED]; extern const char *Txt_Register_the_users_indicated_in_step_1; extern const char *Txt_Remove_the_users_indicated_in_step_1; extern const char *Txt_Remove_the_users_not_indicated_in_step_1; @@ -818,8 +819,9 @@ static void Enr_PutActionsRegRemSeveralUsrs (void) HTM_LI_Begin (NULL); HTM_LABEL_Begin (NULL); HTM_INPUT_RADIO ("RegRemAction",HTM_DONT_SUBMIT_ON_CLICK, - " value=\"%u\" checked=\"checked\"", - (unsigned) Enr_REGISTER_SPECIFIED_USRS_IN_CRS); + " value=\"%u\"%s", + (unsigned) Enr_REGISTER_SPECIFIED_USRS_IN_CRS, + HTM_CheckedTxt[Cns_CHECKED]); HTM_Txt (Txt_Register_the_users_indicated_in_step_1); HTM_LABEL_End (); HTM_LI_End (); @@ -2179,7 +2181,7 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected) 1 << Rol_NET | 1 << Rol_TCH, RolesSelected, - false, + Cns_DISABLED, HTM_SUBMIT_ON_CHANGE); HTM_TD_End (); diff --git a/swad_exam.c b/swad_exam.c index 752869213..07c441ea6 100644 --- a/swad_exam.c +++ b/swad_exam.c @@ -829,7 +829,7 @@ void Exa_GetListSelectedExaCods (struct Exa_Exams *Exams) for (NumExam = 0; NumExam < Exams->Num; NumExam++) - Exams->Lst[NumExam].Selected = false; + Exams->Lst[NumExam].UncheckedOrChecked = Cns_UNCHECKED; Exams->NumSelected = 0; /* Set some exams as selected */ @@ -847,7 +847,7 @@ void Exa_GetListSelectedExaCods (struct Exa_Exams *Exams) NumExam++) if (Exams->Lst[NumExam].ExaCod == ExaCod) { - Exams->Lst[NumExam].Selected = true; + Exams->Lst[NumExam].UncheckedOrChecked = Cns_CHECKED; Exams->NumSelected++; break; } @@ -859,7 +859,7 @@ void Exa_GetListSelectedExaCods (struct Exa_Exams *Exams) for (NumExam = 0; NumExam < Exams->Num; NumExam++) - Exams->Lst[NumExam].Selected = true; + Exams->Lst[NumExam].UncheckedOrChecked = Cns_CHECKED; Exams->NumSelected = Exams->Num; } } diff --git a/swad_exam_print.c b/swad_exam_print.c index c7d9c7b72..38a2b32f5 100644 --- a/swad_exam_print.c +++ b/swad_exam_print.c @@ -840,9 +840,10 @@ static void ExaPrn_WriteChoAnsToFill (const struct ExaPrn_Print *Print, unsigned QstInd, struct Qst_Question *Question) { + extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED]; unsigned NumOpt; unsigned Indexes[Qst_MAX_OPTIONS_PER_QUESTION]; // Indexes of all answers of this question - bool UsrAnswers[Qst_MAX_OPTIONS_PER_QUESTION]; + Cns_UncheckedOrChecked_t UsrAnswers[Qst_MAX_OPTIONS_PER_QUESTION]; char Id[3 + Cns_MAX_DECIMAL_DIGITS_UINT + 1]; // "Ansxx...x" /***** Change format of answers text *****/ @@ -875,8 +876,7 @@ static void ExaPrn_WriteChoAnsToFill (const struct ExaPrn_Print *Print, Question->Answer.Type == Qst_ANS_UNIQUE_CHOICE ? "radio" : "checkbox", Id,NumOpt,Indexes[NumOpt], - UsrAnswers[Indexes[NumOpt]] ? " checked=\"checked\"" : - ""); + HTM_CheckedTxt[UsrAnswers[Indexes[NumOpt]]]); ExaPrn_WriteJSToUpdateExamPrint (Print,QstInd,Id,(int) NumOpt); HTM_Txt (" />"); HTM_TD_End (); diff --git a/swad_exam_result.c b/swad_exam_result.c index 42e45eeb7..22ff60896 100644 --- a/swad_exam_result.c +++ b/swad_exam_result.c @@ -554,6 +554,7 @@ static void ExaRes_ShowResultsEnd (void) static void ExaRes_ListExamsToSelect (struct Exa_Exams *Exams) { + extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED]; extern const char *Par_CodeStr[Par_NUM_PAR_COD]; extern const char *Txt_Exams; extern const char *Txt_Exam; @@ -600,8 +601,7 @@ static void ExaRes_ListExamsToSelect (struct Exa_Exams *Exams) HTM_INPUT_CHECKBOX (Par_CodeStr[ParCod_Exa],HTM_DONT_SUBMIT_ON_CHANGE, "id=\"Gam%u\" value=\"%ld\"%s", NumExam,Exams->Lst[NumExam].ExaCod, - Exams->Lst[NumExam].Selected ? " checked=\"checked\"" : - ""); + HTM_CheckedTxt[Exams->Lst[NumExam].UncheckedOrChecked]); HTM_TD_End (); HTM_TD_Begin ("class=\"RT DAT_%s %s\"", @@ -718,7 +718,7 @@ static void ExaRes_BuildExamsSelectedCommas (struct Exa_Exams *Exams, for (NumExam = 0; NumExam < Exams->Num; NumExam++) - if (Exams->Lst[NumExam].Selected) + if (Exams->Lst[NumExam].UncheckedOrChecked == Cns_CHECKED) { sprintf (LongStr,"%ld",Exams->Lst[NumExam].ExaCod); if ((*ExamsSelectedCommas)[0]) diff --git a/swad_exam_session.c b/swad_exam_session.c index 83f35fcfb..d3ebdc355 100644 --- a/swad_exam_session.c +++ b/swad_exam_session.c @@ -983,8 +983,10 @@ static void ExaSes_ParsFormSession (void *Session) static void ExaSes_ShowLstGrpsToCreateSession (long SesCod) { + extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED]; extern const char *Txt_Groups; unsigned NumGrpTyp; + Cns_UncheckedOrChecked_t UncheckedOrChecked; /***** Get list of groups types and groups in this course *****/ Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS); @@ -1007,13 +1009,14 @@ static void ExaSes_ShowLstGrpsToCreateSession (long SesCod) HTM_TD_Begin ("colspan=\"7\" class=\"LM DAT_%s\"", The_GetSuffix ()); HTM_LABEL_Begin (NULL); + UncheckedOrChecked = Grp_DB_CheckIfAssociatedToGrps ("exa_groups", + "SesCod", + SesCod) ? Cns_CHECKED : + Cns_UNCHECKED; HTM_INPUT_CHECKBOX ("WholeCrs",HTM_DONT_SUBMIT_ON_CHANGE, "id=\"WholeCrs\" value=\"Y\"%s" " onclick=\"uncheckChildren(this,'GrpCods')\"", - Grp_DB_CheckIfAssociatedToGrps ("exa_groups", - "SesCod", - SesCod) ? "" : - " checked=\"checked\""); + HTM_CheckedTxt[UncheckedOrChecked]); Grp_WriteTheWholeCourse (); HTM_LABEL_End (); HTM_TD_End (); diff --git a/swad_exam_type.h b/swad_exam_type.h index 456dac108..c60a6a85c 100644 --- a/swad_exam_type.h +++ b/swad_exam_type.h @@ -72,7 +72,7 @@ typedef enum struct Exa_ExamSelected { long ExaCod; // Exam code - bool Selected; // Is this exam selected when seeing match results? + Cns_UncheckedOrChecked_t UncheckedOrChecked; // Is this exam selected when seeing match results? }; struct Exa_Exam diff --git a/swad_forum.c b/swad_forum.c index 75a6912b7..93f9626c1 100644 --- a/swad_forum.c +++ b/swad_forum.c @@ -1432,8 +1432,10 @@ static void For_PutIconsForums (__attribute__((unused)) void *Args) static void For_PutFormWhichForums (const struct For_Forums *Forums) { + extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED]; extern const char *Txt_FORUM_WHICH_FORUM[For_NUM_FORUM_SETS]; For_ForumSet_t ForumSet; + Cns_UncheckedOrChecked_t UncheckedOrChecked; /***** Form to select which forums I want to see: - all my forums @@ -1449,11 +1451,12 @@ static void For_PutFormWhichForums (const struct For_Forums *Forums) { HTM_LI_Begin (NULL); HTM_LABEL_Begin (NULL); + UncheckedOrChecked = (ForumSet == Forums->ForumSet) ? Cns_UNCHECKED : + Cns_CHECKED; HTM_INPUT_RADIO ("ForumSet",HTM_SUBMIT_ON_CLICK, "value=\"%u\"%s", (unsigned) ForumSet, - (ForumSet == Forums->ForumSet) ? " checked=\"checked\"" : - ""); + HTM_CheckedTxt[UncheckedOrChecked]); HTM_Txt (Txt_FORUM_WHICH_FORUM[ForumSet]); HTM_LABEL_End (); HTM_LI_End (); diff --git a/swad_game.c b/swad_game.c index e91bcdbef..54851f743 100644 --- a/swad_game.c +++ b/swad_game.c @@ -908,7 +908,7 @@ void Gam_GetListSelectedGamCods (struct Gam_Games *Games) for (NumGame = 0; NumGame < Games->Num; NumGame++) - Games->Lst[NumGame].Selected = false; + Games->Lst[NumGame].UncheckedOrChecked = Cns_UNCHECKED; /* Set some games as selected */ for (Ptr = Games->GamCodsSelected; @@ -925,7 +925,7 @@ void Gam_GetListSelectedGamCods (struct Gam_Games *Games) NumGame++) if (Games->Lst[NumGame].GamCod == GamCod) { - Games->Lst[NumGame].Selected = true; + Games->Lst[NumGame].UncheckedOrChecked = Cns_CHECKED; Games->NumSelected++; break; } @@ -937,7 +937,7 @@ void Gam_GetListSelectedGamCods (struct Gam_Games *Games) for (NumGame = 0; NumGame < Games->Num; NumGame++) - Games->Lst[NumGame].Selected = true; + Games->Lst[NumGame].UncheckedOrChecked = Cns_CHECKED; Games->NumSelected = Games->Num; } } diff --git a/swad_game.h b/swad_game.h index 8f6a87ade..886e6f589 100644 --- a/swad_game.h +++ b/swad_game.h @@ -66,7 +66,7 @@ typedef enum struct Gam_GameSelected { long GamCod; // Game code - bool Selected; // Is this game selected when seeing match results? + Cns_UncheckedOrChecked_t UncheckedOrChecked; // Is this game selected when seeing match results? }; struct Gam_Game diff --git a/swad_group.c b/swad_group.c index 6c6fe0e50..cef04b5a7 100644 --- a/swad_group.c +++ b/swad_group.c @@ -409,8 +409,10 @@ void Grp_ShowFormToSelectSeveralGroups (Act_Action_t NextAction, static void Grp_PutCheckboxAllGrps (void) { + extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED]; extern const char *Txt_All_groups; Usr_Can_t ICanSelUnselGroup; + Cns_UncheckedOrChecked_t UncheckedOrChecked; switch (Gbl.Usrs.Me.Role.Logged) { @@ -428,11 +430,13 @@ static void Grp_PutCheckboxAllGrps (void) HTM_DIV_Begin ("class=\"CONTEXT_OPT\""); HTM_LABEL_Begin ("class=\"FORM_IN_%s\"",The_GetSuffix ()); + UncheckedOrChecked = (ICanSelUnselGroup == Usr_CAN && + Gbl.Crs.Grps.AllGrps) ? Cns_UNCHECKED : + Cns_CHECKED; HTM_INPUT_CHECKBOX ("AllGroups",HTM_DONT_SUBMIT_ON_CHANGE, - "value=\"Y\"%s", - ICanSelUnselGroup == Usr_CAN ? (Gbl.Crs.Grps.AllGrps ? " checked=\"checked\"" - " onclick=\"togglecheckChildren(this,'GrpCods')\"" : - " onclick=\"togglecheckChildren(this,'GrpCods')\"") : + "value=\"Y\"%s%s", + HTM_CheckedTxt[UncheckedOrChecked], + (ICanSelUnselGroup == Usr_CAN) ? " onclick=\"togglecheckChildren(this,'GrpCods')\"" : " disabled=\"disabled\""); HTM_NBSPTxt (Txt_All_groups); HTM_LABEL_End (); @@ -1631,6 +1635,7 @@ void Grp_ListGrpsToEditAsgAttSvyEvtMch (struct GroupType *GrpTyp, Grp_WhichIsAssociatedToGrp_t WhichIsAssociatedToGrp, long Cod) // Assignment, attendance event, survey, exam event or match { + extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED]; static const struct { const char *Table; @@ -1647,7 +1652,7 @@ void Grp_ListGrpsToEditAsgAttSvyEvtMch (struct GroupType *GrpTyp, unsigned NumGrpThisType; bool IBelongToThisGroup; struct Group *Grp; - bool AssociatedToGrp; + Cns_UncheckedOrChecked_t UncheckedOrChecked; /***** Write heading *****/ Grp_WriteGrpHead (GrpTyp); @@ -1664,12 +1669,12 @@ void Grp_ListGrpsToEditAsgAttSvyEvtMch (struct GroupType *GrpTyp, Grp = &(GrpTyp->LstGrps[NumGrpThisType]); IBelongToThisGroup = Grp_CheckIfGrpIsInList (Grp->GrpCod,&LstGrpsIBelong); + UncheckedOrChecked = Cns_UNCHECKED; if (Cod > 0) // Cod == -1L means new item, assignment, event, survey, exam event or match - AssociatedToGrp = Grp_DB_CheckIfAssociatedToGrp (AssociationsToGrps[WhichIsAssociatedToGrp].Table, - AssociationsToGrps[WhichIsAssociatedToGrp].Field, - Cod,Grp->GrpCod); - else - AssociatedToGrp = false; + if (Grp_DB_CheckIfAssociatedToGrp (AssociationsToGrps[WhichIsAssociatedToGrp].Table, + AssociationsToGrps[WhichIsAssociatedToGrp].Field, + Cod,Grp->GrpCod)) + UncheckedOrChecked = Cns_CHECKED; /* Put checkbox to select the group */ HTM_TR_Begin (NULL); @@ -1680,8 +1685,7 @@ void Grp_ListGrpsToEditAsgAttSvyEvtMch (struct GroupType *GrpTyp, "id=\"Grp%ld\" value=\"%ld\"%s%s" " onclick=\"uncheckParent(this,'WholeCrs')\"", Grp->GrpCod,Grp->GrpCod, - AssociatedToGrp ? " checked=\"checked\"" : - "", + HTM_CheckedTxt[UncheckedOrChecked], (IBelongToThisGroup || Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) ? "" : " disabled=\"disabled\""); @@ -1845,6 +1849,7 @@ static void Grp_ShowWarningToStdsToChangeGrps (void) static Usr_Can_t Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp, unsigned *NumGrpsThisTypeIBelong) { + extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED]; struct ListCodGrps LstGrpsIBelong; unsigned NumGrpThisType; struct Group *Grp; @@ -1852,6 +1857,7 @@ static Usr_Can_t Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp, bool IBelongToAClosedGroup; Usr_Can_t ICanChangeMySelectionForThisGrpTyp; Usr_Can_t ICanChangeMySelectionForThisGrp; + Cns_UncheckedOrChecked_t UncheckedOrChecked; char StrGrpCod[32]; /***** Write heading *****/ @@ -1968,7 +1974,8 @@ static Usr_Can_t Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp, HTM_TD_Begin (IBelongToThisGroup ? "class=\"LM BG_HIGHLIGHT\"" : "class=\"LM\""); - + UncheckedOrChecked = IBelongToThisGroup ? Cns_CHECKED : + Cns_UNCHECKED; snprintf (StrGrpCod,sizeof (StrGrpCod),"GrpCod%ld",GrpTyp->GrpTypCod); if (Gbl.Usrs.Me.Role.Logged == Rol_STD && // If I am a student !GrpTyp->MultipleEnrolment && // ...and the enrolment is single @@ -1979,7 +1986,7 @@ static Usr_Can_t Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp, HTM_INPUT_RADIO (StrGrpCod,HTM_DONT_SUBMIT_ON_CLICK, "id=\"Grp%ld\" value=\"%ld\"%s%s", Grp->GrpCod,Grp->GrpCod, - IBelongToThisGroup ? " checked=\"checked\"" : "", // Group selected? + HTM_CheckedTxt[UncheckedOrChecked], // Group selected? ICanChangeMySelectionForThisGrp == Usr_CAN ? "" : IBelongToThisGroup ? " readonly" : // I can not unregister (disabled does not work because the value is not submitted) " disabled=\"disabled\""); // I can not register @@ -1988,7 +1995,7 @@ static Usr_Can_t Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp, "id=\"Grp%ld\" value=\"%ld\"%s%s" " onclick=\"selectUnselectRadio(this,this.form.GrpCod%ld,%u)\"", Grp->GrpCod,Grp->GrpCod, - IBelongToThisGroup ? " checked=\"checked\"" : "", // Group selected? + HTM_CheckedTxt[UncheckedOrChecked], // Group selected? ICanChangeMySelectionForThisGrp == Usr_CAN ? "" : IBelongToThisGroup ? " readonly" : // I can not unregister (disabled does not work because the value is not submitted) " disabled=\"disabled\"", // I can not register @@ -1999,7 +2006,7 @@ static Usr_Can_t Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp, HTM_INPUT_CHECKBOX (StrGrpCod,HTM_DONT_SUBMIT_ON_CHANGE, "id=\"Grp%ld\" value=\"%ld\"%s%s", Grp->GrpCod,Grp->GrpCod, - IBelongToThisGroup ? " checked=\"checked\"" : "", + HTM_CheckedTxt[UncheckedOrChecked], // Group selected? ICanChangeMySelectionForThisGrp == Usr_CAN ? "" : IBelongToThisGroup ? " readonly" : // I can not unregister (disabled does not work because the value is not submitted) " disabled=\"disabled\""); // I can not register @@ -2059,9 +2066,11 @@ void Grp_ShowLstGrpsToChgOtherUsrsGrps (long UsrCod) static void Grp_ListGrpsToAddOrRemUsrs (struct GroupType *GrpTyp,long UsrCod) { + extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED]; struct ListCodGrps LstGrpsUsrBelongs; unsigned NumGrpThisType; bool UsrBelongsToThisGroup; + Cns_UncheckedOrChecked_t UncheckedOrChecked; struct Group *Grp; char StrGrpCod[32]; @@ -2092,12 +2101,13 @@ static void Grp_ListGrpsToAddOrRemUsrs (struct GroupType *GrpTyp,long UsrCod) /* Put checkbox to select the group */ // Always checkbox, not radio, because the role in the form may be teacher, // so if he/she is registered as teacher, he/she can belong to several groups + UncheckedOrChecked = UsrBelongsToThisGroup ? Cns_CHECKED : + Cns_UNCHECKED; snprintf (StrGrpCod,sizeof (StrGrpCod),"GrpCod%ld",GrpTyp->GrpTypCod); HTM_INPUT_CHECKBOX (StrGrpCod,HTM_DONT_SUBMIT_ON_CHANGE, "id=\"Grp%ld\" value=\"%ld\"%s", Grp->GrpCod,Grp->GrpCod, - UsrBelongsToThisGroup ? " checked=\"checked\"" : - ""); // I can not register + HTM_CheckedTxt[UncheckedOrChecked]); /* End cell for checkbox */ HTM_TD_End (); diff --git a/swad_indicator.c b/swad_indicator.c index 08a1c175a..c7ab294d2 100644 --- a/swad_indicator.c +++ b/swad_indicator.c @@ -211,7 +211,7 @@ void Ind_ReqIndicatorsCourses (void) for (Ind = 0, NumCrssToList = 0; Ind <= Ind_NUM_INDICATORS; Ind++) - if (Indicators.IndicatorsSelected[Ind]) + if (Indicators.IndicatorsSelected[Ind] == Cns_CHECKED) NumCrssToList += NumCrssWithIndicatorYes[Ind]; if (Ind_GetIfShowBigList (&Indicators,NumCrssToList)) { @@ -314,7 +314,7 @@ static void Ind_GetParNumIndicators (struct Ind_Indicators *Indicators) for (Ind = 0; Ind <= Ind_NUM_INDICATORS; Ind++) - Indicators->IndicatorsSelected[Ind] = false; + Indicators->IndicatorsSelected[Ind] = Cns_UNCHECKED; /* Set indicators selected */ for (Ptr = Indicators->StrIndicatorsSelected; @@ -330,7 +330,7 @@ static void Ind_GetParNumIndicators (struct Ind_Indicators *Indicators) Ind <= Ind_NUM_INDICATORS; Ind++) if ((long) Ind == Indicator) - Indicators->IndicatorsSelected[Ind] = true; + Indicators->IndicatorsSelected[Ind] = Cns_CHECKED; } } else @@ -338,7 +338,7 @@ static void Ind_GetParNumIndicators (struct Ind_Indicators *Indicators) for (Ind = 0; Ind <= Ind_NUM_INDICATORS; Ind++) - Indicators->IndicatorsSelected[Ind] = true; + Indicators->IndicatorsSelected[Ind] = Cns_CHECKED; } /*****************************************************************************/ @@ -438,6 +438,7 @@ static void Ind_ShowNumCoursesWithIndicators (const struct Ind_Indicators *Indic unsigned NumCrss, Frm_PutForm_t PutForm) { + extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED]; extern const char *Txt_HIERARCHY_PLURAL_Abc[Hie_NUM_LEVELS]; extern const char *Txt_Total; char *ClassNormal; @@ -466,8 +467,8 @@ static void Ind_ShowNumCoursesWithIndicators (const struct Ind_Indicators *Indic Ind <= Ind_NUM_INDICATORS; Ind++) { - Class = Indicators->IndicatorsSelected[Ind] ? ClassHighlight : - ClassNormal; + Class = (Indicators->IndicatorsSelected[Ind] == Cns_CHECKED) ? ClassHighlight : + ClassNormal; HTM_TR_Begin (NULL); if (PutForm == Frm_PUT_FORM) @@ -476,8 +477,7 @@ static void Ind_ShowNumCoursesWithIndicators (const struct Ind_Indicators *Indic HTM_INPUT_CHECKBOX ("Indicators",HTM_SUBMIT_ON_CHANGE, "id=\"Indicators%u\" value=\"%u\"%s", Ind,Ind, - Indicators->IndicatorsSelected[Ind] ? " checked=\"checked\"" : - ""); + HTM_CheckedTxt[Indicators->IndicatorsSelected[Ind]]); HTM_TD_End (); } @@ -688,13 +688,13 @@ static void Ind_ShowTableOfCoursesWithIndicators (const struct Ind_Indicators *I /* Get stored number of indicators of this course */ NumIndicators = Ind_GetAndUpdateNumIndicatorsCrs (CrsCod); - if (Indicators->IndicatorsSelected[NumIndicators]) + if (Indicators->IndicatorsSelected[NumIndicators] == Cns_CHECKED) { /* Compute and store indicators */ Ind_ComputeAndStoreIndicatorsCrs (CrsCod,(int) NumIndicators,&IndicatorsCrs); /* The number of indicators may have changed */ - if (Indicators->IndicatorsSelected[IndicatorsCrs.NumIndicators]) + if (Indicators->IndicatorsSelected[IndicatorsCrs.NumIndicators] == Cns_CHECKED) { ActCod = Act_GetActCod (ActReqStaCrs); diff --git a/swad_indicator.h b/swad_indicator.h index 48b6c6e19..a93619b6f 100644 --- a/swad_indicator.h +++ b/swad_indicator.h @@ -66,7 +66,7 @@ struct Ind_Indicators long DegTypCod; long DptCod; char StrIndicatorsSelected[Ind_MAX_SIZE_INDICATORS_SELECTED + 1]; - bool IndicatorsSelected[1 + Ind_NUM_INDICATORS]; + Cns_UncheckedOrChecked_t IndicatorsSelected[1 + Ind_NUM_INDICATORS]; }; /*****************************************************************************/ diff --git a/swad_info.c b/swad_info.c index b819cdcfd..b26d3f2ae 100644 --- a/swad_info.c +++ b/swad_info.c @@ -815,6 +815,7 @@ void Inf_FormsToSelSendInfo (void) extern const char *Hlp_COURSE_FAQ_edit; extern const char *Hlp_COURSE_Links_edit; extern const char *Hlp_COURSE_Assessment_edit; + extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED]; extern const char *Txt_Source_of_information; extern const char *Txt_INFO_SRC_FULL_TEXT[Inf_NUM_SOURCES]; extern const char *Txt_INFO_SRC_HELP[Inf_NUM_SOURCES]; @@ -822,6 +823,7 @@ void Inf_FormsToSelSendInfo (void) struct Inf_FromDB FromDB; Inf_Src_t InfoSrc; bool InfoAvailable[Inf_NUM_SOURCES]; + Cns_UncheckedOrChecked_t UncheckedOrChecked; static Act_Action_t Inf_ActionsSelecInfoSrc[Inf_NUM_TYPES] = { [Inf_INFORMATION ] = ActSelInfSrcCrsInf, @@ -902,16 +904,18 @@ void Inf_FormsToSelSendInfo (void) ""); Frm_BeginForm (Inf_ActionsSelecInfoSrc[Gbl.Crs.Info.Type]); Syl_PutParWhichSyllabus (&Syllabus.WhichSyllabus); + UncheckedOrChecked = (InfoSrc == FromDB.Src) ? Cns_CHECKED : + Cns_UNCHECKED; HTM_INPUT_RADIO ("InfoSrc",InfoSrc != FromDB.Src && (InfoSrc == Inf_NONE || InfoAvailable[InfoSrc]) ? HTM_SUBMIT_ON_CLICK : HTM_DONT_SUBMIT_ON_CLICK, - "id=\"InfoSrc%u\" value=\"%u\"%s", + "id=\"InfoSrc%u\" value=\"%u\"%s%s", (unsigned) InfoSrc,(unsigned) InfoSrc, - InfoSrc == FromDB.Src ? " checked=\"checked\"" : - (InfoSrc == Inf_NONE || - InfoAvailable[InfoSrc]) ? "" : // Info available for this source - " disabled=\"disabled\""); + HTM_CheckedTxt[UncheckedOrChecked], + (InfoSrc == Inf_NONE || + InfoAvailable[InfoSrc]) ? "" : // Info available for this source + " disabled=\"disabled\""); Frm_EndForm (); HTM_TD_End (); diff --git a/swad_match.c b/swad_match.c index 222a59fe4..8a4d789ef 100644 --- a/swad_match.c +++ b/swad_match.c @@ -1241,8 +1241,10 @@ static void Mch_ParsFormMatch (void *Match) static void Mch_ShowLstGrpsToEditMatch (long MchCod) { + extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED]; extern const char *Txt_Groups; unsigned NumGrpTyp; + Cns_UncheckedOrChecked_t UncheckedOrChecked; /***** Get list of groups types and groups in this course *****/ Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS); @@ -1260,21 +1262,20 @@ static void Mch_ShowLstGrpsToEditMatch (long MchCod) /***** First row: checkbox to select the whole course *****/ HTM_TR_Begin (NULL); - HTM_TD_Begin ("colspan=\"7\" class=\"LM DAT_%s\"", The_GetSuffix ()); HTM_LABEL_Begin (NULL); + UncheckedOrChecked = Grp_DB_CheckIfAssociatedToGrps ("mch_groups", + "MchCod", + MchCod) ? Cns_CHECKED : + Cns_UNCHECKED; HTM_INPUT_CHECKBOX ("WholeCrs",HTM_DONT_SUBMIT_ON_CHANGE, "id=\"WholeCrs\" value=\"Y\"%s" " onclick=\"uncheckChildren(this,'GrpCods')\"", - Grp_DB_CheckIfAssociatedToGrps ("mch_groups", - "MchCod", - MchCod) ? "" : - " checked=\"checked\""); + HTM_CheckedTxt[UncheckedOrChecked]); Grp_WriteTheWholeCourse (); HTM_LABEL_End (); HTM_TD_End (); - HTM_TR_End (); /***** List the groups for each group type *****/ diff --git a/swad_match_result.c b/swad_match_result.c index 1a15e8068..5c58e65d2 100644 --- a/swad_match_result.c +++ b/swad_match_result.c @@ -518,6 +518,7 @@ static void MchRes_ShowResultsEnd (void) static void MchRes_ListGamesToSelect (struct Gam_Games *Games) { + extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED]; extern const char *Par_CodeStr[Par_NUM_PAR_COD]; extern const char *Txt_Games; extern const char *Txt_Game; @@ -564,8 +565,7 @@ static void MchRes_ListGamesToSelect (struct Gam_Games *Games) HTM_INPUT_CHECKBOX (Par_CodeStr[ParCod_Gam],HTM_DONT_SUBMIT_ON_CHANGE, "id=\"Gam%u\" value=\"%ld\"%s", NumGame,Games->Lst[NumGame].GamCod, - Games->Lst[NumGame].Selected ? " checked=\"checked\"" : - ""); + HTM_CheckedTxt[Games->Lst[NumGame].UncheckedOrChecked]); HTM_TD_End (); HTM_TD_Begin ("class=\"RT DAT_%s %s\"", @@ -671,7 +671,7 @@ static void MchRes_BuildGamesSelectedCommas (struct Gam_Games *Games, for (NumGame = 0; NumGame < Games->Num; NumGame++) - if (Games->Lst[NumGame].Selected) + if (Games->Lst[NumGame].UncheckedOrChecked == Cns_CHECKED) { sprintf (LongStr,"%ld",Games->Lst[NumGame].GamCod); if ((*GamesSelectedCommas)[0]) diff --git a/swad_message.c b/swad_message.c index afb0ae83b..86f84ddc7 100644 --- a/swad_message.c +++ b/swad_message.c @@ -1900,14 +1900,17 @@ static void Msg_ShowFormToFilterMsgs (const struct Msg_Messages *Messages) static void Msg_ShowFormToShowOnlyUnreadMessages (const struct Msg_Messages *Messages) { + extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED]; extern const char *Txt_only_unread_messages; + Cns_UncheckedOrChecked_t UncheckedOrChecked; /***** Put checkbox to select whether to show only unread (received) messages *****/ HTM_LABEL_Begin ("class=\"FORM_IN_%s\"",The_GetSuffix ()); + UncheckedOrChecked = Messages->ShowOnlyUnreadMsgs ? Cns_CHECKED : + Cns_UNCHECKED; HTM_INPUT_CHECKBOX ("OnlyUnreadMsgs",HTM_DONT_SUBMIT_ON_CHANGE, "value=\"Y\"%s", - Messages->ShowOnlyUnreadMsgs ? " checked=\"checked\"" : - ""); + HTM_CheckedTxt[UncheckedOrChecked]); HTM_Txt (Txt_only_unread_messages); HTM_LABEL_End (); } diff --git a/swad_notification.c b/swad_notification.c index 24d2d58ff..219e0c8fa 100644 --- a/swad_notification.c +++ b/swad_notification.c @@ -1615,12 +1615,14 @@ void Ntf_MarkAllNotifAsSeen (void) void Ntf_PutFormChangeNotifSentByEMail (void) { extern const char *Hlp_PROFILE_Settings_notifications; + extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED]; extern const char *Txt_Save_changes; extern const char *Txt_Notifications; extern const char *Txt_Create_BR_notification; extern const char *Txt_Notify_me_BR_by_email; extern const char *Txt_NOTIFY_EVENTS_PLURAL[Ntf_NUM_NOTIFY_EVENTS]; Ntf_NotifyEvent_t NotifyEvent; + Cns_UncheckedOrChecked_t UncheckedOrChecked; /***** Begin section with settings on privacy *****/ HTM_SECTION_Begin (Ntf_NOTIFICATIONS_ID); @@ -1659,19 +1661,23 @@ void Ntf_PutFormChangeNotifSentByEMail (void) HTM_TD_End (); HTM_TD_Begin ("class=\"CM\""); - HTM_INPUT_CHECKBOX (Ntf_ParNotifMeAboutNotifyEvents[NotifyEvent],HTM_DONT_SUBMIT_ON_CHANGE, + UncheckedOrChecked = (Gbl.Usrs.Me.UsrDat.NtfEvents.CreateNotif & + (1 << NotifyEvent)) ? Cns_CHECKED : + Cns_UNCHECKED; + HTM_INPUT_CHECKBOX (Ntf_ParNotifMeAboutNotifyEvents[NotifyEvent], + HTM_DONT_SUBMIT_ON_CHANGE, "value=\"Y\"%s", - (Gbl.Usrs.Me.UsrDat.NtfEvents.CreateNotif & - (1 << NotifyEvent)) ? " checked=\"checked\"" : - ""); + HTM_CheckedTxt[UncheckedOrChecked]); HTM_TD_End (); HTM_TD_Begin ("class=\"CM\""); - HTM_INPUT_CHECKBOX (Ntf_ParEmailMeAboutNotifyEvents[NotifyEvent],HTM_DONT_SUBMIT_ON_CHANGE, + UncheckedOrChecked = (Gbl.Usrs.Me.UsrDat.NtfEvents.SendEmail & + (1 << NotifyEvent)) ? Cns_CHECKED : + Cns_UNCHECKED; + HTM_INPUT_CHECKBOX (Ntf_ParEmailMeAboutNotifyEvents[NotifyEvent], + HTM_DONT_SUBMIT_ON_CHANGE, "value=\"Y\"%s", - (Gbl.Usrs.Me.UsrDat.NtfEvents.SendEmail & - (1 << NotifyEvent)) ? " checked=\"checked\"" : - ""); + HTM_CheckedTxt[UncheckedOrChecked]); HTM_TD_End (); HTM_TR_End (); diff --git a/swad_privacy.c b/swad_privacy.c index 9a970e955..503489c43 100644 --- a/swad_privacy.c +++ b/swad_privacy.c @@ -163,8 +163,10 @@ static void Pri_PutFormVisibility (const char *TxtLabel, Pri_Visibility_t CurrentVisibilityInDB, unsigned MaskAllowedVisibility) { + extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED]; extern const char *Txt_PRIVACY_OPTIONS[Pri_NUM_OPTIONS_PRIVACY]; Pri_Visibility_t Visibility; + Cns_UncheckedOrChecked_t UncheckedOrChecked; HTM_TR_Begin (NULL); @@ -189,14 +191,15 @@ static void Pri_PutFormVisibility (const char *TxtLabel, HTM_LI_Begin ("class=\"DAT_%s\"", The_GetSuffix ()); HTM_LABEL_Begin (NULL); - HTM_INPUT_RADIO (ParName,Action == ActUnk ? HTM_DONT_SUBMIT_ON_CLICK : - HTM_SUBMIT_ON_CLICK, + UncheckedOrChecked = (Visibility == CurrentVisibilityInDB) ? Cns_CHECKED : + Cns_UNCHECKED; + HTM_INPUT_RADIO (ParName,(Action == ActUnk) ? HTM_DONT_SUBMIT_ON_CLICK : + HTM_SUBMIT_ON_CLICK, "value=\"%u\"%s%s", (unsigned) Visibility, - Visibility == CurrentVisibilityInDB ? " checked=\"checked\"" : - "", - Action == ActUnk ? " disabled=\"disabled\"" : - ""); + HTM_CheckedTxt[UncheckedOrChecked], + (Action == ActUnk) ? " disabled=\"disabled\"" : + ""); HTM_Txt (Txt_PRIVACY_OPTIONS[Visibility]); HTM_LABEL_End (); HTM_LI_End (); diff --git a/swad_project_config.c b/swad_project_config.c index cbe073f29..f1ee0f9ec 100644 --- a/swad_project_config.c +++ b/swad_project_config.c @@ -307,13 +307,16 @@ PrjCfg_RubricType_t PrjCfg_GetRubricFromString (const char *Str) static void PrjCfg_ShowFormNETCanCreate (const struct PrjCfg_Config *Config) { + extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED]; extern const char *Txt_Non_editing_teachers_can_create_new_projects; + Cns_UncheckedOrChecked_t UncheckedOrChecked; HTM_LABEL_Begin ("class=\"LT DAT_%s\"",The_GetSuffix ()); + UncheckedOrChecked = Config->NETCanCreate ? Cns_CHECKED : + Cns_UNCHECKED; HTM_INPUT_CHECKBOX ("NETCanCreate",HTM_SUBMIT_ON_CHANGE, "id=\"NETCanCreate\" value=\"Y\"%s", - Config->NETCanCreate ? " checked=\"checked\"" : - ""); + HTM_CheckedTxt[UncheckedOrChecked]); HTM_Txt (Txt_Non_editing_teachers_can_create_new_projects); HTM_LABEL_End (); } diff --git a/swad_question.c b/swad_question.c index 793f9facc..bf77a6ad3 100644 --- a/swad_question.c +++ b/swad_question.c @@ -233,10 +233,11 @@ void Qst_ShowFormAnswerTypes (const struct Qst_AnswerTypes *AnswerTypes) HTM_TD_Begin ("class=\"LM\""); HTM_LABEL_Begin ("class=\"FORM_IN_%s\"", The_GetSuffix ()); + UncheckedOrChecked = AnswerTypes->All ? Cns_CHECKED : + Cns_UNCHECKED; HTM_INPUT_CHECKBOX ("AllAnsTypes",HTM_DONT_SUBMIT_ON_CHANGE, "value=\"Y\"%s onclick=\"togglecheckChildren(this,'AnswerType');\"", - AnswerTypes->All ? " checked=\"checked\"" : - ""); + HTM_CheckedTxt[UncheckedOrChecked]); HTM_NBSPTxt (Txt_All_types_of_answers); HTM_LABEL_End (); HTM_TD_End (); @@ -914,8 +915,10 @@ void Qst_WriteHeadingRowQuestionsForEdition (struct Qst_Questions *Questions) void Qst_WriteQuestionListing (struct Qst_Questions *Questions,unsigned QstInd) { + extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED]; static unsigned UniqueId = 0; char *Id; + Cns_UncheckedOrChecked_t UncheckedOrChecked; /***** Get and show question data *****/ if (Qst_GetQstDataByCod (&Questions->Question)) @@ -981,10 +984,11 @@ void Qst_WriteQuestionListing (struct Qst_Questions *Questions,unsigned QstInd) Frm_BeginForm (ActChgShfTstQst); Qst_PutParsEditQst (Questions); Par_PutParUnsigned (NULL,"Order",(unsigned) Questions->SelectedOrder); + UncheckedOrChecked = Questions->Question.Answer.Shuffle ? Cns_CHECKED : + Cns_UNCHECKED; HTM_INPUT_CHECKBOX ("Shuffle",HTM_SUBMIT_ON_CHANGE, "value=\"Y\"%s", - Questions->Question.Answer.Shuffle ? " checked=\"checked\"" : - ""); + HTM_CheckedTxt[UncheckedOrChecked]); Frm_EndForm (); } HTM_TD_End (); @@ -1229,9 +1233,11 @@ void Qst_PutCheckboxToSelectAllQuestions (void) void Qst_WriteQuestionRowForSelection (unsigned QstInd, struct Qst_Question *Question) { + extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED]; extern const char *Txt_TST_STR_ANSWER_TYPES[Qst_NUM_ANS_TYPES]; static unsigned UniqueId = 0; char *Id; + Cns_UncheckedOrChecked_t UncheckedOrChecked; /***** Get and show questvoidion data *****/ if (Qst_GetQstDataByCod (Question)) @@ -1291,12 +1297,12 @@ void Qst_WriteQuestionRowForSelection (unsigned QstInd, /* Write if shuffle is enabled */ HTM_TD_Begin ("class=\"CT DAT_SMALL_%s %s\"", - The_GetSuffix (), - The_GetColorRows ()); + The_GetSuffix (),The_GetColorRows ()); + UncheckedOrChecked = Question->Answer.Shuffle ? Cns_CHECKED : + Cns_UNCHECKED; HTM_INPUT_CHECKBOX ("Shuffle",HTM_DONT_SUBMIT_ON_CHANGE, "value=\"Y\"%s disabled=\"disabled\"", - Question->Answer.Shuffle ? " checked=\"checked\"" : - ""); + HTM_CheckedTxt[UncheckedOrChecked]); HTM_TD_End (); /* Write stem */ @@ -1803,6 +1809,7 @@ void Qst_ShowFormEditOneQst (void) void Qst_PutFormEditOneQst (struct Qst_Question *Question) { extern const char *Hlp_ASSESSMENT_Questions_writing_a_question; + extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED]; extern const char *Txt_Question_code_X; extern const char *Txt_Question; extern const char *Txt_Tags; @@ -1839,6 +1846,7 @@ void Qst_PutFormEditOneQst (struct Qst_Question *Question) char *Title; char *FuncOnChange; bool NewQuestion = (Question->QstCod > 0); + Cns_UncheckedOrChecked_t UncheckedOrChecked; /***** Begin box *****/ if (NewQuestion) // The question already has assigned a code @@ -2010,11 +2018,13 @@ void Qst_PutFormEditOneQst (struct Qst_Question *Question) AnsType++) { HTM_LABEL_Begin (NULL); + UncheckedOrChecked = (AnsType == Question->Answer.Type) ? Cns_CHECKED : + Cns_UNCHECKED; HTM_INPUT_RADIO ("AnswerType",HTM_DONT_SUBMIT_ON_CLICK, - "value=\"%u\"%s onclick=\"enableDisableAns(this.form);\"", + "value=\"%u\"%s" + " onclick=\"enableDisableAns(this.form);\"", (unsigned) AnsType, - AnsType == Question->Answer.Type ? " checked=\"checked\"" : - ""); + HTM_CheckedTxt[UncheckedOrChecked]); HTM_TxtF ("%s ",Txt_TST_STR_ANSWER_TYPES[AnsType]); HTM_LABEL_End (); HTM_BR (); @@ -2070,13 +2080,14 @@ void Qst_PutFormEditOneQst (struct Qst_Question *Question) HTM_TD_Empty (1); HTM_TD_Begin ("class=\"LT\""); HTM_LABEL_Begin ("class=\"FORM_IN_%s\"",The_GetSuffix ()); + UncheckedOrChecked = Question->Answer.Shuffle ? Cns_CHECKED : + Cns_UNCHECKED; HTM_INPUT_CHECKBOX ("Shuffle",HTM_DONT_SUBMIT_ON_CHANGE, "value=\"Y\"%s%s", - Question->Answer.Shuffle ? " checked=\"checked\"" : - "", - Question->Answer.Type != Qst_ANS_UNIQUE_CHOICE && - Question->Answer.Type != Qst_ANS_MULTIPLE_CHOICE ? " disabled=\"disabled\"" : - ""); + HTM_CheckedTxt[UncheckedOrChecked], + (Question->Answer.Type != Qst_ANS_UNIQUE_CHOICE && + Question->Answer.Type != Qst_ANS_MULTIPLE_CHOICE) ? " disabled=\"disabled\"" : + ""); HTM_Txt (Txt_Shuffle); HTM_LABEL_End (); HTM_TD_End (); @@ -2108,26 +2119,27 @@ void Qst_PutFormEditOneQst (struct Qst_Question *Question) /***** Left column: selectors *****/ HTM_TD_Begin ("class=\"Qst_ANS_LEFT_COL %s\"", The_GetColorRows ()); + UncheckedOrChecked = Question->Answer.Options[NumOpt].Correct ? Cns_CHECKED : + Cns_UNCHECKED; /* Radio selector for unique choice answers */ HTM_INPUT_RADIO ("AnsUni",HTM_DONT_SUBMIT_ON_CLICK, - "value=\"%u\"%s%s%s onclick=\"enableDisableAns(this.form);\"", + "value=\"%u\"%s%s%s" + " onclick=\"enableDisableAns(this.form);\"", NumOpt, - Question->Answer.Options[NumOpt].Correct ? " checked=\"checked\"" : - "", + HTM_CheckedTxt[UncheckedOrChecked], NumOpt < 2 ? " required=\"required\"" : // First or second options required "", - Question->Answer.Type == Qst_ANS_UNIQUE_CHOICE ? "" : - " disabled=\"disabled\""); + (Question->Answer.Type == Qst_ANS_UNIQUE_CHOICE) ? "" : + " disabled=\"disabled\""); /* Checkbox for multiple choice answers */ HTM_INPUT_CHECKBOX ("AnsMulti",HTM_DONT_SUBMIT_ON_CHANGE, "value=\"%u\"%s%s", NumOpt, - Question->Answer.Options[NumOpt].Correct ? " checked=\"checked\"" : - "", - Question->Answer.Type == Qst_ANS_MULTIPLE_CHOICE ? "" : - " disabled=\"disabled\""); + HTM_CheckedTxt[UncheckedOrChecked], + (Question->Answer.Type == Qst_ANS_MULTIPLE_CHOICE) ? "" : + " disabled=\"disabled\""); HTM_TD_End (); @@ -2264,12 +2276,16 @@ void Qst_PutFloatInputField (const char *Label,const char *Field, void Qst_PutTFInputField (const struct Qst_Question *Question, const char *Label,char Value) { + extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED]; + Cns_UncheckedOrChecked_t UncheckedOrChecked; + HTM_LABEL_Begin ("class=\"FORM_IN_%s\"",The_GetSuffix ()); + UncheckedOrChecked = (Question->Answer.TF == Value) ? Cns_CHECKED : + Cns_UNCHECKED; HTM_INPUT_RADIO ("AnsTF",HTM_DONT_SUBMIT_ON_CLICK, "value=\"%c\"%s%s required=\"required\"", Value, - Question->Answer.TF == Value ? " checked=\"checked\"" : - "", + HTM_CheckedTxt[UncheckedOrChecked], Question->Answer.Type == Qst_ANS_TRUE_FALSE ? "" : " disabled=\"disabled\""); HTM_Txt (Label); diff --git a/swad_survey.c b/swad_survey.c index d633e01c6..e0ea1288b 100644 --- a/swad_survey.c +++ b/swad_survey.c @@ -615,7 +615,7 @@ static void Svy_ShowOneSurvey (struct Svy_Surveys *Surveys, 1 << Rol_NET | 1 << Rol_TCH, Surveys->Svy.Roles, - true, + Cns_ENABLED, HTM_DONT_SUBMIT_ON_CHANGE); HTM_DIV_End (); @@ -1703,7 +1703,7 @@ void Svy_ReqCreatOrEditSvy (void) 1 << Rol_NET | 1 << Rol_TCH, Surveys.Svy.Roles, - false, + Cns_DISABLED, HTM_DONT_SUBMIT_ON_CHANGE); HTM_TD_End (); HTM_TR_End (); diff --git a/swad_test_print.c b/swad_test_print.c index 5e1435dde..0910d5244 100644 --- a/swad_test_print.c +++ b/swad_test_print.c @@ -418,9 +418,10 @@ static void TstPrn_WriteChoAnsToFill (const struct TstPrn_PrintedQuestion *Print unsigned QstInd, struct Qst_Question *Question) { + extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED]; unsigned NumOpt; unsigned Indexes[Qst_MAX_OPTIONS_PER_QUESTION]; // Indexes of all answers of this question - bool UsrAnswers[Qst_MAX_OPTIONS_PER_QUESTION]; + Cns_UncheckedOrChecked_t UsrAnswers[Qst_MAX_OPTIONS_PER_QUESTION]; char StrAns[3 + Cns_MAX_DECIMAL_DIGITS_UINT + 1]; // "Ansxx...x" /***** Change format of answers text *****/ @@ -454,18 +455,14 @@ static void TstPrn_WriteChoAnsToFill (const struct TstPrn_PrintedQuestion *Print HTM_INPUT_RADIO (StrAns,HTM_DONT_SUBMIT_ON_CLICK, "id=\"Ans%010u_%u\" value=\"%u\"%s" " onclick=\"selectUnselectRadio(this,this.form.Ans%010u,%u);\"", - QstInd,NumOpt, - Indexes[NumOpt], - UsrAnswers[Indexes[NumOpt]] ? " checked=\"checked\"" : - "", + QstInd,NumOpt,Indexes[NumOpt], + HTM_CheckedTxt[UsrAnswers[Indexes[NumOpt]]], QstInd,Question->Answer.NumOptions); else // Answer.Type == Tst_ANS_MULTIPLE_CHOICE HTM_INPUT_CHECKBOX (StrAns,HTM_DONT_SUBMIT_ON_CHANGE, "id=\"Ans%010u_%u\" value=\"%u\"%s", - QstInd,NumOpt, - Indexes[NumOpt], - UsrAnswers[Indexes[NumOpt]] ? " checked=\"checked\"" : - ""); + QstInd,NumOpt,Indexes[NumOpt], + HTM_CheckedTxt[UsrAnswers[Indexes[NumOpt]]]); HTM_TD_End (); @@ -918,7 +915,7 @@ void TstPrn_ComputeChoAnsScore (struct TstPrn_PrintedQuestion *PrintedQuestion, const struct Qst_Question *Question) { unsigned Indexes[Qst_MAX_OPTIONS_PER_QUESTION]; // Indexes of all answers of this question - bool UsrAnswers[Qst_MAX_OPTIONS_PER_QUESTION]; + Cns_UncheckedOrChecked_t UsrAnswers[Qst_MAX_OPTIONS_PER_QUESTION]; unsigned NumOpt; unsigned NumOptTotInQst = 0; unsigned NumOptCorrInQst = 0; @@ -943,7 +940,7 @@ void TstPrn_ComputeChoAnsScore (struct TstPrn_PrintedQuestion *PrintedQuestion, if (Question->Answer.Options[Indexes[NumOpt]].Correct) NumOptCorrInQst++; - if (UsrAnswers[Indexes[NumOpt]]) // This answer has been selected by the user + if (UsrAnswers[Indexes[NumOpt]] == Cns_CHECKED) // This answer has been selected by the user { if (Question->Answer.Options[Indexes[NumOpt]].Correct) NumAnsGood++; @@ -1093,20 +1090,20 @@ void TstPrn_GetIndexesFromStr (const char StrIndexesOneQst[Qst_MAX_BYTES_INDEXES /*****************************************************************************/ void TstPrn_GetAnswersFromStr (const char StrAnswersOneQst[Qst_MAX_BYTES_ANSWERS_ONE_QST + 1], - bool UsrAnswers[Qst_MAX_OPTIONS_PER_QUESTION]) + Cns_UncheckedOrChecked_t UsrAnswers[Qst_MAX_OPTIONS_PER_QUESTION]) { unsigned NumOpt; const char *Ptr; char StrOneAnswer[Cns_MAX_DECIMAL_DIGITS_UINT + 1]; unsigned AnsUsr; - /***** Initialize all answers to false *****/ + /***** Initialize all answers to unchecked *****/ for (NumOpt = 0; NumOpt < Qst_MAX_OPTIONS_PER_QUESTION; NumOpt++) - UsrAnswers[NumOpt] = false; + UsrAnswers[NumOpt] = Cns_UNCHECKED; - /***** Set selected answers to true *****/ + /***** Set selected answers to checked *****/ for (NumOpt = 0, Ptr = StrAnswersOneQst; NumOpt < Qst_MAX_OPTIONS_PER_QUESTION && *Ptr; NumOpt++) @@ -1119,7 +1116,7 @@ void TstPrn_GetAnswersFromStr (const char StrAnswersOneQst[Qst_MAX_BYTES_ANSWERS if (AnsUsr >= Qst_MAX_OPTIONS_PER_QUESTION) Err_WrongAnswerExit (); - UsrAnswers[AnsUsr] = true; + UsrAnswers[AnsUsr] = Cns_CHECKED; } } @@ -1406,7 +1403,7 @@ static void TstPrn_WriteChoAnsPrint (struct Usr_Data *UsrDat, extern const char *Txt_TST_Answer_given_by_the_teachers; unsigned NumOpt; unsigned Indexes[Qst_MAX_OPTIONS_PER_QUESTION]; // Indexes of all answers of this question - bool UsrAnswers[Qst_MAX_OPTIONS_PER_QUESTION]; + Cns_UncheckedOrChecked_t UsrAnswers[Qst_MAX_OPTIONS_PER_QUESTION]; struct { char *Class; @@ -1442,7 +1439,7 @@ static void TstPrn_WriteChoAnsPrint (struct Usr_Data *UsrDat, HTM_TR_Begin (NULL); /* Draw icon depending on user's answer */ - if (UsrAnswers[Indexes[NumOpt]]) // This answer has been selected by the user + if (UsrAnswers[Indexes[NumOpt]] == Cns_CHECKED) // This answer has been selected by the user { switch (ICanView[TstVis_VISIBLE_CORRECT_ANSWER]) { diff --git a/swad_test_print.h b/swad_test_print.h index 62387621c..f44a316a3 100644 --- a/swad_test_print.h +++ b/swad_test_print.h @@ -122,7 +122,7 @@ void Qst_ChangeFormatAnswersFeedback (struct Qst_Question *Question); void TstPrn_GetIndexesFromStr (const char StrIndexesOneQst[Qst_MAX_BYTES_INDEXES_ONE_QST + 1], // 0 1 2 3, 3 0 2 1, etc. unsigned Indexes[Qst_MAX_OPTIONS_PER_QUESTION]); void TstPrn_GetAnswersFromStr (const char StrAnswersOneQst[Qst_MAX_BYTES_ANSWERS_ONE_QST + 1], - bool UsrAnswers[Qst_MAX_OPTIONS_PER_QUESTION]); + Cns_UncheckedOrChecked_t UsrAnswers[Qst_MAX_OPTIONS_PER_QUESTION]); void TstPrn_ComputeAndShowGrade (unsigned NumQsts,double Score,double MaxGrade); double TstPrn_ComputeGrade (unsigned NumQsts,double Score,double MaxGrade);