Version 21.77.2: Dec 29, 2021 Changing Str_BuildString for asprintf.

This commit is contained in:
acanas 2021-12-29 21:31:49 +01:00
parent 0d86af745e
commit f8391edd6c
14 changed files with 173 additions and 134 deletions

View File

@ -25,6 +25,8 @@
/*********************************** Headers *********************************/
/*****************************************************************************/
#define _GNU_SOURCE // For asprintf
#include <stdio.h> // For asprintf
#include <string.h> // For string functions
#include "swad_account.h"
@ -436,13 +438,13 @@ void Acc_ShowFormGoToRequestNewAccount (void)
extern const char *Hlp_PROFILE_SignUp;
extern const char *Txt_New_on_PLATFORM_Sign_up;
extern const char *Txt_Create_account;
char *Title;
/***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildString (Txt_New_on_PLATFORM_Sign_up,
Cfg_PLATFORM_SHORT_NAME),
NULL,NULL,
Hlp_PROFILE_SignUp,Box_NOT_CLOSABLE);
Str_FreeStrings ();
if (asprintf (&Title,Txt_New_on_PLATFORM_Sign_up,Cfg_PLATFORM_SHORT_NAME) < 0)
Err_NotEnoughMemoryExit ();
Box_BoxBegin (NULL,Title,NULL,NULL,Hlp_PROFILE_SignUp,Box_NOT_CLOSABLE);
free (Title);
/***** Button to go to request the creation of a new account *****/
Frm_BeginForm (ActFrmMyAcc);

View File

