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\"",
UsrDat->IDs.List[NumID].Confirmed ? "USR_ID_C" :
"USR_ID_NC",
Str_BuildMsgStr (UsrDat->IDs.List[NumID].Confirmed ? Txt_ID_X_confirmed :
Txt_ID_X_not_confirmed,
UsrDat->IDs.List[NumID].ID));
Str_FreeMsg ();
Str_BuildStringStr (UsrDat->IDs.List[NumID].Confirmed ? Txt_ID_X_confirmed :
Txt_ID_X_not_confirmed,
UsrDat->IDs.List[NumID].ID));
Str_FreeString ();
HTM_Txt (UsrDat->IDs.List[NumID].ID);
HTM_Txt (UsrDat->IDs.List[NumID].Confirmed ? "✓" :
"");

View File

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

View File

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

View File

@ -2208,7 +2208,6 @@ void Att_RegisterMeAsStdInAttEvent (void)
extern const char *Txt_Your_comment_has_been_updated;
struct AttendanceEvent Att;
bool Present;
char *CommentParamName;
char CommentStd[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 *****/
Present = Att_CheckIfUsrIsPresentInAttEventAndGetComments (Att.AttCod,Gbl.Usrs.Me.UsrDat.UsrCod,
CommentStd,CommentTch);
if (asprintf (&CommentParamName,"CommentStd%s",
Gbl.Usrs.Me.UsrDat.EncryptedUsrCod) < 0)
Lay_NotEnoughMemoryExit ();
Par_GetParToHTML (CommentParamName,CommentStd,Cns_MAX_BYTES_TEXT);
free (CommentParamName);
Par_GetParToHTML (Str_BuildStringStr ("CommentStd%s",
Gbl.Usrs.Me.UsrDat.EncryptedUsrCod),
CommentStd,Cns_MAX_BYTES_TEXT);
Str_FreeString ();
if (Present ||
CommentStd[0] ||
@ -2271,7 +2269,6 @@ void Att_RegisterStudentsInAttEvent (void)
unsigned NumStdsPresent;
unsigned NumStdsAbsent;
struct UsrData UsrData;
char *CommentParamName;
char CommentStd[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 *****/
Att_CheckIfUsrIsPresentInAttEventAndGetComments (Att.AttCod,Gbl.Usrs.LstUsrs[Rol_STD].Lst[NumUsr].UsrCod,CommentStd,CommentTch);
if (asprintf (&CommentParamName,"CommentTch%s",
Gbl.Usrs.LstUsrs[Rol_STD].Lst[NumUsr].EncryptedUsrCod) < 0)
Lay_NotEnoughMemoryExit ();
Par_GetParToHTML (CommentParamName,CommentTch,Cns_MAX_BYTES_TEXT);
free (CommentParamName);
Par_GetParToHTML (Str_BuildStringStr ("CommentTch%s",
Gbl.Usrs.LstUsrs[Rol_STD].Lst[NumUsr].EncryptedUsrCod),
CommentTch,Cns_MAX_BYTES_TEXT);
Str_FreeString ();
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",
FirstDayOfWeek);
Ico_PutSettingIconLink (Icon,
Str_BuildMsgStr (Txt_First_day_of_the_week_X,
Txt_DAYS_SMALL[FirstDayOfWeek]));
Str_FreeMsg ();
Str_BuildStringStr (Txt_First_day_of_the_week_X,
Txt_DAYS_SMALL[FirstDayOfWeek]));
Str_FreeString ();
Frm_EndForm ();
HTM_DIV_End ();
}

View File

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

View File

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

View File

