From 2a7413a31cdde09ab9c8f365ba56ade767930d2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Mon, 4 Nov 2019 01:29:46 +0100 Subject: [PATCH] Version19.51.8 --- swad_ID.c | 9 ++-- swad_changelog.h | 4 +- swad_holiday.c | 14 +++--- swad_institution.c | 59 ++++++++---------------- swad_link.c | 34 +++++--------- swad_mail.c | 30 +++++------- swad_mark.c | 31 +++++++------ swad_match.c | 6 +-- swad_nickname.c | 21 ++++----- swad_password.c | 6 +-- swad_place.c | 32 +++++-------- swad_plugin.c | 71 ++++++++++++---------------- swad_profile.c | 11 +++-- swad_project.c | 6 +-- swad_record.c | 112 ++++++++++++++++----------------------------- swad_survey.c | 6 +-- swad_syllabus.c | 8 ++-- swad_test.c | 105 +++++++++++++++++++++++++----------------- swad_user.c | 11 ++--- 19 files changed, 249 insertions(+), 327 deletions(-) diff --git a/swad_ID.c b/swad_ID.c index 2ec35174..200e5ed4 100644 --- a/swad_ID.c +++ b/swad_ID.c @@ -713,11 +713,10 @@ static void ID_ShowFormChangeUsrID (const struct UsrData *UsrDat, Frm_StartFormAnchor (NextAction,ID_ID_SECTION_ID); Usr_PutParamUsrCodEncrypted (UsrDat->EncryptedUsrCod); } - fprintf (Gbl.F.Out,"", - ID_MAX_BYTES_USR_ID, - UsrDat->IDs.Num ? UsrDat->IDs.List[UsrDat->IDs.Num - 1].ID : - ""); // Show the most recent ID + HTM_INPUT_TEXT ("NewID",ID_MAX_BYTES_USR_ID, + UsrDat->IDs.Num ? UsrDat->IDs.List[UsrDat->IDs.Num - 1].ID : + "", // Show the most recent ID + " size=\"18\""); fprintf (Gbl.F.Out,"
"); Btn_PutCreateButtonInline (Txt_Add_this_ID); Frm_EndForm (); diff --git a/swad_changelog.h b/swad_changelog.h index 34509acd..a95c8bc8 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -487,15 +487,15 @@ 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.7 (2019-11-03)" +#define Log_PLATFORM_VERSION "SWAD 19.51.8 (2019-11-04)" #define CSS_FILE "swad19.47.css" #define JS_FILE "swad19.39.js" /* // TODO: Hacer un nuevo rol en los TFG: tutor externo (profesor de áreas no vinculadas con el centro, profesionales de empresas, etc.) // 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) -// TODO: Seguir cambiando input text * + Version 19.51.8: Nov 04, 2019 Code refactoring in HTML inputs. (245968 lines) Version 19.51.7: Nov 03, 2019 Code refactoring in HTML inputs. (246051 lines) Version 19.51.6: Nov 03, 2019 Code refactoring in HTML inputs. (246125 lines) Version 19.51.5: Nov 03, 2019 Code refactoring in HTML inputs. (246132 lines) diff --git a/swad_holiday.c b/swad_holiday.c index c836e773..ababae5b 100644 --- a/swad_holiday.c +++ b/swad_holiday.c @@ -651,10 +651,10 @@ static void Hld_ListHolidaysForEdition (void) HTM_TD_Begin ("class=\"CM\""); Frm_StartForm (ActRenHld); Hld_PutParamHldCod (Hld->HldCod); - fprintf (Gbl.F.Out,"", - Hld_MAX_CHARS_HOLIDAY_NAME,Hld->Name,Gbl.Form.Id); + HTM_INPUT_TEXT ("Name",Hld_MAX_CHARS_HOLIDAY_NAME,Hld->Name, + " size=\"20\"" + " onchange=\"document.getElementById('%s').submit();\"", + Gbl.Form.Id); Frm_EndForm (); HTM_TD_End (); HTM_TR_End (); @@ -1038,10 +1038,8 @@ static void Hld_PutFormToCreateHoliday (void) /***** Holiday name *****/ HTM_TD_Begin ("class=\"CM\""); - fprintf (Gbl.F.Out,"", - Hld_MAX_CHARS_HOLIDAY_NAME,Hld_EditingHld->Name); + HTM_INPUT_TEXT ("Name",Hld_MAX_CHARS_HOLIDAY_NAME,Hld_EditingHld->Name, + " size=\"20\" required=\"required\""); HTM_TD_End (); HTM_TD_Empty (1); diff --git a/swad_institution.c b/swad_institution.c index 94bb9b1e..5377461b 100644 --- a/swad_institution.c +++ b/swad_institution.c @@ -409,14 +409,10 @@ static void Ins_Configuration (bool PrintView) { /* Form to change institution full name */ Frm_StartForm (ActRenInsFulCfg); - fprintf (Gbl.F.Out,"", - Hie_MAX_CHARS_FULL_NAME, - Gbl.Hierarchy.Ins.FullName, - Gbl.Form.Id); + HTM_INPUT_TEXT ("FullName",Hie_MAX_CHARS_FULL_NAME,Gbl.Hierarchy.Ins.FullName, + " class=\"INPUT_FULL_NAME\"" + " onchange=\"document.getElementById('%s').submit();\"", + Gbl.Form.Id); Frm_EndForm (); } else // I can not edit institution full name @@ -441,14 +437,10 @@ static void Ins_Configuration (bool PrintView) { /* Form to change institution short name */ Frm_StartForm (ActRenInsShoCfg); - fprintf (Gbl.F.Out,"", - Hie_MAX_CHARS_SHRT_NAME, - Gbl.Hierarchy.Ins.ShrtName, - Gbl.Form.Id); + HTM_INPUT_TEXT ("ShortName",Hie_MAX_CHARS_SHRT_NAME,Gbl.Hierarchy.Ins.ShrtName, + " class=\"INPUT_SHORT_NAME\"" + " onchange=\"document.getElementById('%s').submit();\"", + Gbl.Form.Id); Frm_EndForm (); } else // I can not edit institution short name @@ -1503,12 +1495,10 @@ static void Ins_ListInstitutionsForEdition (void) { Frm_StartForm (ActRenInsSho); Ins_PutParamOtherInsCod (Ins->InsCod); - fprintf (Gbl.F.Out,"", - Hie_MAX_CHARS_SHRT_NAME,Ins->ShrtName, - Gbl.Form.Id); + HTM_INPUT_TEXT ("ShortName",Hie_MAX_CHARS_SHRT_NAME,Ins->ShrtName, + " class=\"INPUT_SHORT_NAME\"" + " onchange=\"document.getElementById('%s').submit();\"", + Gbl.Form.Id); Frm_EndForm (); } else @@ -1521,13 +1511,10 @@ static void Ins_ListInstitutionsForEdition (void) { Frm_StartForm (ActRenInsFul); Ins_PutParamOtherInsCod (Ins->InsCod); - fprintf (Gbl.F.Out,"", - Hie_MAX_CHARS_FULL_NAME, - Ins->FullName, - Gbl.Form.Id); + HTM_INPUT_TEXT ("FullName",Hie_MAX_CHARS_FULL_NAME,Ins->FullName, + " class=\"INPUT_FULL_NAME\"" + " onchange=\"document.getElementById('%s').submit();\"", + Gbl.Form.Id); Frm_EndForm (); } else @@ -2237,20 +2224,14 @@ static void Ins_PutFormToCreateInstitution (void) /***** Institution short name *****/ HTM_TD_Begin ("class=\"LM\""); - fprintf (Gbl.F.Out,"", - Hie_MAX_CHARS_SHRT_NAME,Ins_EditingIns->ShrtName); + HTM_INPUT_TEXT ("ShortName",Hie_MAX_CHARS_SHRT_NAME,Ins_EditingIns->ShrtName, + " class=\"INPUT_SHORT_NAME\" required=\"required\""); HTM_TD_End (); /***** Institution full name *****/ HTM_TD_Begin ("class=\"LM\""); - fprintf (Gbl.F.Out,"", - Hie_MAX_CHARS_FULL_NAME,Ins_EditingIns->FullName); + HTM_INPUT_TEXT ("FullName",Hie_MAX_CHARS_FULL_NAME,Ins_EditingIns->FullName, + " class=\"INPUT_FULL_NAME\" required=\"required\""); HTM_TD_End (); /***** Institution WWW *****/ diff --git a/swad_link.c b/swad_link.c index 5a387a2d..81ad2bdc 100644 --- a/swad_link.c +++ b/swad_link.c @@ -440,12 +440,10 @@ static void Lnk_ListLinksForEdition (void) HTM_TD_Begin ("class=\"CM\""); Frm_StartForm (ActRenLnkSho); Lnk_PutParamLnkCod (Lnk->LnkCod); - fprintf (Gbl.F.Out,"", - Lnk_MAX_CHARS_LINK_SHRT_NAME,Lnk->ShrtName, - Gbl.Form.Id); + HTM_INPUT_TEXT ("ShortName",Lnk_MAX_CHARS_LINK_SHRT_NAME,Lnk->ShrtName, + " class=\"INPUT_SHORT_NAME\"" + " onchange=\"document.getElementById('%s').submit();\"", + Gbl.Form.Id); Frm_EndForm (); HTM_TD_End (); @@ -453,12 +451,10 @@ static void Lnk_ListLinksForEdition (void) HTM_TD_Begin ("class=\"CM\""); Frm_StartForm (ActRenLnkFul); Lnk_PutParamLnkCod (Lnk->LnkCod); - fprintf (Gbl.F.Out,"", - Lnk_MAX_CHARS_LINK_FULL_NAME,Lnk->FullName, - Gbl.Form.Id); + HTM_INPUT_TEXT ("FullName",Lnk_MAX_CHARS_LINK_FULL_NAME,Lnk->FullName, + " class=\"INPUT_FULL_NAME\"" + " onchange=\"document.getElementById('%s').submit();\"", + Gbl.Form.Id); Frm_EndForm (); HTM_TD_End (); @@ -755,20 +751,14 @@ static void Lnk_PutFormToCreateLink (void) /***** Link short name *****/ HTM_TD_Begin ("class=\"CM\""); - fprintf (Gbl.F.Out,"", - Lnk_MAX_CHARS_LINK_SHRT_NAME,Lnk_EditingLnk->ShrtName); + HTM_INPUT_TEXT ("ShortName",Lnk_MAX_CHARS_LINK_SHRT_NAME,Lnk_EditingLnk->ShrtName, + " class=\"INPUT_SHORT_NAME\" required=\"required\""); HTM_TD_End (); /***** Link full name *****/ HTM_TD_Begin ("class=\"CM\""); - fprintf (Gbl.F.Out,"", - Lnk_MAX_CHARS_LINK_FULL_NAME,Lnk_EditingLnk->FullName); + HTM_INPUT_TEXT ("FullName",Lnk_MAX_CHARS_LINK_FULL_NAME,Lnk_EditingLnk->FullName, + " class=\"INPUT_FULL_NAME\" required=\"required\""); HTM_TD_End (); /***** Link WWW *****/ diff --git a/swad_mail.c b/swad_mail.c index bde50372..ff86b987 100644 --- a/swad_mail.c +++ b/swad_mail.c @@ -506,11 +506,10 @@ static void Mai_ListMailDomainsForEdition (void) HTM_TD_Begin ("class=\"CM\""); Frm_StartForm (ActRenMaiSho); Mai_PutParamMaiCod (Mai->MaiCod); - fprintf (Gbl.F.Out,"", - Cns_MAX_CHARS_EMAIL_ADDRESS,Mai->Domain, - Gbl.Form.Id); + HTM_INPUT_TEXT ("Domain",Cns_MAX_CHARS_EMAIL_ADDRESS,Mai->Domain, + " size=\"15\"" + " onchange=\"document.getElementById('%s').submit();\"", + Gbl.Form.Id); Frm_EndForm (); HTM_TD_End (); @@ -518,11 +517,10 @@ static void Mai_ListMailDomainsForEdition (void) HTM_TD_Begin ("class=\"CM\""); Frm_StartForm (ActRenMaiFul); Mai_PutParamMaiCod (Mai->MaiCod); - fprintf (Gbl.F.Out,"", - Mai_MAX_CHARS_MAIL_INFO,Mai->Info, - Gbl.Form.Id); + HTM_INPUT_TEXT ("Info",Mai_MAX_CHARS_MAIL_INFO,Mai->Info, + " size=\"40\"" + " onchange=\"document.getElementById('%s').submit();\"", + Gbl.Form.Id); Frm_EndForm (); HTM_TD_End (); @@ -765,18 +763,14 @@ static void Mai_PutFormToCreateMailDomain (void) /***** Mail domain *****/ HTM_TD_Begin ("class=\"CM\""); - fprintf (Gbl.F.Out,"", - Cns_MAX_CHARS_EMAIL_ADDRESS,Mai_EditingMai->Domain); + HTM_INPUT_TEXT ("Domain",Cns_MAX_CHARS_EMAIL_ADDRESS,Mai_EditingMai->Domain, + " size=\"15\" required=\"required\""); HTM_TD_End (); /***** Mail domain info *****/ HTM_TD_Begin ("class=\"CM\""); - fprintf (Gbl.F.Out,"", - Mai_MAX_CHARS_MAIL_INFO,Mai_EditingMai->Info); + HTM_INPUT_TEXT ("Info",Mai_MAX_CHARS_MAIL_INFO,Mai_EditingMai->Info, + " size=\"40\" required=\"required\""); HTM_TD_End (); HTM_TD_Empty (1); diff --git a/swad_mark.c b/swad_mark.c index 93942f6d..b78c1990 100644 --- a/swad_mark.c +++ b/swad_mark.c @@ -112,6 +112,7 @@ void Mrk_GetAndWriteNumRowsHeaderAndFooter (void) extern const char *Txt_TABLE_Header; extern const char *Txt_TABLE_Footer; struct MarksProperties Marks; + char StrHeadOrFoot[10 + 1]; if (Gbl.FileBrowser.FilFolLnk.Type == Brw_IS_FOLDER) HTM_TD_ColouredEmpty (2); @@ -129,13 +130,14 @@ void Mrk_GetAndWriteNumRowsHeaderAndFooter (void) Brw_PutImplicitParamsFileBrowser (); HTM_LABEL_Begin (NULL); fprintf (Gbl.F.Out," %s: ",Txt_TABLE_Header); - fprintf (Gbl.F.Out,"", - Mrk_HeadOrFootStr[Brw_HEADER],Marks.Header, - Gbl.RowEvenOdd, - Gbl.Form.Id); + snprintf (StrHeadOrFoot,sizeof (StrHeadOrFoot), + "%u", + Marks.Header); + HTM_INPUT_TEXT (Mrk_HeadOrFootStr[Brw_HEADER],5,StrHeadOrFoot, + " size=\"1\" class=\"LST_EDIT_ROWS COLOR%u\"" + " onchange=\"document.getElementById('%s').submit();\"", + Gbl.RowEvenOdd, + Gbl.Form.Id); HTM_LABEL_End (); Frm_EndForm (); HTM_TD_End (); @@ -149,13 +151,14 @@ void Mrk_GetAndWriteNumRowsHeaderAndFooter (void) Brw_PutImplicitParamsFileBrowser (); HTM_LABEL_Begin (NULL); fprintf (Gbl.F.Out," %s: ",Txt_TABLE_Footer); - fprintf (Gbl.F.Out,"", - Mrk_HeadOrFootStr[Brw_FOOTER],Marks.Footer, - Gbl.RowEvenOdd, - Gbl.Form.Id); + snprintf (StrHeadOrFoot,sizeof (StrHeadOrFoot), + "%u", + Marks.Footer); + HTM_INPUT_TEXT (Mrk_HeadOrFootStr[Brw_FOOTER],5,StrHeadOrFoot, + " size=\"1\" class=\"LST_EDIT_ROWS COLOR%u\"" + " onchange=\"document.getElementById('%s').submit();\"", + Gbl.RowEvenOdd, + Gbl.Form.Id); HTM_LABEL_End (); Frm_EndForm (); HTM_TD_End (); diff --git a/swad_match.c b/swad_match.c index 2e5c8de9..8bdd023e 100644 --- a/swad_match.c +++ b/swad_match.c @@ -1205,10 +1205,8 @@ static void Mch_PutFormNewMatch (struct Game *Game) HTM_TD_End (); HTM_TD_Begin ("class=\"LM\""); - fprintf (Gbl.F.Out,"", - Gam_MAX_CHARS_TITLE,Game->Title); + HTM_INPUT_TEXT ("Title",Gam_MAX_CHARS_TITLE,Game->Title, + " size=\"45\" required=\"required\""); HTM_TD_End (); HTM_TR_End (); diff --git a/swad_nickname.c b/swad_nickname.c index bbe83ce7..02d9afee 100644 --- a/swad_nickname.c +++ b/swad_nickname.c @@ -25,8 +25,6 @@ /********************************* Headers ***********************************/ /*****************************************************************************/ -#define _GNU_SOURCE // For asprintf -#include // For asprintf #include // For string functions #include "swad_account.h" @@ -233,7 +231,7 @@ static void Nck_ShowFormChangeUsrNickname (const struct UsrData *UsrDat,bool Its unsigned NumNicks; unsigned NumNick; Act_Action_t NextAction; - char *NewNick; + char NicknameWithArroba[1 + Nck_MAX_BYTES_NICKNAME_WITHOUT_ARROBA + 1]; /***** Start section *****/ HTM_SECTION_Begin (Nck_NICKNAME_SECTION_ID); @@ -356,10 +354,10 @@ static void Nck_ShowFormChangeUsrNickname (const struct UsrData *UsrDat,bool Its Usr_PutParamUsrCodEncrypted (UsrDat->EncryptedUsrCod); } - if (asprintf (&NewNick,"@%s",row[0]) < 0) - Lay_NotEnoughMemoryExit (); - Par_PutHiddenParamString (NULL,"NewNick",NewNick); // Nickname - free ((void *) NewNick); + snprintf (NicknameWithArroba,sizeof (NicknameWithArroba), + "@%s", + row[0]); + Par_PutHiddenParamString (NULL,"NewNick",NicknameWithArroba); // Nickname Btn_PutConfirmButtonInline (Txt_Use_this_nickname); Frm_EndForm (); } @@ -400,10 +398,11 @@ static void Nck_ShowFormChangeUsrNickname (const struct UsrData *UsrDat,bool Its Frm_StartFormAnchor (NextAction,Nck_NICKNAME_SECTION_ID); Usr_PutParamUsrCodEncrypted (UsrDat->EncryptedUsrCod); } - fprintf (Gbl.F.Out,"", - 1 + Nck_MAX_CHARS_NICKNAME_WITHOUT_ARROBA, - Gbl.Usrs.Me.UsrDat.Nickname); + snprintf (NicknameWithArroba,sizeof (NicknameWithArroba), + "@%s", + Gbl.Usrs.Me.UsrDat.Nickname); + HTM_INPUT_TEXT ("NewNick",1 + Nck_MAX_CHARS_NICKNAME_WITHOUT_ARROBA,NicknameWithArroba, + " size=\"18\""); fprintf (Gbl.F.Out,"
"); Btn_PutCreateButtonInline (NumNicks ? Txt_Change_nickname : // I already have a nickname Txt_Save_changes); // I have no nickname yet); diff --git a/swad_password.c b/swad_password.c index 161c3d4c..1806c9b1 100644 --- a/swad_password.c +++ b/swad_password.c @@ -284,10 +284,8 @@ void Pwd_ShowFormSendNewPwd (void) /***** User's ID/nickname *****/ HTM_LABEL_Begin ("class=\"%s\"",The_ClassFormInBox[Gbl.Prefs.Theme]); fprintf (Gbl.F.Out,"%s: ",Txt_nick_email_or_ID); - fprintf (Gbl.F.Out,"", - Cns_MAX_CHARS_EMAIL_ADDRESS,Gbl.Usrs.Me.UsrIdLogin); + HTM_INPUT_TEXT ("UsrId",Cns_MAX_CHARS_EMAIL_ADDRESS,Gbl.Usrs.Me.UsrIdLogin, + " size=\"8\" required=\"required\""); HTM_LABEL_End (); /***** Send button and end box *****/ diff --git a/swad_place.c b/swad_place.c index 96954052..3ee88ab1 100644 --- a/swad_place.c +++ b/swad_place.c @@ -552,11 +552,10 @@ static void Plc_ListPlacesForEdition (void) HTM_TD_Begin ("class=\"CM\""); Frm_StartForm (ActRenPlcSho); Plc_PutParamPlcCod (Plc->PlcCod); - fprintf (Gbl.F.Out,"", - Plc_MAX_CHARS_PLACE_SHRT_NAME,Plc->ShrtName,Gbl.Form.Id); + HTM_INPUT_TEXT ("ShortName",Plc_MAX_CHARS_PLACE_SHRT_NAME,Plc->ShrtName, + " class=\"INPUT_SHORT_NAME\"" + " onchange=\"document.getElementById('%s').submit();\"", + Gbl.Form.Id); Frm_EndForm (); HTM_TD_End (); @@ -564,11 +563,10 @@ static void Plc_ListPlacesForEdition (void) HTM_TD_Begin ("class=\"CM\""); Frm_StartForm (ActRenPlcFul); Plc_PutParamPlcCod (Plc->PlcCod); - fprintf (Gbl.F.Out,"", - Plc_MAX_CHARS_PLACE_FULL_NAME,Plc->FullName,Gbl.Form.Id); + HTM_INPUT_TEXT ("FullName",Plc_MAX_CHARS_PLACE_FULL_NAME,Plc->FullName, + " class=\"INPUT_FULL_NAME\"" + " onchange=\"document.getElementById('%s').submit();\"", + Gbl.Form.Id); Frm_EndForm (); HTM_TD_End (); @@ -822,20 +820,14 @@ static void Plc_PutFormToCreatePlace (void) /***** Place short name *****/ HTM_TD_Begin ("class=\"CM\""); - fprintf (Gbl.F.Out,"", - Plc_MAX_CHARS_PLACE_SHRT_NAME,Plc_EditingPlc->ShrtName); + HTM_INPUT_TEXT ("ShortName",Plc_MAX_CHARS_PLACE_SHRT_NAME,Plc_EditingPlc->ShrtName, + " class=\"INPUT_SHORT_NAME\" required=\"required\""); HTM_TD_End (); /***** Place full name *****/ HTM_TD_Begin ("class=\"CM\""); - fprintf (Gbl.F.Out,"", - Plc_MAX_CHARS_PLACE_FULL_NAME,Plc_EditingPlc->FullName); + HTM_INPUT_TEXT ("FullName",Plc_MAX_CHARS_PLACE_FULL_NAME,Plc_EditingPlc->FullName, + " class=\"INPUT_FULL_NAME\" required=\"required\""); HTM_TD_End (); /***** Number of centres *****/ diff --git a/swad_plugin.c b/swad_plugin.c index f1e6501e..789c0e2b 100644 --- a/swad_plugin.c +++ b/swad_plugin.c @@ -426,10 +426,10 @@ static void Plg_ListPluginsForEdition (void) HTM_TD_Begin ("class=\"CM\""); Frm_StartForm (ActRenPlg); Plg_PutParamPlgCod (Plg->PlgCod); - fprintf (Gbl.F.Out,"", - Plg_MAX_CHARS_PLUGIN_NAME,Plg->Name,Gbl.Form.Id); + HTM_INPUT_TEXT ("Name",Plg_MAX_CHARS_PLUGIN_NAME,Plg->Name, + " size=\"10\"" + " onchange=\"document.getElementById('%s').submit();\"", + Gbl.Form.Id); Frm_EndForm (); HTM_TD_End (); @@ -437,10 +437,10 @@ static void Plg_ListPluginsForEdition (void) HTM_TD_Begin ("class=\"CM\""); Frm_StartForm (ActChgPlgDes); Plg_PutParamPlgCod (Plg->PlgCod); - fprintf (Gbl.F.Out,"", - Plg_MAX_CHARS_PLUGIN_DESCRIPTION,Plg->Description,Gbl.Form.Id); + HTM_INPUT_TEXT ("Description",Plg_MAX_CHARS_PLUGIN_DESCRIPTION,Plg->Description, + " size=\"30\"" + " onchange=\"document.getElementById('%s').submit();\"", + Gbl.Form.Id); Frm_EndForm (); HTM_TD_End (); @@ -448,10 +448,10 @@ static void Plg_ListPluginsForEdition (void) HTM_TD_Begin ("class=\"CM\""); Frm_StartForm (ActChgPlgLog); Plg_PutParamPlgCod (Plg->PlgCod); - fprintf (Gbl.F.Out,"", - Plg_MAX_CHARS_PLUGIN_LOGO,Plg->Logo,Gbl.Form.Id); + HTM_INPUT_TEXT ("Logo",Plg_MAX_CHARS_PLUGIN_LOGO,Plg->Logo, + " size=\"4\"" + " onchange=\"document.getElementById('%s').submit();\"", + Gbl.Form.Id); Frm_EndForm (); HTM_TD_End (); @@ -459,10 +459,10 @@ static void Plg_ListPluginsForEdition (void) HTM_TD_Begin ("class=\"CM\""); Frm_StartForm (ActChgPlgAppKey); Plg_PutParamPlgCod (Plg->PlgCod); - fprintf (Gbl.F.Out,"", - Plg_MAX_CHARS_PLUGIN_APP_KEY,Plg->AppKey,Gbl.Form.Id); + HTM_INPUT_TEXT ("AppKey",Plg_MAX_CHARS_PLUGIN_APP_KEY,Plg->AppKey, + " size=\"16\"" + " onchange=\"document.getElementById('%s').submit();\"", + Gbl.Form.Id); Frm_EndForm (); HTM_TD_End (); @@ -481,11 +481,10 @@ static void Plg_ListPluginsForEdition (void) HTM_TD_Begin ("class=\"CM\""); Frm_StartForm (ActChgPlgIP); Plg_PutParamPlgCod (Plg->PlgCod); - fprintf (Gbl.F.Out,"", - Cns_MAX_CHARS_IP,Plg->IP, - Gbl.Form.Id); + HTM_INPUT_TEXT ("IP",Cns_MAX_CHARS_IP,Plg->IP, + " size=\"10\"" + " onchange=\"document.getElementById('%s').submit();\"", + Gbl.Form.Id); Frm_EndForm (); HTM_TD_End (); HTM_TR_End (); @@ -905,34 +904,26 @@ static void Plg_PutFormToCreatePlugin (void) /***** Plugin name *****/ HTM_TD_Begin ("class=\"CM\""); - fprintf (Gbl.F.Out,"", - Plg_MAX_CHARS_PLUGIN_NAME,Plg_EditingPlg->Name); + HTM_INPUT_TEXT ("Name",Plg_MAX_CHARS_PLUGIN_NAME,Plg_EditingPlg->Name, + " size=\"10\" required=\"required\""); HTM_TD_End (); /***** Plugin description *****/ HTM_TD_Begin ("class=\"CM\""); - fprintf (Gbl.F.Out,"", - Plg_MAX_CHARS_PLUGIN_DESCRIPTION,Plg_EditingPlg->Description); + HTM_INPUT_TEXT ("Description",Plg_MAX_CHARS_PLUGIN_DESCRIPTION,Plg_EditingPlg->Description, + " size=\"30\" required=\"required\""); HTM_TD_End (); /***** Plugin logo *****/ HTM_TD_Begin ("class=\"CM\""); - fprintf (Gbl.F.Out,"", - Plg_MAX_CHARS_PLUGIN_LOGO,Plg_EditingPlg->Logo); + HTM_INPUT_TEXT ("Logo",Plg_MAX_CHARS_PLUGIN_LOGO,Plg_EditingPlg->Logo, + " size=\"4\" required=\"required\""); HTM_TD_End (); /***** Plugin application key *****/ HTM_TD_Begin ("class=\"CM\""); - fprintf (Gbl.F.Out,"", - Plg_MAX_CHARS_PLUGIN_APP_KEY,Plg_EditingPlg->AppKey); + HTM_INPUT_TEXT ("AppKey",Plg_MAX_CHARS_PLUGIN_APP_KEY,Plg_EditingPlg->AppKey, + " size=\"16\" required=\"required\""); HTM_TD_End (); /***** Plugin URL *****/ @@ -945,10 +936,8 @@ static void Plg_PutFormToCreatePlugin (void) /***** Plugin IP address *****/ HTM_TD_Begin ("class=\"CM\""); - fprintf (Gbl.F.Out,"", - Cns_MAX_CHARS_IP,Plg_EditingPlg->IP); + HTM_INPUT_TEXT ("IP",Cns_MAX_CHARS_IP,Plg_EditingPlg->IP, + " size=\"10\" required=\"required\""); HTM_TD_End (); HTM_TR_End (); diff --git a/swad_profile.c b/swad_profile.c index a47eccb9..caafbbe8 100644 --- a/swad_profile.c +++ b/swad_profile.c @@ -184,6 +184,7 @@ void Prf_RequestUserProfile (void) extern const char *The_ClassFormInBox[The_NUM_THEMES]; extern const char *Txt_Nickname; extern const char *Txt_Continue; + char NicknameWithArroba[1 + Nck_MAX_BYTES_NICKNAME_WITHOUT_ARROBA + 1]; if (Gbl.Usrs.Me.Logged) { @@ -206,10 +207,12 @@ void Prf_RequestUserProfile (void) If no user logged ==> the nickname is empty */ HTM_LABEL_Begin ("class=\"%s\"",The_ClassFormInBox[Gbl.Prefs.Theme]); fprintf (Gbl.F.Out,"%s: ",Txt_Nickname); - fprintf (Gbl.F.Out,"", - Nck_MAX_BYTES_NICKNAME_FROM_FORM, - Gbl.Usrs.Me.UsrDat.Nickname); + + snprintf (NicknameWithArroba,sizeof (NicknameWithArroba), + "@%s", + Gbl.Usrs.Me.UsrDat.Nickname); + HTM_INPUT_TEXT ("usr",Nck_MAX_BYTES_NICKNAME_FROM_FORM,NicknameWithArroba, + " size=\"18\""); HTM_LABEL_End (); /***** Send button and end box *****/ diff --git a/swad_project.c b/swad_project.c index cf634e9a..edfbf421 100644 --- a/swad_project.c +++ b/swad_project.c @@ -3305,10 +3305,8 @@ static void Prj_PutFormProject (struct Project *Prj,bool ItsANewProject) HTM_TD_End (); HTM_TD_Begin ("class=\"LM\""); - fprintf (Gbl.F.Out,"", - Prj_MAX_CHARS_PROJECT_TITLE,Prj->Title); + HTM_INPUT_TEXT ("Title",Prj_MAX_CHARS_PROJECT_TITLE,Prj->Title, + " size=\"45\" required=\"required\""); HTM_TD_End (); HTM_TR_End (); diff --git a/swad_record.c b/swad_record.c index ee31140d..a4b9a2cd 100644 --- a/swad_record.c +++ b/swad_record.c @@ -286,6 +286,7 @@ void Rec_ListFieldsRecordsForEdition (void) extern const char *Txt_RECORD_FIELD_VISIBILITY_MENU[Rec_NUM_TYPES_VISIBILITY]; unsigned NumField; Rec_VisibilityRecordFields_t Vis; + char StrNumLines[10 + 1]; /***** Write heading *****/ Rec_WriteHeadingRecordFields (); @@ -309,12 +310,10 @@ void Rec_ListFieldsRecordsForEdition (void) HTM_TD_Begin ("class=\"LM\""); Frm_StartForm (ActRenFie); Par_PutHiddenParamLong (NULL,"FieldCod",Gbl.Crs.Records.LstFields.Lst[NumField].FieldCod); - fprintf (Gbl.F.Out,"", - Rec_MAX_CHARS_NAME_FIELD, - Gbl.Crs.Records.LstFields.Lst[NumField].Name, - Gbl.Form.Id); + HTM_INPUT_TEXT ("FieldName",Rec_MAX_CHARS_NAME_FIELD,Gbl.Crs.Records.LstFields.Lst[NumField].Name, + " class=\"REC_FIELDNAME\"" + " onchange=\"document.getElementById('%s').submit();\"", + Gbl.Form.Id); Frm_EndForm (); HTM_TD_End (); @@ -322,11 +321,13 @@ void Rec_ListFieldsRecordsForEdition (void) HTM_TD_Begin ("class=\"CM\""); Frm_StartForm (ActChgRowFie); Par_PutHiddenParamLong (NULL,"FieldCod",Gbl.Crs.Records.LstFields.Lst[NumField].FieldCod); - fprintf (Gbl.F.Out,"", - Gbl.Crs.Records.LstFields.Lst[NumField].NumLines, - Gbl.Form.Id); + snprintf (StrNumLines,sizeof (StrNumLines), + "%u", + Gbl.Crs.Records.LstFields.Lst[NumField].NumLines); + HTM_INPUT_TEXT ("NumLines",2,StrNumLines, + " size=\"2\"" + " onchange=\"document.getElementById('%s').submit();\"", + Gbl.Form.Id); Frm_EndForm (); HTM_TD_End (); @@ -365,6 +366,7 @@ void Rec_ShowFormCreateRecordField (void) extern const char *Txt_RECORD_FIELD_VISIBILITY_MENU[Rec_NUM_TYPES_VISIBILITY]; extern const char *Txt_Create_record_field; Rec_VisibilityRecordFields_t Vis; + char StrNumLines[10 + 1]; /***** Begin form *****/ Frm_StartForm (ActNewFie); @@ -384,18 +386,17 @@ void Rec_ShowFormCreateRecordField (void) /***** Field name *****/ HTM_TD_Begin ("class=\"LM\""); - fprintf (Gbl.F.Out,"", - Rec_MAX_CHARS_NAME_FIELD,Gbl.Crs.Records.Field.Name); + HTM_INPUT_TEXT ("FieldName",Rec_MAX_CHARS_NAME_FIELD,Gbl.Crs.Records.Field.Name, + " class=\"REC_FIELDNAME\" required=\"required\""); HTM_TD_End (); /***** Number of lines in form ******/ HTM_TD_Begin ("class=\"CM\""); - fprintf (Gbl.F.Out,"", - Gbl.Crs.Records.Field.NumLines); + snprintf (StrNumLines,sizeof (StrNumLines), + "%u", + Gbl.Crs.Records.Field.NumLines); + HTM_INPUT_TEXT ("NumLines",2,StrNumLines, + " size=\"2\" required=\"required\""); HTM_TD_End (); /***** Visibility to students *****/ @@ -3172,17 +3173,10 @@ static void Rec_ShowSurname1 (struct UsrData *UsrDat, HTM_TD_Begin ("class=\"REC_C2_BOT REC_DAT_BOLD LM\""); if (ICanEdit) - { - fprintf (Gbl.F.Out,"Surname1); - if (TypeOfView == Rec_SHA_MY_RECORD_FORM) - fprintf (Gbl.F.Out," required=\"required\""); - fprintf (Gbl.F.Out," />"); - } + HTM_INPUT_TEXT ("Surname1",Usr_MAX_CHARS_FIRSTNAME_OR_SURNAME,UsrDat->Surname1, + " class=\"REC_C2_BOT_INPUT\"%s", + TypeOfView == Rec_SHA_MY_RECORD_FORM ? " required=\"required\"" : + ""); else if (UsrDat->Surname1[0]) fprintf (Gbl.F.Out,"%s",UsrDat->Surname1); HTM_TD_End (); @@ -3210,12 +3204,8 @@ static void Rec_ShowSurname2 (struct UsrData *UsrDat, HTM_TD_Begin ("class=\"REC_C2_BOT REC_DAT_BOLD LM\""); if (ICanEdit) - fprintf (Gbl.F.Out,"", - Usr_MAX_CHARS_FIRSTNAME_OR_SURNAME, - UsrDat->Surname2); + HTM_INPUT_TEXT ("Surname2",Usr_MAX_CHARS_FIRSTNAME_OR_SURNAME,UsrDat->Surname2, + " class=\"REC_C2_BOT_INPUT\""); else if (UsrDat->Surname2[0]) fprintf (Gbl.F.Out,"%s",UsrDat->Surname2); HTM_TD_End (); @@ -3247,17 +3237,10 @@ static void Rec_ShowFirstName (struct UsrData *UsrDat, HTM_TD_Begin ("colspan=\"2\" class=\"REC_C2_BOT REC_DAT_BOLD LM\""); if (ICanEdit) - { - fprintf (Gbl.F.Out,"FirstName); - if (TypeOfView == Rec_SHA_MY_RECORD_FORM) - fprintf (Gbl.F.Out," required=\"required\""); - fprintf (Gbl.F.Out," />"); - } + HTM_INPUT_TEXT ("FirstName",Usr_MAX_CHARS_FIRSTNAME_OR_SURNAME,UsrDat->FirstName, + " class=\"REC_C2_BOT_INPUT\"%s", + TypeOfView == Rec_SHA_MY_RECORD_FORM ? " required=\"required\"" : + ""); else if (UsrDat->FirstName[0]) fprintf (Gbl.F.Out,"%s",UsrDat->FirstName); HTM_TD_End (); @@ -3345,12 +3328,8 @@ static void Rec_ShowOriginPlace (struct UsrData *UsrDat, if (ShowData) { if (ICanEdit) - fprintf (Gbl.F.Out,"", - Usr_MAX_CHARS_ADDRESS, - UsrDat->OriginPlace); + HTM_INPUT_TEXT ("OriginPlace",Usr_MAX_CHARS_ADDRESS,UsrDat->OriginPlace, + " class=\"REC_C2_BOT_INPUT\""); else if (UsrDat->OriginPlace[0]) fprintf (Gbl.F.Out,"%s",UsrDat->OriginPlace); } @@ -3414,12 +3393,8 @@ static void Rec_ShowLocalAddress (struct UsrData *UsrDat, if (ShowData) { if (ICanEdit) - fprintf (Gbl.F.Out,"", - Usr_MAX_CHARS_ADDRESS, - UsrDat->LocalAddress); + HTM_INPUT_TEXT ("LocalAddress",Usr_MAX_CHARS_ADDRESS,UsrDat->LocalAddress, + " class=\"REC_C2_BOT_INPUT\""); else if (UsrDat->LocalAddress[0]) fprintf (Gbl.F.Out,"%s",UsrDat->LocalAddress); } @@ -3490,12 +3465,8 @@ static void Rec_ShowFamilyAddress (struct UsrData *UsrDat, if (ShowData) { if (ICanEdit) - fprintf (Gbl.F.Out,"", - Usr_MAX_CHARS_ADDRESS, - UsrDat->FamilyAddress); + HTM_INPUT_TEXT ("FamilyAddress",Usr_MAX_CHARS_ADDRESS,UsrDat->FamilyAddress, + " class=\"REC_C2_BOT_INPUT\""); else if (UsrDat->FamilyAddress[0]) fprintf (Gbl.F.Out,"%s",UsrDat->FamilyAddress); } @@ -4209,13 +4180,10 @@ static void Rec_ShowFormMyInsCtrDpt (bool IAmATeacher) HTM_TD_Begin ("class=\"REC_C2_BOT LM\""); Frm_StartFormAnchor (ActChgMyOff,Rec_MY_INS_CTR_DPT_ID); - fprintf (Gbl.F.Out,"", - Usr_MAX_CHARS_ADDRESS, - Gbl.Usrs.Me.UsrDat.Tch.Office, - Gbl.Form.Id); + HTM_INPUT_TEXT ("Office",Usr_MAX_CHARS_ADDRESS,Gbl.Usrs.Me.UsrDat.Tch.Office, + " class=\"REC_C2_BOT_INPUT\"" + " onchange=\"document.getElementById('%s').submit();\"", + Gbl.Form.Id); Frm_EndForm (); HTM_TD_End (); diff --git a/swad_survey.c b/swad_survey.c index ab0fbe29..22893af2 100644 --- a/swad_survey.c +++ b/swad_survey.c @@ -1916,10 +1916,8 @@ void Svy_RequestCreatOrEditSvy (void) HTM_TD_End (); HTM_TD_Begin ("class=\"LM\""); - fprintf (Gbl.F.Out,"", - Svy_MAX_CHARS_SURVEY_TITLE,Svy.Title); + HTM_INPUT_TEXT ("Title",Svy_MAX_CHARS_SURVEY_TITLE,Svy.Title, + " size=\"45\" required=\"required\""); HTM_TD_End (); HTM_TR_End (); diff --git a/swad_syllabus.c b/swad_syllabus.c index 56a101f5..a9dfe6cc 100644 --- a/swad_syllabus.c +++ b/swad_syllabus.c @@ -917,11 +917,9 @@ static void Syl_PutFormItemSyllabus (bool NewItem,unsigned NumItem,int Level,int ActModIteSylPra)); Gbl.Syllabus.ParamNumItem = NumItem; Syl_PutParamNumItem (); - fprintf (Gbl.F.Out,"", diff --git a/swad_test.c b/swad_test.c index debf2df9..038f2df8 100644 --- a/swad_test.c +++ b/swad_test.c @@ -1808,10 +1808,10 @@ static void Tst_ShowFormEditTags (void) HTM_TD_Begin ("class=\"LM\""); Frm_StartForm (ActRenTag); Par_PutHiddenParamString (NULL,"OldTagTxt",row[1]); - fprintf (Gbl.F.Out,"", - Tst_MAX_CHARS_TAG,row[1],Gbl.Form.Id); + HTM_INPUT_TEXT ("NewTagTxt",Tst_MAX_CHARS_TAG,row[1], + "size=\"36\"" + " onchange=\"document.getElementById('%s').submit();\"", + Gbl.Form.Id); Frm_EndForm (); HTM_TD_End (); @@ -1887,6 +1887,7 @@ static void Tst_ShowFormConfigTst (void) extern const char *Txt_Save_changes; Tst_Pluggable_t Pluggable; Tst_Feedback_t Feedback; + char StrMinTimeNxtTstPerQst[20 + 1]; /***** Read test configuration from database *****/ Tst_GetConfigTstFromDB (); @@ -1956,11 +1957,11 @@ static void Tst_ShowFormConfigTst (void) HTM_TD_End (); HTM_TD_Begin ("class=\"LB\""); - fprintf (Gbl.F.Out,"", - Gbl.Test.Config.MinTimeNxtTstPerQst); + snprintf (StrMinTimeNxtTstPerQst,sizeof (StrMinTimeNxtTstPerQst), + "%lu", + Gbl.Test.Config.MinTimeNxtTstPerQst); + HTM_INPUT_TEXT ("MinTimeNxtTstPerQst",7,StrMinTimeNxtTstPerQst, + "size=\"7\" required=\"required\""); HTM_TD_End (); HTM_TR_End (); @@ -2009,6 +2010,8 @@ static void Tst_ShowFormConfigTst (void) static void Tst_PutInputFieldNumQst (const char *Field,const char *Label, unsigned Value) { + char StrValue[10 + 1]; + HTM_TR_Begin (NULL); HTM_TD_Begin ("class=\"RM\""); @@ -2018,12 +2021,11 @@ static void Tst_PutInputFieldNumQst (const char *Field,const char *Label, HTM_TD_End (); HTM_TD_Begin ("class=\"LM\""); - fprintf (Gbl.F.Out,"", - Field,Field, - Value); + snprintf (StrValue,sizeof (StrValue), + "%u", + Value); + HTM_INPUT_TEXT (Field,3,StrValue, + "size=\"3\" required=\"required\""); HTM_TD_End (); HTM_TR_End (); @@ -4212,10 +4214,14 @@ void Tst_WriteChoiceAnsViewMatch (long MchCod,unsigned QstInd,long QstCod, static void Tst_WriteTextAnsViewTest (unsigned NumQst) { + char StrAns[3 + 6 + 1]; + /***** Write input field for the answer *****/ - fprintf (Gbl.F.Out,"", - NumQst,Tst_MAX_BYTES_ANSWERS_ONE_QST); + snprintf (StrAns,sizeof (StrAns), + "Ans%06u", + NumQst); + HTM_INPUT_TEXT (StrAns,Tst_MAX_BYTES_ANSWERS_ONE_QST,"", + "size=\"40\""); } /*****************************************************************************/ @@ -4412,10 +4418,14 @@ static void Tst_WriteTextAnsAssessTest (struct UsrData *UsrDat, static void Tst_WriteIntAnsViewTest (unsigned NumQst) { + char StrAns[3 + 6 + 1]; + /***** Write input field for the answer *****/ - fprintf (Gbl.F.Out,"", - NumQst); + snprintf (StrAns,sizeof (StrAns), + "Ans%06u", + NumQst); + HTM_INPUT_TEXT (StrAns,11,"", + "size=\"11\""); } /*****************************************************************************/ @@ -4527,10 +4537,14 @@ static void Tst_WriteIntAnsAssessTest (struct UsrData *UsrDat, static void Tst_WriteFloatAnsViewTest (unsigned NumQst) { + char StrAns[3 + 6 + 1]; + /***** Write input field for the answer *****/ - fprintf (Gbl.F.Out,"", - NumQst,Tst_MAX_BYTES_FLOAT_ANSWER); + snprintf (StrAns,sizeof (StrAns), + "Ans%06u", + NumQst); + HTM_INPUT_TEXT (StrAns,Tst_MAX_BYTES_FLOAT_ANSWER,"", + "size=\"11\""); } /*****************************************************************************/ @@ -5024,6 +5038,8 @@ static void Tst_PutFormEditOneQst (char Stem[Cns_MAX_BYTES_TEXT + 1], bool OptionsDisabled; bool AnswerHasContent; bool DisplayRightColumn; + char StrTagTxt[6 + 10 + 1]; + char StrInteger[20 + 1]; /***** Begin box *****/ if (Gbl.Test.QstCod > 0) // The question already has assigned a code @@ -5109,10 +5125,13 @@ static void Tst_PutFormEditOneQst (char Stem[Cns_MAX_BYTES_TEXT + 1], /***** Input of a new tag *****/ HTM_TD_Begin ("class=\"RM\""); - fprintf (Gbl.F.Out,"", - NumTag,NumTag,Tst_MAX_CHARS_TAG,Gbl.Test.Tags.Txt[NumTag],NumTag); + snprintf (StrTagTxt,sizeof (StrTagTxt), + "TagTxt%u", + NumTag); + HTM_INPUT_TEXT (StrTagTxt,Tst_MAX_CHARS_TAG,StrTagTxt, + "class=\"TAG_TXT\"" + " onchange=\"changeSelTag('%u')\"", + NumTag); HTM_TD_End (); HTM_TR_End (); @@ -5194,12 +5213,13 @@ static void Tst_PutFormEditOneQst (char Stem[Cns_MAX_BYTES_TEXT + 1], HTM_TD_Begin ("class=\"LT\""); HTM_LABEL_Begin ("class=\"%s\"",The_ClassFormInBox[Gbl.Prefs.Theme]); fprintf (Gbl.F.Out,"%s: ",Txt_Integer_number); - fprintf (Gbl.F.Out,""); + snprintf (StrInteger,sizeof (StrInteger), + "%ld", + Gbl.Test.Answer.Integer); + HTM_INPUT_TEXT ("AnsInt",11,StrInteger, + "size=\"11\" required=\"required\"%s", + Gbl.Test.AnswerType == Tst_ANS_INT ? "" : + " disabled=\"disabled\""); HTM_LABEL_End (); HTM_TD_End (); @@ -5394,18 +5414,17 @@ static void Tst_PutFloatInputField (const char *Label,const char *Field, double Value) { extern const char *The_ClassFormInBox[The_NUM_THEMES]; + char StrFloat[32]; HTM_LABEL_Begin ("class=\"%s\"",The_ClassFormInBox[Gbl.Prefs.Theme]); fprintf (Gbl.F.Out,"%s ",Label); - fprintf (Gbl.F.Out,""); + snprintf (StrFloat,sizeof (StrFloat), + "%lg", + Value); + HTM_INPUT_TEXT (Field,Tst_MAX_BYTES_FLOAT_ANSWER,StrFloat, + "size=\"11\" required=\"required\"%s", + Gbl.Test.AnswerType == Tst_ANS_FLOAT ? "" : + " disabled=\"disabled\""); HTM_LABEL_End (); } diff --git a/swad_user.c b/swad_user.c index 9c56ee46..8add97da 100644 --- a/swad_user.c +++ b/swad_user.c @@ -2610,13 +2610,10 @@ void Usr_WriteFormLogin (Act_Action_t NextAction,void (*FuncParams) (void)) HTM_LABEL_Begin ("for=\"UsrId\""); Ico_PutIcon ("user.svg",Txt_User[Usr_SEX_UNKNOWN],"CONTEXT_ICO_16x16"); HTM_LABEL_End (); - fprintf (Gbl.F.Out,"", - Cns_MAX_CHARS_EMAIL_ADDRESS, - Txt_nick_email_or_ID, - Gbl.Usrs.Me.UsrIdLogin); + HTM_INPUT_TEXT ("UsrId",Cns_MAX_CHARS_EMAIL_ADDRESS,Gbl.Usrs.Me.UsrIdLogin, + " size=\"18\" placeholder=\"%s\"" + " autofocus=\"autofocus\" required=\"required\"", + Txt_nick_email_or_ID); HTM_DIV_End (); /***** User's password *****/