Version19.108.5

This commit is contained in:
Antonio Cañas Vargas 2019-12-30 18:49:52 +01:00
parent 78b1aca65a
commit 359dd28b28
31 changed files with 282 additions and 277 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_BuildStrMsg (UsrDat->IDs.List[NumID].Confirmed ? Txt_ID_X_confirmed :
Str_BuildMsgStr (UsrDat->IDs.List[NumID].Confirmed ? Txt_ID_X_confirmed :
Txt_ID_X_not_confirmed,
UsrDat->IDs.List[NumID].ID));
Str_FreeStrMsg ();
Str_FreeMsg ();
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_BuildStrMsg (Txt_New_on_PLATFORM_Sign_up,
Box_BoxBegin (NULL,Str_BuildMsgStr (Txt_New_on_PLATFORM_Sign_up,
Cfg_PLATFORM_SHORT_NAME),NULL,
Hlp_PROFILE_SignUp,Box_NOT_CLOSABLE);
Str_FreeStrMsg ();
Str_FreeMsg ();
/***** 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_BuildStrMsg (Txt_Public_agenda_USER,
Box_BoxBegin ("100%",Str_BuildMsgStr (Txt_Public_agenda_USER,
Gbl.Usrs.Other.UsrDat.FullName),
ItsMe ? Agd_PutIconsMyPublicAgenda :
Agd_PutIconsOtherPublicAgenda,
Hlp_PROFILE_Agenda_public_agenda,Box_NOT_CLOSABLE);
Str_FreeStrMsg ();
Str_FreeMsg ();
/***** 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_BuildStrMsg (Txt_Public_agenda_USER,
Box_BoxBegin ("100%",Str_BuildMsgStr (Txt_Public_agenda_USER,
Gbl.Usrs.Other.UsrDat.FullName),
ItsMe ? Agd_PutIconToViewEditMyFullAgenda :
Agd_PutIconsOtherPublicAgenda,
Hlp_PROFILE_Agenda_public_agenda,Box_NOT_CLOSABLE);
Str_FreeStrMsg ();
Str_FreeMsg ();
/***** 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_BuildStrMsg (Txt_Where_s_USER,
Box_BoxBegin (NULL,Str_BuildMsgStr (Txt_Where_s_USER,
Gbl.Usrs.Me.UsrDat.FullName),NULL,
NULL,Box_NOT_CLOSABLE);
Str_FreeStrMsg ();
Str_FreeMsg ();
/***** Print QR code ****/
QR_PrintQRCode ();

View File

@ -106,7 +106,7 @@ static void Cal_PutIconsFirstDayOfWeek (void)
void Cal_ShowFormToSelFirstDayOfWeek (Act_Action_t Action,void (*FuncParams) (void))
{
extern const char *Txt_First_day_of_the_week;
extern const char *Txt_First_day_of_the_week_X;
extern const char *Txt_DAYS_SMALL[7];
unsigned FirstDayOfWeek;
char Icon[32 + 1];
@ -124,13 +124,13 @@ void Cal_ShowFormToSelFirstDayOfWeek (Act_Action_t Action,void (*FuncParams) (vo
Par_PutHiddenParamUnsigned (NULL,"FirstDayOfWeek",FirstDayOfWeek);
if (FuncParams) // Extra parameters depending on the action
FuncParams ();
snprintf (Gbl.Title,sizeof (Gbl.Title),
"%s: %s",
Txt_First_day_of_the_week,Txt_DAYS_SMALL[FirstDayOfWeek]);
snprintf (Icon,sizeof (Icon),
"first-day-of-week-%u.png",
FirstDayOfWeek);
Ico_PutSettingIconLink (Icon,Gbl.Title);
Ico_PutSettingIconLink (Icon,
Str_BuildMsgStr (Txt_First_day_of_the_week_X,
Txt_DAYS_SMALL[FirstDayOfWeek]));
Str_FreeMsg ();
Frm_EndForm ();
HTM_DIV_End ();
}

View File

@ -264,11 +264,11 @@ static void Ctr_ListCentres (void)
unsigned NumCtr;
/***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildStrMsg (Txt_Centres_of_INSTITUTION_X,
Box_BoxBegin (NULL,Str_BuildMsgStr (Txt_Centres_of_INSTITUTION_X,
Gbl.Hierarchy.Ins.FullName),
Ctr_PutIconsListingCentres,
Hlp_INSTITUTION_Centres,Box_NOT_CLOSABLE);
Str_FreeStrMsg ();
Str_FreeMsg ();
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_BuildStrMsg (Txt_Centres_of_INSTITUTION_X,
Box_BoxBegin (NULL,Str_BuildMsgStr (Txt_Centres_of_INSTITUTION_X,
Gbl.Hierarchy.Ins.FullName),
Ctr_PutIconsEditingCentres,
Hlp_INSTITUTION_Centres,Box_NOT_CLOSABLE);
Str_FreeStrMsg ();
Str_FreeMsg ();
/***** Put a form to create a new centre *****/
Ctr_PutFormToCreateCentre ();

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_BuildStrMsg (Txt_Degrees_of_CENTRE_X,
HTM_BUTTON_SUBMIT_Begin (Str_BuildMsgStr (Txt_Degrees_of_CENTRE_X,
Gbl.Hierarchy.Ctr.ShrtName),
"BT_LINK DAT",NULL);
Str_FreeStrMsg ();
Str_FreeMsg ();
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.4 (2019-12-30)"
#define Log_PLATFORM_VERSION "SWAD 19.108.5 (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.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.3: Dec 30, 2019 Code refactoring related to printing messages. (249725 lines)
Version 19.108.2: Dec 30, 2019 Code refactoring related to printing messages. (249739 lines)

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_BuildStrMsg (Txt_Institutions_of_COUNTRY_X,
HTM_BUTTON_SUBMIT_Begin (Str_BuildMsgStr (Txt_Institutions_of_COUNTRY_X,
Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]),
"BT_LINK DAT",NULL);
Str_FreeStrMsg ();
Str_FreeMsg ();
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_BuildStrMsg (Txt_Courses_of_DEGREE_X,
Box_BoxBegin (NULL,Str_BuildMsgStr (Txt_Courses_of_DEGREE_X,
Gbl.Hierarchy.Deg.ShrtName),
Crs_PutIconsListCourses,
Hlp_DEGREE_Courses,Box_NOT_CLOSABLE);
Str_FreeStrMsg ();
Str_FreeMsg ();
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_BuildStrMsg (Txt_Courses_of_DEGREE_X,
Box_BoxBegin (NULL,Str_BuildMsgStr (Txt_Courses_of_DEGREE_X,
Gbl.Hierarchy.Deg.ShrtName),
Crs_PutIconsEditingCourses,
Hlp_DEGREE_Courses,Box_NOT_CLOSABLE);
Str_FreeStrMsg ();
Str_FreeMsg ();
/***** 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_BuildStrMsg (Txt_Register_me_in_X,
Btn_PutCreateButton (Str_BuildMsgStr (Txt_Register_me_in_X,
Crs_EditingCrs->ShrtName));
Str_FreeStrMsg ();
Str_FreeMsg ();
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_BuildStrMsg (Txt_USER_in_COURSE,
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_FreeStrMsg ();
Str_FreeMsg ();
HTM_TH_End ();
HTM_TR_End ();

View File

@ -763,11 +763,11 @@ static void Deg_ListDegrees (void)
unsigned NumDeg;
/***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildStrMsg (Txt_Degrees_of_CENTRE_X,
Box_BoxBegin (NULL,Str_BuildMsgStr (Txt_Degrees_of_CENTRE_X,
Gbl.Hierarchy.Ctr.ShrtName),
Deg_PutIconsListingDegrees,
Hlp_CENTRE_Degrees,Box_NOT_CLOSABLE);
Str_FreeStrMsg ();
Str_FreeMsg ();
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_BuildStrMsg (Txt_Degrees_of_CENTRE_X,
Box_BoxBegin (NULL,Str_BuildMsgStr (Txt_Degrees_of_CENTRE_X,
Gbl.Hierarchy.Ctr.ShrtName),
Deg_PutIconsEditingDegrees,
Hlp_CENTRE_Degrees,Box_NOT_CLOSABLE);
Str_FreeStrMsg ();
Str_FreeMsg ();
if (Gbl.DegTypes.Num)
{

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_BuildStrMsg (Txt_Courses_of_DEGREE_X,
HTM_BUTTON_SUBMIT_Begin (Str_BuildMsgStr (Txt_Courses_of_DEGREE_X,
Gbl.Hierarchy.Deg.ShrtName),
"BT_LINK DAT",NULL);
Str_FreeStrMsg ();
Str_FreeMsg ();
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_BuildStrMsg (Txt_Departments_of_INSTITUTION_X,
Box_BoxTableBegin (NULL,Str_BuildMsgStr (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_FreeStrMsg ();
Str_FreeMsg ();
/***** 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_BuildStrMsg (Txt_Departments_of_INSTITUTION_X,
Box_BoxBegin (NULL,Str_BuildMsgStr (Txt_Departments_of_INSTITUTION_X,
Gbl.Hierarchy.Ins.FullName),NULL,
Hlp_INSTITUTION_Departments_edit,Box_NOT_CLOSABLE);
Str_FreeStrMsg ();
Str_FreeMsg ();
/***** Put a form to create a new department *****/
Dpt_PutFormToCreateDepartment ();

View File

@ -4921,14 +4921,13 @@ static void Fig_GetAndShowNumUsrsPerFirstDayOfWeek (void)
extern const char *Hlp_ANALYTICS_Figures_calendar;
extern const char *Txt_FIGURE_TYPES[Fig_NUM_FIGURES];
extern const char *Txt_Calendar;
extern const char *Txt_First_day_of_the_week;
extern const char *Txt_First_day_of_the_week_X;
extern const char *Txt_DAYS_SMALL[7];
extern const char *Txt_No_of_users;
extern const char *Txt_PERCENT_of_users;
unsigned FirstDayOfWeek;
char *SubQuery;
char *Icon;
char *Title;
unsigned NumUsrs[7]; // 7: seven days in a week
unsigned NumUsrsTotal = 0;
@ -4974,11 +4973,11 @@ static void Fig_GetAndShowNumUsrsPerFirstDayOfWeek (void)
if (asprintf (&Icon,"first-day-of-week-%u.png",
FirstDayOfWeek) < 0)
Lay_NotEnoughMemoryExit ();
if (asprintf (&Title,"%s: %s",
Txt_First_day_of_the_week,Txt_DAYS_SMALL[FirstDayOfWeek]) < 0)
Lay_NotEnoughMemoryExit ();
Ico_PutIcon (Icon,Title,"ICO40x40");
free (Title);
Ico_PutIcon (Icon,
Str_BuildMsgStr (Txt_First_day_of_the_week_X,
Txt_DAYS_SMALL[FirstDayOfWeek]),
"ICO40x40");
Str_FreeMsg ();
free (Icon);
HTM_TD_End ();

View File

@ -1234,27 +1234,23 @@ static void For_ShowAForumPost (unsigned PstNum,long PstCod,
Gbl.Forum.ForumSelected.Location,
Gbl.Forum.ForumSelected.ThrCod,
PstCod);
snprintf (Gbl.Title,sizeof (Gbl.Title),
Enabled ? Txt_FORUM_Post_X_allowed_Click_to_ban_it :
Txt_FORUM_Post_X_banned_Click_to_unban_it,
PstNum);
Ico_PutIconLink (Enabled ? "eye.svg" :
"eye-slash.svg",
Gbl.Title);
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 ();
Frm_EndForm ();
}
else
{
snprintf (Gbl.Title,sizeof (Gbl.Title),
Enabled ? Txt_FORUM_Post_X_allowed :
Txt_FORUM_Post_X_banned,
PstNum);
HTM_SPAN_Begin ("title=\"%s\"",Gbl.Title); // TODO: Remove?
Ico_PutIcon (Enabled ? "eye.svg" :
"eye-slash.svg",
Gbl.Title,"ICO_HIDDEN ICO16x16");
HTM_SPAN_End (); // TODO: Remove?
Str_BuildMsgLong (Enabled ? Txt_FORUM_Post_X_allowed :
Txt_FORUM_Post_X_banned,
(long) PstNum),
"ICO_HIDDEN ICO16x16");
Str_FreeMsg ();
}
/***** 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_BuildStrMsg (Txt_Move_up_X,
Str_BuildMsgStr (Txt_Move_up_X,
StrQstInd));
Str_FreeStrMsg ();
Str_FreeMsg ();
}
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_BuildStrMsg (Txt_Move_down_X,
Str_BuildMsgStr (Txt_Move_down_X,
StrQstInd));
Str_FreeStrMsg ();
Str_FreeMsg ();
}
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_BuildStrMsg (Grp->Open ? Txt_Group_X_open_click_to_close_it :
Str_BuildMsgStr (Grp->Open ? Txt_Group_X_open_click_to_close_it :
Txt_Group_X_closed_click_to_open_it,
Grp->GrpName));
Str_FreeStrMsg ();
Str_FreeMsg ();
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_BuildStrMsg (Grp->FileZones ? Txt_File_zones_of_the_group_X_enabled_click_to_disable_them :
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_FreeStrMsg ();
Str_FreeMsg ();
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_BuildStrMsg (Grp->Open ? Txt_Group_X_open :
Str_BuildMsgStr (Grp->Open ? Txt_Group_X_open :
Txt_Group_X_closed,
Grp->GrpName));
Str_FreeStrMsg ();
Str_FreeMsg ();
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_BuildStrMsg (Txt_Remove_me_from_THE_COURSE_X,
Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildMsgStr (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_FreeStrMsg ();
Str_FreeMsg ();
}
}
else // I do not belong to this course
{
/* Request my registration in this course */
Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildStrMsg (Txt_Register_me_in_X,
Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildMsgStr (Txt_Register_me_in_X,
Gbl.Hierarchy.Crs.ShrtName),
ActReqSignUp,
Btn_CREATE_BUTTON,Txt_Sign_up);
Str_FreeStrMsg ();
Str_FreeMsg ();
}
}
@ -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_BuildStrMsg (Txt_Register_students_in_COURSE_X,
Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildMsgStr (Txt_Register_students_in_COURSE_X,
Gbl.Hierarchy.Crs.ShrtName),
ActReqEnrSevStd,
Btn_CREATE_BUTTON,Txt_Register_students);
Str_FreeStrMsg ();
Str_FreeMsg ();
}
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_BuildStrMsg (Gbl.Hierarchy.Level == Hie_CRS ? Txt_Select_create_course_in_X :
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),
ActSeeCrs,
Btn_CONFIRM_BUTTON,Txt_Courses);
Str_FreeStrMsg ();
Str_FreeMsg ();
}
else if (Gbl.Hierarchy.Ctr.CtrCod > 0) // Centre selected
{
/* Select a degree */
Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildStrMsg (Gbl.Hierarchy.Deg.DegCod > 0 ? Txt_Select_or_create_another_degree_in_X :
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),
ActSeeDeg,
Btn_CONFIRM_BUTTON,Txt_Degrees);
Str_FreeStrMsg ();
Str_FreeMsg ();
}
else if (Gbl.Hierarchy.Ins.InsCod > 0) // Institution selected
{
/* Select a centre */
Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildStrMsg (Gbl.Hierarchy.Ctr.CtrCod > 0 ? Txt_Select_or_create_another_centre_in_X :
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),
ActSeeCtr,
Btn_CONFIRM_BUTTON,Txt_Centres);
Str_FreeStrMsg ();
Str_FreeMsg ();
}
else if (Gbl.Hierarchy.Cty.CtyCod > 0) // Country selected
{
/* Select an institution */
Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildStrMsg (Gbl.Hierarchy.Ins.InsCod > 0 ? Txt_Select_or_create_another_institution_in_X :
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]),
ActSeeIns,
Btn_CONFIRM_BUTTON,Txt_Institutions);
Str_FreeStrMsg ();
Str_FreeMsg ();
}
else
/* Select a country */
@ -240,11 +240,11 @@ void Hlp_ShowHelpWhatWouldYouLikeToDo (void)
Btn_CONFIRM_BUTTON,Txt_Log_in);
/* Sign up */
Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildStrMsg (Txt_New_on_PLATFORM_Sign_up,
Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildMsgStr (Txt_New_on_PLATFORM_Sign_up,
Cfg_PLATFORM_SHORT_NAME),
ActFrmMyAcc,
Btn_CREATE_BUTTON,Txt_Create_account);
Str_FreeStrMsg ();
Str_FreeMsg ();
}
/***** 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_BuildStrMsg (Txt_Go_to_X,Where);
return Str_BuildMsgStr (Txt_Go_to_X,Where);
}
void Hie_FreeGoToMsg (void)
{
Str_FreeStrMsg ();
Str_FreeMsg ();
}

View File

@ -291,11 +291,11 @@ static void Ins_ListInstitutions (void)
unsigned NumIns;
/***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildStrMsg (Txt_Institutions_of_COUNTRY_X,
Box_BoxBegin (NULL,Str_BuildMsgStr (Txt_Institutions_of_COUNTRY_X,
Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]),
Ins_PutIconsListingInstitutions,
Hlp_COUNTRY_Institutions,Box_NOT_CLOSABLE);
Str_FreeStrMsg ();
Str_FreeMsg ();
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_BuildStrMsg (Txt_Institutions_of_COUNTRY_X,
Box_BoxBegin (NULL,Str_BuildMsgStr (Txt_Institutions_of_COUNTRY_X,
Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]),
Ins_PutIconsEditingInstitutions,
Hlp_COUNTRY_Institutions,Box_NOT_CLOSABLE);
Str_FreeStrMsg ();
Str_FreeMsg ();
/***** Put a form to create a new institution *****/
Ins_PutFormToCreateInstitution ();

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_BuildStrMsg (Txt_Centres_of_INSTITUTION_X,
HTM_BUTTON_SUBMIT_Begin (Str_BuildMsgStr (Txt_Centres_of_INSTITUTION_X,
Gbl.Hierarchy.Ins.ShrtName),
"BT_LINK DAT",NULL);
Str_FreeStrMsg ();
Str_FreeMsg ();
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_BuildStrMsg (Txt_Email_X_confirmed,row[0]),
Str_BuildMsgStr (Txt_Email_X_confirmed,row[0]),
"ICO16x16");
Str_FreeStrMsg ();
Str_FreeMsg ();
}
/* Form to change user's email */

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_BuildStrMsg (Txt_Results_of_game_X,Game.Title),
McR_ShowResultsBegin (Str_BuildMsgStr (Txt_Results_of_game_X,Game.Title),
false); // Do not list games to select
Str_FreeStrMsg ();
Str_FreeMsg ();
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_BuildStrMsg (Txt_Results_of_match_X,Match.Title),
McR_ShowResultsBegin (Str_BuildMsgStr (Txt_Results_of_match_X,Match.Title),
false); // Do not list games to select
Str_FreeStrMsg ();
Str_FreeMsg ();
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_BuildStrMsg (Txt_Results_of_game_X,Game.Title),
McR_ShowResultsBegin (Str_BuildMsgStr (Txt_Results_of_game_X,Game.Title),
false); // Do not list games to select
Str_FreeStrMsg ();
Str_FreeMsg ();
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_BuildStrMsg (Txt_Results_of_match_X,Match.Title),
McR_ShowResultsBegin (Str_BuildMsgStr (Txt_Results_of_match_X,Match.Title),
false); // Do not list games to select
Str_FreeStrMsg ();
Str_FreeMsg ();
McR_ListAllMchResultsInMch (Match.MchCod);
McR_ShowResultsEnd ();

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_BuildStrMsg (Txt_Add_USERS,
Str_BuildMsgStr (Txt_Add_USERS,
Txt_PROJECT_ROLES_PLURAL_abc[RoleInProject]));
Str_FreeStrMsg ();
Str_FreeMsg ();
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_BuildStrMsg (Txt_Remove_USER_from_this_project,
Btn_PutRemoveButton (Str_BuildMsgStr (Txt_Remove_USER_from_this_project,
Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject][Gbl.Usrs.Other.UsrDat.Sex]));
Str_FreeStrMsg ();
Str_FreeMsg ();
Frm_EndForm ();
/* End alert */

