Version19.108.7

This commit is contained in:
Antonio Cañas Vargas 2019-12-30 21:47:07 +01:00
parent bb29e96ada
commit 8cfbaf1b45
41 changed files with 333 additions and 381 deletions

View File

@ -649,10 +649,10 @@ static void ID_ShowFormChangeUsrID (const struct UsrData *UsrDat,
HTM_SPAN_Begin ("class=\"%s\" title=\"%s\"", HTM_SPAN_Begin ("class=\"%s\" title=\"%s\"",
UsrDat->IDs.List[NumID].Confirmed ? "USR_ID_C" : UsrDat->IDs.List[NumID].Confirmed ? "USR_ID_C" :
"USR_ID_NC", "USR_ID_NC",
Str_BuildMsgStr (UsrDat->IDs.List[NumID].Confirmed ? Txt_ID_X_confirmed : Str_BuildStringStr (UsrDat->IDs.List[NumID].Confirmed ? Txt_ID_X_confirmed :
Txt_ID_X_not_confirmed, Txt_ID_X_not_confirmed,
UsrDat->IDs.List[NumID].ID)); UsrDat->IDs.List[NumID].ID));
Str_FreeMsg (); Str_FreeString ();
HTM_Txt (UsrDat->IDs.List[NumID].ID); HTM_Txt (UsrDat->IDs.List[NumID].ID);
HTM_Txt (UsrDat->IDs.List[NumID].Confirmed ? "✓" : HTM_Txt (UsrDat->IDs.List[NumID].Confirmed ? "✓" :
""); "");

View File

@ -420,10 +420,10 @@ void Acc_ShowFormGoToRequestNewAccount (void)
extern const char *Txt_Create_account; extern const char *Txt_Create_account;
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildMsgStr (Txt_New_on_PLATFORM_Sign_up, Box_BoxBegin (NULL,Str_BuildStringStr (Txt_New_on_PLATFORM_Sign_up,
Cfg_PLATFORM_SHORT_NAME),NULL, Cfg_PLATFORM_SHORT_NAME),NULL,
Hlp_PROFILE_SignUp,Box_NOT_CLOSABLE); Hlp_PROFILE_SignUp,Box_NOT_CLOSABLE);
Str_FreeMsg (); Str_FreeString ();
/***** Button to go to request the creation of a new account *****/ /***** Button to go to request the creation of a new account *****/
Frm_StartForm (ActFrmMyAcc); Frm_StartForm (ActFrmMyAcc);

View File

@ -357,12 +357,12 @@ void Agd_ShowUsrAgenda (void)
/***** Begin box *****/ /***** Begin box *****/
ItsMe = Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod); ItsMe = Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod);
Box_BoxBegin ("100%",Str_BuildMsgStr (Txt_Public_agenda_USER, Box_BoxBegin ("100%",Str_BuildStringStr (Txt_Public_agenda_USER,
Gbl.Usrs.Other.UsrDat.FullName), Gbl.Usrs.Other.UsrDat.FullName),
ItsMe ? Agd_PutIconsMyPublicAgenda : ItsMe ? Agd_PutIconsMyPublicAgenda :
Agd_PutIconsOtherPublicAgenda, Agd_PutIconsOtherPublicAgenda,
Hlp_PROFILE_Agenda_public_agenda,Box_NOT_CLOSABLE); Hlp_PROFILE_Agenda_public_agenda,Box_NOT_CLOSABLE);
Str_FreeMsg (); Str_FreeString ();
/***** Show the current events in the user's agenda *****/ /***** Show the current events in the user's agenda *****/
Agd_ShowEventsToday (Agd_ANOTHER_AGENDA_TODAY); Agd_ShowEventsToday (Agd_ANOTHER_AGENDA_TODAY);
@ -400,12 +400,12 @@ void Agd_ShowOtherAgendaAfterLogIn (void)
{ {
/***** Begin box *****/ /***** Begin box *****/
ItsMe = Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod); ItsMe = Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod);
Box_BoxBegin ("100%",Str_BuildMsgStr (Txt_Public_agenda_USER, Box_BoxBegin ("100%",Str_BuildStringStr (Txt_Public_agenda_USER,
Gbl.Usrs.Other.UsrDat.FullName), Gbl.Usrs.Other.UsrDat.FullName),
ItsMe ? Agd_PutIconToViewEditMyFullAgenda : ItsMe ? Agd_PutIconToViewEditMyFullAgenda :
Agd_PutIconsOtherPublicAgenda, Agd_PutIconsOtherPublicAgenda,
Hlp_PROFILE_Agenda_public_agenda,Box_NOT_CLOSABLE); Hlp_PROFILE_Agenda_public_agenda,Box_NOT_CLOSABLE);
Str_FreeMsg (); Str_FreeString ();
/***** Show the current events in the user's agenda *****/ /***** Show the current events in the user's agenda *****/
Agd_ShowEventsToday (Agd_ANOTHER_AGENDA_TODAY); Agd_ShowEventsToday (Agd_ANOTHER_AGENDA_TODAY);
@ -1900,10 +1900,10 @@ void Agd_PrintAgdQRCode (void)
extern const char *Txt_Where_s_USER; extern const char *Txt_Where_s_USER;
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildMsgStr (Txt_Where_s_USER, Box_BoxBegin (NULL,Str_BuildStringStr (Txt_Where_s_USER,
Gbl.Usrs.Me.UsrDat.FullName),NULL, Gbl.Usrs.Me.UsrDat.FullName),NULL,
NULL,Box_NOT_CLOSABLE); NULL,Box_NOT_CLOSABLE);
Str_FreeMsg (); Str_FreeString ();
/***** Print QR code ****/ /***** Print QR code ****/
QR_PrintQRCode (); QR_PrintQRCode ();

View File

@ -2208,7 +2208,6 @@ void Att_RegisterMeAsStdInAttEvent (void)
extern const char *Txt_Your_comment_has_been_updated; extern const char *Txt_Your_comment_has_been_updated;
struct AttendanceEvent Att; struct AttendanceEvent Att;
bool Present; bool Present;
char *CommentParamName;
char CommentStd[Cns_MAX_BYTES_TEXT + 1]; char CommentStd[Cns_MAX_BYTES_TEXT + 1];
char CommentTch[Cns_MAX_BYTES_TEXT + 1]; char CommentTch[Cns_MAX_BYTES_TEXT + 1];
@ -2222,11 +2221,10 @@ void Att_RegisterMeAsStdInAttEvent (void)
/***** Get comments for this student *****/ /***** Get comments for this student *****/
Present = Att_CheckIfUsrIsPresentInAttEventAndGetComments (Att.AttCod,Gbl.Usrs.Me.UsrDat.UsrCod, Present = Att_CheckIfUsrIsPresentInAttEventAndGetComments (Att.AttCod,Gbl.Usrs.Me.UsrDat.UsrCod,
CommentStd,CommentTch); CommentStd,CommentTch);
if (asprintf (&CommentParamName,"CommentStd%s", Par_GetParToHTML (Str_BuildStringStr ("CommentStd%s",
Gbl.Usrs.Me.UsrDat.EncryptedUsrCod) < 0) Gbl.Usrs.Me.UsrDat.EncryptedUsrCod),
Lay_NotEnoughMemoryExit (); CommentStd,Cns_MAX_BYTES_TEXT);
Par_GetParToHTML (CommentParamName,CommentStd,Cns_MAX_BYTES_TEXT); Str_FreeString ();
free (CommentParamName);
if (Present || if (Present ||
CommentStd[0] || CommentStd[0] ||
@ -2271,7 +2269,6 @@ void Att_RegisterStudentsInAttEvent (void)
unsigned NumStdsPresent; unsigned NumStdsPresent;
unsigned NumStdsAbsent; unsigned NumStdsAbsent;
struct UsrData UsrData; struct UsrData UsrData;
char *CommentParamName;
char CommentStd[Cns_MAX_BYTES_TEXT + 1]; char CommentStd[Cns_MAX_BYTES_TEXT + 1];
char CommentTch[Cns_MAX_BYTES_TEXT + 1]; char CommentTch[Cns_MAX_BYTES_TEXT + 1];
@ -2337,11 +2334,10 @@ void Att_RegisterStudentsInAttEvent (void)
{ {
/***** Get comments for this student *****/ /***** Get comments for this student *****/
Att_CheckIfUsrIsPresentInAttEventAndGetComments (Att.AttCod,Gbl.Usrs.LstUsrs[Rol_STD].Lst[NumUsr].UsrCod,CommentStd,CommentTch); Att_CheckIfUsrIsPresentInAttEventAndGetComments (Att.AttCod,Gbl.Usrs.LstUsrs[Rol_STD].Lst[NumUsr].UsrCod,CommentStd,CommentTch);
if (asprintf (&CommentParamName,"CommentTch%s", Par_GetParToHTML (Str_BuildStringStr ("CommentTch%s",
Gbl.Usrs.LstUsrs[Rol_STD].Lst[NumUsr].EncryptedUsrCod) < 0) Gbl.Usrs.LstUsrs[Rol_STD].Lst[NumUsr].EncryptedUsrCod),
Lay_NotEnoughMemoryExit (); CommentTch,Cns_MAX_BYTES_TEXT);
Par_GetParToHTML (CommentParamName,CommentTch,Cns_MAX_BYTES_TEXT); Str_FreeString ();
free (CommentParamName);
Present = !Gbl.Usrs.LstUsrs[Rol_STD].Lst[NumUsr].Remove; Present = !Gbl.Usrs.LstUsrs[Rol_STD].Lst[NumUsr].Remove;

View File

@ -128,9 +128,9 @@ void Cal_ShowFormToSelFirstDayOfWeek (Act_Action_t Action,void (*FuncParams) (vo
"first-day-of-week-%u.png", "first-day-of-week-%u.png",
FirstDayOfWeek); FirstDayOfWeek);
Ico_PutSettingIconLink (Icon, Ico_PutSettingIconLink (Icon,
Str_BuildMsgStr (Txt_First_day_of_the_week_X, Str_BuildStringStr (Txt_First_day_of_the_week_X,
Txt_DAYS_SMALL[FirstDayOfWeek])); Txt_DAYS_SMALL[FirstDayOfWeek]));
Str_FreeMsg (); Str_FreeString ();
Frm_EndForm (); Frm_EndForm ();
HTM_DIV_End (); HTM_DIV_End ();
} }

View File

@ -264,11 +264,11 @@ static void Ctr_ListCentres (void)
unsigned NumCtr; unsigned NumCtr;
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildMsgStr (Txt_Centres_of_INSTITUTION_X, Box_BoxBegin (NULL,Str_BuildStringStr (Txt_Centres_of_INSTITUTION_X,
Gbl.Hierarchy.Ins.FullName), Gbl.Hierarchy.Ins.FullName),
Ctr_PutIconsListingCentres, Ctr_PutIconsListingCentres,
Hlp_INSTITUTION_Centres,Box_NOT_CLOSABLE); Hlp_INSTITUTION_Centres,Box_NOT_CLOSABLE);
Str_FreeMsg (); Str_FreeString ();
if (Gbl.Hierarchy.Ins.Ctrs.Num) // There are centres in the current institution if (Gbl.Hierarchy.Ins.Ctrs.Num) // There are centres in the current institution
{ {
@ -476,11 +476,11 @@ static void Ctr_EditCentresInternal (void)
Hie_WriteMenuHierarchy (); Hie_WriteMenuHierarchy ();
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildMsgStr (Txt_Centres_of_INSTITUTION_X, Box_BoxBegin (NULL,Str_BuildStringStr (Txt_Centres_of_INSTITUTION_X,
Gbl.Hierarchy.Ins.FullName), Gbl.Hierarchy.Ins.FullName),
Ctr_PutIconsEditingCentres, Ctr_PutIconsEditingCentres,
Hlp_INSTITUTION_Centres,Box_NOT_CLOSABLE); Hlp_INSTITUTION_Centres,Box_NOT_CLOSABLE);
Str_FreeMsg (); Str_FreeString ();
/***** Put a form to create a new centre *****/ /***** Put a form to create a new centre *****/
Ctr_PutFormToCreateCentre (); Ctr_PutFormToCreateCentre ();
@ -2003,11 +2003,11 @@ void Ctr_ListCtrsFound (MYSQL_RES **mysql_res,unsigned NumCtrs)
{ {
/***** Begin box and table *****/ /***** Begin box and table *****/
/* Number of centres found */ /* Number of centres found */
Box_BoxTableBegin (NULL,Str_BuildMsgLongStr ((long) NumCtrs, Box_BoxTableBegin (NULL,Str_BuildStringLongStr ((long) NumCtrs,
(NumCtrs == 1) ? Txt_centre : (NumCtrs == 1) ? Txt_centre :
Txt_centres), Txt_centres),
NULL,NULL,Box_NOT_CLOSABLE,2); NULL,NULL,Box_NOT_CLOSABLE,2);
Str_FreeMsg (); Str_FreeString ();
/***** Write heading *****/ /***** Write heading *****/
Ctr_PutHeadCentresForSeeing (false); // Order not selectable Ctr_PutHeadCentresForSeeing (false); // Order not selectable

View File

@ -797,10 +797,10 @@ static void CtrCfg_NumDegs (void)
HTM_TD_Begin ("class=\"LB\""); HTM_TD_Begin ("class=\"LB\"");
Frm_StartFormGoTo (ActSeeDeg); Frm_StartFormGoTo (ActSeeDeg);
Ctr_PutParamCtrCod (Gbl.Hierarchy.Ctr.CtrCod); Ctr_PutParamCtrCod (Gbl.Hierarchy.Ctr.CtrCod);
HTM_BUTTON_SUBMIT_Begin (Str_BuildMsgStr (Txt_Degrees_of_CENTRE_X, HTM_BUTTON_SUBMIT_Begin (Str_BuildStringStr (Txt_Degrees_of_CENTRE_X,
Gbl.Hierarchy.Ctr.ShrtName), Gbl.Hierarchy.Ctr.ShrtName),
"BT_LINK DAT",NULL); "BT_LINK DAT",NULL);
Str_FreeMsg (); Str_FreeString ();
HTM_Unsigned (Deg_GetNumDegsInCtr (Gbl.Hierarchy.Ctr.CtrCod)); HTM_Unsigned (Deg_GetNumDegsInCtr (Gbl.Hierarchy.Ctr.CtrCod));
HTM_BUTTON_End (); HTM_BUTTON_End ();
Frm_EndForm (); Frm_EndForm ();

View File

@ -492,7 +492,7 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
En OpenSWAD: En OpenSWAD:
ps2pdf source.ps destination.pdf ps2pdf source.ps destination.pdf
*/ */
#define Log_PLATFORM_VERSION "SWAD 19.108.6 (2019-12-30)" #define Log_PLATFORM_VERSION "SWAD 19.108.7 (2019-12-30)"
#define CSS_FILE "swad19.101.5.css" #define CSS_FILE "swad19.101.5.css"
#define JS_FILE "swad19.91.1.js" #define JS_FILE "swad19.91.1.js"
/* /*
@ -502,6 +502,7 @@ ps2pdf source.ps destination.pdf
Version 19.10x: Dec 30, 2019 Map in country information. (? lines) Version 19.10x: Dec 30, 2019 Map in country information. (? lines)
Version 19.10x: Dec 30, 2019 Map in institution information. (? lines) Version 19.10x: Dec 30, 2019 Map in institution information. (? lines)
Version 19.108.7: Dec 30, 2019 Code refactoring related to printing messages. (249674 lines)
Version 19.108.6: Dec 30, 2019 Code refactoring related to printing messages. (249717 lines) Version 19.108.6: Dec 30, 2019 Code refactoring related to printing messages. (249717 lines)
Version 19.108.5: Dec 30, 2019 Code refactoring related to printing messages. (249712 lines) Version 19.108.5: Dec 30, 2019 Code refactoring related to printing messages. (249712 lines)
Version 19.108.4: Dec 30, 2019 Code refactoring related to printing messages. (249709 lines) Version 19.108.4: Dec 30, 2019 Code refactoring related to printing messages. (249709 lines)

View File

@ -537,7 +537,6 @@ void Cty_DrawCountryMapAndNameWithLink (struct Country *Cty,Act_Action_t Action,
void Cty_DrawCountryMap (struct Country *Cty,const char *Class) void Cty_DrawCountryMap (struct Country *Cty,const char *Class)
{ {
char *URL; char *URL;
char *Icon;
/***** Draw country map *****/ /***** Draw country map *****/
if (Cty_CheckIfCountryMapExists (Cty)) if (Cty_CheckIfCountryMapExists (Cty))
@ -546,12 +545,10 @@ void Cty_DrawCountryMap (struct Country *Cty,const char *Class)
Cfg_URL_ICON_COUNTRIES_PUBLIC, Cfg_URL_ICON_COUNTRIES_PUBLIC,
Cty->Alpha2) < 0) Cty->Alpha2) < 0)
Lay_NotEnoughMemoryExit (); Lay_NotEnoughMemoryExit ();
if (asprintf (&Icon,"%s.png", HTM_IMG (URL,Str_BuildStringStr ("%s.png",Cty->Alpha2),
Cty->Alpha2) < 0) Cty->Name[Gbl.Prefs.Language],
Lay_NotEnoughMemoryExit ();
HTM_IMG (URL,Icon,Cty->Name[Gbl.Prefs.Language],
"class=\"%s\"",Class); "class=\"%s\"",Class);
free (Icon); Str_FreeString ();
free (URL); free (URL);
} }
else else
@ -2044,11 +2041,11 @@ void Cty_ListCtysFound (MYSQL_RES **mysql_res,unsigned NumCtys)
{ {
/***** Begin box and table *****/ /***** Begin box and table *****/
/* Number of countries found */ /* Number of countries found */
Box_BoxTableBegin (NULL,Str_BuildMsgLongStr ((long) NumCtys, Box_BoxTableBegin (NULL,Str_BuildStringLongStr ((long) NumCtys,
NumCtys == 1 ? Txt_country : NumCtys == 1 ? Txt_country :
Txt_countries), Txt_countries),
NULL,NULL,Box_NOT_CLOSABLE,2); NULL,NULL,Box_NOT_CLOSABLE,2);
Str_FreeMsg (); Str_FreeString ();
/***** Write heading *****/ /***** Write heading *****/
Cty_PutHeadCountriesForSeeing (false); // Order not selectable Cty_PutHeadCountriesForSeeing (false); // Order not selectable

View File

@ -343,10 +343,10 @@ static void CtyCfg_NumInss (void)
HTM_TD_Begin ("class=\"LB\""); HTM_TD_Begin ("class=\"LB\"");
Frm_StartFormGoTo (ActSeeIns); Frm_StartFormGoTo (ActSeeIns);
Cty_PutParamCtyCod (Gbl.Hierarchy.Cty.CtyCod); Cty_PutParamCtyCod (Gbl.Hierarchy.Cty.CtyCod);
HTM_BUTTON_SUBMIT_Begin (Str_BuildMsgStr (Txt_Institutions_of_COUNTRY_X, HTM_BUTTON_SUBMIT_Begin (Str_BuildStringStr (Txt_Institutions_of_COUNTRY_X,
Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]), Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]),
"BT_LINK DAT",NULL); "BT_LINK DAT",NULL);
Str_FreeMsg (); Str_FreeString ();
HTM_Unsigned (Ins_GetNumInssInCty (Gbl.Hierarchy.Cty.CtyCod)); HTM_Unsigned (Ins_GetNumInssInCty (Gbl.Hierarchy.Cty.CtyCod));
HTM_BUTTON_End (); HTM_BUTTON_End ();
Frm_EndForm (); Frm_EndForm ();