@ -391,6 +391,8 @@ void Agd_ShowUsrAgenda (void)
extern const char *Txt_Public_agenda_USER;
struct Agd_Agenda Agenda;
bool Error = true;
bool ItsMe;
char *Title;
/***** Get user *****/
if (Usr_GetParamOtherUsrCodEncryptedAndGetUsrData ())
@ -402,17 +404,18 @@ void Agd_ShowUsrAgenda (void)
Agd_ResetAgenda (&Agenda);
/***** Begin box *****/
if (Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod))
Box_BoxBegin ("100%",Str_BuildString (Txt_Public_agenda_USER,
Gbl.Usrs.Me.UsrDat.FullName),
Agd_PutIconsMyPublicAgenda,Gbl.Usrs.Me.UsrDat.EnUsrCod,
Hlp_PROFILE_Agenda_public_agenda,Box_NOT_CLOSABLE);
else
Box_BoxBegin ("100%",Str_BuildString (Txt_Public_agenda_USER,
Gbl.Usrs.Other.UsrDat.FullName),
Agd_PutIconsOtherPublicAgenda,Gbl.Usrs.Other.UsrDat.EnUsrCod,
Hlp_PROFILE_Agenda_public_agenda,Box_NOT_CLOSABLE);
Str_FreeStrings ();
ItsMe = Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod);
if (asprintf (&Title,Txt_Public_agenda_USER,
ItsMe ? Gbl.Usrs.Me.UsrDat.FullName :
Gbl.Usrs.Other.UsrDat.FullName) < 0)
Err_NotEnoughMemoryExit ();
Box_BoxBegin ("100%",Title,
ItsMe ? Agd_PutIconsMyPublicAgenda :
Agd_PutIconsOtherPublicAgenda,
ItsMe ? Gbl.Usrs.Me.UsrDat.EnUsrCod :
Gbl.Usrs.Other.UsrDat.EnUsrCod,
Hlp_PROFILE_Agenda_public_agenda,Box_NOT_CLOSABLE);
free (Title);
/***** Show the current events in the user's agenda *****/
Agd_ShowEventsToday (&Agenda,Agd_ANOTHER_AGENDA_TODAY);
@ -439,6 +442,8 @@ void Agd_ShowOtherAgendaAfterLogIn (void)
extern const char *Txt_Public_agenda_USER;
extern const char *Txt_Switching_to_LANGUAGE[1 + Lan_NUM_LANGUAGES];
struct Agd_Agenda Agenda;
bool ItsMe;
char *Title;
if (Gbl.Usrs.Me.Logged)
{
@ -454,17 +459,18 @@ void Agd_ShowOtherAgendaAfterLogIn (void)
Agd_ResetAgenda (&Agenda);
/***** Begin box *****/
if (Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod))
Box_BoxBegin ("100%",Str_BuildString (Txt_Public_agenda_USER,
Gbl.Usrs.Me.UsrDat.FullName),
Agd_PutIconToViewEditMyFullAgenda,Gbl.Usrs.Me.UsrDat.EnUsrCod,
Hlp_PROFILE_Agenda_public_agenda,Box_NOT_CLOSABLE);
else
Box_BoxBegin ("100%",Str_BuildString (Txt_Public_agenda_USER,
Gbl.Usrs.Other.UsrDat.FullName),
Agd_PutIconsOtherPublicAgenda,Gbl.Usrs.Other.UsrDat.EnUsrCod,
Hlp_PROFILE_Agenda_public_agenda,Box_NOT_CLOSABLE);
Str_FreeStrings ();
ItsMe = Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod);
if (asprintf (&Title,Txt_Public_agenda_USER,
ItsMe ? Gbl.Usrs.Me.UsrDat.FullName :
Gbl.Usrs.Other.UsrDat.FullName) < 0)
Err_NotEnoughMemoryExit ();
Box_BoxBegin ("100%",Title,
ItsMe ? Agd_PutIconToViewEditMyFullAgenda :
Agd_PutIconsOtherPublicAgenda,
ItsMe ? Gbl.Usrs.Me.UsrDat.EnUsrCod :
Gbl.Usrs.Other.UsrDat.EnUsrCod,
Hlp_PROFILE_Agenda_public_agenda,Box_NOT_CLOSABLE);
free (Title);
/***** Show the current events in the user's agenda *****/
Agd_ShowEventsToday (&Agenda,Agd_ANOTHER_AGENDA_TODAY);
@ -1638,13 +1644,13 @@ void Agd_ReceiveFormEvent (void)
void Agd_PrintAgdQRCode (void)
{
extern const char *Txt_Where_s_USER;
char *Title;
/***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildString (Txt_Where_s_USER,
Gbl.Usrs.Me.UsrDat.FullName),
NULL,NULL,
NULL,Box_NOT_CLOSABLE);
Str_FreeStrings ();
if (asprintf (&Title,Txt_Where_s_USER,Gbl.Usrs.Me.UsrDat.FullName) < 0)
Err_NotEnoughMemoryExit ();
Box_BoxBegin (NULL,Title,NULL,NULL,NULL,Box_NOT_CLOSABLE);
free (Title);
/***** Print QR code ****/
QR_PrintQRCode ();

View File

@ -1924,6 +1924,7 @@ void Att_RegisterMeAsStdInAttEvent (void)
struct Att_Events Events;
struct Att_Event Event;
bool Present;
char *ParamName;
char CommentStd[Cns_MAX_BYTES_TEXT + 1];
char CommentTch[Cns_MAX_BYTES_TEXT + 1];
@ -1940,10 +1941,10 @@ void Att_RegisterMeAsStdInAttEvent (void)
/***** Get comments for this student *****/
Present = Att_CheckIfUsrIsPresentInAttEventAndGetComments (Event.AttCod,Gbl.Usrs.Me.UsrDat.UsrCod,
CommentStd,CommentTch);
Par_GetParToHTML (Str_BuildString ("CommentStd%s",
Gbl.Usrs.Me.UsrDat.EnUsrCod),
CommentStd,Cns_MAX_BYTES_TEXT);
Str_FreeStrings ();
if (asprintf (&ParamName,"CommentStd%s",Gbl.Usrs.Me.UsrDat.EnUsrCod) < 0)
Err_NotEnoughMemoryExit ();
Par_GetParToHTML (ParamName,CommentStd,Cns_MAX_BYTES_TEXT);
free (ParamName);
if (Present ||
CommentStd[0] ||
@ -1986,6 +1987,7 @@ void Att_RegisterStudentsInAttEvent (void)
unsigned NumUsr;
const char *Ptr;
bool Present;
char *ParamName;
unsigned NumStdsPresent;
unsigned NumStdsAbsent;
struct UsrData UsrData;
@ -2056,11 +2058,15 @@ void Att_RegisterStudentsInAttEvent (void)
NumUsr++)
{
/***** Get comments for this student *****/
Att_CheckIfUsrIsPresentInAttEventAndGetComments (Event.AttCod,Gbl.Usrs.LstUsrs[Rol_STD].Lst[NumUsr].UsrCod,CommentStd,CommentTch);
Par_GetParToHTML (Str_BuildString ("CommentTch%s",
Gbl.Usrs.LstUsrs[Rol_STD].Lst[NumUsr].EnUsrCod),
CommentTch,Cns_MAX_BYTES_TEXT);
Str_FreeStrings ();
Att_CheckIfUsrIsPresentInAttEventAndGetComments (Event.AttCod,
Gbl.Usrs.LstUsrs[Rol_STD].Lst[NumUsr].UsrCod,
CommentStd,
CommentTch);
if (asprintf (&ParamName,"CommentTch%s",
Gbl.Usrs.LstUsrs[Rol_STD].Lst[NumUsr].EnUsrCod) < 0)
Err_NotEnoughMemoryExit ();
Par_GetParToHTML (ParamName,CommentTch,Cns_MAX_BYTES_TEXT);
free (ParamName);
Present = !Gbl.Usrs.LstUsrs[Rol_STD].Lst[NumUsr].Remove;

View File

@ -9805,6 +9805,7 @@ void Brw_ListDocsFound (MYSQL_RES **mysql_res,unsigned NumDocs,
extern const char *Txt_hidden_document;
extern const char *Txt_hidden_documents;
MYSQL_ROW row;
char *Title;
unsigned NumDoc;
unsigned NumDocsNotHidden = 0;
unsigned NumDocsHidden;
@ -9814,13 +9815,11 @@ void Brw_ListDocsFound (MYSQL_RES **mysql_res,unsigned NumDocs,
{
/***** Begin box and table *****/
/* Number of documents found */
Box_BoxTableBegin (NULL,Str_BuildString ("%u %s",
NumDocs,
(NumDocs == 1) ? TitleSingular :
TitlePlural),
NULL,NULL,
NULL,Box_NOT_CLOSABLE,2);
Str_FreeStrings ();
if (asprintf (&Title,"%u %s",NumDocs,NumDocs == 1 ? TitleSingular :
TitlePlural) < 0)
Err_NotEnoughMemoryExit ();
Box_BoxTableBegin (NULL,Title,NULL,NULL,NULL,Box_NOT_CLOSABLE,2);
free (Title);
/***** Write heading *****/
HTM_TR_Begin (NULL);

View File

@ -25,12 +25,15 @@
/********************************* Headers ***********************************/
/*****************************************************************************/
#define _GNU_SOURCE // For asprintf
#include <stdio.h> // For asprintf
#include <string.h> // For string functions
#include "swad_box.h"
#include "swad_calendar.h"
#include "swad_call_for_exam.h"
#include "swad_database.h"
#include "swad_error.h"
#include "swad_figure.h"
#include "swad_form.h"
#include "swad_global.h"
@ -116,6 +119,7 @@ void Cal_ShowFormToSelFirstDayOfWeek (Act_Action_t Action,
extern const char *Txt_First_day_of_the_week_X;
extern const char *Txt_DAYS_SMALL[7];
unsigned FirstDayOfWeek;
char *Title;
char Icon[32 + 1];
Set_BeginOneSettingSelector ();
@ -134,10 +138,11 @@ void Cal_ShowFormToSelFirstDayOfWeek (Act_Action_t Action,
if (FuncParams) // Extra parameters depending on the action
FuncParams (Args);
snprintf (Icon,sizeof (Icon),"first-day-of-week-%u.png",FirstDayOfWeek);
Ico_PutSettingIconLink (Icon,Ico_BLACK,
Str_BuildString (Txt_First_day_of_the_week_X,
Txt_DAYS_SMALL[FirstDayOfWeek]));
Str_FreeStrings ();
if (asprintf (&Title,Txt_First_day_of_the_week_X,
Txt_DAYS_SMALL[FirstDayOfWeek]) < 0)
Err_NotEnoughMemoryExit ();
Ico_PutSettingIconLink (Icon,Ico_BLACK,Title);
free (Title);
Frm_EndForm ();
HTM_DIV_End ();
}

View File

@ -25,8 +25,10 @@
/********************************* Headers ***********************************/
/*****************************************************************************/
#define _GNU_SOURCE // For asprintf
#include <stdbool.h> // For boolean type
#include <stddef.h> // For NULL
#include <stdio.h> // For asprintf
#include <stdlib.h> // For free
#include <string.h> // For string functions
@ -242,14 +244,15 @@ static void Ctr_ListCenters (void)
extern const char *Txt_No_centers;
extern const char *Txt_Create_another_center;
extern const char *Txt_Create_center;
char *Title;
unsigned NumCtr;
/***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildString (Txt_Centers_of_INSTITUTION_X,
Gbl.Hierarchy.Ins.FullName),
Ctr_PutIconsListingCenters,NULL,
if (asprintf (&Title,Txt_Centers_of_INSTITUTION_X,Gbl.Hierarchy.Ins.FullName) < 0)
Err_NotEnoughMemoryExit ();
Box_BoxBegin (NULL,Title,Ctr_PutIconsListingCenters,NULL,
Hlp_INSTITUTION_Centers,Box_NOT_CLOSABLE);
Str_FreeStrings ();
free (Title);
if (Gbl.Hierarchy.Ctrs.Num) // There are centers in the current institution
{
@ -434,6 +437,7 @@ static void Ctr_EditCentersInternal (void)
extern const char *Hlp_INSTITUTION_Centers;
extern const char *Txt_Centers_of_INSTITUTION_X;
struct Plc_Places Places;
char *Title;
/***** Reset places context *****/
Plc_ResetPlaces (&Places);
@ -451,11 +455,11 @@ static void Ctr_EditCentersInternal (void)
Hie_WriteMenuHierarchy ();
/***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildString (Txt_Centers_of_INSTITUTION_X,
Gbl.Hierarchy.Ins.FullName),
Ctr_PutIconsEditingCenters,NULL,
if (asprintf (&Title,Txt_Centers_of_INSTITUTION_X,Gbl.Hierarchy.Ins.FullName) < 0)
Err_NotEnoughMemoryExit ();
Box_BoxBegin (NULL,Title,Ctr_PutIconsEditingCenters,NULL,
Hlp_INSTITUTION_Centers,Box_NOT_CLOSABLE);
Str_FreeStrings ();
free (Title);
/***** Put a form to create a new center *****/
Ctr_PutFormToCreateCenter (&Places);
@ -1834,6 +1838,7 @@ void Ctr_ListCtrsFound (MYSQL_RES **mysql_res,unsigned NumCtrs)
extern const char *Txt_center;
extern const char *Txt_centers;
unsigned NumCtr;
char *Title;
struct Ctr_Center Ctr;
/***** Query database *****/
@ -1841,19 +1846,18 @@ void Ctr_ListCtrsFound (MYSQL_RES **mysql_res,unsigned NumCtrs)
{
/***** Begin box and table *****/
/* Number of centers found */
Box_BoxTableBegin (NULL,Str_BuildString ("%u %s",
NumCtrs,
(NumCtrs == 1) ? Txt_center :
Txt_centers),
NULL,NULL,
NULL,Box_NOT_CLOSABLE,2);
Str_FreeStrings ();
if (asprintf (&Title,"%u %s",NumCtrs,
NumCtrs == 1 ? Txt_center :
Txt_centers) < 0)
Err_NotEnoughMemoryExit ();
Box_BoxTableBegin (NULL,Title,NULL,NULL,NULL,Box_NOT_CLOSABLE,2);
free (Title);
/***** Write heading *****/
Ctr_PutHeadCentersForSeeing (false); // Order not selectable
/***** List the centers (one row per center) *****/
for (NumCtr = 1;
for (NumCtr = 1;
NumCtr <= NumCtrs;
NumCtr++)
{

View File

@ -762,6 +762,7 @@ static void CtrCfg_NumDegs (void)
extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *Txt_Degrees;
extern const char *Txt_Degrees_of_CENTER_X;
char *Title;
/***** Number of degrees *****/
HTM_TR_Begin (NULL);
@ -773,10 +774,10 @@ static void CtrCfg_NumDegs (void)
HTM_TD_Begin ("class=\"%s LB\"",The_ClassDat[Gbl.Prefs.Theme]);
Frm_BeginFormGoTo (ActSeeDeg);
Ctr_PutParamCtrCod (Gbl.Hierarchy.Ctr.CtrCod);
HTM_BUTTON_OnSubmit_Begin (Str_BuildString (Txt_Degrees_of_CENTER_X,
Gbl.Hierarchy.Ctr.ShrtName),
"BT_LINK",NULL);
Str_FreeStrings ();
if (asprintf (&Title,Txt_Degrees_of_CENTER_X,Gbl.Hierarchy.Ctr.ShrtName) < 0)
Err_NotEnoughMemoryExit ();
HTM_BUTTON_OnSubmit_Begin (Title,"BT_LINK",NULL);
free (Title);
HTM_Unsigned (Deg_GetCachedNumDegsInCtr (Gbl.Hierarchy.Ctr.CtrCod));
HTM_BUTTON_End ();
Frm_EndForm ();

View File

@ -602,10 +602,11 @@ TODO: FIX BUG, URGENT! En las fechas como par
TODO: En las encuestas, que los estudiantes no puedan ver los resultados hasta que no finalice el plazo.
*/
#define Log_PLATFORM_VERSION "SWAD 21.77.1 (2021-12-29)"
#define Log_PLATFORM_VERSION "SWAD 21.77.2 (2021-12-29)"
#define CSS_FILE "swad21.77.1.css"
#define JS_FILE "swad21.67.4.js"
/*
Version 21.77.2: Dec 29, 2021 Changing Str_BuildString for asprintf. (322199 lines)
Version 21.77.1: Dec 29, 2021 Working on design of dark theme. (322161 lines)
Version 21.77: Dec 29, 2021 Animated recycle icon is changed by static icon. (322250 lines)
Version 21.76.5: Dec 29, 2021 Working on design of dark theme. (322313 lines)

View File

@ -543,18 +543,17 @@ void Cty_DrawCountryMapAndNameWithLink (struct Cty_Countr *Cty,Act_Action_t Acti
void Cty_DrawCountryMap (struct Cty_Countr *Cty,const char *Class)
{
char *URL;
char *Icon;
/***** Draw country map *****/
if (Cty_CheckIfCountryPhotoExists (Cty))
{
if (asprintf (&URL,"%s/%s",
Cfg_URL_ICON_COUNTRIES_PUBLIC,
Cty->Alpha2) < 0)
if (asprintf (&URL,"%s/%s",Cfg_URL_ICON_COUNTRIES_PUBLIC,Cty->Alpha2) < 0)
Err_NotEnoughMemoryExit ();
HTM_IMG (URL,Str_BuildString ("%s.png",Cty->Alpha2),
Cty->Name[Gbl.Prefs.Language],
"class=\"%s\"",Class);
Str_FreeStrings ();
if (asprintf (&Icon,"%s.png",Cty->Alpha2) < 0)
Err_NotEnoughMemoryExit ();
HTM_IMG (URL,Icon,Cty->Name[Gbl.Prefs.Language],"class=\"%s\"",Class);
free (Icon);
free (URL);
}
else
@ -1811,6 +1810,7 @@ void Cty_ListCtysFound (MYSQL_RES **mysql_res,unsigned NumCtys)
{
extern const char *Txt_country;
extern const char *Txt_countries;
char *Title;
unsigned NumCty;
struct Cty_Countr Cty;
@ -1819,13 +1819,14 @@ void Cty_ListCtysFound (MYSQL_RES **mysql_res,unsigned NumCtys)
{
/***** Begin box and table *****/
/* Number of countries found */
Box_BoxTableBegin (NULL,Str_BuildString ("%u %s",
NumCtys,
NumCtys == 1 ? Txt_country :
Txt_countries),
if (asprintf (&Title,"%u %s",NumCtys,
NumCtys == 1 ? Txt_country :
Txt_countries) < 0)
Err_NotEnoughMemoryExit ();
Box_BoxTableBegin (NULL,Title,
NULL,NULL,
NULL,Box_NOT_CLOSABLE,2);
Str_FreeStrings ();
free (Title);
/***** Write heading *****/
Cty_PutHeadCountriesForSeeing (false); // Order not selectable

View File

@ -471,6 +471,7 @@ static void CtyCfg_NumInss (void)
extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *Txt_Institutions;
extern const char *Txt_Institutions_of_COUNTRY_X;
char *Title;
/***** Number of institutions ******/
HTM_TR_Begin (NULL);
@ -482,10 +483,11 @@ static void CtyCfg_NumInss (void)
HTM_TD_Begin ("class=\"%s LT\"",The_ClassDat[Gbl.Prefs.Theme]);
Frm_BeginFormGoTo (ActSeeIns);
Cty_PutParamCtyCod (Gbl.Hierarchy.Cty.CtyCod);
HTM_BUTTON_OnSubmit_Begin (Str_BuildString (Txt_Institutions_of_COUNTRY_X,
Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]),
"BT_LINK",NULL);
Str_FreeStrings ();
if (asprintf (&Title,Txt_Institutions_of_COUNTRY_X,
Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]) < 0)
Err_NotEnoughMemoryExit ();
HTM_BUTTON_OnSubmit_Begin (Title,"BT_LINK",NULL);
free (Title);
HTM_Unsigned (Ins_GetCachedNumInssInCty (Gbl.Hierarchy.Cty.CtyCod));
HTM_BUTTON_End ();
Frm_EndForm ();

View File

@ -836,14 +836,15 @@ static void Crs_ListCourses (void)
extern const char *Txt_No_courses;
extern const char *Txt_Create_another_course;
extern const char *Txt_Create_course;
char *Title;
unsigned Year;
/***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildString (Txt_Courses_of_DEGREE_X,
Gbl.Hierarchy.Deg.ShrtName),
Crs_PutIconsListCourses,NULL,
if (asprintf (&Title,Txt_Courses_of_DEGREE_X,Gbl.Hierarchy.Deg.ShrtName) < 0)
Err_NotEnoughMemoryExit ();
Box_BoxBegin (NULL,Title,Crs_PutIconsListCourses,NULL,
Hlp_DEGREE_Courses,Box_NOT_CLOSABLE);
Str_FreeStrings ();
free (Title);
if (Gbl.Hierarchy.Crss.Num) // There are courses in the current degree
{
@ -1041,6 +1042,7 @@ static void Crs_EditCoursesInternal (void)
{
extern const char *Hlp_DEGREE_Courses;
extern const char *Txt_Courses_of_DEGREE_X;
char *Title;
/***** Get list of degrees in this center *****/
Deg_GetListDegsInCurrentCtr ();
@ -1052,11 +1054,11 @@ static void Crs_EditCoursesInternal (void)
Hie_WriteMenuHierarchy ();
/***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildString (Txt_Courses_of_DEGREE_X,
Gbl.Hierarchy.Deg.ShrtName),
Crs_PutIconsEditingCourses,NULL,
if (asprintf (&Title,Txt_Courses_of_DEGREE_X,Gbl.Hierarchy.Deg.ShrtName) < 0)
Err_NotEnoughMemoryExit ();
Box_BoxBegin (NULL,Title,Crs_PutIconsEditingCourses,NULL,
Hlp_DEGREE_Courses,Box_NOT_CLOSABLE);
Str_FreeStrings ();
free (Title);
/***** Put a form to create or request a new course *****/
Crs_PutFormToCreateCourse ();
@ -2155,15 +2157,17 @@ static void Crs_PutButtonToGoToCrs (void)
static void Crs_PutButtonToRegisterInCrs (void)
{
extern const char *Txt_Register_me_in_X;
char *TxtButton;
Frm_BeginForm (ActReqSignUp);
// 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_BuildString (Txt_Register_me_in_X,
Crs_EditingCrs->ShrtName));
Str_FreeStrings ();
if (asprintf (&TxtButton,Txt_Register_me_in_X,Crs_EditingCrs->ShrtName) < 0)
Err_NotEnoughMemoryExit ();
Btn_PutCreateButton (TxtButton);
free (TxtButton);
Frm_EndForm ();
}
@ -2265,6 +2269,7 @@ void Crs_GetAndWriteCrssOfAUsr (const struct UsrData *UsrDat,Rol_Role_t Role)
MYSQL_ROW row;
unsigned NumCrss;
unsigned NumCrs;
char *Txt;
/***** Get courses of a user from database *****/
NumCrss = Crs_DB_GetCrssOfAUsr (&mysql_res,UsrDat->UsrCod,Role);
@ -2281,10 +2286,12 @@ void Crs_GetAndWriteCrssOfAUsr (const struct UsrData *UsrDat,Rol_Role_t Role)
HTM_TR_Begin (NULL);
HTM_TH_Begin (1,7,"LM");
HTM_TxtColon (Str_BuildString (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_FreeStrings ();
if (asprintf (&Txt,Txt_USER_in_COURSE,
Role == Rol_UNK ? Txt_User[Usr_SEX_UNKNOWN] : // Role == Rol_UNK ==> any role
Txt_ROLES_SINGUL_Abc[Role][UsrDat->Sex]) < 0)
Err_NotEnoughMemoryExit ();
HTM_TxtColon (Txt);
free (Txt);
HTM_TH_End ();
HTM_TR_End ();
@ -2334,6 +2341,7 @@ void Crs_ListCrssFound (MYSQL_RES **mysql_res,unsigned NumCrss)
extern const char *Txt_Year_OF_A_DEGREE;
extern const char *Txt_Course;
extern const char *Txt_ROLES_PLURAL_BRIEF_Abc[Rol_NUM_ROLES];
char *Title;
MYSQL_ROW row;
unsigned NumCrs;
@ -2342,13 +2350,12 @@ void Crs_ListCrssFound (MYSQL_RES **mysql_res,unsigned NumCrss)
{
/***** Begin box and table *****/
/* Number of courses found */
Box_BoxTableBegin (NULL,Str_BuildString ("%u %s",
NumCrss,
(NumCrss == 1) ? Txt_course :
Txt_courses),
NULL,NULL,
NULL,Box_NOT_CLOSABLE,2);
Str_FreeStrings ();
if (asprintf (&Title,"%u %s",NumCrss,
NumCrss == 1 ? Txt_course :
Txt_courses) < 0)
Err_NotEnoughMemoryExit ();
Box_BoxTableBegin (NULL,Title,NULL,NULL,NULL,Box_NOT_CLOSABLE,2);
free (Title);
/***** Heading row *****/
HTM_TR_Begin (NULL);

View File

@ -192,12 +192,14 @@ void Dat_PutSpanDateFormat (Dat_Format_t Format)
void Dat_PutScriptDateFormat (Dat_Format_t Format)
{
Dat_WriteLocalDateHMSFromUTC (Str_BuildString ("date_format_%u",
(unsigned) Format),
Gbl.StartExecutionTimeUTC,
char *Id;
if (asprintf (&Id,"date_format_%u",(unsigned) Format) < 0)
Err_NotEnoughMemoryExit ();
Dat_WriteLocalDateHMSFromUTC (Id,Gbl.StartExecutionTimeUTC,
Format,Dat_SEPARATOR_NONE,
false,true,false,0x0);
Str_FreeStrings ();
free (Id);
}
/*****************************************************************************/

View File

@ -709,14 +709,15 @@ static void Deg_ListDegrees (void)
extern const char *Txt_No_degrees;
extern const char *Txt_Create_another_degree;
extern const char *Txt_Create_degree;
char *Title;
unsigned NumDeg;
/***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildString (Txt_Degrees_of_CENTER_X,
Gbl.Hierarchy.Ctr.ShrtName),
Deg_PutIconsListingDegrees,NULL,
if (asprintf (&Title,Txt_Degrees_of_CENTER_X,Gbl.Hierarchy.Ctr.ShrtName) < 0)
Err_NotEnoughMemoryExit ();
Box_BoxBegin (NULL,Title,Deg_PutIconsListingDegrees,NULL,
Hlp_CENTER_Degrees,Box_NOT_CLOSABLE);
Str_FreeStrings ();
free (Title);
if (Gbl.Hierarchy.Degs.Num) // There are degrees in the current center
{
@ -894,6 +895,7 @@ static void Deg_EditDegreesInternal (void)
extern const char *Hlp_CENTER_Degrees;
extern const char *Txt_Degrees_of_CENTER_X;
extern const char *Txt_No_types_of_degree;
char *Title;
/***** Get list of degrees in the current center *****/
Deg_GetListDegsInCurrentCtr ();
@ -905,11 +907,11 @@ static void Deg_EditDegreesInternal (void)
Hie_WriteMenuHierarchy ();
/***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildString (Txt_Degrees_of_CENTER_X,
Gbl.Hierarchy.Ctr.ShrtName),
Deg_PutIconsEditingDegrees,NULL,
if (asprintf (&Title,Txt_Degrees_of_CENTER_X,Gbl.Hierarchy.Ctr.ShrtName) < 0)
Err_NotEnoughMemoryExit ();
Box_BoxBegin (NULL,Title,Deg_PutIconsEditingDegrees,NULL,
Hlp_CENTER_Degrees,Box_NOT_CLOSABLE);
Str_FreeStrings ();
free (Title);
if (Gbl.DegTypes.Num)
{
@ -1803,6 +1805,7 @@ void Deg_ListDegsFound (MYSQL_RES **mysql_res,unsigned NumDegs)
{
extern const char *Txt_degree;
extern const char *Txt_degrees;
char *Title;
unsigned NumDeg;
struct Deg_Degree Deg;
@ -1811,13 +1814,12 @@ void Deg_ListDegsFound (MYSQL_RES **mysql_res,unsigned NumDegs)
{
/***** Begin box and table *****/
/* Number of degrees found */
Box_BoxTableBegin (NULL,Str_BuildString ("%u %s",
NumDegs,
(NumDegs == 1) ? Txt_degree :
Txt_degrees),
NULL,NULL,
NULL,Box_NOT_CLOSABLE,2);
Str_FreeStrings ();
if (asprintf (&Title,"%u %s",NumDegs,
NumDegs == 1 ? Txt_degree :
Txt_degrees) < 0)
Err_NotEnoughMemoryExit ();
Box_BoxTableBegin (NULL,Title,NULL,NULL,NULL,Box_NOT_CLOSABLE,2);
free (Title);
/***** Write heading *****/
Deg_PutHeadDegreesForSeeing ();

View File

@ -318,6 +318,7 @@ static void DegCfg_NumCrss (void)
extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *Txt_Courses;
extern const char *Txt_Courses_of_DEGREE_X;
char *Title;
/***** Number of courses *****/
/* Begin table row */
@ -330,10 +331,10 @@ static void DegCfg_NumCrss (void)
HTM_TD_Begin ("class=\"%s LB\"",The_ClassDat[Gbl.Prefs.Theme]);
Frm_BeginFormGoTo (ActSeeCrs);
Deg_PutParamDegCod (Gbl.Hierarchy.Deg.DegCod);
HTM_BUTTON_OnSubmit_Begin (Str_BuildString (Txt_Courses_of_DEGREE_X,
Gbl.Hierarchy.Deg.ShrtName),
"BT_LINK",NULL);
Str_FreeStrings ();
if (asprintf (&Title,Txt_Courses_of_DEGREE_X,Gbl.Hierarchy.Deg.ShrtName) < 0)
Err_NotEnoughMemoryExit ();
HTM_BUTTON_OnSubmit_Begin (Title,"BT_LINK",NULL);
free (Title);
HTM_Unsigned (Crs_GetCachedNumCrssInDeg (Gbl.Hierarchy.Deg.DegCod));
HTM_BUTTON_End ();
Frm_EndForm ();