View File

@ -158,10 +158,10 @@ void Rep_ReqMyUsageReport (void)
Frm_StartForm (ActSeeMyUsgRep);
/***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildStrMsg (Txt_Report_of_use_of_PLATFORM,
Box_BoxBegin (NULL,Str_BuildMsgStr (Txt_Report_of_use_of_PLATFORM,
Cfg_PLATFORM_SHORT_NAME),NULL,
Hlp_ANALYTICS_Report,Box_NOT_CLOSABLE);
Str_FreeStrMsg ();
Str_FreeMsg ();
/***** 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_BuildStrMsg (Txt_Report_of_use_of_PLATFORM,
Box_BoxBegin (NULL,Str_BuildMsgStr (Txt_Report_of_use_of_PLATFORM,
Cfg_PLATFORM_SHORT_NAME),NULL,
Hlp_ANALYTICS_Report,Box_NOT_CLOSABLE);
Str_FreeStrMsg ();
Str_FreeMsg ();
/***** Header *****/
Rep_TitleReport (&Report->CurrentTimeUTC);
@ -994,12 +994,12 @@ static void Rep_GetAndWriteMyCurrentCrss (Rol_Role_t Role,
NumCrss = Usr_GetNumCrssOfUsrWithARole (Gbl.Usrs.Me.UsrDat.UsrCod,Role);
fprintf (Gbl.F.Rep,"<li>%s %u %s",
Str_BuildStrMsg (Txt_USER_in_COURSE,
Str_BuildMsgStr (Txt_USER_in_COURSE,
Txt_ROLES_SINGUL_Abc[Role][Gbl.Usrs.Me.UsrDat.Sex]),
NumCrss,
NumCrss == 1 ? Txt_course :
Txt_courses);
Str_FreeStrMsg ();
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_BuildStrMsg (Txt_Statistics_of_visits_to_the_course_X,
Box_BoxBegin (NULL,Str_BuildMsgStr (Txt_Statistics_of_visits_to_the_course_X,
Gbl.Hierarchy.Crs.ShrtName),NULL,
Hlp_ANALYTICS_Visits_visits_to_course,Box_NOT_CLOSABLE);
Str_FreeStrMsg ();
Str_FreeMsg ();
/***** 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)
{
snprintf (Gbl.Title,sizeof (Gbl.Title),
Txt_Show_previous_X_clicks,
Gbl.Stat.RowsPerPage);
HTM_BUTTON_SUBMIT_Begin (Gbl.Title,"BT_LINK TIT_TBL",NULL);
HTM_BUTTON_SUBMIT_Begin (Str_BuildMsgLong (Txt_Show_previous_X_clicks,
(long) Gbl.Stat.RowsPerPage),
"BT_LINK TIT_TBL",NULL);
Str_FreeMsg ();
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)
{
snprintf (Gbl.Title,sizeof (Gbl.Title),
Txt_Show_next_X_clicks,
Gbl.Stat.RowsPerPage);
HTM_BUTTON_SUBMIT_Begin (Gbl.Title,"BT_LINK TIT_TBL",NULL);
HTM_BUTTON_SUBMIT_Begin (Str_BuildMsgLong (Txt_Show_next_X_clicks,
(long) Gbl.Stat.RowsPerPage),
"BT_LINK TIT_TBL",NULL);
Str_FreeMsg ();
HTM_STRONG_Begin ();
HTM_TxtF ("%s&gt;",Txt_PAGES_Next);
HTM_STRONG_End ();

View File

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

View File

@ -136,7 +136,8 @@ 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_BuildStrMsg (const char *FormatMsg,const char *Str);
void Str_FreeStrMsg (void);
char *Str_BuildMsgStr (const char *fmt,const char *Str);
char *Str_BuildMsgLong (const char *fmt,long Num);
void Str_FreeMsg (void);
#endif

View File

@ -624,10 +624,10 @@ static void Syl_ShowRowSyllabus (unsigned NumItem,
ActUp_IteSylPra,
NULL,Syl_PutParamNumItem,
"arrow-up.svg",
Str_BuildStrMsg (LstItemsSyllabus.Lst[NumItem].HasChildren ? Txt_Move_up_X_and_its_subsections :
Str_BuildMsgStr (LstItemsSyllabus.Lst[NumItem].HasChildren ? Txt_Move_up_X_and_its_subsections :
Txt_Move_up_X,
StrItemCod));
Str_FreeStrMsg ();
Str_FreeMsg ();
}
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_BuildStrMsg (LstItemsSyllabus.Lst[NumItem].HasChildren ? Txt_Move_down_X_and_its_subsections :
Str_BuildMsgStr (LstItemsSyllabus.Lst[NumItem].HasChildren ? Txt_Move_down_X_and_its_subsections :
Txt_Move_down_X,
StrItemCod));
Str_FreeStrMsg ();
Str_FreeMsg ();
}
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_BuildStrMsg (Txt_Increase_level_of_X,
Str_BuildMsgStr (Txt_Increase_level_of_X,
StrItemCod));
Str_FreeStrMsg ();
Str_FreeMsg ();
}
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_BuildStrMsg (Txt_Decrease_level_of_X,
Str_BuildMsgStr (Txt_Decrease_level_of_X,
StrItemCod));
Str_FreeStrMsg ();
Str_FreeMsg ();
}
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_BuildStrMsg (Txt_Tag_X_not_allowed_Click_to_allow_it,
Str_BuildMsgStr (Txt_Tag_X_not_allowed_Click_to_allow_it,
TagTxt));
Str_FreeStrMsg ();
Str_FreeMsg ();
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_BuildStrMsg (Txt_Tag_X_allowed_Click_to_disable_it,
Str_BuildMsgStr (Txt_Tag_X_allowed_Click_to_disable_it,
TagTxt));
Str_FreeStrMsg ();
Str_FreeMsg ();
Frm_EndForm ();
HTM_TD_End ();
}
@ -5089,11 +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
{
snprintf (Gbl.Title,sizeof (Gbl.Title),
Txt_Question_code_X,
Gbl.Test.QstCod);
Box_BoxBegin (NULL,Gbl.Title,Tst_PutIconToRemoveOneQst,
Box_BoxBegin (NULL,Str_BuildMsgLong (Txt_Question_code_X,Gbl.Test.QstCod),
Tst_PutIconToRemoveOneQst,
Hlp_ASSESSMENT_Tests_writing_a_question,Box_NOT_CLOSABLE);
Str_FreeMsg ();
}
else
Box_BoxBegin (NULL,Txt_New_question,NULL,

View File

@ -12464,25 +12464,25 @@ const char *Txt_Filter = // As a noun
"Filtro";
#endif
const char *Txt_First_day_of_the_week =
const char *Txt_First_day_of_the_week_X = // Warning: it is very important to include %s in the following sentences
#if L==1 // ca
"Primer dia de la setmana";
"Primer dia de la setmana: %s";
#elif L==2 // de
"Erster Tag der Woche";
"Erster Tag der Woche: %s";
#elif L==3 // en
"First day of the week";
"First day of the week: %s";
#elif L==4 // es
"Primer d&iacute;a de la semana";
"Primer d&iacute;a de la semana: %s";
#elif L==5 // fr
"Premier jour de la semaine";
"Premier jour de la semaine: %s";
#elif L==6 // gn
"Primer d&iacute;a de la semana"; // Okoteve traducción
"Primer d&iacute;a de la semana: %s"; // Okoteve traducción
#elif L==7 // it
"Primo giorno della settimana";
"Primo giorno della settimana: %s";
#elif L==8 // pl
"Pierwszy dzie&nacute; tygodnia";
"Pierwszy dzie&nacute; tygodnia: %s";
#elif L==9 // pt
"Primeiro dia da semana";
"Primeiro dia da semana: %s";
#endif
const char *Txt_First_name =
@ -13053,46 +13053,46 @@ const char *Txt_FORUM_posts =
"posts";
#endif
const char *Txt_FORUM_Post_X_allowed = // Warning: it is very important to include %u in the following sentences
const char *Txt_FORUM_Post_X_allowed = // Warning: it is very important to include %ld in the following sentences
#if L==1 // ca
"Comentario %u permitido."; // Necessita traduccio
"Comentario %ld permitido."; // Necessita traduccio
#elif L==2 // de
"Post %u allowed."; // Need Übersetzung
"Post %ld allowed."; // Need Übersetzung
#elif L==3 // en
"Post %u allowed.";
"Post %ld allowed.";
#elif L==4 // es
"Comentario %u permitido.";
"Comentario %ld permitido.";
#elif L==5 // fr
"Post %u allowed."; // Besoin de traduction
"Post %ld allowed."; // Besoin de traduction
#elif L==6 // gn
"Comentario %u permitido."; // Okoteve traducción
"Comentario %ld permitido."; // Okoteve traducción
#elif L==7 // it
"Post %u autorizzato.";
"Post %ld autorizzato.";
#elif L==8 // pl
"Post %u dozwolone.";
"Post %ld dozwolone.";
#elif L==9 // pt
"Post %u permitido.";
"Post %ld permitido.";
#endif
const char *Txt_FORUM_Post_X_allowed_Click_to_ban_it = // Warning: it is very important to include %u in the following sentences
const char *Txt_FORUM_Post_X_allowed_Click_to_ban_it = // Warning: it is very important to include %ld in the following sentences
#if L==1 // ca
"Comentario %u permitido. Pulse para censurarlo."; // Necessita traduccio
"Comentario %ld permitido. Pulse para censurarlo."; // Necessita traduccio
#elif L==2 // de
"Post %u allowed. Click to ban it."; // Need Übersetzung
"Post %ld allowed. Click to ban it."; // Need Übersetzung
#elif L==3 // en
"Post %u allowed. Click to ban it.";
"Post %ld allowed. Click to ban it.";
#elif L==4 // es
"Comentario %u permitido. Pulse para censurarlo.";
"Comentario %ld permitido. Pulse para censurarlo.";
#elif L==5 // fr
"Post %u allowed. Click to ban it."; // Besoin de traduction
"Post %ld allowed. Click to ban it."; // Besoin de traduction
#elif L==6 // gn
"Comentario %u permitido. Pulse para censurarlo."; // Okoteve traducción
"Comentario %ld permitido. Pulse para censurarlo."; // Okoteve traducción
#elif L==7 // it
"Post %u autorizzato. Clicca per censurarlo.";
"Post %ld autorizzato. Clicca per censurarlo.";
#elif L==8 // pl
"Post% u dozwolone. Kliknij, aby to zakazac.";
"Post %ld dozwolone. Kliknij, aby to zakazac.";
#elif L==9 // pt
"Post %u permitido. Clique para censur&aacute;-lo.";
"Post %ld permitido. Clique para censur&aacute;-lo.";
#endif
const char *Txt_FORUM_Post_and_thread_removed =
@ -13137,46 +13137,46 @@ const char *Txt_FORUM_Post_banned =
"Post n&atilde;o permitido.";
#endif
const char *Txt_FORUM_Post_X_banned = // Warning: it is very important to include %u in the following sentences
const char *Txt_FORUM_Post_X_banned = // Warning: it is very important to include %ld in the following sentences
#if L==1 // ca
"Comentario %u no permitido"; // Necessita traduccio
"Comentario %ld no permitido"; // Necessita traduccio
#elif L==2 // de
"Post %u banned."; // Need Übersetzung
"Post %ld banned."; // Need Übersetzung
#elif L==3 // en
"Post %u banned.";
"Post %ld banned.";
#elif L==4 // es
"Comentario %u no permitido";
"Comentario %ld no permitido";
#elif L==5 // fr
"Post %u banned."; // Besoin de traduction
"Post %ld banned."; // Besoin de traduction
#elif L==6 // gn
"Comentario %u no permitido"; // Okoteve traducción
"Comentario %ld no permitido"; // Okoteve traducción
#elif L==7 // it
"Post %u censurato.";
"Post %ld censurato.";
#elif L==8 // pl
"Post %u zakazany.";
"Post %ld zakazany.";
#elif L==9 // pt
"Post %u n&atilde;o permitido.";
"Post %ld n&atilde;o permitido.";
#endif
const char *Txt_FORUM_Post_X_banned_Click_to_unban_it = // Warning: it is very important to include %u in the following sentences
const char *Txt_FORUM_Post_X_banned_Click_to_unban_it = // Warning: it is very important to include %ld in the following sentences
#if L==1 // ca
"Comentario %u no permitido. Pulse para permitirlo."; // Necessita traduccio
"Comentario %ld no permitido. Pulse para permitirlo."; // Necessita traduccio
#elif L==2 // de
"Post %u banned. Click to unban it."; // Need Übersetzung
"Post %ld banned. Click to unban it."; // Need Übersetzung
#elif L==3 // en
"Post %u banned. Click to unban it.";
"Post %ld banned. Click to unban it.";
#elif L==4 // es
"Comentario %u no permitido. Pulse para permitirlo.";
"Comentario %ld no permitido. Pulse para permitirlo.";
#elif L==5 // fr
"Post %u banned. Click to unban it."; // Besoin de traduction
"Post %ld banned. Click to unban it."; // Besoin de traduction
#elif L==6 // gn
"Comentario %u no permitido. Pulse para permitirlo."; // Okoteve traducción
"Comentario %ld no permitido. Pulse para permitirlo."; // Okoteve traducción
#elif L==7 // it
"Post %u censurato. Clicca per autorizzarlo.";
"Post %ld censurato. Clicca per autorizzarlo.";
#elif L==8 // pl
"Post %u zakazany.Kliknij, aby to odbanowac.";
"Post %ld zakazany.Kliknij, aby to odbanowac.";
#elif L==9 // pt
"Post %u n&atilde;o permitido. Clique para permiti-lo.";
"Post %ld n&atilde;o permitido. Clique para permiti-lo.";
#endif
const char *Txt_FORUM_Post_sent =
@ -31614,7 +31614,7 @@ const char *Txt_Question =
"Quest&atilde;o";
#endif
const char *Txt_Question_code_X = // Warning: it is very important to include %s in the following sentences
const char *Txt_Question_code_X = // Warning: it is very important to include %ld in the following sentences
#if L==1 // ca
"Pregunta amb codi %ld";
#elif L==2 // de
@ -38546,25 +38546,25 @@ const char *Txt_See_only_the_latest_COMMENTS =
"Ver apenas os &uacute;ltimos";
#endif
const char *Txt_See_the_previous_X_COMMENTS = // Warning: it is very important to include %u in the following sentences
const char *Txt_See_the_previous_X_COMMENTS = // Warning: it is very important to include %ld in the following sentences
#if L==1 // ca
"Veure els %u anteriors";
"Veure els %ld anteriors";
#elif L==2 // de
"Siehe die vorherigen %u";
"Siehe die vorherigen %ld";
#elif L==3 // en
"See the previous %u";
"See the previous %ld";
#elif L==4 // es
"Ver los %u anteriores";
"Ver los %ld anteriores";
#elif L==5 // fr
"Voir les %u pr&eacute;c&eacute;dents";
"Voir les %ld pr&eacute;c&eacute;dents";
#elif L==6 // gn
"Ver los %u anteriores"; // Okoteve traducción
"Ver los %ld anteriores"; // Okoteve traducción
#elif L==7 // it
"Vedi i precedente %u";
"Vedi i precedente %ld";
#elif L==8 // pl
"Zobacz poprzednie %u";
"Zobacz poprzednie %ld";
#elif L==9 // pt
"Ver os %u anteriores";
"Ver os %ld anteriores";
#endif
const char *Txt_Select_another_country =
@ -39878,25 +39878,25 @@ const char *Txt_Show_more_recipients =
"Ver mais destinat&aacute;rios";
#endif
const char *Txt_Show_next_X_clicks = // Warning: it is very important to include %lu in the following sentences
const char *Txt_Show_next_X_clicks = // Warning: it is very important to include %ld in the following sentences
#if L==1 // ca
"Mostrar %lu clics posteriores"; // Necessita traduccio
"Mostrar %ld clics posteriores"; // Necessita traduccio
#elif L==2 // de
"Show next %lu clicks"; // Need Übersetzung
"Show next %ld clicks"; // Need Übersetzung
#elif L==3 // en
"Show next %lu clicks";
"Show next %ld clicks";
#elif L==4 // es
"Mostrar %lu clics posteriores";
"Mostrar %ld clics posteriores";
#elif L==5 // fr
"Show next %lu clicks"; // Besoin de traduction
"Show next %ld clicks"; // Besoin de traduction
#elif L==6 // gn
"Mostrar %lu clics posteriores"; // Okoteve traducción
"Mostrar %ld clics posteriores"; // Okoteve traducción
#elif L==7 // it
"Mostra %lu scatti seguenti";
"Mostra %ld scatti seguenti";
#elif L==8 // pl
"Show next %lu clicks"; // Potrzebujesz tlumaczenie
"Show next %ld clicks"; // Potrzebujesz tlumaczenie
#elif L==9 // pt
"Mostrar %lu cliques subsequentes";
"Mostrar %ld cliques subsequentes";
#endif
const char *Txt_Show_office_hours =
@ -39920,25 +39920,25 @@ const char *Txt_Show_office_hours =
"Mostrar hor&aacute;rios tutor";
#endif
const char *Txt_Show_previous_X_clicks = // Warning: it is very important to include %u in the following sentences
const char *Txt_Show_previous_X_clicks = // Warning: it is very important to include %ld in the following sentences
#if L==1 // ca
"Mostrar %u clics anteriores"; // Necessita traduccio
"Mostrar %ld clics anteriores"; // Necessita traduccio
#elif L==2 // de
"Show previous %u clicks"; // Need Übersetzung
"Show previous %ld clicks"; // Need Übersetzung
#elif L==3 // en
"Show previous %u clicks";
"Show previous %ld clicks";
#elif L==4 // es
"Mostrar %u clics anteriores";
"Mostrar %ld clics anteriores";
#elif L==5 // fr
"Show previous %u clicks"; // Besoin de traduction
"Show previous %ld clicks"; // Besoin de traduction
#elif L==6 // gn
"Mostrar %u clics anteriores"; // Okoteve traducción
"Mostrar %ld clics anteriores"; // Okoteve traducción
#elif L==7 // it
"Mostra %u scatti precedenti";
"Mostra %ld scatti precedenti";
#elif L==8 // pl
"Show previous %u clicks"; // Potrzebujesz tlumaczenie
"Show previous %ld clicks"; // Potrzebujesz tlumaczenie
#elif L==9 // pt
"Mostrar %u cliques anteriores";
"Mostrar %ld cliques anteriores";
#endif
const char *Txt_Show_questions =
@ -50149,25 +50149,25 @@ const char *Txt_TIMELINE_NOTE_Favourite =
"Favorito";
#endif
const char *Txt_TIMELINE_NOTE_Favourited_by_X_USERS = // Warning: it is very important to include %u in the following sentences
const char *Txt_TIMELINE_NOTE_Favourited_by_X_USERS = // Warning: it is very important to include %ld in the following sentences
#if L==1 // ca
"Marcat com favorit per %u";
"Marcat com favorit per %ld";
#elif L==2 // de
"Von %u vorgemerkt";
"Von %ld vorgemerkt";
#elif L==3 // en
"Favourited by %u";
"Favourited by %ld";
#elif L==4 // es
"Marcado como favorito por %u";
"Marcado como favorito por %ld";
#elif L==5 // fr
"Ajout&eacute; aux favoris par %u";
"Ajout&eacute; aux favoris par %ld";
#elif L==6 // gn
"Marcado como favorito por %u"; // Okoteve traducción
"Marcado como favorito por %ld"; // Okoteve traducción
#elif L==7 // it
"Preferiti da %u";
"Preferiti da %ld";
#elif L==8 // pl
"Dodane do ulubionych przez %u";
"Dodane do ulubionych przez %ld";
#elif L==9 // pt
"Marcado como favorito por %u";
"Marcado como favorito por %ld";
#endif
const char *Txt_TIMELINE_NOTE_Shared =
@ -50191,25 +50191,25 @@ const char *Txt_TIMELINE_NOTE_Shared =
"Compartilhado";
#endif
const char *Txt_TIMELINE_NOTE_Shared_by_X_USERS = // Warning: it is very important to include %u in the following sentences
const char *Txt_TIMELINE_NOTE_Shared_by_X_USERS = // Warning: it is very important to include %ld in the following sentences
#if L==1 // ca
"Compartit per %u";
"Compartit per %ld";
#elif L==2 // de
"Von %u geteilt";
"Von %ld geteilt";
#elif L==3 // en
"Shared by %u";
"Shared by %ld";
#elif L==4 // es
"Compartido por %u";
"Compartido por %ld";
#elif L==5 // fr
"Partag&eacute; par %u";
"Partag&eacute; par %ld";
#elif L==6 // gn
"Compartido por %u"; // Okoteve traducción
"Compartido por %ld"; // Okoteve traducción
#elif L==7 // it
"Condiviso da %u";
"Condiviso da %ld";
#elif L==8 // pl
"Udost&eogon;pnione przez %u";
"Udost&eogon;pnione przez %ld";
#elif L==9 // pt
"Compartilhado por %u";
"Compartilhado por %ld";
#endif
const char *Txt_TIMELINE_NOTE_Not_favourited_by_anyone = // No longer shared

View File

@ -507,10 +507,10 @@ static void TL_ShowTimelineUsrHighlightingNot (long NotCod)
TL_GET_RECENT_TIMELINE);
/***** Show timeline *****/
TL_ShowTimeline (Query,Str_BuildStrMsg (Txt_Timeline_OF_A_USER,
TL_ShowTimeline (Query,Str_BuildMsgStr (Txt_Timeline_OF_A_USER,
Gbl.Usrs.Other.UsrDat.FirstName),
NotCod);
Str_FreeStrMsg ();
Str_FreeMsg ();
/***** Drop temporary tables *****/
TL_DropTemporaryTablesUsedToQueryTimeline ();
@ -2776,11 +2776,11 @@ static void TL_FormToShowHiddenComments (Act_Action_t ActionGbl,Act_Action_t Act
}
/* Put icon and text with link to show the first hidden comments */
snprintf (Gbl.Title,sizeof (Gbl.Title),
Txt_See_the_previous_X_COMMENTS,
NumInitialComments);
HTM_BUTTON_SUBMIT_Begin (NULL,The_ClassFormLinkInBox[Gbl.Prefs.Theme],NULL);
Ico_PutIconTextLink ("angle-up.svg",Gbl.Title);
Ico_PutIconTextLink ("angle-up.svg",
Str_BuildMsgLong (Txt_See_the_previous_X_COMMENTS,
(long) NumInitialComments));
Str_FreeMsg ();
HTM_BUTTON_End ();
/* End form */
@ -2926,16 +2926,14 @@ static void TL_LinkToShowPreviousComments (const char IdComments[Frm_MAX_BYTES_I
{
extern const char *Txt_See_the_previous_X_COMMENTS;
/***** Build text to show *****/
snprintf (Gbl.Title,sizeof (Gbl.Title),
Txt_See_the_previous_X_COMMENTS,
NumInitialComments);
/***** Icon and text to show only the latest comments ****/
HTM_DIV_Begin ("id=\"exp_%s\" class=\"TL_EXPAND_COM TL_RIGHT_WIDTH\""
" style=\"display:none;\"", // Hidden
IdComments);
TL_PutIconToToggleComments (IdComments,"angle-up.svg",Gbl.Title);
TL_PutIconToToggleComments (IdComments,"angle-up.svg",
Str_BuildMsgLong (Txt_See_the_previous_X_COMMENTS,
(long) NumInitialComments));
Str_FreeMsg ();
HTM_DIV_End ();
}
@ -3124,11 +3122,10 @@ static void TL_PutDisabledIconShare (unsigned NumShared)
/***** Disabled icon to share *****/
if (NumShared)
{
snprintf (Gbl.Title,sizeof (Gbl.Title),
Txt_TIMELINE_NOTE_Shared_by_X_USERS,
NumShared);
Ico_PutDivIcon ("TL_ICO_DISABLED",TL_ICON_SHARE,
Gbl.Title);
Str_BuildMsgLong (Txt_TIMELINE_NOTE_Shared_by_X_USERS,
(long) NumShared));
Str_FreeMsg ();
}
else
Ico_PutDivIcon ("TL_ICO_DISABLED",TL_ICON_SHARE,
@ -3147,11 +3144,10 @@ static void TL_PutDisabledIconFav (unsigned NumFavs)
/***** Disabled icon to mark as favourite *****/
if (NumFavs)
{
snprintf (Gbl.Title,sizeof (Gbl.Title),
Txt_TIMELINE_NOTE_Favourited_by_X_USERS,
NumFavs);
Ico_PutDivIcon ("TL_ICO_DISABLED",TL_ICON_FAV,
Gbl.Title);
Str_BuildMsgLong (Txt_TIMELINE_NOTE_Favourited_by_X_USERS,
(long) NumFavs));
Str_FreeMsg ();
}
else
Ico_PutDivIcon ("TL_ICO_DISABLED",TL_ICON_FAV,