View File

@ -743,11 +743,11 @@ static void Crs_ListCourses (void)
unsigned Year; unsigned Year;
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildMsgStr (Txt_Courses_of_DEGREE_X, Box_BoxBegin (NULL,Str_BuildStringStr (Txt_Courses_of_DEGREE_X,
Gbl.Hierarchy.Deg.ShrtName), Gbl.Hierarchy.Deg.ShrtName),
Crs_PutIconsListCourses, Crs_PutIconsListCourses,
Hlp_DEGREE_Courses,Box_NOT_CLOSABLE); Hlp_DEGREE_Courses,Box_NOT_CLOSABLE);
Str_FreeMsg (); Str_FreeString ();
if (Gbl.Hierarchy.Deg.Crss.Num) // There are courses in the current degree if (Gbl.Hierarchy.Deg.Crss.Num) // There are courses in the current degree
{ {
@ -947,11 +947,11 @@ static void Crs_EditCoursesInternal (void)
Hie_WriteMenuHierarchy (); Hie_WriteMenuHierarchy ();
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildMsgStr (Txt_Courses_of_DEGREE_X, Box_BoxBegin (NULL,Str_BuildStringStr (Txt_Courses_of_DEGREE_X,
Gbl.Hierarchy.Deg.ShrtName), Gbl.Hierarchy.Deg.ShrtName),
Crs_PutIconsEditingCourses, Crs_PutIconsEditingCourses,
Hlp_DEGREE_Courses,Box_NOT_CLOSABLE); Hlp_DEGREE_Courses,Box_NOT_CLOSABLE);
Str_FreeMsg (); Str_FreeString ();
/***** Put a form to create or request a new course *****/ /***** Put a form to create or request a new course *****/
Crs_PutFormToCreateCourse (); Crs_PutFormToCreateCourse ();
@ -2269,9 +2269,9 @@ static void Crs_PutButtonToRegisterInCrs (void)
// If the course being edited is different to the current one... // If the course being edited is different to the current one...
if (Crs_EditingCrs->CrsCod != Gbl.Hierarchy.Crs.CrsCod) if (Crs_EditingCrs->CrsCod != Gbl.Hierarchy.Crs.CrsCod)
Crs_PutParamCrsCod (Crs_EditingCrs->CrsCod); Crs_PutParamCrsCod (Crs_EditingCrs->CrsCod);
Btn_PutCreateButton (Str_BuildMsgStr (Txt_Register_me_in_X, Btn_PutCreateButton (Str_BuildStringStr (Txt_Register_me_in_X,
Crs_EditingCrs->ShrtName)); Crs_EditingCrs->ShrtName));
Str_FreeMsg (); Str_FreeString ();
Frm_EndForm (); Frm_EndForm ();
} }
@ -2445,10 +2445,10 @@ void Crs_GetAndWriteCrssOfAUsr (const struct UsrData *UsrDat,Rol_Role_t Role)
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TH_Begin (1,7,"LM"); HTM_TH_Begin (1,7,"LM");
HTM_TxtF ("%s:",Str_BuildMsgStr (Txt_USER_in_COURSE, HTM_TxtF ("%s:",Str_BuildStringStr (Txt_USER_in_COURSE,
Role == Rol_UNK ? Txt_User[Usr_SEX_UNKNOWN] : // Role == Rol_UNK ==> any role Role == Rol_UNK ? Txt_User[Usr_SEX_UNKNOWN] : // Role == Rol_UNK ==> any role
Txt_ROLES_SINGUL_Abc[Role][UsrDat->Sex])); Txt_ROLES_SINGUL_Abc[Role][UsrDat->Sex]));
Str_FreeMsg (); Str_FreeString ();
HTM_TH_End (); HTM_TH_End ();
HTM_TR_End (); HTM_TR_End ();
@ -2505,11 +2505,11 @@ void Crs_ListCrssFound (MYSQL_RES **mysql_res,unsigned NumCrss)
{ {
/***** Begin box and table *****/ /***** Begin box and table *****/
/* Number of courses found */ /* Number of courses found */
Box_BoxTableBegin (NULL,Str_BuildMsgLongStr ((long) NumCrss, Box_BoxTableBegin (NULL,Str_BuildStringLongStr ((long) NumCrss,
(NumCrss == 1) ? Txt_course : (NumCrss == 1) ? Txt_course :
Txt_courses), Txt_courses),
NULL,NULL,Box_NOT_CLOSABLE,2); NULL,NULL,Box_NOT_CLOSABLE,2);
Str_FreeMsg (); Str_FreeString ();
/***** Heading row *****/ /***** Heading row *****/
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);

View File

@ -165,14 +165,12 @@ void Dat_PutSpanDateFormat (Dat_Format_t Format)
void Dat_PutScriptDateFormat (Dat_Format_t Format) void Dat_PutScriptDateFormat (Dat_Format_t Format)
{ {
char *Id; Dat_WriteLocalDateHMSFromUTC (Str_BuildStringLong ("date_format_%ld",
(long) Format),
if (asprintf (&Id,"date_format_%u",(unsigned) Format) < 0) Gbl.StartExecutionTimeUTC,
Lay_NotEnoughMemoryExit ();
Dat_WriteLocalDateHMSFromUTC (Id,Gbl.StartExecutionTimeUTC,
Format,Dat_SEPARATOR_NONE, Format,Dat_SEPARATOR_NONE,
false,true,false,0x0); false,true,false,0x0);
free (Id); Str_FreeString ();
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -763,11 +763,11 @@ static void Deg_ListDegrees (void)
unsigned NumDeg; unsigned NumDeg;
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildMsgStr (Txt_Degrees_of_CENTRE_X, Box_BoxBegin (NULL,Str_BuildStringStr (Txt_Degrees_of_CENTRE_X,
Gbl.Hierarchy.Ctr.ShrtName), Gbl.Hierarchy.Ctr.ShrtName),
Deg_PutIconsListingDegrees, Deg_PutIconsListingDegrees,
Hlp_CENTRE_Degrees,Box_NOT_CLOSABLE); Hlp_CENTRE_Degrees,Box_NOT_CLOSABLE);
Str_FreeMsg (); Str_FreeString ();
if (Gbl.Hierarchy.Ctr.Degs.Num) // There are degrees in the current centre if (Gbl.Hierarchy.Ctr.Degs.Num) // There are degrees in the current centre
{ {
@ -945,11 +945,11 @@ static void Deg_EditDegreesInternal (void)
Hie_WriteMenuHierarchy (); Hie_WriteMenuHierarchy ();
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildMsgStr (Txt_Degrees_of_CENTRE_X, Box_BoxBegin (NULL,Str_BuildStringStr (Txt_Degrees_of_CENTRE_X,
Gbl.Hierarchy.Ctr.ShrtName), Gbl.Hierarchy.Ctr.ShrtName),
Deg_PutIconsEditingDegrees, Deg_PutIconsEditingDegrees,
Hlp_CENTRE_Degrees,Box_NOT_CLOSABLE); Hlp_CENTRE_Degrees,Box_NOT_CLOSABLE);
Str_FreeMsg (); Str_FreeString ();
if (Gbl.DegTypes.Num) if (Gbl.DegTypes.Num)
{ {
@ -1957,11 +1957,11 @@ void Deg_ListDegsFound (MYSQL_RES **mysql_res,unsigned NumDegs)
{ {
/***** Begin box and table *****/ /***** Begin box and table *****/
/* Number of degrees found */ /* Number of degrees found */
Box_BoxTableBegin (NULL,Str_BuildMsgLongStr ((long) NumDegs, Box_BoxTableBegin (NULL,Str_BuildStringLongStr ((long) NumDegs,
(NumDegs == 1) ? Txt_degree : (NumDegs == 1) ? Txt_degree :
Txt_degrees), Txt_degrees),
NULL,NULL,Box_NOT_CLOSABLE,2); NULL,NULL,Box_NOT_CLOSABLE,2);
Str_FreeMsg (); Str_FreeString ();
/***** Write heading *****/ /***** Write heading *****/
Deg_PutHeadDegreesForSeeing (); Deg_PutHeadDegreesForSeeing ();

View File

@ -334,10 +334,10 @@ static void DegCfg_NumCrss (void)
HTM_TD_Begin ("class=\"LB\""); HTM_TD_Begin ("class=\"LB\"");
Frm_StartFormGoTo (ActSeeCrs); Frm_StartFormGoTo (ActSeeCrs);
Deg_PutParamDegCod (Gbl.Hierarchy.Deg.DegCod); Deg_PutParamDegCod (Gbl.Hierarchy.Deg.DegCod);
HTM_BUTTON_SUBMIT_Begin (Str_BuildMsgStr (Txt_Courses_of_DEGREE_X, HTM_BUTTON_SUBMIT_Begin (Str_BuildStringStr (Txt_Courses_of_DEGREE_X,
Gbl.Hierarchy.Deg.ShrtName), Gbl.Hierarchy.Deg.ShrtName),
"BT_LINK DAT",NULL); "BT_LINK DAT",NULL);
Str_FreeMsg (); Str_FreeString ();
HTM_Unsigned (Crs_GetNumCrssInDeg (Gbl.Hierarchy.Deg.DegCod)); HTM_Unsigned (Crs_GetNumCrssInDeg (Gbl.Hierarchy.Deg.DegCod));
HTM_BUTTON_End (); HTM_BUTTON_End ();
Frm_EndForm (); Frm_EndForm ();

View File

@ -111,12 +111,12 @@ void Dpt_SeeDepts (void)
Dpt_GetListDepartments (Gbl.Hierarchy.Ins.InsCod); Dpt_GetListDepartments (Gbl.Hierarchy.Ins.InsCod);
/***** Begin box and table *****/ /***** Begin box and table *****/
Box_BoxTableBegin (NULL,Str_BuildMsgStr (Txt_Departments_of_INSTITUTION_X, Box_BoxTableBegin (NULL,Str_BuildStringStr (Txt_Departments_of_INSTITUTION_X,
Gbl.Hierarchy.Ins.FullName), Gbl.Hierarchy.Ins.FullName),
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM ? Dpt_PutIconToEditDpts : Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM ? Dpt_PutIconToEditDpts :
NULL, NULL,
Hlp_INSTITUTION_Departments,Box_NOT_CLOSABLE,2); Hlp_INSTITUTION_Departments,Box_NOT_CLOSABLE,2);
Str_FreeMsg (); Str_FreeString ();
/***** Write heading *****/ /***** Write heading *****/
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
@ -266,10 +266,10 @@ static void Dpt_EditDepartmentsInternal (void)
Dpt_GetListDepartments (Gbl.Hierarchy.Ins.InsCod); Dpt_GetListDepartments (Gbl.Hierarchy.Ins.InsCod);
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildMsgStr (Txt_Departments_of_INSTITUTION_X, Box_BoxBegin (NULL,Str_BuildStringStr (Txt_Departments_of_INSTITUTION_X,
Gbl.Hierarchy.Ins.FullName),NULL, Gbl.Hierarchy.Ins.FullName),NULL,
Hlp_INSTITUTION_Departments_edit,Box_NOT_CLOSABLE); Hlp_INSTITUTION_Departments_edit,Box_NOT_CLOSABLE);
Str_FreeMsg (); Str_FreeString ();
/***** Put a form to create a new department *****/ /***** Put a form to create a new department *****/
Dpt_PutFormToCreateDepartment (); Dpt_PutFormToCreateDepartment ();

View File

@ -4974,10 +4974,10 @@ static void Fig_GetAndShowNumUsrsPerFirstDayOfWeek (void)
FirstDayOfWeek) < 0) FirstDayOfWeek) < 0)
Lay_NotEnoughMemoryExit (); Lay_NotEnoughMemoryExit ();
Ico_PutIcon (Icon, Ico_PutIcon (Icon,
Str_BuildMsgStr (Txt_First_day_of_the_week_X, Str_BuildStringStr (Txt_First_day_of_the_week_X,
Txt_DAYS_SMALL[FirstDayOfWeek]), Txt_DAYS_SMALL[FirstDayOfWeek]),
"ICO40x40"); "ICO40x40");
Str_FreeMsg (); Str_FreeString ();
free (Icon); free (Icon);
HTM_TD_End (); HTM_TD_End ();

View File

@ -11807,11 +11807,11 @@ void Brw_ListDocsFound (MYSQL_RES **mysql_res,unsigned long NumDocs,
{ {
/***** Begin box and table *****/ /***** Begin box and table *****/
/* Number of documents found */ /* Number of documents found */
Box_BoxTableBegin (NULL,Str_BuildMsgLongStr ((long) NumDocs, Box_BoxTableBegin (NULL,Str_BuildStringLongStr ((long) NumDocs,
(NumDocs == 1) ? TitleSingular : (NumDocs == 1) ? TitleSingular :
TitlePlural), TitlePlural),
NULL,NULL,Box_NOT_CLOSABLE,2); NULL,NULL,Box_NOT_CLOSABLE,2);
Str_FreeMsg (); Str_FreeString ();
/***** Write heading *****/ /***** Write heading *****/
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);

View File

@ -1236,21 +1236,21 @@ static void For_ShowAForumPost (unsigned PstNum,long PstCod,
PstCod); PstCod);
Ico_PutIconLink (Enabled ? "eye.svg" : Ico_PutIconLink (Enabled ? "eye.svg" :
"eye-slash.svg", "eye-slash.svg",
Str_BuildMsgLong (Enabled ? Txt_FORUM_Post_X_allowed_Click_to_ban_it : Str_BuildStringLong (Enabled ? Txt_FORUM_Post_X_allowed_Click_to_ban_it :
Txt_FORUM_Post_X_banned_Click_to_unban_it, Txt_FORUM_Post_X_banned_Click_to_unban_it,
(long) PstNum)); (long) PstNum));
Str_FreeMsg (); Str_FreeString ();
Frm_EndForm (); Frm_EndForm ();
} }
else else
{ {
Ico_PutIcon (Enabled ? "eye.svg" : Ico_PutIcon (Enabled ? "eye.svg" :
"eye-slash.svg", "eye-slash.svg",
Str_BuildMsgLong (Enabled ? Txt_FORUM_Post_X_allowed : Str_BuildStringLong (Enabled ? Txt_FORUM_Post_X_allowed :
Txt_FORUM_Post_X_banned, Txt_FORUM_Post_X_banned,
(long) PstNum), (long) PstNum),
"ICO_HIDDEN ICO16x16"); "ICO_HIDDEN ICO16x16");
Str_FreeMsg (); Str_FreeString ();
} }
/***** Form to remove post *****/ /***** Form to remove post *****/

View File

@ -1871,9 +1871,9 @@ static void Gam_ListOneOrMoreQuestionsForEdition (long GamCod,unsigned NumQsts,
{ {
Lay_PutContextualLinkOnlyIcon (ActUp_GamQst,NULL,Gam_PutParamsOneQst, Lay_PutContextualLinkOnlyIcon (ActUp_GamQst,NULL,Gam_PutParamsOneQst,
"arrow-up.svg", "arrow-up.svg",
Str_BuildMsgStr (Txt_Move_up_X, Str_BuildStringStr (Txt_Move_up_X,
StrQstInd)); StrQstInd));
Str_FreeMsg (); Str_FreeString ();
} }
else else
Ico_PutIconOff ("arrow-up.svg",Txt_Movement_not_allowed); Ico_PutIconOff ("arrow-up.svg",Txt_Movement_not_allowed);
@ -1883,9 +1883,9 @@ static void Gam_ListOneOrMoreQuestionsForEdition (long GamCod,unsigned NumQsts,
{ {
Lay_PutContextualLinkOnlyIcon (ActDwnGamQst,NULL,Gam_PutParamsOneQst, Lay_PutContextualLinkOnlyIcon (ActDwnGamQst,NULL,Gam_PutParamsOneQst,
"arrow-down.svg", "arrow-down.svg",
Str_BuildMsgStr (Txt_Move_down_X, Str_BuildStringStr (Txt_Move_down_X,
StrQstInd)); StrQstInd));
Str_FreeMsg (); Str_FreeString ();
} }
else else
Ico_PutIconOff ("arrow-down.svg",Txt_Movement_not_allowed); Ico_PutIconOff ("arrow-down.svg",Txt_Movement_not_allowed);

View File

@ -1509,10 +1509,10 @@ static void Grp_ListGroupsForEdition (void)
Grp_PutParamGrpCod (Grp->GrpCod); Grp_PutParamGrpCod (Grp->GrpCod);
Ico_PutIconLink (Grp->Open ? "unlock.svg" : Ico_PutIconLink (Grp->Open ? "unlock.svg" :
"lock.svg", "lock.svg",
Str_BuildMsgStr (Grp->Open ? Txt_Group_X_open_click_to_close_it : Str_BuildStringStr (Grp->Open ? Txt_Group_X_open_click_to_close_it :
Txt_Group_X_closed_click_to_open_it, Txt_Group_X_closed_click_to_open_it,
Grp->GrpName)); Grp->GrpName));
Str_FreeMsg (); Str_FreeString ();
Frm_EndForm (); Frm_EndForm ();
HTM_TD_End (); HTM_TD_End ();
@ -1524,10 +1524,10 @@ static void Grp_ListGroupsForEdition (void)
Grp_PutParamGrpCod (Grp->GrpCod); Grp_PutParamGrpCod (Grp->GrpCod);
Ico_PutIconLink (Grp->FileZones ? "folder-open-green.svg" : Ico_PutIconLink (Grp->FileZones ? "folder-open-green.svg" :
"folder-red.svg", "folder-red.svg",
Str_BuildMsgStr (Grp->FileZones ? Txt_File_zones_of_the_group_X_enabled_click_to_disable_them : Str_BuildStringStr (Grp->FileZones ? Txt_File_zones_of_the_group_X_enabled_click_to_disable_them :
Txt_File_zones_of_the_group_X_disabled_click_to_enable_them, Txt_File_zones_of_the_group_X_disabled_click_to_enable_them,
Grp->GrpName)); Grp->GrpName));
Str_FreeMsg (); Str_FreeString ();
Frm_EndForm (); Frm_EndForm ();
HTM_TD_End (); HTM_TD_End ();
@ -2381,10 +2381,10 @@ static void Grp_WriteRowGrp (struct Group *Grp,bool Highlight)
HTM_TD_Begin ("class=\"BM\""); HTM_TD_Begin ("class=\"BM\"");
Ico_PutIconOff (Grp->Open ? "unlock.svg" : Ico_PutIconOff (Grp->Open ? "unlock.svg" :
"lock.svg", "lock.svg",
Str_BuildMsgStr (Grp->Open ? Txt_Group_X_open : Str_BuildStringStr (Grp->Open ? Txt_Group_X_open :
Txt_Group_X_closed, Txt_Group_X_closed,
Grp->GrpName)); Grp->GrpName));
Str_FreeMsg (); Str_FreeString ();
HTM_TD_End (); HTM_TD_End ();
/***** Group name *****/ /***** Group name *****/

View File

@ -141,21 +141,21 @@ void Hlp_ShowHelpWhatWouldYouLikeToDo (void)
if (ActionsRemoveMe[Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrs.Role] != ActUnk) if (ActionsRemoveMe[Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrs.Role] != ActUnk)
{ {
/* Request my removing from this course */ /* Request my removing from this course */
Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildMsgStr (Txt_Remove_me_from_THE_COURSE_X, Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildStringStr (Txt_Remove_me_from_THE_COURSE_X,
Gbl.Hierarchy.Crs.ShrtName), Gbl.Hierarchy.Crs.ShrtName),
ActionsRemoveMe[Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrs.Role], ActionsRemoveMe[Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrs.Role],
Btn_REMOVE_BUTTON,Txt_Remove_me); Btn_REMOVE_BUTTON,Txt_Remove_me);
Str_FreeMsg (); Str_FreeString ();
} }
} }
else // I do not belong to this course else // I do not belong to this course
{ {
/* Request my registration in this course */ /* Request my registration in this course */
Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildMsgStr (Txt_Register_me_in_X, Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildStringStr (Txt_Register_me_in_X,
Gbl.Hierarchy.Crs.ShrtName), Gbl.Hierarchy.Crs.ShrtName),
ActReqSignUp, ActReqSignUp,
Btn_CREATE_BUTTON,Txt_Sign_up); Btn_CREATE_BUTTON,Txt_Sign_up);
Str_FreeMsg (); Str_FreeString ();
} }
} }
@ -166,11 +166,11 @@ void Hlp_ShowHelpWhatWouldYouLikeToDo (void)
Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrs.Role == Rol_TCH) // I am a teacher in current course Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrs.Role == Rol_TCH) // I am a teacher in current course
{ {
/* Request students enrolment */ /* Request students enrolment */
Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildMsgStr (Txt_Register_students_in_COURSE_X, Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildStringStr (Txt_Register_students_in_COURSE_X,
Gbl.Hierarchy.Crs.ShrtName), Gbl.Hierarchy.Crs.ShrtName),
ActReqEnrSevStd, ActReqEnrSevStd,
Btn_CREATE_BUTTON,Txt_Register_students); Btn_CREATE_BUTTON,Txt_Register_students);
Str_FreeMsg (); Str_FreeString ();
} }
if (Gbl.Action.Act != ActMyCrs) // I am not seeing the action to list my courses if (Gbl.Action.Act != ActMyCrs) // I am not seeing the action to list my courses
@ -183,42 +183,42 @@ void Hlp_ShowHelpWhatWouldYouLikeToDo (void)
if (Gbl.Hierarchy.Deg.DegCod > 0) // Degree selected if (Gbl.Hierarchy.Deg.DegCod > 0) // Degree selected
{ {
/* Select a course */ /* Select a course */
Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildMsgStr (Gbl.Hierarchy.Level == Hie_CRS ? Txt_Select_create_course_in_X : Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildStringStr (Gbl.Hierarchy.Level == Hie_CRS ? Txt_Select_create_course_in_X :
Txt_Select_or_create_one_course_in_X, Txt_Select_or_create_one_course_in_X,
Gbl.Hierarchy.Deg.ShrtName), Gbl.Hierarchy.Deg.ShrtName),
ActSeeCrs, ActSeeCrs,
Btn_CONFIRM_BUTTON,Txt_Courses); Btn_CONFIRM_BUTTON,Txt_Courses);
Str_FreeMsg (); Str_FreeString ();
} }
else if (Gbl.Hierarchy.Ctr.CtrCod > 0) // Centre selected else if (Gbl.Hierarchy.Ctr.CtrCod > 0) // Centre selected
{ {
/* Select a degree */ /* Select a degree */
Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildMsgStr (Gbl.Hierarchy.Deg.DegCod > 0 ? Txt_Select_or_create_another_degree_in_X : Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildStringStr (Gbl.Hierarchy.Deg.DegCod > 0 ? Txt_Select_or_create_another_degree_in_X :
Txt_Select_or_create_one_degree_in_X, Txt_Select_or_create_one_degree_in_X,
Gbl.Hierarchy.Ctr.ShrtName), Gbl.Hierarchy.Ctr.ShrtName),
ActSeeDeg, ActSeeDeg,
Btn_CONFIRM_BUTTON,Txt_Degrees); Btn_CONFIRM_BUTTON,Txt_Degrees);
Str_FreeMsg (); Str_FreeString ();
} }
else if (Gbl.Hierarchy.Ins.InsCod > 0) // Institution selected else if (Gbl.Hierarchy.Ins.InsCod > 0) // Institution selected
{ {
/* Select a centre */ /* Select a centre */
Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildMsgStr (Gbl.Hierarchy.Ctr.CtrCod > 0 ? Txt_Select_or_create_another_centre_in_X : Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildStringStr (Gbl.Hierarchy.Ctr.CtrCod > 0 ? Txt_Select_or_create_another_centre_in_X :
Txt_Select_or_create_one_centre_in_X, Txt_Select_or_create_one_centre_in_X,
Gbl.Hierarchy.Ins.ShrtName), Gbl.Hierarchy.Ins.ShrtName),
ActSeeCtr, ActSeeCtr,
Btn_CONFIRM_BUTTON,Txt_Centres); Btn_CONFIRM_BUTTON,Txt_Centres);
Str_FreeMsg (); Str_FreeString ();
} }
else if (Gbl.Hierarchy.Cty.CtyCod > 0) // Country selected else if (Gbl.Hierarchy.Cty.CtyCod > 0) // Country selected
{ {
/* Select an institution */ /* Select an institution */
Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildMsgStr (Gbl.Hierarchy.Ins.InsCod > 0 ? Txt_Select_or_create_another_institution_in_X : Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildStringStr (Gbl.Hierarchy.Ins.InsCod > 0 ? Txt_Select_or_create_another_institution_in_X :
Txt_Select_or_create_one_institution_in_X, Txt_Select_or_create_one_institution_in_X,
Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]), Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]),
ActSeeIns, ActSeeIns,
Btn_CONFIRM_BUTTON,Txt_Institutions); Btn_CONFIRM_BUTTON,Txt_Institutions);
Str_FreeMsg (); Str_FreeString ();
} }
else else
/* Select a country */ /* Select a country */
@ -240,11 +240,11 @@ void Hlp_ShowHelpWhatWouldYouLikeToDo (void)
Btn_CONFIRM_BUTTON,Txt_Log_in); Btn_CONFIRM_BUTTON,Txt_Log_in);
/* Sign up */ /* Sign up */
Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildMsgStr (Txt_New_on_PLATFORM_Sign_up, Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildStringStr (Txt_New_on_PLATFORM_Sign_up,
Cfg_PLATFORM_SHORT_NAME), Cfg_PLATFORM_SHORT_NAME),
ActFrmMyAcc, ActFrmMyAcc,
Btn_CREATE_BUTTON,Txt_Create_account); Btn_CREATE_BUTTON,Txt_Create_account);
Str_FreeMsg (); Str_FreeString ();
} }
/***** End table and box *****/ /***** End table and box *****/