@ -492,7 +492,7 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
En OpenSWAD:
ps2pdf source.ps destination.pdf
*/
#define Log_PLATFORM_VERSION "SWAD 19.108.6 (2019-12-30)"
#define Log_PLATFORM_VERSION "SWAD 19.108.7 (2019-12-30)"
#define CSS_FILE "swad19.101.5.css"
#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 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.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)

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1236,21 +1236,21 @@ static void For_ShowAForumPost (unsigned PstNum,long PstCod,
PstCod);
Ico_PutIconLink (Enabled ? "eye.svg" :
"eye-slash.svg",
Str_BuildMsgLong (Enabled ? Txt_FORUM_Post_X_allowed_Click_to_ban_it :
Txt_FORUM_Post_X_banned_Click_to_unban_it,
(long) PstNum));
Str_FreeMsg ();
Str_BuildStringLong (Enabled ? Txt_FORUM_Post_X_allowed_Click_to_ban_it :
Txt_FORUM_Post_X_banned_Click_to_unban_it,
(long) PstNum));
Str_FreeString ();
Frm_EndForm ();
}
else
{
Ico_PutIcon (Enabled ? "eye.svg" :
"eye-slash.svg",
Str_BuildMsgLong (Enabled ? Txt_FORUM_Post_X_allowed :
Txt_FORUM_Post_X_banned,
(long) PstNum),
Str_BuildStringLong (Enabled ? Txt_FORUM_Post_X_allowed :
Txt_FORUM_Post_X_banned,
(long) PstNum),
"ICO_HIDDEN ICO16x16");
Str_FreeMsg ();
Str_FreeString ();
}
/***** 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,
"arrow-up.svg",
Str_BuildMsgStr (Txt_Move_up_X,
StrQstInd));
Str_FreeMsg ();
Str_BuildStringStr (Txt_Move_up_X,
StrQstInd));
Str_FreeString ();
}
else
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,
"arrow-down.svg",
Str_BuildMsgStr (Txt_Move_down_X,
StrQstInd));
Str_FreeMsg ();
Str_BuildStringStr (Txt_Move_down_X,
StrQstInd));
Str_FreeString ();
}
else
Ico_PutIconOff ("arrow-down.svg",Txt_Movement_not_allowed);

View File

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

View File

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

View File

@ -788,10 +788,10 @@ char *Hie_BuildGoToMsg (const char *Where)
{
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)
{
Str_FreeMsg ();
Str_FreeString ();
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -176,9 +176,9 @@ void McR_ShowMyMchResultsInGam (void)
false); // Do not put form to start new match
/***** 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
Str_FreeMsg ();
Str_FreeString ();
McR_ListMyMchResultsInGam (Game.GamCod);
McR_ShowResultsEnd ();
@ -220,9 +220,9 @@ void McR_ShowMyMchResultsInMch (void)
false); // Do not put form to start new 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
Str_FreeMsg ();
Str_FreeString ();
McR_ListMyMchResultsInMch (Match.MchCod);
McR_ShowResultsEnd ();
@ -320,9 +320,9 @@ void McR_ShowAllMchResultsInGam (void)
false); // Do not put form to start new match
/***** 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
Str_FreeMsg ();
Str_FreeString ();
McR_ListAllMchResultsInGam (Game.GamCod);
McR_ShowResultsEnd ();
@ -405,9 +405,9 @@ void McR_ShowAllMchResultsInMch (void)
false); // Do not put form to start new 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
Str_FreeMsg ();
Str_FreeString ();
McR_ListAllMchResultsInMch (Match.MchCod);
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 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 *Img;
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];
bool WrongType = false;
@ -784,11 +783,11 @@ static bool Pho_ReceivePhotoAndDetectFaces (bool ItsMe,const struct UsrData *Usr
Cfg_PATH_PHOTO_TMP_PUBLIC,
Gbl.UniqueNameEncrypted);
HTM_DIV_Begin ("class=\"TIT CM\"");
if (asprintf (&Img,"%s_map.jpg",Gbl.UniqueNameEncrypted) < 0)
Lay_NotEnoughMemoryExit ();
HTM_IMG (Cfg_URL_PHOTO_TMP_PUBLIC,Img,Txt_Faces_detected,
HTM_IMG (Cfg_URL_PHOTO_TMP_PUBLIC,
Str_BuildStringStr ("%s_map.jpg",Gbl.UniqueNameEncrypted),
Txt_Faces_detected,
"usemap=\"#faces_map\"");
free (Img);
Str_FreeString ();
HTM_DIV_End ();
/***** End alert *****/

