diff --git a/swad_HTML.c b/swad_HTML.c
index c63584c5..f5abb3d9 100644
--- a/swad_HTML.c
+++ b/swad_HTML.c
@@ -972,7 +972,7 @@ void HTM_INPUT_PASSWORD (const char *Name,const char *PlaceHolder,
{
fprintf (Gbl.F.Out,"");
}
+void HTM_INPUT_RADIO (const char *Name,bool SubmitOnClick,
+ const char *fmt,...)
+ {
+ va_list ap;
+ int NumBytesPrinted;
+ char *Attr;
+
+ fprintf (Gbl.F.Out,"");
+ }
+
/*****************************************************************************/
/********************************* Text areas ********************************/
/*****************************************************************************/
diff --git a/swad_HTML.h b/swad_HTML.h
index f494feef..a22925ca 100644
--- a/swad_HTML.h
+++ b/swad_HTML.h
@@ -103,6 +103,8 @@ void HTM_INPUT_IMAGE (const char *ImgFile,const char *Title,const char *Class);
void HTM_INPUT_PASSWORD (const char *Name,const char *PlaceHolder,
const char *AutoComplete,bool Required);
void HTM_INPUT_NUMBER (const char *Name,long Min,long Max,long Value,bool Disabled);
+void HTM_INPUT_RADIO (const char *Name,bool SubmitOnClick,
+ const char *fmt,...);
void HTM_TEXTAREA_Begin (const char *fmt,...);
void HTM_TEXTAREA_End (void);
diff --git a/swad_changelog.h b/swad_changelog.h
index fed04485..58ef2bc6 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -487,7 +487,7 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
En OpenSWAD:
ps2pdf source.ps destination.pdf
*/
-#define Log_PLATFORM_VERSION "SWAD 19.51.16 (2019-11-04)"
+#define Log_PLATFORM_VERSION "SWAD 19.51.17 (2019-11-04)"
#define CSS_FILE "swad19.47.css"
#define JS_FILE "swad19.39.js"
/*
@@ -495,6 +495,7 @@ ps2pdf source.ps destination.pdf
// TODO: Impedir la creación y edición de proyectos si no son editables.
// TODO: Importante: filtrar proyectos por usuarios (igual que en trabajos o en asistencia)
+ Version 19.51.17: Nov 04, 2019 Code refactoring in HTML inputs. (245887 lines)
Version 19.51.16: Nov 04, 2019 Code refactoring in HTML inputs. (245893 lines)
Version 19.51.15: Nov 04, 2019 Code refactoring in HTML inputs. (245874 lines)
Version 19.51.14: Nov 04, 2019 Code refactoring in HTML inputs. (245868 lines)
diff --git a/swad_date.c b/swad_date.c
index 3c372400..3f22d430 100644
--- a/swad_date.c
+++ b/swad_date.c
@@ -121,12 +121,10 @@ void Dat_PutBoxToSelectDateFormat (void)
HTM_LI_Begin ("class=\%s\"",(Format == Gbl.Prefs.DateFormat) ? "DAT_N LIGHT_BLUE" :
"DAT");
HTM_LABEL_Begin (NULL);
- fprintf (Gbl.F.Out,"",
- Gbl.Form.Id);
+ HTM_INPUT_RADIO ("DateFormat",true,
+ " value=\"%u\"%s",
+ (unsigned) Format,
+ Format == Gbl.Prefs.DateFormat ? " checked=\"checked\"" : "");
Dat_PutSpanDateFormat (Format);
Dat_PutScriptDateFormat (Format);
HTM_LABEL_End ();
diff --git a/swad_enrolment.c b/swad_enrolment.c
index 0f74e554..f2d35f78 100644
--- a/swad_enrolment.c
+++ b/swad_enrolment.c
@@ -953,44 +953,37 @@ static void Enr_PutActionsRegRemSeveralUsrs (void)
if (Gbl.Hierarchy.Level == Hie_CRS) // Course selected
{
HTM_LI_Begin (NULL);
- fprintf (Gbl.F.Out,"",
- (unsigned) Enr_REGISTER_SPECIFIED_USRS_IN_CRS,
- (unsigned) Enr_REGISTER_SPECIFIED_USRS_IN_CRS);
- HTM_LABEL_Begin ("for=\"RegRemAction%u\"",
- (unsigned) Enr_REGISTER_SPECIFIED_USRS_IN_CRS);
+ HTM_LABEL_Begin (NULL);
+ HTM_INPUT_RADIO ("RegRemAction",false,
+ " value=\"%u\" checked=\"checked\"",
+ (unsigned) Enr_REGISTER_SPECIFIED_USRS_IN_CRS);
fprintf (Gbl.F.Out,"%s",Txt_Register_the_users_indicated_in_step_1);
HTM_LABEL_End ();
HTM_LI_End ();
HTM_LI_Begin (NULL);
- fprintf (Gbl.F.Out,"",
- (unsigned) Enr_REMOVE_SPECIFIED_USRS_FROM_CRS,
- (unsigned) Enr_REMOVE_SPECIFIED_USRS_FROM_CRS);
- HTM_LABEL_Begin ("for=\"RegRemAction%u\"",
- (unsigned) Enr_REMOVE_SPECIFIED_USRS_FROM_CRS);
+ HTM_LABEL_Begin (NULL);
+ HTM_INPUT_RADIO ("RegRemAction",false,
+ " value=\"%u\"",
+ (unsigned) Enr_REMOVE_SPECIFIED_USRS_FROM_CRS);
fprintf (Gbl.F.Out,"%s",Txt_Remove_the_users_indicated_in_step_1);
HTM_LABEL_End ();
HTM_LI_End ();
HTM_LI_Begin (NULL);
- fprintf (Gbl.F.Out,"",
- (unsigned) Enr_REMOVE_NOT_SPECIFIED_USRS_FROM_CRS,
- (unsigned) Enr_REMOVE_NOT_SPECIFIED_USRS_FROM_CRS);
- HTM_LABEL_Begin ("for=\"RegRemAction%u\"",
- (unsigned) Enr_REMOVE_NOT_SPECIFIED_USRS_FROM_CRS);
+ HTM_LABEL_Begin (NULL);
+ HTM_INPUT_RADIO ("RegRemAction",false,
+ " value=\"%u\"",
+ (unsigned) Enr_REMOVE_NOT_SPECIFIED_USRS_FROM_CRS);
fprintf (Gbl.F.Out,"%s",Txt_Remove_the_users_not_indicated_in_step_1);
HTM_LABEL_End ();
HTM_LI_End ();
HTM_LI_Begin (NULL);
- fprintf (Gbl.F.Out,"",
- (unsigned) Enr_UPDATE_USRS_IN_CRS,
- (unsigned) Enr_UPDATE_USRS_IN_CRS);
- HTM_LABEL_Begin ("for=\"RegRemAction%u\"",(unsigned) Enr_UPDATE_USRS_IN_CRS);
+ HTM_LABEL_Begin (NULL);
+ HTM_INPUT_RADIO ("RegRemAction",false,
+ " value=\"%u\"",
+ (unsigned) Enr_UPDATE_USRS_IN_CRS);
fprintf (Gbl.F.Out,"%s",
Txt_Register_the_users_indicated_in_step_1_and_remove_the_users_not_indicated);
HTM_LABEL_End ();
@@ -1001,12 +994,10 @@ static void Enr_PutActionsRegRemSeveralUsrs (void)
if (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM)
{
HTM_LI_Begin (NULL);
- fprintf (Gbl.F.Out,"",
- (unsigned) Enr_ELIMINATE_USRS_FROM_PLATFORM,
- (unsigned) Enr_ELIMINATE_USRS_FROM_PLATFORM);
- HTM_LABEL_Begin ("for=\"RegRemAction%u\"",
- (unsigned) Enr_ELIMINATE_USRS_FROM_PLATFORM);
+ HTM_LABEL_Begin (NULL);
+ HTM_INPUT_RADIO ("RegRemAction",false,
+ " value=\"%u\"",
+ (unsigned) Enr_ELIMINATE_USRS_FROM_PLATFORM);
fprintf (Gbl.F.Out,"%s",
Txt_Eliminate_from_the_platform_the_users_indicated_in_step_1);
HTM_LABEL_End ();
@@ -1757,17 +1748,13 @@ static void Enr_StartRegRemOneUsrAction (Enr_RegRemOneUsrAction_t RegRemOneUsrAc
bool *OptionChecked)
{
HTM_LI_Begin (NULL);
- fprintf (Gbl.F.Out,"");
- HTM_LABEL_Begin ("for=\"RegRemAction%u\"",(unsigned) RegRemOneUsrAction);
}
static void Enr_EndRegRemOneUsrAction (void)
diff --git a/swad_file_browser.c b/swad_file_browser.c
index b884b017..b1d64387 100644
--- a/swad_file_browser.c
+++ b/swad_file_browser.c
@@ -3266,11 +3266,9 @@ static void Brw_FormToChangeCrsGrpZone (void)
HTM_LI_Begin ("class=\"%s\"",IsCourseZone ? "BROWSER_TITLE" :
"BROWSER_TITLE_LIGHT");
HTM_LABEL_Begin (NULL);
- fprintf (Gbl.F.Out,"",
- Gbl.Form.Id);
+ HTM_INPUT_RADIO ("GrpCod",true,
+ "value=\"-1\"%s",
+ IsCourseZone ? " checked=\"checked\"" : "");
fprintf (Gbl.F.Out,"%s",Gbl.Hierarchy.Crs.FullName);
HTM_LABEL_End ();
HTM_LI_End ();
@@ -3297,12 +3295,11 @@ static void Brw_FormToChangeCrsGrpZone (void)
NULL,
"class=\"ICO25x25\" style=\"margin-left:6px;\"");
HTM_LABEL_Begin (NULL);
- fprintf (Gbl.F.Out,"",
- Gbl.Form.Id);
+ HTM_INPUT_RADIO ("GrpCod",true,
+ "value=\"%ld\"%s",
+ GrpDat.GrpCod,
+ (IsGroupZone &&
+ GrpDat.GrpCod == Gbl.Crs.Grps.GrpCod) ? " checked=\"checked\"" : "");
fprintf (Gbl.F.Out,"%s %s",GrpDat.GrpTypName,GrpDat.GrpName);
HTM_LABEL_End ();
HTM_LI_End ();
diff --git a/swad_forum.c b/swad_forum.c
index 00351be1..21f55b75 100644
--- a/swad_forum.c
+++ b/swad_forum.c
@@ -1755,13 +1755,10 @@ static void For_PutFormWhichForums (void)
{
HTM_LI_Begin (NULL);
HTM_LABEL_Begin (NULL);
- fprintf (Gbl.F.Out,"",
- Gbl.Form.Id);
+ HTM_INPUT_RADIO ("ForumSet",true,
+ "value=\"%u\"%s",
+ (unsigned) ForumSet,
+ (ForumSet == Gbl.Forum.ForumSet) ? " checked=\"checked\"" : "");
fprintf (Gbl.F.Out,"%s",Txt_FORUM_WHICH_FORUM[ForumSet]);
HTM_LABEL_End ();
HTM_LI_End ();
diff --git a/swad_group.c b/swad_group.c
index fc80b4b9..b36323b6 100644
--- a/swad_group.c
+++ b/swad_group.c
@@ -1918,6 +1918,7 @@ static bool Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp,
bool IBelongToAClosedGroup;
bool ICanChangeMySelectionForThisGrpTyp;
bool ICanChangeMySelectionForThisGrp;
+ char StrGrpCod[32];
/***** Write heading *****/
Grp_WriteGrpHead (GrpTyp);
@@ -2009,28 +2010,6 @@ static bool Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp,
else
HTM_TD_Begin ("class=\"LM\"");
- if (Gbl.Usrs.Me.Role.Logged == Rol_STD && // If I am a student
- !GrpTyp->MultipleEnrolment && // ...and the enrolment is single
- GrpTyp->NumGrps > 1) // ...and there are more than one group
- {
- /* Put a radio item */
- fprintf (Gbl.F.Out,"GrpCod,GrpTyp->GrpTypCod,Grp->GrpCod);
- if (!GrpTyp->MandatoryEnrolment) // If the enrolment is not mandatory, I can select no groups
- fprintf (Gbl.F.Out," onclick=\"selectUnselectRadio(this,this.form.GrpCod%ld,%u)\"",
- GrpTyp->GrpTypCod,GrpTyp->NumGrps);
- }
- else
- /* Put a checkbox item */
- fprintf (Gbl.F.Out,"GrpCod,GrpTyp->GrpTypCod,Grp->GrpCod);
-
- /* Group checked? */
- if (IBelongToThisGroup)
- fprintf (Gbl.F.Out," checked=\"checked\""); // Group selected
-
/* Selection disabled? */
if (ICanChangeMySelectionForThisGrpTyp) // I can change my selection for this group type
{
@@ -2050,11 +2029,51 @@ static bool Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp,
else // I can not change my selection for this group type
ICanChangeMySelectionForThisGrp = false;
- if (!ICanChangeMySelectionForThisGrp) // I can not change my selection for this group
- fprintf (Gbl.F.Out,IBelongToThisGroup ? " readonly" : // I can not unregister (disabled does not work because the value is not submitted)
- " disabled=\"disabled\""); // I can not register
+ 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
+ GrpTyp->NumGrps > 1) // ...and there are more than one group
+ {
+ /* Put a radio item */
+ if (GrpTyp->MandatoryEnrolment)
+ HTM_INPUT_RADIO (StrGrpCod,false,
+ "id=\"Grp%ld\" value=\"%ld\"%s%s",
+ Grp->GrpCod,Grp->GrpCod,
+ IBelongToThisGroup ? " checked=\"checked\"" : "", // Group selected?
+ ICanChangeMySelectionForThisGrp ? "" :
+ IBelongToThisGroup ? " readonly" : // I can not unregister (disabled does not work because the value is not submitted)
+ " disabled=\"disabled\""); // I can not register
+ else // If the enrolment is not mandatory, I can select no groups
+ HTM_INPUT_RADIO (StrGrpCod,false,
+ "id=\"Grp%ld\" value=\"%ld\"%s%s"
+ " onclick=\"selectUnselectRadio(this,this.form.GrpCod%ld,%u)\"",
+ Grp->GrpCod,Grp->GrpCod,
+ IBelongToThisGroup ? " checked=\"checked\"" : "", // Group selected?
+ ICanChangeMySelectionForThisGrp ? "" :
+ IBelongToThisGroup ? " readonly" : // I can not unregister (disabled does not work because the value is not submitted)
+ " disabled=\"disabled\"", // I can not register
+ GrpTyp->GrpTypCod,GrpTyp->NumGrps);
+ }
+ else
+ {
+ /* Put a checkbox item */
+ fprintf (Gbl.F.Out,"GrpCod,GrpTyp->GrpTypCod,Grp->GrpCod);
+
+ /* Group checked? */
+ if (IBelongToThisGroup)
+ fprintf (Gbl.F.Out," checked=\"checked\""); // Group selected
+
+ if (!ICanChangeMySelectionForThisGrp) // I can not change my selection for this group
+ fprintf (Gbl.F.Out,IBelongToThisGroup ? " readonly" : // I can not unregister (disabled does not work because the value is not submitted)
+ " disabled=\"disabled\""); // I can not register
+
+ fprintf (Gbl.F.Out," />");
+ }
- fprintf (Gbl.F.Out," />");
HTM_TD_End ();
Grp_WriteRowGrp (Grp,IBelongToThisGroup);
diff --git a/swad_info.c b/swad_info.c
index 370d5032..334cecb7 100644
--- a/swad_info.c
+++ b/swad_info.c
@@ -1143,21 +1143,16 @@ void Inf_FormsToSelSendInfo (void)
else
HTM_TD_Begin ("class=\"DAT LT\"");
Frm_StartForm (Inf_ActionsSelecInfoSrc[Gbl.Crs.Info.Type]);
- fprintf (Gbl.F.Out,"");
+
+ HTM_INPUT_RADIO ("InfoSrc",InfoSrc != InfoSrcSelected &&
+ (InfoSrc == Inf_INFO_SRC_NONE ||
+ InfoAvailable[InfoSrc]), // Info available for this source
+ "id=\"InfoSrc%u\" value=\"%u\"%s",
+ (unsigned) InfoSrc,(unsigned) InfoSrc,
+ InfoSrc == InfoSrcSelected ? " checked=\"checked\"" :
+ (InfoSrc == Inf_INFO_SRC_NONE ||
+ InfoAvailable[InfoSrc]) ? "" : // Info available for this source
+ " disabled=\"disabled\"");
Frm_EndForm ();
HTM_TD_End ();
diff --git a/swad_privacy.c b/swad_privacy.c
index d120b6b7..25aed3d3 100644
--- a/swad_privacy.c
+++ b/swad_privacy.c
@@ -176,16 +176,11 @@ static void Pri_PutFormVisibility (const char *TxtLabel,
(Visibility == CurrentVisibilityInDB) ? "DAT_N LIGHT_BLUE" :
"DAT");
HTM_LABEL_Begin (NULL);
- fprintf (Gbl.F.Out,"");
+ HTM_INPUT_RADIO (ParamName,Action != ActUnk,
+ "value=\"%u\"%s%s",
+ (unsigned) Visibility,
+ Visibility == CurrentVisibilityInDB ? " checked=\"checked\"" : "",
+ Action == ActUnk ? " disabled=\"disabled\"" : "");
fprintf (Gbl.F.Out,"%s",Txt_PRIVACY_OPTIONS[Visibility]);
HTM_LABEL_End ();
HTM_LI_End ();
diff --git a/swad_record.c b/swad_record.c
index 9324d9b9..e5f0629a 100644
--- a/swad_record.c
+++ b/swad_record.c
@@ -3120,11 +3120,10 @@ static void Rec_ShowRole (struct UsrData *UsrDat,
Sex++)
{
HTM_LABEL_Begin ("class=\"REC_DAT_BOLD\"");
- fprintf (Gbl.F.Out,"");
+ HTM_INPUT_RADIO ("Sex",false,
+ "value=\"%u\"%s required=\"required\"",
+ (unsigned) Sex,
+ Sex == Gbl.Usrs.Me.UsrDat.Sex ? " checked=\"checked\"" : "");
fprintf (Gbl.F.Out,"%s %s",Usr_StringsSexIcons[Sex],Txt_SEX_SINGULAR_Abc[Sex]);
HTM_LABEL_End ();
}
diff --git a/swad_statistic.c b/swad_statistic.c
index bd99bb09..db904cb5 100644
--- a/swad_statistic.c
+++ b/swad_statistic.c
@@ -409,12 +409,10 @@ void Sta_AskShowCrsHits (void)
Gbl.Stat.ClicksGroupedBy != Sta_CLICKS_CRS_DETAILED_LIST)
Gbl.Stat.ClicksGroupedBy = Sta_CLICKS_GROUPED_BY_DEFAULT;
- fprintf (Gbl.F.Out,"");
+ HTM_INPUT_RADIO ("GroupedOrDetailed",false,
+ "value=\"%u\"%s onclick=\"disableDetailedClicks();\"",
+ (unsigned) Sta_CLICKS_GROUPED,
+ Gbl.Stat.ClicksGroupedBy == Sta_CLICKS_CRS_DETAILED_LIST ? "" : " checked=\"checked\"");
/* Selection of count type (number of pages generated, accesses per user, etc.) */
Sta_WriteSelectorCountType ();
@@ -441,12 +439,10 @@ void Sta_AskShowCrsHits (void)
/***** Option b) Listing of detailed clicks to this course *****/
HTM_LABEL_Begin (NULL);
- fprintf (Gbl.F.Out,"");
+ HTM_INPUT_RADIO ("GroupedOrDetailed",false,
+ "value=\"%u\"%s onclick=\"enableDetailedClicks();\"",
+ (unsigned) Sta_CLICKS_DETAILED,
+ Gbl.Stat.ClicksGroupedBy == Sta_CLICKS_CRS_DETAILED_LIST ? " checked=\"checked\"" : "");
fprintf (Gbl.F.Out,"%s",
Txt_STAT_CLICKS_GROUPED_BY[Sta_CLICKS_CRS_DETAILED_LIST]);
HTM_LABEL_End ();
diff --git a/swad_survey.c b/swad_survey.c
index 1df235d2..cb84c90b 100644
--- a/swad_survey.c
+++ b/swad_survey.c
@@ -2748,11 +2748,10 @@ static void Svy_ShowFormEditOneQst (long SvyCod,struct SurveyQuestion *SvyQst,
AnsType++)
{
HTM_LABEL_Begin (NULL);
- fprintf (Gbl.F.Out,"AnswerType)
- fprintf (Gbl.F.Out," checked=\"checked\"");
- fprintf (Gbl.F.Out," />");
+ HTM_INPUT_RADIO ("AnswerType",false,
+ "value=\"%u\"%s",
+ (unsigned) AnsType,
+ AnsType == SvyQst->AnswerType ? " checked=\"checked\"" : "");
fprintf (Gbl.F.Out,"%s",Txt_SURVEY_STR_ANSWER_TYPES[AnsType]);
HTM_LABEL_End ();
fprintf (Gbl.F.Out,"
");
diff --git a/swad_syllabus.c b/swad_syllabus.c
index dd03b162..04c19c02 100644
--- a/swad_syllabus.c
+++ b/swad_syllabus.c
@@ -150,12 +150,10 @@ void Syl_PutFormWhichSyllabus (void)
{
HTM_LI_Begin ("class=\"DAT LM\"");
HTM_LABEL_Begin (NULL);
- fprintf (Gbl.F.Out,"",
- Gbl.Form.Id);
+ HTM_INPUT_RADIO ("WhichSyllabus",true,
+ "value=\"%u\"%s",
+ (unsigned) WhichSyllabus,
+ WhichSyllabus == Gbl.Syllabus.WhichSyllabus ? " checked=\"checked\"" : "");
fprintf (Gbl.F.Out,"%s",Txt_SYLLABUS_WHICH_SYLLABUS[WhichSyllabus]);
HTM_LABEL_End ();
HTM_LI_End ();
diff --git a/swad_test.c b/swad_test.c
index 033af490..97259fe4 100644
--- a/swad_test.c
+++ b/swad_test.c
@@ -1132,23 +1132,20 @@ static void Tst_PutFormToEditQstMedia (struct Media *Media,int NumMediaInForm,
/***** Choice 1: No media *****/
HTM_LABEL_Begin ("class=\"%s\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
- fprintf (Gbl.F.Out,"");
+ HTM_INPUT_RADIO (ParamUploadMedia.Action,false,
+ "value=\"%u\"%s",
+ (unsigned) Med_ACTION_NO_MEDIA,
+ OptionsDisabled ? " disabled=\"disabled\"" : "");
fprintf (Gbl.F.Out,"%s",Txt_No_image_video);
HTM_LABEL_End ();
fprintf (Gbl.F.Out,"
");
/***** Choice 2: Current media *****/
HTM_LABEL_Begin ("class=\"%s\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
- fprintf (Gbl.F.Out,"");
+ HTM_INPUT_RADIO (ParamUploadMedia.Action,false,
+ "value=\"%u\"%s checked=\"checked\"",
+ (unsigned) Med_ACTION_KEEP_MEDIA,
+ OptionsDisabled ? " disabled=\"disabled\"" : "");
fprintf (Gbl.F.Out,"%s",Txt_Current_image_video);
HTM_LABEL_End ();
Med_ShowMedia (Media,
@@ -1158,13 +1155,11 @@ static void Tst_PutFormToEditQstMedia (struct Media *Media,int NumMediaInForm,
/***** Choice 3: Change media *****/
UniqueId++;
HTM_LABEL_Begin ("class=\"%s\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
- fprintf (Gbl.F.Out,"");
+ HTM_INPUT_RADIO (ParamUploadMedia.Action,false,
+ "id=\"chg_img_%u\" value=\"%u\"%s",
+ UniqueId,
+ (unsigned) Med_ACTION_NEW_MEDIA,
+ OptionsDisabled ? " disabled=\"disabled\"" : "");
fprintf (Gbl.F.Out,"%s: ",Txt_Change_image_video);
HTM_LABEL_End ();
Med_PutMediaUploader (NumMediaInForm,"TEST_MED_INPUT");
@@ -1907,11 +1902,10 @@ static void Tst_ShowFormConfigTst (void)
Pluggable++)
{
HTM_LABEL_Begin ("class=\"DAT\"");
- fprintf (Gbl.F.Out,"");
+ HTM_INPUT_RADIO ("Pluggable",false,
+ "value=\"%u\"%s",
+ (unsigned) Pluggable,
+ Pluggable == Gbl.Test.Config.Pluggable ? " checked=\"checked\"" : "");
fprintf (Gbl.F.Out,"%s",Txt_TST_PLUGGABLE[Pluggable]);
HTM_LABEL_End ();
fprintf (Gbl.F.Out,"
");
@@ -1973,11 +1967,10 @@ static void Tst_ShowFormConfigTst (void)
Feedback++)
{
HTM_LABEL_Begin ("class=\"DAT\"");
- fprintf (Gbl.F.Out,"");
+ HTM_INPUT_RADIO ("Feedback",false,
+ "value=\"%u\"%s",
+ (unsigned) Feedback,
+ Feedback == Gbl.Test.Config.Feedback ? " checked=\"checked\"" : "");
fprintf (Gbl.F.Out,"%s",Txt_TST_STR_FEEDBACK[Feedback]);
HTM_LABEL_End ();
fprintf (Gbl.F.Out,"
");
@@ -5182,11 +5175,10 @@ static void Tst_PutFormEditOneQst (char Stem[Cns_MAX_BYTES_TEXT + 1],
AnsType++)
{
HTM_LABEL_Begin (NULL);
- fprintf (Gbl.F.Out,"");
+ HTM_INPUT_RADIO ("AnswerType",false,
+ "value=\"%u\"%s onclick=\"enableDisableAns(this.form);\"",
+ (unsigned) AnsType,
+ AnsType == Gbl.Test.AnswerType ? " checked=\"checked\"" : "");
fprintf (Gbl.F.Out,"%s ",Txt_TST_STR_ANSWER_TYPES[AnsType]);
HTM_LABEL_End ();
fprintf (Gbl.F.Out,"
");
@@ -5287,15 +5279,12 @@ static void Tst_PutFormEditOneQst (char Stem[Cns_MAX_BYTES_TEXT + 1],
HTM_TD_Begin ("class=\"TEST_EDI_ANS_LEFT_COL COLOR%u\"",Gbl.RowEvenOdd);
/* Radio selector for unique choice answers */
- fprintf (Gbl.F.Out,"");
+ HTM_INPUT_RADIO ("AnsUni",false,
+ "value=\"%u\"%s%s%s onclick=\"enableDisableAns(this.form);\"",
+ NumOpt,
+ Gbl.Test.Answer.Options[NumOpt].Correct ? " checked=\"checked\"" : "",
+ NumOpt < 2 ? " required=\"required\"" : "", // First or second options required
+ Gbl.Test.AnswerType == Tst_ANS_UNIQUE_CHOICE ? "" : " disabled=\"disabled\"");
/* Checkbox for multiple choice answers */
fprintf (Gbl.F.Out,"");
+ HTM_INPUT_RADIO ("AnsTF",false,
+ "value=\"%c\"%s%s required=\"required\"",
+ Value,
+ Gbl.Test.Answer.TF == Value ? " checked=\"checked\"" : "",
+ Gbl.Test.AnswerType == Tst_ANS_TRUE_FALSE ? "" : " disabled=\"disabled\"");
fprintf (Gbl.F.Out,"%s",Label);
HTM_LABEL_End ();
}
diff --git a/swad_user.c b/swad_user.c
index 163c7c89..bf1178a4 100644
--- a/swad_user.c
+++ b/swad_user.c
@@ -8343,19 +8343,13 @@ static void Usr_ShowOneListUsrsOption (Usr_ListUsrsOption_t ListUsrsAction,
const char *Label)
{
HTM_LI_Begin (NULL);
-
- fprintf (Gbl.F.Out,"");
-
- HTM_LABEL_Begin ("for=\"ListUsrsAction%u\"",(unsigned) ListUsrsAction);
+ HTM_LABEL_Begin (NULL);
+ HTM_INPUT_RADIO ("ListUsrsAction",false,
+ "value=\"%u\"%s",
+ (unsigned) ListUsrsAction,
+ ListUsrsAction == Gbl.Usrs.Selected.Option ? " checked=\"checked\"" : "");
fprintf (Gbl.F.Out,"%s",Label);
HTM_LABEL_End ();
-
HTM_LI_End ();
}