View File

@ -788,10 +788,10 @@ char *Hie_BuildGoToMsg (const char *Where)
{ {
extern const char *Txt_Go_to_X; extern const char *Txt_Go_to_X;
return Str_BuildMsgStr (Txt_Go_to_X,Where); return Str_BuildStringStr (Txt_Go_to_X,Where);
} }
void Hie_FreeGoToMsg (void) void Hie_FreeGoToMsg (void)
{ {
Str_FreeMsg (); Str_FreeString ();
} }

View File

@ -25,9 +25,6 @@
/********************************* Headers ***********************************/ /********************************* Headers ***********************************/
/*****************************************************************************/ /*****************************************************************************/
#define _GNU_SOURCE // For asprintf
#include <stdio.h> // For asprintf
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_HTML.h" #include "swad_HTML.h"

View File

@ -25,9 +25,7 @@
/********************************* Headers ***********************************/ /********************************* Headers ***********************************/
/*****************************************************************************/ /*****************************************************************************/
#define _GNU_SOURCE // For asprintf
#include <stddef.h> // For NULL #include <stddef.h> // For NULL
#include <stdio.h> // For aprintf
#include <mysql/mysql.h> // To access MySQL databases #include <mysql/mysql.h> // To access MySQL databases
#include "swad_action.h" #include "swad_action.h"