View File

@ -28,10 +28,8 @@ TODO: Check if web service is called from an authorized IP.
/********************************* Headers ***********************************/
/*****************************************************************************/
#define _GNU_SOURCE // For asprintf
#include <stdbool.h> // For boolean type
#include <stddef.h> // For NULL
#include <stdio.h> // For fprintf, asprintf
#include <stdlib.h> // For calloc, free
#include <string.h>
@ -98,7 +96,6 @@ void Plg_ListPlugins (void)
unsigned NumPlg;
struct Plugin *Plg;
char URL[Cns_MAX_BYTES_WWW + Cns_BYTES_SESSION_ID + 1];
char *Icon;
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_A_Begin ("href=\"%s\" title=\"%s\" class=\"DAT\" target=\"_blank\"",
URL,Plg->Name);
if (asprintf (&Icon,"%s24x24.gif",
Gbl.Plugins.Lst[NumPlg].Logo) < 0)
Lay_NotEnoughMemoryExit ();
HTM_IMG (Cfg_URL_ICON_PLUGINS_PUBLIC,Icon,Plg->Name,
HTM_IMG (Cfg_URL_ICON_PLUGINS_PUBLIC,
Str_BuildStringStr ("%s24x24.gif",Gbl.Plugins.Lst[NumPlg].Logo),
Plg->Name,
"class=\"ICO40x40\"");
free (Icon);
Str_FreeString ();
HTM_A_End ();
HTM_TD_End ();
@ -383,7 +379,6 @@ static void Plg_ListPluginsForEdition (void)
{
unsigned NumPlg;
struct Plugin *Plg;
char *Icon;
/***** Write heading *****/
HTM_TABLE_BeginWidePadding (2);
@ -414,12 +409,11 @@ static void Plg_ListPluginsForEdition (void)
/* Plugin logo */
// TODO: Change plugin icons to 32x32
HTM_TD_Begin ("class=\"CM\" style=\"width:45px;\"");
if (asprintf (&Icon,"%s24x24.gif",
Gbl.Plugins.Lst[NumPlg].Logo) < 0)
Lay_NotEnoughMemoryExit ();
HTM_IMG (Cfg_URL_ICON_PLUGINS_PUBLIC,Icon,Gbl.Plugins.Lst[NumPlg].Name,
HTM_IMG (Cfg_URL_ICON_PLUGINS_PUBLIC,
Str_BuildStringStr ("%s24x24.gif",Gbl.Plugins.Lst[NumPlg].Logo),
Gbl.Plugins.Lst[NumPlg].Name,
"class=\"ICO40x40\"");
free (Icon);
Str_FreeString ();
HTM_TD_End ();
/* 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
Ico_PutContextualIconToAdd (ActionReqAddUsr[RoleInProject],NULL,
Prj_PutCurrentParams,
Str_BuildMsgStr (Txt_Add_USERS,
Txt_PROJECT_ROLES_PLURAL_abc[RoleInProject]));
Str_FreeMsg ();
Str_BuildStringStr (Txt_Add_USERS,
Txt_PROJECT_ROLES_PLURAL_abc[RoleInProject]));
Str_FreeString ();
HTM_TD_End ();
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]);
Gbl.Prjs.PrjCod = Prj.PrjCod;
Prj_PutCurrentParams ();
Btn_PutRemoveButton (Str_BuildMsgStr (Txt_Remove_USER_from_this_project,
Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject][Gbl.Usrs.Other.UsrDat.Sex]));
Str_FreeMsg ();
Btn_PutRemoveButton (Str_BuildStringStr (Txt_Remove_USER_from_this_project,
Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject][Gbl.Usrs.Other.UsrDat.Sex]));
Str_FreeString ();
Frm_EndForm ();
/* End alert */

View File

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

View File

@ -158,10 +158,10 @@ void Rep_ReqMyUsageReport (void)
Frm_StartForm (ActSeeMyUsgRep);
/***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildMsgStr (Txt_Report_of_use_of_PLATFORM,
Cfg_PLATFORM_SHORT_NAME),NULL,
Box_BoxBegin (NULL,Str_BuildStringStr (Txt_Report_of_use_of_PLATFORM,
Cfg_PLATFORM_SHORT_NAME),NULL,
Hlp_ANALYTICS_Report,Box_NOT_CLOSABLE);
Str_FreeMsg ();
Str_FreeString ();
/***** Header *****/
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;
/***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildMsgStr (Txt_Report_of_use_of_PLATFORM,
Cfg_PLATFORM_SHORT_NAME),NULL,
Box_BoxBegin (NULL,Str_BuildStringStr (Txt_Report_of_use_of_PLATFORM,
Cfg_PLATFORM_SHORT_NAME),NULL,
Hlp_ANALYTICS_Report,Box_NOT_CLOSABLE);
Str_FreeMsg ();
Str_FreeString ();
/***** Header *****/
Rep_TitleReport (&Report->CurrentTimeUTC);
@ -993,13 +993,13 @@ static void Rep_GetAndWriteMyCurrentCrss (Rol_Role_t Role,
long CrsCod;
NumCrss = Usr_GetNumCrssOfUsrWithARole (Gbl.Usrs.Me.UsrDat.UsrCod,Role);
fprintf (Gbl.F.Rep,"<li>%s %u %s",
Str_BuildMsgStr (Txt_USER_in_COURSE,
Txt_ROLES_SINGUL_Abc[Role][Gbl.Usrs.Me.UsrDat.Sex]),
fprintf (Gbl.F.Rep,"<li>");
fprintf (Gbl.F.Rep,Txt_USER_in_COURSE,
Txt_ROLES_SINGUL_Abc[Role][Gbl.Usrs.Me.UsrDat.Sex]);
fprintf (Gbl.F.Rep," %u %s",
NumCrss,
NumCrss == 1 ? Txt_course :
Txt_courses);
Str_FreeMsg ();
if (NumCrss)
{

View File

@ -230,10 +230,10 @@ void Sta_AskShowCrsHits (void)
Gbl.Usrs.LstUsrs[Rol_TCH].NumUsrs;
/***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildMsgStr (Txt_Statistics_of_visits_to_the_course_X,
Gbl.Hierarchy.Crs.ShrtName),NULL,
Box_BoxBegin (NULL,Str_BuildStringStr (Txt_Statistics_of_visits_to_the_course_X,
Gbl.Hierarchy.Crs.ShrtName),NULL,
Hlp_ANALYTICS_Visits_visits_to_course,Box_NOT_CLOSABLE);
Str_FreeMsg ();
Str_FreeString ();
/***** Show form to select the 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\"");
if (FirstRow > 1)
{
HTM_BUTTON_SUBMIT_Begin (Str_BuildMsgLong (Txt_Show_previous_X_clicks,
(long) Gbl.Stat.RowsPerPage),
HTM_BUTTON_SUBMIT_Begin (Str_BuildStringLong (Txt_Show_previous_X_clicks,
(long) Gbl.Stat.RowsPerPage),
"BT_LINK TIT_TBL",NULL);
Str_FreeMsg ();
Str_FreeString ();
HTM_STRONG_Begin ();
HTM_TxtF ("&lt;%s",Txt_PAGES_Previous);
HTM_STRONG_End ();
@ -1532,10 +1532,10 @@ static void Sta_ShowDetailedAccessesList (unsigned long NumRows,MYSQL_RES *mysql
HTM_TD_Begin ("class=\"RM\"");
if (LastRow < NumRows)
{
HTM_BUTTON_SUBMIT_Begin (Str_BuildMsgLong (Txt_Show_next_X_clicks,
(long) Gbl.Stat.RowsPerPage),
HTM_BUTTON_SUBMIT_Begin (Str_BuildStringLong (Txt_Show_next_X_clicks,
(long) Gbl.Stat.RowsPerPage),
"BT_LINK TIT_TBL",NULL);
Str_FreeMsg ();
Str_FreeString ();
HTM_STRONG_Begin ();
HTM_TxtF ("%s&gt;",Txt_PAGES_Next);
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
char *Str_BuildMsgStr (const char *fmt,const char *Str)
char *Str_BuildStringStr (const char *fmt,const char *Str)
{
Str_FreeMsg ();
if (asprintf (&Str_Msg,fmt,Str) < 0)
Str_FreeString ();
if (asprintf (&Str_String,fmt,Str) < 0)
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
char *Str_BuildMsgLong (const char *fmt,long Num)
char *Str_BuildStringLong (const char *fmt,long Num)
{
Str_FreeMsg ();
if (asprintf (&Str_Msg,fmt,Num) < 0)
Str_FreeString ();
if (asprintf (&Str_String,fmt,Num) < 0)
Lay_NotEnoughMemoryExit ();
return Str_Msg;
return Str_String;
}
// 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 ();
if (asprintf (&Str_Msg,"%ld %s",Num,Str) < 0)
Str_FreeString ();
if (asprintf (&Str_String,"%ld %s",Num,Str) < 0)
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);
Str_Msg = NULL;
free (Str_String);
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_Concat (char *Dst,const char *Src,size_t DstSize);
char *Str_BuildMsgStr (const char *fmt,const char *Str);
char *Str_BuildMsgLong (const char *fmt,long Num);
char *Str_BuildMsgLongStr (long Num,const char *Str);
void Str_FreeMsg (void);
char *Str_BuildStringStr (const char *fmt,const char *Str);
char *Str_BuildStringLong (const char *fmt,long Num);
char *Str_BuildStringLongStr (long Num,const char *Str);
void Str_FreeString (void);
#endif

View File

@ -624,10 +624,10 @@ static void Syl_ShowRowSyllabus (unsigned NumItem,
ActUp_IteSylPra,
NULL,Syl_PutParamNumItem,
"arrow-up.svg",
Str_BuildMsgStr (LstItemsSyllabus.Lst[NumItem].HasChildren ? Txt_Move_up_X_and_its_subsections :
Txt_Move_up_X,
StrItemCod));
Str_FreeMsg ();
Str_BuildStringStr (LstItemsSyllabus.Lst[NumItem].HasChildren ? Txt_Move_up_X_and_its_subsections :
Txt_Move_up_X,
StrItemCod));
Str_FreeString ();
}
else
Ico_PutIconOff ("arrow-up.svg",Txt_Movement_not_allowed);
@ -642,10 +642,10 @@ static void Syl_ShowRowSyllabus (unsigned NumItem,
ActDwnIteSylPra,
NULL,Syl_PutParamNumItem,
"arrow-down.svg",
Str_BuildMsgStr (LstItemsSyllabus.Lst[NumItem].HasChildren ? Txt_Move_down_X_and_its_subsections :
Txt_Move_down_X,
StrItemCod));
Str_FreeMsg ();
Str_BuildStringStr (LstItemsSyllabus.Lst[NumItem].HasChildren ? Txt_Move_down_X_and_its_subsections :
Txt_Move_down_X,
StrItemCod));
Str_FreeString ();
}
else
Ico_PutIconOff ("arrow-down.svg",Txt_Movement_not_allowed);
@ -659,9 +659,9 @@ static void Syl_ShowRowSyllabus (unsigned NumItem,
ActRgtIteSylPra,
NULL,Syl_PutParamNumItem,
"arrow-left.svg",
Str_BuildMsgStr (Txt_Increase_level_of_X,
StrItemCod));
Str_FreeMsg ();
Str_BuildStringStr (Txt_Increase_level_of_X,
StrItemCod));
Str_FreeString ();
}
else
Ico_PutIconOff ("arrow-left.svg",Txt_Movement_not_allowed);
@ -676,9 +676,9 @@ static void Syl_ShowRowSyllabus (unsigned NumItem,
ActLftIteSylPra,
NULL,Syl_PutParamNumItem,
"arrow-right.svg",
Str_BuildMsgStr (Txt_Decrease_level_of_X,
StrItemCod));
Str_FreeMsg ();
Str_BuildStringStr (Txt_Decrease_level_of_X,
StrItemCod));
Str_FreeString ();
}
else
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);
Par_PutHiddenParamLong (NULL,"TagCod",TagCod);
Ico_PutIconLink ("eye-slash.svg",
Str_BuildMsgStr (Txt_Tag_X_not_allowed_Click_to_allow_it,
TagTxt));
Str_FreeMsg ();
Str_BuildStringStr (Txt_Tag_X_not_allowed_Click_to_allow_it,
TagTxt));
Str_FreeString ();
Frm_EndForm ();
HTM_TD_End ();
}
@ -1860,9 +1860,9 @@ static void Tst_PutIconDisable (long TagCod,const char *TagTxt)
Frm_StartForm (ActDisableTag);
Par_PutHiddenParamLong (NULL,"TagCod",TagCod);
Ico_PutIconLink ("eye.svg",
Str_BuildMsgStr (Txt_Tag_X_allowed_Click_to_disable_it,
TagTxt));
Str_FreeMsg ();
Str_BuildStringStr (Txt_Tag_X_allowed_Click_to_disable_it,
TagTxt));
Str_FreeString ();
Frm_EndForm ();
HTM_TD_End ();
}
@ -5089,10 +5089,10 @@ static void Tst_PutFormEditOneQst (char Stem[Cns_MAX_BYTES_TEXT + 1],
/***** Begin box *****/
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,
Hlp_ASSESSMENT_Tests_writing_a_question,Box_NOT_CLOSABLE);
Str_FreeMsg ();
Str_FreeString ();
}
else
Box_BoxBegin (NULL,Txt_New_question,NULL,

View File

@ -507,10 +507,10 @@ static void TL_ShowTimelineUsrHighlightingNot (long NotCod)
TL_GET_RECENT_TIMELINE);
/***** Show timeline *****/
TL_ShowTimeline (Query,Str_BuildMsgStr (Txt_Timeline_OF_A_USER,
Gbl.Usrs.Other.UsrDat.FirstName),
TL_ShowTimeline (Query,Str_BuildStringStr (Txt_Timeline_OF_A_USER,
Gbl.Usrs.Other.UsrDat.FirstName),
NotCod);
Str_FreeMsg ();
Str_FreeString ();
/***** Drop temporary tables *****/
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 *Txt_TIMELINE_NOTE[TL_NUM_NOTE_TYPES];
extern const char *Txt_not_available;
char *Class;
char *Anchor = NULL;
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 *****/
if (asprintf (&Class,"BT_LINK %s ICO_HIGHLIGHT",
The_ClassFormInBoxBold[Gbl.Prefs.Theme]) < 0)
Lay_NotEnoughMemoryExit ();
HTM_BUTTON_SUBMIT_Begin (Txt_TIMELINE_NOTE[SocNot->NoteType],Class,NULL);
HTM_BUTTON_SUBMIT_Begin (Txt_TIMELINE_NOTE[SocNot->NoteType],
Str_BuildStringStr ("BT_LINK %s ICO_HIGHLIGHT",
The_ClassFormInBoxBold[Gbl.Prefs.Theme]),
NULL);
Ico_PutIcon (TL_Icons[SocNot->NoteType],Txt_TIMELINE_NOTE[SocNot->NoteType],"CONTEXT_ICO_x16");
HTM_TxtF ("&nbsp;%s",Txt_TIMELINE_NOTE[SocNot->NoteType]);
HTM_BUTTON_End ();
free (Class);
Str_FreeString ();
/***** End form *****/
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 */
HTM_BUTTON_SUBMIT_Begin (NULL,The_ClassFormLinkInBox[Gbl.Prefs.Theme],NULL);
Ico_PutIconTextLink ("angle-up.svg",
Str_BuildMsgLong (Txt_See_the_previous_X_COMMENTS,
(long) NumInitialComments));
Str_FreeMsg ();
Str_BuildStringLong (Txt_See_the_previous_X_COMMENTS,
(long) NumInitialComments));
Str_FreeString ();
HTM_BUTTON_End ();
/* End form */
@ -2931,9 +2930,9 @@ static void TL_LinkToShowPreviousComments (const char IdComments[Frm_MAX_BYTES_I
" style=\"display:none;\"", // Hidden
IdComments);
TL_PutIconToToggleComments (IdComments,"angle-up.svg",
Str_BuildMsgLong (Txt_See_the_previous_X_COMMENTS,
(long) NumInitialComments));
Str_FreeMsg ();
Str_BuildStringLong (Txt_See_the_previous_X_COMMENTS,
(long) NumInitialComments));
Str_FreeString ();
HTM_DIV_End ();
}
@ -3123,9 +3122,9 @@ static void TL_PutDisabledIconShare (unsigned NumShared)
if (NumShared)
{
Ico_PutDivIcon ("TL_ICO_DISABLED",TL_ICON_SHARE,
Str_BuildMsgLong (Txt_TIMELINE_NOTE_Shared_by_X_USERS,
(long) NumShared));
Str_FreeMsg ();
Str_BuildStringLong (Txt_TIMELINE_NOTE_Shared_by_X_USERS,
(long) NumShared));
Str_FreeString ();
}
else
Ico_PutDivIcon ("TL_ICO_DISABLED",TL_ICON_SHARE,
@ -3145,9 +3144,9 @@ static void TL_PutDisabledIconFav (unsigned NumFavs)
if (NumFavs)
{
Ico_PutDivIcon ("TL_ICO_DISABLED",TL_ICON_FAV,
Str_BuildMsgLong (Txt_TIMELINE_NOTE_Favourited_by_X_USERS,
(long) NumFavs));
Str_FreeMsg ();
Str_BuildStringLong (Txt_TIMELINE_NOTE_Favourited_by_X_USERS,
(long) NumFavs));
Str_FreeString ();
}
else
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 *Txt_Role;
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
char *ClassLink;
bool ShowPhoto;
char PhotoURL[PATH_MAX + 1];
unsigned NumAvailableRoles = Rol_GetNumAvailableRoles ();
@ -2828,17 +2827,16 @@ void Usr_WriteLoggedUsrHead (void)
/***** User's role *****/
if (NumAvailableRoles == 1)
{
if (asprintf (&ClassLink,"BT_LINK %s",The_ClassUsr[Gbl.Prefs.Theme]) < 0)
Lay_NotEnoughMemoryExit ();
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_BUTTON_End ();
Frm_EndForm ();
free (ClassLink);
HTM_Colon ();
}
else
@ -7390,13 +7388,13 @@ unsigned Usr_ListUsrsFound (Rol_Role_t Role,
/***** Begin box and table *****/
/* Number of users found */
Sex = Usr_GetSexOfUsrsLst (Role);
Box_BoxTableBegin (NULL,Str_BuildMsgLongStr ((long) NumUsrs,
(Role == Rol_UNK) ? ((NumUsrs == 1) ? Txt_user[Sex] :
Txt_users[Sex]) :
((NumUsrs == 1) ? Txt_ROLES_SINGUL_abc[Role][Sex] :
Txt_ROLES_PLURAL_abc[Role][Sex])),
Box_BoxTableBegin (NULL,Str_BuildStringLongStr ((long) NumUsrs,
(Role == Rol_UNK) ? ((NumUsrs == 1) ? Txt_user[Sex] :
Txt_users[Sex]) :
((NumUsrs == 1) ? Txt_ROLES_SINGUL_abc[Role][Sex] :
Txt_ROLES_PLURAL_abc[Role][Sex])),
NULL,NULL,Box_NOT_CLOSABLE,2);
Str_FreeMsg ();
Str_FreeString ();
/***** Heading row with column names *****/
Gbl.Usrs.Listing.WithPhotos = true;