View File

@ -291,11 +291,11 @@ static void Ins_ListInstitutions (void)
unsigned NumIns; unsigned NumIns;
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildMsgStr (Txt_Institutions_of_COUNTRY_X, Box_BoxBegin (NULL,Str_BuildStringStr (Txt_Institutions_of_COUNTRY_X,
Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]), Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]),
Ins_PutIconsListingInstitutions, Ins_PutIconsListingInstitutions,
Hlp_COUNTRY_Institutions,Box_NOT_CLOSABLE); Hlp_COUNTRY_Institutions,Box_NOT_CLOSABLE);
Str_FreeMsg (); Str_FreeString ();
if (Gbl.Hierarchy.Cty.Inss.Num) // There are institutions in the current country if (Gbl.Hierarchy.Cty.Inss.Num) // There are institutions in the current country
{ {
@ -538,11 +538,11 @@ static void Ins_EditInstitutionsInternal (void)
Hie_WriteMenuHierarchy (); Hie_WriteMenuHierarchy ();
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildMsgStr (Txt_Institutions_of_COUNTRY_X, Box_BoxBegin (NULL,Str_BuildStringStr (Txt_Institutions_of_COUNTRY_X,
Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]), Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]),
Ins_PutIconsEditingInstitutions, Ins_PutIconsEditingInstitutions,
Hlp_COUNTRY_Institutions,Box_NOT_CLOSABLE); Hlp_COUNTRY_Institutions,Box_NOT_CLOSABLE);
Str_FreeMsg (); Str_FreeString ();
/***** Put a form to create a new institution *****/ /***** Put a form to create a new institution *****/
Ins_PutFormToCreateInstitution (); Ins_PutFormToCreateInstitution ();
@ -1968,11 +1968,11 @@ void Ins_ListInssFound (MYSQL_RES **mysql_res,unsigned NumInss)
{ {
/***** Begin box and table *****/ /***** Begin box and table *****/
/* Number of institutions found */ /* Number of institutions found */
Box_BoxTableBegin (NULL,Str_BuildMsgLongStr ((long) NumInss, Box_BoxTableBegin (NULL,Str_BuildStringLongStr ((long) NumInss,
NumInss == 1 ? Txt_institution : NumInss == 1 ? Txt_institution :
Txt_institutions), Txt_institutions),
NULL,NULL,Box_NOT_CLOSABLE,2); NULL,NULL,Box_NOT_CLOSABLE,2);
Str_FreeMsg (); Str_FreeString ();
/***** Write heading *****/ /***** Write heading *****/
Ins_PutHeadInstitutionsForSeeing (false); // Order not selectable Ins_PutHeadInstitutionsForSeeing (false); // Order not selectable

View File

@ -467,10 +467,10 @@ static void InsCfg_NumCtrs (void)
HTM_TD_Begin ("class=\"LB\""); HTM_TD_Begin ("class=\"LB\"");
Frm_StartFormGoTo (ActSeeCtr); Frm_StartFormGoTo (ActSeeCtr);
Ins_PutParamInsCod (Gbl.Hierarchy.Ins.InsCod); Ins_PutParamInsCod (Gbl.Hierarchy.Ins.InsCod);
HTM_BUTTON_SUBMIT_Begin (Str_BuildMsgStr (Txt_Centres_of_INSTITUTION_X, HTM_BUTTON_SUBMIT_Begin (Str_BuildStringStr (Txt_Centres_of_INSTITUTION_X,
Gbl.Hierarchy.Ins.ShrtName), Gbl.Hierarchy.Ins.ShrtName),
"BT_LINK DAT",NULL); "BT_LINK DAT",NULL);
Str_FreeMsg (); Str_FreeString ();
HTM_Unsigned (Ctr_GetNumCtrsInIns (Gbl.Hierarchy.Ins.InsCod)); HTM_Unsigned (Ctr_GetNumCtrsInIns (Gbl.Hierarchy.Ins.InsCod));
HTM_BUTTON_End (); HTM_BUTTON_End ();
Frm_EndForm (); Frm_EndForm ();

View File

@ -1309,9 +1309,9 @@ static void Mai_ShowFormChangeUsrEmail (const struct UsrData *UsrDat,bool ItsMe,
if (Confirmed) if (Confirmed)
{ {
Ico_PutIcon ("check-circle.svg", Ico_PutIcon ("check-circle.svg",
Str_BuildMsgStr (Txt_Email_X_confirmed,row[0]), Str_BuildStringStr (Txt_Email_X_confirmed,row[0]),
"ICO16x16"); "ICO16x16");
Str_FreeMsg (); Str_FreeString ();
} }
/* Form to change user's email */ /* Form to change user's email */

View File

@ -2407,7 +2407,6 @@ static void Mch_PutFormCountdown (struct Match *Match,long Seconds,const char *C
{ {
extern const char *Txt_Countdown; extern const char *Txt_Countdown;
char *OnSubmit; char *OnSubmit;
char *Class;
bool PutForm = Match->Status.Showing != Mch_END; bool PutForm = Match->Status.Showing != Mch_END;
if (PutForm) if (PutForm)
@ -2421,24 +2420,21 @@ static void Mch_PutFormCountdown (struct Match *Match,long Seconds,const char *C
Lay_NotEnoughMemoryExit (); Lay_NotEnoughMemoryExit ();
Frm_StartFormOnSubmit (ActUnk,OnSubmit); Frm_StartFormOnSubmit (ActUnk,OnSubmit);
/***** Set class *****/
if (asprintf (&Class,"BT_LINK MCH_BUTTON_ON %s",Color) < 0)
Lay_NotEnoughMemoryExit ();
} }
else else
{ {
/***** Set class *****/
if (asprintf (&Class,"BT_LINK_OFF MCH_BUTTON_HIDDEN %s",Color) < 0)
Lay_NotEnoughMemoryExit ();
} }
/***** Put icon *****/ /***** Put icon *****/
HTM_DIV_Begin ("class=\"MCH_SMALLBUTTON_CONT\""); HTM_DIV_Begin ("class=\"MCH_SMALLBUTTON_CONT\"");
if (PutForm) HTM_BUTTON_SUBMIT_Begin (PutForm ? Txt_Countdown :
HTM_BUTTON_SUBMIT_Begin (Txt_Countdown,Class,NULL); NULL,
else Str_BuildStringStr (PutForm ? "BT_LINK MCH_BUTTON_ON %s" :
HTM_BUTTON_BUTTON_Begin (NULL,Class,NULL); "BT_LINK_OFF MCH_BUTTON_HIDDEN %s",
Color),
NULL);
Str_FreeString ();
HTM_NBSP (); HTM_NBSP ();
if (Seconds >= 0) if (Seconds >= 0)
@ -2453,9 +2449,6 @@ static void Mch_PutFormCountdown (struct Match *Match,long Seconds,const char *C
HTM_DIV_End (); HTM_DIV_End ();
/***** Free class *****/
free (Class);
/***** End form *****/ /***** End form *****/
if (PutForm) if (PutForm)
{ {
@ -2708,10 +2701,10 @@ static void Mch_ShowFormColumns (const struct Match *Match)
/* Number of columns */ /* Number of columns */
Ico_PutSettingIconLink (NumColsIcon[NumCols], Ico_PutSettingIconLink (NumColsIcon[NumCols],
Str_BuildMsgLongStr ((long) NumCols, Str_BuildStringLongStr ((long) NumCols,
NumCols == 1 ? Txt_column : NumCols == 1 ? Txt_column :
Txt_columns)); Txt_columns));
Str_FreeMsg (); Str_FreeString ();
/* End form */ /* End form */
Frm_EndForm (); Frm_EndForm ();
@ -3170,7 +3163,6 @@ static void Mch_DrawScoreRow (double Score,double MinScore,double MaxScore,
unsigned Color; unsigned Color;
unsigned BarWidth; unsigned BarWidth;
char *Icon; char *Icon;
char *Title;
/***** Compute color *****/ /***** Compute color *****/
/* /*
@ -3223,16 +3215,14 @@ static void Mch_DrawScoreRow (double Score,double MinScore,double MaxScore,
HTM_TD_Begin ("class=\"MCH_SCO_NUM%s\"",Mch_GetClassBorder (NumRow)); HTM_TD_Begin ("class=\"MCH_SCO_NUM%s\"",Mch_GetClassBorder (NumRow));
if (asprintf (&Icon,"score%u_1x1.png",Color) < 0) // Background if (asprintf (&Icon,"score%u_1x1.png",Color) < 0) // Background
Lay_NotEnoughMemoryExit (); Lay_NotEnoughMemoryExit ();
if (asprintf (&Title,"%u %s", HTM_IMG (Cfg_URL_ICON_PUBLIC,Icon,
NumUsrs, Str_BuildStringLongStr ((long) NumUsrs,
NumUsrs == 1 ? Txt_ROLES_SINGUL_abc[Rol_STD][Usr_SEX_UNKNOWN] : NumUsrs == 1 ? Txt_ROLES_SINGUL_abc[Rol_STD][Usr_SEX_UNKNOWN] :
Txt_ROLES_PLURAL_abc[Rol_STD][Usr_SEX_UNKNOWN]) < 0) Txt_ROLES_PLURAL_abc[Rol_STD][Usr_SEX_UNKNOWN]),
Lay_NotEnoughMemoryExit ();
HTM_IMG (Cfg_URL_ICON_PUBLIC,Icon,Title,
"class=\"MCH_SCO_BAR\" style=\"width:%u%%;\"",BarWidth); "class=\"MCH_SCO_BAR\" style=\"width:%u%%;\"",BarWidth);
HTM_TxtF ("&nbsp;%u",NumUsrs); Str_FreeString ();
free (Title);
free (Icon); free (Icon);
HTM_TxtF ("&nbsp;%u",NumUsrs);
HTM_TD_End (); HTM_TD_End ();
HTM_TR_End (); HTM_TR_End ();

View File

@ -176,9 +176,9 @@ void McR_ShowMyMchResultsInGam (void)
false); // Do not put form to start new match false); // Do not put form to start new match
/***** List my matches results in game *****/ /***** List my matches results in game *****/
McR_ShowResultsBegin (Str_BuildMsgStr (Txt_Results_of_game_X,Game.Title), McR_ShowResultsBegin (Str_BuildStringStr (Txt_Results_of_game_X,Game.Title),
false); // Do not list games to select false); // Do not list games to select
Str_FreeMsg (); Str_FreeString ();
McR_ListMyMchResultsInGam (Game.GamCod); McR_ListMyMchResultsInGam (Game.GamCod);
McR_ShowResultsEnd (); McR_ShowResultsEnd ();
@ -220,9 +220,9 @@ void McR_ShowMyMchResultsInMch (void)
false); // Do not put form to start new match false); // Do not put form to start new match
/***** List my matches results in match *****/ /***** List my matches results in match *****/
McR_ShowResultsBegin (Str_BuildMsgStr (Txt_Results_of_match_X,Match.Title), McR_ShowResultsBegin (Str_BuildStringStr (Txt_Results_of_match_X,Match.Title),
false); // Do not list games to select false); // Do not list games to select
Str_FreeMsg (); Str_FreeString ();
McR_ListMyMchResultsInMch (Match.MchCod); McR_ListMyMchResultsInMch (Match.MchCod);
McR_ShowResultsEnd (); McR_ShowResultsEnd ();
@ -320,9 +320,9 @@ void McR_ShowAllMchResultsInGam (void)
false); // Do not put form to start new match false); // Do not put form to start new match
/***** List matches results in game *****/ /***** List matches results in game *****/
McR_ShowResultsBegin (Str_BuildMsgStr (Txt_Results_of_game_X,Game.Title), McR_ShowResultsBegin (Str_BuildStringStr (Txt_Results_of_game_X,Game.Title),
false); // Do not list games to select false); // Do not list games to select
Str_FreeMsg (); Str_FreeString ();
McR_ListAllMchResultsInGam (Game.GamCod); McR_ListAllMchResultsInGam (Game.GamCod);
McR_ShowResultsEnd (); McR_ShowResultsEnd ();
@ -405,9 +405,9 @@ void McR_ShowAllMchResultsInMch (void)
false); // Do not put form to start new match false); // Do not put form to start new match
/***** List matches results in match *****/ /***** List matches results in match *****/
McR_ShowResultsBegin (Str_BuildMsgStr (Txt_Results_of_match_X,Match.Title), McR_ShowResultsBegin (Str_BuildStringStr (Txt_Results_of_match_X,Match.Title),
false); // Do not list games to select false); // Do not list games to select
Str_FreeMsg (); Str_FreeString ();
McR_ListAllMchResultsInMch (Match.MchCod); McR_ListAllMchResultsInMch (Match.MchCod);
McR_ShowResultsEnd (); McR_ShowResultsEnd ();

View File

@ -577,7 +577,6 @@ static bool Pho_ReceivePhotoAndDetectFaces (bool ItsMe,const struct UsrData *Usr
char FileNamePhotoMap[PATH_MAX + 1]; // Full name (including path) of the temporary file with the original image with faces char FileNamePhotoMap[PATH_MAX + 1]; // Full name (including path) of the temporary file with the original image with faces
char FileNameTxtMap[PATH_MAX + 1]; // Full name (including path) of the temporary file with the text neccesary to make the image map char FileNameTxtMap[PATH_MAX + 1]; // Full name (including path) of the temporary file with the text neccesary to make the image map
char PathRelPhoto[PATH_MAX + 1]; char PathRelPhoto[PATH_MAX + 1];
char *Img;
FILE *FileTxtMap = NULL; // Temporary file with the text neccesary to make the image map. Initialized to avoid warning FILE *FileTxtMap = NULL; // Temporary file with the text neccesary to make the image map. Initialized to avoid warning
char MIMEType[Brw_MAX_BYTES_MIME_TYPE + 1]; char MIMEType[Brw_MAX_BYTES_MIME_TYPE + 1];
bool WrongType = false; bool WrongType = false;
@ -784,11 +783,11 @@ static bool Pho_ReceivePhotoAndDetectFaces (bool ItsMe,const struct UsrData *Usr
Cfg_PATH_PHOTO_TMP_PUBLIC, Cfg_PATH_PHOTO_TMP_PUBLIC,
Gbl.UniqueNameEncrypted); Gbl.UniqueNameEncrypted);
HTM_DIV_Begin ("class=\"TIT CM\""); HTM_DIV_Begin ("class=\"TIT CM\"");
if (asprintf (&Img,"%s_map.jpg",Gbl.UniqueNameEncrypted) < 0) HTM_IMG (Cfg_URL_PHOTO_TMP_PUBLIC,
Lay_NotEnoughMemoryExit (); Str_BuildStringStr ("%s_map.jpg",Gbl.UniqueNameEncrypted),
HTM_IMG (Cfg_URL_PHOTO_TMP_PUBLIC,Img,Txt_Faces_detected, Txt_Faces_detected,
"usemap=\"#faces_map\""); "usemap=\"#faces_map\"");
free (Img); Str_FreeString ();
HTM_DIV_End (); HTM_DIV_End ();
/***** End alert *****/ /***** End alert *****/

View File

@ -28,10 +28,8 @@ TODO: Check if web service is called from an authorized IP.
/********************************* Headers ***********************************/ /********************************* Headers ***********************************/
/*****************************************************************************/ /*****************************************************************************/
#define _GNU_SOURCE // For asprintf
#include <stdbool.h> // For boolean type #include <stdbool.h> // For boolean type
#include <stddef.h> // For NULL #include <stddef.h> // For NULL
#include <stdio.h> // For fprintf, asprintf
#include <stdlib.h> // For calloc, free #include <stdlib.h> // For calloc, free
#include <string.h> #include <string.h>
@ -98,7 +96,6 @@ void Plg_ListPlugins (void)
unsigned NumPlg; unsigned NumPlg;
struct Plugin *Plg; struct Plugin *Plg;
char URL[Cns_MAX_BYTES_WWW + Cns_BYTES_SESSION_ID + 1]; char URL[Cns_MAX_BYTES_WWW + Cns_BYTES_SESSION_ID + 1];
char *Icon;
if (Gbl.Usrs.Me.Role.Logged != Rol_SYS_ADM) if (Gbl.Usrs.Me.Role.Logged != Rol_SYS_ADM)
{ {
@ -141,12 +138,11 @@ void Plg_ListPlugins (void)
HTM_TD_Begin ("class=\"DAT LM\" style=\"width:45px;\""); HTM_TD_Begin ("class=\"DAT LM\" style=\"width:45px;\"");
HTM_A_Begin ("href=\"%s\" title=\"%s\" class=\"DAT\" target=\"_blank\"", HTM_A_Begin ("href=\"%s\" title=\"%s\" class=\"DAT\" target=\"_blank\"",
URL,Plg->Name); URL,Plg->Name);
if (asprintf (&Icon,"%s24x24.gif", HTM_IMG (Cfg_URL_ICON_PLUGINS_PUBLIC,
Gbl.Plugins.Lst[NumPlg].Logo) < 0) Str_BuildStringStr ("%s24x24.gif",Gbl.Plugins.Lst[NumPlg].Logo),
Lay_NotEnoughMemoryExit (); Plg->Name,
HTM_IMG (Cfg_URL_ICON_PLUGINS_PUBLIC,Icon,Plg->Name,
"class=\"ICO40x40\""); "class=\"ICO40x40\"");
free (Icon); Str_FreeString ();
HTM_A_End (); HTM_A_End ();
HTM_TD_End (); HTM_TD_End ();
@ -383,7 +379,6 @@ static void Plg_ListPluginsForEdition (void)
{ {
unsigned NumPlg; unsigned NumPlg;
struct Plugin *Plg; struct Plugin *Plg;
char *Icon;
/***** Write heading *****/ /***** Write heading *****/
HTM_TABLE_BeginWidePadding (2); HTM_TABLE_BeginWidePadding (2);
@ -414,12 +409,11 @@ static void Plg_ListPluginsForEdition (void)
/* Plugin logo */ /* Plugin logo */
// TODO: Change plugin icons to 32x32 // TODO: Change plugin icons to 32x32
HTM_TD_Begin ("class=\"CM\" style=\"width:45px;\""); HTM_TD_Begin ("class=\"CM\" style=\"width:45px;\"");
if (asprintf (&Icon,"%s24x24.gif", HTM_IMG (Cfg_URL_ICON_PLUGINS_PUBLIC,
Gbl.Plugins.Lst[NumPlg].Logo) < 0) Str_BuildStringStr ("%s24x24.gif",Gbl.Plugins.Lst[NumPlg].Logo),
Lay_NotEnoughMemoryExit (); Gbl.Plugins.Lst[NumPlg].Name,
HTM_IMG (Cfg_URL_ICON_PLUGINS_PUBLIC,Icon,Gbl.Plugins.Lst[NumPlg].Name,
"class=\"ICO40x40\""); "class=\"ICO40x40\"");
free (Icon); Str_FreeString ();
HTM_TD_End (); HTM_TD_End ();
/* Plugin name */ /* Plugin name */

View File

@ -2061,9 +2061,9 @@ static void Prj_ShowOneProjectMembersWithARole (const struct Project *Prj,
Gbl.Prjs.PrjCod = Prj->PrjCod; // Used to pass project code as a parameter Gbl.Prjs.PrjCod = Prj->PrjCod; // Used to pass project code as a parameter
Ico_PutContextualIconToAdd (ActionReqAddUsr[RoleInProject],NULL, Ico_PutContextualIconToAdd (ActionReqAddUsr[RoleInProject],NULL,
Prj_PutCurrentParams, Prj_PutCurrentParams,
Str_BuildMsgStr (Txt_Add_USERS, Str_BuildStringStr (Txt_Add_USERS,
Txt_PROJECT_ROLES_PLURAL_abc[RoleInProject])); Txt_PROJECT_ROLES_PLURAL_abc[RoleInProject]));
Str_FreeMsg (); Str_FreeString ();
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"PRJ_MEMBER_PHO\""); // Column for photo HTM_TD_Begin ("class=\"PRJ_MEMBER_PHO\""); // Column for photo
@ -2460,9 +2460,9 @@ static void Prj_ReqRemUsrFromPrj (Prj_RoleInProject_t RoleInProject)
Frm_StartForm (ActionRemUsr[RoleInProject]); Frm_StartForm (ActionRemUsr[RoleInProject]);
Gbl.Prjs.PrjCod = Prj.PrjCod; Gbl.Prjs.PrjCod = Prj.PrjCod;
Prj_PutCurrentParams (); Prj_PutCurrentParams ();
Btn_PutRemoveButton (Str_BuildMsgStr (Txt_Remove_USER_from_this_project, Btn_PutRemoveButton (Str_BuildStringStr (Txt_Remove_USER_from_this_project,
Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject][Gbl.Usrs.Other.UsrDat.Sex])); Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject][Gbl.Usrs.Other.UsrDat.Sex]));
Str_FreeMsg (); Str_FreeString ();
Frm_EndForm (); Frm_EndForm ();
/* End alert */ /* End alert */

View File

@ -25,10 +25,8 @@
/********************************* Headers ***********************************/ /********************************* Headers ***********************************/
/*****************************************************************************/ /*****************************************************************************/
#define _GNU_SOURCE // For asprintf
#include <linux/limits.h> // For PATH_MAX #include <linux/limits.h> // For PATH_MAX
#include <stddef.h> // For NULL #include <stddef.h> // For NULL
#include <stdio.h> // For asprintf
#include <stdlib.h> // For calloc #include <stdlib.h> // For calloc
#include <string.h> #include <string.h>
@ -2859,7 +2857,6 @@ static void Rec_ShowRole (struct UsrData *UsrDat,
Rol_Role_t Role; Rol_Role_t Role;
unsigned RoleUnsigned; unsigned RoleUnsigned;
Usr_Sex_t Sex; Usr_Sex_t Sex;
char *Label;
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
@ -3066,10 +3063,9 @@ static void Rec_ShowRole (struct UsrData *UsrDat,
{ {
/***** Form to select a sex *****/ /***** Form to select a sex *****/
/* Label */ /* Label */
if (asprintf (&Label,"%s*",Txt_Sex) < 0) Frm_LabelColumn ("REC_C1_BOT RM","",
Lay_NotEnoughMemoryExit (); Str_BuildStringStr ("%s*",Txt_Sex));
Frm_LabelColumn ("REC_C1_BOT RM","",Label); Str_FreeString ();
free (Label);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"REC_C2_BOT LM\""); HTM_TD_Begin ("class=\"REC_C2_BOT LM\"");
@ -3109,17 +3105,15 @@ static void Rec_ShowRole (struct UsrData *UsrDat,
static void Rec_ShowSurname1 (struct UsrData *UsrDat,bool PutForm) static void Rec_ShowSurname1 (struct UsrData *UsrDat,bool PutForm)
{ {
extern const char *Txt_Surname_1; extern const char *Txt_Surname_1;
char *Label;
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
/* Label */ /* Label */
if (PutForm) if (PutForm)
{ {
if (asprintf (&Label,"%s*",Txt_Surname_1) < 0) Frm_LabelColumn ("REC_C1_BOT RM","Surname1",
Lay_NotEnoughMemoryExit (); Str_BuildStringStr ("%s*",Txt_Surname_1));
Frm_LabelColumn ("REC_C1_BOT RM","Surname1",Label); Str_FreeString ();
free (Label);
} }
else else
Frm_LabelColumn ("REC_C1_BOT RM",NULL,Txt_Surname_1); Frm_LabelColumn ("REC_C1_BOT RM",NULL,Txt_Surname_1);
@ -3180,17 +3174,15 @@ static void Rec_ShowSurname2 (struct UsrData *UsrDat,bool PutForm)
static void Rec_ShowFirstName (struct UsrData *UsrDat,bool PutForm) static void Rec_ShowFirstName (struct UsrData *UsrDat,bool PutForm)
{ {
extern const char *Txt_First_name; extern const char *Txt_First_name;
char *Label;
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
/* Label */ /* Label */
if (PutForm) if (PutForm)
{ {
if (asprintf (&Label,"%s*",Txt_First_name) < 0) Frm_LabelColumn ("REC_C1_BOT RM","FirstName",
Lay_NotEnoughMemoryExit (); Str_BuildStringStr ("%s*",Txt_First_name));
Frm_LabelColumn ("REC_C1_BOT RM","FirstName",Label); Str_FreeString ();
free (Label);
} }
else else
Frm_LabelColumn ("REC_C1_BOT RM",NULL,Txt_First_name); Frm_LabelColumn ("REC_C1_BOT RM",NULL,Txt_First_name);
@ -3221,7 +3213,6 @@ static void Rec_ShowCountry (struct UsrData *UsrDat,bool PutForm)
{ {
extern const char *Txt_Country; extern const char *Txt_Country;
extern const char *Txt_Another_country; extern const char *Txt_Another_country;
char *Label;
unsigned NumCty; unsigned NumCty;
/***** If list of countries is empty, try to get it *****/ /***** If list of countries is empty, try to get it *****/
@ -3237,10 +3228,9 @@ static void Rec_ShowCountry (struct UsrData *UsrDat,bool PutForm)
/* Label */ /* Label */
if (PutForm) if (PutForm)
{ {
if (asprintf (&Label,"%s*",Txt_Country) < 0) Frm_LabelColumn ("REC_C1_BOT RM","OthCtyCod",
Lay_NotEnoughMemoryExit (); Str_BuildStringStr ("%s*",Txt_Country));
Frm_LabelColumn ("REC_C1_BOT RM","OthCtyCod",Label); Str_FreeString ();
free (Label);
} }
else else
Frm_LabelColumn ("REC_C1_BOT RM",NULL,Txt_Country); Frm_LabelColumn ("REC_C1_BOT RM",NULL,Txt_Country);
@ -3936,7 +3926,6 @@ static void Rec_ShowFormMyInsCtrDpt (bool IAmATeacher)
extern const char *Txt_Department; extern const char *Txt_Department;
extern const char *Txt_Office; extern const char *Txt_Office;
extern const char *Txt_Phone; extern const char *Txt_Phone;
char *Label;
unsigned NumCty; unsigned NumCty;
unsigned NumIns; unsigned NumIns;
unsigned NumCtr; unsigned NumCtr;
@ -3957,10 +3946,9 @@ static void Rec_ShowFormMyInsCtrDpt (bool IAmATeacher)
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
/* Label */ /* Label */
if (asprintf (&Label,"%s*",Txt_Country) < 0) Frm_LabelColumn ("REC_C1_BOT RM","InsCtyCod",
Lay_NotEnoughMemoryExit (); Str_BuildStringStr ("%s*",Txt_Country));
Frm_LabelColumn ("REC_C1_BOT RM","InsCtyCod",Label); Str_FreeString ();
free (Label);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"REC_C2_BOT LM\""); HTM_TD_Begin ("class=\"REC_C2_BOT LM\"");
@ -3996,10 +3984,9 @@ static void Rec_ShowFormMyInsCtrDpt (bool IAmATeacher)
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
/* Label */ /* Label */
if (asprintf (&Label,"%s*",Txt_Institution) < 0) Frm_LabelColumn ("REC_C1_BOT RM","OthInsCod",
Lay_NotEnoughMemoryExit (); Str_BuildStringStr ("%s*",Txt_Institution));
Frm_LabelColumn ("REC_C1_BOT RM","OthInsCod",Label); Str_FreeString ();
free (Label);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"REC_C2_BOT LM\""); HTM_TD_Begin ("class=\"REC_C2_BOT LM\"");
@ -4038,10 +4025,9 @@ static void Rec_ShowFormMyInsCtrDpt (bool IAmATeacher)
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
/* Label */ /* Label */
if (asprintf (&Label,"%s*",Txt_Centre) < 0) Frm_LabelColumn ("REC_C1_BOT RM","OthCtrCod",
Lay_NotEnoughMemoryExit (); Str_BuildStringStr ("%s*",Txt_Centre));
Frm_LabelColumn ("REC_C1_BOT RM","OthCtrCod",Label); Str_FreeString ();
free (Label);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"REC_C2_BOT LM\""); HTM_TD_Begin ("class=\"REC_C2_BOT LM\"");
@ -4078,10 +4064,9 @@ static void Rec_ShowFormMyInsCtrDpt (bool IAmATeacher)
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
/* Label */ /* Label */
if (asprintf (&Label,"%s*",Txt_Department) < 0) Frm_LabelColumn ("REC_C1_BOT RM",Dpt_PARAM_DPT_COD_NAME,
Lay_NotEnoughMemoryExit (); Str_BuildStringStr ("%s*",Txt_Department));
Frm_LabelColumn ("REC_C1_BOT RM",Dpt_PARAM_DPT_COD_NAME,Label); Str_FreeString ();
free (Label);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"REC_C2_BOT LM\""); HTM_TD_Begin ("class=\"REC_C2_BOT LM\"");

View File

@ -158,10 +158,10 @@ void Rep_ReqMyUsageReport (void)
Frm_StartForm (ActSeeMyUsgRep); Frm_StartForm (ActSeeMyUsgRep);
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildMsgStr (Txt_Report_of_use_of_PLATFORM, Box_BoxBegin (NULL,Str_BuildStringStr (Txt_Report_of_use_of_PLATFORM,
Cfg_PLATFORM_SHORT_NAME),NULL, Cfg_PLATFORM_SHORT_NAME),NULL,
Hlp_ANALYTICS_Report,Box_NOT_CLOSABLE); Hlp_ANALYTICS_Report,Box_NOT_CLOSABLE);
Str_FreeMsg (); Str_FreeString ();
/***** Header *****/ /***** Header *****/
Rep_TitleReport (NULL); // NULL means do not write date Rep_TitleReport (NULL); // NULL means do not write date
@ -264,10 +264,10 @@ static void Rep_PutLinkToMyUsageReport (struct Rep_Report *Report)
extern const char *Txt_This_link_will_remain_active_as_long_as_your_user_s_account_exists; extern const char *Txt_This_link_will_remain_active_as_long_as_your_user_s_account_exists;
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildMsgStr (Txt_Report_of_use_of_PLATFORM, Box_BoxBegin (NULL,Str_BuildStringStr (Txt_Report_of_use_of_PLATFORM,
Cfg_PLATFORM_SHORT_NAME),NULL, Cfg_PLATFORM_SHORT_NAME),NULL,
Hlp_ANALYTICS_Report,Box_NOT_CLOSABLE); Hlp_ANALYTICS_Report,Box_NOT_CLOSABLE);
Str_FreeMsg (); Str_FreeString ();
/***** Header *****/ /***** Header *****/
Rep_TitleReport (&Report->CurrentTimeUTC); Rep_TitleReport (&Report->CurrentTimeUTC);
@ -993,13 +993,13 @@ static void Rep_GetAndWriteMyCurrentCrss (Rol_Role_t Role,
long CrsCod; long CrsCod;
NumCrss = Usr_GetNumCrssOfUsrWithARole (Gbl.Usrs.Me.UsrDat.UsrCod,Role); NumCrss = Usr_GetNumCrssOfUsrWithARole (Gbl.Usrs.Me.UsrDat.UsrCod,Role);
fprintf (Gbl.F.Rep,"<li>%s %u %s", fprintf (Gbl.F.Rep,"<li>");
Str_BuildMsgStr (Txt_USER_in_COURSE, fprintf (Gbl.F.Rep,Txt_USER_in_COURSE,
Txt_ROLES_SINGUL_Abc[Role][Gbl.Usrs.Me.UsrDat.Sex]), Txt_ROLES_SINGUL_Abc[Role][Gbl.Usrs.Me.UsrDat.Sex]);
fprintf (Gbl.F.Rep," %u %s",
NumCrss, NumCrss,
NumCrss == 1 ? Txt_course : NumCrss == 1 ? Txt_course :
Txt_courses); Txt_courses);
Str_FreeMsg ();
if (NumCrss) if (NumCrss)
{ {

View File

@ -230,10 +230,10 @@ void Sta_AskShowCrsHits (void)
Gbl.Usrs.LstUsrs[Rol_TCH].NumUsrs; Gbl.Usrs.LstUsrs[Rol_TCH].NumUsrs;
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildMsgStr (Txt_Statistics_of_visits_to_the_course_X, Box_BoxBegin (NULL,Str_BuildStringStr (Txt_Statistics_of_visits_to_the_course_X,
Gbl.Hierarchy.Crs.ShrtName),NULL, Gbl.Hierarchy.Crs.ShrtName),NULL,
Hlp_ANALYTICS_Visits_visits_to_course,Box_NOT_CLOSABLE); Hlp_ANALYTICS_Visits_visits_to_course,Box_NOT_CLOSABLE);
Str_FreeMsg (); Str_FreeString ();
/***** Show form to select the groups *****/ /***** Show form to select the groups *****/
Grp_ShowFormToSelectSeveralGroups (NULL,Grp_MY_GROUPS); Grp_ShowFormToSelectSeveralGroups (NULL,Grp_MY_GROUPS);
@ -1494,10 +1494,10 @@ static void Sta_ShowDetailedAccessesList (unsigned long NumRows,MYSQL_RES *mysql
HTM_TD_Begin ("class=\"LM\""); HTM_TD_Begin ("class=\"LM\"");
if (FirstRow > 1) if (FirstRow > 1)
{ {
HTM_BUTTON_SUBMIT_Begin (Str_BuildMsgLong (Txt_Show_previous_X_clicks, HTM_BUTTON_SUBMIT_Begin (Str_BuildStringLong (Txt_Show_previous_X_clicks,
(long) Gbl.Stat.RowsPerPage), (long) Gbl.Stat.RowsPerPage),
"BT_LINK TIT_TBL",NULL); "BT_LINK TIT_TBL",NULL);
Str_FreeMsg (); Str_FreeString ();
HTM_STRONG_Begin (); HTM_STRONG_Begin ();
HTM_TxtF ("&lt;%s",Txt_PAGES_Previous); HTM_TxtF ("&lt;%s",Txt_PAGES_Previous);
HTM_STRONG_End (); HTM_STRONG_End ();
@ -1532,10 +1532,10 @@ static void Sta_ShowDetailedAccessesList (unsigned long NumRows,MYSQL_RES *mysql
HTM_TD_Begin ("class=\"RM\""); HTM_TD_Begin ("class=\"RM\"");
if (LastRow < NumRows) if (LastRow < NumRows)
{ {
HTM_BUTTON_SUBMIT_Begin (Str_BuildMsgLong (Txt_Show_next_X_clicks, HTM_BUTTON_SUBMIT_Begin (Str_BuildStringLong (Txt_Show_next_X_clicks,
(long) Gbl.Stat.RowsPerPage), (long) Gbl.Stat.RowsPerPage),
"BT_LINK TIT_TBL",NULL); "BT_LINK TIT_TBL",NULL);
Str_FreeMsg (); Str_FreeString ();
HTM_STRONG_Begin (); HTM_STRONG_Begin ();
HTM_TxtF ("%s&gt;",Txt_PAGES_Next); HTM_TxtF ("%s&gt;",Txt_PAGES_Next);
HTM_STRONG_End (); HTM_STRONG_End ();

View File

@ -2924,51 +2924,51 @@ void Str_Concat (char *Dst,const char *Src,size_t DstSize)
} }
/*****************************************************************************/ /*****************************************************************************/
/******************* Build and free a message with format ********************/ /******************** Build and free a text with format **********************/
/*****************************************************************************/ /*****************************************************************************/
static char *Str_Msg = NULL; static char *Str_String = NULL;
// FormatMsg must be a string including "%s" // fmt must be a string including "%s"
// Str_FreeMsg() must be called after calling this function // Str_FreeMsg() must be called after calling this function
char *Str_BuildMsgStr (const char *fmt,const char *Str) char *Str_BuildStringStr (const char *fmt,const char *Str)
{ {
Str_FreeMsg (); Str_FreeString ();
if (asprintf (&Str_Msg,fmt,Str) < 0) if (asprintf (&Str_String,fmt,Str) < 0)
Lay_NotEnoughMemoryExit (); Lay_NotEnoughMemoryExit ();
return Str_Msg; return Str_String;
} }
// FormatMsg must be a string including "%ld" // fmt must be a string including "%ld"
// Str_FreeMsg() must be called after calling this function // Str_FreeMsg() must be called after calling this function
char *Str_BuildMsgLong (const char *fmt,long Num) char *Str_BuildStringLong (const char *fmt,long Num)
{ {
Str_FreeMsg (); Str_FreeString ();
if (asprintf (&Str_Msg,fmt,Num) < 0) if (asprintf (&Str_String,fmt,Num) < 0)
Lay_NotEnoughMemoryExit (); Lay_NotEnoughMemoryExit ();
return Str_Msg; return Str_String;
} }
// Str_FreeMsg() must be called after calling this function // Str_FreeMsg() must be called after calling this function
char *Str_BuildMsgLongStr (long Num,const char *Str) char *Str_BuildStringLongStr (long Num,const char *Str)
{ {
Str_FreeMsg (); Str_FreeString ();
if (asprintf (&Str_Msg,"%ld %s",Num,Str) < 0) if (asprintf (&Str_String,"%ld %s",Num,Str) < 0)
Lay_NotEnoughMemoryExit (); Lay_NotEnoughMemoryExit ();
return Str_Msg; return Str_String;
} }
void Str_FreeMsg (void) void Str_FreeString (void)
{ {
if (Str_Msg != NULL) if (Str_String != NULL)
{ {
free (Str_Msg); free (Str_String);
Str_Msg = NULL; Str_String = NULL;
} }
} }

View File

@ -136,9 +136,9 @@ void Str_CreateRandomAlphanumStr (char *Str,size_t Length);
void Str_Copy (char *Dst,const char *Src,size_t DstSize); void Str_Copy (char *Dst,const char *Src,size_t DstSize);
void Str_Concat (char *Dst,const char *Src,size_t DstSize); void Str_Concat (char *Dst,const char *Src,size_t DstSize);
char *Str_BuildMsgStr (const char *fmt,const char *Str); char *Str_BuildStringStr (const char *fmt,const char *Str);
char *Str_BuildMsgLong (const char *fmt,long Num); char *Str_BuildStringLong (const char *fmt,long Num);
char *Str_BuildMsgLongStr (long Num,const char *Str); char *Str_BuildStringLongStr (long Num,const char *Str);
void Str_FreeMsg (void); void Str_FreeString (void);
#endif #endif

View File

@ -624,10 +624,10 @@ static void Syl_ShowRowSyllabus (unsigned NumItem,
ActUp_IteSylPra, ActUp_IteSylPra,
NULL,Syl_PutParamNumItem, NULL,Syl_PutParamNumItem,
"arrow-up.svg", "arrow-up.svg",
Str_BuildMsgStr (LstItemsSyllabus.Lst[NumItem].HasChildren ? Txt_Move_up_X_and_its_subsections : Str_BuildStringStr (LstItemsSyllabus.Lst[NumItem].HasChildren ? Txt_Move_up_X_and_its_subsections :
Txt_Move_up_X, Txt_Move_up_X,
StrItemCod)); StrItemCod));
Str_FreeMsg (); Str_FreeString ();
} }
else else
Ico_PutIconOff ("arrow-up.svg",Txt_Movement_not_allowed); Ico_PutIconOff ("arrow-up.svg",Txt_Movement_not_allowed);
@ -642,10 +642,10 @@ static void Syl_ShowRowSyllabus (unsigned NumItem,
ActDwnIteSylPra, ActDwnIteSylPra,
NULL,Syl_PutParamNumItem, NULL,Syl_PutParamNumItem,
"arrow-down.svg", "arrow-down.svg",
Str_BuildMsgStr (LstItemsSyllabus.Lst[NumItem].HasChildren ? Txt_Move_down_X_and_its_subsections : Str_BuildStringStr (LstItemsSyllabus.Lst[NumItem].HasChildren ? Txt_Move_down_X_and_its_subsections :
Txt_Move_down_X, Txt_Move_down_X,
StrItemCod)); StrItemCod));
Str_FreeMsg (); Str_FreeString ();
} }
else else
Ico_PutIconOff ("arrow-down.svg",Txt_Movement_not_allowed); Ico_PutIconOff ("arrow-down.svg",Txt_Movement_not_allowed);
@ -659,9 +659,9 @@ static void Syl_ShowRowSyllabus (unsigned NumItem,
ActRgtIteSylPra, ActRgtIteSylPra,
NULL,Syl_PutParamNumItem, NULL,Syl_PutParamNumItem,
"arrow-left.svg", "arrow-left.svg",
Str_BuildMsgStr (Txt_Increase_level_of_X, Str_BuildStringStr (Txt_Increase_level_of_X,
StrItemCod)); StrItemCod));
Str_FreeMsg (); Str_FreeString ();
} }
else else
Ico_PutIconOff ("arrow-left.svg",Txt_Movement_not_allowed); Ico_PutIconOff ("arrow-left.svg",Txt_Movement_not_allowed);
@ -676,9 +676,9 @@ static void Syl_ShowRowSyllabus (unsigned NumItem,
ActLftIteSylPra, ActLftIteSylPra,
NULL,Syl_PutParamNumItem, NULL,Syl_PutParamNumItem,
"arrow-right.svg", "arrow-right.svg",
Str_BuildMsgStr (Txt_Decrease_level_of_X, Str_BuildStringStr (Txt_Decrease_level_of_X,
StrItemCod)); StrItemCod));
Str_FreeMsg (); Str_FreeString ();
} }
else else
Ico_PutIconOff ("arrow-right.svg",Txt_Movement_not_allowed); Ico_PutIconOff ("arrow-right.svg",Txt_Movement_not_allowed);

View File

@ -1841,9 +1841,9 @@ static void Tst_PutIconEnable (long TagCod,const char *TagTxt)
Frm_StartForm (ActEnableTag); Frm_StartForm (ActEnableTag);
Par_PutHiddenParamLong (NULL,"TagCod",TagCod); Par_PutHiddenParamLong (NULL,"TagCod",TagCod);
Ico_PutIconLink ("eye-slash.svg", Ico_PutIconLink ("eye-slash.svg",
Str_BuildMsgStr (Txt_Tag_X_not_allowed_Click_to_allow_it, Str_BuildStringStr (Txt_Tag_X_not_allowed_Click_to_allow_it,
TagTxt)); TagTxt));
Str_FreeMsg (); Str_FreeString ();
Frm_EndForm (); Frm_EndForm ();
HTM_TD_End (); HTM_TD_End ();
} }
@ -1860,9 +1860,9 @@ static void Tst_PutIconDisable (long TagCod,const char *TagTxt)
Frm_StartForm (ActDisableTag); Frm_StartForm (ActDisableTag);
Par_PutHiddenParamLong (NULL,"TagCod",TagCod); Par_PutHiddenParamLong (NULL,"TagCod",TagCod);
Ico_PutIconLink ("eye.svg", Ico_PutIconLink ("eye.svg",
Str_BuildMsgStr (Txt_Tag_X_allowed_Click_to_disable_it, Str_BuildStringStr (Txt_Tag_X_allowed_Click_to_disable_it,
TagTxt)); TagTxt));
Str_FreeMsg (); Str_FreeString ();
Frm_EndForm (); Frm_EndForm ();
HTM_TD_End (); HTM_TD_End ();
} }
@ -5089,10 +5089,10 @@ static void Tst_PutFormEditOneQst (char Stem[Cns_MAX_BYTES_TEXT + 1],
/***** Begin box *****/ /***** Begin box *****/
if (Gbl.Test.QstCod > 0) // The question already has assigned a code if (Gbl.Test.QstCod > 0) // The question already has assigned a code
{ {
Box_BoxBegin (NULL,Str_BuildMsgLong (Txt_Question_code_X,Gbl.Test.QstCod), Box_BoxBegin (NULL,Str_BuildStringLong (Txt_Question_code_X,Gbl.Test.QstCod),
Tst_PutIconToRemoveOneQst, Tst_PutIconToRemoveOneQst,
Hlp_ASSESSMENT_Tests_writing_a_question,Box_NOT_CLOSABLE); Hlp_ASSESSMENT_Tests_writing_a_question,Box_NOT_CLOSABLE);
Str_FreeMsg (); Str_FreeString ();
} }
else else
Box_BoxBegin (NULL,Txt_New_question,NULL, Box_BoxBegin (NULL,Txt_New_question,NULL,

View File

@ -507,10 +507,10 @@ static void TL_ShowTimelineUsrHighlightingNot (long NotCod)
TL_GET_RECENT_TIMELINE); TL_GET_RECENT_TIMELINE);
/***** Show timeline *****/ /***** Show timeline *****/
TL_ShowTimeline (Query,Str_BuildMsgStr (Txt_Timeline_OF_A_USER, TL_ShowTimeline (Query,Str_BuildStringStr (Txt_Timeline_OF_A_USER,
Gbl.Usrs.Other.UsrDat.FirstName), Gbl.Usrs.Other.UsrDat.FirstName),
NotCod); NotCod);
Str_FreeMsg (); Str_FreeString ();
/***** Drop temporary tables *****/ /***** Drop temporary tables *****/
TL_DropTemporaryTablesUsedToQueryTimeline (); TL_DropTemporaryTablesUsedToQueryTimeline ();
@ -1925,7 +1925,6 @@ static void TL_PutFormGoToAction (const struct TL_Note *SocNot)
extern const char *The_ClassFormInBoxBold[The_NUM_THEMES]; extern const char *The_ClassFormInBoxBold[The_NUM_THEMES];
extern const char *Txt_TIMELINE_NOTE[TL_NUM_NOTE_TYPES]; extern const char *Txt_TIMELINE_NOTE[TL_NUM_NOTE_TYPES];
extern const char *Txt_not_available; extern const char *Txt_not_available;
char *Class;
char *Anchor = NULL; char *Anchor = NULL;
static const Act_Action_t TL_DefaultActions[TL_NUM_NOTE_TYPES] = static const Act_Action_t TL_DefaultActions[TL_NUM_NOTE_TYPES] =
{ {
@ -2062,14 +2061,14 @@ static void TL_PutFormGoToAction (const struct TL_Note *SocNot)
} }
/***** Icon and link to go to action *****/ /***** Icon and link to go to action *****/
if (asprintf (&Class,"BT_LINK %s ICO_HIGHLIGHT", HTM_BUTTON_SUBMIT_Begin (Txt_TIMELINE_NOTE[SocNot->NoteType],
The_ClassFormInBoxBold[Gbl.Prefs.Theme]) < 0) Str_BuildStringStr ("BT_LINK %s ICO_HIGHLIGHT",
Lay_NotEnoughMemoryExit (); The_ClassFormInBoxBold[Gbl.Prefs.Theme]),
HTM_BUTTON_SUBMIT_Begin (Txt_TIMELINE_NOTE[SocNot->NoteType],Class,NULL); NULL);
Ico_PutIcon (TL_Icons[SocNot->NoteType],Txt_TIMELINE_NOTE[SocNot->NoteType],"CONTEXT_ICO_x16"); Ico_PutIcon (TL_Icons[SocNot->NoteType],Txt_TIMELINE_NOTE[SocNot->NoteType],"CONTEXT_ICO_x16");
HTM_TxtF ("&nbsp;%s",Txt_TIMELINE_NOTE[SocNot->NoteType]); HTM_TxtF ("&nbsp;%s",Txt_TIMELINE_NOTE[SocNot->NoteType]);
HTM_BUTTON_End (); HTM_BUTTON_End ();
free (Class); Str_FreeString ();
/***** End form *****/ /***** End form *****/
Frm_EndForm (); Frm_EndForm ();
@ -2778,9 +2777,9 @@ static void TL_FormToShowHiddenComments (Act_Action_t ActionGbl,Act_Action_t Act
/* Put icon and text with link to show the first hidden comments */ /* Put icon and text with link to show the first hidden comments */
HTM_BUTTON_SUBMIT_Begin (NULL,The_ClassFormLinkInBox[Gbl.Prefs.Theme],NULL); HTM_BUTTON_SUBMIT_Begin (NULL,The_ClassFormLinkInBox[Gbl.Prefs.Theme],NULL);
Ico_PutIconTextLink ("angle-up.svg", Ico_PutIconTextLink ("angle-up.svg",
Str_BuildMsgLong (Txt_See_the_previous_X_COMMENTS, Str_BuildStringLong (Txt_See_the_previous_X_COMMENTS,
(long) NumInitialComments)); (long) NumInitialComments));
Str_FreeMsg (); Str_FreeString ();
HTM_BUTTON_End (); HTM_BUTTON_End ();
/* End form */ /* End form */
@ -2931,9 +2930,9 @@ static void TL_LinkToShowPreviousComments (const char IdComments[Frm_MAX_BYTES_I
" style=\"display:none;\"", // Hidden " style=\"display:none;\"", // Hidden
IdComments); IdComments);
TL_PutIconToToggleComments (IdComments,"angle-up.svg", TL_PutIconToToggleComments (IdComments,"angle-up.svg",
Str_BuildMsgLong (Txt_See_the_previous_X_COMMENTS, Str_BuildStringLong (Txt_See_the_previous_X_COMMENTS,
(long) NumInitialComments)); (long) NumInitialComments));
Str_FreeMsg (); Str_FreeString ();
HTM_DIV_End (); HTM_DIV_End ();
} }
@ -3123,9 +3122,9 @@ static void TL_PutDisabledIconShare (unsigned NumShared)
if (NumShared) if (NumShared)
{ {
Ico_PutDivIcon ("TL_ICO_DISABLED",TL_ICON_SHARE, Ico_PutDivIcon ("TL_ICO_DISABLED",TL_ICON_SHARE,
Str_BuildMsgLong (Txt_TIMELINE_NOTE_Shared_by_X_USERS, Str_BuildStringLong (Txt_TIMELINE_NOTE_Shared_by_X_USERS,
(long) NumShared)); (long) NumShared));
Str_FreeMsg (); Str_FreeString ();
} }
else else
Ico_PutDivIcon ("TL_ICO_DISABLED",TL_ICON_SHARE, Ico_PutDivIcon ("TL_ICO_DISABLED",TL_ICON_SHARE,
@ -3145,9 +3144,9 @@ static void TL_PutDisabledIconFav (unsigned NumFavs)
if (NumFavs) if (NumFavs)
{ {
Ico_PutDivIcon ("TL_ICO_DISABLED",TL_ICON_FAV, Ico_PutDivIcon ("TL_ICO_DISABLED",TL_ICON_FAV,
Str_BuildMsgLong (Txt_TIMELINE_NOTE_Favourited_by_X_USERS, Str_BuildStringLong (Txt_TIMELINE_NOTE_Favourited_by_X_USERS,
(long) NumFavs)); (long) NumFavs));
Str_FreeMsg (); Str_FreeString ();
} }
else else
Ico_PutDivIcon ("TL_ICO_DISABLED",TL_ICON_FAV, Ico_PutDivIcon ("TL_ICO_DISABLED",TL_ICON_FAV,

View File

@ -2818,7 +2818,6 @@ void Usr_WriteLoggedUsrHead (void)
extern const char *The_ClassUsr[The_NUM_THEMES]; extern const char *The_ClassUsr[The_NUM_THEMES];
extern const char *Txt_Role; extern const char *Txt_Role;
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS]; extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
char *ClassLink;
bool ShowPhoto; bool ShowPhoto;
char PhotoURL[PATH_MAX + 1]; char PhotoURL[PATH_MAX + 1];
unsigned NumAvailableRoles = Rol_GetNumAvailableRoles (); unsigned NumAvailableRoles = Rol_GetNumAvailableRoles ();
@ -2828,17 +2827,16 @@ void Usr_WriteLoggedUsrHead (void)
/***** User's role *****/ /***** User's role *****/
if (NumAvailableRoles == 1) if (NumAvailableRoles == 1)
{ {
if (asprintf (&ClassLink,"BT_LINK %s",The_ClassUsr[Gbl.Prefs.Theme]) < 0)
Lay_NotEnoughMemoryExit ();
Frm_StartForm (ActFrmRolSes); Frm_StartForm (ActFrmRolSes);
HTM_BUTTON_SUBMIT_Begin (Txt_Role,ClassLink,NULL); HTM_BUTTON_SUBMIT_Begin (Txt_Role,
Str_BuildStringStr ("BT_LINK %s",
The_ClassUsr[Gbl.Prefs.Theme]),
NULL);
Str_FreeString ();
HTM_Txt (Txt_ROLES_SINGUL_Abc[Gbl.Usrs.Me.Role.Logged][Gbl.Usrs.Me.UsrDat.Sex]); HTM_Txt (Txt_ROLES_SINGUL_Abc[Gbl.Usrs.Me.Role.Logged][Gbl.Usrs.Me.UsrDat.Sex]);
HTM_BUTTON_End (); HTM_BUTTON_End ();
Frm_EndForm (); Frm_EndForm ();
free (ClassLink);
HTM_Colon (); HTM_Colon ();
} }
else else
@ -7390,13 +7388,13 @@ unsigned Usr_ListUsrsFound (Rol_Role_t Role,
/***** Begin box and table *****/ /***** Begin box and table *****/
/* Number of users found */ /* Number of users found */
Sex = Usr_GetSexOfUsrsLst (Role); Sex = Usr_GetSexOfUsrsLst (Role);
Box_BoxTableBegin (NULL,Str_BuildMsgLongStr ((long) NumUsrs, Box_BoxTableBegin (NULL,Str_BuildStringLongStr ((long) NumUsrs,
(Role == Rol_UNK) ? ((NumUsrs == 1) ? Txt_user[Sex] : (Role == Rol_UNK) ? ((NumUsrs == 1) ? Txt_user[Sex] :
Txt_users[Sex]) : Txt_users[Sex]) :
((NumUsrs == 1) ? Txt_ROLES_SINGUL_abc[Role][Sex] : ((NumUsrs == 1) ? Txt_ROLES_SINGUL_abc[Role][Sex] :
Txt_ROLES_PLURAL_abc[Role][Sex])), Txt_ROLES_PLURAL_abc[Role][Sex])),
NULL,NULL,Box_NOT_CLOSABLE,2); NULL,NULL,Box_NOT_CLOSABLE,2);
Str_FreeMsg (); Str_FreeString ();
/***** Heading row with column names *****/ /***** Heading row with column names *****/
Gbl.Usrs.Listing.WithPhotos = true; Gbl.Usrs.Listing.WithPhotos = true;